12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /**
- * @file shellmatta_transport.h
- * @brief transport layer functions of shellmatta
- * @author Simon Fischer <fischer.simon.1991@gmail.com>
- */
- #ifndef _SHELLMATTA_TRANSPORT_H_
- #define _SHELLMATTA_TRANSPORT_H_
- #include "shellmatta.h"
- #define PROTOCOL_VERSION 0x01u
- /** @brief value of start-of-header character */
- #define SHELLMATTA_START_OF_HEADER 0x01u
- /** @brief max length of a request sequence counters payload */
- #define SHELLMATTA_PAYLOAD_LEN_SEQ_REQ ((uint8_t)(0))
- /** @brief max length of a respond sequence counters payload */
- #define SHELLMATTA_PAYLOAD_LEN_SEQ_RES ((uint8_t)(0))
- /** @brief max length of a request buffersize payload */
- #define SHELLMATTA_PAYLOAD_LEN_BUFSIZE_REQ ((uint8_t)(1))
- /** @brief max length of a respond buffersize payload */
- #define SHELLMATTA_PAYLOAD_LEN_BUFSIZE_RES ((uint8_t)(1))
- /* header field length defines */
- #define SHELLMATTA_HEADER_LENGTH ((uint8_t)(8))
- /** @brief length of headerfield: start of header */
- #define SHELLMATTA_LENGTH_SOH ((uint8_t)(1))
- /** @brief length of headerfield: protocol version */
- #define SHELLMATTA_LENGTH_PROT_VERSION ((uint8_t)(1))
- /** @brief length of headerfield: packet type */
- #define SHELLMATTA_LENGTH_PACKET_TYPE ((uint8_t)(1))
- /** @brief length of headerfield: payload length */
- #define SHELLMATTA_LENGTH_PAYLOAD_LENGTH ((uint8_t)(1))
- /** @brief length of headerfield: source */
- #define SHELLMATTA_LENGTH_SOURCE ((uint8_t)(1))
- /** @brief length of headerfield: destination */
- #define SHELLMATTA_LENGTH_DESTINATION ((uint8_t)(1))
- /** @brief length of headerfield: host to shell sequence counter */
- #define SHELLMATTA_LENGTH_H2S_SEQUENCE_CNT ((uint8_t)(1))
- /** @brief length of headerfield: shell to host sequence counter */
- #define SHELLMATTA_LENGTH_S2H_SEQUENCE_CNT ((uint8_t)(1))
- /** @brief length of headerfield: crc32 of header + payload without crc32 */
- #define SHELLMATTA_LENGTH_CRC ((uint8_t)(4))
- /* positional defines */
- #define SHELLMATTA_POS_SOH ((uint8_t)0)
- #define SHELLMATTA_POS_PROT_VER ((uint8_t)1)
- #define SHELLMATTA_POS_PACKET_TYPE ((uint8_t)2)
- #define SHELLMATTA_POS_PAYLOAD_LEN ((uint8_t)3)
- #define SHELLMATTA_POS_SRC ((uint8_t)4)
- #define SHELLMATTA_POS_DST ((uint8_t)5)
- #define SHELLMATTA_POS_CNT_H2S ((uint8_t)6)
- #define SHELLMATTA_POS_CNT_S2H ((uint8_t)7)
- #define SHELLMATTA_POS_PAYLOAD ((uint8_t)8)
- /* utility defines */
- #define SHELLMATTA_SHIFT_BY_1 ((uint8_t)(1))
- #define SHELLMATTA_SHIFT_BY_2 ((uint8_t)(2))
- #define SHELLMATTA_SHIFT_BY_3 ((uint8_t)(3))
- #define SHELLMATTA_SHIFT_BY_8 ((uint8_t)(8))
- #define SHELLMATTA_SHIFT_BY_16 ((uint8_t)(16))
- #define SHELLMATTA_SHIFT_BY_24 ((uint8_t)(24))
- shellmatta_retCode_t shellmatta_reset_transport(shellmatta_transport_layer_t *transportLayer);
- shellmatta_retCode_t shellmatta_init_transport_inst(shellmatta_transport_layer_t *transportLayer,
- shellmatta_write_t writeFct);
- shellmatta_retCode_t shellmatta_handle_transport_fsm(shellmatta_transport_layer_t *transportLayer,
- char *data);
- shellmatta_retCode_t shellmatta_write_transport(shellmatta_transport_layer_t *transportLayer,
- const char* data,
- uint32_t length);
- #endif /* _SHELLMATTA_TRANSPORT_H_ */
|