- preg_match: documentation ( source)
- log10: documentation ( source)
<?php
// rsrq(rb,rsrp,rssi) = 10*log10(rb*10**(rsrp/10)/10**(rssi/10));
function calc ($data) {
$pattern = "Freq:([ ]+)(?P<Freq>[0-9\-]+)\n";
$pattern .= "Band:([ ]+)(?P<Band>[0-9\-]+)\n";
$pattern .= "CellId:([ ]+)(?P<CellId>[0-9\-]+)\n";
$pattern .= "RSRP:([ ]+)(?P<RSRP>[0-9\-]+)\n";
$pattern .= "RSRQ:([ ]+)(?P<RSRQ>[0-9\-]+)\n";
$pattern .= "RSSI:([ ]+)(?P<RSSI>[0-9\-]+)";
preg_match('/'.$pattern.'/i', $data, $matches);
if (!empty($matches)) {
$rb = 50; // lte 800
if ($matches['Band'] == 3) {
$rb = 100; // lte 1800
}
echo rsrq($rb, $matches['RSRP'], $matches['RSSI']);
}
}
function rsrq ($rb, $rsrp, $rssi) {
return 10*log10($rb*10**($rsrp/10)/10**($rssi/10));
}
calc(">> Current-LTE-Config <<
Acgorder: 03
Band: 3FFFFFFF
Roam: 3
Srvdomain: 1
LTEBand: 80044
>> Current-CellInfo <<
Freq: 18150
Band: 3
CellId: 60
RSRP: -89
RSRQ: -10
RSSI: -62");