Browse Source

1.TCP改动通过,2.心跳包发送,3.网络下发状态转换完成

CHENJIE-PC\QiXiang_CHENJIE 3 years ago
parent
commit
8d1d1011da
13 changed files with 827 additions and 239 deletions
  1. 7 2
      inc/AppConfig.h
  2. 6 1
      inc/AppFunc.h
  3. 3 0
      inc/AppSignal.h
  4. 133 5
      inc/AppTaskTcp.h
  5. 0 5
      inc/AppTaskUart.h
  6. 292 201
      src/AppFunc.c
  7. 6 4
      src/AppSignal.c
  8. 15 6
      src/AppTaskControl.c
  9. 80 4
      src/AppTaskMain.c
  10. 281 3
      src/AppTaskTcp.c
  11. 2 3
      src/AppTaskUart.c
  12. 2 2
      src/app.c
  13. 0 3
      src/hal_module_adapter.c

+ 7 - 2
inc/AppConfig.h

@@ -11,7 +11,7 @@
 #define BMS_MANUFACTURE             (2)                 //BMS制造商表示1-超力源,2-美顺
 #define BMS_INFO                    (1)                 //1-1表示超力源4830,1-2表示超力源6060,2-1表示美顺6455
 #define DATA_MODULE_TYPE            (1)                 //1表示NB模块,2表示4G cat1
-#define EOLSTATE                    (0)                 //1表示下线检测跳过,使用默认值,0表示使用下线检测
+#define EOLSTATE                    (1)                 //1表示下线检测跳过,使用默认值,0表示使用下线检测
 #define DEFAULT_SN                  "RLTEST00000000001" //默认上传的SN编码
 #define	APPSWVERSION		        0x03000000          //数据模块软件版本号
 
@@ -31,6 +31,7 @@
 #define TCP_START_SYM1			0x23
 #define TCP_START_SYM2			0x23
 #define TCP_CMD_SYM				0x02	//实时信息上报是0x02
+#define TCP_HEART_SYM           0x07    //心跳包标志
 #define TCP_ANS_SYM 			0xFE
 
 /*-------以下为下行指令定义区----------*/
@@ -101,7 +102,11 @@ typedef enum
     WORK,
     LISTEN
 }process_app;
-
+typedef struct _UartWriteDataType
+{
+    volatile UINT8 WriteCmd; 
+    UINT8 Data[2];
+}UartWriteData_S;
 
 
 #endif

+ 6 - 1
inc/AppFunc.h

@@ -28,13 +28,14 @@ typedef struct _Fota_Type
 
 }Fota_Type;
 
-void battSOCDisplay();
+UINT8 bcc_chk(UINT8* data, UINT8 length);
 void LEDDisplay(void);
 BOOL uartBattInfoDecode(UINT8* dataPtr);
 static UINT8 BmsErrorDecode(UINT32 battWarningState);
 UINT16 GetErrorNum(UINT16 *ErrorArray,UINT8 Errorlen);
 UINT8 PutErrorNum(UINT16 *ErrorArray,UINT8 Errorlen,UINT16 ErrorNum);
 
+
 void SaveAppData(void);
 void LoadAppData(void);
 void SaveAppConfig(void);
@@ -43,3 +44,7 @@ static void setDefaultAppConfigData(void);
 static void setDefaultAppDataInfo(void);
 
 UINT16  encryptionAlgorithm (UINT16 plainText);
+
+void Fota_Func(UINT8 *DataPtr,INT32 connectId);
+static UINT8 bcc_chk_fota(UINT8* data, UINT8 length);
+static UINT8 Fota_crc_chk(UINT8* data,UINT8 length);

+ 3 - 0
inc/AppSignal.h

@@ -45,12 +45,15 @@ extern UINT8	reservedSignal8;
 
 extern UINT8    Lockstatus;
 extern UINT8    TcpErrorcount;
+extern UINT8    TCPWorkState;
 extern UINT8    TcpSendLen;
 extern UINT8    CanMsgEnble;
 extern UINT8 	UDSSwitch;
 extern UINT8 	UDSSwitch ;
 extern UINT8 	PosFlag ;     
 extern UINT8    UartRecvFlag ;
+extern UINT8    BuzzerControl;
+
 //declear the UINT16 vars
 extern UINT16	battCellU[28];
 extern UINT16	minCellVol;

+ 133 - 5
inc/AppTaskTcp.h

@@ -31,12 +31,140 @@
 #include "AppFunc.h"
 
 #define PROC_TCP_TASK_STACK_SIZE           (2048)
