diff options
-rw-r--r-- | etc/inc/pfsense-utils.inc | 72 | ||||
-rwxr-xr-x | usr/local/www/status_interfaces.php | 34 |
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> |