|
- /*******************************************************************************
- * *
- * Copyright 2010 Rheinmetall Canada Inc. *
- * *
- * No part of this document may be reproduced, stored in *
- * a retrieval system, or transmitted, in any form or by any means, *
- * electronic, mechanical, photocopying, recording, or otherwise, *
- * without the prior written permission of Rheinmetall Canada Inc. *
- * *
- *******************************************************************************/
- /*
- Description:
- This is a template file for standard C header file.
-
- */
-
- /* ************************************************************************** */
- /* ¤Revision:
- 000 20100616 JFM,
- Original version.
-
- ### YYYYMMDD Initial, Bug Identification
- Change description.
- */
-
- #ifndef UART_H
- #define UART_H
-
- /* ************************************************************************** */
- /* Defines */
- #define UART_MAX_RX_BUFF_SIZE 512
- #define UART_MAX_TX_BUFF_SIZE 1024
-
- /* ************************************************************************** */
- /* Type definitions */
- //Handles to the Uart ports as mapped physically on the CU board.
- //in comment is the physical port assigned to each handle
- //
- enum eUartHandles
- {
- UART_1, //(232) internet Uart 2 - Lora IF
- UART_2, //(232) internal Uart 5 - SIM7080G LTE IF
- //UART_3, // !!!EXTERNAL!!! SPI daughter board...
- MAX_UART_HANDLE,
-
- INVALID_UART_HANDLE = 0xFF
- };
-
- extern const char *gUartStrings[MAX_UART_HANDLE];
-
- enum eUartStopBits
- {
- UART_ONE_STOP_BIT,
- UART_ONE_HALF_STOP_BIT,
- UART_TWO_STOP_BITS
- };
- enum eUartParity
- {
- UART_NO_PARITY,
- UART_EVEN_PARITY,
- UART_ODD_PARTIY
- };
-
- typedef struct
- {
- int iIsInternal;
- int iPhysicalUartPort;
- int iDataPending; //This flag is 0 when : TxPtr == RxPtr OR Uart is transmitting.
-
- char acTxCircularBuffer[UART_MAX_TX_BUFF_SIZE];
- char *pcTxInPtr;
- char *pcTxOutPtr;
- char acRxCircularBuffer[UART_MAX_RX_BUFF_SIZE];
- char *pcRxInDataPtr;
- char *pcRxOutDataPtr;
- int iNbRxFIFOPendingBytes;
-
-
- }stUartData;
-
- enum eUartReturnValues
- {
- UART_OK = 1,
- UART_PORT_BUSY,
- UART_PORT_NOT_OPENED,
- UART_BUFFER_FULL,
- UART_INVALID_HANDLE,
- UART_INVALID_PORT
- };
-
- /* ************************************************************************** */
- /* Prototypes */
- int UartTransmitData(int p_iUartHandle, char *p_pcBuffer, int p_iSize);
- int UartReceiveData(int p_iUartHandle, char *p_pcBuffer, int p_iSize);
- int DataSentNotification(int p_iUartHandle,int p_iDataSize);
- void InitUart(void);
- int UartOpenComPort(int p_iUartHandle, int p_iBaudRate, int p_iNbStopBits, int p_iParityEnable);
- int UartTick(void);
- void UartBlockAndTick(unsigned int TickCount);
- int UartBlockUntillBufEmpty(int iUartHandle);
- int UartGetPendingDataSize(int iUartHandle);
- int UartResetPort(int p_iUartHandle);
-
- #endif
- //EOF
|