@@ -129,10 +129,11 @@ typedef void mcps_data_request(const mac_api_t *api, const mcps_data_req_t *data
129
129
* @param ie_ext Information element list to MCPS-DATA.request
130
130
* @param asynch_channel_list Optional channel list to asynch data request. Give NULL when normal data request.
131
131
* @param priority Data request priority level
132
+ * @param phy_mode_id Use mode switch if given phy_mode_id > 0
132
133
*
133
134
* Asynch data request is mac standard extension. asynch_channel_list include channel mask which channel message is requested to send.
134
135
*/
135
- typedef void mcps_data_request_ext (const mac_api_t * api , const mcps_data_req_t * data , const mcps_data_req_ie_list_t * ie_ext , const struct channel_list_s * asynch_channel_list , mac_data_priority_t priority );
136
+ typedef void mcps_data_request_ext (const mac_api_t * api , const mcps_data_req_t * data , const mcps_data_req_ie_list_t * ie_ext , const struct channel_list_s * asynch_channel_list , mac_data_priority_t priority , uint8_t phy_mode_id );
136
137
137
138
/**
138
139
* @brief mcps_purge_request MCPS_PURGE request call
@@ -192,6 +193,16 @@ typedef void mcps_ack_data_req_ext(const mac_api_t *api, mcps_ack_data_payload_t
192
193
typedef void mcps_edfe_handler (const mac_api_t * api , mcps_edfe_response_t * response_message );
193
194
194
195
196
+ /**
197
+ * @brief mode_switch_resolver Callback to resolve configuration behind received PHY mode ID
198
+ * @param api The API which handled the response
199
+ * @param phy_mode_id PHY mode ID to be resolved
200
+ * @param rf_config Resolved configuration
201
+ * @return 0 in case of success, negative otherwise
202
+ */
203
+ typedef int8_t mode_switch_resolver (const mac_api_t * api , uint8_t phy_mode_id , phy_rf_channel_configuration_s * rf_config );
204
+
205
+
195
206
/**
196
207
* @brief mcps_purge_confirm MCPS-PURGE confirm is called as a response to MCPS-PURGE request
197
208
* @param api The API which handled the request
@@ -272,37 +283,49 @@ typedef int8_t mac_api_enable_mcps_ext(mac_api_t *api,
272
283
typedef int8_t mac_api_enable_mcps_edfe_ext (mac_api_t * api ,
273
284
mcps_edfe_handler * edfe_ind_cb );
274
285
286
+ /**
287
+ * @brief mac_api_mode_switch_resolver_ext Initialises mode switch resolver callback. Upper layer must configure function when mode switch is used.
288
+ * @param api mac_api_t pointer, which is created by application.
289
+ * @param mode_resolver_cb Upper layer function to resolve received PHY mode ID
290
+ * @param base_phy_mode Base PHY mode, device returns to this mode after mode switch transmission or reception
291
+ * @return -1 if error, 0 otherwise
292
+ */
293
+ typedef int8_t mac_api_mode_switch_resolver_ext (mac_api_t * api ,
294
+ mode_switch_resolver * mode_resolver_cb , uint8_t base_phy_mode );
295
+
275
296
/**
276
297
* \brief Struct mac_api_s defines functions for two-way communications between external MAC and Upper layer.
277
298
* Application creates mac_api_t object by calling external MAC's creator function.
278
299
* Then object is passed to Upper layer which then initializes it's own callback functions.
279
300
* Then MAC is operated by Upper layer by calling MLME or MCPS primitive functions.
280
301
*/
281
302
struct mac_api_s {
282
- mac_api_initialize * mac_initialize ; /**< MAC initialize function to use */
283
- mac_api_enable_mcps_ext * mac_mcps_extension_enable ; /**< MAC MCPS IE extension enable function, optional feature */
284
- mac_api_enable_mcps_edfe_ext * mac_mcps_edfe_enable ; /**< MAC MCPS MCPS EDFE frame extension enable function, optional feature */
303
+ mac_api_initialize * mac_initialize ; /**< MAC initialize function to use */
304
+ mac_api_enable_mcps_ext * mac_mcps_extension_enable ; /**< MAC MCPS IE extension enable function, optional feature */
305
+ mac_api_enable_mcps_edfe_ext * mac_mcps_edfe_enable ; /**< MAC MCPS MCPS EDFE frame extension enable function, optional feature */
306
+ mac_api_mode_switch_resolver_ext * mac_mode_switch_resolver_set ; /**< MAC Mode switch resolver function set, optional feature */
285
307
//External MAC callbacks
286
- mlme_request * mlme_req ; /**< MAC MLME request function to use */
287
- mcps_data_request * mcps_data_req ; /**< MAC MCPS data request function to use */
288
- mcps_data_request_ext * mcps_data_req_ext ; /**< MAC MCPS data request with Information element extension function to use */
289
- mcps_purge_request * mcps_purge_req ; /**< MAC MCPS purge request function to use */
308
+ mlme_request * mlme_req ; /**< MAC MLME request function to use */
309
+ mcps_data_request * mcps_data_req ; /**< MAC MCPS data request function to use */
310
+ mcps_data_request_ext * mcps_data_req_ext ; /**< MAC MCPS data request with Information element extension function to use */
311
+ mcps_purge_request * mcps_purge_req ; /**< MAC MCPS purge request function to use */
290
312
//Upper layer callbacksMLME_ASSOCIATE
291
- mcps_data_confirm * data_conf_cb ; /**< MAC MCPS data confirm callback function */
292
- mcps_data_confirm_ext * data_conf_ext_cb ; /**< MAC MCPS data confirm with payload callback function */
293
- mcps_data_indication * data_ind_cb ; /**< MAC MCPS data indication callback function */
294
- mcps_data_indication_ext * data_ind_ext_cb ; /**< MAC MCPS data indication with IE extension's callback function */
295
- mcps_edfe_handler * edfe_ind_cb ; /**< MAC MCPS EDFE detection extension's callback function */
296
- mcps_ack_data_req_ext * enhanced_ack_data_req_cb ; /**< Enhanced ACK IE element and payload request from MAC user */
297
- mcps_purge_confirm * purge_conf_cb ; /**< MAC MCPS purge confirm callback function */
298
- mlme_confirm * mlme_conf_cb ; /**< MAC MLME confirm callback function */
299
- mlme_indication * mlme_ind_cb ; /**< MAC MLME indication callback function */
300
- mac_ext_mac64_address_set * mac64_set ; /**< MAC extension function to set mac64 address */
301
- mac_ext_mac64_address_get * mac64_get ; /**< MAC extension function to get mac64 address */
302
- mac_storage_decription_sizes_get * mac_storage_sizes_get ; /**< Getter function to query data storage sizes from MAC */
303
-
304
- int8_t parent_id ; /**< Upper layer id */
305
- uint16_t phyMTU ; /**< Maximum Transmission Unit(MTU) used by MAC*/
313
+ mcps_data_confirm * data_conf_cb ; /**< MAC MCPS data confirm callback function */
314
+ mcps_data_confirm_ext * data_conf_ext_cb ; /**< MAC MCPS data confirm with payload callback function */
315
+ mcps_data_indication * data_ind_cb ; /**< MAC MCPS data indication callback function */
316
+ mcps_data_indication_ext * data_ind_ext_cb ; /**< MAC MCPS data indication with IE extension's callback function */
317
+ mcps_edfe_handler * edfe_ind_cb ; /**< MAC MCPS EDFE detection extension's callback function */
318
+ mode_switch_resolver * mode_resolver_cb ; /**< MAC Mode switch resolver callback function */
319
+ mcps_ack_data_req_ext * enhanced_ack_data_req_cb ; /**< Enhanced ACK IE element and payload request from MAC user */
320
+ mcps_purge_confirm * purge_conf_cb ; /**< MAC MCPS purge confirm callback function */
321
+ mlme_confirm * mlme_conf_cb ; /**< MAC MLME confirm callback function */
322
+ mlme_indication * mlme_ind_cb ; /**< MAC MLME indication callback function */
323
+ mac_ext_mac64_address_set * mac64_set ; /**< MAC extension function to set mac64 address */
324
+ mac_ext_mac64_address_get * mac64_get ; /**< MAC extension function to get mac64 address */
325
+ mac_storage_decription_sizes_get * mac_storage_sizes_get ; /**< Getter function to query data storage sizes from MAC */
326
+
327
+ int8_t parent_id ; /**< Upper layer id */
328
+ uint16_t phyMTU ; /**< Maximum Transmission Unit(MTU) used by MAC*/
306
329
};
307
330
308
331
/**
0 commit comments