#ifndef XCP_CFG_H
#define XCP_CFG_H
#include "ifxStm_reg.h"
/* Data types */
typedef unsigned char vuint8;
typedef signed char vsint8;
typedef unsigned short vuint16;
typedef signed short vsint16;
typedef unsigned long vuint32;
typedef signed long vsint32;
#define BYTEPTR unsigned char *
#define MEMORY_ROM
#define MTABYTEPTR BYTEPTR
#define V_MEMROM0
/* XCP message length /
#define kXcpMaxCTO 8 / Maximum CTO Message Lenght /
#define kXcpMaxDTO 8 / Maximum DTO Message Lenght /
#define kXcpDaqMemSize (10242) /* Use 2K for XCP */
#define XCP_TRANSPORT_LAYER_VERSION 0x0100
#define XCP_ENABLE_COMM_MODE_INFO
#define XCP_ENABLE_SERV_TEXT
#define XCP_ENABLE_SERV_TEXT_PUTCHAR
#define XCP_ENABLE_SERV_TEXT_PRINT
#define XCP_CPUTYPE_LITTLEENDIAN /* Intel */
#define XCP_DISABLE_PARAMETER_CHECK
#define XCP_DISABLE_SEED_KEY
#define XCP_DISABLE_USER_COMMAND
#define XCP_ENABLE_SEND_EVENT
#define XCP_ENABLE_USE_BYTE_ACCESS
#define XCP_ENABLE_CALIBRATION
#define XCP_ENABLE_SHORT_DOWNLOAD
#define XCP_ENABLE_SHORT_UPLOAD
#define XCP_ENABLE_BLOCK_UPLOAD
#define XCP_ENABLE_BLOCK_DOWNLOAD
#define XCP_ENABLE_CHECKSUM
#define kXcpChecksumMethod XCP_CHECKSUM_TYPE_ADD14
#define XCP_DISABLE_CALIBRATION_PAGE
#define XCP_DISABLE_SEGMENT_INFO
#define XCP_DISABLE_PAGE_INFO
#define XCP_DISABLE_PAGE_FREEZE
#define XCP_DISABLE_STIM
#define XCP_ENABLE_DAQ
#define XCP_DISABLE_UNALIGNED_MEM_ACCESS
#define XCP_DISABLE_DAQ_HDR_ODT_DAQ
#define XCP_ENABLE_DAQ_PRESCALER
#define XCP_ENABLE_DAQ_OVERRUN_INDICATION
#define XCP_ENABLE_DAQ_PROCESSOR_INFO
#define XCP_ENABLE_DAQ_RESOLUTION_INFO
#define XCP_ENABLE_WRITE_DAQ_MULTIPLE
/* Memory space reserved for DAQ */
#define XCP_ENABLE_SEND_QUEUE
#define XCP_DISABLE_SEND_BUFFER
#endif /* XCP_CFG_H */
#include "xcp_if.h"
#include "xcpBasic.h"
void ApplXcpSend(vuint8 len, const BYTEPTR msg)
{
uint32 txData32kXcpMaxDTO / 4u = {0u};
uint32 word = 0u;
uint32 byteIdx = 0u;
uint8 wordNum = 0u;
if(len > (uint8)kXcpMaxDTO)
{
len = (uint8)kXcpMaxDTO;
}
wordNum = (uint8)(((uint16)len + 3u) / 4u);
for(uint8 i = 0u; i < wordNum; i++)
{
word = 0u;
for(uint8 j = 0u; j < 4u; j++)
{
byteIdx = (uint32)i * 4u + (uint32)j;
if(byteIdx < (uint32)len)
{
word |= (uint32)msg[byteIdx] << ((uint32)j * 8u);
}
}
txData32[i] = word;
}
CHA_Can_Sent(XCP_ID_DTO, len, txData32, 0u, 0u, 0u);
XcpSendCallBack();
}
void Xcp_Init(void)
{
XcpInit();
}
void Xcp_Recv(uint32* data)
{
uint8 xcpBufkXcpMaxCTO = {0u};
(void)memcpy(xcpBuf, data, sizeof(xcpBuf));
XcpCommand((void*)&xcpBuf0);
}
void Xcp_TasksSend5ms(void)
{
static uint8 u8XCPEvent5msCnt = 0;
u8XCPEvent5msCnt++; //5ms
XcpEvent(1u);
if((u8XCPEvent5msCnt % 2u) == 0u) { XcpEvent(2u);} //10ms
if((u8XCPEvent5msCnt % 20u) == 0u) { XcpEvent(3u);} //100ms
if((u8XCPEvent5msCnt % 100u) == 0u) { XcpEvent(4u);} //500ms
if((u8XCPEvent5msCnt % 200u) == 0u) { XcpEvent(5u);} //1s
XcpBackground();
if (u8XCPEvent5msCnt >= 200u)
{
u8XCPEvent5msCnt = 0u;
}
}
void ApplXcpSendFlush()
{
}
uint8 ApplXcpSendStall( void )
{
return( (uint8) 1u );
}
void ApplXcpInterruptEnable(void)
{
}
void ApplXcpInterruptDisable(void)
{
}
void ApplXcpBackground(void)
{
}
MTABYTEPTR ApplXcpGetPointer( uint8 addr_ext, uint32 addr )
{
return (MTABYTEPTR)addr;
}
void ApplXcpInit( void )
{
}