Restart ReceiveMon + Server + SendToMon ok

This commit is contained in:
Raphael Benistant 2020-03-29 12:12:36 +02:00
parent e912211b00
commit 153fc3a049

View file

@ -368,15 +368,16 @@ void Tasks::ReceiveFromMonTask(void *arg) {
cout << "Start " << __PRETTY_FUNCTION__ << endl << flush; cout << "Start " << __PRETTY_FUNCTION__ << endl << flush;
while(1){ // Synchronization barrier (waiting that all tasks are starting)
// Synchronization barrier (waiting that all tasks are starting) rt_sem_p(&sem_barrier, TM_INFINITE);
rt_sem_p(&sem_barrier, TM_INFINITE);
while(1){
//rt_sem_p(&sem_restart,TM_INFINITE); //rt_sem_p(&sem_restart,TM_INFINITE);
//Reinitialize control boolean //Reinitialize control boolean
killReceiveFromMonOk = 0;
rt_mutex_acquire(&mutex_killReceiveFromMon, TM_INFINITE); rt_mutex_acquire(&mutex_killReceiveFromMon, TM_INFINITE);
killReceiveFromMon=0; killReceiveFromMon = 0;
rt_mutex_release(&mutex_killReceiveFromMon); rt_mutex_release(&mutex_killReceiveFromMon);
/**************************************************************************************/ /**************************************************************************************/
@ -390,7 +391,6 @@ void Tasks::ReceiveFromMonTask(void *arg) {
cout << "Rcv <= " << msgRcv->ToString() << endl << flush; cout << "Rcv <= " << msgRcv->ToString() << endl << flush;
if (msgRcv->CompareID(MESSAGE_MONITOR_LOST)) { if (msgRcv->CompareID(MESSAGE_MONITOR_LOST)) {
delete(msgRcv);
cout << "Connection to monitor lost" << endl; cout << "Connection to monitor lost" << endl;
rt_mutex_acquire(&mutex_killReceiveFromMon, TM_INFINITE); rt_mutex_acquire(&mutex_killReceiveFromMon, TM_INFINITE);
@ -419,16 +419,19 @@ void Tasks::ReceiveFromMonTask(void *arg) {
acquireImage=0; acquireImage=0;
rt_mutex_release(&mutex_acquireImage); rt_mutex_release(&mutex_acquireImage);
//Wait every task to die
sleep(1); sleep(1);
//All closes
monitor.Close(); monitor.Close();
robot.Close(); robot.Close();
//Tasks::Join(); //Tasks::Join();
cout << "End sleep" << endl << flush; //Release restarted tasks
// cout << "End sleep" << endl << flush;
rt_sem_broadcast(&sem_barrier); rt_sem_broadcast(&sem_barrier);
cout << "Mes couilles" << endl << flush; // cout << "Mes couilles" << endl << flush;
//exit(-1); //exit(-1);
@ -518,13 +521,9 @@ void Tasks::ReceiveFromMonTask(void *arg) {
//Update loop condition //Update loop condition
cout << "J'arrive la" << endl << flush;
rt_mutex_acquire(&mutex_killReceiveFromMon, TM_INFINITE); rt_mutex_acquire(&mutex_killReceiveFromMon, TM_INFINITE);
killReceiveFromMonOk = killReceiveFromMon; killReceiveFromMonOk = killReceiveFromMon;
rt_mutex_release(&mutex_killReceiveFromMon); rt_mutex_release(&mutex_killReceiveFromMon);
cout << "Kill Receive From Mon Ok = " << killReceiveFromMonOk << endl << flush;
} }
cout << "ReceiveFromMon dies" << endl << flush; cout << "ReceiveFromMon dies" << endl << flush;
@ -643,8 +642,6 @@ void Tasks::StartRobotTaskWithWatchdog(void *arg) {
while(1){ while(1){
rt_sem_p(&sem_restart, TM_INFINITE);
rt_sem_p(&sem_startRobotWithWatchdog, TM_INFINITE); rt_sem_p(&sem_startRobotWithWatchdog, TM_INFINITE);
cout << "Start robot with watchdog ("; cout << "Start robot with watchdog (";
rt_mutex_acquire(&mutex_robot, TM_INFINITE); rt_mutex_acquire(&mutex_robot, TM_INFINITE);