Skip to content

Commit 02ec23f

Browse files
author
Juha Heiskanen
committed
Timed parent selection is now imim-imin*2 earlier there was just 5 seconds randomize.
1 parent 3b2d906 commit 02ec23f

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

source/6LoWPAN/ws/ws_bootstrap.c

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1347,14 +1347,15 @@ static void ws_bootstrap_pan_advertisement_solicit_analyse(struct protocol_inter
13471347
* a PAN Advertisement Solicit with NETNAME-IE / Network Name matching that configured on the receiving node.
13481348
*/
13491349
trickle_consistent_heard(&cur->ws_info->trickle_pan_advertisement_solicit);
1350-
13511350
/*
13521351
* Optimized PAN discovery to select faster the parent if we hear solicit from someone else
13531352
*/
13541353

1355-
if (ws_bootstrap_state_discovery(cur) &&
1356-
cur->bootsrap_state_machine_cnt > cur->ws_info->trickle_params_pan_discovery.Imin + 50) {
1357-
cur->bootsrap_state_machine_cnt = cur->ws_info->trickle_params_pan_discovery.Imin + randLIB_get_8bit() % 50;
1354+
if (ws_bootstrap_state_discovery(cur) && cur->ws_info->cfg->gen.network_size <= NETWORK_SIZE_MEDIUM &&
1355+
cur->bootsrap_state_machine_cnt > cur->ws_info->trickle_params_pan_discovery.Imin * 2) {
1356+
1357+
cur->bootsrap_state_machine_cnt = cur->ws_info->trickle_params_pan_discovery.Imin + randLIB_get_random_in_range(0, cur->ws_info->trickle_params_pan_discovery.Imin);
1358+
13581359
tr_info("Making parent selection in %u s", (cur->bootsrap_state_machine_cnt / 10));
13591360
}
13601361
}
@@ -2638,7 +2639,7 @@ static void ws_bootstrap_start_discovery(protocol_interface_info_entry_t *cur)
26382639
}
26392640

26402641
// Discovery statemachine is checkked after we have sent the Solicit
2641-
uint16_t time_to_solicit = 0;
2642+
uint32_t time_to_solicit = 0;
26422643
if (cur->ws_info->trickle_pan_advertisement_solicit.t > cur->ws_info->trickle_pan_advertisement_solicit.now) {
26432644
time_to_solicit = cur->ws_info->trickle_pan_advertisement_solicit.t - cur->ws_info->trickle_pan_advertisement_solicit.now;
26442645
}
@@ -2647,7 +2648,13 @@ static void ws_bootstrap_start_discovery(protocol_interface_info_entry_t *cur)
26472648
cur->ws_info->trickle_params_pan_discovery.Imin, cur->ws_info->trickle_params_pan_discovery.Imax, cur->ws_info->trickle_params_pan_discovery.TimerExpirations, cur->ws_info->trickle_params_pan_discovery.k,
26482649
cur->ws_info->trickle_pan_advertisement_solicit.I, cur->ws_info->trickle_pan_advertisement_solicit.t, cur->ws_info->trickle_pan_advertisement_solicit.now, cur->ws_info->trickle_pan_advertisement_solicit.c);
26492650

2650-
cur->bootsrap_state_machine_cnt = time_to_solicit + cur->ws_info->trickle_params_pan_discovery.Imin + randLIB_get_8bit() % 50;
2651+
time_to_solicit += cur->ws_info->trickle_params_pan_discovery.Imin + randLIB_get_random_in_range(0, cur->ws_info->trickle_params_pan_discovery.Imin);
2652+
2653+
if (time_to_solicit > 0xffff) {
2654+
time_to_solicit = 0xffff;
2655+
}
2656+
cur->bootsrap_state_machine_cnt = time_to_solicit;
2657+
26512658
tr_info("Making parent selection in %u s", (cur->bootsrap_state_machine_cnt / 10));
26522659
}
26532660

@@ -3217,7 +3224,12 @@ void ws_bootstrap_network_scan_process(protocol_interface_info_entry_t *cur)
32173224
// randomize new channel and start MAC
32183225
ws_bootstrap_fhss_activate(cur);
32193226
// Next check will be after one trickle
3220-
cur->bootsrap_state_machine_cnt += cur->ws_info->trickle_params_pan_discovery.Imin + randLIB_get_8bit() % 50;
3227+
uint32_t random_start = cur->ws_info->trickle_params_pan_discovery.Imin + randLIB_get_random_in_range(0, cur->ws_info->trickle_params_pan_discovery.Imin);
3228+
if (random_start > 0xffff) {
3229+
random_start = 0xffff;
3230+
}
3231+
cur->bootsrap_state_machine_cnt = random_start;
3232+
32213233
tr_info("Making parent selection in %u s", (cur->bootsrap_state_machine_cnt / 10));
32223234
return;
32233235
}

0 commit comments

Comments
 (0)