|
@@ -32,7 +32,7 @@
|
|
#include "GpsTask.h"
|
|
#include "GpsTask.h"
|
|
#include "Fota.h"
|
|
#include "Fota.h"
|
|
//全局变量输出区
|
|
//全局变量输出区
|
|
-
|
|
|
|
|
|
+UINT32 TcpService = 0;
|
|
//全局变量输入区
|
|
//全局变量输入区
|
|
extern UINT32 Timer_count;
|
|
extern UINT32 Timer_count;
|
|
extern volatile bool Sleep_flag;
|
|
extern volatile bool Sleep_flag;
|
|
@@ -41,6 +41,7 @@ extern osMutexId_t UartMutex;
|
|
extern osMutexId_t GpsMutex;
|
|
extern osMutexId_t GpsMutex;
|
|
extern UINT8 GpsData[16];
|
|
extern UINT8 GpsData[16];
|
|
extern AppNVMDataType AppNVMData;
|
|
extern AppNVMDataType AppNVMData;
|
|
|
|
+
|
|
//局部变量申请
|
|
//局部变量申请
|
|
AppSocketConnectionContext socContext = {-1, APP_SOCKET_CONNECTION_CLOSED};
|
|
AppSocketConnectionContext socContext = {-1, APP_SOCKET_CONNECTION_CLOSED};
|
|
static StaticTask_t gProcess_Tcp_Task_t;
|
|
static StaticTask_t gProcess_Tcp_Task_t;
|
|
@@ -52,7 +53,6 @@ static process_TCP gProcess_Tcp_Task = PROCESS_TCP_STATE_IDLE;
|
|
static eventCallbackMessage_t *queueItem = NULL;
|
|
static eventCallbackMessage_t *queueItem = NULL;
|
|
static UINT8 gImsi[16] = {0};
|
|
static UINT8 gImsi[16] = {0};
|
|
static UINT32 gCellID = 0;
|
|
static UINT32 gCellID = 0;
|
|
-static UINT32 TcpService = 0;
|
|
|
|
static QueueHandle_t TcpRecvHandle = NULL;
|
|
static QueueHandle_t TcpRecvHandle = NULL;
|
|
//Tcp线程堆栈申请区
|
|
//Tcp线程堆栈申请区
|
|
|
|
|
|
@@ -138,6 +138,7 @@ static void TcpTask(void* arg)
|
|
break;
|
|
break;
|
|
case QMSG_ID_SOCK_RECVPKG:
|
|
case QMSG_ID_SOCK_RECVPKG:
|
|
TcpDataInfoRecvHandle();
|
|
TcpDataInfoRecvHandle();
|
|
|
|
+ osDelay(100);
|
|
TcpService=0x00;
|
|
TcpService=0x00;
|
|
break;
|
|
break;
|
|
case QMSG_ID_NW_IP_SUSPEND:
|
|
case QMSG_ID_NW_IP_SUSPEND:
|
|
@@ -205,10 +206,7 @@ void TcpTaskDeInit(void *arg)
|
|
osThreadTerminate(TcpTaskId);
|
|
osThreadTerminate(TcpTaskId);
|
|
TcpTaskId = NULL;
|
|
TcpTaskId = NULL;
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-/*------------------------------函数区域-----------------------*/
|
|
|
|
|
|
+/*------------------------------函数区域----------------------------------------------------------------------------------------------*/
|
|
static void TcpDataInfoAssembleSend()
|
|
static void TcpDataInfoAssembleSend()
|
|
{ static UINT32 send_counter = 0;
|
|
{ static UINT32 send_counter = 0;
|
|
BattMsgtoTcpType BattToTcpInfo;
|
|
BattMsgtoTcpType BattToTcpInfo;
|
|
@@ -385,6 +383,8 @@ static void TcpDataInfoAssembleSend()
|
|
VerMsgToTcpInfo.VerInfo.APPVersion[1] = (APPSWVERSION>>16)& 0xFF;
|
|
VerMsgToTcpInfo.VerInfo.APPVersion[1] = (APPSWVERSION>>16)& 0xFF;
|
|
VerMsgToTcpInfo.VerInfo.APPVersion[2] = (APPSWVERSION>>8)& 0xFF;
|
|
VerMsgToTcpInfo.VerInfo.APPVersion[2] = (APPSWVERSION>>8)& 0xFF;
|
|
VerMsgToTcpInfo.VerInfo.APPVersion[3] = (APPSWVERSION)& 0xFF;
|
|
VerMsgToTcpInfo.VerInfo.APPVersion[3] = (APPSWVERSION)& 0xFF;
|
|
|
|
+ VerMsgToTcpInfo.VerInfo.BmsType = 'C';
|
|
|
|
+ VerMsgToTcpInfo.VerInfo.BmsInfo = 'A';
|
|
VerMsgToTcpInfo.CRC = bcc_chk((UINT8 *)&VerMsgToTcpInfo, sizeof(VerMsgToTcpInfo)-1 );
|
|
VerMsgToTcpInfo.CRC = bcc_chk((UINT8 *)&VerMsgToTcpInfo, sizeof(VerMsgToTcpInfo)-1 );
|
|
tcpipConnectionSend(socContext.id, (UINT8 *)&VerMsgToTcpInfo, sizeof(VerMsgToTcpInfo), 0, 0, 0);
|
|
tcpipConnectionSend(socContext.id, (UINT8 *)&VerMsgToTcpInfo, sizeof(VerMsgToTcpInfo), 0, 0, 0);
|
|
}
|
|
}
|
|
@@ -406,22 +406,41 @@ static void TcpDataInfoRecvHandle()
|
|
TcpService = 0x01;//应答标志
|
|
TcpService = 0x01;//应答标志
|
|
osMessageQueueGet(TcpRecvHandle,&TcpRecvData,0,0);
|
|
osMessageQueueGet(TcpRecvHandle,&TcpRecvData,0,0);
|
|
osDelay(100);
|
|
osDelay(100);
|
|
|
|
+ UINT8 Tcp_Cmd;
|
|
|
|
+ UINT8 Control_Cmd;
|
|
UINT8 *Ptr;
|
|
UINT8 *Ptr;
|
|
if(TcpRecvData != PNULL)
|
|
if(TcpRecvData != PNULL)
|
|
{
|
|
{
|
|
- #ifdef USING_PRINTF
|
|
|
|
- printf("TcpRecvData is vacant\n");
|
|
|
|
- #endif
|
|
|
|
#ifdef USING_PRINTF
|
|
#ifdef USING_PRINTF
|
|
Ptr = TcpRecvData->data;
|
|
Ptr = TcpRecvData->data;
|
|
printf("TcpDataInfoRecvHandle socket connection %u receive length %u data:", TcpRecvData->connectionId, TcpRecvData->length);
|
|
printf("TcpDataInfoRecvHandle socket connection %u receive length %u data:", TcpRecvData->connectionId, TcpRecvData->length);
|
|
for(int i = 0;i<TcpRecvData->length;i++)
|
|
for(int i = 0;i<TcpRecvData->length;i++)
|
|
- printf("%x ",*(Ptr+i));
|
|
|
|
|
|
+ printf("%d-%x ",i,*(Ptr+i));
|
|
#endif
|
|
#endif
|
|
- free(TcpRecvData);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ if((*(Ptr+0)==TCP_START_SYM1)&&(*(Ptr+1)==TCP_START_SYM2))//服务器起始信息
|
|
|
|
+ {
|
|
|
|
+ Tcp_Cmd = *(Ptr+2);//命令标志
|
|
|
|
+ switch (Tcp_Cmd)
|
|
|
|
+ {
|
|
|
|
+ case TCP_QUERY_SYM:
|
|
|
|
+ break;
|
|
|
|
+ case TCP_SETCMD_SYM:
|
|
|
|
+ break;
|
|
|
|
+ case TCP_CONCMD_SYM:
|
|
|
|
+ {
|
|
|
|
+ if(*(Ptr+30)==0x01)//远程升级命令
|
|
|
|
+ {
|
|
|
|
+ Fota_Func(Ptr,socContext.id);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ default:
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ free(TcpRecvData);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
//TCP发送校验函数
|
|
//TCP发送校验函数
|
|
UINT8 bcc_chk(UINT8* data, UINT8 length)
|
|
UINT8 bcc_chk(UINT8* data, UINT8 length)
|