From 153fc3a049206330bae734d800b42eb3f643e518 Mon Sep 17 00:00:00 2001 From: Raphael Date: Sun, 29 Mar 2020 12:12:36 +0200 Subject: [PATCH] Restart ReceiveMon + Server + SendToMon ok --- .../raspberry/superviseur-robot/tasks.cpp | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/software/raspberry/superviseur-robot/tasks.cpp b/software/raspberry/superviseur-robot/tasks.cpp index e9d4f1e..64dfa74 100644 --- a/software/raspberry/superviseur-robot/tasks.cpp +++ b/software/raspberry/superviseur-robot/tasks.cpp @@ -368,15 +368,16 @@ void Tasks::ReceiveFromMonTask(void *arg) { cout << "Start " << __PRETTY_FUNCTION__ << endl << flush; + // Synchronization barrier (waiting that all tasks are starting) + rt_sem_p(&sem_barrier, TM_INFINITE); + while(1){ - // Synchronization barrier (waiting that all tasks are starting) - rt_sem_p(&sem_barrier, TM_INFINITE); - //rt_sem_p(&sem_restart,TM_INFINITE); - //Reinitialize control boolean + //Reinitialize control boolean + killReceiveFromMonOk = 0; rt_mutex_acquire(&mutex_killReceiveFromMon, TM_INFINITE); - killReceiveFromMon=0; + killReceiveFromMon = 0; rt_mutex_release(&mutex_killReceiveFromMon); /**************************************************************************************/ @@ -390,7 +391,6 @@ void Tasks::ReceiveFromMonTask(void *arg) { cout << "Rcv <= " << msgRcv->ToString() << endl << flush; if (msgRcv->CompareID(MESSAGE_MONITOR_LOST)) { - delete(msgRcv); cout << "Connection to monitor lost" << endl; rt_mutex_acquire(&mutex_killReceiveFromMon, TM_INFINITE); @@ -419,16 +419,19 @@ void Tasks::ReceiveFromMonTask(void *arg) { acquireImage=0; rt_mutex_release(&mutex_acquireImage); + //Wait every task to die sleep(1); - + + //All closes monitor.Close(); robot.Close(); //Tasks::Join(); - cout << "End sleep" << endl << flush; + //Release restarted tasks +// cout << "End sleep" << endl << flush; rt_sem_broadcast(&sem_barrier); - cout << "Mes couilles" << endl << flush; +// cout << "Mes couilles" << endl << flush; //exit(-1); @@ -518,13 +521,9 @@ void Tasks::ReceiveFromMonTask(void *arg) { //Update loop condition - cout << "J'arrive la" << endl << flush; - rt_mutex_acquire(&mutex_killReceiveFromMon, TM_INFINITE); killReceiveFromMonOk = killReceiveFromMon; rt_mutex_release(&mutex_killReceiveFromMon); - - cout << "Kill Receive From Mon Ok = " << killReceiveFromMonOk << endl << flush; } cout << "ReceiveFromMon dies" << endl << flush; @@ -642,8 +641,6 @@ void Tasks::StartRobotTaskWithWatchdog(void *arg) { int err; while(1){ - - rt_sem_p(&sem_restart, TM_INFINITE); rt_sem_p(&sem_startRobotWithWatchdog, TM_INFINITE); cout << "Start robot with watchdog (";