- sync with dynamixel sdk (print comm result & rx packet error function added)
This commit is contained in:
		| @@ -9,6 +9,7 @@ | ||||
| #define DYNAMIXEL_SDK_INCLUDE_DYNAMIXEL_SDK_PACKETHANDLER_H_ | ||||
|  | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <vector> | ||||
| #include "RobotisDef.h" | ||||
| #include "PortHandler.h" | ||||
| @@ -65,6 +66,9 @@ public: | ||||
|  | ||||
|     virtual float   GetProtocolVersion() = 0; | ||||
|  | ||||
|     virtual void    PrintTxRxResult(int result) = 0; | ||||
|     virtual void    PrintRxPacketError(UINT8_T error) = 0; | ||||
|  | ||||
|     virtual int TxPacket        (PortHandler *port, UINT8_T *txpacket) = 0; | ||||
|     virtual int RxPacket        (PortHandler *port, UINT8_T *rxpacket) = 0; | ||||
|     virtual int TxRxPacket      (PortHandler *port, UINT8_T *txpacket, UINT8_T *rxpacket, UINT8_T *error = 0) = 0; | ||||
|   | ||||
| @@ -28,6 +28,9 @@ public: | ||||
|  | ||||
|     float   GetProtocolVersion() { return 1.0; } | ||||
|  | ||||
|     void    PrintTxRxResult(int result); | ||||
|     void    PrintRxPacketError(UINT8_T error); | ||||
|  | ||||
|     int TxPacket        (PortHandler *port, UINT8_T *txpacket); | ||||
|     int RxPacket        (PortHandler *port, UINT8_T *rxpacket); | ||||
|     int TxRxPacket      (PortHandler *port, UINT8_T *txpacket, UINT8_T *rxpacket, UINT8_T *error = 0); | ||||
|   | ||||
| @@ -32,6 +32,9 @@ public: | ||||
|  | ||||
|     float   GetProtocolVersion() { return 2.0; } | ||||
|  | ||||
|     void    PrintTxRxResult(int result); | ||||
|     void    PrintRxPacketError(UINT8_T error); | ||||
|  | ||||
|     int TxPacket        (PortHandler *port, UINT8_T *txpacket); | ||||
|     int RxPacket        (PortHandler *port, UINT8_T *rxpacket); | ||||
|     int TxRxPacket      (PortHandler *port, UINT8_T *txpacket, UINT8_T *rxpacket, UINT8_T *error = 0); | ||||
|   | ||||
| @@ -123,6 +123,7 @@ int GroupBulkRead::RxPacket() | ||||
|     { | ||||
|         UINT8_T _id = id_list_[_i]; | ||||
|  | ||||
|         port_->SetPacketTimeout((UINT16_T)(length_list_[_id] + 11)); | ||||
|         _result = ph_->ReadRx(port_, length_list_[_id], data_list_[_id]); | ||||
|         if(_result != COMM_SUCCESS) | ||||
|         { | ||||
|   | ||||
| @@ -36,6 +36,75 @@ Protocol1PacketHandler *Protocol1PacketHandler::unique_instance_ = new Protocol1 | ||||
|  | ||||
| Protocol1PacketHandler::Protocol1PacketHandler() { } | ||||
|  | ||||
| void Protocol1PacketHandler::PrintTxRxResult(int result) | ||||
| { | ||||
|     switch(result) | ||||
|     { | ||||
|     case COMM_SUCCESS: | ||||
|         printf("[TxRxResult] Communication success.\n"); | ||||
|         break; | ||||
|  | ||||
|     case COMM_PORT_BUSY: | ||||
|         printf("[TxRxResult] Port is in use!\n"); | ||||
|         break; | ||||
|  | ||||
|     case COMM_TX_FAIL: | ||||
|         printf("[TxRxResult] Failed transmit instruction packet!\n"); | ||||
|         break; | ||||
|  | ||||
|     case COMM_RX_FAIL: | ||||
|         printf("[TxRxResult] Failed get status packet from device!\n"); | ||||
|         break; | ||||
|  | ||||
|     case COMM_TX_ERROR: | ||||
|         printf("[TxRxResult] Incorrect instruction packet!\n"); | ||||
|         break; | ||||
|  | ||||
|     case COMM_RX_WAITING: | ||||
|         printf("[TxRxResult] Now recieving status packet!\n"); | ||||
|         break; | ||||
|  | ||||
|     case COMM_RX_TIMEOUT: | ||||
|         printf("[TxRxResult] There is no status packet!\n"); | ||||
|         break; | ||||
|  | ||||
|     case COMM_RX_CORRUPT: | ||||
|         printf("[TxRxResult] Incorrect status packet!\n"); | ||||
|         break; | ||||
|  | ||||
|     case COMM_NOT_AVAILABLE: | ||||
|         printf("[TxRxResult] Protocol does not support This function!\n"); | ||||
|         break; | ||||
|  | ||||
|     default: | ||||
|         break; | ||||
|     } | ||||
| } | ||||
|  | ||||
| void Protocol1PacketHandler::PrintRxPacketError(UINT8_T error) | ||||
| { | ||||
|     if(error & ERRBIT_VOLTAGE) | ||||
|         printf("[RxPacketError] Input voltage error!\n"); | ||||
|  | ||||
|     if(error & ERRBIT_ANGLE) | ||||
|         printf("[RxPacketError] Angle limit error!\n"); | ||||
|  | ||||
|     if(error & ERRBIT_OVERHEAT) | ||||
|         printf("[RxPacketError] Overheat error!\n"); | ||||
|  | ||||
|     if(error & ERRBIT_RANGE) | ||||
|         printf("[RxPacketError] Out of range error!\n"); | ||||
|  | ||||
|     if(error & ERRBIT_CHECKSUM) | ||||
|         printf("[RxPacketError] Checksum error!\n"); | ||||
|  | ||||
|     if(error & ERRBIT_OVERLOAD) | ||||
|         printf("[RxPacketError] Overload error!\n"); | ||||
|  | ||||
|     if(error & ERRBIT_INSTRUCTION) | ||||
|         printf("[RxPacketError] Instruction code error!\n"); | ||||
| } | ||||
|  | ||||
| int Protocol1PacketHandler::TxPacket(PortHandler *port, UINT8_T *txpacket) | ||||
| { | ||||
|     UINT8_T _checksum               = 0; | ||||
|   | ||||
| @@ -42,6 +42,97 @@ Protocol2PacketHandler *Protocol2PacketHandler::unique_instance_ = new Protocol2 | ||||
|  | ||||
| Protocol2PacketHandler::Protocol2PacketHandler() { } | ||||
|  | ||||
| void Protocol2PacketHandler::PrintTxRxResult(int result) | ||||
| { | ||||
|     switch(result) | ||||
|     { | ||||
|     case COMM_SUCCESS: | ||||
|         printf("[TxRxResult] Communication success.\n"); | ||||
|         break; | ||||
|  | ||||
|     case COMM_PORT_BUSY: | ||||
|         printf("[TxRxResult] Port is in use!\n"); | ||||
|         break; | ||||
|  | ||||
|     case COMM_TX_FAIL: | ||||
|         printf("[TxRxResult] Failed transmit instruction packet!\n"); | ||||
|         break; | ||||
|  | ||||
|     case COMM_RX_FAIL: | ||||
|         printf("[TxRxResult] Failed get status packet from device!\n"); | ||||
|         break; | ||||
|  | ||||
|     case COMM_TX_ERROR: | ||||
|         printf("[TxRxResult] Incorrect instruction packet!\n"); | ||||
|         break; | ||||
|  | ||||
|     case COMM_RX_WAITING: | ||||
|         printf("[TxRxResult] Now recieving status packet!\n"); | ||||
|         break; | ||||
|  | ||||
|     case COMM_RX_TIMEOUT: | ||||
|         printf("[TxRxResult] There is no status packet!\n"); | ||||
|         break; | ||||
|  | ||||
|     case COMM_RX_CORRUPT: | ||||
|         printf("[TxRxResult] Incorrect status packet!\n"); | ||||
|         break; | ||||
|  | ||||
|     case COMM_NOT_AVAILABLE: | ||||
|         printf("[TxRxResult] Protocol does not support This function!\n"); | ||||
|         break; | ||||
|  | ||||
|     default: | ||||
|         break; | ||||
|     } | ||||
| } | ||||
|  | ||||
| void Protocol2PacketHandler::PrintRxPacketError(UINT8_T error) | ||||
| { | ||||
|     if(error & ERRBIT_ALERT) | ||||
|         printf("[RxPacketError] Hardware error occurred. Check the error at Control Table (Hardware Error Status)!\n"); | ||||
|  | ||||
|     int _error = error & ~ERRBIT_ALERT; | ||||
|  | ||||
|     switch(_error) | ||||
|     { | ||||
|     case 0: | ||||
|         break; | ||||
|  | ||||
|     case ERRNUM_RESULT_FAIL: | ||||
|         printf("[RxPacketError] Failed to process the instruction packet!\n"); | ||||
|         break; | ||||
|  | ||||
|     case ERRNUM_INSTRUCTION: | ||||
|         printf("[RxPacketError] Undefined instruction or incorrect instruction!\n"); | ||||
|         break; | ||||
|  | ||||
|     case ERRNUM_CRC: | ||||
|         printf("[RxPacketError] CRC doesn't match!\n"); | ||||
|         break; | ||||
|  | ||||
|     case ERRNUM_DATA_RANGE: | ||||
|         printf("[RxPacketError] The data value is out of range!\n"); | ||||
|         break; | ||||
|  | ||||
|     case ERRNUM_DATA_LENGTH: | ||||
|         printf("[RxPacketError] The data length does not match as expected!\n"); | ||||
|         break; | ||||
|  | ||||
|     case ERRNUM_DATA_LIMIT: | ||||
|         printf("[RxPacketError] The data value exceeds the limit value!\n"); | ||||
|         break; | ||||
|  | ||||
|     case ERRNUM_ACCESS: | ||||
|         printf("[RxPacketError] Writing or Reading is not available to target address!\n"); | ||||
|         break; | ||||
|  | ||||
|     default: | ||||
|         printf("[RxPacketError] Unknown error code!\n"); | ||||
|         break; | ||||
|     } | ||||
| } | ||||
|  | ||||
| unsigned short Protocol2PacketHandler::UpdateCRC(UINT16_T crc_accum, UINT8_T *data_blk_ptr, UINT16_T data_blk_size) | ||||
| { | ||||
|     UINT16_T i, j; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 ROBOTIS
					ROBOTIS