2017-11-23 17:22:36 +00:00
|
|
|
#ifndef _SKIPSTONE_MESSAGE_H
|
|
|
|
#define _SKIPSTONE_MESSAGE_H
|
|
|
|
|
|
|
|
#include <stdint.h>
|
2020-09-21 11:07:21 -05:00
|
|
|
#include <sys/types.h>
|
2017-11-23 17:22:36 +00:00
|
|
|
|
|
|
|
#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-24 15:25:28 -06:00
|
|
|
typedef struct _skipstone_message skipstone_message;
|
|
|
|
|
2017-11-23 18:02:38 +00:00
|
|
|
typedef int (skipstone_message_handler)(skipstone_message_service *service,
|
2020-09-21 11:07:21 -05:00
|
|
|
void *buf,
|
|
|
|
uint16_t size,
|
|
|
|
uint16_t id,
|
|
|
|
void *context);
|
2017-11-24 15:25:28 -06:00
|
|
|
|
2020-09-21 11:07:21 -05:00
|
|
|
ssize_t skipstone_message_pack(void *message,
|
|
|
|
size_t len,
|
|
|
|
const char *template, ...);
|
2017-11-23 17:22:36 +00:00
|
|
|
|
|
|
|
skipstone_message_service *skipstone_message_service_new();
|
|
|
|
|
2017-11-26 17:35:22 -06:00
|
|
|
void skipstone_message_service_destroy(skipstone_message_service *service);
|
|
|
|
|
2017-11-23 17:22:36 +00:00
|
|
|
int skipstone_message_service_register(skipstone_message_service *service,
|
2020-09-21 11:07:21 -05: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,
|
2020-09-21 11:07:21 -05:00
|
|
|
uint16_t id);
|
2017-11-23 17:22:36 +00:00
|
|
|
|
2017-11-26 16:22:00 -06:00
|
|
|
int skipstone_message_service_queue(skipstone_message_service *service,
|
2020-09-21 11:07:21 -05:00
|
|
|
void *buf,
|
|
|
|
uint16_t size,
|
|
|
|
uint16_t id);
|
2017-11-26 16:22:00 -06:00
|
|
|
|
2017-11-26 17:35:22 -06:00
|
|
|
int skipstone_message_service_next_event(skipstone_message_service *service,
|
2020-09-21 11:07:21 -05:00
|
|
|
skipstone_link *link, struct timeval *timeout);
|
2017-11-23 17:22:36 +00:00
|
|
|
|
|
|
|
#endif /* _SKIPSTONE_MESSAGE_H */
|