Browse Source

修改网络连接方式,网络睡眠测试
sim卡拔掉休眠,不拔掉就不休眠

CHENJIE-PC\QiXiang_CHENJIE 4 years ago
parent
commit
1dba0b3ee3
1 changed files with 35 additions and 24 deletions
  1. 35 24
      src/app.c

+ 35 - 24
src/app.c

@@ -33,7 +33,7 @@ uint8_t MainSlpHandler          = 0xff;
 uint8_t UartSlpHandler          = 0xfe;
 uint8_t CanSlpHandler          = 0xfd;
 uint8_t TcpSlpHandler          = 0xfd;
-int TcpconnectID = -1;
+
 #define Uart_Send_LEN         (8)
 #define Uart_Rece_LEN         (40)
 
@@ -47,6 +47,8 @@ static QueueHandle_t            psEventQueueHandle;
 static UINT8                    gImsi[16] = {0};
 static INT32                    sockfd = -1;
 static UINT32                   gCellID = 0;
+int TcpconnectID = -1;
+volatile bool tcp_ready = false;
 
 uint8_t Batt_Cell_Num = 14;//默认数值14、17
 uint8_t Batt_Cell_Num_2 ;//默认数值
@@ -392,6 +394,7 @@ uint8_t* Uart_Receive_func(Uart_Receive_Type Uart_Receive_Msg,uint8_t* Uart_Rece
         }
         else //接收数据的校验不过屏蔽
         {
+            osDelay(2000);
         #ifdef USING_PRINTF
             printf("Uart_Rece_buffer: ");
             for(int i=0;i<Data_Len;i++)
@@ -883,10 +886,6 @@ static INT32 socketRegisterPSUrcCallback(urcID_t eventID, void *param, UINT32 pa
         {
             cereg = (CmiPsCeregInd *)param;
             gCellID = cereg->celId;
-            if (gCellID==0)
-            {
-                TcpconnectID = -1;
-            }
             #ifdef USING_PRINTF
                 printf("URCCallBack:CEREG changed act:%d celId:%d locPresent:%d tac:%d\n", cereg->act, cereg->celId, cereg->locPresent, cereg->tac);
             #endif
@@ -897,6 +896,7 @@ 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;
             break;
         }
     }
@@ -993,37 +993,48 @@ static void Tcp_Task(void* arg)
             }
             case PROCESS_TCP_STATE_LINK:
             {
-                if(TcpconnectID<0)
+                if(!tcp_ready)
                 {
                     #ifdef USING_PRINTF
-                        printf("Connecting...!%d\n",TcpconnectID);
+                        printf("tcp not ready!\n");
                     #endif
-                    if (getaddrinfo( serverip, serverport , &hints, &server_res ) != 0 )
-                    {
-                        #ifdef USING_PRINTF
-                            printf("TCP connect unresolved dns\n");
-                        #endif
-                    }
-                    sockfd = socket(AF_INET, SOCK_STREAM, 0);
-                    TcpconnectID = connect(sockfd, (struct sockaddr *) server_res->ai_addr, server_res->ai_addrlen);
+                    PROC_TCP_STATE_SWITCH(PROCESS_TCP_STATE_IDLE);
+                }
+                else 
+                {
                     if(TcpconnectID<0)
                     {
                         #ifdef USING_PRINTF
-                            printf("Connect failed!%d\n",TcpconnectID);
+                            printf("Connecting...!%d\n",TcpconnectID);
                         #endif
-                        close(sockfd);
-                        PROC_TCP_STATE_SWITCH(PROCESS_TCP_STATE_IDLE);
-                        break;
+                        if (getaddrinfo( serverip, serverport , &hints, &server_res ) != 0 )
+                        {
+                            #ifdef USING_PRINTF
+                                printf("TCP connect unresolved dns\n");
+                            #endif
+                        }
+                        sockfd = socket(AF_INET, SOCK_STREAM, 0);
+                        TcpconnectID = connect(sockfd, (struct sockaddr *) server_res->ai_addr, server_res->ai_addrlen);
+                        if(TcpconnectID<0)
+                        {
+                            #ifdef USING_PRINTF
+                                printf("Connect failed!%d\n",TcpconnectID);
+                            #endif
+                            close(sockfd);
+                            PROC_TCP_STATE_SWITCH(PROCESS_TCP_STATE_IDLE);
+                            break;
+                        }
+                        else
+                        {
+                            PROC_TCP_STATE_SWITCH(PROCESS_TCP_STATE_WORK);
+                            break;
+                        }
                     }
-                    else
+                    else 
                     {
                         PROC_TCP_STATE_SWITCH(PROCESS_TCP_STATE_WORK);
                     }
                 }
-                else 
-                {
-                    PROC_TCP_STATE_SWITCH(PROCESS_TCP_STATE_WORK);
-                }
                 break;
             }
             case PROCESS_TCP_STATE_WORK: