Example #1
0
int Udp_Onboarding( u8* buf ,int datalength )
{
    unsigned char* passwdlength = NULL;
    char StaSsid[32];
    char StaPass[32];

    memset(StaSsid,0,32);
    memset(StaPass,0,32);	
    memset(g_stGAgentConfigData.wifi_ssid,0,32);
    memset(g_stGAgentConfigData.wifi_key,0,32);

    passwdlength = buf+(10+buf[9]+1);

    strncpy(StaSsid, buf+10,buf[9]);
    StaSsid[buf[9]+1] = '\0';
    strncpy(StaPass,buf+(10+buf[9]+2),*passwdlength);
    StaPass[(*passwdlength)+1]='\0';

    memcpy(g_stGAgentConfigData.wifi_ssid,StaSsid,buf[9]);
    memcpy(g_stGAgentConfigData.wifi_key,StaPass,*passwdlength);    

    g_stGAgentConfigData.flag |= XPG_CFG_FLAG_CONNECTED;
    DRV_GAgent_SaveConfigData(&g_stGAgentConfigData);
    DRV_WiFi_StationCustomModeStart(StaSsid, StaPass);

    return 1;
}
Example #2
0
void GAgent_SaveSSIDAndKey(char *pSSID, char *pKey)
{
	//memcpy(&wNetConfig, nwkpara, sizeof(network_InitTypeDef_st));
    memset(g_stGAgentConfigData.wifi_ssid,0,32);
    memset(g_stGAgentConfigData.wifi_key,0,32);
    
    memcpy(g_stGAgentConfigData.wifi_ssid, pSSID, 32);
    memcpy(g_stGAgentConfigData.wifi_key, pKey, 32);		
    DRV_WiFi_StationCustomModeStart(pSSID , pKey);
	g_stGAgentConfigData.flag=g_stGAgentConfigData.flag|XPG_CFG_FLAG_CONNECTED;
    DRV_GAgent_SaveConfigData(&g_stGAgentConfigData);	
      	
    GAgent_Printf(GAGENT_INFO,"Configuration is successful.");
    return;
}
/* 如果有SSID和KEY, 以Station模式运行,并连接到指定的SSID;
 * 否则作为AP模式运行;
 */
void Connect2LateWiFi(void)
{

	if ((g_stGAgentConfigData.flag & XPG_CFG_FLAG_CONNECTED) == XPG_CFG_FLAG_CONNECTED) {   //flash 里面有要加入的网络名称
	    //wifiStatus = WIFI_MODE_STATION;
        wifiStatus = wifiStatus | WIFI_STATION_STATUS | WIFI_MODE_STATION;
        log_info("try to connect wifi...[%08x]\n", g_stGAgentConfigData.flag);
		log_info("SSID: %s\n",g_stGAgentConfigData.wifi_ssid);
        log_info("KEY: %s\n",g_stGAgentConfigData.wifi_key);
		DRV_WiFi_StationCustomModeStart(g_stGAgentConfigData.wifi_ssid,g_stGAgentConfigData.wifi_key);

	} else {
	    wifiStatus = WIFI_MODE_AP;
		log_info("Connect2LateWiFi, Working at AP mode\r\n");
        DRV_WiFi_SoftAPModeStart();
	}

    return;
}
/* 
 * ===  FUNCTION  ======================================================================
 *         Name:  GAgent_SetDevNetWork
 *  Description:  Start to connect to a network when used DirectConfig mode or STA mode,
 *              otherwise, Create a network with AP mode.
 *         Note:  This interface will check the gpio 10 level, when it was press, then
 *              set to DirectConfig mode, else read flag from norflash, and judge launch
 *              SoftAP mode or STA mode.
 * =====================================================================================
 */
void GAgent_SetDevNetWork(void)
{
    UINT8 gpio_val;

    /* if the Directconfig button was pressed(gpio is low level), then set to Directconfig
     * mode.
     * */
    gpio_val = BSP_GPIOGetValue(USER_GPIO_DIRECTCONFIG);
    if (gpio_val == 0) {
        OSTimeDly(20);		/* delay 200ms filter button shake */
        gpio_val = BSP_GPIOGetValue(USER_GPIO_DIRECTCONFIG);
        if (gpio_val == 0) {
			/* Set system to directConfig status */
			sys_status.status = SYS_STATUS_WIFI_DIRECTCONFING;	
            
			/* Launch directconfig mode */
            TestDirectConfig();
			g_stGAgentConfigData.flag |= XPG_CFG_FLAG_CONNECTED;
		    nl6621_SaveConfigData(&g_stGAgentConfigData);
			wifiStatus = wifiStatus | WIFI_STATION_STATUS | WIFI_MODE_STATION;
			
			/* Set system to STA mode */
			sys_status.status = SYS_STATUS_WIFI_STA_CONNECTED;
            return;
        } 
    }	
	
	if (nl6621_GetConfigData(&g_stGAgentConfigData) != 0) {
		log_info("Get GAgentConfig Data error.\n");
	}

    /* 启动Wifi连接,根据是否获得保存数据, 决定使用AP或者Station模式
	 * */
	if ((g_stGAgentConfigData.flag & XPG_CFG_FLAG_CONNECTED) == XPG_CFG_FLAG_CONNECTED) {   //flash 里面有要加入的网络名称
        /* Set system to STA status */
		sys_status.status = SYS_STATUS_WIFI_DIRECTCONFING;
		
		wifiStatus |= WIFI_STATION_STATUS | WIFI_MODE_STATION;
        log_info("Try to connect wifi...[%08x]\n", g_stGAgentConfigData.flag);
		log_info("SSID: %s\n", g_stGAgentConfigData.wifi_ssid);
        log_info("KEY: %s\n", g_stGAgentConfigData.wifi_key);
		DRV_WiFi_StationCustomModeStart(g_stGAgentConfigData.wifi_ssid, g_stGAgentConfigData.wifi_key);

		if (wifi_sta_connect_ap_flag != 0) { 	/* switch to softAP mode */
			goto SOFTAP;
		}

		/* Set system status to STA mode */
		sys_status.status = SYS_STATUS_WIFI_STA_CONNECTED;

	} else {
SOFTAP:
	    wifiStatus = WIFI_MODE_AP;
		log_info("Connect2LateWiFi, Working at AP mode\r\n");
        DRV_WiFi_SoftAPModeStart();

		/* Set system status to STA mode */
		sys_status.status = SYS_STATUS_WIFI_SOFTAP;
	}

    return;	
}