summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--etc/inc/pfsense-utils.inc72
-rwxr-xr-xusr/local/www/status_interfaces.php34
2 files changed, 99 insertions, 7 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;
+}
?>
diff --git a/usr/local/www/status_interfaces.php b/usr/local/www/status_interfaces.php
index c23140e..e880316 100755
--- a/usr/local/www/status_interfaces.php
+++ b/usr/local/www/status_interfaces.php
@@ -195,7 +195,7 @@ include("head.inc");
<tr>
<td width="22%" class="vncellt"><?=gettext("Cell Signal (RSSI)");?></td>
<td width="78%" class="listr">
- <?=htmlspecialchars($ifinfo['cell_rssi']);?> (0-31)
+ <?=htmlspecialchars($ifinfo['cell_rssi']);?>
</td>
</tr>
<?php endif; if ($ifinfo['cell_mode']): ?>
@@ -205,16 +205,44 @@ include("head.inc");
<?=htmlspecialchars($ifinfo['cell_mode']);?>
</td>
</tr>
- <?php endif; if ($ifinfo['cell_upstream']): ?>
+ <?php endif; if ($ifinfo['cell_simstate']): ?>
+ <tr>
+ <td width="22%" class="vncellt"><?=gettext("Cell SIM State");?></td>
+ <td width="78%" class="listr">
+ <?=htmlspecialchars($ifinfo['cell_simstate']);?>
+ </td>
+ </tr>
+ <?php endif; if ($ifinfo['cell_service']): ?>
+ <tr>
+ <td width="22%" class="vncellt"><?=gettext("Cell Service");?></td>
+ <td width="78%" class="listr">
+ <?=htmlspecialchars($ifinfo['cell_service']);?>
+ </td>
+ </tr>
+ <?php endif; if ($ifinfo['cell_bwupstream']): ?>
<tr>
<td width="22%" class="vncellt"><?=gettext("Cell Upstream");?></td>
<td width="78%" class="listr">
+ <?=htmlspecialchars($ifinfo['cell_bwupstream']);?> kbit/s
+ </td>
+ </tr>
+ <?php endif; if ($ifinfo['cell_bwdownstream']): ?>
+ <tr>
+ <td width="22%" class="vncellt"><?=gettext("Cell Downstream");?></td>
+ <td width="78%" class="listr">
+ <?=htmlspecialchars($ifinfo['cell_bwdownstream']);?> kbit/s
+ </td>
+ </tr>
+ <?php endif; if ($ifinfo['cell_upstream']): ?>
+ <tr>
+ <td width="22%" class="vncellt"><?=gettext("Cell Current Up");?></td>
+ <td width="78%" class="listr">
<?=htmlspecialchars($ifinfo['cell_upstream']);?> kbit/s
</td>
</tr>
<?php endif; if ($ifinfo['cell_downstream']): ?>
<tr>
- <td width="22%" class="vncellt"><?=gettext("Cell Downstream");?></td>
+ <td width="22%" class="vncellt"><?=gettext("Cell Current Down");?></td>
<td width="78%" class="listr">
<?=htmlspecialchars($ifinfo['cell_downstream']);?> kbit/s
</td>
OpenPOWER on IntegriCloud