From 0fe60d7f5f98d6fe17613a1cb436bd912ad5b0ca Mon Sep 17 00:00:00 2001
From: Sergi Hernandez Juan <shernand@iri.upc.edu>
Date: Wed, 15 Apr 2020 19:36:54 +0200
Subject: [PATCH] Solved a bug in the main motion manager loop: The
 post_process functions were never called.

---
 dynamixel_manager/src/dyn_manager.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/dynamixel_manager/src/dyn_manager.c b/dynamixel_manager/src/dyn_manager.c
index 99d42c5..65acbd4 100644
--- a/dynamixel_manager/src/dyn_manager.c
+++ b/dynamixel_manager/src/dyn_manager.c
@@ -361,12 +361,12 @@ void dyn_manager_start(TDynManager *manager)
 {
   scheduler_enable_channel(manager->scheduler,manager->sch_loop_ch);
   manager->running=0x01;
+  manager->stop_flag=0x00;
   manager->memory->data[manager->ram_base_address+DYN_MANAGER_CONTROL_OFFSET]|=DYN_MANAGER_RUNNING;
 }
 
 void dyn_manager_stop(TDynManager *manager)
 {
-  scheduler_disable_channel(manager->scheduler,manager->sch_loop_ch);
   manager->stop_flag=0x01;
 }
 
@@ -1101,7 +1101,7 @@ void dyn_manager_loop(TDynManager *manager)
 
   // initialize the remaining operations
   dyn_manager_lock(manager);
-  for(i=0;i<manager->num_masters;i++)
+  for(i=0;i<DYN_MANAGER_MAX_NUM_MASTERS;i++)
   {
     states[i]=start_single_ops;
     current_single_op[i]=0;
@@ -1119,7 +1119,6 @@ void dyn_manager_loop(TDynManager *manager)
       {
         if(manager->modules[i]->pre_process!=0x00000000)
           manager->modules[i]->pre_process(manager->modules[i]->data);
-        manager->modules_period_count[i]=0;
       }
     }
   }
@@ -1275,5 +1274,6 @@ void dyn_manager_loop(TDynManager *manager)
     manager->running=0x00;
     manager->memory->data[manager->ram_base_address+DYN_MANAGER_CONTROL_OFFSET]&=(~DYN_MANAGER_RUNNING);
     manager->stop_flag=0x00;
+    scheduler_disable_channel(manager->scheduler,manager->sch_loop_ch);
   }
 }
-- 
GitLab