wip: onboard pid

This commit is contained in:
2025-09-12 15:45:14 +02:00
parent fb9fb9bdf0
commit 52b0dd74c0
39 changed files with 552 additions and 423 deletions

View File

@@ -24,8 +24,7 @@ if MICROROS
select RING_BUFFER
config MICROROS_TRANSPORT_SERIAL_USB
bool "micro-ROS USB serial transport"
select RING_BUFFER
select USB_DEVICE_STACK
select RING_BUFFER
config MICROROS_TRANSPORT_UDP
bool "micro-ROS UDP network transport"
@@ -106,7 +105,7 @@ if MICROROS
config MICROROS_XRCE_DDS_MTU
string "micro-ROS transport MTU"
default "62"
default "512"
config MICROROS_XRCE_DDS_HISTORIC
string "micro-ROS middleware memory slots"

View File

@@ -66,58 +66,20 @@ static void uart_fifo_callback(const struct device *dev, void * user_data){
bool zephyr_transport_open(struct uxrCustomTransport * transport){
zephyr_transport_params_t * params = (zephyr_transport_params_t*) transport->args;
int ret;
uint32_t baudrate, dtr = 0U;
params->uart_dev = device_get_binding("CDC_ACM_0");
params->uart_dev = DEVICE_DT_GET(DT_NODELABEL(cdc_acm_uart0));
if (!params->uart_dev) {
printk("CDC ACM device not found\n");
return false;
}
ret = usb_enable(NULL);
if (ret != 0) {
printk("Failed to enable USB\n");
return false;
if (!device_is_ready(params->uart_dev)) {
printk("cdc0 not ready!\n");
}
ring_buf_init(&out_ringbuf, sizeof(uart_out_buffer), uart_out_buffer);
ring_buf_init(&in_ringbuf, sizeof(uart_in_buffer), uart_out_buffer);
printk("Waiting for agent connection\n");
while (true) {
uart_line_ctrl_get(params->uart_dev, UART_LINE_CTRL_DTR, &dtr);
if (dtr) {
break;
} else {
/* Give CPU resources to low priority threads. */
k_sleep(K_MSEC(100));
}
}
printk("Serial port connected!\n");
/* They are optional, we use them to test the interrupt endpoint */
ret = uart_line_ctrl_set(params->uart_dev, UART_LINE_CTRL_DCD, 1);
if (ret) {
printk("Failed to set DCD, ret code %d\n", ret);
}
ret = uart_line_ctrl_set(params->uart_dev, UART_LINE_CTRL_DSR, 1);
if (ret) {
printk("Failed to set DSR, ret code %d\n", ret);
}
/* Wait 1 sec for the host to do all settings */
k_busy_wait(1000*1000);
ret = uart_line_ctrl_get(params->uart_dev, UART_LINE_CTRL_BAUD_RATE, &baudrate);
if (ret) {
printk("Failed to get baudrate, ret code %d\n", ret);
}
uart_irq_callback_set(params->uart_dev, uart_fifo_callback);
/* Enable rx interrupts */