|
@@ -14,35 +14,35 @@
|
|
|
|
|
|
/* payload length defines */
|
|
/* payload length defines */
|
|
/** @brief max length of a plain data payload */
|
|
/** @brief max length of a plain data payload */
|
|
-#define SHELLMATTA_PAYLOAD_MAXLENGTH (uint8_t(255))
|
|
|
|
|
|
+#define SHELLMATTA_PAYLOAD_MAXLENGTH ((uint8_t)(255))
|
|
/** @brief max length of a request sequence counters payload */
|
|
/** @brief max length of a request sequence counters payload */
|
|
-#define SHELLMATTA_PAYLOAD_LEN_SEQ_REQ (uint8_t(0))
|
|
|
|
|
|
+#define SHELLMATTA_PAYLOAD_LEN_SEQ_REQ ((uint8_t)(0))
|
|
/** @brief max length of a respond sequence counters payload */
|
|
/** @brief max length of a respond sequence counters payload */
|
|
-#define SHELLMATTA_PAYLOAD_LEN_SEQ_RES (uint8_t(0))
|
|
|
|
|
|
+#define SHELLMATTA_PAYLOAD_LEN_SEQ_RES ((uint8_t)(0))
|
|
/** @brief max length of a request buffersize payload */
|
|
/** @brief max length of a request buffersize payload */
|
|
-#define SHELLMATTA_PAYLOAD_LEN_BUFSIZE_REQ (uint8_t(1))
|
|
|
|
|
|
+#define SHELLMATTA_PAYLOAD_LEN_BUFSIZE_REQ ((uint8_t)(1))
|
|
/** @brief max length of a respond buffersize payload */
|
|
/** @brief max length of a respond buffersize payload */
|
|
-#define SHELLMATTA_PAYLOAD_LEN_BUFSIZE_RES (uint8_t(1))
|
|
|
|
|
|
+#define SHELLMATTA_PAYLOAD_LEN_BUFSIZE_RES ((uint8_t)(1))
|
|
|
|
|
|
/* header field length defines */
|
|
/* header field length defines */
|
|
/** @brief length of headerfield: start of header */
|
|
/** @brief length of headerfield: start of header */
|
|
-#define SHELLMATTA_LENGTH_SOH (uint8_t(1))
|
|
|
|
|
|
+#define SHELLMATTA_LENGTH_SOH ((uint8_t)(1))
|
|
/** @brief length of headerfield: protocol version */
|
|
/** @brief length of headerfield: protocol version */
|
|
-#define SHELLMATTA_LENGTH_PROT_VERSION (uint8_t(1))
|
|
|
|
|
|
+#define SHELLMATTA_LENGTH_PROT_VERSION ((uint8_t)(1))
|
|
/** @brief length of headerfield: packet type */
|
|
/** @brief length of headerfield: packet type */
|
|
-#define SHELLMATTA_LENGTH_PACKET_TYPE (uint8_t(1))
|
|
|
|
|
|
+#define SHELLMATTA_LENGTH_PACKET_TYPE ((uint8_t)(1))
|
|
/** @brief length of headerfield: payload length */
|
|
/** @brief length of headerfield: payload length */
|
|
-#define SHELLMATTA_LENGTH_PAYLOAD_LENGTH (uint8_t(1))
|
|
|
|
|
|
+#define SHELLMATTA_LENGTH_PAYLOAD_LENGTH ((uint8_t)(1))
|
|
/** @brief length of headerfield: source */
|
|
/** @brief length of headerfield: source */
|
|
-#define SHELLMATTA_LENGTH_SOURCE (uint8_t(1))
|
|
|
|
|
|
+#define SHELLMATTA_LENGTH_SOURCE ((uint8_t)(1))
|
|
/** @brief length of headerfield: destination */
|
|
/** @brief length of headerfield: destination */
|
|
-#define SHELLMATTA_LENGTH_DESTINATION (uint8_t(1))
|
|
|
|
|
|
+#define SHELLMATTA_LENGTH_DESTINATION ((uint8_t)(1))
|
|
/** @brief length of headerfield: host to shell sequence counter */
|
|
/** @brief length of headerfield: host to shell sequence counter */
|
|
-#define SHELLMATTA_LENGTH_H2S_SEQUENCE_CNT (uint8_t(1))
|
|
|
|
|
|
+#define SHELLMATTA_LENGTH_H2S_SEQUENCE_CNT ((uint8_t)(1))
|
|
/** @brief length of headerfield: shell to host sequence counter */
|
|
/** @brief length of headerfield: shell to host sequence counter */
|
|
-#define SHELLMATTA_LENGTH_S2H_SEQUENCE_CNT (uint8_t(1))
|
|
|
|
|
|
+#define SHELLMATTA_LENGTH_S2H_SEQUENCE_CNT ((uint8_t)(1))
|
|
/** @brief length of headerfield: crc32 of header + payload without crc32 */
|
|
/** @brief length of headerfield: crc32 of header + payload without crc32 */
|
|
-#define SHELLMATTA_LENGTH_CRC (uint8_t(4))
|
|
|
|
|
|
+#define SHELLMATTA_LENGTH_CRC ((uint8_t)(4))
|
|
/** @} */
|
|
/** @} */
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -50,17 +50,16 @@
|
|
*/
|
|
*/
|
|
typedef enum
|
|
typedef enum
|
|
{
|
|
{
|
|
- STATE_IDLE = 0u, /**< idle state of transport layer */
|
|
|
|
- STATE_SOH , /**< start of header state of transport layer */
|
|
|
|
- STATE_PROTOCOL_VERSION , /**< protocol version state of transport layer */
|
|
|
|
- STATE_PACKET_TYPE , /**< packet type state of transport layer */
|
|
|
|
- STATE_PAYLOAD_LENGTH , /**< payload length state of transport layer */
|
|
|
|
- STATE_SOURCE , /**< source state of transport layer */
|
|
|
|
- STATE_DESTINATION , /**< destination state of transport layer */
|
|
|
|
- STATE_H2S_SEQUENCE_CNT , /**< host to shellmatta sequence counter state of transport layer */
|
|
|
|
- STATE_S2H_SEQUENCE_CNT , /**< shellmatta to host sequence counter state of transport layer */
|
|
|
|
- STATE_PAYLOAD , /**< payload state of transport layer */
|
|
|
|
- STATE_CRC , /**< crc state of transport layer */
|
|
|
|
|
|
+ STATE_GET_SOH =0u, /**< start of header state of transport layer */
|
|
|
|
+ STATE_GET_PROTOCOL_VERSION , /**< protocol version state of transport layer */
|
|
|
|
+ STATE_GET_PACKET_TYPE , /**< packet type state of transport layer */
|
|
|
|
+ STATE_GET_PAYLOAD_LENGTH , /**< payload length state of transport layer */
|
|
|
|
+ STATE_GET_SOURCE , /**< source state of transport layer */
|
|
|
|
+ STATE_GET_DESTINATION , /**< destination state of transport layer */
|
|
|
|
+ STATE_GET_H2S_SEQUENCE_CNT , /**< host to shellmatta sequence counter state of transport layer */
|
|
|
|
+ STATE_GET_S2H_SEQUENCE_CNT , /**< shellmatta to host sequence counter state of transport layer */
|
|
|
|
+ STATE_GET_PAYLOAD , /**< payload state of transport layer */
|
|
|
|
+ STATE_GET_CRC , /**< crc state of transport layer */
|
|
} shellmatta_transport_state_t;
|
|
} shellmatta_transport_state_t;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -85,8 +84,22 @@ typedef struct
|
|
uint32_t s2h_sequenceCnt; /**< */
|
|
uint32_t s2h_sequenceCnt; /**< */
|
|
shellmatta_transport_state_t state; /**< */
|
|
shellmatta_transport_state_t state; /**< */
|
|
bool mandatory; /**< */
|
|
bool mandatory; /**< */
|
|
|
|
+ bool active; /**< */
|
|
} shellmatta_transport_layer_t;
|
|
} shellmatta_transport_layer_t;
|
|
|
|
|
|
|
|
+static uint8_t protocolVersion = 0u;
|
|
|
|
+static shellmatta_transport_packet_t packetType = 0u;
|
|
|
|
+static uint8_t payloadLength = 0u;
|
|
|
|
+static uint8_t source = 0u;
|
|
|
|
+static uint8_t destination = 0u;
|
|
|
|
+static uint32_t crc32 = 0u;
|
|
|
|
+static uint8_t payloadCounter = 0u;
|
|
|
|
+static uint8_t crcCounter = 0u;
|
|
|
|
+
|
|
|
|
+shellmatta_transport_layer_t transportLayerInst;
|
|
|
|
+
|
|
|
|
+shellmatta_retCode_t shellmatta_init_transport_inst();
|
|
|
|
+
|
|
shellmatta_retCode_t shellmatta_handle_transport_fsm(shellmatta_transport_layer_t *transportLayer, char *data);
|
|
shellmatta_retCode_t shellmatta_handle_transport_fsm(shellmatta_transport_layer_t *transportLayer, char *data);
|
|
|
|
|
|
#endif /* _SHELLMATTA_TRANSPORT_H_ */
|
|
#endif /* _SHELLMATTA_TRANSPORT_H_ */
|