This shows you the differences between two versions of the page.
Next revision | |||
— | sdk:scripts:best-operator [2015/05/05 15:04] – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== SDK Script best-operator.are ====== | ||
+ | <code c best-operator.are> | ||
+ | /* DESC: This script will scan for operators on startup and choose the one with the best signal | ||
+ | * Copyright (C) 2014 NetModule AG, Switzerland | ||
+ | * | ||
+ | */ | ||
+ | |||
+ | ME = argv[0]; | ||
+ | ARGV1 = argv[1]; | ||
+ | SCAN_INTERVAL = 30; /* scan interval */ | ||
+ | REG_TIMEOUT = 60; /* registration timeout */ | ||
+ | |||
+ | nb_syslog(" | ||
+ | |||
+ | lai = nb_config_get(" | ||
+ | if (lai != "" | ||
+ | nb_syslog(" | ||
+ | nb_config_set(" | ||
+ | sleep(5); | ||
+ | } | ||
+ | |||
+ | wanlink = nb_config_get(" | ||
+ | if (wanlink == " | ||
+ | mode = nb_config_get(" | ||
+ | if (mode == " | ||
+ | nb_syslog(" | ||
+ | nb_config_set(" | ||
+ | sleep(5); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | /* scan Mobile1 until we got networks */ | ||
+ | while (1) { | ||
+ | nb_syslog(" | ||
+ | nets = nb_scan_networks(" | ||
+ | | ||
+ | nr_nets = struct_get(nets, | ||
+ | if (!is_void(nr_nets) && nr_nets > 0) { | ||
+ | nb_syslog(" | ||
+ | break; | ||
+ | } | ||
+ | |||
+ | nb_syslog(" | ||
+ | sleep(SCAN_INTERVAL); | ||
+ | } | ||
+ | |||
+ | |||
+ | networks = mkarray(); | ||
+ | netcount = 0; | ||
+ | |||
+ | for (i = 1; i <= nr_nets; i++) { | ||
+ | net = trim(struct_get(nets, | ||
+ | lai = trim(struct_get(nets, | ||
+ | status = struct_get(nets, | ||
+ | |||
+ | if (is_void(net) || is_void(lai) || is_void(status)) continue; | ||
+ | |||
+ | if (trim(status) == " | ||
+ | nb_syslog(" | ||
+ | networks[netcount++] = mkstruct(" | ||
+ | " | ||
+ | " | ||
+ | } else { | ||
+ | nb_syslog(" | ||
+ | } | ||
+ | } | ||
+ | |||
+ | bestnet = ""; | ||
+ | bestlai = -1; | ||
+ | bestsignal = -999; | ||
+ | |||
+ | for (i = 0; i < netcount; i++) { | ||
+ | network = networks[i]; | ||
+ | net = struct_get(network, | ||
+ | lai = struct_get(network, | ||
+ | |||
+ | nb_syslog(" | ||
+ | nb_config_set(sprintf(" | ||
+ | |||
+ | nb_syslog(" | ||
+ | sleep(10); | ||
+ | |||
+ | signal = -999; | ||
+ | for (r = 0; r < REG_TIMEOUT; | ||
+ | status = nb_status(" | ||
+ | regstate = struct_get(status, | ||
+ | nb_syslog(" | ||
+ | |||
+ | if (regstate == " | ||
+ | nb_syslog(" | ||
+ | sleep(10); | ||
+ | status = nb_status(" | ||
+ | s = (int) struct_get(status, | ||
+ | if (s < -113) { | ||
+ | signal = s; | ||
+ | nb_syslog(" | ||
+ | break; | ||
+ | } else { | ||
+ | nb_syslog(" | ||
+ | } | ||
+ | } | ||
+ | sleep(10); | ||
+ | } | ||
+ | |||
+ | if (bestnet == "" | ||
+ | bestnet = net; | ||
+ | bestsignal = signal; | ||
+ | bestlai = lai; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | if (bestlai == -1) { | ||
+ | nb_syslog(" | ||
+ | } else { | ||
+ | |||
+ | nb_syslog(" | ||
+ | nb_config_set(sprintf(" | ||
+ | sleep(5); | ||
+ | |||
+ | nb_syslog(" | ||
+ | nb_config_set(" | ||
+ | } | ||
+ | |||
+ | nb_syslog(" | ||
+ | |||
+ | exit(0); | ||
+ | |||
+ | </ | ||