summaryrefslogtreecommitdiffstats
path: root/etc/inc/pfsense-utils.inc
diff options
context:
space:
mode:
authorsmos <seth.mos@dds.nl>2012-05-23 17:14:28 +0200
committersmos <seth.mos@dds.nl>2012-05-23 17:14:28 +0200
commitd23e157a06374c958a7e782e6dd55cd59ecf5c48 (patch)
tree47333d340048c168880e7f401d1c56f002ac5bf7 /etc/inc/pfsense-utils.inc
parent7e631290b26172a9ca19d58c415f713761aa074b (diff)
downloadpfsense-d23e157a06374c958a7e782e6dd55cd59ecf5c48.zip
pfsense-d23e157a06374c958a7e782e6dd55cd59ecf5c48.tar.gz
Add more functions and expand the 3G status interfaces screen.
List the SIM state, service, speeds and mode
Diffstat (limited to 'etc/inc/pfsense-utils.inc')
-rw-r--r--etc/inc/pfsense-utils.inc72
1 files changed, 68 insertions, 4 deletions
diff --git a/etc/inc/pfsense-utils.inc b/etc/inc/pfsense-utils.inc
index ccd04ddd..a71d13a 100644
--- a/etc/inc/pfsense-utils.inc
+++ b/etc/inc/pfsense-utils.inc
@@ -1265,11 +1265,18 @@ function get_interface_info($ifdescr) {
$mondev = "{$g['tmp_path']}/3gstats.{$ifdescr}";
if(file_exists($mondev)) {
$cellstats = file($mondev);
+ /* skip header */
$a_cellstats = explode(",", $cellstats[1]);
- $ifinfo['cell_rssi'] = $a_cellstats[1];
- $ifinfo['cell_mode'] = $a_cellstats[2] .",". $a_cellstats[3];
- $ifinfo['cell_upstream'] = $a_cellstats[8];
- $ifinfo['cell_downstream'] = trim($a_cellstats[9]);
+ $ifinfo['cell_rssi'] = huawei_rssi_to_string($a_cellstats[1]);
+ $ifinfo['cell_mode'] = huawei_mode_to_string($a_cellstats[2], $a_cellstats[3]);
+ $ifinfo['cell_upstream'] = $a_cellstats[4];
+ $ifinfo['cell_downstream'] = trim($a_cellstats[5]);
+ $ifinfo['cell_sent'] = $a_cellstats[6];
+ $ifinfo['cell_received'] = trim($a_cellstats[7]);
+ $ifinfo['cell_bwupstream'] = $a_cellstats[8];
+ $ifinfo['cell_bwdownstream'] = trim($a_cellstats[9]);
+ $ifinfo['cell_simstate'] = huawei_simstate_to_string($a_cellstats[10]);
+ $ifinfo['cell_service'] = huawei_service_to_string(trim($a_cellstats[11]));
}
// Calculate cumulative uptime for PPP link. Useful for connections that have per minute/hour contracts so you don't go over!
if (isset($ppp['uptime']))
@@ -2432,4 +2439,61 @@ function calculate_ipv6_delegation_length($if) {
}
return($pdlen);
}
+
+function huawei_rssi_to_string($rssi) {
+ $dbm = array();
+ $i = 0;
+ $dbstart = -51;
+ while($i < 31) {
+ $dbm[$i] = $dbstart - ($i * 2);
+ $i++;
+ }
+ $percent = round(($rssi / 31) * 100);
+ $string = "rssi:8 level:{$dbm[$rssi]}dBm percent:{$percent}%";
+ return $string;
+}
+
+function huawei_mode_to_string($mode, $submode) {
+ $modes[0] = "None";
+ $modes[1] = "AMPS";
+ $modes[2] = "CDMA";
+ $modes[3] = "GSM/GPRS";
+ $modes[4] = "HDR";
+ $modes[5] = "WCDMA";
+ $modes[6] = "GPS";
+
+ $submodes[0] = "No Service";
+ $submodes[1] = "GSM";
+ $submodes[2] = "GPRS";
+ $submodes[3] = "EDGE";
+ $submodes[4] = "WCDMA";
+ $submodes[5] = "HSDPA";
+ $submodes[6] = "HSUPA";
+ $submodes[7] = "HDSPA+HSUPA";
+ $submodes[8] = "TD-SCDMA";
+ $submodes[9] = "HSPA+";
+ $string = "{$modes[$mode]}, {$submodes[$submode]} Mode";
+ return $string;
+}
+
+function huawei_service_to_string($state) {
+ $modes[0] = "No";
+ $modes[1] = "Restricted";
+ $modes[2] = "Valid";
+ $modes[3] = "Restricted Regional";
+ $modes[4] = "Powersaving";
+ $string = "{$modes[$state]} Service";
+ return $string;
+}
+
+function huawei_simstate_to_string($state) {
+ $modes[0] = "Invalid SIM/locked";
+ $modes[1] = "Valid SIM";
+ $modes[2] = "Invalid SIM CS";
+ $modes[3] = "Invalid SIM PS";
+ $modes[4] = "Invalid SIM CS/PS";
+ $modes[255] = "Missing SIM";
+ $string = "{$modes[$state]} State";
+ return $string;
+}
?>
OpenPOWER on IntegriCloud