no way to compare when less than two revisions

Differences

This shows you the differences between two versions of the page.


sdk:scripts:scan-wlan [2015/05/05 15:04] (current) – created - external edit 127.0.0.1
Line 1: Line 1:
 +====== SDK Script scan-wlan.are ======
 +<code c scan-wlan.are>
 +/* DESC: This script can be used to switch the WLAN client network according to availability
 + * Copyright (C) 2013 NetModule AG, Switzerland
 + */
 +
 +IFC = "WLAN1";
 +NETWORK = "";
 +MIN_SIGNAL = -90;
 +
 +/* ATTENTION: Scanning for WLAN networks will tear down any running access-point */
 +nets = nb_scan_networks(IFC);
 +nr_nets = struct_get(nets, "NETWORK_COUNT");
 +
 +if (is_void(nr_nets) || nr_nets < 1) {
 +    nb_syslog("no networks found on %s", IFC);
 +    exit(0);
 +}
 +
 +/* lookup WLAN networks */
 +for (i = 1; i <= nr_nets; i++) {
 +    k = sprintf("NETWORK%d_SSID", i);
 +    ssid = struct_get(nets, k);
 +    k = sprintf("NETWORK%d_SIGNAL", i);    
 +    signal = (int)struct_get(nets, k);
 +
 +    if (strlen(ssid) == 0) continue;
 +
 +    nb_syslog("detected %s network '%s' (signal %d)", IFC, ssid, signal);
 +
 +    if ((ssid == "home-network" || ssid == "office-network") && signal > MIN_SIGNAL) {
 +        NETWORK = ssid;       
 +        break;
 +    }
 +}
 +
 +if (NETWORK != "") {
 +    nb_syslog("activating %s network '%s'", IFC, NETWORK);
 +    cfg = sprintf("wlan.0.client.0.ssid=%s", NETWORK);
 +    nb_config_set(cfg);
 +} else {
 +    nb_syslog("no known networks found on %s", IFC);
 +}
 +
 +exit(0);
 +
 +</code>