Skip to content

Commit 68f5739

Browse files
author
Mika Leppänen
committed
Corrected 6lowpan tasklet during interface disconnect/connect
Removed main tasklet ID and used instead tasklet id. Added check for valid interface ID to network scan timer start so that it is not triggered after disconnect. Added small delay to re-connect so that stack has time to send its status events to application after disconnect.
1 parent a24cecf commit 68f5739

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

features/nanostack/mbed-mesh-api/source/nd_tasklet.c

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ typedef struct {
6464
net_6lowpan_mode_e mode;
6565
net_6lowpan_link_layer_sec_mode_e sec_mode;
6666
net_link_layer_psk_security_info_s psk_sec_info;
67-
int8_t node_main_tasklet_id;
6867
int8_t network_interface_id;
6968
int8_t tasklet;
7069
} tasklet_data_str_t;
@@ -133,13 +132,12 @@ void nd_tasklet_main(arm_event_s *event)
133132
* The event is delivered when the NanoStack OS is running fine.
134133
* This event should be delivered ONLY ONCE.
135134
*/
136-
tasklet_data_ptr->node_main_tasklet_id = event->receiver;
137135
mesh_system_send_connect_event(tasklet_data_ptr->tasklet);
138136
break;
139137

140138
case ARM_LIB_SYSTEM_TIMER_EVENT:
141139
eventOS_event_timer_cancel(event->event_id,
142-
tasklet_data_ptr->node_main_tasklet_id);
140+
tasklet_data_ptr->tasklet);
143141

144142
if (event->event_id == TIMER_EVENT_START_BOOTSTRAP) {
145143
tr_debug("Restart bootstrap");
@@ -215,12 +213,14 @@ void nd_tasklet_parse_network_event(arm_event_s *event)
215213
break;
216214
}
217215

218-
if (tasklet_data_ptr->tasklet_state != TASKLET_STATE_BOOTSTRAP_READY) {
216+
if (tasklet_data_ptr->tasklet_state != TASKLET_STATE_BOOTSTRAP_READY &&
217+
tasklet_data_ptr->network_interface_id != INVALID_INTERFACE_ID) {
219218
// Set 5s timer for new network scan
220219
eventOS_event_timer_request(TIMER_EVENT_START_BOOTSTRAP,
221220
ARM_LIB_SYSTEM_TIMER_EVENT,
222-
tasklet_data_ptr->node_main_tasklet_id,
221+
tasklet_data_ptr->tasklet,
223222
5000);
223+
224224
}
225225
}
226226

@@ -386,7 +386,10 @@ int8_t nd_tasklet_connect(mesh_interface_cb callback, int8_t nwk_interface_id)
386386
}
387387
} else {
388388
tasklet_data_ptr->tasklet = tasklet_id;
389-
mesh_system_send_connect_event(tasklet_data_ptr->tasklet);
389+
eventOS_event_timer_request(TIMER_EVENT_START_BOOTSTRAP,
390+
ARM_LIB_SYSTEM_TIMER_EVENT,
391+
tasklet_data_ptr->tasklet,
392+
500);
390393
}
391394

392395
return tasklet_data_ptr->tasklet;

0 commit comments

Comments
 (0)