Andrew Boyson / gps

Dependencies:   net lpc1768 crypto clock web log

http-derived/nmea/http-nmea-script.inc

Committer:
andrewboyson
Date:
2019-03-27
Revision:
48:9f1ab7784067
Child:
49:115a5e4fac0c

File content as of revision 48:9f1ab7784067:

"'use strict';\n"
"\n"
"var response        = '';\n"
"var headers         = '';\n"
"var gpsTrace        = false; //nibble  0      : bit 0\n"
"var gpsVerbose      = false; //nibble  0      : bit 1\n"
"var nmeaMsgTrace    = false; //nibble  0      : bit 2\n"
"var nmeaCmdTrace    = false; //nibble  0      : bit 3\n"
"var nmeaLat         = 0;     //nibble  1\n"
"var nmeaLng         = 0;     //nibble  9\n"
"var nmeaHgt         = 0;     //nibble 17\n"
"var nmeaHgtAboveMsl = 0;     //nibble 25\n"
"var nmeaDop         = 0;     //nibble 33\n"
"var nmeaSatCount    = 0;     //nibble 41\n"
"var nmeaFixQuality  = 0;     //nibble 49\n"
"var sensorheight    = 0;     //nibble 57\n"
"var bucketCount     = 0;     //nibble 65\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 parseAjax()\n"
"{\n"
"   var iDateStart  = headers.toLowerCase().indexOf('date:');\n"
"   var iDateEnd    = headers.indexOf('\\r', iDateStart);\n"
"   var rtcDate     = new Date(headers.slice(iDateStart + 5, iDateEnd));\n"
"   gpsTrace        = hexToBit(0, 0);\n"
"   gpsVerbose      = hexToBit(0, 1);\n"
"   nmeaMsgTrace    = hexToBit(0, 2);\n"
"   nmeaCmdTrace    = hexToBit(0, 3);\n"
"   nmeaLat         = parseInt(response.substr( 1, 8), 16);\n"
"   nmeaLng         = parseInt(response.substr( 9, 8), 16);\n"
"   nmeaHgt         = parseInt(response.substr(17, 8), 16);\n"
"   nmeaHgtAboveMsl = parseInt(response.substr(25, 8), 16);\n"
"   nmeaDop         = parseInt(response.substr(33, 8), 16);\n"
"   nmeaSatCount    = parseInt(response.substr(41, 8), 16);\n"
"   nmeaFixQuality  = parseInt(response.substr(49, 8), 16);\n"
"   sensorheight    = parseInt(response.substr(57, 8), 16);\n"
"   bucketCount     = parseInt(response.substr(65, 8), 16);\n"
"}\n"
"function displayGeneral()\n"
"{\n"
"   var elem;\n"
"   elem = document.getElementById('ajax-gps-trace'    ); if (elem) elem.setAttribute('dir', gpsTrace     ? 'rtl' : 'ltr');\n"
"   elem = document.getElementById('ajax-gps-verbose'  ); if (elem) elem.setAttribute('dir', gpsVerbose   ? 'rtl' : 'ltr');\n"
"   elem = document.getElementById('ajax-msg-trace'    ); if (elem) elem.setAttribute('dir', nmeaMsgTrace ? 'rtl' : 'ltr');\n"
"   elem = document.getElementById('ajax-cmd-trace'    ); if (elem) elem.setAttribute('dir', nmeaCmdTrace ? 'rtl' : 'ltr');\n"
"\n"
"   elem = document.getElementById('ajax-lat'          ); if (elem) elem.textContent = nmeaLat;\n"
"   elem = document.getElementById('ajax-lng'          ); if (elem) elem.textContent = nmeaLng;\n"
"   elem = document.getElementById('ajax-hgt'          ); if (elem) elem.textContent = nmeaHgt;\n"
"   elem = document.getElementById('ajax-hgt-above-msl'); if (elem) elem.textContent = nmeaHgtAboveMsl;\n"
"\n"
"   elem = document.getElementById('ajax-dop'          ); if (elem) elem.textContent = nmeaDop;\n"
"   elem = document.getElementById('ajax-sat-count'    ); if (elem) elem.textContent = nmeaSatCount;\n"
"   elem = document.getElementById('ajax-fix-quality'  ); if (elem) elem.textContent = nmeaFixQuality;\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"
"\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"
""