1 /** @file 2 * @brief Pipe UART driver header file. 3 * 4 * A pipe UART driver that allows applications to handle all aspects of 5 * received protocol data. 6 */ 7 8 /* 9 * Copyright (c) 2015 Intel Corporation 10 * 11 * SPDX-License-Identifier: Apache-2.0 12 */ 13 14 #ifndef ZEPHYR_INCLUDE_DRIVERS_UART_PIPE_H_ 15 #define ZEPHYR_INCLUDE_DRIVERS_UART_PIPE_H_ 16 17 #include <stdlib.h> 18 19 #ifdef __cplusplus 20 extern "C" { 21 #endif 22 23 /** @brief Received data callback. 24 * 25 * This function is called when new data is received on UART. The off parameter 26 * can be used to alter offset at which received data is stored. Typically, 27 * when the complete data is received and a new buffer is provided off should 28 * be set to 0. 29 * 30 * @param buf Buffer with received data. 31 * @param off Data offset on next received and accumulated data length. 32 * 33 * @return Buffer to be used on next receive. 34 */ 35 typedef uint8_t *(*uart_pipe_recv_cb)(uint8_t *buf, size_t *off); 36 37 /** @brief Register UART application. 38 * 39 * This function is used to register new UART application. 40 * 41 * @param buf Initial buffer for received data. 42 * @param len Size of buffer. 43 * @param cb Callback to be called on data reception. 44 */ 45 void uart_pipe_register(uint8_t *buf, size_t len, uart_pipe_recv_cb cb); 46 47 /** @brief Send data over UART. 48 * 49 * This function is used to send data over UART. 50 * 51 * @param data Buffer with data to be send. 52 * @param len Size of data. 53 * 54 * @return 0 on success or negative error 55 */ 56 int uart_pipe_send(const uint8_t *data, int len); 57 58 #ifdef __cplusplus 59 } 60 #endif 61 62 #endif /* ZEPHYR_INCLUDE_DRIVERS_UART_PIPE_H_ */ 63