Trident IoT Z-Wave SDK
 
Loading...
Searching...
No Matches
comm_interface.h
Go to the documentation of this file.
1
9
10
11#ifndef __COMM_INTERFACE__
12#define __COMM_INTERFACE__
13
14#include <stdint.h>
15#include <stddef.h>
16#include <stdbool.h>
17#include <zpal_uart.h>
18
30#define RECEIVE_BUFFER_SIZE 32
31
36#define TRANSMIT_BUFFER_SIZE 180
37
51
56typedef void * transport_handle_t;
57
66
71typedef void (*transmit_done_cb_t)(transport_handle_t transport);
72
76typedef struct __attribute__((packed))
77{
78 uint8_t sof;
79 uint8_t cmd;
80 uint8_t len;
81 uint8_t payload[TRANSMIT_BUFFER_SIZE];
83
87typedef struct __attribute__((packed))
88{
89 uint8_t sof_frame;
90 uint8_t type;
91 uint16_t timestamp;
93 uint8_t region;
94 uint8_t rssi;
95 uint16_t start_of_data;
96 uint8_t len;
97 uint8_t payload[TRANSMIT_BUFFER_SIZE];
99
103typedef struct __attribute__((packed))
104{
105 uint8_t sof;
106 uint8_t type;
107 uint16_t timestamp;
109 uint8_t region;
110 uint8_t rssi;
111 uint8_t payload[4];
113
117typedef struct __attribute__((packed))
118{
119 uint8_t sof;
120 uint8_t type;
121 uint16_t timestamp;
122 uint8_t rssi;
123 uint16_t counter;
125
134void comm_interface_transmit_command(uint8_t cmd, const uint8_t *payload, uint8_t len, transmit_done_cb_t cb);
135
147void comm_interface_transmit_frame(uint16_t timestamp, uint8_t ch_and_speed, uint8_t region, int8_t rssi, const uint8_t *payload, uint8_t length, transmit_done_cb_t cb);
148
160void comm_interface_transmit_beam_start(uint16_t timestamp, uint8_t ch_and_speed, uint8_t region, int8_t rssi, const uint8_t *payload, uint8_t length, transmit_done_cb_t cb);
161
170void comm_interface_transmit_beam_stop(uint16_t timestamp, int8_t rssi, uint16_t counter, transmit_done_cb_t cb);
171
176
183void comm_interface_init(zpal_uart_id_t uart, void (*uart_rx_event_handler)());
184
191
198
204#endif /* __COMM_INTERFACE__ */
#define TRANSMIT_BUFFER_SIZE
Transmit buffer size.
Definition cli_uart_interface.h:36
struct _transport_t transport_t
Transport.
comm_interface_command_t * comm_interface_get_command(void)
Get the received command.
comm_interface_parse_result_t
Parsing result enum.
Definition comm_interface.h:43
comm_interface_parse_result_t comm_interface_parse_data(void)
Parse the incomming data.
void(* transmit_done_cb_t)(transport_handle_t transport)
Transmit done callback type.
Definition comm_interface.h:71
void comm_interface_transmit_beam_stop(uint16_t timestamp, int8_t rssi, uint16_t counter, transmit_done_cb_t cb)
Transmit a beam stop frame to the host.
void comm_interface_init(zpal_uart_id_t uart, void(*uart_rx_event_handler)())
Initialize the communication interface.
void comm_interface_transmit_beam_start(uint16_t timestamp, uint8_t ch_and_speed, uint8_t region, int8_t rssi, const uint8_t *payload, uint8_t length, transmit_done_cb_t cb)
Transmit a beam start frame to the host.
void * transport_handle_t
Transport handle type.
Definition comm_interface.h:56
void comm_interface_wait_transmit_done(void)
void comm_interface_transmit_frame(uint16_t timestamp, uint8_t ch_and_speed, uint8_t region, int8_t rssi, const uint8_t *payload, uint8_t length, transmit_done_cb_t cb)
Transmit a frame to the host.
void comm_interface_transmit_command(uint8_t cmd, const uint8_t *payload, uint8_t len, transmit_done_cb_t cb)
Transmit a command to the host.
@ PARSE_IDLE
returned if nothing special has happened
Definition comm_interface.h:44
@ PARSE_FRAME_SENT
returned if frame was ACKed by the other end
Definition comm_interface.h:46
@ PARSE_TX_TIMEOUT
returned if Tx timeout (waiting for ACK) ahs happened
Definition comm_interface.h:49
@ PARSE_RX_TIMEOUT
returned if Rx timeout has happened
Definition comm_interface.h:48
@ PARSE_FRAME_RECEIVED
returned when a valid frame has been received
Definition comm_interface.h:45
@ PARSE_FRAME_ERROR
returned if frame has error in Checksum
Definition comm_interface.h:47
zpal_uart_id_t
IDs for each of the UARTs.
Definition zpal_uart.h:68
Transport.
Definition comm_interface.h:63
transport_handle_t handle
Transport handle.
Definition comm_interface.h:64
Beam start frame type.
Definition comm_interface.h:104
uint8_t type
Type of frame.
Definition comm_interface.h:106
uint8_t region
Region.
Definition comm_interface.h:109
uint8_t channel_and_speed
Channel and Speed.
Definition comm_interface.h:108
uint16_t timestamp
Timestamp.
Definition comm_interface.h:107
uint8_t rssi
RSSI value.
Definition comm_interface.h:110
uint8_t sof
Start of frame.
Definition comm_interface.h:105
Beam stop frame type.
Definition comm_interface.h:118
uint8_t type
Type of frame.
Definition comm_interface.h:120
uint16_t counter
Counter value.
Definition comm_interface.h:123
uint16_t timestamp
Timestamp.
Definition comm_interface.h:121
uint8_t rssi
RSSI value.
Definition comm_interface.h:122
uint8_t sof
Start of frame.
Definition comm_interface.h:119
Definition comm_interface.h:77
uint8_t sof
Start of frame.
Definition comm_interface.h:78
uint8_t cmd
Command.
Definition comm_interface.h:79
uint8_t len
Length.
Definition comm_interface.h:80
Definition comm_interface.h:88
uint8_t sof_frame
Start of frame.
Definition comm_interface.h:89
uint8_t channel_and_speed
Channel and speed.
Definition comm_interface.h:92
uint8_t region
Region.
Definition comm_interface.h:93
uint8_t type
Type of frame.
Definition comm_interface.h:90
uint16_t start_of_data
Start of data.
Definition comm_interface.h:95
uint8_t rssi
RSSI value.
Definition comm_interface.h:94
uint8_t len
Length.
Definition comm_interface.h:96
uint16_t timestamp
Timestamp.
Definition comm_interface.h:91