PSL_2021 / servomotor_MX12_Lorenzo

Dependents:   PSL_ROBOT_lorenzo robot_lorenzo recepteur_mbed_os_6

Revision:
9:b4a5187fdec6
Parent:
8:e74ef93ae660
Child:
10:ca9afe156ee1
--- a/MX12.h	Sat Nov 06 08:29:28 2021 +0000
+++ b/MX12.h	Sat Nov 06 16:15:34 2021 +0000
@@ -1,5 +1,5 @@
 /**  
- * @file MX12.h  
+ * @file MX12.h
  * @brief this header file will contain all required definitions and 
  *        basic utilities functions to manage au bus of servomotor 
  *        Dynaminel MX12
@@ -89,6 +89,8 @@
  *   returns an enumation type "Status". As several errors can be reported 
  *   simultaneously the type enum is not suitable (B. Denis 11/2021)
  *
+ * @bug
+ *
  *   _frame_pointer variable is used by _ReadCallback() ISR to store the
  *   current size for message (status packet) received from servomotor.
  *   This variable is NOT initialised and NEVER reset to zero at each new
@@ -129,18 +131,6 @@
         Ok                 ///<  no error
     };
     
-    /** State of packet parser to determine the meaning of reading byte
-     *  into the received packet (status packet) according the Dynamixel
-     *  protocol v1.0
-     */
-    enum ParsingState {
-        Header,    ///< reading the two heading bytes
-        Id,        ///< reading the servomotor ID byte
-        Length,    ///< reading byte length of the instruction
-        Data,      ///< reading parameters
-        Checksum   ///< reading one bytes checksum 
-    };
-
     /** Enumeration of states of the acces methode of the master-slave 
      *  protocol of the communication between the robot controller (master) 
      *  and the servomotors (slaves).
@@ -165,7 +155,20 @@
         unsigned char valid; /**< */
     };
 
-    /** 
+    /** State of packet parser store which section of a status packet 
+     *  (according the Dynamixel according the Dynamixel) is currently reading
+     *  from a servomotor return message.
+     */
+    enum ParsingState {
+        Header,    ///< reading the two heading bytes
+        Id,        ///< reading the servomotor ID byte
+        Length,    ///< reading byte length of the instruction
+        Data,      ///< reading parameters
+        Checksum   ///< reading one bytes checksum 
+    };
+
+    /** Complement to the ParsingState enumeration to store the reading 
+     *  progress of each section of the status packet.
      */
     struct StateContext {
         unsigned char headingCount;
@@ -193,6 +196,8 @@
      */
     void SetSpeed(unsigned char mot_id, float speed);
     
+    /**
+     */
     char IsAvailable(void);
     
     /**
@@ -245,6 +250,11 @@
      * @warning 
      *    If a combination of several errors is reported the function
      *    returns 'Unknown' (B. Denis 11/2021)
+     *
+     * @bug
+     *    This method has a hazardous behavior because it provides a result by 
+     *    reading the content of the variable _current_frame which can be 
+     *    modified at any time by the private ISR _ReadCallback()  
      */
     MX12::Status GetStatus(void);
 
@@ -253,11 +263,11 @@
     // MX12::Status GetStatus(void);
     // void ReadPosition(unsigned char mot_id);
     // float GetPosition(unsigned char mot_id);
-    int get_counter();
-
                 
     private:
     
+    /*
+     */
     UnbufferedSerial _mx12;
     MX12::ParsingState _pstate;
     MX12::SerialState _sstate;
@@ -284,9 +294,7 @@
      *  @warning
      */
     unsigned char _frame_pointer;
-    
-    volatile int _BDcount;
-            
+                
     /** Interupt service routine (ISR) to read and parse the response message
      *  comming from servomotor on UART (serial port). This routine is called 
      *  when each character is received on the servomotor bus. 
@@ -297,8 +305,6 @@
      */
     void _ReadCallback();
     
-    void _Rx_BD_interrupt();
-
 };
 
 #endif /* MBED_MX12_H_ */
\ No newline at end of file