Exemple #1
0
/****************************************************************
        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) );
            }
        }
    }
}
Exemple #2
0
/****************************************************************
        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);
			}
		}
    }    
}