123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- #ifndef _SHELLMATTA_TRANSPORT_H_
- #define _SHELLMATTA_TRANSPORT_H_
- #include "shellmatta.h"
- #define SHELLMATTA_TRANSPORT_START_OF_HEADER 0x01u
- #define SHELLMATTA_TRANSPORT_PROTOCOL_VERSION 0x01u
- #define SHELLMATTA_TRANSPORT_BROADCAST_ADDRESS 0u
- #define SHELLMATTA_TRANSPORT_MASTER_ADDRESS 1u
- #define SHELLMATTA_TRANSPORT_LENGTH_HEADER ((uint8_t)(8))
- #define SHELLMATTA_TRANSPORT_LENGTH_PAYLOAD_INT ((uint8_t)(32))
- #define SHELLMATTA_TRANSPORT_LENGTH_CRC ((uint8_t)(4))
- #define SHELLMATTA_TRANSPORT_LENGTH_STATIC (SHELLMATTA_TRANSPORT_LENGTH_HEADER + SHELLMATTA_TRANSPORT_LENGTH_CRC)
- #define SHELLMATTA_TRANSPORT_CALC_CRC(transporLayer, data, size) NULL != (transportLayer)->customCrcFct ? \
- (transportLayer)->customCrcFct((data), (size)) : \
- crc32Calc((data), (size));
- typedef struct __attribute__((__packed__))
- {
- shellmatta_transport_header_t header;
- char payload[SHELLMATTA_TRANSPORT_LENGTH_PAYLOAD_INT];
- uint32_t crc;
- } shellmatta_transport_packet_int_t;
- #define SHELLMATTA_TRANSPORT_PACKET_DATA 0x00u
- #define SHELLMATTA_TRANSPORT_PACKET_SEQ_CNT_REQUEST 0x01u
- #define SHELLMATTA_TRANSPORT_PACKET_SEQ_CNT_RESPOND 0x81u
- #define SHELLMATTA_TRANSPORT_PACKET_MAX_BUFFERSIZE_REQUEST 0x02u
- #define SHELLMATTA_TRANSPORT_PACKET_MAX_BUFFERSIZE_RESPOND 0x82u
- #define SHELLMATTA_TRANSPORT_PACKET_SEARCH_DEVICE_REQUEST 0x03u
- #define SHELLMATTA_TRANSPORT_PACKET_SEARCH_DEVICE_RESPOND 0x83u
- #define SHELLMATTA_TRANSPORT_PACKET_SET_ADDRESS_REQUEST 0x04u
- #define SHELLMATTA_TRANSPORT_PACKET_SET_ADDRESS_RESPOND 0x84u
- shellmatta_retCode_t shellmatta_transport_init( shellmatta_transport_layer_t *transportLayer,
- shellmatta_write_t writeFct);
- shellmatta_retCode_t shellmatta_transport_process(shellmatta_transport_layer_t *transportLayer,
- char byte,
- char **data,
- uint32_t *length);
- shellmatta_retCode_t shellmatta_transport_write(shellmatta_transport_layer_t *transportLayer,
- const char* data,
- uint32_t length);
- #endif
|