78 lines
2.4 KiB
C
78 lines
2.4 KiB
C
#ifndef _SKIPSTONE_MESSAGE_H
|
|
#define _SKIPSTONE_MESSAGE_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <skipstone/link.h>
|
|
#include <skipstone/map.h>
|
|
|
|
#define SKIPSTONE_MESSAGE_MAX_PAYLOAD 4096
|
|
|
|
enum {
|
|
SKIPSTONE_MESSAGE_ENDPOINT_NONE = 0,
|
|
SKIPSTONE_MESSAGE_ENDPOINT_FIRMWARE = 1,
|
|
SKIPSTONE_MESSAGE_ENDPOINT_TIME = 11,
|
|
SKIPSTONE_MESSAGE_ENDPOINT_VERSIONS = 16,
|
|
SKIPSTONE_MESSAGE_ENDPOINT_PHONE_VERSION = 17,
|
|
SKIPSTONE_MESSAGE_ENDPOINT_SYSTEM_MESSAGE = 18,
|
|
SKIPSTONE_MESSAGE_ENDPOINT_MUSIC_CONTROL = 32,
|
|
SKIPSTONE_MESSAGE_ENDPOINT_PHONE_CONTROL = 33
|
|
};
|
|
|
|
enum skipstone_message_endianness {
|
|
SKIPSTONE_MESSAGE_ENDIAN_LITTLE,
|
|
SKIPSTONE_MESSAGE_ENDIAN_BIG
|
|
};
|
|
|
|
typedef struct _skipstone_message_header {
|
|
uint16_t size,
|
|
id;
|
|
} skipstone_message_header;
|
|
|
|
typedef struct _skipstone_message_service skipstone_message_service;
|
|
|
|
typedef struct _skipstone_message skipstone_message;
|
|
|
|
typedef int (skipstone_message_handler)(skipstone_message_service *service,
|
|
void *buf, uint16_t size, uint16_t id, void *context);
|
|
|
|
skipstone_message *skipstone_message_new();
|
|
|
|
void skipstone_message_destroy(skipstone_message *message);
|
|
|
|
uint16_t skipstone_message_size(skipstone_message *message);
|
|
|
|
int skipstone_message_append_string(skipstone_message *message,
|
|
char *string, uint8_t size);
|
|
|
|
int skipstone_message_append_uint8(skipstone_message *message,
|
|
uint8_t value);
|
|
|
|
int skipstone_message_append_uint16(skipstone_message *message,
|
|
uint16_t value);
|
|
|
|
int skipstone_message_append_uint32(skipstone_message *message,
|
|
uint32_t value);
|
|
|
|
int skipstone_message_pack(skipstone_message *message, void *buf);
|
|
|
|
skipstone_message_service *skipstone_message_service_new();
|
|
|
|
void skipstone_message_service_destroy(skipstone_message_service *service);
|
|
|
|
int skipstone_message_service_register(skipstone_message_service *service,
|
|
uint16_t id, skipstone_message_handler *handler, void *context);
|
|
|
|
int skipstone_message_service_deregister(skipstone_message_service *service,
|
|
uint16_t id);
|
|
|
|
int skipstone_message_service_queue_packed(skipstone_message_service *service,
|
|
void *buf, uint16_t size, uint16_t id);
|
|
|
|
int skipstone_message_service_queue(skipstone_message_service *service,
|
|
skipstone_message *message, uint16_t id);
|
|
|
|
int skipstone_message_service_next_event(skipstone_message_service *service,
|
|
skipstone_link *link, struct timeval *timeout);
|
|
|
|
#endif /* _SKIPSTONE_MESSAGE_H */
|