Initial commit: my SECS2 project

This commit is contained in:
2026-06-12 14:19:01 +08:00
commit 2c3e2c4dc2
1138 changed files with 603966 additions and 0 deletions

169
usr/protocol/proto_HSMS.c Normal file
View File

@@ -0,0 +1,169 @@
#include "proto_HSMS.h"
#include "string.h"
#include "stdio.h"
#include "bsp_print.h"
#include "bsp_W5500.h"
#include "proto_SECS2.h"
static void proto_HSMS_Init(void);
static void proto_W5500_DataAnalysis(bsp_W5500_Class_t *pW5500_Class,u8 *pData,u16 Len);
static void proto_HSMS_Rx_DataAnalysis(u8 *pData,u16 Len);
static void proto_HSMS_Tx_Rsq(proto_HSMS_Header_Data_t *pHeader_Data,u8 *Tx_Data,u16 Tx_Data_Len,void *OtherData);
u8 proto_HSMS_Tx_Buffer[1024];
proto_HSMS_t HSMS =
{
.Init = proto_HSMS_Init,
.Tx_RsqData = proto_HSMS_Tx_Rsq,
};
proto_HSMS_t *pHSMS = &HSMS;
static void proto_HSMS_Init(void)
{
W5500.W5500_Class[0].Rx_DataAnalysis = proto_W5500_DataAnalysis;
}
static void proto_HSMS_Send(u8 *pData,u16 Len)
{
Debug_UartSend(pData, Len);
W5500.Socket_Send(&W5500.W5500_Class[0],pData,Len);
}
static void proto_W5500_DataAnalysis(bsp_W5500_Class_t *pW5500_Class,u8 *pData,u16 Len)
{
proto_HSMS_Rx_DataAnalysis(pData,Len);
}
/*<2A><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
static void proto_HSMS_Tx_Rsq(proto_HSMS_Header_Data_t *pHeader_Data,u8 *Tx_Data,u16 Tx_Data_Len,void *OtherData)
{
u8 *Tx = proto_HSMS_Tx_Buffer;
u16 Len;
pHeader_Data->Data_Len = 10 + Tx_Data_Len;
u32TOu8(pHeader_Data->Data_Len,Tx,PROTO_HSMS_ENDIAN);
u16TOu8(pHeader_Data->Device_Id,&Tx[4],PROTO_HSMS_ENDIAN);
Tx[6] = pHeader_Data->Header_Byte2.ALL_Data;
Tx[7] = pHeader_Data->Header_Byte3;
Tx[8] = pHeader_Data->PType;
Tx[9] = pHeader_Data->SType;
u32TOu8(pHeader_Data->Sys_Byte,&Tx[10],PROTO_HSMS_ENDIAN);
Len = 14;
if(NULL != Tx_Data && 0 != Tx_Data_Len)
{
memcpy(&Tx[Len],Tx_Data,Tx_Data_Len);
Len += Tx_Data_Len;
}
proto_HSMS_Send(Tx,Len);
Debug_UartSend(Tx,Len);
}
void proto_HSMS_Header_DataAnalysis(proto_HSMS_Header_Data_t *pHeader_Data,u8 *pData)
{
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>н<EFBFBD><D0BD><EFBFBD>*/
pHeader_Data->Data_Len = u8TOu32(&pData[0],PROTO_HSMS_ENDIAN);
pHeader_Data->Device_Id = u8TOu16(&pData[4],PROTO_HSMS_ENDIAN);
pHeader_Data->Header_Byte2.ALL_Data = pData[6];
pHeader_Data->Header_Byte3 = pData[7];
pHeader_Data->PType = pData[8];
pHeader_Data->SType = pData[9];
pHeader_Data->Sys_Byte = u8TOu32(&pData[10],PROTO_HSMS_ENDIAN);
}
void proto_HSMS_Rx_DataAnalysis(u8 *pData,u16 Len)
{
if(Len < 14)/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>*/
return ;
proto_HSMS_Header_DataAnalysis(&pHSMS->Rx_Header_Data,pData);
/*<2A><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>*/
if((pHSMS->Rx_Header_Data.Data_Len + 4) != Len)
{
return ;
}
/*<2A><><EFBFBD><EFBFBD>SECS2<53><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ*/
if(proto_HSMS_PTYPE_SECS2 != pHSMS->Rx_Header_Data.PType)
{
return ;
}
switch(pHSMS->Rx_Header_Data.SType)
{
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ*/
case PROTO_HSMS_STYPE_Data_Message :
{
/*ƥ<><C6A5><EFBFBD>豸ID*/
if(pHSMS->Flash_ConfigData.Device_Id != pHSMS->Rx_Header_Data.Device_Id)
{
return;
}
memcpy(&pHSMS->Tx_Header_Data,&pHSMS->Rx_Header_Data,sizeof(proto_HSMS_Header_Data_t));
/*ȥ<><C8A5>HSMSͷ<53><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
SECS2.Rx_DataAnalysis(&pHSMS->Tx_Header_Data,&pData[14],Len-14);
}break;
/*ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
case PROTO_HSMS_STYPE_Select_Req :
{
memcpy(&pHSMS->Tx_Header_Data,&pHSMS->Rx_Header_Data,sizeof(proto_HSMS_Header_Data_t));
pHSMS->Tx_Header_Data.SType = PROTO_HSMS_STYPE_Select_Rsq;
proto_HSMS_Tx_Rsq(&pHSMS->Tx_Header_Data,NULL,0,NULL);
}break;
/*ѡ<><D1A1><EFBFBD><EFBFBD>Ӧ*/
case PROTO_HSMS_STYPE_Select_Rsq :
{
}break;
/*ȡ<><C8A1>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
case PROTO_HSMS_STYPE_Deselect_Req :
{
memcpy(&pHSMS->Tx_Header_Data,&pHSMS->Rx_Header_Data,sizeof(proto_HSMS_Header_Data_t));
pHSMS->Tx_Header_Data.SType = PROTO_HSMS_STYPE_Deselect_Rsq;
proto_HSMS_Tx_Rsq(&pHSMS->Tx_Header_Data,NULL,0,NULL);
}break;
/*ȡ<><C8A1>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ӧ*/
case PROTO_HSMS_STYPE_Deselect_Rsq :
{
}break;
/*<2A><><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
case PROTO_HSMS_STYPE_Linktest_Req :
{
memcpy(&pHSMS->Tx_Header_Data,&pHSMS->Rx_Header_Data,sizeof(proto_HSMS_Header_Data_t));
pHSMS->Tx_Header_Data.SType = PROTO_HSMS_STYPE_Linktest_Rsp;
proto_HSMS_Tx_Rsq(&pHSMS->Tx_Header_Data,NULL,0,NULL);
}break;
/*<2A><><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD>Ӧ*/
case PROTO_HSMS_STYPE_Linktest_Rsp :
{
}break;
/*<2A>ܾ<EFBFBD><DCBE><EFBFBD><EFBFBD><EFBFBD>*/
case PROTO_HSMS_STYPE_Reject_Req :
{
}break;
/*<2A>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>*/
case PROTO_HSMS_STYPE_Separate_Req :
{
}break;
default: break;
}
}