27 #include <sys/types.h> 41 #define DXL_BAUDNUM_1000000 (1) 42 #define DXL_BAUDNUM_500000 (3)
43 #define DXL_BAUDNUM_400000 (4)
44 #define DXL_BAUDNUM_250000 (7)
45 #define DXL_BAUDNUM_200000 (9)
46 #define DXL_BAUDNUM_115200 (16)
47 #define DXL_BAUDNUM_57600 (34)
48 #define DXL_BAUDNUM_19200 (103)
49 #define DXL_BAUDNUM_9600 (207)
54 #define DXL_BAUDNUM_EXT_2250000 (250) 55 #define DXL_BAUDNUM_EXT_2500000 (251)
56 #define DXL_BAUDNUM_EXT_3000000 (252)
59 #define DXL_DEFAULT_BAUDNUMBER (34) 65 #define DXL_LENGTH (3)
66 #define DXL_INSTRUCTION (4)
67 #define DXL_ERRBIT (4)
68 #define DXL_PARAMETER (5)
73 #define DXL_MAXNUM_TXPARAM (150) 74 #define DXL_MAXNUM_RXPARAM (60)
79 #define DXL_INST_PING (1) 80 #define DXL_INST_READ (2)
81 #define DXL_INST_WRITE (3)
82 #define DXL_INST_REG_WRITE (4)
83 #define DXL_INST_ACTION (5)
84 #define DXL_INST_RESET (6)
85 #define DXL_INST_SYNC_WRITE (131)
90 #define DXL_MIN_ID (0) 91 #define DXL_MAX_ID (253)
92 #define DXL_BROADCAST_ID (254)
97 #define DXL_ERRBIT_VOLTAGE (1) 98 #define DXL_ERRBIT_ANGLE (2)
99 #define DXL_ERRBIT_OVERHEAT (4)
100 #define DXL_ERRBIT_RANGE (8)
101 #define DXL_ERRBIT_CHECKSUM (16)
102 #define DXL_ERRBIT_OVERLOAD (32)
103 #define DXL_ERRBIT_INSTRUCTION (64)
108 #define DXL_COMM_TXSUCCESS (0) 109 #define DXL_COMM_RXSUCCESS (1)
110 #define DXL_COMM_TXFAIL (2)
111 #define DXL_COMM_RXFAIL (3)
112 #define DXL_COMM_TXERROR (4)
113 #define DXL_COMM_RXWAITING (5)
114 #define DXL_COMM_RXTIMEOUT (6)
115 #define DXL_COMM_RXCORRUPT (7)
122 typedef void (*dxl_hdctl_tx_cb_t)(
void *arg);
130 typedef void (*dxl_hdctl_rx_cb_t)(
void *arg,
size_t txlen);
164 int open(
const char *deviceName,
int baudrate);
289 int makeWord(
int lowbyte,
int highbyte);
372 void writeByte(
int id,
int address,
int value);
395 void writeWord(
int id,
int address,
int value);
void writeWord(int id, int address, int value)
Write word to servo's control table.
int getHighByte(int word)
Get high byte from word.
void(* dxl_hdctl_tx_cb_t)(void *arg)
half-duplex control transmit callback type.
void * m_pTxRxArg
tx/rx argument passback
#define DXL_MAXNUM_TXPARAM
maximum number of tx parameters
int getLowByte(int word)
Get low byte from word.
dxl_hdctl_rx_cb_t m_fnEnableRx
enable rx callback
void setTxPacketParameter(int index, int value)
Set transmit packet parameter value.
float dxl_baudnum_to_baudrate(int baudnum)
Convert Dynamixel baud number to baud rate.
int getResult()
Get last transmit/receive result.
int m_nRxPacketLength
expected received packet length
void txrxPacket()
Transmit instruction packet and receive status response packet.
int getRxPacketParameter(int index)
Get receive packet parameter value.
void setTxPacketId(int id)
Set transmit packet servo id.
void writeByte(int id, int address, int value)
Write byte to servo's control table.
int setHalfDuplexCallbacks(dxl_hdctl_tx_cb_t enable_tx_cb, dxl_hdctl_rx_cb_t enable_rx_cb, void *arg)
Set serial half-duplex callbacks.
dxl()
Default constructor.
void setTxPacketInstruction(int instruction)
Set transmit packet instruction.
void(* dxl_hdctl_rx_cb_t)(void *arg, size_t txlen)
half-duplex control receive callback type.
void rxPacket()
Receive status packet.
int makeWord(int lowbyte, int highbyte)
Make 16-bit word.
dxl_hdctl_tx_cb_t m_fnEnableTx
enable tx callback
void txPacket()
Transmit a previously packed instruction packet.
int open(const char *deviceName, int baudrate)
Open Dynamixel Bus serial interface.
unsigned int getRxPacketErrBits()
Get receive packet error bits field.
uint8_t m_bufInstructionPacket[(150)+10]
instruction transmit packet buffer
int getRxPacketLength()
Get receive packet length field.
uint8_t m_bufStatusPacket[(60)+10]
status receive packet buffer
bool m_bBusUsing
bus is [not] busy
int setBaudRate(int baudrate)
Set Dynamixel Bus serial device baud rate.
void close()
Close the Dynamixel Bus serial interface.
#define DXL_MAXNUM_RXPARAM
maximum number of rx parameters
int getFd()
Get the Dynamixel Bus serial device file descriptor.
int m_nCommStatus
communication status
void ping(int id)
Ping servo.
bool getRxPacketError(unsigned int errbit)
Test if error bit is set on received packet.
int dxl_initialize(int deviceIndex, int baudnum)
Initialize Dynamixel Bus USB serial interface by index.
void setTxPacketLength(int length)
Set transmit packet length.
int readByte(int id, int address)
Read byte from servo's control table.
int readWord(int id, int address)
Read word from servo's control table.
int m_nRxGetLength
current received packet length