Dynamixel driver

This module contains drivers for any device using dynamixel's servomotors communication bus. More...

Detailed Description

The bus is mainly used for servomotors, but a device can be anything : sensors, other actuators.

Files

file  dynamixel_crc.h
 Interface definition for Dynamixel crc.
 
file  dynamixel_protocol.h
 Dynamixel protocol definitions.
 
file  dynamixel_reader.h
 Interface definition for Dynamixel packet reader.
 
file  dynamixel_writer.h
 Interface definition for Dynamixel packet writer.
 
file  dynamixel.h
 Interface definition for Dynamixel devices driver.
 

Data Structures

struct  dynamixel_t
 Descriptor struct for a dynamixel device. More...
 

Typedefs

typedef uint8_t dynamixel_id_t
 device id type
 
typedef uint16_t dynamixel_addr_t
 register address type
 

Enumerations

enum  { DYNAMIXEL_OK, DYNAMIXEL_TIMEOUT, DYNAMIXEL_BUFFER_TOO_SMALL, DYNAMIXEL_INVALID_MESSAGE }
 Possible dynamixel return values. More...
 

Functions

int dynamixel_ping (uart_half_duplex_t *stream, dynamixel_id_t id)
 Send a PING message to a device. More...
 
void dynamixel_init (dynamixel_t *device, uart_half_duplex_t *stream, dynamixel_id_t id)
 Initialize a Dynamixel device. More...
 
int dynamixel_write8 (dynamixel_t *device, dynamixel_addr_t reg, uint8_t value)
 Write to a device 8bits register. More...
 
int dynamixel_write16 (dynamixel_t *device, dynamixel_addr_t reg, uint16_t value)
 Write to a device 16bits register. More...
 
int dynamixel_write (dynamixel_t *device, dynamixel_addr_t reg, const uint8_t *data, size_t length)
 Write to a device address. More...
 
int dynamixel_read8 (dynamixel_t *device, dynamixel_addr_t reg, uint8_t *value)
 Read from a device 8bits register. More...
 
int dynamixel_read16 (dynamixel_t *device, dynamixel_addr_t reg, uint16_t *value)
 Read from a device 16bits register. More...
 
int dynamixel_read (dynamixel_t *device, dynamixel_addr_t reg, uint8_t *data, size_t length)
 Read from a device address. More...
 

Enumeration Type Documentation

anonymous enum
Enumerator
DYNAMIXEL_OK 

Success.

DYNAMIXEL_TIMEOUT 

No response from the device.

DYNAMIXEL_BUFFER_TOO_SMALL 

Buffer is too small for the message.

DYNAMIXEL_INVALID_MESSAGE 

Invalid message received.

Definition at line 51 of file dynamixel.h.

Function Documentation

void dynamixel_init ( dynamixel_t device,
uart_half_duplex_t stream,
dynamixel_id_t  id 
)
Parameters
[out]devicethe Dynamixel device
[in]streamthe stream
[in]idthe device address
int dynamixel_ping ( uart_half_duplex_t stream,
dynamixel_id_t  id 
)
Parameters
[in]streamthe stream
[in]idthe device address
Returns
DYNAMIXEL_OK if a device answered
DYNAMIXEL_TIMEOUT if the device did not answer
DYNAMIXEL_BUFFER_TOO_SMALL if buffer is too small for the message
DYNAMIXEL_INVALID_MESSAGE if an invalid message was received
int dynamixel_read ( dynamixel_t device,
dynamixel_addr_t  reg,
uint8_t *  data,
size_t  length 
)
Parameters
[in]devicethe Dynamixel device
[in]regthe address to start read
[out]datathe data buffer to fill
[in]lengththe data length
Returns
DYNAMIXEL_OK on success
DYNAMIXEL_TIMEOUT if the device did not answer
DYNAMIXEL_BUFFER_TOO_SMALL if buffer is too small for the message
DYNAMIXEL_INVALID_MESSAGE if an invalid message was received
int dynamixel_read16 ( dynamixel_t device,
dynamixel_addr_t  reg,
uint16_t *  value 
)
Parameters
[in]devicethe Dynamixel device
[in]regthe register to read
[out]valuethe value to read
Returns
DYNAMIXEL_OK on success
DYNAMIXEL_TIMEOUT if the device did not answer
DYNAMIXEL_BUFFER_TOO_SMALL if buffer is too small for the message
DYNAMIXEL_INVALID_MESSAGE if an invalid message was received
int dynamixel_read8 ( dynamixel_t device,
dynamixel_addr_t  reg,
uint8_t *  value 
)
Parameters
[in]devicethe Dynamixel device
[in]regthe register to read
[out]valuethe value to read
Returns
DYNAMIXEL_OK on success
DYNAMIXEL_TIMEOUT if the device did not answer
DYNAMIXEL_BUFFER_TOO_SMALL if buffer is too small for the message
DYNAMIXEL_INVALID_MESSAGE if an invalid message was received
int dynamixel_write ( dynamixel_t device,
dynamixel_addr_t  reg,
const uint8_t *  data,
size_t  length 
)
Parameters
[in]devicethe Dynamixel device
[in]regthe address to start write
[in]datathe data to write
[in]lengththe data length
Returns
DYNAMIXEL_OK on success
DYNAMIXEL_TIMEOUT if the device did not answer
DYNAMIXEL_BUFFER_TOO_SMALL if buffer is too small for the message
DYNAMIXEL_INVALID_MESSAGE if an invalid message was received
int dynamixel_write16 ( dynamixel_t device,
dynamixel_addr_t  reg,
uint16_t  value 
)
Parameters
[in]devicethe Dynamixel device
[in]regthe register to write
[in]valuethe value to write
Returns
DYNAMIXEL_OK on success
DYNAMIXEL_TIMEOUT if the device did not answer
DYNAMIXEL_BUFFER_TOO_SMALL if buffer is too small for the message
DYNAMIXEL_INVALID_MESSAGE if an invalid message was received
int dynamixel_write8 ( dynamixel_t device,
dynamixel_addr_t  reg,
uint8_t  value 
)
Parameters
[in]devicethe Dynamixel device
[in]regthe register to write
[in]valuethe value to write
Returns
DYNAMIXEL_OK on success
DYNAMIXEL_TIMEOUT if the device did not answer
DYNAMIXEL_BUFFER_TOO_SMALL if buffer is too small for the message
DYNAMIXEL_INVALID_MESSAGE if an invalid message was received