| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687 |
- /********************************************************************************
- * File Name: WiredLanTask
- * Function Describe:The Wired Lan Task
- * Relate Module:
- * Explain:
- * Writer: slw
- * Date:
- *******************************************************************************/
- #define THIS_FILE_ID 11
- //---------------------------------------------------------------------------------
- #include "includes.h"
- #include "spi.h"
- #include "socket.h"
- #include "Internet/TcpEchoServer.h"
- #include "Internet/dhcp.h"
- /* Private typedef -----------------------------------------------------------*/
- /* Private define ------------------------------------------------------------*/
- //SOCKET 分配
- #define SOCK_UDPS_DHCP 0 //DHCP 用于动态分配本地IP
- #define SOCK_TCPS_APP1 1 //Clinet
- #define SOCK_TCPS_LOOPBACK 7 //回环测试
- uint8_t DHCP_MSG_BUF[548];//548
- #define DATA_BUF_SIZE 900//1500
- STATUE ServerStatus;
- SUT_WL_STATUS sutWLanStatus;
- OS_TID idWLanTask=0;
- U64 stkWLANTask[WIRE_LAN_TASK_STK_SIZE];
- uint8_t gDATABUF[DATA_BUF_SIZE];
- // Default Network Configuration
- wiz_NetInfo gWIZNETINFO = { .mac = {0x00, 0x08, 0xdc,0x00, 0xab, 0xcd},
- .ip = {0, 0, 0, 0},
- .sn = {255,255,255,0},
- .gw = {0, 0, 0, 0},
- .dns = {0,0,0,0},
- .dhcp = NETINFO_DHCP };//dhcp:=NETINFO_STATIC or NETINFO_DHCP
- /* Private variables ---------------------------------------------------------*/
- /* Private function prototypes -----------------------------------------------*/
- /* Private functions ---------------------------------------------------------*/
- void network_init(void); // Initialize Network information and display it
- void cb_ip_assign(void); //callback func when IP is assigned from DHCP server first
- void cb_ip_update(void); // callback func when IP is changed
- void cb_ip_conflict(void); // callback func when the assigned IP is conflict with others.
- uint8_t ClientInit(void);
- void ClientRun(void);
- int32_t WiredSendTcpData(uint8_t *data,uint16_t len);
- void SetIoMode(uint8_t iomode);//SOCK_IO_NONBLOCK;//SOCK_IO_BLOCK;
-
-
- /* ************************************************************************
- W5500 PMODE配置
- 111: ALL CAPABLE,Auto-Negotiation enable
- * ************************************************************************/
- void W5500_PMODE_CONFIG(void)
- {
- GPIO_InitTypeDef GPIO_InitStruct;
- //PB5->PMODE0,PB6->PMODE1,PB7->PMODE2
- GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6|GPIO_Pin_7;
- GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOB, &GPIO_InitStruct);
- GPIO_SetBits(GPIOB,(GPIO_Pin_5 | GPIO_Pin_6|GPIO_Pin_7));
- }
- /* ************************************************************************
- W5500 RESET 配置
- (Active low) RESET should be held low at least 500 us for W550
- * ************************************************************************/
- void W5500_RESET_CONFIG(void)
- {
- GPIO_InitTypeDef GPIO_InitStruct;
- //PB2->RESET
- GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2;
- GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOB, &GPIO_InitStruct);
- GPIO_ResetBits(GPIOB,GPIO_Pin_2);
- os_dly_wait(1);
- GPIO_SetBits(GPIOB,GPIO_Pin_2);
- }
- //192.168.1.107
- unsigned char* StrTocharIP(unsigned char* SIP,unsigned char *ip)
- {
- char i =0;
- char j=0;
- // static unsigned char ip[4]={0};
- unsigned char buf[20]={0};
-
-
- while(*SIP!=0){
- if(*SIP=='.'){
- buf[i]=0;
- // printf("buf2====%d\r\n",buf[0]);
- ip[j]=atoi(buf);
- // printf("buf2====%s\r\n",buf);
- // printf("ip[%d]=%d\r\n",j,ip[j]);
- j++;
- SIP++;
- i=0;
- }
- buf[i]=*SIP;
- SIP++;
- i++;
- }
- buf[i]=0;
- ip[j]=atoi(buf);
- return ip;
- }
- /*
- 链接服务器
- 成功 返回1
- 失败 返回0
- */
- int8_t ConnectServer(void)
- {
- uint8_t mode;
- char tracebuf[35];//22
- unsigned char buf2[4]={0};
-
- int8_t r;
- SlwTrace(DEBUG,"Connect server...\r\n");
-
- memset(buf2,0,sizeof(buf2));
- StrTocharIP(sutProductPara.SIP,buf2);
-
- r=connect(SOCK_TCPS_APP1,buf2,sutProductPara.Port);//StrTocharIP(sutProductPara.SIP)
- snprintf(tracebuf,sizeof(tracebuf),"IP=%s..port=%d\r\n",sutProductPara.SIP,sutProductPara.Port);
- SlwTrace(DEBUG,tracebuf);
-
- if(r==SOCK_OK){
- SlwTrace(DEBUG,"Connect OK!\r\n");
- return 1;
- }else if(r==SOCKERR_SOCKINIT || r==SOCKERR_SOCKMODE){//socket未初始化,初始化之
- SlwTrace(DEBUG,"socket init...\r\n");
- mode=SOCK_IO_NONBLOCK;
- socket(SOCK_TCPS_APP1,Sn_MR_TCP,6000,SF_TCP_NODELAY);
-
- ctlsocket(SOCK_TCPS_APP1,CS_SET_IOMODE,&mode);
- }else if(r==SOCKERR_TIMEOUT){
- SlwTrace(DEBUG,"Connect timeout!\r\n");
- //os_dly_wait(1000);
- }else{
- sprintf(tracebuf,"connect err=%d\r\n",r);
- SlwTrace(DEBUG,tracebuf);
- }
- return 0;
- }
- void DhcpDisplayIP(void)
- {
- #if 0
- uint8_t ip[4];
- char tracebuf[30];
- getIPfromDHCP(ip);
- sprintf(tracebuf,"LC IP=%d.%d.%d.%d\r\n",ip[0],ip[1],ip[2],ip[3]);
- SlwTrace(DEBUG,tracebuf);
- getGWfromDHCP(ip);
- sprintf(tracebuf,"GW IP=%d.%d.%d.%d\r\n",ip[0],ip[1],ip[2],ip[3]);
- SlwTrace(DEBUG,tracebuf);
- getSNfromDHCP(ip);
- sprintf(tracebuf,"SN IP=%d.%d.%d.%d\r\n",ip[0],ip[1],ip[2],ip[3]);
- SlwTrace(DEBUG,tracebuf);
- getDNSfromDHCP(ip);
- sprintf(tracebuf,"DNS IP=%d.%d.%d.%d\r\n",ip[0],ip[1],ip[2],ip[3]);
- SlwTrace(DEBUG,tracebuf);
- #else
- char tracebuf[30];
- sprintf(tracebuf,"LC IP=%d.%d.%d.%d\r\n",gWIZNETINFO.ip[0],gWIZNETINFO.ip[1],gWIZNETINFO.ip[2],gWIZNETINFO.ip[3]);
- SlwTrace(DEBUG,tracebuf);
- sprintf(tracebuf,"GW IP=%d.%d.%d.%d\r\n",gWIZNETINFO.gw[0],gWIZNETINFO.gw[1],gWIZNETINFO.gw[2],gWIZNETINFO.gw[3]);
- SlwTrace(DEBUG,tracebuf);
- sprintf(tracebuf,"SN IP=%d.%d.%d.%d\r\n",gWIZNETINFO.sn[0],gWIZNETINFO.sn[1],gWIZNETINFO.sn[2],gWIZNETINFO.sn[3]);
- SlwTrace(DEBUG,tracebuf);
- sprintf(tracebuf,"DNS IP=%d.%d.%d.%d\r\n",gWIZNETINFO.dns[0],gWIZNETINFO.dns[1],gWIZNETINFO.dns[2],gWIZNETINFO.dns[3]);
- SlwTrace(DEBUG,tracebuf);
- #endif
- }
- /**************************************************************************************
- cb_ip_assign
- callback func when IP is assigned from DHCP server first
- ***************************************************************************************/
- void cb_ip_assign(void)
- {
- default_ip_assign();
- SlwTrace(DEBUG,"IP is assigned from DHCP!\r\n");
- ctlnetwork(CN_GET_NETINFO, (void*)&gWIZNETINFO);
- DhcpDisplayIP();
- sutWLanStatus.NetFlag=3;//
- //ClientInit();
- }
- /**************************************************************************************
- cb_ip_update
- callback func when IP is changed
- ***************************************************************************************/
- void cb_ip_update(void)
- {
- default_ip_update();
- SlwTrace(DEBUG,"IP is update from DHCP!\r\n");
- ctlnetwork(CN_GET_NETINFO, (void*)&gWIZNETINFO);
- DhcpDisplayIP();
- }
- /**************************************************************************************
- cb_ip_conflict
- callback func when the assigned IP is conflict with others.
- ***************************************************************************************/
- void cb_ip_conflict(void)
- {
- SlwTrace(DEBUG,"IP Conflict!\r\n");
- default_ip_conflict();
- }
- /**
- * @brief Intialize the network information to be used in WIZCHIP
- * @retval None
- */
- void network_init(void)
- {
- char tacebuf[100];
- uint8_t tmpstr[6];
-
- getNetMacByPSN(sutProductPara.MAC,sutProductPara.PSN);
- //MAC
- memcpy(gWIZNETINFO.mac,sutProductPara.MAC,6);
- ctlnetwork(CN_SET_NETINFO, (void*)&gWIZNETINFO);
- ctlnetwork(CN_GET_NETINFO, (void*)&gWIZNETINFO);
-
- if(0!=memcmp(gWIZNETINFO.mac,sutProductPara.MAC,6)){
- W5500_RESET_CONFIG();
- os_dly_wait(20);
- memcpy(gWIZNETINFO.mac,sutProductPara.MAC,6);
- ctlnetwork(CN_SET_NETINFO, (void*)&gWIZNETINFO);
- ctlnetwork(CN_GET_NETINFO, (void*)&gWIZNETINFO);
-
- if(0!=memcmp(gWIZNETINFO.mac,sutProductPara.MAC,6)){
- SlwTrace(DEBUG,"W5500 Init fail!\r\nWiredLan Stop!\r\n");
- while(1){
- os_dly_wait(10000);
- }
- }
- }
-
- // Display Network Information
- ctlwizchip(CW_GET_ID,(void*)tmpstr);
- snprintf(tacebuf,sizeof(tacebuf),"\r\n=== %s NET CONF ===\r\n",(char*)tmpstr);
- SlwTrace(DEBUG,tacebuf);
- snprintf(tacebuf,sizeof(tacebuf),"MAC: %02X:%02X:%02X:%02X:%02X:%02X\r\n",gWIZNETINFO.mac[0],gWIZNETINFO.mac[1],gWIZNETINFO.mac[2],
- gWIZNETINFO.mac[3],gWIZNETINFO.mac[4],gWIZNETINFO.mac[5]);
- SlwTrace(DEBUG,tacebuf);
- snprintf(tacebuf,sizeof(tacebuf),"SIP: %d.%d.%d.%d\r\n", gWIZNETINFO.ip[0],gWIZNETINFO.ip[1],gWIZNETINFO.ip[2],gWIZNETINFO.ip[3]);
- SlwTrace(DEBUG,tacebuf);
- snprintf(tacebuf,sizeof(tacebuf),"GAR: %d.%d.%d.%d\r\n", gWIZNETINFO.gw[0],gWIZNETINFO.gw[1],gWIZNETINFO.gw[2],gWIZNETINFO.gw[3]);
- SlwTrace(DEBUG,tacebuf);
- snprintf(tacebuf,sizeof(tacebuf),"SUB: %d.%d.%d.%d\r\n", gWIZNETINFO.sn[0],gWIZNETINFO.sn[1],gWIZNETINFO.sn[2],gWIZNETINFO.sn[3]);
- SlwTrace(DEBUG,tacebuf);
- snprintf(tacebuf,sizeof(tacebuf),"DNS: %d.%d.%d.%d\r\n", gWIZNETINFO.dns[0],gWIZNETINFO.dns[1],gWIZNETINFO.dns[2],gWIZNETINFO.dns[3]);
- SlwTrace(DEBUG,tacebuf);
- SlwTrace(DEBUG,"======================\r\n");
- }
- //int32_t RecvDataFromServer()
- //{
- // char tracebuf[20];
- // int32_t r;
- // r=recv(SOCK_TCPS_APP1,gDATABUF, sizeof(gDATABUF));
- // if(r>0){
- // snprintf(tracebuf,sizeof(tracebuf),"<Recv[%d]<\r\n",r);
- // SlwTrace(DEBUG,tracebuf);
- // gDATABUF[r]=0;
- // SlwTrace(DEBUG,(char *)gDATABUF);
- // TcpRecvData(gDATABUF,r);
- // }
- // return r;
- //}
- int32_t SendTestServer(void)
- {
- // int16_t len;
- // SlwTrace(DEBUG,">>SendUpload>>\r\n");
- // sutTestData.CSQ=0;
- // sutTestData.NetMode=2;
- // len=TcpPackingSendTest(g_ucTcpSendBuf);
- // return WiredSendTcpData(g_ucTcpSendBuf,len);
- return 0;
- }
- int32_t SendRegServer(void)
- {
- int r,len;
- // SlwTrace(DEBUG,">>SendReg>>\r\n");
- // sutModemStatus.TcpSendTimeCt++;
- // sutTestData.NetMode=2;//LAN模式上传
- // len=TcpPackingReg(g_ucTcpSendBuf);
- // if(len==0)return -1;
- // Debugsend(g_ucTcpSendBuf, len);//打印发送的数据
- // r = WiredSendTcpData(g_ucTcpSendBuf,len);
- return r;
- }
- /*
- SOCK_IO_NONBLOCK;//SOCK_IO_BLOCK;
- */
- void SetIoMode(uint8_t iomode)
- {
- static uint8_t mode;
- mode=iomode;
- ctlsocket(SOCK_TCPS_APP1,CS_SET_IOMODE,&mode);
- }
- //void ClientRun(void)
- //{
- // static uint8_t sucCt=0;
- // static uint8_t sucSendRegCt=0;
- // static uint8_t sucSendTestCt=0;
- // if(sutWLanStatus.Connected==1)
- // RecvDataFromServer();//接收处理 非阻塞模式
- // if(++sucCt>100){
- // sucCt=0;
- // }else return;
- //
- // if(sutWLanStatus.Connected==0){//未链接
- // if(SOCK_OK==ConnectServer()){//链接服务器 阻塞模式
- // sutWLanStatus.Connected=1;
- // sucSendRegCt=0;
- // sucSendTestCt=30;
- // SendReg2Server();
- // }
- // }else if(sutWLanStatus.Logined==0){//已链接,但未登陆,定时发登陆包
- // if(++sucSendRegCt>5){
- // sucSendRegCt=0;
- // sucSendTestCt=30;
- // if(SendReg2Server()<0){
- // sutWLanStatus.Connected=0;
- // }
- // }
- // }else{//已登陆
- // if(++sucSendTestCt>30){
- // sucSendTestCt=0;
- // SendTest2Server();
- // }
- // }
- //}
- /*
- 通过有线通道发送TCP数据
- */
- int32_t WiredSendTcpData(uint8_t *data,uint16_t len)
- {
- char buf[30];
- int i,flag;
- int32_t r;
- sprintf(buf,">WD Send %d>\r\n",len);
- SlwTrace(DEBUG,buf);
- //-------------------------------
-
- //sutModemStatus.TcpSendTimeCt++; //测试暂时注销
-
- r=send(SOCK_TCPS_APP1,data,len);
- switch(r){
- case SOCKERR_TIMEOUT://- Timeout occurred \n
- SlwTrace(DEBUG,"err:SOCKERR_TIMEOUT\r\n");
- break;
- case SOCKERR_SOCKMODE://Invalid operation in the socket \n
- SlwTrace(DEBUG,"err:SOCKERR_SOCKMODE\r\n");
- break;
- case SOCKERR_SOCKNUM://Invalid socket number \n
- SlwTrace(DEBUG,"err:SOCKERR_SOCKNUM\r\n");
- break;
- case SOCKERR_DATALEN://zero data length \n
- SlwTrace(DEBUG,"err:SOCKERR_DATALEN\r\n");
- break;
- case SOCK_BUSY://Socket is busy.
- SlwTrace(DEBUG,"err:SOCK_BUSY\r\n");
- break;
- sut_sys_status.Resend=1;
-
- }
-
- if(sutDeviceConfig.DebugPrintEn != 0 && r>0){
- snprintf(buf,sizeof(buf),"Send[%d/%d] OK!\r\n",r,len);
- SlwTrace(DEBUG,buf);
- sut_sys_status.Resend=0;
- }
- return r;
- }
- /*******************************************************************
- *WiredLanTask
- *有线网络任务
- ********************************************************************/
- __task void WiredLanTask(void)
- {
- static unsigned short susSendUploadCt=0;
- static unsigned char sucSendTickCt=0;
- static unsigned char sucSendWaitAckCt=0;//发送后等待ACK计数器
- char tracebuf[50];
- uint8_t SecCt=0;
- uint8_t tmp;
- int32_t ret = 0;
- uint8_t memsize[2][8] = {{2,2,2,2,2,2,2,2},{2,2,2,2,2,2,2,2}};
-
- uint8_t flag=1;
-
- sutProductPara.ConnectType=0; //0---有线 1---无线
-
- WIRED_LAN_TASK_START:
-
- HeartTimeOut=20;
- SlwTrace(DEBUG,"WiredLanTask Start...\r\n");
-
- memset(&sutWLanStatus,0,sizeof(SUT_WL_STATUS));
-
-
- W5500_PMODE_CONFIG();
-
- W5500_RESET_CONFIG();
-
- SPI_Configuration();//Config SPI
-
- reg_wizchip_cris_cbfunc(SPI_CrisEnter, SPI_CrisExit); //注册临界区函数
-
- #if _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_VDM_
-
- reg_wizchip_cs_cbfunc(SPI_CS_Select, SPI_CS_Deselect);//注册SPI片选信号函数
-
- #elif _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_FDM_
- reg_wizchip_cs_cbfunc(SPI_CS_Select, SPI_CS_Deselect); // CS must be tried with LOW.
- #else
- #if (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SIP_) != _WIZCHIP_IO_MODE_SIP_
- #error "Unknown _WIZCHIP_IO_MODE_"
- #else
- reg_wizchip_cs_cbfunc(wizchip_select, wizchip_deselect);
- #endif
- #endif
- /* SPI Read & Write callback function */
- reg_wizchip_spi_cbfunc(SPI_ReadByte, SPI_WriteByte); //注册读写函数
-
- /* WIZCHIP SOCKET Buffer initialize */
-
- if(ctlwizchip(CW_INIT_WIZCHIP,(void*)memsize) == -1){
- SlwTrace(DEBUG,"WIZCHIP Initialized fail.\r\n");
- GPIO_ResetBits(GPIOB,GPIO_Pin_2);//set W5500 Reset
- os_dly_wait(10);//6000
- goto WIRED_LAN_TASK_START;
- }
- /* PHY link status check */
- do{
- if(ctlwizchip(CW_GET_PHYLINK, (void*)&tmp) == -1){
- SlwTrace(DEBUG,"Unknown PHY Link stauts.\r\n");
- }
- os_dly_wait(100);
-
- if(++SecCt>10){
- SecCt=0;
- while(1){
- //跑无线任务
- os_dly_wait(100);
- if(sutProductPara.ConnectType==0)sutProductPara.ConnectType=1;
- }
-
- SlwTrace(DEBUG,"4444444444444444444\r\n");
- goto WIRED_LAN_TASK_START;
- }
- }while(tmp == PHY_LINK_OFF);
-
- sutWLanStatus.NetFlag=1;//网络IC初始化成功 ////////////////////////////////////////////
-
- /* Network initialization */
-
- network_init();
-
- //检查网线是否已插入
- while((getPHYCFGR()&PHYCFGR_LNK_ON)==PHYCFGR_LNK_OFF){
- SlwTrace(DEBUG,"Network cable not inserted!\r\n");
- os_dly_wait(100);
- if(++SecCt>30){ //改为30S //180
- goto WIRED_LAN_TASK_START;
- }
- };
- sutWLanStatus.NetFlag=2;//网线已插入 ////////////////////////////////////////////
- //DHCP client initialization
-
- DHCP_init(SOCK_UDPS_DHCP,DHCP_MSG_BUF);
-
- //Register DHCP call back function
- reg_dhcp_cbfunc(cb_ip_assign,cb_ip_update,cb_ip_conflict);
-
- memset(&sutWLanStatus,0,sizeof(SUT_WL_STATUS)); //清0
-
- sutWLanStatus.SendTestInterval=20;//发送间隔
- /* Main loop */
- SecCt=0;
-
- while(1){
-
- //os_dly_wait(10);
- FEED_EXTWATCHDOG();
- IWDG_ReloadCounter();
- os_dly_wait(1);
- //DHCP client in the main loop
- DHCP_run();
- //处理接收
-
- // typedef struct SUT_WL_STATUS
- //{
- // uint8_t NetFlag;//网络状态 0--网络芯片未完成初始化 1--网络IC初始化成功但网线未链接 2--网线已插入但DHCP未分配IP 3--DHCP已分配内网IP
- // uint8_t ConnectEnable;//链接使能 0--不允许链接服务器 1--允许链接服务器
- // uint8_t SocketOpened;//Socket已绑定
- // uint8_t Connected;//0未链接 1已链接
- // uint8_t Logined;//0未登陆 1已登陆
- // uint8_t SendRegCt; //发送登陆包次数计数器
- // uint8_t SendRegCtrlCt;//发送登陆包控制计数器
- // uint8_t SendTestCt; //发测试包次数计数器
- // uint8_t SendTestCtrlCt;//发测试包控制计数器
- // uint8_t SendTestInterval;//发送Test间隔
- // uint16_t TaskRunSec;//运行了多久
- // uint16_t OffLineCt;//离线时间
- //}SUT_WL_STATUS;
- //
- sutWLanStatus.ConnectEnable=1;
-
- if(sutWLanStatus.ConnectEnable==1 && sutWLanStatus.Connected==1){
-
- ret=recv(SOCK_TCPS_APP1,gDATABUF, sizeof(gDATABUF));
- if(ret==SOCKERR_SOCKSTATUS){
- if(flag){
- SlwTrace(DEBUG,"recv err:SOCKERR_SOCKSTATUS\r\n");
- flag=0;
- }
- sutWLanStatus.Connected=0;
- sutWLanStatus.Logined=0;
- }else if(ret>0){
- flag=1;
- sutWLanStatus.Connected=1;
- sutWLanStatus.SendTestCt=0;
- snprintf(tracebuf,sizeof(tracebuf),"<Recv[%d]<\r\n",ret);
- SlwTrace(DEBUG,tracebuf);
- // SlwTrace(DEBUG,(char *)gDATABUF);
- //TcpProcess2(gDATABUF);
- TcpProcess(gDATABUF,ret);//接受到的数据
- }else if(ret<0){
- snprintf(tracebuf,sizeof(tracebuf),"Recv err:%d\r\n",ret);
- SlwTrace(DEBUG,tracebuf);
- }
- }
- if( sut_sys_status.OnceFlag==1 && sut_sys_status.Logined==1)
- {
- /**********************接收完一次,发现数据改变立即上行******************************/
- //判断是否区别立即上传
- if(memcmp(&sut_device_read,&Device_Up.Devices,sizeof(sut_device_read)))
- {
- memcpy(&Device_Up.Devices,&sut_device_read,sizeof(sut_device_read));
- SlwTrace(DEBUG,"chang====================================\r\n");
- TSStatueSendPosition(TS_LOCATION_INFORMATION_REPORTING); //上行
- }
- sut_sys_status.OnceFlag=0;
- }else if(sut_sys_status.Resend==1)
- {
- memcpy(&Device_Up.Devices,&sut_device_read,sizeof(sut_device_read));
- SlwTrace(DEBUG,"重传====================================\r\n");
- TSStatueSendPosition(TS_LOCATION_INFORMATION_REPORTING); //上行
-
- }
-
- //----------以下控制每秒执行1次-----------
- static U32 os_old_time=0;
- U32 os_cur_time=os_time_get();
- if((os_cur_time-os_old_time)>100)os_old_time=os_cur_time;
- else continue;
-
- if(sutWLanStatus.TaskRunSec<0xffff)sutWLanStatus.TaskRunSec++;
-
-
- //判断网线是否已插入
- if((getPHYCFGR()&PHYCFGR_LNK_ON)==PHYCFGR_LNK_OFF){
- if(sutWLanStatus.NetFlag!=1){
- sutWLanStatus.NetFlag=1;//网线未插入
- SlwTrace(DEBUG,"Network cable not inserted!\r\n");
- }
- }else if(sutWLanStatus.NetFlag<2){//网线已插入
- SlwTrace(DEBUG,"Network cable inserted!\r\n");
- if(gWIZNETINFO.ip[0]!=0){
- sutWLanStatus.NetFlag=3;
- }else{
- sutWLanStatus.NetFlag=2;
- }
- }
- //DHCP 1s Tick Timer handler
- DHCP_time_handler();
- //---
- if(sutWLanStatus.Connected==0){//------TCP未链接 则连接之-----
- ServerStatus=CLOSED;
- sutWLanStatus.Connected=ConnectServer();
- sutWLanStatus.SendRegCtrlCt=9;
- sutWLanStatus.SendRegCt=0;
- }else if(ServerStatus!=OPENED){//----服务器未登陆则发登陆包-----
- // /***************************/
- // ServerStatus=OPENED; //测试
- // sut_sys_status.Logined=1;
- // /**************************/
-
- sutWLanStatus.SendTestCt=0;
- sutWLanStatus.SendTestCtrlCt=sutWLanStatus.SendTestInterval-1;//
-
- //控制每10秒发1次登陆包,直到已登陆
- if(++sutWLanStatus.SendRegCtrlCt>10){
- sutWLanStatus.SendRegCtrlCt=0;
- //SendRegServer();
- TSStatueSendPosition(TS_TERMINAL_LOGIN); //登录包
- //连续发了5次还是无法登陆,则延时一段时间后重来
- if(++sutWLanStatus.SendRegCt>5){
- sutWLanStatus.SendRegCt=0;
- os_dly_wait(1);
- goto WIRED_LAN_TASK_START;//
- }
- }
- }else{//------已登陆服务器,定时发Test-----
- //控制发Test包
- //if(!HeartTimeOut--)goto WIRED_LAN_TASK_START;
-
-
- if(sucSendWaitAckCt>0) sucSendWaitAckCt--; //15S
- if(sucSendWaitAckCt==0){
- if(++susSendUploadCt>15){
- susSendUploadCt=0;
- sucSendWaitAckCt=1;
- //SendTestServer(); //心跳
- TSStatueSendPosition(TS_TERMINAL_HEARTBEAT);
- SlwTrace(DEBUG,"SendValue 111111\r\n");
- printf("ConnectEnable==%d,Connected===%d\r\n",sutWLanStatus.ConnectEnable,sutWLanStatus.Connected);
-
- }
- }
- }
-
- }
- }
|