2017-11-26 16:22:00 -06:00
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
#include <skipstone/message.h>
|
|
|
|
#include <skipstone/system.h>
|
|
|
|
|
|
|
|
#include "util.h"
|
|
|
|
|
|
|
|
int skipstone_system_send_client_version(skipstone_message_service *service,
|
2017-11-29 21:42:01 -06:00
|
|
|
uint32_t flags) {
|
2017-11-26 16:22:00 -06:00
|
|
|
skipstone_message *message;
|
|
|
|
|
|
|
|
if ((message = skipstone_message_new()) == NULL) {
|
|
|
|
goto error_message_new;
|
|
|
|
}
|
|
|
|
|
2017-11-29 21:42:01 -06:00
|
|
|
skipstone_message_append_uint8( message, SKIPSTONE_SYSTEM_VERSION_RESPONSE);
|
2017-11-26 16:22:00 -06:00
|
|
|
skipstone_message_append_uint32(message, htobe32(SKIPSTONE_SYSTEM_PROTOCOL));
|
|
|
|
skipstone_message_append_uint32(message, htobe32(SKIPSTONE_SYSTEM_SESSION_GAMMA_RAY));
|
|
|
|
skipstone_message_append_uint32(message, htobe32(flags));
|
2017-11-29 21:56:36 -06:00
|
|
|
skipstone_message_append_uint8( message, 2);
|
|
|
|
skipstone_message_append_uint8( message, SKIPSTONE_SYSTEM_CLIENT_MAJOR);
|
|
|
|
skipstone_message_append_uint8( message, SKIPSTONE_SYSTEM_CLIENT_MINOR);
|
|
|
|
skipstone_message_append_uint8( message, SKIPSTONE_SYSTEM_CLIENT_BUGFIX);
|
|
|
|
skipstone_message_append_uint64(message, htobe64(SKIPSTONE_SYSTEM_PROTOCOL_CAPS));
|
2017-11-26 16:22:00 -06:00
|
|
|
|
|
|
|
if (skipstone_message_service_queue(service, message, SKIPSTONE_SYSTEM_ENDPOINT_PHONE_VERSION) < 0) {
|
|
|
|
goto error_message_service_queue;
|
|
|
|
}
|
|
|
|
|
2017-11-26 16:41:42 -06:00
|
|
|
skipstone_message_destroy(message);
|
|
|
|
|
2017-11-26 16:22:00 -06:00
|
|
|
return 0;
|
|
|
|
|
|
|
|
error_message_service_queue:
|
|
|
|
skipstone_message_destroy(message);
|
|
|
|
|
|
|
|
error_message_new:
|
|
|
|
return -1;
|
|
|
|
}
|