|
@@ -30,6 +30,7 @@
|
|
#include "app.h"
|
|
#include "app.h"
|
|
#include "UartTask.h"
|
|
#include "UartTask.h"
|
|
#include "GpsTask.h"
|
|
#include "GpsTask.h"
|
|
|
|
+#include "Fota.h"
|
|
//全局变量输出区
|
|
//全局变量输出区
|
|
|
|
|
|
//全局变量输入区
|
|
//全局变量输入区
|
|
@@ -51,6 +52,8 @@ 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;
|
|
//Tcp线程堆栈申请区
|
|
//Tcp线程堆栈申请区
|
|
|
|
|
|
//函数声明区
|
|
//函数声明区
|
|
@@ -59,6 +62,7 @@ static void sendQueueMsg(UINT32 msgId, UINT32 xTickstoWait);
|
|
static INT32 socketRegisterPSUrcCallback(urcID_t eventID, void *param, UINT32 paramLen);
|
|
static INT32 socketRegisterPSUrcCallback(urcID_t eventID, void *param, UINT32 paramLen);
|
|
void socketAppConnectionCallBack(UINT8 connectionEventType, void *bodyEvent);
|
|
void socketAppConnectionCallBack(UINT8 connectionEventType, void *bodyEvent);
|
|
void TcpDataInfoAssembleSend();
|
|
void TcpDataInfoAssembleSend();
|
|
|
|
+void TcpDataInfoRecvHandle();
|
|
UINT8 bcc_chk(UINT8* data, UINT8 length);
|
|
UINT8 bcc_chk(UINT8* data, UINT8 length);
|
|
//线程任务区
|
|
//线程任务区
|
|
static void TcpTask(void* arg)
|
|
static void TcpTask(void* arg)
|
|
@@ -73,6 +77,10 @@ static void TcpTask(void* arg)
|
|
{
|
|
{
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
+ if(TcpRecvHandle == NULL)
|
|
|
|
+ {
|
|
|
|
+ TcpRecvHandle = osMessageQueueNew(2,sizeof(TcpipConnectionRecvDataInd), NULL);
|
|
|
|
+ }
|
|
while (true)
|
|
while (true)
|
|
{
|
|
{
|
|
osDelay(100);
|
|
osDelay(100);
|
|
@@ -81,7 +89,7 @@ static void TcpTask(void* arg)
|
|
sendQueueMsg(QMSG_ID_NW_IP_SUSPEND, 0);
|
|
sendQueueMsg(QMSG_ID_NW_IP_SUSPEND, 0);
|
|
sendQueueMsg(QMSG_ID_SOCK_EXIT, 0);
|
|
sendQueueMsg(QMSG_ID_SOCK_EXIT, 0);
|
|
}
|
|
}
|
|
- else if(Timer_count%50==0)
|
|
|
|
|
|
+ else if(Timer_count%50==0 && TcpService==0x00)
|
|
{
|
|
{
|
|
sendQueueMsg(QMSG_ID_SOCK_SENDPKG, 0);
|
|
sendQueueMsg(QMSG_ID_SOCK_SENDPKG, 0);
|
|
}
|
|
}
|
|
@@ -128,6 +136,12 @@ static void TcpTask(void* arg)
|
|
ECOMM_TRACE(UNILOG_PLA_APP, ecTestCaseTcpClient_9, P_ERROR, 2, "connection %u or status invalid", socContext.id, socContext.status);
|
|
ECOMM_TRACE(UNILOG_PLA_APP, ecTestCaseTcpClient_9, P_ERROR, 2, "connection %u or status invalid", socContext.id, socContext.status);
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
|
|
+ case QMSG_ID_SOCK_RECVPKG:
|
|
|
|
+ #ifdef USING_PRINTF
|
|
|
|
+ printf("QMSG_ID_SOCK_RECVPKG\n");
|
|
|
|
+ #endif
|
|
|
|
+ TcpDataInfoRecvHandle();
|
|
|
|
+ break;
|
|
case QMSG_ID_NW_IP_SUSPEND:
|
|
case QMSG_ID_NW_IP_SUSPEND:
|
|
if (socContext.id >= 0 && socContext.status != APP_SOCKET_CONNECTION_CLOSED)
|
|
if (socContext.id >= 0 && socContext.status != APP_SOCKET_CONNECTION_CLOSED)
|
|
{
|
|
{
|
|
@@ -385,6 +399,46 @@ static void TcpDataInfoAssembleSend()
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+}
|
|
|
|
+//Tcp数据接收处理函数
|
|
|
|
+static void TcpDataInfoRecvHandle()
|
|
|
|
+{
|
|
|
|
+ UINT8* Ptr;
|
|
|
|
+ TcpipConnectionRecvDataInd* TcpRecvData;
|
|
|
|
+ TcpService = 0x01;//应答标志
|
|
|
|
+ // if(TcpRecvData == NULL)
|
|
|
|
+ // {
|
|
|
|
+ // // #ifdef USING_PRINTF
|
|
|
|
+ // // printf("before TcpRecvData is vacant\n");
|
|
|
|
+ // // #endif
|
|
|
|
+ // }
|
|
|
|
+ // else
|
|
|
|
+ // {
|
|
|
|
+ // #ifdef USING_PRINTF
|
|
|
|
+ // printf(" before TcpRecvData is not vacant\n");
|
|
|
|
+ // #endif
|
|
|
|
+ // }
|
|
|
|
+ osMessageQueueGet(TcpRecvHandle,TcpRecvData,0,2000);
|
|
|
|
+
|
|
|
|
+ if(TcpRecvData == NULL)
|
|
|
|
+ {
|
|
|
|
+ // #ifdef USING_PRINTF
|
|
|
|
+ // printf("TcpRecvData is vacant\n");
|
|
|
|
+ // #endif
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+
|
|
|
|
+ #ifdef USING_PRINTF
|
|
|
|
+ //printf("TcpRecvData:%x\n",TcpRecvData);
|
|
|
|
+ Ptr=TcpRecvData->data;
|
|
|
|
+ printf("TcpDataInfoRecvHandle socket connection %u receive length %u data:", TcpRecvData->connectionId, TcpRecvData->length);
|
|
|
|
+ for(int i = 0;i<TcpRecvData->length;i++)
|
|
|
|
+ printf("%x ",*(Ptr+i));
|
|
|
|
+ #endif
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
}
|
|
}
|
|
//TCP发送校验函数
|
|
//TCP发送校验函数
|
|
UINT8 bcc_chk(UINT8* data, UINT8 length)
|
|
UINT8 bcc_chk(UINT8* data, UINT8 length)
|
|
@@ -536,8 +590,9 @@ void socketAppConnectionCallBack(UINT8 connectionEventType, void *bodyEvent)
|
|
if(rcvInd != PNULL)
|
|
if(rcvInd != PNULL)
|
|
{
|
|
{
|
|
uint8_t* Ptr;
|
|
uint8_t* Ptr;
|
|
|
|
+ osMessageQueuePut(TcpRecvHandle,rcvInd,0,2000);
|
|
|
|
+ sendQueueMsg(QMSG_ID_SOCK_RECVPKG, 0);
|
|
#ifdef USING_PRINTF
|
|
#ifdef USING_PRINTF
|
|
-
|
|
|
|
Ptr=rcvInd->data;
|
|
Ptr=rcvInd->data;
|
|
printf("socketAppConnectionCallBack socket connection %u receive length %u data:", rcvInd->connectionId, rcvInd->length);
|
|
printf("socketAppConnectionCallBack socket connection %u receive length %u data:", rcvInd->connectionId, rcvInd->length);
|
|
for(int i = 0;i<rcvInd->length;i++)
|
|
for(int i = 0;i<rcvInd->length;i++)
|