#include #include #include #include #include #include #define UART_DEVICE_NODE DT_CHOSEN(zephyr_shell_uart) static const struct device *const uart_dev = DEVICE_DT_GET(UART_DEVICE_NODE); #define SLIP_END 0xC0 #define SLIP_ESC 0xDB #define SLIP_ESC_END 0xDC #define SLIP_ESC_ESC 0xDD void send_frame(uint8_t *buffer, size_t len) { for (size_t i = 0; i < len; i++) { uint8_t octet = *(buffer + i); switch (octet) { case SLIP_END: uart_poll_out(uart_dev, SLIP_ESC); uart_poll_out(uart_dev, SLIP_ESC_END); break; case SLIP_ESC: uart_poll_out(uart_dev, SLIP_ESC); uart_poll_out(uart_dev, SLIP_ESC_ESC); break; default: uart_poll_out(uart_dev, octet); break; } } uart_poll_out(uart_dev, SLIP_END); } int main(void) { if (!device_is_ready(uart_dev)) { printk("UART device not found!"); return 0; } uint8_t frame[] = {0xDE, 0xAD}; while (true) { k_sleep(K_MSEC(1000)); send_frame(frame, ARRAY_SIZE(frame)); } return 0; }