nonsenselock/src/message.h

43 lines
839 B
C

#pragma once
#include <stddef.h>
#include <stdint.h>
enum nsl_message_type {
NSL_MESSAGE_CONTROL = 1,
NSL_MESSAGE_TRANSFER,
};
enum nsl_control_message_cmd {
NSL_CONTROL_MESSAGE_RESET = 0x2,
NSL_CONTROL_MESSAGE_LED_ON = 0x4,
NSL_CONTROL_MESSAGE_LED_OFF = 0x8,
NSL_CONTROL_MESSAGE_SET_MODE = 0x7,
};
struct nsl_control_message {
enum nsl_control_message_cmd command;
uint8_t *buf;
size_t len;
};
struct nsl_transfer_message {
uint8_t *buf;
size_t len;
};
struct nsl_message {
enum nsl_message_type type;
union {
struct nsl_control_message ctrl;
struct nsl_transfer_message xfer;
} contents;
};
struct nsl_response {
uint8_t *buf;
size_t len;
};
int nsl_message_process(void *arg, const struct nsl_message *msg, struct nsl_response *resp);