+#define APP_EVENT_QUEUE_SIZE               (10)
+#define QMSG_ID_BASE               (0x16) 
+#define QMSG_ID_NW_IP_READY        (QMSG_ID_BASE)
+#define QMSG_ID_NW_IP_SUSPEND      (QMSG_ID_BASE + 1)
+#define QMSG_ID_NW_IP_NOREACHABLE  (QMSG_ID_BASE + 2)
+#define QMSG_ID_SOCK_SENDPKG       (QMSG_ID_BASE + 4)
+#define QMSG_ID_SOCK_RECVPKG       (QMSG_ID_BASE + 5)
+#define QMSG_ID_SOCK_LISTEN        (QMSG_ID_BASE + 6)
+#define QMSG_ID_SOCK_EXIT          (QMSG_ID_BASE + 7)
+// typedef struct BattInfoType
+// {	
+// 	UINT8	sendTimeUTC[6];
+// 	UINT8	msgMark;
+// 	UINT8	msgCollectionTimeUTC[6];
+// 	UINT8	signalStrength;
+// 	UINT8	errClass;
+// 	UINT8	errCode[2];
+// 	UINT8	battI[2];
+// 	UINT8	battLinkVol[2];
+// 	UINT8	battPackVol[2];
+// 	UINT8   switchState;
+// 	UINT8	battSOC;
+// 	UINT8	battSOH;
+// 	UINT8	batCellBalenceState[4];	//uint32 should change to uint8[]: each bit stand for 1 cell, up to 1024
+// 	UINT8	battCellNum;			//uint8 should change to uint16 (0~65535)  //zhengchao  31
+// 	//UINT8	*battCellUPtr;
+// 	//+1
+// 	UINT16	battTempNum;			//uint8 should change to uint16 (0~65535)
+// 	//UINT8	*battCellTempPtr;
+// 	//+3
+// 	UINT8	battWorkState;
+// 	UINT8	battHeatEnableState;
+// 	UINT8 	battotherTempNum;
+// 	UINT8 	battotherTemp[BMS_OTHER_TEMP+NB_OTHER_TEMP_NUM];
+// }BattInfoType;
+// typedef struct BattMsgtoTcpType
+// {	
+// 	UINT8 	startSymbol[2];
+// 	UINT8	cmdSymbol;
+// 	UINT8	ansSymbol;
+// 	UINT8	SN[BATT_SN_LEN];
+// 	UINT8	encryptMethod;
+// 	UINT8	dataLength[2];	
+// 	BattInfoType battInfo;	
+// 	UINT8	CRC;
+// }BattMsgtoTcpType;
+/*---------------------------------------------------------------------------*/
+typedef struct HeartMsgtoTcpType
+{	
+	UINT8 	startSymbol[2];
+	UINT8	cmdSymbol;
+	UINT8	ansSymbol;
+	UINT8	SN[BATT_SN_LEN];
+	UINT8	encryptMethod;
+	UINT8	dataLength[2];		
+	UINT8	CRC;
+}HeartMsgtoTcpType;
+typedef struct _GPSInfoType
+{
+	UINT8	sendTimeUTC[6];
+	UINT8	msgMark;
+	UINT8	msgCollectionTimeUTC[6];
+	UINT8	locateMark;
+	UINT8	satelliteNum;
+	UINT8	direction[2];
+	UINT8	speed[2];
+	UINT8	altitude[2];
+	UINT8	latitude[4];
+	UINT8	longitude[4];
+	UINT8   AccMileage[4];
+	
+}GPSInfoType;
+typedef struct GPSMsgtoTcpType
+{
+	UINT8 	startSymbol[2];
+	UINT8	cmdSymbol;
+	UINT8	ansSymbol;
+	UINT8	SN[BATT_SN_LEN];
+	UINT8	encryptMethod;
+	UINT8	dataLength[2];	
+	GPSInfoType gpsInfo;	
+	UINT8	CRC;
+}GPSMsgtoTcpType;
+/*---------------------------------------------------------------------------*/
+typedef struct _VerInfoType
+{
+	UINT8	sendTimeUTC[6];
+	UINT8	msgMark;
+	UINT8	msgCollectionTimeUTC[6];
+	UINT8	ICCID[20];
+	UINT8	IMEI[15];
+	UINT8	BMSHwVersion[2];
+	UINT8	BMSSwVersion[4];
+	UINT8	NBHwVersion[2];
+	UINT8	BLVersion[4];
+	UINT8	DRVVersion[4];
+	UINT8	APPVersion[4];
+	UINT8	BmsType;
+	UINT8	BmsInfo;
+	UINT8   DataModuleType;
+}VerInfoType;
+typedef struct VersionMsgtoTcpType
+{
+	UINT8 	startSymbol[2];
+	UINT8	cmdSymbol;
+	UINT8	ansSymbol;
+	UINT8	SN[BATT_SN_LEN];
+	UINT8	encryptMethod;
+	UINT8	dataLength[2];	
+	VerInfoType VerInfo;	
+	UINT8	CRC;
+}VersionMsgtoTcpType;
+typedef struct _DebugInfoType
+{
+	UINT8	sendTimeUTC[6];
+	UINT8	msgMark;
+	UINT8  	DebugLen[2];
+}DebugInfoType;
+typedef struct DebugMsgtoTcp_Type
+{
+	UINT8 	startSymbol[2];
+	UINT8	cmdSymbol;
+	UINT8	ansSymbol;
+	UINT8	SN[BATT_SN_LEN];
+	UINT8	encryptMethod;
+	UINT8	dataLength[2];		
+	DebugInfoType DebugInfo;
+	UINT8	CRC;
+}DebugMsgtoTcpType;
 typedef enum
 {
-    PROCESS_TCP_STATE_IDLE = 0,
-    PROCESS_TCP_STATE_SEND,
-    PROCESS_TCP_STATE_RECV,
-    PROCESS_TCP_STATE_SLEEP
-}process_TCP;
+    APP_SOCKET_CONNECTION_CLOSED = 0,
+    APP_SOCKET_CONNECTION_CONNECTING,
+    APP_SOCKET_CONNECTION_CONNECTED,    
+}AppSocketConnectionStatus;
 void AppTaskTcpInit(void *arg);
 void AppTaskTcpDeInit(void *arg);

+ 0 - 5
inc/AppTaskUart.h

@@ -53,11 +53,6 @@ typedef struct _UartAnswerData
     UINT8 data[120];
     UINT16 len;
 }UartAnswerData_S;
