@@ -67,9 +67,8 @@ fhss_structure_t *fhss_ws_enable(fhss_api_t *fhss_api, const fhss_ws_configurati
67
67
68
68
static void fhss_ws_update_bc_channel (fhss_structure_t * fhss_structure )
69
69
{
70
- uint8_t mac_address [8 ];
71
70
int32_t next_channel ;
72
- fhss_structure -> callbacks . read_mac_address ( fhss_structure -> fhss_api , mac_address );
71
+
73
72
if (fhss_structure -> ws -> fhss_configuration .ws_channel_function == WS_FIXED_CHANNEL ) {
74
73
75
74
} else if (fhss_structure -> ws -> fhss_configuration .ws_channel_function == WS_TR51CF ) {
@@ -81,7 +80,9 @@ static void fhss_ws_update_bc_channel(fhss_structure_t *fhss_structure)
81
80
next_channel = dh1cf_get_bc_channel_index (fhss_structure -> ws -> bc_slot , fhss_structure -> ws -> fhss_configuration .bsi , fhss_structure -> number_of_channels );
82
81
fhss_structure -> ws -> bc_slot ++ ;
83
82
} else if (fhss_structure -> ws -> fhss_configuration .ws_channel_function == WS_VENDOR_DEF_CF ) {
84
- //TODO: Callback to get channel schedule from application
83
+ if (fhss_structure -> ws -> fhss_configuration .vendor_defined_cf ) {
84
+ next_channel = fhss_structure -> ws -> fhss_configuration .vendor_defined_cf (fhss_structure -> fhss_api , fhss_structure -> ws -> bc_slot , NULL , fhss_structure -> ws -> fhss_configuration .bsi , fhss_structure -> number_of_channels );
85
+ }
85
86
}
86
87
#ifdef FHSS_CHANNEL_DEBUG
87
88
tr_info ("%" PRIu32 " BC %u %u" , fhss_structure -> platform_functions .fhss_get_timestamp (fhss_structure -> fhss_api ), next_channel , fhss_structure -> ws -> bc_slot );
@@ -200,7 +201,9 @@ static void fhss_ws_update_uc_channel_callback(fhss_structure_t *fhss_structure)
200
201
next_channel = fhss_structure -> rx_channel = dh1cf_get_uc_channel_index (fhss_structure -> ws -> uc_slot , mac_address , fhss_structure -> number_of_channels );
201
202
fhss_structure -> ws -> uc_slot ++ ;
202
203
} else if (fhss_structure -> ws -> fhss_configuration .ws_channel_function == WS_VENDOR_DEF_CF ) {
203
- //TODO: Callback to get channel schedule from application
204
+ if (fhss_structure -> ws -> fhss_configuration .vendor_defined_cf ) {
205
+ next_channel = fhss_structure -> rx_channel = fhss_structure -> ws -> fhss_configuration .vendor_defined_cf (fhss_structure -> fhss_api , fhss_structure -> ws -> bc_slot , mac_address , fhss_structure -> ws -> fhss_configuration .bsi , fhss_structure -> number_of_channels );
206
+ }
204
207
}
205
208
// Do not switch unicast channel when broadcast channel is active.
206
209
if (fhss_structure -> ws -> is_on_bc_channel == true) {
@@ -235,7 +238,9 @@ static int fhss_ws_tx_handle_callback(const fhss_api_t *api, bool is_broadcast_a
235
238
} else if (fhss_structure -> ws -> fhss_configuration .ws_channel_function == WS_DH1CF ) {
236
239
tx_channel = dh1cf_get_uc_channel_index (destination_slot , destination_address , fhss_structure -> number_of_channels );
237
240
} else if (fhss_structure -> ws -> fhss_configuration .ws_channel_function == WS_VENDOR_DEF_CF ) {
238
-
241
+ if (fhss_structure -> ws -> fhss_configuration .vendor_defined_cf ) {
242
+ tx_channel = fhss_structure -> ws -> fhss_configuration .vendor_defined_cf (fhss_structure -> fhss_api , fhss_structure -> ws -> bc_slot , destination_address , fhss_structure -> ws -> fhss_configuration .bsi , fhss_structure -> number_of_channels );
243
+ }
239
244
}
240
245
#ifdef FHSS_CHANNEL_DEBUG
241
246
tr_debug ("TX channel: %u %u" , tx_channel , destination_slot + 1 );
0 commit comments