示例#1
0
static int
wifi_cli(int argc, char **argv)
{
    struct wifi_if *wi;
    int i;

    if (argc < 2) {
        goto usage;
    }
    wi = wifi_if_lookup(0);

    if (!strcmp(argv[1], "start")) {
        wifi_start(wi);
    } else if (!strcmp(argv[1], "stop")) {
        wifi_stop(wi);
    } else if (!strcmp(argv[1], "scan")) {
        wifi_scan_start(wi);
    } else if (!strcmp(argv[1], "aps")) {
        int i;
        struct wifi_ap *ap;

        console_printf("   %32s %4s %4s %s\n", "SSID", "RSSI", "chan", "sec");
        for (i = 0; i < wi->wi_scan_cnt; i++) {
            ap = (struct wifi_ap *)&wi->wi_scan[i];
            console_printf("%2d:%32s %4d %4d %s\n",
              i, ap->wa_ssid, ap->wa_rssi, ap->wa_channel,
              ap->wa_key_type ? "X" : "");
        }
    } else if (!strcmp(argv[1], "connect")) {
        if (argc < 2) {
            goto conn_usage;
        }
        i = strlen(argv[2]);
        if (i >= sizeof(wi->wi_ssid)) {
            goto conn_usage;
        }
        if (argc > 2) {
            i = strlen(argv[2]);
            if (i >= sizeof(wi->wi_key)) {
                goto conn_usage;
            }
            strcpy(wi->wi_key, argv[3]);
        }
        strcpy(wi->wi_ssid, argv[2]);
        if (wifi_connect(wi)) {
conn_usage:
            console_printf("%s %s <ssid> [<key>]\n",
              argv[0], argv[1]);
        }
    } else {
usage:
        console_printf("start|stop|scan|aps|connect <ssid> [<key>]\n");
    }
    return 0;
}
示例#2
0
void ICACHE_FLASH_ATTR wifi_scan_get_result(char *response) {
	if (wifi_scan_in_progress) {
		webserver_set_status(0);
		return;
	}
	
	if (wifi_scan_ap_count == 0 || wifi_scan_result == NULL) {
		if (wifi_scan_start()) {
			webserver_set_status(0);
			return;
		}
		
		webserver_set_status(200);
		json_error(response, ESP8266, "Can not start scan", NULL);
		return;
	}
	
	webserver_set_status(200);
	
	char result[WEBSERVER_MAX_VALUE*wifi_scan_ap_count];
	os_memset(result, '\0', sizeof(result));
	
	uint8 i=0;
	for (i=0; i<wifi_scan_ap_count; i++) {
		os_sprintf(
			result + os_strlen(result), 
			"%s{\"SSID\" : \"%s\", \"Strength\" : %d, \"Mode\" : \"%s\"}", 
			i > 0 ? ", " : "",
			wifi_scan_result[i]->ssid, 
			wifi_scan_result[i]->rssi, 
			wifi_auth_mode_str(wifi_scan_result[i]->authmode)
		);
	}
	
	char data_str[WEBSERVER_MAX_VALUE*wifi_scan_ap_count];
	json_data(
		response, ESP8266, OK_STR,
		json_sprintf(
			data_str,
			"\"WiFi\" : [%s]",
			result
		),
		NULL
	);
}