提交 e01d7680 作者: wysheng

TCU升级接收函数

上级 2e38ebd1
......@@ -150,10 +150,12 @@ void TCURequestIntervalHandle(StructTCUSend * pPgnRecv)
}
}
u8 TcuUpDateBuffer[1024];
u32 PackageAddr = 0;
void TCUStartPackageHandle(StructTCUSend * pPgnRecv)
{
u8 addr = 0;
u32 PackageAddr = 0;
u8 Date[8] = {0};
if (pPgnRecv->DA == ChargerCont1939Addr)
{
......@@ -170,7 +172,7 @@ void TCUStartPackageHandle(StructTCUSend * pPgnRecv)
}
}
u8 TcuUpDateBuffer[1024];
void TCUSendDateHandle(StructTCUSend * pPgnRecv)
{
u8 addr = 0;
......@@ -190,15 +192,107 @@ void TCUSendDateHandle(StructTCUSend * pPgnRecv)
}
}
u32 TCUGetPackageChecksum(void)
{}
u32 TCUGetProgramChecksum(void)
{}
void TCUCompletePackageHandle(StructTCUSend * pPgnRecv)
{
u8 addr = 0;
u32 checksum = 0;
int ret = 0;
u8 Date[8] = {0};
if (pPgnRecv->DA == ChargerCont1939Addr)
{
if(pPgnRecv->Data[1] == 0x01 )//0x01 --- 直流充电控制器
{
addr = pPgnRecv->Data[2];
memcpy(&checksum,&(pPgnRecv->Data[3]),4);
Date[1] = 0x01;
Date[2] = addr;
if(checksum == TCUGetPackageChecksum())
{
Date[3] = 0xaa;//0xAA:校验成功
//write to flash
ret = CopyCode(BakStartAddr+PackageAddr,(u32)TcuUpDateBuffer, 1024);
if(ret == 0)
{
memcpy(&Date[4],&(PackageAddr),4);
}
else
{
Date[3] = 0xff;//0xFF:擦除失败
}
}
else
{
Date[3] = 0x55;//0x55:校验失败
memcpy(&Date[4],&(PackageAddr),4);
}
TCUSinglePackSendMsg(Date, 8, eCmd_CompletePackageAck, 4, ChargerCont1939Addr);
}
}
}
void TCUProgramVerificationHandle(StructTCUSend * pPgnRecv)
{
u8 addr = 0;
u32 ProgramChecksum = 0;
u8 Date[8] = {0};
if (pPgnRecv->DA == ChargerCont1939Addr)
{
if(pPgnRecv->Data[1] == 0x01 )//0x01 --- 直流充电控制器
{
addr = pPgnRecv->Data[2];
memcpy(&ProgramChecksum,&(pPgnRecv->Data[3]),4);
Date[1] = 0x01;
Date[2] = addr;
if(ProgramChecksum == TCUGetProgramChecksum())
{
}
else
{
Date[3] = 0x01;//01H:失败
}
TCUSinglePackSendMsg(Date, 8, eCmd_ProgramVerificationAck, 4, ChargerCont1939Addr);
}
}
}
void TCUResetHandle(StructTCUSend * pPgnRecv)
{
u8 addr = 0;
u8 Date[8] = {0};
if (pPgnRecv->DA == ChargerCont1939Addr)
{
if(pPgnRecv->Data[1] == 0x01 )//0x01 --- 直流充电控制器
{
addr = pPgnRecv->Data[2];
Date[1] = 0x01;
Date[2] = addr;
if(pPgnRecv->Data[2] == 0xAA)//AAH:代表立即重启
{
Date[2] = 0xAA;//
}
TCUSinglePackSendMsg(Date, 8, eCmd_resetAck, 4, ChargerCont1939Addr);
}
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论