34 #ifndef EZRADIO_PLUGIN_MANAGER_H_
35 #define EZRADIO_PLUGIN_MANAGER_H_
40 #include "app-config.h"
48 #define RADIO_CHIP_FAMILY_EZRADIO 1u
49 #define RADIO_CHIP_FAMILY_EZRADIOPRO 2u
72 #if ( (defined RADIO_USE_GENERATED_CONFIGURATION) && (RADIO_USE_GENERATED_CONFIGURATION == 1) )
74 #include "radio-config-wds-gen.h"
77 #if ( (defined SL_WSTK6200A) || (defined SL_WSTK6220A) )
78 #include "radio-config-wds-gen_R60-868MHz-13dBm.h"
79 #elif (defined SL_WSTK6240A)
80 #include "radio-config-wds-gen_R61-868MHz-16dBm.h"
81 #elif ( (defined SL_WSTK6201A) || (defined SL_WSTK6221A) || (defined SL_WSTK6241A) )
82 #include "radio-config-wds-gen_R55-434MHz-10dBm.h"
83 #elif ( (defined SL_WSTK6202A) || (defined SL_WSTK6222A) || (defined SL_WSTK6242A) )
84 #include "radio-config-wds-gen_R63-915MHz-20dBm.h"
85 #elif ( (defined SL_WSTK6223A) || (defined SL_WSTK6243A) )
86 #include "radio-config-wds-gen_R63-490MHz-20dBm.h"
87 #elif ( (defined SL_WSTK6224A) || (defined SL_WSTK6244A) )
88 #include "radio-config-wds-gen_R63-169MHz-20dBm.h"
90 #error No radio configuration is defined! Create your own radio configuration or define your kit properly!
122 #define ECODE_EMDRV_EZRADIODRV_OK ( ECODE_OK )
123 #define ECODE_EMDRV_EZRADIODRV_ILLEGAL_HANDLE ( ECODE_EMDRV_EZRADIODRV_BASE | 0x00000001 )
125 #define ECODE_EMDRV_EZRADIODRV_TRANSMIT_PLUGIN_BASE ( ECODE_EMDRV_EZRADIODRV_BASE | 0x00000100 )
126 #define ECODE_EMDRV_EZRADIODRV_RECEIVE_PLUGIN_BASE ( ECODE_EMDRV_EZRADIODRV_BASE | 0x00000200 )
127 #define ECODE_EMDRV_EZRADIODRV_CRC_ERROR_PLUGIN_BASE ( ECODE_EMDRV_EZRADIODRV_BASE | 0x00000300 )
128 #define ECODE_EMDRV_EZRADIODRV_AUTO_ACK_PLUGIN_BASE ( ECODE_EMDRV_EZRADIODRV_BASE | 0x00000400 )
129 #define ECODE_EMDRV_EZRADIODRV_UNMOD_CARRIER_PLUGIN_BASE ( ECODE_EMDRV_EZRADIODRV_BASE | 0x00000500 )
130 #define ECODE_EMDRV_EZRADIODRV_PN9_PLUGIN_BASE ( ECODE_EMDRV_EZRADIODRV_BASE | 0x00000600 )
131 #define ECODE_EMDRV_EZRADIODRV_DIRECT_TRANSMIT_PLUGIN_BASE ( ECODE_EMDRV_EZRADIODRV_BASE | 0x00000700 )
132 #define ECODE_EMDRV_EZRADIODRV_DIRECT_RECEIVE_PLUGIN_BASE ( ECODE_EMDRV_EZRADIODRV_BASE | 0x00000800 )
135 #if (!defined RADIO_CONFIGURATION_DATA_RADIO_CHIP_FAMILY)
136 #error RADIO_CONFIGURATION_DATA_RADIO_CHIP_FAMILY is not defined!
137 #elif ( !(RADIO_CONFIGURATION_DATA_RADIO_CHIP_FAMILY == RADIO_CHIP_FAMILY_EZRADIO) && !(RADIO_CONFIGURATION_DATA_RADIO_CHIP_FAMILY == RADIO_CHIP_FAMILY_EZRADIOPRO) )
138 #error RADIO_CONFIGURATION_DATA_RADIO_CHIP_FAMILY is not defined properly!
142 #if ( ( defined EZRADIO_PLUGIN_TRANSMIT ) || ( defined EZRADIO_PLUGIN_RECEIVE ) )
144 #if (RADIO_CONFIGURATION_DATA_RADIO_CHIP_FAMILY == RADIO_CHIP_FAMILY_EZRADIO)
145 #define RADIO_CONFIG_DATA_FIELD_LENGTH \
147 RADIO_CONFIG_DATA_FIELD1_LENGTH, \
153 #elif (RADIO_CONFIGURATION_DATA_RADIO_CHIP_FAMILY == RADIO_CHIP_FAMILY_EZRADIOPRO)
154 #define RADIO_CONFIG_DATA_FIELD_LENGTH \
156 RADIO_CONFIG_DATA_FIELD1_LENGTH, \
157 RADIO_CONFIG_DATA_FIELD2_LENGTH, \
158 RADIO_CONFIG_DATA_FIELD3_LENGTH, \
159 RADIO_CONFIG_DATA_FIELD4_LENGTH, \
160 RADIO_CONFIG_DATA_FIELD5_LENGTH \
165 #if (RADIO_CONFIGURATION_DATA_RADIO_CHIP_FAMILY == RADIO_CHIP_FAMILY_EZRADIO)
166 #define RADIO_CONFIG_DATA_MAX_PACKET_LENGTH RADIO_CONFIG_DATA_FIELD1_LENGTH
167 #elif (RADIO_CONFIGURATION_DATA_RADIO_CHIP_FAMILY == RADIO_CHIP_FAMILY_EZRADIOPRO)
168 #define RADIO_CONFIG_DATA_MAX_PACKET_LENGTH \
169 RADIO_CONFIG_DATA_FIELD1_LENGTH + \
170 RADIO_CONFIG_DATA_FIELD2_LENGTH + \
171 RADIO_CONFIG_DATA_FIELD3_LENGTH + \
172 RADIO_CONFIG_DATA_FIELD4_LENGTH + \
173 RADIO_CONFIG_DATA_FIELD5_LENGTH
175 #endif //#if ( ( defined EZRADIO_PLUGIN_TRANSMIT ) || ( defined EZRADIO_PLUGIN_RECEIVE ) )
178 #if ( (defined RADIO_CONFIGURATION_DATA_PKT_VARIABLE_PACKET_LENGTH_ENABLE ) && (RADIO_CONFIGURATION_DATA_PKT_VARIABLE_PACKET_LENGTH_ENABLE > 0) )
180 #if (RADIO_CONFIGURATION_DATA_RADIO_CHIP_FAMILY == RADIO_CHIP_FAMILY_EZRADIO)
181 #if ( !(defined RADIO_CONFIGURATION_DATA_PKT_VARIABLE_LENGTH_FIELD ) || !(RADIO_CONFIGURATION_DATA_PKT_VARIABLE_LENGTH_FIELD == 1))
182 #error RADIO_CONFIGURATION_DATA_PKT_VARIABLE_LENGTH_FIELD is not defined properly!
184 #elif (RADIO_CONFIGURATION_DATA_RADIO_CHIP_FAMILY == RADIO_CHIP_FAMILY_EZRADIOPRO)
185 #if ( !(defined RADIO_CONFIGURATION_DATA_PKT_VARIABLE_LENGTH_FIELD ) || (RADIO_CONFIGURATION_DATA_PKT_VARIABLE_LENGTH_FIELD < 2) || (RADIO_CONFIGURATION_DATA_PKT_VARIABLE_LENGTH_FIELD > 5) )
186 #error RADIO_CONFIGURATION_DATA_PKT_VARIABLE_LENGTH_FIELD is not defined properly!
190 #if ( !(defined RADIO_CONFIGURATION_DATA_PH_FIELD_SPLIT) || (RADIO_CONFIGURATION_DATA_PH_FIELD_SPLIT == FALSE) )
191 #error EzRadio plugin manager can only support variable packet configuration for split packets curently!
194 #if ( (defined RADIO_CONFIGURATION_DATA_PKT_LEN_ADD_TO_RX_FIFO) && (RADIO_CONFIGURATION_DATA_PKT_LEN_ADD_TO_RX_FIFO > 0) )
196 #if (RADIO_CONFIGURATION_DATA_RADIO_CHIP_FAMILY == RADIO_CHIP_FAMILY_EZRADIO)
197 #if ( !(defined RADIO_CONFIGURATION_DATA_PKT_FIELD_CONTAINING_LENGTH ) || !(RADIO_CONFIGURATION_DATA_PKT_FIELD_CONTAINING_LENGTH == 1) )
198 #error RADIO_CONFIGURATION_DATA_PKT_FIELD_CONTAINING_LENGTH is not defined properly!
200 #elif (RADIO_CONFIGURATION_DATA_RADIO_CHIP_FAMILY == RADIO_CHIP_FAMILY_EZRADIOPRO)
201 #if ( !(defined RADIO_CONFIGURATION_DATA_PKT_FIELD_CONTAINING_LENGTH ) || (RADIO_CONFIGURATION_DATA_PKT_FIELD_CONTAINING_LENGTH < 1) || (RADIO_CONFIGURATION_DATA_PKT_FIELD_CONTAINING_LENGTH > 4) )
202 #error RADIO_CONFIGURATION_DATA_PKT_FIELD_CONTAINING_LENGTH is not defined properly!
206 #if (RADIO_CONFIGURATION_DATA_RADIO_CHIP_FAMILY == RADIO_CHIP_FAMILY_EZRADIO)
207 #if ( !(defined RADIO_CONFIGURATION_DATA_PKT_LENGTH_SIZE ) || !(RADIO_CONFIGURATION_DATA_PKT_LENGTH_SIZE == 1) )
208 #error RADIO_CONFIGURATION_DATA_PKT_LENGTH_SIZE is not defined properly!
210 #elif (RADIO_CONFIGURATION_DATA_RADIO_CHIP_FAMILY == RADIO_CHIP_FAMILY_EZRADIOPRO)
211 #if ( !(defined RADIO_CONFIGURATION_DATA_PKT_LENGTH_SIZE ) || (RADIO_CONFIGURATION_DATA_PKT_LENGTH_SIZE < 1) || (RADIO_CONFIGURATION_DATA_PKT_LENGTH_SIZE > 2) )
212 #error RADIO_CONFIGURATION_DATA_PKT_LENGTH_SIZE is not defined properly!
216 #if (RADIO_CONFIGURATION_DATA_RADIO_CHIP_FAMILY == RADIO_CHIP_FAMILY_EZRADIO)
217 #define EZRADIO_LENGTH_WORD_START 0u
219 #elif (RADIO_CONFIGURATION_DATA_RADIO_CHIP_FAMILY == RADIO_CHIP_FAMILY_EZRADIOPRO)
220 #if (RADIO_CONFIGURATION_DATA_PKT_FIELD_CONTAINING_LENGTH == 1)
221 #define EZRADIO_LENGTH_WORD_START 0u
223 #elif (RADIO_CONFIGURATION_DATA_PKT_FIELD_CONTAINING_LENGTH == 2)
224 #define EZRADIO_LENGTH_WORD_START RADIO_CONFIG_DATA_FIELD1_LENGTH
226 #elif (RADIO_CONFIGURATION_DATA_PKT_FIELD_CONTAINING_LENGTH == 3)
227 #define EZRADIO_LENGTH_WORD_START (RADIO_CONFIG_DATA_FIELD1_LENGTH + RADIO_CONFIG_DATA_FIELD2_LENGTH)
229 #elif (RADIO_CONFIGURATION_DATA_PKT_FIELD_CONTAINING_LENGTH == 4)
230 #define EZRADIO_LENGTH_WORD_START (RADIO_CONFIG_DATA_FIELD1_LENGTH + RADIO_CONFIG_DATA_FIELD2_LENGTH + RADIO_CONFIG_DATA_FIELD3_LENGTH)
232 #endif // RADIO_CONFIGURATION_DATA_PKT_FIELD_CONTAINING_LENGTH
233 #endif //#elif (RADIO_CONFIGURATION_DATA_RADIO_CHIP_FAMILY == RADIO_CHIP_FAMILY_EZRADIOPRO)
235 #else //#if ( (defined RADIO_CONFIGURATION_DATA_PKT_LEN_ADD_TO_RX_FIFO) && (RADIO_CONFIGURATION_DATA_PKT_LEN_ADD_TO_RX_FIFO > 0) )
236 #undef RADIO_CONFIGURATION_DATA_PKT_LENGTH_SIZE
237 #define RADIO_CONFIGURATION_DATA_PKT_LENGTH_SIZE 0u
238 #endif //#if ( (defined RADIO_CONFIGURATION_DATA_PKT_LEN_ADD_TO_RX_FIFO) && (RADIO_CONFIGURATION_DATA_PKT_LEN_ADD_TO_RX_FIFO > 0) )
240 #if (RADIO_CONFIGURATION_DATA_RADIO_CHIP_FAMILY == RADIO_CHIP_FAMILY_EZRADIO)
241 #define EZRADIO_VARIABLE_DATA_START RADIO_CONFIGURATION_DATA_PKT_LENGTH_SIZE
243 #elif (RADIO_CONFIGURATION_DATA_RADIO_CHIP_FAMILY == RADIO_CHIP_FAMILY_EZRADIOPRO)
244 #if (RADIO_CONFIGURATION_DATA_PKT_VARIABLE_LENGTH_FIELD == 2)
245 #define EZRADIO_VARIABLE_DATA_START RADIO_CONFIG_DATA_FIELD1_LENGTH
247 #elif (RADIO_CONFIGURATION_DATA_PKT_VARIABLE_LENGTH_FIELD == 3)
248 #define EZRADIO_VARIABLE_DATA_START (RADIO_CONFIG_DATA_FIELD1_LENGTH + RADIO_CONFIG_DATA_FIELD2_LENGTH)
250 #elif (RADIO_CONFIGURATION_DATA_PKT_VARIABLE_LENGTH_FIELD == 4)
251 #define EZRADIO_VARIABLE_DATA_START (RADIO_CONFIG_DATA_FIELD1_LENGTH + RADIO_CONFIG_DATA_FIELD2_LENGTH + RADIO_CONFIG_DATA_FIELD3_LENGTH)
253 #elif (RADIO_CONFIGURATION_DATA_PKT_VARIABLE_LENGTH_FIELD == 5)
254 #define EZRADIO_VARIABLE_DATA_START (RADIO_CONFIG_DATA_FIELD1_LENGTH + RADIO_CONFIG_DATA_FIELD2_LENGTH + RADIO_CONFIG_DATA_FIELD3_LENGTH + RADIO_CONFIG_DATA_FIELD4_LENGTH)
256 #endif // RADIO_CONFIGURATION_DATA_PKT_VARIABLE_LENGTH_FIELD
257 #endif //#elif (RADIO_CONFIGURATION_DATA_RADIO_CHIP_FAMILY == RADIO_CHIP_FAMILY_EZRADIOPRO)
259 #else //#if ( (defined RADIO_CONFIGURATION_DATA_PKT_VARIABLE_PACKET_LENGTH_ENABLE ) && (RADIO_CONFIGURATION_DATA_PKT_VARIABLE_PACKET_LENGTH_ENABLE > 0) )
262 #endif //#if ( (defined RADIO_CONFIGURATION_DATA_PKT_VARIABLE_PACKET_LENGTH_ENABLE ) && (RADIO_CONFIGURATION_DATA_PKT_VARIABLE_PACKET_LENGTH_ENABLE > 0) )
309 #if ( defined EZRADIO_PLUGIN_TRANSMIT )
313 #if ( defined EZRADIO_PLUGIN_RECEIVE )
317 #if ( defined EZRADIO_PLUGIN_CRC_ERROR )
321 #if ( ( defined EZRADIO_PLUGIN_AUTO_ACK ) && ( defined EZRADIO_PLUGIN_TRANSMIT ) && ( defined EZRADIO_PLUGIN_RECEIVE ) )
325 #if ( defined EZRADIO_PLUGIN_UNMOD_CARRIER )
329 #if ( defined EZRADIO_PLUGIN_PN9 )
333 #if ( defined EZRADIO_PLUGIN_DIRECT_TRANSMIT )
337 #if ( defined EZRADIO_PLUGIN_DIRECT_RECEIVE )
345 #define EZRADIODRV_INIT_DEFAULT \
347 EZRADIODRV_TRANSMIT_PLUGIN_INIT_DEFAULT \
348 EZRADIODRV_RECEIVE_PLUGIN_INIT_DEFAULT \
349 EZRADIODRV_CRC_ERROR_PLUGIN_INIT_DEFAULT \
350 EZRADIODRV_AUTO_ACK_PLUGIN_INIT_DEFAULT \
351 EZRADIODRV_UNMOD_CARRIER_PLUGIN_INIT_DEFAULT \
352 EZRADIODRV_PN9_PLUGIN_INIT_DEFAULT \
353 EZRADIODRV_DIRECT_TRANSMIT_PLUGIN_INIT_DEFAULT \
354 EZRADIODRV_DIRECT_RECEIVE_PLUGIN_INIT_DEFAULT \
void ezradioResetTRxFifo(void)
Resets both the TX and RX FIFOs.
void ezradioInit(EZRADIODRV_Handle_t handle)
Radio Initialization.
EZRADIODRV_PacketTxHandle_t packetTx
Packet transmission plug-in handler.
EzRadio transmit plug-in managed by the plug-in manager if enabled.
EzRadio auto acknowledge plug-in managed by the plug-in manager if enabled.
EZRADIODRV_PacketCrcErrorHandle_t packetCrcError
Packet reception with CRC error plug-in handler.
EZRADIODRV_UnmodCarrierHandle_t unmodCarrier
Unmodulated carrier plug-in handler.
Energy Aware drivers error code definitions.
EzRadio direct transmission plug-in managed by the plug-in manager if enabled.
EzRadio transmit plug-in managed by the plug-in manager if enabled.
EzRadio PN9 plug-in instance initialization and handler structure.
EZRADIODRV_AutoAckHandle_t autoAck
Auto-acknowledge plug-in handler.
EZRADIODRV_DirectRxHandle_t directRx
Direct reception plug-in handler.
EZRADIODRV_Pn9Handle_t pn9
PN9 plug-in handler.
EZRADIODRV_HandleData_t * EZRADIODRV_Handle_t
EZRadio driver instance handle.
EzRadio PN9 plug-in managed by the plug-in manager if enabled.
EzRadio transmit plug-in instance initialization and handler structure.
EzRadio CRC error packet receive plug-in instance initialization and handler structure.
void(* EZRADIODRV_Callback_t)(EZRADIODRV_Handle_t handle, Ecode_t status)
EZRADIODRV feature callback function interface.
EZRADIODRV_DirectTxHandle_t directTx
Direct transmission plug-in handler.
EZRADIODRV_PacketRxHandle_t packetRx
Packet reception plug-in handler.
EzRadio auto acknowledge plug-in instance initialization and handler structure.
EzRadio receive plug-in instance initialization and handler structure.
EzRadio direct rx plug-in instance initialization and handler structure.
EzRadio unmodulated carrier plug-in instance initialization and handler structure.
EzRadio direct reception plug-in managed by the plug-in manager if enabled.
uint32_t Ecode_t
Typedef for API function errorcode return values.
EzRadio direct tx plug-in instance initialization and handler structure.
ezradio_cmd_reply_t * EZRADIODRV_ReplyHandle_t
EZradio reply union handle.
EzRadio unmodulated carrier plug-in managed by the plug-in manager if enabled.
EzRadio CRC error plug-in managed by the plug-in manager if enabled.
Ecode_t ezradioPluginManager(EZRADIODRV_Handle_t handle)
EzRadio plugin manager state machine handler. This function should be called in the application in an...