1 /* 2 * Copyright (c) 2016, Freescale Semiconductor, Inc. 3 * Copyright 2016-2017 NXP 4 * All rights reserved. 5 * 6 * SPDX-License-Identifier: BSD-3-Clause 7 */ 8 9 /** 10 * @file data_format_hdlc.h 11 * @brief The data_format_hdlc.h file contains the Host interface definitions and configuration. 12 */ 13 14 #ifndef DATA_FORMAT_HDLC_H_ 15 #define DATA_FORMAT_HDLC_H_ 16 17 /******************************************************************************* 18 * Standard C Includes 19 ******************************************************************************/ 20 #include <stdint.h> 21 22 /******************************************************************************* 23 * ISSDK Includes 24 ******************************************************************************/ 25 #include "host_io_uart.h" 26 27 /******************************************************************************* 28 * Types 29 ******************************************************************************/ 30 /*! @brief States for receiving a packet */ 31 enum 32 { /* Receiver state: Waiting for a packet marker */ 33 HOST_RX_STATE_WAITFORPACKETMARKER, 34 /* Receiver state: Receiving data payload */ 35 HOST_RX_STATE_GETTINGPACKETDATA 36 }; 37 38 /******************************************************************************* 39 * APIs 40 ******************************************************************************/ 41 /* =================================================================== 42 * @brief Function to handle incomming HDLC encoded bytes form the Host over UART. 43 * @details This function will be called on receipt of every UART Byte 44 * and will do the HDLC combination to create a Host Message. 45 * @param[in] uint8_t c The character in the UART payload. 46 * @param[in] host_rx_packet_t *pHostRxPkt The Host Packet context structure. 47 * @return bool Success/Failure. 48 * @constraints This should be the called only after DEBUG/UART has been initialized. 49 * @reeentrant No 50 * =================================================================== */ 51 bool HDLC_Process_Rx_Byte(uint8_t c, host_rx_packet_t *pHostRxPkt); 52 53 /* =================================================================== 54 * @brief Function to format bytes for HDLC to be sent to Host over UART. 55 * @details This function will encode a Host Protocol formatted Message to be sent to Host over UART. 56 * The encoding adds a start and stop markers and inserts escape sequences for markers inside the packet. 57 * @param[in] uint8_t *pbuffer The handle to the input buffer containing the Host message. 58 * @param[in] uint8_t *pMsg The handle to the output buffer containing the formatted Host message. 59 * @param[in] size_t size The number of bytes to be sent starting form the buffer. 60 * @return size_t Length of the encoded message. 61 * @constraints This should be the called only after DEBUG/UART has been initialized. 62 * @reeentrant No 63 * =================================================================== */ 64 size_t HDLC_Process_Tx_Msg(const uint8_t *pBuffer, uint8_t *pMsg, size_t size); 65 66 #endif // DATA_FORMAT_HDLC_H_ 67