#include #ifndef _EOS_MSGQ_H_ #define _EOS_MSGQ_H_ #define EOS_MSG_FLAG_WAKE 0x01 #define EOS_MSG_FLAG_RPLY_REQ 0x02 #define EOS_MSG_FLAG_RPLY_REP 0x04 typedef struct EOSMessage { unsigned char *buffer; uint16_t size; uint8_t flags; } EOSMessage; void eos_msg_init(EOSMessage *msg, unsigned char *buffer, uint16_t size); void eos_msg_set_flags(EOSMessage *msg, uint8_t flags); void eos_msg_clear_flags(EOSMessage *msg, uint8_t flags); uint8_t eos_msg_flags(EOSMessage *msg); typedef struct EOSMsgItem { unsigned char type; unsigned char *buffer; uint16_t size; uint16_t len; } EOSMsgItem; typedef struct EOSMsgQ { uint8_t idx_r; uint8_t idx_w; uint8_t size; EOSMsgItem *array; } EOSMsgQ; void eos_msgq_init(EOSMsgQ *msgq, EOSMsgItem *array, uint8_t size); uint8_t eos_msgq_len(EOSMsgQ *msgq); int eos_msgq_push(EOSMsgQ *msgq, unsigned char type, EOSMessage *msg, uint16_t len); void eos_msgq_pop(EOSMsgQ *msgq, unsigned char *type, EOSMessage *msg, uint16_t *len); typedef struct EOSBufQ { uint8_t idx_r; uint8_t idx_w; uint8_t size; unsigned char **array; } EOSBufQ; void eos_bufq_init(EOSBufQ *bufq, unsigned char **array, uint8_t size); uint8_t eos_bufq_len(EOSBufQ *bufq); int eos_bufq_push(EOSBufQ *bufq, unsigned char *buffer); unsigned char *eos_bufq_pop(EOSBufQ *bufq); #endif /* _EOS_MSGQ_H_ */