Well that's pretty naff

This commit is contained in:
XANTRONIX Development 2017-11-29 21:56:36 -06:00
parent 7895258dd1
commit e2d951e4c0
7 changed files with 41 additions and 1 deletions

View file

@ -49,6 +49,9 @@ int skipstone_message_append_uint16(skipstone_message *message,
int skipstone_message_append_uint32(skipstone_message *message, int skipstone_message_append_uint32(skipstone_message *message,
uint32_t value); uint32_t value);
int skipstone_message_append_uint64(skipstone_message *message,
uint64_t value);
int skipstone_message_pack(skipstone_message *message, void *buf); int skipstone_message_pack(skipstone_message *message, void *buf);
skipstone_message_service *skipstone_message_service_new(); skipstone_message_service *skipstone_message_service_new();

View file

@ -8,6 +8,7 @@
#define SKIPSTONE_SYSTEM_ENDPOINT_PHONE_VERSION 0x11 #define SKIPSTONE_SYSTEM_ENDPOINT_PHONE_VERSION 0x11
#define SKIPSTONE_SYSTEM_PROTOCOL 0xffffffff #define SKIPSTONE_SYSTEM_PROTOCOL 0xffffffff
#define SKIPSTONE_SYSTEM_PROTOCOL_CAPS 0xffffffffffffffff
#define SKIPSTONE_SYSTEM_SESSION_GAMMA_RAY 0x80000000 #define SKIPSTONE_SYSTEM_SESSION_GAMMA_RAY 0x80000000
#define SKIPSTONE_SYSTEM_CLIENT_TELEPHONY (1 << 4) #define SKIPSTONE_SYSTEM_CLIENT_TELEPHONY (1 << 4)
@ -19,6 +20,10 @@
#define SKIPSTONE_SYSTEM_CLIENT_GYRO (1 << 10) #define SKIPSTONE_SYSTEM_CLIENT_GYRO (1 << 10)
#define SKIPSTONE_SYSTEM_CLIENT_COMPASS (1 << 11) #define SKIPSTONE_SYSTEM_CLIENT_COMPASS (1 << 11)
#define SKIPSTONE_SYSTEM_CLIENT_MAJOR 3
#define SKIPSTONE_SYSTEM_CLIENT_MINOR 0
#define SKIPSTONE_SYSTEM_CLIENT_BUGFIX 0
enum { enum {
SKIPSTONE_SYSTEM_CLIENT_UNKNOWN = 0, SKIPSTONE_SYSTEM_CLIENT_UNKNOWN = 0,
SKIPSTONE_SYSTEM_CLIENT_IOS = 1, SKIPSTONE_SYSTEM_CLIENT_IOS = 1,

View file

@ -150,6 +150,16 @@ int skipstone_message_append_uint32(skipstone_message *message, uint32_t value)
return 0; return 0;
} }
int skipstone_message_append_uint64(skipstone_message *message, uint64_t value) {
if (append_part(message, &value, sizeof(value)) < 0) {
return -1;
}
message->size += sizeof(value);
return 0;
}
int skipstone_message_pack(skipstone_message *message, void *buf) { int skipstone_message_pack(skipstone_message *message, void *buf) {
size_t offset = 0; size_t offset = 0;

View file

@ -150,6 +150,16 @@ int skipstone_message_append_uint32(skipstone_message *message, uint32_t value)
return 0; return 0;
} }
int skipstone_message_append_uint64(skipstone_message *message, uint64_t value) {
if (append_part(message, &value, sizeof(value)) < 0) {
return -1;
}
message->size += sizeof(value);
return 0;
}
int skipstone_message_pack(skipstone_message *message, void *buf) { int skipstone_message_pack(skipstone_message *message, void *buf) {
size_t offset = 0; size_t offset = 0;

View file

@ -17,6 +17,11 @@ int skipstone_system_send_client_version(skipstone_message_service *service,
skipstone_message_append_uint32(message, htobe32(SKIPSTONE_SYSTEM_PROTOCOL)); 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(SKIPSTONE_SYSTEM_SESSION_GAMMA_RAY));
skipstone_message_append_uint32(message, htobe32(flags)); skipstone_message_append_uint32(message, htobe32(flags));
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));
if (skipstone_message_service_queue(service, message, SKIPSTONE_SYSTEM_ENDPOINT_PHONE_VERSION) < 0) { if (skipstone_message_service_queue(service, message, SKIPSTONE_SYSTEM_ENDPOINT_PHONE_VERSION) < 0) {
goto error_message_service_queue; goto error_message_service_queue;

View file

@ -17,6 +17,11 @@ int skipstone_system_send_client_version(skipstone_message_service *service,
skipstone_message_append_uint32(message, htobe32(SKIPSTONE_SYSTEM_PROTOCOL)); 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(SKIPSTONE_SYSTEM_SESSION_GAMMA_RAY));
skipstone_message_append_uint32(message, htobe32(flags)); skipstone_message_append_uint32(message, htobe32(flags));
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));
if (skipstone_message_service_queue(service, message, SKIPSTONE_SYSTEM_ENDPOINT_PHONE_VERSION) < 0) { if (skipstone_message_service_queue(service, message, SKIPSTONE_SYSTEM_ENDPOINT_PHONE_VERSION) < 0) {
goto error_message_service_queue; goto error_message_service_queue;

View file

@ -20,7 +20,7 @@
((v & 0x00000000ff000000) << 8) | \ ((v & 0x00000000ff000000) << 8) | \
((v & 0x0000000000ff0000) << 16) | \ ((v & 0x0000000000ff0000) << 16) | \
((v & 0x000000000000ff00) << 40) | \ ((v & 0x000000000000ff00) << 40) | \
((v & 0x00000000000000ff) << 64)) ((v & 0x00000000000000ff) << 56))
#ifndef _ENDIAN_H #ifndef _ENDIAN_H
#ifdef __DO_SWAP_BYTES #ifdef __DO_SWAP_BYTES
@ -28,6 +28,7 @@
#define be32toh(v) ((uint32_t)bswap32((uint32_t)v)) #define be32toh(v) ((uint32_t)bswap32((uint32_t)v))
#define htobe16(v) ((uint16_t)bswap16((uint16_t)v)) #define htobe16(v) ((uint16_t)bswap16((uint16_t)v))
#define htobe32(v) ((uint32_t)bswap32((uint32_t)v)) #define htobe32(v) ((uint32_t)bswap32((uint32_t)v))
#define htobe64(v) ((uint64_t)bswap64((uint64_t)v))
#define htole32(v) ((uint32_t)v) #define htole32(v) ((uint32_t)v)
#define htole64(v) ((uint64_t)v) #define htole64(v) ((uint64_t)v)
#else #else
@ -35,6 +36,7 @@
#define be32toh(v) ((uint32_t)v) #define be32toh(v) ((uint32_t)v)
#define htobe16(v) ((uint16_t)v) #define htobe16(v) ((uint16_t)v)
#define htobe32(v) ((uint32_t)v) #define htobe32(v) ((uint32_t)v)
#define htobe64(v) ((uint64_t)v)
#define htole32(v) ((uint32_t)bswap32((uint32_t)v)) #define htole32(v) ((uint32_t)bswap32((uint32_t)v))
#define htole64(v) ((uint64_t)bswap64((uint64_t)v)) #define htole64(v) ((uint64_t)bswap64((uint64_t)v))
#endif /* __DO_SWAP_BYTES */ #endif /* __DO_SWAP_BYTES */