From fa49aeaa578feb48c0ea483ce79624c20543f712 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sergi=20Hern=C3=A1ndez?= <shernand@iri.upc.edu>
Date: Sat, 30 Jul 2016 17:36:11 +0200
Subject: [PATCH] Chnaged the baudrate of all examples to 1000000bps. Added the
 current step to the action interface.

---
 src/CMakeLists.txt                   |  4 +++-
 src/darwin_robot.cpp                 | 14 ++++++++++++++
 src/darwin_robot.h                   |  1 +
 src/examples/darwin_action_test.cpp  |  2 +-
 src/examples/darwin_adc_test.cpp     |  2 +-
 src/examples/darwin_gpio_test.cpp    |  2 +-
 src/examples/darwin_imu_test.cpp     |  2 +-
 src/examples/darwin_manager_test.cpp |  2 +-
 src/examples/darwin_walking_test.cpp |  2 +-
 9 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index dffe470..8e1d04e 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,4 +1,4 @@
-SET(DARWIN_FW_PATH /home/shernand/humanoids/darwin_stm32_fw)
+SET(DARWIN_FW_PATH ~/humanoids/darwin_stm32_fw)
 
 ADD_SUBDIRECTORY(xml)
 IF(HAVE_XSD)
@@ -56,6 +56,8 @@ INSTALL(TARGETS darwin_robot
         LIBRARY DESTINATION lib/iridrivers
         ARCHIVE DESTINATION lib/iridrivers)
 INSTALL(FILES ${robot_headers} DESTINATION include/iridrivers)
+INSTALL(FILES ${DARWIN_FW_PATH}/include/darwin_registers.h DESTINATION include/iridrivers)
+INSTALL(FILES ${DARWIN_FW_PATH}/include/action_id.h DESTINATION include/iridrivers)
 IF(KDL_FOUND)
   INSTALL(FILES ${kin_heders} DESTINATION include/iridrivers)
   INSTALL(TARGETS darwin_arm_kinematics
diff --git a/src/darwin_robot.cpp b/src/darwin_robot.cpp
index 7f0c587..a2bcbec 100644
--- a/src/darwin_robot.cpp
+++ b/src/darwin_robot.cpp
@@ -855,6 +855,20 @@ unsigned char CDarwinRobot::action_get_current_page(void)
     throw CDarwinRobotException(_HERE_,"Invalid robot device");
 }
 
+unsigned char CDarwinRobot::action_get_current_step(void)
+{
+  unsigned char step_id;
+
+  if(this->robot_device!=NULL)
+  {
+    this->robot_device->read_byte_register(DARWIN_ACTION_CNTRL,&step_id);
+
+    return (step_id>>5);
+  }
+  else
+    throw CDarwinRobotException(_HERE_,"Invalid robot device");
+}
+
 void CDarwinRobot::action_start(void)
 {
   if(this->robot_device!=NULL)
diff --git a/src/darwin_robot.h b/src/darwin_robot.h
index 116487e..7e08847 100644
--- a/src/darwin_robot.h
+++ b/src/darwin_robot.h
@@ -109,6 +109,7 @@ class CDarwinRobot
     // motion action interface
     void action_load_page(unsigned char page_id);
     unsigned char action_get_current_page(void);
+    unsigned char action_get_current_step(void);
     void action_start(void);
     void action_stop(void);
     bool action_is_page_running(void);
diff --git a/src/examples/darwin_action_test.cpp b/src/examples/darwin_action_test.cpp
index f9a6e31..7afacc4 100644
--- a/src/examples/darwin_action_test.cpp
+++ b/src/examples/darwin_action_test.cpp
@@ -12,7 +12,7 @@ int main(int argc, char *argv[])
   int i=0,num_servos;
 
   try{
-    CDarwinRobot darwin("Darwin",robot_device,926100,0x02);
+    CDarwinRobot darwin("Darwin",robot_device,1000000,0x02);
 
     num_servos=darwin.mm_get_num_servos();
     std::cout << "Found " << num_servos << " servos " << std::endl;
diff --git a/src/examples/darwin_adc_test.cpp b/src/examples/darwin_adc_test.cpp
index 08f2c3a..7548ce3 100644
--- a/src/examples/darwin_adc_test.cpp
+++ b/src/examples/darwin_adc_test.cpp
@@ -11,7 +11,7 @@ int main(int argc, char *argv[])
   int i=0;
 
   try{
-    CDarwinRobot darwin("Darwin",robot_device,926100,0x02);
+    CDarwinRobot darwin("Darwin",robot_device,1000000,0x02);
     std::cout << "found darwin controller" << std::endl;
     darwin.adc_start();
     for(i=0;i<50;i++)
diff --git a/src/examples/darwin_gpio_test.cpp b/src/examples/darwin_gpio_test.cpp
index d033073..85d6c6d 100644
--- a/src/examples/darwin_gpio_test.cpp
+++ b/src/examples/darwin_gpio_test.cpp
@@ -9,7 +9,7 @@ std::string robot_device="A4008atn";
 int main(int argc, char *argv[])
 {
   try{
-    CDarwinRobot darwin("Darwin",robot_device,926100,0x02);
+    CDarwinRobot darwin("Darwin",robot_device,1000000,0x02);
     std::cout << "found darwin controller" << std::endl;
     darwin.gpio_blink_led(LED_TX,1000);
     darwin.gpio_blink_led(LED_RX,2000);
diff --git a/src/examples/darwin_imu_test.cpp b/src/examples/darwin_imu_test.cpp
index 6cc915e..c48e3b4 100644
--- a/src/examples/darwin_imu_test.cpp
+++ b/src/examples/darwin_imu_test.cpp
@@ -12,7 +12,7 @@ int main(int argc, char *argv[])
   double accel_x,accel_y,accel_z;
 
   try{
-    CDarwinRobot darwin("Darwin",robot_device,926100,0x02);
+    CDarwinRobot darwin("Darwin",robot_device,1000000,0x02);
     std::cout << "found darwin controller" << std::endl;
     std::cout << "Number of calibration samples: " << darwin.imu_get_cal_samples() << std::endl;
     darwin.imu_start();
diff --git a/src/examples/darwin_manager_test.cpp b/src/examples/darwin_manager_test.cpp
index ca2edb8..7b3fd22 100644
--- a/src/examples/darwin_manager_test.cpp
+++ b/src/examples/darwin_manager_test.cpp
@@ -14,7 +14,7 @@ int main(int argc, char *argv[])
   std::vector<double> angles,speeds,accels,offsets;
 
   try{
-    CDarwinRobot darwin("Darwin",robot_device,926100,0x02);
+    CDarwinRobot darwin("Darwin",robot_device,1000000,0x02);
     darwin.mm_load_config(config_file);
     num_servos=darwin.mm_get_num_servos();
     std::cout << "Found " << num_servos << " servos" << std::endl;
diff --git a/src/examples/darwin_walking_test.cpp b/src/examples/darwin_walking_test.cpp
index 23faa18..5f474f4 100644
--- a/src/examples/darwin_walking_test.cpp
+++ b/src/examples/darwin_walking_test.cpp
@@ -13,7 +13,7 @@ int main(int argc, char *argv[])
   std::vector<double> angles;
 
   try{
-    CDarwinRobot darwin("Darwin",robot_device,926100,0x02);
+    CDarwinRobot darwin("Darwin",robot_device,1000000,0x02);
     num_servos=darwin.mm_get_num_servos();
     std::cout << "Found " << num_servos << " servos" << std::endl;
     // enable all servos and assign them to the action module
-- 
GitLab