|
@@ -7,13 +7,344 @@
|
|
|
*
|
|
|
****************************************************************************/
|
|
|
#include "AppFunc.h"
|
|
|
+#include "numeric.h"
|
|
|
|
|
|
-/*******
|
|
|
+/***********************************************************************************************************************
|
|
|
+ * Uart数据解码函数
|
|
|
+ * 输入:数据指针
|
|
|
+ * 输出:状态
|
|
|
+ * 处理:将uart数据进行解码,按照协议进行解码
|
|
|
+***********************************************************************************************************************/
|
|
|
+BOOL uartBattInfoDecode(UINT8* dataPtr)
|
|
|
+{
|
|
|
+ UINT8 i = 0,temp=0;
|
|
|
+ INT8 BattCurrentNegFlag = 1;
|
|
|
+ UINT8 TEMP_NUM = 0;
|
|
|
+ UINT16 Batt_current;
|
|
|
+ UINT8 BATT_CELL_VOL_NUM = 0,BATT_TEMP_NUM = 0;
|
|
|
+ BATT_CELL_VOL_NUM = (dataPtr[(0x00)*2] << 8) | (dataPtr[(0x00)*2 + 1]);
|
|
|
+ BATT_TEMP_NUM = (dataPtr[(0x01)*2] << 8) | (dataPtr[(0x01)*2 + 1])-BMS_OTHER_TEMP;
|
|
|
+ if(AppNVMData.BattCellCount!=BATT_CELL_VOL_NUM || AppNVMData.BattTempCount!=BATT_TEMP_NUM )
|
|
|
+ {
|
|
|
+ AppNVMData.appDataModify = TRUE;
|
|
|
+ AppNVMData.BattCellCount = BATT_CELL_VOL_NUM;
|
|
|
+ AppNVMData.BattTempCount = BATT_TEMP_NUM;
|
|
|
+ }
|
|
|
+ for(i=0;i<BATT_CELL_VOL_NUM;i++)
|
|
|
+ {
|
|
|
+ battCellU[i] = (dataPtr[(0x02+i)*2] << 8) | dataPtr[(0x02+i)*2 + 1];
|
|
|
+ }
|
|
|
+ battWorkState = (dataPtr[(0x03+BATT_CELL_VOL_NUM)*2+1])&0x03;//电池状态(原始数据),0表示静置,1表示放电,2表示充电
|
|
|
+ TEMP_NUM = BATT_TEMP_NUM + BMS_OTHER_TEMP;
|
|
|
+ for(i=0; i<BATT_TEMP_NUM; i++)
|
|
|
+ {
|
|
|
+ battCellTemp[i] = dataPtr[(0x06+BATT_CELL_VOL_NUM+i)*2+1];
|
|
|
+ }
|
|
|
+ MOSTemp = dataPtr[(0x06+BATT_CELL_VOL_NUM+BATT_TEMP_NUM)*2+1];
|
|
|
+ packTemp = dataPtr[(0x06+BATT_CELL_VOL_NUM+BATT_TEMP_NUM+1)*2+1];
|
|
|
+
|
|
|
+ Batt_current = (dataPtr[(0x02+BATT_CELL_VOL_NUM)*2]<<8)|(dataPtr[(0x02+BATT_CELL_VOL_NUM)*2+1]);
|
|
|
+ //原始数据:充电为负,放电为正
|
|
|
+ if(battWorkState == 0x02) //充电过程
|
|
|
+ {
|
|
|
+ if(Batt_current >0x8000)// 数据为负
|
|
|
+ {
|
|
|
+ //求补码,结果为负
|
|
|
+ Batt_current = (UINT16)((UINT16)(~(Batt_current))+1);
|
|
|
+ Batt_current = Batt_current/10;
|
|
|
+ BattCurrentNegFlag = -1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //源码,结果为负
|
|
|
+ Batt_current = Batt_current/10;
|
|
|
+ BattCurrentNegFlag = -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else //放电过程
|
|
|
+ {
|
|
|
+ if(Batt_current >0x8000)// 数据为负
|
|
|
+ {
|
|
|
+ //求补码,结果为正
|
|
|
+ Batt_current = (UINT16)((UINT16)(~(Batt_current))+1);
|
|
|
+ Batt_current = Batt_current/10;
|
|
|
+ BattCurrentNegFlag = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //源码,结果为正
|
|
|
+ Batt_current = Batt_current/10;
|
|
|
+ BattCurrentNegFlag = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ battI = Batt_current*BattCurrentNegFlag + 0x2710;
|
|
|
+ //bit0 ~ bit31 represent cell0 ~ cell31
|
|
|
+ battBalanceoInfo = dataPtr[(0x06+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1] | (dataPtr[(0x06+BATT_CELL_VOL_NUM+TEMP_NUM)*2] <<8) + (dataPtr[(0x07+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1]<<16) | (dataPtr[(0x07+BATT_CELL_VOL_NUM+TEMP_NUM)*2] <<24);
|
|
|
+
|
|
|
+ bmsHwVersion = dataPtr[(0x08+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1];
|
|
|
+ bmsSwVersion = dataPtr[(0x08+BATT_CELL_VOL_NUM+TEMP_NUM)*2];
|
|
|
+
|
|
|
+ temp = ((dataPtr[(0x09+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1])>>1)&0x03;
|
|
|
+ battMOSSwitchState = ((temp&0x01)<<1)|((temp&0x02)>>1);
|
|
|
+ if(AppDataInfo.BattLock==TRUE)
|
|
|
+ {
|
|
|
+ battMOSSwitchState = battMOSSwitchState |(0x01<<2);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ battMOSSwitchState = battMOSSwitchState |(0x00<<2);
|
|
|
+ }
|
|
|
+ battWarningState = (dataPtr[(0x09+BATT_CELL_VOL_NUM+TEMP_NUM)*2+0]<<16) | (dataPtr[(0x0A+BATT_CELL_VOL_NUM+TEMP_NUM)*2+0] << 8) |(dataPtr[(0x0A+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1]);
|
|
|
+ battSOC = dataPtr[(0x0B+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1];
|
|
|
+ battSOH = dataPtr[(0x0C+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1];
|
|
|
+ Battdesigncap = (dataPtr[(0x0E+BATT_CELL_VOL_NUM+TEMP_NUM)*2])<<24|(dataPtr[(0x0E+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1])<<16|(dataPtr[(0x0F+BATT_CELL_VOL_NUM+TEMP_NUM)*2])<<8|(dataPtr[(0x0F+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1]);
|
|
|
+ battPackVol =((dataPtr[(0x18+BATT_CELL_VOL_NUM+TEMP_NUM)*2])<<8|(dataPtr[(0x18+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1]))/10; //uint 100mV
|
|
|
+ maxCellVol = (dataPtr[(0x19+BATT_CELL_VOL_NUM+TEMP_NUM)*2] << 8) | dataPtr[(0x19+BATT_CELL_VOL_NUM+TEMP_NUM)*2 + 1];
|
|
|
+ minCellVol = (dataPtr[(0x1A+BATT_CELL_VOL_NUM+TEMP_NUM)*2] << 8) | dataPtr[(0x1A+BATT_CELL_VOL_NUM+TEMP_NUM)*2 + 1];
|
|
|
+ battHeatEnableState = dataPtr[(0x1C+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1]&0x01;
|
|
|
+
|
|
|
+ maxCellTemp = 0x00;
|
|
|
+ minCellTemp = 0xFF;
|
|
|
+ for(i=0;i<BATT_TEMP_NUM;i++)
|
|
|
+ {
|
|
|
+ maxCellTemp = max(maxCellTemp,battCellTemp[i]);
|
|
|
+ minCellTemp = min(minCellTemp,battCellTemp[i]);
|
|
|
+ }
|
|
|
+ nbSwVersion = APPSWVERSION;
|
|
|
+ nbHwVersion = HWVERSION;
|
|
|
+ BmsErrorDecode(battWarningState);
|
|
|
+ return true;
|
|
|
+}
|
|
|
+/***********************************************************************************************************************
|
|
|
+ * BMS故障解码函数
|
|
|
+ * 输入:BMS故障编码
|
|
|
+ * 输出:状态参数
|
|
|
+ * 处理:将BMS故障编码依次解为标准故障码
|
|
|
+***********************************************************************************************************************/
|
|
|
+static UINT8 BmsErrorDecode(UINT32 battWarningState)
|
|
|
+{
|
|
|
+ UINT16 ErrorNumTemp;
|
|
|
+ UINT8 ret;
|
|
|
+ if(battWarningState==0)
|
|
|
+ {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if(osOK==osMutexAcquire(Error_Mutex, 100))
|
|
|
+ {
|
|
|
+ ret = ((battWarningState) & 0x01) == 1 ;
|
|
|
+ if (ret)
|
|
|
+ {
|
|
|
+ ErrorNumTemp = 7;
|
|
|
+ PutErrorNum((UINT16 *)ErrorNum,sizeof(ErrorNum),ErrorNumTemp);
|
|
|
+ //str += "ERROR:存在电芯过放告警故障!!\n";单体电压过低
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = ((battWarningState >> 1) & 0x01) == 1 ;
|
|
|
+ if (ret)
|
|
|
+ {
|
|
|
+ ErrorNumTemp = 10;
|
|
|
+ PutErrorNum((UINT16 *)ErrorNum,sizeof(ErrorNum),ErrorNumTemp);
|
|
|
+ //str += "ERROR:存在总电压过放告警故障!!\n";总电压过低
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = ((battWarningState >> 2) & 0x01) == 1 ;
|
|
|
+ if (ret)
|
|
|
+ {
|
|
|
+ ErrorNumTemp = 8;
|
|
|
+ PutErrorNum((UINT16 *)ErrorNum,sizeof(ErrorNum),ErrorNumTemp);
|
|
|
+ //str += "ERROR:存在电芯过压告警故障!!\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = ((battWarningState >> 3) & 0x01) == 1 ;
|
|
|
+ if (ret)
|
|
|
+ {
|
|
|
+ ErrorNumTemp = 11;
|
|
|
+ PutErrorNum((UINT16 *)ErrorNum,sizeof(ErrorNum),ErrorNumTemp);
|
|
|
+ //str += "ERROR:存在总电压过压告警故障!!\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = ((battWarningState >> 4) & 0x01) == 1 ;
|
|
|
+ if (ret)
|
|
|
+ {
|
|
|
+ ErrorNumTemp = 12;
|
|
|
+ PutErrorNum((UINT16 *)ErrorNum,sizeof(ErrorNum),ErrorNumTemp);
|
|
|
+ //str += "ERROR:存在放电过流告警故障!!\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = ((battWarningState >> 5) & 0x01) == 1 ;
|
|
|
+ if (ret)
|
|
|
+ {
|
|
|
+ ErrorNumTemp = 13;
|
|
|
+ PutErrorNum((UINT16 *)ErrorNum,sizeof(ErrorNum),ErrorNumTemp);
|
|
|
+ //str += "ERROR:存在充电过流告警故障!!\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = ((battWarningState >> 6) & 0x01) == 1 ;
|
|
|
+ if (ret)
|
|
|
+ {
|
|
|
+ ErrorNumTemp = 2;
|
|
|
+ PutErrorNum((UINT16 *)ErrorNum,sizeof(ErrorNum),ErrorNumTemp);
|
|
|
+ //str += "ERROR:存在放电过温告警故障!!\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = ((battWarningState >> 7) & 0x01) == 1 ;
|
|
|
+ if (ret)
|
|
|
+ {
|
|
|
+ ErrorNumTemp = 2;
|
|
|
+ PutErrorNum((UINT16 *)ErrorNum,sizeof(ErrorNum),ErrorNumTemp);
|
|
|
+ //str += "ERROR:存在充电过温告警故障!!\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = ((battWarningState >> 8) & 0x01) == 1 ;
|
|
|
+ if (ret)
|
|
|
+ {
|
|
|
+ //str += "ERROR:存在环境高温告警故障!!\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = ((battWarningState >> 9) & 0x01) == 1 ;
|
|
|
+ if (ret)
|
|
|
+ {
|
|
|
+ //str += "ERROR:存在环境低温告警故障!!\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = ((battWarningState >> 10) & 0x01) == 1 ;
|
|
|
+ if (ret)
|
|
|
+ {
|
|
|
+ ErrorNumTemp = 27;
|
|
|
+ PutErrorNum((UINT16 *)ErrorNum,sizeof(ErrorNum),ErrorNumTemp);
|
|
|
+ //str += "ERROR:存在battSOC低告警故障!!\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = ((battWarningState >> 11) & 0x01) == 1 ;
|
|
|
+ if (ret)
|
|
|
+ {
|
|
|
+ ErrorNumTemp = 3;
|
|
|
+ PutErrorNum((UINT16 *)ErrorNum,sizeof(ErrorNum),ErrorNumTemp);
|
|
|
+ //str += "ERROR:存在MOS高温告警故障!!\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = ((battWarningState >> 16) & 0x01) == 1;
|
|
|
+ if (ret)
|
|
|
+ {
|
|
|
+ ErrorNumTemp = 18;
|
|
|
+ PutErrorNum((UINT16 *)ErrorNum,sizeof(ErrorNum),ErrorNumTemp);
|
|
|
+ //str += "ERROR:存在温度采集失效/传感器故障!!\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = ((battWarningState >> 17) & 0x01) == 1;
|
|
|
+ if (ret)
|
|
|
+ {
|
|
|
+ ErrorNumTemp = 19;
|
|
|
+ PutErrorNum((UINT16 *)ErrorNum,sizeof(ErrorNum),ErrorNumTemp);
|
|
|
+ //str += "ERROR:存在电压采集失效/断线故障!!\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = ((battWarningState >> 18) & 0x01) == 1;
|
|
|
+ if (ret)
|
|
|
+ {
|
|
|
+ ErrorNumTemp = 17;
|
|
|
+ PutErrorNum((UINT16 *)ErrorNum,sizeof(ErrorNum),ErrorNumTemp);
|
|
|
+ //str += "ERROR:存在放电MOS失效故障!!\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = ((battWarningState >> 19) & 0x01) == 1;
|
|
|
+ if (ret)
|
|
|
+ {
|
|
|
+ ErrorNumTemp = 16;
|
|
|
+ PutErrorNum((UINT16 *)ErrorNum,sizeof(ErrorNum),ErrorNumTemp);
|
|
|
+ //str += "ERROR:存在充电MOS失效故障!!\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = ((battWarningState >> 20) & 0x01) == 1;
|
|
|
+ if (ret)
|
|
|
+ {
|
|
|
+ ErrorNumTemp = 22;
|
|
|
+ PutErrorNum((UINT16 *)ErrorNum,sizeof(ErrorNum),ErrorNumTemp);
|
|
|
+ //str += "ERROR:存在电芯不均衡告警!!\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = ((battWarningState >> 22) & 0x01) == 1;
|
|
|
+ if (ret)
|
|
|
+ {
|
|
|
+ ErrorNumTemp = 1;
|
|
|
+ PutErrorNum((UINT16 *)ErrorNum,sizeof(ErrorNum),ErrorNumTemp);
|
|
|
+ //str += "ERROR:存在放电低温告警故障!!\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = ((battWarningState >> 23) & 0x01) == 1 ;
|
|
|
+ if (ret)
|
|
|
+ {
|
|
|
+ ErrorNumTemp = 1;
|
|
|
+ PutErrorNum((UINT16 *)ErrorNum,sizeof(ErrorNum),ErrorNumTemp);
|
|
|
+ //str += "ERROR:存在充电低温告警故障!!\n";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ printf("get Muxtex error\n");
|
|
|
+ #endif
|
|
|
+ }
|
|
|
+ osMutexRelease(Error_Mutex);
|
|
|
+ }
|
|
|
+ return 1;
|
|
|
+}
|
|
|
+/***********************************************************************************************************************
|
|
|
+ * 获取故障码函数
|
|
|
+ * 输入:故障数组和长度
|
|
|
+ * 输出:故障代码
|
|
|
+ * 处理:从故障数组中获取故障码,并将之前的故障码向前移动
|
|
|
+***********************************************************************************************************************/
|
|
|
+UINT16 GetErrorNum(UINT16 *ErrorArray,UINT8 Errorlen)
|
|
|
+{
|
|
|
+ UINT16 OutNum;
|
|
|
+ OutNum = *(ErrorArray);
|
|
|
+ for(UINT8 i=0;i<Errorlen-1;i++)
|
|
|
+ {
|
|
|
+ *(ErrorArray+i) = *(ErrorArray+i+1);
|
|
|
+ if(*(ErrorArray+i+1)==0)
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return OutNum;
|
|
|
+}
|
|
|
+/***********************************************************************************************************************
|
|
|
+ * 故障码注入函数
|
|
|
+ * 输入:故障数组,故障长度,故障码
|
|
|
+ * 输出:状态
|
|
|
+ * 处理:将故障码写入到故障数组中,如果存在则不写入,如果存在则不写入
|
|
|
+***********************************************************************************************************************/
|
|
|
+UINT8 PutErrorNum(UINT16 *ErrorArray,UINT8 Errorlen,UINT16 ErrorNum)
|
|
|
+{
|
|
|
+ for(UINT8 i=0;i<Errorlen;i++)
|
|
|
+ {
|
|
|
+ if(*(ErrorArray+i)==0)
|
|
|
+ {
|
|
|
+ *(ErrorArray+i) = ErrorNum;
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if(*(ErrorArray+i)==ErrorNum)
|
|
|
+ {
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return 2;
|
|
|
+}
|
|
|
+/***********************************************************************************************************************
|
|
|
* 运行数据保存函数
|
|
|
* 输入:空
|
|
|
* 输出:空
|
|
|
* 处理:将运行数据进行保存
|
|
|
-*******/
|
|
|
+***********************************************************************************************************************/
|
|
|
void SaveAppData(void)
|
|
|
{
|
|
|
OSAFILE fp = PNULL;
|
|
@@ -60,12 +391,12 @@ void SaveAppData(void)
|
|
|
OsaFclose(fp);
|
|
|
return;
|
|
|
}
|
|
|
-/*******
|
|
|
+/***********************************************************************************************************************
|
|
|
* 运行数据加载函数
|
|
|
* 输入:空
|
|
|
* 输出:空
|
|
|
* 处理:将运行数据进行加载,若新增了数据项,则保持前面数据项不动
|
|
|
-*******/
|
|
|
+***********************************************************************************************************************/
|
|
|
void LoadAppData(void)
|
|
|
{
|
|
|
OSAFILE fp = PNULL;
|
|
@@ -131,12 +462,12 @@ void LoadAppData(void)
|
|
|
OsaFclose(fp);
|
|
|
return;
|
|
|
}
|
|
|
-/*******
|
|
|
+/***********************************************************************************************************************
|
|
|
* 配置文件保存函数
|
|
|
* 输入:空
|
|
|
* 输出:空
|
|
|
* 处理:将全局配置文件进行保存
|
|
|
-*******/
|
|
|
+***********************************************************************************************************************/
|
|
|
void SaveAppConfig(void)
|
|
|
{
|
|
|
OSAFILE fp = PNULL;
|
|
@@ -189,12 +520,12 @@ void SaveAppConfig(void)
|
|
|
OsaFclose(fp);
|
|
|
return;
|
|
|
}
|
|
|
-/*******
|
|
|
+/***********************************************************************************************************************
|
|
|
* 配置文件加载函数
|
|
|
* 输入:空
|
|
|
* 输出:空
|
|
|
* 处理:将全局配置文件进行加载
|
|
|
-*******/
|
|
|
+***********************************************************************************************************************/
|
|
|
void LoadAppConfig(void)
|
|
|
{
|
|
|
OSAFILE fp = PNULL;
|
|
@@ -275,13 +606,13 @@ void LoadAppConfig(void)
|
|
|
OsaFclose(fp);
|
|
|
return;
|
|
|
}
|
|
|
-/*******
|
|
|
+/***********************************************************************************************************************
|
|
|
* 配置文件初始化函数
|
|
|
* 输入:空
|
|
|
* 输出:空
|
|
|
* 处理:将全局配置文件进行初始化
|
|
|
* 注意:配置数据不增加数据项,若增加数据项,需要修改加载函数
|
|
|
-*******/
|
|
|
+***********************************************************************************************************************/
|
|
|
static void setDefaultAppConfigData(void)
|
|
|
{
|
|
|
UINT8 i = 0;
|
|
@@ -294,13 +625,13 @@ static void setDefaultAppConfigData(void)
|
|
|
AppNVMData.BattTempCount = 5;//默认5个温度
|
|
|
return;
|
|
|
}
|
|
|
-/*******
|
|
|
+/***********************************************************************************************************************
|
|
|
* 运行数据初始化函数
|
|
|
* 输入:空
|
|
|
* 输出:空
|
|
|
* 处理:将运行数据进行初始化
|
|
|
* 注:每增加一项数据项,需要增加默认值
|
|
|
-*******/
|
|
|
+***********************************************************************************************************************/
|
|
|
static void setDefaultAppDataInfo(void)
|
|
|
{
|
|
|
memset(&AppDataInfo, 0x00, sizeof(AppDataInfo));
|
|
@@ -318,12 +649,12 @@ static void setDefaultAppDataInfo(void)
|
|
|
AppDataInfo.BattStolenFlag = 0;
|
|
|
return;
|
|
|
}
|
|
|
-/*******
|
|
|
- * Fota升级处理函数
|
|
|
- * 输入:网络接收的数据,网络链接ID
|
|
|
- * 输出:0x00表示数据未准备完成,0x01表示数据模块OTA数据准备完成,0x88表示BMS的OTA数据准备完成
|
|
|
- * 处理:将接收的数据进行校验,搬运至升级区域,并进行应答
|
|
|
-*******/
|
|
|
+/***********************************************************************************************************************
|
|
|
+ * 认证加密函数
|
|
|
+ * 输入:明文
|
|
|
+ * 输出:密文
|
|
|
+ * 处理:将明文加密为译文
|
|
|
+***********************************************************************************************************************/
|
|
|
UINT16 encryptionAlgorithm (UINT16 plainText)
|
|
|
{
|
|
|
UINT16 cipherText = 1;
|
|
@@ -341,6 +672,12 @@ UINT16 encryptionAlgorithm (UINT16 plainText)
|
|
|
}
|
|
|
return cipherText;
|
|
|
}
|
|
|
+/***********************************************************************************************************************
|
|
|
+ * 认证解密函数
|
|
|
+ * 输入:密文
|
|
|
+ * 输出:明文
|
|
|
+ * 处理:将明文解密为译文
|
|
|
+***********************************************************************************************************************/
|
|
|
// UINT8 decryptionAlgorithm (UINT16 cipherText)
|
|
|
// {
|
|
|
// UINT16 plainText = 1;
|
|
@@ -358,3 +695,9 @@ UINT16 encryptionAlgorithm (UINT16 plainText)
|
|
|
// }
|
|
|
// return (UINT8)plainText;
|
|
|
// }
|
|
|
+/***********************************************************************************************************************
|
|
|
+ * Fota升级处理函数
|
|
|
+ * 输入:网络接收的数据,网络链接ID
|
|
|
+ * 输出:0x00表示数据未准备完成,0x01表示数据模块OTA数据准备完成,0x88表示BMS的OTA数据准备完成
|
|
|
+ * 处理:将接收的数据进行校验,搬运至升级区域,并进行应答
|
|
|
+***********************************************************************************************************************/
|