/**************************************************************** FunctionName : GAgent_LanTick. Description : check clients whether it is timeout. Add by Will.zhou --2015-03-10 ****************************************************************/ void GAgent_LanTick( pgcontext pgc,uint32 dTime_s ) { int32 i; uint16 GAgentStatus = 0; uint32 GAgentConStatus = 0; uint8 *ptxBuf = NULL; if(pgc->mcu.passcodeTimeout > 0 && ((pgc->rtinfo.GAgentStatus & WIFI_MODE_BINDING) == WIFI_MODE_BINDING)) { pgc->mcu.passcodeTimeout--; if(pgc->mcu.passcodeTimeout==0) GAgent_SetWiFiStatus( pgc,WIFI_MODE_BINDING,0); } for(i = 0; i < LAN_TCPCLIENT_MAX; i++) { if(pgc->ls.tcpClient[i].fd > 0) { if( pgc->ls.tcpClient[i].timeout <= dTime_s ) { close(pgc->ls.tcpClient[i].fd); pgc->ls.tcpClient[i].fd = -1; if( LAN_CLIENT_LOGIN_SUCCESS == pgc->ls.tcpClient[i].isLogin) { if(pgc->ls.tcpClientNums > 0) pgc->ls.tcpClientNums--; if(0 == (pgc->ls.tcpClientNums + pgc->rtinfo.waninfo.wanclient_num)) { GAgent_SetWiFiStatus( pgc,WIFI_CLIENT_ON,0 ); } } } else { pgc->ls.tcpClient[i].timeout -= dTime_s; } } } GAgentStatus = pgc->rtinfo.GAgentStatus; GAgentConStatus = pgc->gc.flag; if((GAgentStatus&WIFI_STATION_CONNECTED) == WIFI_STATION_CONNECTED) { if(pgc->ls.onboardingBroadCastTime > 0) { if( pgc->ls.udpBroadCastServerFd<=0 ) { if( pgc->ls.udp3rdCloudFd>0 ) { close( pgc->ls.udp3rdCloudFd ); pgc->ls.udp3rdCloudFd = INVALID_SOCKET; } CreateUDPBroadCastServer( pgc ); } pgc->ls.onboardingBroadCastTime--; resetPacket(pgc->rtinfo.Rxbuf); ptxBuf = pgc->rtinfo.Rxbuf->phead; if(pgc->rtinfo.firstStartUp) { GAgent_Printf( GAGENT_INFO,"UDP BC firstStartUp..."); send_broadCastPacket(pgc,ptxBuf,GAGENT_LAN_CMD_STARTUP_BROADCAST); } if((GAgentConStatus & XPG_CFG_FLAG_CONFIG) == XPG_CFG_FLAG_CONFIG) { GAgent_Printf( GAGENT_INFO,"UDP BC Config success..."); send_broadCastPacket(pgc,ptxBuf,GAGENT_LAN_CMD_AIR_BROADCAST); } if( 0==pgc->ls.onboardingBroadCastTime ) { pgc->rtinfo.firstStartUp = 0; GAgentConStatus &= (~XPG_CFG_FLAG_CONFIG); pgc->gc.flag = GAgentConStatus; DestroyUDPBroadCastServer(pgc); if( 1==pgc->rtinfo.waninfo.Cloud3Flag ) { if( 0==strcmp(pgc->gc.cloud3info.cloud3Name,"jd" ) ) { if( pgc->ls.udp3rdCloudFd <=0 ) { GAgent_Printf( GAGENT_DEBUG,"GAgent will Open JD discover protocol."); GAgent_Printf( GAGENT_DEBUG,"3rdCloud Name:%s",pgc->gc.cloud3info.cloud3Name); GAgent_Printf( GAGENT_DEBUG,"3rdCloud UUID:%s",pgc->gc.cloud3info.jdinfo.product_uuid ); pgc->ls.udp3rdCloudFd = Socket_CreateUDPServer_JD( LAN_UDP_SERVER_PORT_JD ); } } } GAgent_DevSaveConfigData( &(pgc->gc) ); } } } }
/**************************************************************** FunctionName : GAgent_LanTick. Description : check clients whether it is timeout. Add by Will.zhou --2015-03-10 ****************************************************************/ void GAgent_LanTick( pgcontext pgc,uint32 dTime_s ) { //uint32 cTime=0,dTime=0; int32 i; //static uint32 preTime = 0; uint16 GAgentStatus = 0; uint32 GAgentConStatus = 0; uint8 *ptxBuf = NULL; if(pgc->mcu.passcodeTimeout > 0 && ((pgc->rtinfo.GAgentStatus & WIFI_MODE_BINDING) == WIFI_MODE_BINDING)) { pgc->mcu.passcodeTimeout--; if(pgc->mcu.passcodeTimeout==0) GAgent_SetWiFiStatus( pgc,WIFI_MODE_BINDING,0); } for(i = 0; i < LAN_TCPCLIENT_MAX; i++) { if(pgc->ls.tcpClient[i].fd > 0) { if( pgc->ls.tcpClient[i].timeout <= dTime_s ) { close(pgc->ls.tcpClient[i].fd); pgc->ls.tcpClient[i].fd = -1; if( LAN_CLIENT_LOGIN_SUCCESS == pgc->ls.tcpClient[i].isLogin) { if(pgc->ls.tcpClientNums > 0) pgc->ls.tcpClientNums--; if(0 == (pgc->ls.tcpClientNums + pgc->rtinfo.waninfo.wanclient_num)) { GAgent_SetWiFiStatus( pgc,WIFI_CLIENT_ON,0 ); } } } else { pgc->ls.tcpClient[i].timeout -= dTime_s; } } } GAgentStatus = pgc->rtinfo.GAgentStatus; GAgentConStatus = pgc->gc.flag; if((GAgentStatus&WIFI_STATION_CONNECTED) == WIFI_STATION_CONNECTED) { if((GAgentConStatus & XPG_CFG_FLAG_CONFIG) == XPG_CFG_FLAG_CONFIG) { if(pgc->ls.onboardingBroadCastTime > 0) { resetPacket(pgc->rtinfo.Txbuf); ptxBuf = pgc->rtinfo.Txbuf->phead; send_broadCastPacket(pgc,ptxBuf,GAGENT_LAN_CMD_AIR_BROADCAST); pgc->ls.onboardingBroadCastTime--; } else { GAgentConStatus &= (~XPG_CFG_FLAG_CONFIG); pgc->gc.flag = GAgentConStatus; DestroyUDPBroadCastServer(pgc); GAgent_DevSaveConfigData( &(pgc->gc) ); } } if(pgc->rtinfo.firstStartUp) { if(pgc->ls.startupBroadCastTime > 0) { resetPacket(pgc->rtinfo.Txbuf); ptxBuf = pgc->rtinfo.Txbuf->phead; send_broadCastPacket(pgc,ptxBuf,GAGENT_LAN_CMD_STARTUP_BROADCAST); pgc->ls.startupBroadCastTime--; } else { pgc->rtinfo.firstStartUp = 0; DestroyUDPBroadCastServer(pgc); } } } }