|
@@ -50,7 +50,7 @@ static UINT8 gImsi[16] = {0};
|
|
|
static INT32 sockfd = -1;
|
|
|
static UINT32 gCellID = 0;
|
|
|
int TcpconnectID = -1;
|
|
|
-volatile bool tcp_ready = false;
|
|
|
+volatile uint8_t Tcp_statuts = 0;
|
|
|
|
|
|
uint8_t Batt_Cell_Num = 17;//默认数值14、17
|
|
|
uint8_t Batt_Cell_Num_2 ;//默认数值
|
|
@@ -994,8 +994,8 @@ static INT32 socketRegisterPSUrcCallback(urcID_t eventID, void *param, UINT32 pa
|
|
|
{
|
|
|
netif = (NmAtiNetifInfo *)param;
|
|
|
if (netif->netStatus == NM_NETIF_ACTIVATED)
|
|
|
- sendQueueMsg(QMSG_ID_NW_IP_READY, 0);
|
|
|
- tcp_ready = true;
|
|
|
+ //sendQueueMsg(QMSG_ID_NW_IP_READY, 0);
|
|
|
+ Tcp_statuts = 1;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -1141,12 +1141,19 @@ static void Tcp_Task(void* arg)
|
|
|
uint32_t tau;
|
|
|
uint32_t act;
|
|
|
uint8_t NB_send_len;
|
|
|
+ uint8_t Reconnect_Num = 0;
|
|
|
appSetEDRXSettingSync(0,5,0);
|
|
|
appSetPSMSettingSync(1,3*60*60,10);
|
|
|
-
|
|
|
- #ifdef USING_PRINTF
|
|
|
- printf("psm:pmode-%d,tau-%d,act-%d!\n",pmode,tau,act);
|
|
|
- #endif
|
|
|
+ slpManWakeSrc_e Wakeup_source;
|
|
|
+ Wakeup_source = slpManGetWakeupSrc();//获取唤醒源
|
|
|
+ if(Wakeup_source==0)
|
|
|
+ {
|
|
|
+ Tcp_statuts = 0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Tcp_statuts = 1;
|
|
|
+ }
|
|
|
while(true)
|
|
|
{
|
|
|
switch(gProcess_Tcp_Task)
|
|
@@ -1158,57 +1165,86 @@ static void Tcp_Task(void* arg)
|
|
|
}
|
|
|
case PROCESS_TCP_STATE_LINK:
|
|
|
{
|
|
|
- if(!tcp_ready)
|
|
|
- {
|
|
|
- #ifdef USING_PRINTF
|
|
|
- printf("tcp not ready!\n");
|
|
|
- #endif
|
|
|
- PROC_TCP_STATE_SWITCH(PROCESS_TCP_STATE_IDLE);
|
|
|
- }
|
|
|
- else
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ printf("TCP_statuts:%d\n",Tcp_statuts);
|
|
|
+ #endif
|
|
|
+ switch(Tcp_statuts)
|
|
|
{
|
|
|
- if(TcpconnectID<0)
|
|
|
+ case 0://0代表网络为驻网前
|
|
|
{
|
|
|
#ifdef USING_PRINTF
|
|
|
- printf("Connecting...!%d\n",TcpconnectID);
|
|
|
+ printf("TCP Not Ready\n");
|
|
|
#endif
|
|
|
+ PROC_TCP_STATE_SWITCH(PROCESS_TCP_STATE_IDLE);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case 1://1代表网络驻网
|
|
|
+ {
|
|
|
if (getaddrinfo( serverip, serverport , &hints, &server_res ) != 0 )
|
|
|
{
|
|
|
#ifdef USING_PRINTF
|
|
|
printf("TCP connect unresolved dns\n");
|
|
|
#endif
|
|
|
+ // Tcp_statuts=0;
|
|
|
+ // appSetCFUN(0);
|
|
|
+ // osDelay(10);
|
|
|
+ // appSetCFUN(1);
|
|
|
+ // PSInitEventCallbackTable();
|
|
|
}
|
|
|
+ Tcp_statuts=2;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case 2://2代表尝试建立连接
|
|
|
+ {
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ printf("Connecting...!%d\n",TcpconnectID);
|
|
|
+ #endif
|
|
|
sockfd = socket(AF_INET, SOCK_STREAM, 0);
|
|
|
if(sockfd<0)
|
|
|
{
|
|
|
#ifdef USING_PRINTF
|
|
|
printf("socket create error\n");
|
|
|
#endif
|
|
|
- }
|
|
|
- TcpconnectID = connect(sockfd, (struct sockaddr *) server_res->ai_addr, server_res->ai_addrlen);
|
|
|
- if(TcpconnectID<0 && errno != EINPROGRESS)
|
|
|
- {
|
|
|
- #ifdef USING_PRINTF
|
|
|
- printf("Connect failed!%d\n",TcpconnectID);
|
|
|
- #endif
|
|
|
- closesocket(sockfd);
|
|
|
- PROC_TCP_STATE_SWITCH(PROCESS_TCP_STATE_IDLE);
|
|
|
- break;
|
|
|
+ Tcp_statuts=1;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- PROC_TCP_STATE_SWITCH(PROCESS_TCP_STATE_WORK);
|
|
|
- break;
|
|
|
+ TcpconnectID = connect(sockfd, (struct sockaddr *) server_res->ai_addr, server_res->ai_addrlen);
|
|
|
+ if(TcpconnectID<0 && errno != EINPROGRESS)
|
|
|
+ {
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ printf("Connect failed!%d,Reconnect:%d\n",TcpconnectID,Reconnect_Num);
|
|
|
+ #endif
|
|
|
+ close(sockfd);
|
|
|
+ Tcp_statuts=2;
|
|
|
+ PROC_TCP_STATE_SWITCH(PROCESS_TCP_STATE_IDLE);
|
|
|
+ Reconnect_Num++;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Tcp_statuts=3;
|
|
|
+ Reconnect_Num = 0;
|
|
|
+ }
|
|
|
+ if(Reconnect_Num>=20)
|
|
|
+ {
|
|
|
+ Tcp_statuts=1;
|
|
|
+ Reconnect_Num = 0;
|
|
|
+ }
|
|
|
}
|
|
|
+ break;
|
|
|
+
|
|
|
}
|
|
|
- else
|
|
|
+ case 3://3代表连接建立成功
|
|
|
{
|
|
|
PROC_TCP_STATE_SWITCH(PROCESS_TCP_STATE_WORK);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case 4://4代表连接断开
|
|
|
+ {
|
|
|
+ Tcp_statuts=2;
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
- #ifdef USING_PRINTF
|
|
|
- printf("tcp_statuts,%d,%d!\n",tcp_ready,TcpconnectID);
|
|
|
- #endif
|
|
|
break;
|
|
|
}
|
|
|
case PROCESS_TCP_STATE_WORK:
|
|
@@ -1271,6 +1307,7 @@ static void Tcp_Task(void* arg)
|
|
|
closesocket(sockfd);
|
|
|
TcpconnectID = -1;
|
|
|
Tcp_Index=-1;
|
|
|
+ Tcp_statuts = 4;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -1310,6 +1347,7 @@ static void Tcp_Task(void* arg)
|
|
|
closesocket(sockfd);
|
|
|
TcpconnectID = -1;
|
|
|
Tcp_Index=-1;
|
|
|
+ Tcp_statuts = 4;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -1331,7 +1369,6 @@ static void Tcp_Task(void* arg)
|
|
|
{
|
|
|
slpManPlatVoteEnableSleep(TcpSlpHandler, SLP_SLP2_STATE);
|
|
|
closesocket(sockfd);
|
|
|
- tcp_ready = false;
|
|
|
//deregisterPSEventCallback(socketRegisterPSUrcCallback);//注销NB网络事件函数
|
|
|
#ifdef USING_PRINTF
|
|
|
printf("TCP_STATE_SLEEP\n");
|