Add code to trigger a scan for wifi networks

pull/206/head
dannybackx 8 years ago
parent 10e7816532
commit 52b063ae46
  1. 1
      cmd/cmd.h
  2. 1
      cmd/handlers.c
  3. 15
      esp-link/cgiwifi.c
  4. 1
      esp-link/cgiwifi.h

@ -66,6 +66,7 @@ typedef enum {
CMD_WIFI_SELECT_SSID, CMD_WIFI_SELECT_SSID,
CMD_WIFI_SIGNAL_STRENGTH, // Query RSSI CMD_WIFI_SIGNAL_STRENGTH, // Query RSSI
CMD_WIFI_GET_SSID, // Query SSID currently connected to CMD_WIFI_GET_SSID, // Query SSID currently connected to
CMD_WIFI_START_SCAN, // Trigger a scan (takes a long time)
} CmdName; } CmdName;

@ -62,6 +62,7 @@ const CmdList commands[] = {
{CMD_WIFI_SELECT_SSID, "WIFI_SELECT_SSID", cmdWifiSelectSSID}, {CMD_WIFI_SELECT_SSID, "WIFI_SELECT_SSID", cmdWifiSelectSSID},
{CMD_WIFI_SIGNAL_STRENGTH, "WIFI_SIGNAL_STRENGTH", cmdWifiSignalStrength}, {CMD_WIFI_SIGNAL_STRENGTH, "WIFI_SIGNAL_STRENGTH", cmdWifiSignalStrength},
{CMD_WIFI_GET_SSID, "WIFI_GET_SSID", cmdWifiQuerySSID}, {CMD_WIFI_GET_SSID, "WIFI_GET_SSID", cmdWifiQuerySSID},
{CMD_WIFI_START_SCAN, "WIFI_START_SCAN", cmdWifiStartScan},
#ifdef MQTT #ifdef MQTT
{CMD_MQTT_SETUP, "MQTT_SETUP", MQTTCMD_Setup}, {CMD_MQTT_SETUP, "MQTT_SETUP", MQTTCMD_Setup},

@ -227,6 +227,7 @@ static void ICACHE_FLASH_ATTR scanStartCb(void *arg) {
wifi_station_scan(NULL, wifiScanDoneCb); wifi_station_scan(NULL, wifiScanDoneCb);
} }
// Start scanning, web interface
static int ICACHE_FLASH_ATTR cgiWiFiStartScan(HttpdConnData *connData) { static int ICACHE_FLASH_ATTR cgiWiFiStartScan(HttpdConnData *connData) {
if (connData->conn==NULL) return HTTPD_CGI_DONE; // Connection aborted. Clean up. if (connData->conn==NULL) return HTTPD_CGI_DONE; // Connection aborted. Clean up.
jsonHeader(connData, 200); jsonHeader(connData, 200);
@ -239,6 +240,16 @@ static int ICACHE_FLASH_ATTR cgiWiFiStartScan(HttpdConnData *connData) {
return HTTPD_CGI_DONE; return HTTPD_CGI_DONE;
} }
// Start scanning, API interface
void ICACHE_FLASH_ATTR cmdWifiStartScan(CmdPacket *cmd) {
if (!cgiWifiAps.scanInProgress) {
cgiWifiAps.scanInProgress = 1;
os_timer_disarm(&scanTimer);
os_timer_setfn(&scanTimer, scanStartCb, NULL);
os_timer_arm(&scanTimer, 200, 0);
}
}
static int ICACHE_FLASH_ATTR cgiWiFiGetScan(HttpdConnData *connData) { static int ICACHE_FLASH_ATTR cgiWiFiGetScan(HttpdConnData *connData) {
if (connData->conn==NULL) return HTTPD_CGI_DONE; // Connection aborted. Clean up. if (connData->conn==NULL) return HTTPD_CGI_DONE; // Connection aborted. Clean up.
char buff[1460]; char buff[1460];
@ -955,6 +966,8 @@ void ICACHE_FLASH_ATTR wifiInit() {
// Access functions for cgiWifiAps // Access functions for cgiWifiAps
int ICACHE_FLASH_ATTR wifiGetApCount() { int ICACHE_FLASH_ATTR wifiGetApCount() {
if (cgiWifiAps.scanInProgress)
return 0;
return cgiWifiAps.noAps; return cgiWifiAps.noAps;
} }
@ -1002,6 +1015,6 @@ void ICACHE_FLASH_ATTR cmdWifiQuerySSID(CmdPacket *cmd) {
os_printf("QuerySSID : %s\n", conf.ssid); os_printf("QuerySSID : %s\n", conf.ssid);
cmdResponseStart(CMD_RESP_CB, callback, 1); cmdResponseStart(CMD_RESP_CB, callback, 1);
cmdResponseBody(conf.ssid, strlen(conf.ssid)+1); cmdResponseBody(conf.ssid, strlen((char *)conf.ssid)+1);
cmdResponseEnd(); cmdResponseEnd();
} }

@ -29,5 +29,6 @@ void wifiGetApName(int, char *);
int wifiSignalStrength(int); int wifiSignalStrength(int);
void connectToNetwork(char *, char *); void connectToNetwork(char *, char *);
void cmdWifiQuerySSID(CmdPacket *cmd); void cmdWifiQuerySSID(CmdPacket *cmd);
void cmdWifiStartScan(CmdPacket *cmd);
#endif #endif

Loading…
Cancel
Save