@@ -1045,6 +1045,15 @@ static int8_t ws_bootstrap_up(protocol_interface_info_entry_t *cur)
1045
1045
return ret_val ;
1046
1046
}
1047
1047
1048
+ static void ws_bootstrap_asynch_trickle_stop (protocol_interface_info_entry_t * cur )
1049
+ {
1050
+ cur -> ws_info -> trickle_pas_running = false;
1051
+ cur -> ws_info -> trickle_pa_running = false;
1052
+ cur -> ws_info -> trickle_pcs_running = false;
1053
+ cur -> ws_info -> trickle_pc_running = false;
1054
+ cur -> ws_info -> trickle_pc_consistency_block_period = 0 ;
1055
+ }
1056
+
1048
1057
static int8_t ws_bootstrap_down (protocol_interface_info_entry_t * cur )
1049
1058
{
1050
1059
if (!cur || !(cur -> lowpan_info & INTERFACE_NWK_ACTIVE )) {
@@ -1058,7 +1067,7 @@ static int8_t ws_bootstrap_down(protocol_interface_info_entry_t *cur)
1058
1067
ns_fhss_delete (cur -> ws_info -> fhss_api );
1059
1068
cur -> ws_info -> fhss_api = NULL ;
1060
1069
// Reset WS information
1061
- // ws_common_reset (cur)
1070
+ ws_bootstrap_asynch_trickle_stop (cur );
1062
1071
ws_llc_reset (cur );
1063
1072
if (nd_proxy_downstream_interface_unregister (cur -> id ) != 0 ) {
1064
1073
tr_warn ("nd proxy unregister failed" );
@@ -1103,11 +1112,7 @@ void ws_bootstrap_configuration_reset(protocol_interface_info_entry_t *cur)
1103
1112
1104
1113
cur -> nwk_bootstrap_state = ER_ACTIVE_SCAN ;
1105
1114
cur -> ws_info -> network_pan_id = 0xffff ;
1106
- cur -> ws_info -> trickle_pas_running = false;
1107
- cur -> ws_info -> trickle_pa_running = false;
1108
- cur -> ws_info -> trickle_pcs_running = false;
1109
- cur -> ws_info -> trickle_pc_running = false;
1110
- cur -> ws_info -> trickle_pc_consistency_block_period = 0 ;
1115
+ ws_bootstrap_asynch_trickle_stop (cur );
1111
1116
1112
1117
//cur->mac_security_key_usage_update_cb = ws_management_mac_security_key_update_cb;
1113
1118
return ;
@@ -3239,11 +3244,7 @@ static void ws_bootstrap_event_handler(arm_event_s *event)
3239
3244
blacklist_clear ();
3240
3245
3241
3246
// All trickle timers stopped to allow entry from any state
3242
- cur -> ws_info -> trickle_pa_running = false;
3243
- cur -> ws_info -> trickle_pc_running = false;
3244
- cur -> ws_info -> trickle_pas_running = false;
3245
- cur -> ws_info -> trickle_pcs_running = false;
3246
- cur -> ws_info -> trickle_pc_consistency_block_period = 0 ;
3247
+ ws_bootstrap_asynch_trickle_stop (cur );
3247
3248
3248
3249
if (cur -> bootsrap_mode == ARM_NWK_BOOTSRAP_MODE_6LoWPAN_BORDER_ROUTER ) {
3249
3250
tr_info ("Border router start network" );
@@ -3332,11 +3333,7 @@ static void ws_bootstrap_event_handler(arm_event_s *event)
3332
3333
case WS_CONFIGURATION_START :
3333
3334
tr_info ("Configuration start" );
3334
3335
// Old configuration is considered invalid stopping all
3335
- cur -> ws_info -> trickle_pa_running = false;
3336
- cur -> ws_info -> trickle_pc_running = false;
3337
- cur -> ws_info -> trickle_pas_running = false;
3338
- cur -> ws_info -> trickle_pcs_running = false;
3339
- cur -> ws_info -> trickle_pc_consistency_block_period = 0 ;
3336
+ ws_bootstrap_asynch_trickle_stop (cur );
3340
3337
3341
3338
// Build list of possible neighbours and learn first broadcast schedule
3342
3339
@@ -3345,11 +3342,7 @@ static void ws_bootstrap_event_handler(arm_event_s *event)
3345
3342
case WS_OPERATION_START :
3346
3343
tr_info ("operation start" );
3347
3344
// Advertisements stopped during the RPL scan
3348
- cur -> ws_info -> trickle_pa_running = false;
3349
- cur -> ws_info -> trickle_pc_running = false;
3350
- cur -> ws_info -> trickle_pas_running = false;
3351
- cur -> ws_info -> trickle_pcs_running = false;
3352
- cur -> ws_info -> trickle_pc_consistency_block_period = 0 ;
3345
+ ws_bootstrap_asynch_trickle_stop (cur );
3353
3346
// Activate RPL
3354
3347
// Activate IPv6 stack
3355
3348
ws_bootstrap_ip_stack_activate (cur );
@@ -3365,11 +3358,7 @@ static void ws_bootstrap_event_handler(arm_event_s *event)
3365
3358
case WS_ROUTING_READY :
3366
3359
tr_info ("Routing ready" );
3367
3360
// stopped all to make sure we can enter here from any state
3368
- cur -> ws_info -> trickle_pa_running = false;
3369
- cur -> ws_info -> trickle_pc_running = false;
3370
- cur -> ws_info -> trickle_pas_running = false;
3371
- cur -> ws_info -> trickle_pcs_running = false;
3372
- cur -> ws_info -> trickle_pc_consistency_block_period = 0 ;
3361
+ ws_bootstrap_asynch_trickle_stop (cur );
3373
3362
3374
3363
// Indicate PAE controller that bootstrap is ready
3375
3364
ws_pae_controller_bootstrap_done (cur );
@@ -3550,11 +3539,7 @@ void ws_bootstrap_state_machine(protocol_interface_info_entry_t *cur)
3550
3539
case ER_PANA_AUTH :
3551
3540
tr_info ("authentication start" );
3552
3541
// Advertisements stopped during the EAPOL
3553
- cur -> ws_info -> trickle_pa_running = false;
3554
- cur -> ws_info -> trickle_pc_running = false;
3555
- cur -> ws_info -> trickle_pas_running = false;
3556
- cur -> ws_info -> trickle_pcs_running = false;
3557
- cur -> ws_info -> trickle_pc_consistency_block_period = 0 ;
3542
+ ws_bootstrap_asynch_trickle_stop (cur );
3558
3543
ws_fhss_configure (cur , false);
3559
3544
int8_t new_default = cur -> ws_info -> weakest_received_rssi - 1 ;
3560
3545
if ((new_default < CCA_DEFAULT_DBM ) && (new_default >= CCA_LOW_LIMIT ) && (new_default <= CCA_HIGH_LIMIT )) {
0 commit comments