2017-11-23 17:22:36 +00:00
|
|
|
#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
|
|
|
|
};
|
|
|
|
|
2017-11-23 18:02:38 +00:00
|
|
|
typedef struct _skipstone_message_header {
|
|
|
|
uint16_t size,
|
|
|
|
id;
|
|
|
|
} skipstone_message_header;
|
|
|
|
|
2017-11-23 17:22:36 +00:00
|
|
|
typedef struct _skipstone_message_service skipstone_message_service;
|
|
|
|
|
2017-11-23 18:02:38 +00:00
|
|
|
typedef int (skipstone_message_handler)(skipstone_message_service *service,
|
2017-11-24 12:28:49 -06:00
|
|
|
void *buf, uint16_t size, uint16_t id, void *context);
|
2017-11-23 17:22:36 +00:00
|
|
|
|
|
|
|
skipstone_message_service *skipstone_message_service_new();
|
|
|
|
|
|
|
|
int skipstone_message_service_register(skipstone_message_service *service,
|
2017-11-23 18:02:38 +00:00
|
|
|
uint16_t id, skipstone_message_handler *handler, void *context);
|
2017-11-23 17:22:36 +00:00
|
|
|
|
|
|
|
int skipstone_message_service_deregister(skipstone_message_service *service,
|
2017-11-23 18:02:38 +00:00
|
|
|
uint16_t id);
|
|
|
|
|
|
|
|
int skipstone_message_service_queue(skipstone_message_service *service,
|
|
|
|
void *buf, uint16_t size, uint16_t id);
|
2017-11-23 17:22:36 +00:00
|
|
|
|
|
|
|
int skipstone_message_service_run(skipstone_message_service *service,
|
|
|
|
skipstone_link *link);
|
|
|
|
|
|
|
|
#endif /* _SKIPSTONE_MESSAGE_H */
|