93 lines
3.3 KiB
C
93 lines
3.3 KiB
C
#ifndef IVEC_ECU_UART_H
|
|
#define IVEC_ECU_UART_H
|
|
|
|
#include "../Core/Include/ivec_mcal_uart.h"
|
|
#include "../ivec_ECU/ivec_ecu_common/inc/ivec_ecu_common.h"
|
|
|
|
|
|
#include "stdint.h"
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#define IVEC_ECU_UART_MAX_PACKET_LENGTH 32/*!<Maximum length of packet that can be received*/
|
|
|
|
#define IVEC_ECU_UART_PKT_HEADER 7/*!<Protocol headers*/
|
|
#define IVEC_ECU_UART_PKT_HEADER_FOOTER 9/*!<Protocol headers+footers*/
|
|
|
|
#endif
|
|
|
|
#define IVEC_ECU_UART_GET_PACKET_SIZE(x) (x + IVEC_ECU_UART_PKT_HEADER_FOOTER)/*!<Complete packet size*/
|
|
|
|
#define IVEC_ECU_UART_PACKET_SUCCESS 0/*!<Success*/
|
|
#define IVEC_ECU_UART_PACKET_FAIL -1/*!<Error*/
|
|
|
|
/*Private Variables*/
|
|
typedef int IVEC_ECU_UartPacketRetCode_e;/*SERVICE_SUCESS or SERVICE_FAIL*/
|
|
typedef enum
|
|
{
|
|
eEcuUartBaudAuto = 0,
|
|
eEcuUartBaud2400 = 2400,
|
|
eEcuUartBaud4800 = 4800,
|
|
eEcuUartBaud9600 = 9600,
|
|
eEcuUartBaud14400 = 14400,
|
|
eEcuUartBaud19200 = 19200,
|
|
eEcuUartBaud28800 = 28800,
|
|
eEcuUartBaud33600 = 33600,
|
|
eEcuUartBaud38400 = 38400,
|
|
eEcuUartBaud57600 = 57600,
|
|
eEcuUartBaud115200 = 115200,
|
|
eEcuUartBaud230400 = 230400,
|
|
eEcuUartBaud460800 = 460800,
|
|
eEcuUartBaud921600 = 921600,
|
|
eEcuUartBaud1000000 = 1000000,
|
|
eEcuUartBaud1843200 = 1843200,
|
|
eEcuUartBaud2000000 = 2000000,
|
|
eEcuUartBaud2100000 = 2100000,
|
|
eEcuUartBaud3686400 = 3686400,
|
|
eEcuUartBaud4000000 = 4000000,
|
|
eEcuUartBaud4468750 = 4468750
|
|
} eEcuUartBaudRate;
|
|
|
|
|
|
typedef enum
|
|
{
|
|
IVEC_ECU_UART_PORT1 = 0,
|
|
IVEC_ECU_UART_PORT2,
|
|
IVEC_ECU_UART_PORT3,
|
|
IVEC_ECU_UART_PORT_MAX
|
|
} IVEC_ECU_UartPortNumber_e;
|
|
|
|
typedef enum
|
|
{
|
|
IVEC_ECU_UART_EVENT_RX_ARRIVED = 1,
|
|
IVEC_ECU_UART_EVENT_RX_OVERFLOW = 2,
|
|
IVEC_ECU_UART_EVENT_TX_COMPLETE = 3
|
|
} IVEC_ECU_UartEvent_e;
|
|
|
|
typedef struct
|
|
{
|
|
xMcalUartHandle __xUartHandle;
|
|
IVEC_ECU_UartPortNumber_e eUartPortNumber;
|
|
volatile uint8_t* u8Qbuffer;
|
|
uint16_t u16QbufSize;
|
|
uint16_t u16len;
|
|
eEcuUartBaudRate u32BaudRate;
|
|
void (*pvUartRecvCallback)(IVEC_ECU_UartPortNumber_e, IVEC_ECU_UartEvent_e , char *, uint32_t);
|
|
} IVEC_ECU_UartHandle_s;
|
|
|
|
/*===========================================================================
|
|
* Functions declaration
|
|
===========================================================================*/
|
|
|
|
IVEC_EcuCommonErr_e xECU_UartInit(IVEC_ECU_UartHandle_s* uartHandle);
|
|
IVEC_EcuCommonErr_e xECU_UartDeinit(IVEC_ECU_UartHandle_s *uartHandle);
|
|
IVEC_EcuCommonErr_e xECU_UartReinit(IVEC_ECU_UartHandle_s *uartHandle);
|
|
IVEC_EcuCommonErr_e xECU_UartTransmit(IVEC_ECU_UartHandle_s *uartHandle, uint8_t* buffer, uint16_t len);
|
|
IVEC_EcuCommonErr_e xECU_UartGetData(IVEC_ECU_UartHandle_s *uartHandle, uint8_t* buffer, uint16_t len, uint16_t timeout);
|
|
|
|
IVEC_ECU_UartPacketRetCode_e xECU_UartFormatPacket(IVEC_ECU_UartHandle_s *uartHandle, uint8_t* data, uint8_t dlc, uint32_t id);
|
|
IVEC_ECU_UartPacketRetCode_e xECU_UartReadCANDataLenOverUART(IVEC_ECU_UartHandle_s *uartHandle, uint8_t* buffer, uint32_t *id);
|
|
IVEC_ECU_UartPacketRetCode_e xECU_UartReadCANDataOverUART(IVEC_ECU_UartHandle_s* uartHandle, uint8_t* buffer, uint32_t *id);
|
|
int32_t iECU_UartInitiateTransmit(IVEC_ECU_UartHandle_s* uartHandle, uint32_t id, uint8_t *data, uint8_t len);
|