diff options
Diffstat (limited to 'firmware/src/data_link.c')
| -rw-r--r-- | firmware/src/data_link.c | 24 | 
1 files changed, 24 insertions, 0 deletions
| diff --git a/firmware/src/data_link.c b/firmware/src/data_link.c new file mode 100644 index 0000000..a6d091a --- /dev/null +++ b/firmware/src/data_link.c @@ -0,0 +1,24 @@ +#include <zephyr/drivers/uart.h> + +#include "data_link.h" + +void dl_send_frame(const struct device *const uart_dev, uint8_t *buffer, +                   size_t len) { +	for (size_t i = 0; i < len; i++) { +		uint8_t octet = *(buffer + i); +		switch (octet) { +			case DL_SLIP_END: +				uart_poll_out(uart_dev, DL_SLIP_ESC); +				uart_poll_out(uart_dev, DL_SLIP_ESC_END); +				break; +			case DL_SLIP_ESC: +				uart_poll_out(uart_dev, DL_SLIP_ESC); +				uart_poll_out(uart_dev, DL_SLIP_ESC_ESC); +				break; +			default: +				uart_poll_out(uart_dev, octet); +				break; +		} +	} +	uart_poll_out(uart_dev, DL_SLIP_END); +} | 
