diff --git a/src/dynamixelserver.cpp b/src/dynamixelserver.cpp index 7f503a10a73d4bb1a9919ad6fd4177a318984a12..822a9c06b33e73788476d795a7b02d5e71341fca 100644 --- a/src/dynamixelserver.cpp +++ b/src/dynamixelserver.cpp @@ -584,7 +584,8 @@ void *CDynamixelServer::scan_thread(void *param) dyn_server->dynamixel_access.enter(); dyn_server->state=dyn_created; dyn_server->scan_error="communication device not initialized"; - dyn_server->event_server->set_event(dyn_server->scan_error_event_id); + if(!dyn_server->event_server->event_is_set(dyn_server->scan_error_event_id)) + dyn_server->event_server->set_event(dyn_server->scan_error_event_id); dyn_server->dynamixel_access.exit(); pthread_exit(NULL); } @@ -596,6 +597,8 @@ void *CDynamixelServer::scan_thread(void *param) if(dyn_server->event_server->event_is_set(dyn_server->stop_scan_event_id)) { dyn_server->event_server->reset_event(dyn_server->stop_scan_event_id); + if(!dyn_server->event_server->event_is_set(dyn_server->scan_done_event_id)) + dyn_server->event_server->set_event(dyn_server->scan_done_event_id); dyn_server->devices_v1.clear(); dyn_server->devices_v2.clear(); pthread_exit(NULL); @@ -632,14 +635,16 @@ void *CDynamixelServer::scan_thread(void *param) dyn_server->devices_v2.clear(); dyn_server->state=dyn_created; dyn_server->scan_error=e.what(); - dyn_server->event_server->set_event(dyn_server->scan_error_event_id); + if(!dyn_server->event_server->event_is_set(dyn_server->scan_error_event_id)) + dyn_server->event_server->set_event(dyn_server->scan_error_event_id); dyn_server->dynamixel_access.exit(); pthread_exit(NULL); } } dyn_server->dynamixel_access.enter(); dyn_server->state=dyn_scan_done; - dyn_server->event_server->set_event(dyn_server->scan_done_event_id); + if(!dyn_server->event_server->event_is_set(dyn_server->scan_done_event_id)) + dyn_server->event_server->set_event(dyn_server->scan_done_event_id); dyn_server->dynamixel_access.exit(); pthread_exit(NULL); }