@@ -423,8 +423,7 @@ static void ws_bootstrap_llc_hopping_update(struct protocol_interface_info_entry
423
423
static int8_t ws_fhss_initialize (protocol_interface_info_entry_t * cur )
424
424
{
425
425
fhss_api_t * fhss_api = ns_sw_mac_get_fhss_api (cur -> mac_api );
426
-
427
- if (!fhss_api || (fhss_api && cur -> ws_info -> fhss_owner )) {
426
+ if (!fhss_api ) {
428
427
// When FHSS doesn't exist yet, create one
429
428
fhss_ws_configuration_t fhss_configuration ;
430
429
memset (& fhss_configuration , 0 , sizeof (fhss_ws_configuration_t ));
@@ -440,26 +439,11 @@ static int8_t ws_fhss_initialize(protocol_interface_info_entry_t *cur)
440
439
fhss_configuration .ws_bc_channel_function = (fhss_ws_channel_functions )cur -> ws_info -> fhss_bc_channel_function ;
441
440
fhss_configuration .fhss_bc_dwell_interval = cur -> ws_info -> fhss_bc_dwell_interval ;
442
441
fhss_configuration .fhss_broadcast_interval = cur -> ws_info -> fhss_bc_interval ;
443
-
442
+ fhss_api = ns_fhss_ws_create ( & fhss_configuration , cur -> ws_info -> fhss_timer_ptr );
444
443
if (!fhss_api ) {
445
- fhss_api = ns_fhss_ws_create (& fhss_configuration , cur -> ws_info -> fhss_timer_ptr );
446
- if (!fhss_api ) {
447
- tr_error ("fhss create failed" );
448
- return -1 ;
449
- }
450
- ns_sw_mac_fhss_register (cur -> mac_api , fhss_api );
451
- cur -> ws_info -> fhss_owner = true;
452
- } else {
453
- //Configuration set
454
- ns_fhss_ws_configuration_set (cur -> ws_info -> fhss_api , & fhss_configuration );
455
-
456
- if (cur -> bootsrap_mode == ARM_NWK_BOOTSRAP_MODE_6LoWPAN_BORDER_ROUTER ) {
457
- ns_fhss_ws_set_hop_count (cur -> ws_info -> fhss_api , 0 );
458
- } else {
459
- //Clear OWN HOP
460
- ns_fhss_ws_set_hop_count (cur -> ws_info -> fhss_api , 0xff );
461
- }
444
+ return -1 ;
462
445
}
446
+ ns_sw_mac_fhss_register (cur -> mac_api , fhss_api );
463
447
} else {
464
448
// Read defaults from the configuration to help FHSS testing
465
449
const fhss_ws_configuration_t * fhss_configuration = ns_fhss_ws_configuration_get (fhss_api );
@@ -810,6 +794,9 @@ static int8_t ws_bootstrap_down(protocol_interface_info_entry_t *cur)
810
794
tr_info ("Wi-SUN ifdown" );
811
795
// Reset MAC for safe upper layer memory free
812
796
protocol_mac_reset (cur );
797
+ ns_sw_mac_fhss_unregister (cur -> mac_api );
798
+ ns_fhss_delete (cur -> ws_info -> fhss_api );
799
+ cur -> ws_info -> fhss_api = NULL ;
813
800
// Reset WS information
814
801
// ws_common_reset(cur)
815
802
ws_llc_reset (cur );
0 commit comments