31#define STS_MAX_TX_BUFFER 128U
32#define STS_MAX_RX_BUFFER 128U
33#define STS_DEFAULT_TIMEOUT_MS 10U
66 uint8_t tx_buf[STS_MAX_TX_BUFFER];
67 uint8_t rx_buf[STS_MAX_RX_BUFFER];
158 const uint8_t *tx_params;
159 uint16_t tx_param_len;
160 uint16_t expected_rx_len;
161 uint8_t *rx_params_out;
162 uint16_t rx_params_size;
163 uint16_t *rx_param_len_out;
STS Shared Bus Handle.
Definition sts_servo.h:51
uint32_t hard_failures
Definition sts_servo.h:64
uint32_t total_transactions
Definition sts_servo.h:61
sts_hal_flush_rx_t flush_rx
Definition sts_servo.h:55
uint32_t total_retries
Definition sts_servo.h:62
void * port_handle
Definition sts_servo.h:52
sts_hal_receive_t receive
Definition sts_servo.h:54
uint8_t max_retries
Definition sts_servo.h:57
uint32_t retry_saves
Definition sts_servo.h:63
sts_hal_transmit_t transmit
Definition sts_servo.h:53
STS Servo Handle Represents a single physical servo on the bus.
Definition sts_servo.h:74
uint8_t is_online
Definition sts_servo.h:77
sts_bus_t * bus
Definition sts_servo.h:75
uint8_t id
Definition sts_servo.h:76
: Feetech STS Servo Protocol API
sts_result_t
Return codes for STS protocol operations.
Definition sts_protocol.h:71
: Feetech STS Series Register Map and Instruction Set
sts_operating_mode_t
Defines the active internal control algorithm (Operating Mode). Changing the operating mode fundament...
Definition sts_registers.h:132
sts_result_t STS_Write8(sts_servo_t *servo, uint8_t reg_addr, uint8_t value)
Writes a single byte (8-bit) to a specific servo register.
Definition sts_servo.c:251
sts_result_t(* sts_hal_transmit_t)(sts_bus_t *bus, const uint8_t *data, uint16_t len)
Context-Aware HAL Function Pointers. The bus itself is passed in, allowing the HAL to access the port...
Definition sts_servo.h:44
sts_result_t STS_Bus_Receive(sts_bus_t *bus, uint8_t *data, uint16_t len, uint32_t timeout)
Safe wrapper for HAL reception.
Definition sts_servo.c:59
sts_result_t STS_Bus_Init(sts_bus_t *bus, void *port_handle, sts_hal_transmit_t tx_func, sts_hal_receive_t rx_func)
Initializes the hardware bus abstraction.
Definition sts_servo.c:183
sts_result_t STS_Read16(sts_servo_t *servo, uint8_t reg_addr, uint16_t *value_out)
Reads a word (16-bit) from a specific servo register (Little-Endian).
Definition sts_servo.c:319
sts_result_t STS_servo_ping(sts_servo_t *servo)
Pings the servo to check if it's online.
Definition sts_servo.c:217
sts_result_t STS_Bus_FlushRx(sts_bus_t *bus)
Drains stale bytes from the RX buffer between transaction retries. No-op if the port did not register...
Definition sts_servo.c:69
sts_result_t STS_Read8(sts_servo_t *servo, uint8_t reg_addr, uint8_t *value_out)
Reads a single byte (8-bit) from a specific servo register.
Definition sts_servo.c:288
sts_result_t STS_Servo_Init(sts_servo_t *servo, sts_bus_t *bus, uint8_t id)
Initializes a servo handle.
Definition sts_servo.c:196
sts_result_t STS_Bus_Transmit(sts_bus_t *bus, const uint8_t *data, uint16_t len)
Safe wrapper for HAL transmission.
Definition sts_servo.c:47
sts_result_t STS_Write16(sts_servo_t *servo, uint8_t reg_addr, uint16_t value)
Writes a word (16-bit) to a specific servo register (Little-Endian).
Definition sts_servo.c:268