-typedef struct _UartWriteDataType
-{
-    volatile UINT8 WriteCmd; 
-    UINT8 Data[2];
-}UartWriteData_S;
 typedef struct _UartQueryType
 {
     UINT8 Bms_Address; 

+ 292 - 201
src/AppFunc.c

@@ -10,192 +10,16 @@
 #include "numeric.h"
 #include "hal_module_adapter.h"
 
-
-void battSOCDisplay()
+UINT8 bcc_chk(UINT8* data, UINT8 length)
 {
-	
-	static UINT8 lightTimer = 0;
-	UINT8 socLowLEDFlashPeriod = 10;//10*100 = 1000ms
-	UINT8 chargeLEDFlashPeriod = 6;//6*100 = 600ms
-	float dutyRatio = 0.4;
-
-	if(UartRecvFlag == true)
-	{ 
-		lightTimer++;
-		
-		if(battWorkState == 0||battWorkState == 1)  //静置或放电状态
-		{
-			if(battSOC<=10)
-			{
-				if(lightTimer<(UINT8)(socLowLEDFlashPeriod*dutyRatio))
-				{
-					NetSocDisplay(LED_SOC_0,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_1,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_2,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_3,LED_TURN_OFF);	
-				}
-				else if(lightTimer>=(UINT8)(socLowLEDFlashPeriod*dutyRatio) && lightTimer<socLowLEDFlashPeriod)
-				{
-					NetSocDisplay(LED_SOC_0,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_1,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_2,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_3,LED_TURN_OFF);	
-				}
-				else
-				{
-					NetSocDisplay(LED_SOC_0,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_1,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_2,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_3,LED_TURN_OFF);	
-					lightTimer = 0;
-				}			
-			}	
-			else if(battSOC>10&&battSOC<=25)
-			{
-				NetSocDisplay(LED_SOC_0,LED_TURN_ON);
-				NetSocDisplay(LED_SOC_1,LED_TURN_OFF);
-				NetSocDisplay(LED_SOC_2,LED_TURN_OFF);
-				NetSocDisplay(LED_SOC_3,LED_TURN_OFF);	
-				lightTimer = 0;
-			}
-			else if(battSOC>25&&battSOC<=50)
-			{
-				NetSocDisplay(LED_SOC_0,LED_TURN_ON);
-				NetSocDisplay(LED_SOC_1,LED_TURN_ON);
-				NetSocDisplay(LED_SOC_2,LED_TURN_OFF);
-				NetSocDisplay(LED_SOC_3,LED_TURN_OFF);	
-				lightTimer = 0;
-			}
-			else if(battSOC>50&&battSOC<=75)
-			{
-				NetSocDisplay(LED_SOC_0,LED_TURN_ON);
-				NetSocDisplay(LED_SOC_1,LED_TURN_ON);
-				NetSocDisplay(LED_SOC_2,LED_TURN_ON);
-				NetSocDisplay(LED_SOC_3,LED_TURN_OFF);	
-				lightTimer = 0;
-			}
-			else if(battSOC>75&&battSOC<=100)
-			{
-				NetSocDisplay(LED_SOC_0,LED_TURN_ON);
-				NetSocDisplay(LED_SOC_1,LED_TURN_ON);
-				NetSocDisplay(LED_SOC_2,LED_TURN_ON);
-				NetSocDisplay(LED_SOC_3,LED_TURN_ON);
-				lightTimer = 0;
-			}
-		}
-		else if(battWorkState == 2)
-		{
-			if(battSOC<=25)
-			{
-				if(lightTimer<(UINT8)(chargeLEDFlashPeriod*dutyRatio))
-				{
-					NetSocDisplay(LED_SOC_0,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_1,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_2,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_3,LED_TURN_OFF);	
-				}
-				else if(lightTimer>=(UINT8)(chargeLEDFlashPeriod*dutyRatio) && lightTimer<chargeLEDFlashPeriod)
-				{
-					NetSocDisplay(LED_SOC_0,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_1,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_2,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_3,LED_TURN_OFF);	
-				}
-				else
-				{
-					NetSocDisplay(LED_SOC_0,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_1,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_2,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_3,LED_TURN_OFF);	
-					lightTimer = 0;
-				}			
-			}	
-			else if(battSOC>25&&battSOC<=50)
-			{
-				if(lightTimer<(UINT8)(chargeLEDFlashPeriod*dutyRatio))
-				{
-					NetSocDisplay(LED_SOC_0,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_1,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_2,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_3,LED_TURN_OFF);	
-				}
-				else if(lightTimer>=(UINT8)(chargeLEDFlashPeriod*dutyRatio) && lightTimer<chargeLEDFlashPeriod)
-				{
-					NetSocDisplay(LED_SOC_0,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_1,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_2,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_3,LED_TURN_OFF);	
-				}
-				else
-				{
-					NetSocDisplay(LED_SOC_0,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_1,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_2,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_3,LED_TURN_OFF);
-					lightTimer = 0;
-				}
-			}
-			else if(battSOC>50&&battSOC<=75)
-			{
-				if(lightTimer<(UINT8)(chargeLEDFlashPeriod*dutyRatio))
-				{
-					NetSocDisplay(LED_SOC_0,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_1,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_2,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_3,LED_TURN_OFF);	
-				}
-				else if(lightTimer>=(UINT8)(chargeLEDFlashPeriod*dutyRatio) && lightTimer<chargeLEDFlashPeriod)
-				{
-					NetSocDisplay(LED_SOC_0,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_1,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_2,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_3,LED_TURN_OFF);	
-				}
-				else
-				{
-					NetSocDisplay(LED_SOC_0,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_1,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_2,LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_3,LED_TURN_OFF);
-					lightTimer = 0;
-				}
-
-			}
-			else if(battSOC>75&&battSOC<=97)
-			{
-				if(lightTimer<(UINT8)(chargeLEDFlashPeriod*dutyRatio))
-				{
-					NetSocDisplay(LED_SOC_0,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_1,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_2,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_3,LED_TURN_ON);	
-				}
-				else if(lightTimer>=(UINT8)(chargeLEDFlashPeriod*dutyRatio) && lightTimer<chargeLEDFlashPeriod)
-				{
-					NetSocDisplay(LED_SOC_0,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_1,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_2,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_3,LED_TURN_OFF);	
-				}
-				else
-				{
-					NetSocDisplay(LED_SOC_0,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_1,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_2,LED_TURN_ON);
-					NetSocDisplay(LED_SOC_3,LED_TURN_OFF);	
-					lightTimer = 0;
-				}
-			}
-			else if(battSOC>97&&battSOC<=100)
-			{
-				NetSocDisplay(LED_SOC_0,LED_TURN_ON);
-				NetSocDisplay(LED_SOC_1,LED_TURN_ON);
-				NetSocDisplay(LED_SOC_2,LED_TURN_ON);
-				NetSocDisplay(LED_SOC_3,LED_TURN_ON);	
-			}		
-		}
-	}
-	
+    UINT8 bcc_chk_return = 0x00;
+    UINT8 count = 0;
+    while (count<length)
+    {
+        bcc_chk_return^=data[count];
+        count++;
+    }
+    return  bcc_chk_return;
 }
 /***********************************************************************************************************************
  * LED控制函数
@@ -272,14 +96,16 @@ void LEDDisplay(void)
 				FaultDisplay(LED_TURN_OFF);
 				LightTimer = 0;			
 			}
-			#ifdef USING_PRINTF
-				printf("[%d]",__LINE__);
-			#endif
 			return;
 		}
 		else if(UartRecvFlag==1)				//电池接收到UART信息,且正确运行
 		{
-			if(battWarningState != 0)
+			if(battWorkState  == 0x02)  //充电模式下,如果只有“SOC低故障”,那么就不显示故障灯   zhengchao20210713 add
+			{
+				if((((battWarningState >> 10) & 0x01) == 0x01) &&  ((battWarningState & 0xFFFFFBFF) == 0x00))
+					return;
+			}
+			if(battWarningState != 0)			//电池存在故障
 			{
 				if(ErrorLightTimer<(UINT8)(LEDFlashPeriod*DutyRatio)) 
 				{	
@@ -331,10 +157,7 @@ void LEDDisplay(void)
 						NetSocDisplay(LED_SOC_2,LED_TURN_OFF);
 						NetSocDisplay(LED_SOC_3,LED_TURN_OFF);	
 						LightTimer = 0;
-					}
-					#ifdef USING_PRINTF
-						printf("[%d]",__LINE__);
-					#endif				
+					}				
 				}	
 				else if(battSOC>10&&battSOC<=25)
 				{
@@ -394,10 +217,7 @@ void LEDDisplay(void)
 						NetSocDisplay(LED_SOC_2,LED_TURN_OFF);
 						NetSocDisplay(LED_SOC_3,LED_TURN_OFF);	
 						LightTimer = 0;
-					}
-					#ifdef USING_PRINTF
-						printf("[%d]",__LINE__);
-					#endif			
+					}			
 				}	
 				else if(battSOC>25&&battSOC<=50)
 				{
@@ -845,9 +665,6 @@ void SaveAppData(void)
     }
     AppDataHr.fileBodySize   = sizeof(AppDataInfo); 
     AppDataHr.checkSum       = OsaCalcCrcValue((UINT8 *)&AppDataInfo, sizeof(AppDataInfo));
-    #ifdef USING_PRINTF
-		printf(" AppDataHr.fileBodySize:%x\n",AppDataHr.fileBodySize);
-	#endif
     writeCount = OsaFwrite(&AppDataHr, sizeof(AppDataHr), 1, fp);
     if (writeCount != 1)
     {
@@ -1177,4 +994,278 @@ UINT16  encryptionAlgorithm (UINT16 plainText)
  * 输入:网络接收的数据,网络链接ID
  * 输出:0x00表示数据未准备完成,0x01表示数据模块OTA数据准备完成,0x88表示BMS的OTA数据准备完成
  * 处理:将接收的数据进行校验,搬运至升级区域,并进行应答
-***********************************************************************************************************************/
+***********************************************************************************************************************/
+void Fota_Func(UINT8 *DataPtr,INT32 connectId)
+{
+    Fota_Type Fota_S;
+    UINT8 Fota_Answer[43];
+    UINT8 Fota_Cmd;
+    INT8 ret;
+    UINT8* Data_Read_Buffer=PNULL;
+    UINT8 Data_Read_Crc;
+    if(*(DataPtr+30)==0x01)
+    {
+        Fota_S.Fota_Flash_Addres = FLASH_FOTA_REGION_START;
+        Fota_Cmd = *(DataPtr+31);
+        Fota_Answer[0] = TCP_START_SYM1;
+        Fota_Answer[1] = TCP_START_SYM2;
+        Fota_Answer[2] = TCP_CONCMD_SYM;
+        switch (Fota_Cmd)
+        {
+            case 0x01:
+            {
+                Fota_S.Fota_All_Data_Len = *(DataPtr+33)<<24|*(DataPtr+34)<<16|*(DataPtr+35)<<8|*(DataPtr+36);
+                Fota_S.Fota_Current_Addres = *(DataPtr+37)<<24|*(DataPtr+38)<<16|*(DataPtr+39)<<8|*(DataPtr+40);
+                if(Fota_S.Fota_All_Data_Len>=(FLASH_BMS_FOTA_START_ADDR - FLASH_FOTA_REGION_START))
+                {
+                    Fota_Answer[3] = 0x02;
+                }
+                else
+                {
+                    Fota_Answer[3] = 0x01;
+                    BSP_QSPI_Erase_Safe(Fota_S.Fota_Flash_Addres,(FLASH_BMS_FOTA_START_ADDR - FLASH_FOTA_REGION_START)); //512k-32k = 480k -> 0x75300  0x78000
+                }
+                memcpy(&Fota_Answer[4],(DataPtr+4),BATT_SN_LEN);
+                Fota_Answer[21] = TCP_ENCPT_DISABLE;
+                Fota_Answer[22] = 0x00;
+                Fota_Answer[23] = 0x12;
+                memcpy(&Fota_Answer[24],(DataPtr+24),18);
+                Fota_Answer[42] =  bcc_chk_fota(Fota_Answer,42);
+                tcpipConnectionSend(connectId,Fota_Answer,43,0,0,0);
+                break;
+            }
+            case 0x02:
+            {
+                Fota_S.Fota_All_Data_Len = *(DataPtr+33)<<24|*(DataPtr+34)<<16|*(DataPtr+35)<<8|*(DataPtr+36);
+                Fota_S.Fota_Current_Addres = *(DataPtr+37)<<24|*(DataPtr+38)<<16|*(DataPtr+39)<<8|*(DataPtr+40);
+                Fota_S.Fota_Recv_Data_Len = *(DataPtr+41);
+                memset(Fota_S.Fota_Recv_Data,0x00,100);
+                memcpy(Fota_S.Fota_Recv_Data,(DataPtr+42),*(DataPtr+41));
+                Fota_S.Fota_CRC = Fota_crc_chk(Fota_S.Fota_Recv_Data,Fota_S.Fota_Recv_Data_Len);
+                Data_Read_Buffer = malloc(Fota_S.Fota_Recv_Data_Len+1);
+                if(Fota_S.Fota_CRC == *(DataPtr+Fota_S.Fota_Recv_Data_Len+42)||Data_Read_Buffer!=PNULL)
+                {
+                    if(Fota_S.Fota_Recv_Data_Len%4!=0)
+                    {
+                    Fota_S.Fota_Recv_Data_Len = Fota_S.Fota_Recv_Data_Len + 4-(Fota_S.Fota_Recv_Data_Len%4);
+                    }
+                    BSP_QSPI_Write_Safe(Fota_S.Fota_Recv_Data,Fota_S.Fota_Flash_Addres+Fota_S.Fota_Current_Addres,Fota_S.Fota_Recv_Data_Len);
+                    memset(Data_Read_Buffer,0x00,Fota_S.Fota_Recv_Data_Len);
+                    BSP_QSPI_Read_Safe(Data_Read_Buffer,Fota_S.Fota_Flash_Addres+Fota_S.Fota_Current_Addres,Fota_S.Fota_Recv_Data_Len);
+                    Data_Read_Crc = Fota_crc_chk(Data_Read_Buffer,Fota_S.Fota_Recv_Data_Len);
+                    #ifdef USING_PRINTF
+                        printf("Data_Read_Buffer:\n");
+                        for(int i=0;i<Fota_S.Fota_Recv_Data_Len;i++)
+                        {
+                            printf("%x  ",*(Data_Read_Buffer+i));
+                        }    
+                        printf("\n");
+                    #endif
+                    if(Data_Read_Crc==Fota_S.Fota_CRC )
+                    {
+                        Fota_Answer[3] = 0x01;
+                    }
+                    else
+                    {
+                        Fota_Answer[3] = 0x02;
+                        BSP_QSPI_Erase_Safe(Fota_S.Fota_Flash_Addres+Fota_S.Fota_Current_Addres,Fota_S.Fota_Recv_Data_Len);
+                    }
+                }
+                else//数据校验失败
+                {
+                    Fota_Answer[3] = 0x02;
+                }
+                if(Data_Read_Buffer!=PNULL)
+                    free(Data_Read_Buffer);
+                Data_Read_Buffer =PNULL;
+                memcpy(&Fota_Answer[4],(DataPtr+4),BATT_SN_LEN);
+                Fota_Answer[21] = TCP_ENCPT_DISABLE;
+                Fota_Answer[22] = 0x00;
+                Fota_Answer[23] = 0x12;
+                memcpy(&Fota_Answer[24],(DataPtr+24),18);
+                Fota_Answer[42] =  bcc_chk_fota(Fota_Answer,42);
+                tcpipConnectionSend(connectId,Fota_Answer,43,0,0,0);
+                break;
+            }
+            case 0x03:
+            {
+                Fota_S.Fota_All_Data_Len = *(DataPtr+33)<<24|*(DataPtr+34)<<16|*(DataPtr+35)<<8|*(DataPtr+36);
+                Fota_S.Fota_Current_Addres = *(DataPtr+37)<<24|*(DataPtr+38)<<16|*(DataPtr+39)<<8|*(DataPtr+40);
+                Fota_Answer[3] = 0x01;
+                memcpy(&Fota_Answer[4],(DataPtr+4),BATT_SN_LEN);
+                Fota_Answer[21] = TCP_ENCPT_DISABLE;
+                Fota_Answer[22] = 0x00;
+                Fota_Answer[23] = 0x12;
+                memcpy(&Fota_Answer[24],(DataPtr+24),18);
+                Fota_Answer[42] =  bcc_chk_fota(Fota_Answer,42);
+                tcpipConnectionSend(connectId,Fota_Answer,43,0,0,0);
+                if(Fota_S.Fota_All_Data_Len==Fota_S.Fota_Current_Addres)
+                {
+                    NB_Fota_update_flag = TRUE;
+                }
+                else
+                {
+                    NB_Fota_update_flag = FALSE;
+                }
+                break;
+            }
+            default:
+            {
+                Fota_Answer[3] = 0x02;
+                memcpy(&Fota_Answer[4],(DataPtr+4),BATT_SN_LEN);
+                Fota_Answer[21] = TCP_ENCPT_DISABLE;
+                Fota_Answer[22] = 0x00;
+                Fota_Answer[23] = 0x12;
+                memcpy(&Fota_Answer[24],(DataPtr+24),18);
+                Fota_Answer[42] =  bcc_chk_fota(Fota_Answer,42);
+                tcpipConnectionSend(connectId,Fota_Answer,43,0,0,0);
+                break;
+            }
+                
+        }
+    }
+    else if(*(DataPtr+30)==0x88)//BMS升级文件存放
+    {
+        Fota_S.Fota_Flash_Addres = FLASH_BMS_FOTA_START_ADDR;
+        Fota_Cmd = *(DataPtr+31);
+        Fota_Answer[0] = TCP_START_SYM1;
+        Fota_Answer[1] = TCP_START_SYM2;
+        Fota_Answer[2] = TCP_CONCMD_SYM;
+        switch (Fota_Cmd)
+        {
+            case 0x01:
+            {
+                Fota_S.Fota_All_Data_Len = *(DataPtr+33)<<24|*(DataPtr+34)<<16|*(DataPtr+35)<<8|*(DataPtr+36);
+                Fota_S.Fota_Current_Addres = *(DataPtr+37)<<24|*(DataPtr+38)<<16|*(DataPtr+39)<<8|*(DataPtr+40);
+                if(Fota_S.Fota_All_Data_Len>=(FLASH_BMS_FOTA_END_ADDR - FLASH_BMS_FOTA_START_ADDR))
+                {
+                    Fota_Answer[3] = 0x02;
+                }
+                else
+                {
+                    Fota_Answer[3] = 0x01;
+                }
+                memcpy(&Fota_Answer[4],(DataPtr+4),BATT_SN_LEN);
+                Fota_Answer[21] = TCP_ENCPT_DISABLE;
+                Fota_Answer[22] = 0x00;
+                Fota_Answer[23] = 0x12;
+                memcpy(&Fota_Answer[24],(DataPtr+24),18);
+                Fota_Answer[42] =  bcc_chk_fota(Fota_Answer,42);
+                tcpipConnectionSend(connectId,Fota_Answer,43,0,0,0);
+                if(Fota_Answer[3] == 0x01)
+                {
+                    BSP_QSPI_Erase_Safe(Fota_S.Fota_Flash_Addres,(FLASH_BMS_FOTA_END_ADDR - FLASH_BMS_FOTA_START_ADDR)); //512k-32k = 480k -> 0x75300  0x78000
+                }
+                break;
+            }
+            case 0x02:
+            {
+                Fota_S.Fota_All_Data_Len = *(DataPtr+33)<<24|*(DataPtr+34)<<16|*(DataPtr+35)<<8|*(DataPtr+36);
+                Fota_S.Fota_Current_Addres = *(DataPtr+37)<<24|*(DataPtr+38)<<16|*(DataPtr+39)<<8|*(DataPtr+40);
+                Fota_S.Fota_Recv_Data_Len = *(DataPtr+41);
+                memset(Fota_S.Fota_Recv_Data,0x00,100);
+                memcpy(Fota_S.Fota_Recv_Data,(DataPtr+42),*(DataPtr+41));
+                Fota_S.Fota_CRC = Fota_crc_chk(Fota_S.Fota_Recv_Data,Fota_S.Fota_Recv_Data_Len);
+                Data_Read_Buffer = malloc(Fota_S.Fota_Recv_Data_Len);
+                if(Fota_S.Fota_CRC == *(DataPtr+Fota_S.Fota_Recv_Data_Len+42)||Data_Read_Buffer!=PNULL)
+                {
+                    if(Fota_S.Fota_Recv_Data_Len%4!=0)
+                    {
+                    Fota_S.Fota_Recv_Data_Len = Fota_S.Fota_Recv_Data_Len + 4-(Fota_S.Fota_Recv_Data_Len%4);
+                    }
+                    BSP_QSPI_Write_Safe(Fota_S.Fota_Recv_Data,Fota_S.Fota_Flash_Addres+Fota_S.Fota_Current_Addres,Fota_S.Fota_Recv_Data_Len);
+                    
+                    BSP_QSPI_Read_Safe(Data_Read_Buffer,Fota_S.Fota_Flash_Addres+Fota_S.Fota_Current_Addres,Fota_S.Fota_Recv_Data_Len);
+                    Data_Read_Crc = Fota_crc_chk(Data_Read_Buffer,Fota_S.Fota_Recv_Data_Len);
+                    #ifdef USING_PRINTF1
+                        printf("\n\n\n");
+                        UINT8 temp[1];
+                        for(int i=0;i<Fota_S.Fota_Recv_Data_Len;i++)
+                        {
+                            printf("%x  ",*(Data_Read_Buffer+i));
+                        }    
+                        printf("\n\n\n");
+                    #endif
+                    if(Data_Read_Crc==Fota_S.Fota_CRC )
+                    {
+                        Fota_Answer[3] = 0x01;
+                    }
+                    else
+                    {
+                        Fota_Answer[3] = 0x02;
+                        BSP_QSPI_Erase_Safe(Fota_S.Fota_Flash_Addres+Fota_S.Fota_Current_Addres,Fota_S.Fota_Recv_Data_Len);
+                    }
+                }
+                else//数据校验失败
+                {
+                    Fota_Answer[3] = 0x02;
+                }
+                if(Data_Read_Buffer!=PNULL)
+                    free(Data_Read_Buffer);
+                Data_Read_Buffer =PNULL;
+                memcpy(&Fota_Answer[4],(DataPtr+4),BATT_SN_LEN);
+                Fota_Answer[21] = TCP_ENCPT_DISABLE;
+                Fota_Answer[22] = 0x00;
+                Fota_Answer[23] = 0x12;
+                memcpy(&Fota_Answer[24],(DataPtr+24),18);
+                Fota_Answer[42] =  bcc_chk_fota(Fota_Answer,42);
+                tcpipConnectionSend(connectId,Fota_Answer,43,0,0,0);
+                break;
+            }
+            case 0x03:
+            {
+                Fota_S.Fota_All_Data_Len = *(DataPtr+33)<<24|*(DataPtr+34)<<16|*(DataPtr+35)<<8|*(DataPtr+36);
+                Fota_S.Fota_Current_Addres = *(DataPtr+37)<<24|*(DataPtr+38)<<16|*(DataPtr+39)<<8|*(DataPtr+40);
+                Fota_Answer[3] = 0x01;
+                memcpy(&Fota_Answer[4],(DataPtr+4),BATT_SN_LEN);
+                Fota_Answer[21] = TCP_ENCPT_DISABLE;
+                Fota_Answer[22] = 0x00;
+                Fota_Answer[23] = 0x12;
+                memcpy(&Fota_Answer[24],(DataPtr+24),18);
+                Fota_Answer[42] =  bcc_chk_fota(Fota_Answer,42);
+                tcpipConnectionSend(connectId,Fota_Answer,43,0,0,0);
+                if(Fota_S.Fota_All_Data_Len==Fota_S.Fota_Current_Addres)
+                {
+                    BMS_Fota_update_flag = TRUE;
+                }
+                else
+                {
+                    BMS_Fota_update_flag = FALSE;
+                }
+                break;
+            }
+            default:
+            {
+                Fota_Answer[3] = 0x02;
+                memcpy(&Fota_Answer[4],(DataPtr+4),BATT_SN_LEN);
+                Fota_Answer[21] = TCP_ENCPT_DISABLE;
+                Fota_Answer[22] = 0x00;
+                Fota_Answer[23] = 0x12;
+                memcpy(&Fota_Answer[24],(DataPtr+24),18);
+                Fota_Answer[42] =  bcc_chk_fota(Fota_Answer,42);
+                tcpipConnectionSend(connectId,Fota_Answer,43,0,0,0);
+                break;
+            }
+        }
+    }
+}
+static UINT8 bcc_chk_fota(UINT8* data, UINT8 length)
+{
+    UINT8 bcc_chk_return = 0x00;
+    UINT8 count = 0;
+    while (count<length)
+    {
+        bcc_chk_return^=data[count];
+        count++;
+    }
+    return  bcc_chk_return;
+}
+static UINT8 Fota_crc_chk(UINT8* data,UINT8 length)
+{  
+    UINT8 reg_crc=0x00;
+    while(length--)
+    { 
+        reg_crc ^= *data++;
+    }
+    return reg_crc;
+}

+ 6 - 4
src/AppSignal.c

@@ -43,11 +43,13 @@ UINT8	reservedSignal8 = 0xFF;         //can信息保留信号8
 
 UINT8   Lockstatus = 0;             //Interlock status 高压互锁状态
 UINT8   TcpErrorcount=0;            //Error count TCP联网错误计数
+UINT8   TCPWorkState = 0;           //Tcp工作状态,0-表示发送,1-表示应答,2-表示监听以及心跳发送
 UINT8 	TcpSendLen = 0;             //Tcp send status Tcp发送状态
 UINT8   CanMsgEnble = 0;            //Can send status Can中断状态
 UINT8 	UDSSwitch = 0;              //下线检测标志位
 UINT8 	PosFlag = 0;                //定位信息是否有效标志位
 UINT8   UartRecvFlag = 0;           //Uart收到消息标志位0表示未收到,1表示收到
+UINT8   BuzzerControl = 0;          //蜂鸣器控制状态
 /**declear the uint16 vars**/
 UINT16	battCellU[28] = {0xFFFF};    //电池包单体电压
 UINT16	minCellVol = 0xFFFF;    //最小单体电压
@@ -74,10 +76,10 @@ QueueHandle_t UartWriteCmdHandle = NULL;//Uart写命令队列句柄
 
 /**declear other vars**/   
 
-AppConfigDataType      AppNVMData;
+AppConfigDataType           AppNVMData;
 
-AppDataBody             AppDataInfo;
+AppDataBody                 AppDataInfo;
 
-AppSocketConnectionContext socContext;  //网络连接状态
+AppSocketConnectionContext  socContext;  //网络连接状态
 
-process_app 		    gProcess_app;//全局工作状态
+process_app 		        gProcess_app; //全局工作状态

+ 15 - 6
src/AppTaskControl.c

@@ -14,8 +14,15 @@ static osThreadId_t                 ControlTaskId = NULL;
 static process_control 		        gProcess_Control_Task = PROCESS_CONTROL_STATE_IDLE;
 #define PROC_CONTROL_STATE_SWITCH(a)    (gProcess_Control_Task = a)
 
+extern void GsensorInit(void);
+extern void GsensorI2CHandler(ARM_I2C_SignalEvent_t cb_event);
+extern void GsensorI2CCallback(UINT32 event);
+
 static void ControlTask(void* arg)
 {
+    GsensorI2CHandler(GsensorI2CCallback);
+    GsensorInit();
+
     NetSocDisplay(LED_SOC_0,LED_TURN_OFF);
 	NetSocDisplay(LED_SOC_1,LED_TURN_OFF);
 	NetSocDisplay(LED_SOC_2,LED_TURN_OFF);
@@ -36,17 +43,19 @@ static void ControlTask(void* arg)
             case PROCESS_CONTROL_STATE_WORK:
             {
                 osDelay(100);
-                if((CurrentTime!=TimeCounter))
+                if(CurrentTime!=TimeCounter)
                 {
-                    #ifdef USING_PRINTF1
-                        printf("[%d]TimeCounter=%d\n",__LINE__,TimeCounter);
-                    #endif
-                    //LEDDisplay();
-                    battSOCDisplay();
+                    LEDDisplay();
                     CurrentTime = TimeCounter;
                 }
+                 
                 if(gProcess_app!=WORK)
                 {
+                    NetSocDisplay(LED_SOC_0,LED_TURN_OFF);
+                    NetSocDisplay(LED_SOC_1,LED_TURN_OFF);
+                    NetSocDisplay(LED_SOC_2,LED_TURN_OFF);
+                    NetSocDisplay(LED_SOC_3,LED_TURN_OFF);
+                    FaultDisplay(LED_TURN_OFF);
                     PROC_CONTROL_STATE_SWITCH(PROCESS_CONTROL_STATE_SLEEP);
                     break;
                 }

+ 80 - 4
src/AppTaskMain.c

@@ -20,6 +20,13 @@ void monitor_timer_callback(TimerHandle_t xTimer);
 void work_timer_callback(TimerHandle_t xTimer);
 void sleep_timer_callback(TimerHandle_t xTimer);
 
+static void appBeforeHib(void *pdata, slpManLpState state);
+static void appAfterHib(void *pdata, slpManLpState state);
+static void appBeforeSlp1(void *pdata, slpManLpState state);
+static void appAfterSlp1(void *pdata, slpManLpState state);
+static void appBeforeSlp2(void *pdata, slpManLpState state);
+static void appAfterSlp2(void *pdata, slpManLpState state);
+
 UINT8 MainSlpHandler          = 0xff;//主线程睡眠句柄
 static void MainTask(void* arg)
 {
@@ -28,12 +35,19 @@ static void MainTask(void* arg)
     TimerHandle_t work_timer = NULL;
     TimerHandle_t sleep_timer = NULL;
     monitor_timer = xTimerCreate("monitor_timer", 100 / portTICK_RATE_MS, pdTRUE, NULL, monitor_timer_callback);
-    work_timer    = xTimerCreate("work_timer", 1*60*1000 / portTICK_RATE_MS, pdTRUE, NULL, work_timer_callback);
-    sleep_timer   = xTimerCreate("sleep_timer", 2*60*1000 / portTICK_RATE_MS, pdTRUE, NULL, sleep_timer_callback);
+    work_timer    = xTimerCreate("work_timer", 5*60*1000 / portTICK_RATE_MS, pdTRUE, NULL, work_timer_callback);
+    sleep_timer   = xTimerCreate("sleep_timer", 60*60*1000 / portTICK_RATE_MS, pdTRUE, NULL, sleep_timer_callback);
     PROC_MAIN_STATE_SWITCH(PROCESS_STATE_IDLE);
     slpManSetPmuSleepMode(true,SLP_HIB_STATE,false);
     slpManApplyPlatVoteHandle("MainSlp",&MainSlpHandler);
-    slpManPlatVoteDisableSleep(MainSlpHandler, SLP_SLP2_STATE);//禁用SLEEP2休眠
+    slpManPlatVoteDisableSleep(MainSlpHandler, SLP_SLP1_STATE);//禁用SLEEP1休眠
+    UINT32 inParam = 0xAABBCCDD;
+    slpManRegisterUsrdefinedBackupCb(appBeforeHib,&inParam,SLPMAN_HIBERNATE_STATE);
+    slpManRegisterUsrdefinedRestoreCb(appAfterHib,NULL,SLPMAN_HIBERNATE_STATE);
+    slpManRegisterUsrdefinedBackupCb(appBeforeSlp1,NULL,SLPMAN_SLEEP1_STATE);
+    slpManRegisterUsrdefinedRestoreCb(appAfterSlp1,NULL,SLPMAN_SLEEP1_STATE);
+    slpManRegisterUsrdefinedBackupCb(appBeforeSlp2,NULL,SLPMAN_SLEEP2_STATE);
+    slpManRegisterUsrdefinedRestoreCb(appAfterSlp2,NULL,SLPMAN_SLEEP2_STATE);
     //配置文件及运行数据加载
     if(Error_Mutex == NULL)
     {
@@ -65,6 +79,26 @@ static void MainTask(void* arg)
                     xTimerStart(sleep_timer, 0);
                     WorkTimerEnd = FALSE;
                 }
+                if(TcpErrorcount>=10)
+                {
+                    AppDataInfo.appDataModify = true;
+                    AppDataInfo.SysReStartCount = AppDataInfo.SysReStartCount +1;
+                    if(AppDataInfo.SysReStartCount>=0xfffe)
+                    {
+                        AppDataInfo.SysReStartCount = 0;
+                    }
+                    if(AppNVMData.appDataModify)
+                    {
+                        SaveAppConfig();
+                    }
+                    if(AppDataInfo.appDataModify)
+                    {
+                        SaveAppData();
+                    }
+                    appSetCFUN(0);
+                    osDelay(1000);
+                    EC_SystemReset();
+                }
                 break;
             }
             case PROCESS_STATE_LISTEN:
@@ -79,7 +113,7 @@ static void MainTask(void* arg)
                 {
                     SaveAppConfig();
                 }
-                if(SleepTimerEnd)
+                if(SleepTimerEnd||TCPWorkState==1)//从监听转换为工作的条件
                 {
                     PROC_MAIN_STATE_SWITCH(PROCESS_STATE_IDLE);
                     xTimerStop(sleep_timer,0);
@@ -142,4 +176,46 @@ void AppTaskMainDeInit(void *arg)
     osThreadTerminate(MainTaskId);
     MainTaskId = NULL;
 }
+//睡眠进出函数区
+static void appBeforeHib(void *pdata, slpManLpState state)
+{
+    uint32_t *p_param = (uint32_t *)pdata;
+
+    #ifdef USING_PRINTF
+        printf("Before Hibernate:%d \n",state);
+    #endif
+	slpManAONIOLatchEn(AonIOLatch_Enable);
 
+}
+static void appAfterHib(void *pdata, slpManLpState state)
+{
+    #ifdef USING_PRINTF
+        printf("Try Hibernate Failed:%d \n",state);
+    #endif
+}
+static void appBeforeSlp1(void *pdata, slpManLpState state)
+{
+    #ifdef USING_PRINTF
+        printf("Before Sleep1:%d \n",state);
+    #endif
+	slpManAONIOLatchEn(AonIOLatch_Enable);
+}
+static void appAfterSlp1(void *pdata, slpManLpState state)
+{
+    #ifdef USING_PRINTF
+        printf("After Sleep1:%d \n",state);
+    #endif
+}
+static void appBeforeSlp2(void *pdata, slpManLpState state)
+{
+    #ifdef USING_PRINTF
+        printf("before sleep2:%d \n",state);
+    #endif
+	slpManAONIOLatchEn(AonIOLatch_Enable);
+}
+static void appAfterSlp2(void *pdata, slpManLpState state)
+{
+    #ifdef USING_PRINTF
+        printf("sleep2 failed:%d \n",state);
+    #endif
+}

File diff suppressed because it is too large
+ 281 - 3
src/AppTaskTcp.c


+ 2 - 3
src/AppTaskUart.c

@@ -45,8 +45,8 @@ static void UartTask(void* arg)
     memset(&(Uart_Read_Msg),0x00,sizeof(Uart_Read_Msg));
     UartAnswerData_S UartAnswerData;//应答数据初始化
 	memset(&(UartAnswerData),0x00,sizeof(UartAnswerData_S));
-    UartWriteData_S UartWriteData; //Uart控制命令初始化
-	memset(&(UartWriteData),0x00,sizeof(UartWriteData_S));
+    UartWriteData_S  UartWriteData;
+	memset(&(UartWriteData),0x00,sizeof(UartWriteData_S));//Uart控制命令初始化
     PROC_UART_STATE_SWITCH(PROCESS_UART_STATE_ENCRYPT);
     while (1)
     {
@@ -165,7 +165,6 @@ static void UartTask(void* arg)
             }
             case PROCESS_UART_STATE_SLEEP:
             {
-                USARTdrv->PowerControl(ARM_POWER_OFF);
                 #ifdef USING_PRINTF
                     printf("Uart silence begin\n");
                 #endif

+ 2 - 2
src/app.c

@@ -12,9 +12,9 @@ void appInit(void *arg)
     AppTaskMainInit(arg);
     AppTaskTcpInit(arg);
     AppTaskControlInit(arg);
-    AppTaskGpsInit(arg);
+    //AppTaskGpsInit(arg);
     AppTaskUartInit(arg);
-    AppTaskCanInit(arg);
+    //AppTaskCanInit(arg);
 }
 void main_entry(void) 
 {

+ 0 - 3
src/hal_module_adapter.c

@@ -540,9 +540,6 @@ void NetSocDisplay(ledInx_t  Inx , ledStaus_t level)
 */
 void FaultDisplay(ledStaus_t status)
 {
-	#ifdef USING_PRINTF
-		printf("[%d]-4-%d\n",__LINE__,status);
-	#endif
 	gpio_pin_config_t nGpioCfg={0};
 	nGpioCfg.pinDirection = GPIO_DirectionOutput;
 	nGpioCfg.misc.initOutput = 1;

Some files were not shown because too many files changed in this diff