Firmware SDK
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
bc_wssfm10r1at.h
1 #ifndef _BC_WSSFM10R1AT_H
2 #define _BC_WSSFM10R1AT_H
3 
4 #include <bc_scheduler.h>
5 #include <bc_gpio.h>
6 #include <bc_uart.h>
7 
11 
13 
14 #define BC_WSSFM10R1AT_TX_FIFO_BUFFER_SIZE 64
15 #define BC_WSSFM10R1AT_RX_FIFO_BUFFER_SIZE 64
16 
18 
20 
21 typedef enum
22 {
25 
28 
31 
34 
37 
40 
42 
44 
46 
48 
49 typedef enum
50 {
51  BC_WSSFM10R1AT_STATE_READY = 0,
52  BC_WSSFM10R1AT_STATE_ERROR = 1,
53  BC_WSSFM10R1AT_STATE_INITIALIZE = 2,
54  BC_WSSFM10R1AT_STATE_INITIALIZE_RESET_L = 3,
55  BC_WSSFM10R1AT_STATE_INITIALIZE_RESET_H = 4,
56  BC_WSSFM10R1AT_STATE_INITIALIZE_AT_COMMAND = 5,
57  BC_WSSFM10R1AT_STATE_INITIALIZE_AT_RESPONSE = 6,
58  BC_WSSFM10R1AT_STATE_SET_POWER_COMMAND = 7,
59  BC_WSSFM10R1AT_STATE_SET_POWER_RESPONSE = 8,
60  BC_WSSFM10R1AT_STATE_SEND_RF_FRAME_COMMAND = 9,
61  BC_WSSFM10R1AT_STATE_SEND_RF_FRAME_RESPONSE = 10,
62  BC_WSSFM10R1AT_STATE_READ_DEVICE_ID_COMMAND = 11,
63  BC_WSSFM10R1AT_STATE_READ_DEVICE_ID_RESPONSE = 12,
64  BC_WSSFM10R1AT_STATE_READ_DEVICE_PAC_COMMAND = 13,
65  BC_WSSFM10R1AT_STATE_READ_DEVICE_PAC_RESPONSE = 14,
66  BC_WSSFM10R1AT_STATE_CONTINUOUS_WAVE_COMMAND = 15,
67  BC_WSSFM10R1AT_STATE_CONTINUOUS_WAVE_RESPONSE = 16,
68  BC_WSSFM10R1AT_STATE_CONTINUOUS_WAVE = 17,
69  BC_WSSFM10R1AT_STATE_DEEP_SLEEP_COMMAND = 18,
70  BC_WSSFM10R1AT_STATE_DEEP_SLEEP_RESPONSE = 19,
71  BC_WSSFM10R1AT_STATE_DEEP_SLEEP = 20
72 
73 } bc_wssfm10r1at_state_t;
74 
75 struct bc_wssfm10r1at_t
76 {
77  bc_scheduler_task_id_t _task_id;
78  bc_gpio_channel_t _reset_signal;
79  bc_uart_channel_t _uart_channel;
80  bc_wssfm10r1at_state_t _state;
81  bc_wssfm10r1at_state_t _state_after_sleep;
82  bool _deep_sleep;
83  bc_fifo_t _tx_fifo;
84  bc_fifo_t _rx_fifo;
85  uint8_t _tx_fifo_buffer[BC_WSSFM10R1AT_TX_FIFO_BUFFER_SIZE];
86  uint8_t _rx_fifo_buffer[BC_WSSFM10R1AT_RX_FIFO_BUFFER_SIZE];
87  void (*_event_handler)(bc_wssfm10r1at_t *, bc_wssfm10r1at_event_t, void *);
88  void *_event_param;
89  char _command[BC_WSSFM10R1AT_TX_FIFO_BUFFER_SIZE];
90  char _response[BC_WSSFM10R1AT_RX_FIFO_BUFFER_SIZE];
91  uint8_t _message_buffer[12];
92  size_t _message_length;
93 };
94 
96 
101 
102 void bc_wssfm10r1at_init(bc_wssfm10r1at_t *self, bc_gpio_channel_t reset_signal, bc_uart_channel_t uart_channel);
103 
108 
109 void bc_wssfm10r1at_set_event_handler(bc_wssfm10r1at_t *self, void (*event_handler)(bc_wssfm10r1at_t *, bc_wssfm10r1at_event_t, void *), void *event_param);
110 
115 
117 
124 
125 bool bc_wssfm10r1at_send_rf_frame(bc_wssfm10r1at_t *self, const void *buffer, size_t length);
126 
131 
133 
140 
141 bool bc_wssfm10r1at_get_device_id(bc_wssfm10r1at_t *self, char *buffer, size_t buffer_size);
142 
147 
149 
156 
157 bool bc_wssfm10r1at_get_device_pac(bc_wssfm10r1at_t *self, char *buffer, size_t buffer_size);
158 
163 
165 
167 
168 #endif // _BC_WSSFM10R1AT_H
bc_uart_channel_t
UART channels.
Definition: bc_uart.h:13
Structure of FIFO instance.
Definition: bc_fifo.h:12
Device PAC has been read event.
struct bc_wssfm10r1at_t bc_wssfm10r1at_t
WSSFM10R1AT instance.
bc_wssfm10r1at_event_t
Callback events.
void bc_wssfm10r1at_init(bc_wssfm10r1at_t *self, bc_gpio_channel_t reset_signal, bc_uart_channel_t uart_channel)
Initialize WSSFM10R1AT.
bool bc_wssfm10r1at_read_device_pac(bc_wssfm10r1at_t *self)
Read device PAC command.
bool bc_wssfm10r1at_is_ready(bc_wssfm10r1at_t *self)
Check if modem is ready for commands.
RF frame transmission finished event.
size_t bc_scheduler_task_id_t
Task ID assigned by scheduler.
Definition: bc_scheduler.h:18
bool bc_wssfm10r1at_get_device_pac(bc_wssfm10r1at_t *self, char *buffer, size_t buffer_size)
Get device PAC (can be called only in BC_WSSFM10R1AT_EVENT_READ_DEVICE_PAC event) ...
bool bc_wssfm10r1at_continuous_wave(bc_wssfm10r1at_t *self)
Generate continuous wave command.
bool bc_wssfm10r1at_read_device_id(bc_wssfm10r1at_t *self)
Read device ID command.
RF frame transmission started event.
bc_gpio_channel_t
GPIO channels.
Definition: bc_gpio.h:12
void bc_wssfm10r1at_set_event_handler(bc_wssfm10r1at_t *self, void(*event_handler)(bc_wssfm10r1at_t *, bc_wssfm10r1at_event_t, void *), void *event_param)
Set callback function.
bool bc_wssfm10r1at_get_device_id(bc_wssfm10r1at_t *self, char *buffer, size_t buffer_size)
Get device ID (can be called only in BC_WSSFM10R1AT_EVENT_READ_DEVICE_ID event)
Device ID has been read event.
bool bc_wssfm10r1at_send_rf_frame(bc_wssfm10r1at_t *self, const void *buffer, size_t length)
Send RF frame command.