summaryrefslogtreecommitdiffstats
path: root/src/usr
diff options
context:
space:
mode:
authorjskyboo <jack@ron.hog.mooo.info>2017-02-02 00:41:31 -0800
committerRenato Botelho <renato@netgate.com>2017-02-03 07:03:42 -0200
commit5476b118a341a902433fba017be4c606c0c852d3 (patch)
tree43ecdc31a4087cf4a85abc5735c2e64d4d107e3b /src/usr
parent3a710cf9d842594fb9ea839f069524c4101438ce (diff)
downloadpfsense-5476b118a341a902433fba017be4c606c0c852d3.zip
pfsense-5476b118a341a902433fba017be4c606c0c852d3.tar.gz
Add to NTP GPS processing of PGRMF sentence
(cherry picked from commit 6924a2bf34a70cd33284a28ca3575f33f9834375)
Diffstat (limited to 'src/usr')
-rw-r--r--src/usr/local/www/services_ntpd_gps.php16
-rw-r--r--src/usr/local/www/status_ntpd.php13
-rw-r--r--src/usr/local/www/widgets/widgets/ntp_status.widget.php13
3 files changed, 42 insertions, 0 deletions
diff --git a/src/usr/local/www/services_ntpd_gps.php b/src/usr/local/www/services_ntpd_gps.php
index e350a65..e2f23ea 100644
--- a/src/usr/local/www/services_ntpd_gps.php
+++ b/src/usr/local/www/services_ntpd_gps.php
@@ -205,6 +205,12 @@ if ($_POST) {
} else {
$config['ntpd']['gps']['nmea'] = strval(array_sum($_POST['gpsnmea']));
}
+
+ if (!empty($_POST['processpgrmf'])) {
+ $config['ntpd']['gps']['processpgrmf'] = $_POST['processpgrmf'];
+ } elseif (isset($config['ntpd']['gps']['processpgrmf']) || $config['ntpd']['gps']['type'] !== 'Garmin') {
+ unset($config['ntpd']['gps']['processpgrmf']);
+ }
if (!empty($_POST['gpsfudge1'])) {
$config['ntpd']['gps']['fudge1'] = $_POST['gpsfudge1'];
@@ -403,6 +409,13 @@ $section->addInput(new Form_Select(
true
))->setHelp('By default NTP will listen for all supported NMEA sentences. One or more sentences to listen for may be specified.');
+$section->addInput(new Form_Checkbox(
+ 'processpgrmf',
+ null,
+ 'Process PGRMF. Ignores ALL other NMEA sentences. (default: unchecked).',
+ $pconfig['processpgrmf']
+));
+
$section->addInput(new Form_Input(
'gpsfudge1',
'Fudge Time 1',
@@ -614,6 +627,7 @@ events.push(function() {
function set_gps_default(type) {
$('#gpsnmea').val(0);
+ $('#processpgrmf').prop('checked', false);
$('#gpsspeed').val(0);
$('#gpsfudge1').val(0);
$('#gpsinitcmd').val(get_gps_string(type));
@@ -712,7 +726,9 @@ events.push(function() {
// When the 'GPS' selector is changed, we set the gps defaults
$('#gpstype').on('change', function() {
set_gps_default($(this).val());
+ hideInput('processpgrmf', $(this).val() !== "Garmin");
});
+ hideInput('processpgrmf', '<?=$pconfig['type']?>' !== "Garmin");
if ('<?=$pconfig['initcmd']?>' == '') {
set_gps_default('<?=$pconfig['type']?>');
diff --git a/src/usr/local/www/status_ntpd.php b/src/usr/local/www/status_ntpd.php
index 6685115..f86cb3b 100644
--- a/src/usr/local/www/status_ntpd.php
+++ b/src/usr/local/www/status_ntpd.php
@@ -169,6 +169,19 @@ if (!isset($config['ntpd']['noquery'])) {
$gps_lon = $gps_lon * (($gps_vars[4] == "E") ? 1 : -1);
$gps_lat_dir = $gps_vars[2];
$gps_lon_dir = $gps_vars[4];
+ } elseif (substr($tmp, 0, 6) == '$PGRMF') {
+ $gps_vars = preg_split('/[,\*]+/', $tmp);
+ $gps_ok = $gps_vars[11];
+ $gps_lat_deg = substr($gps_vars[6], 0, 2);
+ $gps_lat_min = substr($gps_vars[6], 2);
+ $gps_lon_deg = substr($gps_vars[8], 0, 3);
+ $gps_lon_min = substr($gps_vars[8], 3);
+ $gps_lat = $gps_lat_deg + $gps_lat_min / 60.0;
+ $gps_lat = $gps_lat * (($gps_vars[7] == "N") ? 1 : -1);
+ $gps_lon = $gps_lon_deg + $gps_lon_min / 60.0;
+ $gps_lon = $gps_lon * (($gps_vars[9] == "E") ? 1 : -1);
+ $gps_lat_dir = $gps_vars[7];
+ $gps_lon_dir = $gps_vars[9];
}
}
}
diff --git a/src/usr/local/www/widgets/widgets/ntp_status.widget.php b/src/usr/local/www/widgets/widgets/ntp_status.widget.php
index ce2218b..74c807d 100644
--- a/src/usr/local/www/widgets/widgets/ntp_status.widget.php
+++ b/src/usr/local/www/widgets/widgets/ntp_status.widget.php
@@ -153,6 +153,19 @@ if ($_REQUEST['updateme']) {
$gps_lon = $gps_lon * (($gps_vars[4] == "E") ? 1 : -1);
$gps_lat_dir = $gps_vars[2];
$gps_lon_dir = $gps_vars[4];
+ } elseif (substr($tmp, 0, 6) == '$PGRMF') {
+ $gps_vars = preg_split('/[,\*]+/', $tmp);
+ $gps_ok = $gps_vars[11];
+ $gps_lat_deg = substr($gps_vars[6], 0, 2);
+ $gps_lat_min = substr($gps_vars[6], 2);
+ $gps_lon_deg = substr($gps_vars[8], 0, 3);
+ $gps_lon_min = substr($gps_vars[8], 3);
+ $gps_lat = $gps_lat_deg + $gps_lat_min / 60.0;
+ $gps_lat = $gps_lat * (($gps_vars[7] == "N") ? 1 : -1);
+ $gps_lon = $gps_lon_deg + $gps_lon_min / 60.0;
+ $gps_lon = $gps_lon * (($gps_vars[9] == "E") ? 1 : -1);
+ $gps_lat_dir = $gps_vars[7];
+ $gps_lon_dir = $gps_vars[9];
}
}
}
OpenPOWER on IntegriCloud