Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: net lpc1768 crypto clock web log
web-derived/nmea/web-nmea-script.inc
- Committer:
- andrewboyson
- Date:
- 2019-04-28
- Revision:
- 55:a1bd0572c8b6
- Parent:
- http-derived/nmea/http-nmea-script.inc@ 49:115a5e4fac0c
File content as of revision 55:a1bd0572c8b6:
"'use strict';\n" "\n" "const NMEA_DEG_UNIT = 10000000;\n" "const NMEA_HGT_UNIT = 1000000;\n" "\n" "var response = '';\n" "var headers = '';\n" "var gpsTrace = false;\n" "var gpsVerbose = false;\n" "var msgTrace = false;\n" "var cmdTrace = false;\n" "var lat = 0;\n" "var lng = 0;\n" "var hgt = 0;\n" "var hgtAboveMsl = 0;\n" "var mslAboveWgs = 0;\n" "var dop = 0;\n" "var satCount = 0;\n" "var fixQuality = 0;\n" "var sensorHeight = 0;\n" "var bucketCount = 0;\n" "var buckets = '';\n" "\n" "function hexToBit(iChar, iBit)\n" "{\n" " var value = parseInt(response.charAt(iChar), 16);\n" " value >>= iBit;\n" " return value & 1;\n" "}\n" "function parseSint32fromHex(value)\n" "{\n" " value = parseInt(value, 16);\n" " if (value > 0x7FFFFFFF) value -= 0xFFFFFFFF;\n" " return value;\n" "}\n" "function parseAjax()\n" "{\n" " gpsTrace = hexToBit(0, 0);\n" " gpsVerbose = hexToBit(0, 1);\n" " msgTrace = hexToBit(0, 2);\n" " cmdTrace = hexToBit(0, 3);\n" " lat = parseSint32fromHex(response.substr( 1, 8));\n" " lng = parseSint32fromHex(response.substr( 9, 8));\n" " hgt = parseSint32fromHex(response.substr(17, 8));\n" " hgtAboveMsl = parseSint32fromHex(response.substr(25, 8));\n" " mslAboveWgs = parseSint32fromHex(response.substr(33, 8));\n" " dop = parseSint32fromHex(response.substr(41, 8));\n" " satCount = parseSint32fromHex(response.substr(49, 8));\n" " fixQuality = parseSint32fromHex(response.substr(57, 8));\n" " sensorHeight = parseSint32fromHex(response.substr(65, 8));\n" " bucketCount = parseSint32fromHex(response.substr(73, 8));\n" " buckets = '';\n" " for (var i = 0; i < bucketCount; i++)\n" " {\n" " buckets += (i * 50).toString().padStart(3, '0') + ' ' + parseInt(response.substr(81 + i * 8, 8), 16) + '\\r\\n';\n" " }\n" "}\n" "function degToString(plus, minus, deg)\n" "{\n" " deg /= NMEA_DEG_UNIT;\n" " if (deg >= 0) return plus + deg.toFixed(5);\n" " else return minus + (-deg).toFixed(5);\n" "}\n" "function hgtToString(plus, minus, hgt)\n" "{\n" " hgt /= NMEA_HGT_UNIT;\n" " if (hgt >= 0) return plus + hgt.toFixed(1);\n" " else return minus + (-hgt).toFixed(1);\n" "}\n" "function displayGeneral()\n" "{\n" " var elem;\n" " elem = document.getElementById('ajax-trace-gps' ); if (elem) elem.setAttribute('dir', gpsTrace ? 'rtl' : 'ltr');\n" " elem = document.getElementById('ajax-trace-verbose'); if (elem) elem.setAttribute('dir', gpsVerbose ? 'rtl' : 'ltr');\n" " elem = document.getElementById('ajax-trace-msg' ); if (elem) elem.setAttribute('dir', msgTrace ? 'rtl' : 'ltr');\n" " elem = document.getElementById('ajax-trace-cmd' ); if (elem) elem.setAttribute('dir', cmdTrace ? 'rtl' : 'ltr');\n" "\n" " elem = document.getElementById('ajax-position' ); if (elem) elem.textContent = degToString('N', 'S', lat) + ' ' +\n" " degToString('E', 'W', lng) + ' ' +\n" " hgtToString('H', 'D', hgt);\n" " elem = document.getElementById('ajax-msl-above-wgs'); if (elem) elem.textContent = hgtToString('H', 'D', mslAboveWgs);\n" " elem = document.getElementById('ajax-hgt-above-msl'); if (elem) elem.textContent = hgtToString('H', 'D', hgtAboveMsl);\n" " elem = document.getElementById('ajax-gnd-above-msl'); if (elem) elem.textContent = hgtToString('H', 'D', hgtAboveMsl - sensorHeight * NMEA_HGT_UNIT);\n" "\n" " elem = document.getElementById('ajax-dop' ); if (elem) elem.textContent = dop / 100;\n" " elem = document.getElementById('ajax-sat-count' ); if (elem) elem.textContent = satCount;\n" " elem = document.getElementById('ajax-fix-quality' ); if (elem) elem.textContent = fixQuality;\n" " \n" " elem = document.getElementById('ajax-sensor-hgt' ); if (elem) elem.value = sensorHeight;\n" " \n" " elem = document.getElementById('ajax-bucket-count' ); if (elem) elem.textContent = bucketCount;\n" " elem = document.getElementById('ajax-buckets' ); if (elem) elem.textContent = buckets;\n" "\n" " elem = document.getElementById('ajax-response' ); if (elem) elem.textContent = response;\n" " elem = document.getElementById('ajax-headers' ); if (elem) elem.textContent = headers;\n" "}\n" "\n" "var ajax;\n" "function AjaxRequest(request) //Used by this script and from HTML page\n" "{\n" " ajax=new XMLHttpRequest();\n" " ajax.onreadystatechange=handleAjaxResponse;\n" " if (request) ajax.open('GET', '/nmea-ajax' + '?' + request, true);\n" " else ajax.open('GET', '/nmea-ajax' , true);\n" " ajax.send();\n" "}\n" "function requestAjax() //Used in this script\n" "{\n" " AjaxRequest('');\n" "}\n" "\n" "function handleAjaxResponse()\n" "{\n" " if (ajax.readyState==4 && ajax.status==200)\n" " {\n" " response = ajax.responseText;\n" " headers = ajax.getAllResponseHeaders();\n" " parseAjax();\n" " displayGeneral();\n" " }\n" "}\n" "\n" "function init()\n" "{\n" " setInterval(requestAjax, 10000);\n" " requestAjax();\n" "}\n" "if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init ); // Loading hasn't finished yet\n" "else init(); //`DOMContentLoaded` has already fired\n" ""