Andrew Boyson / web

Dependents:   oldheating gps motorhome heating

Revision:
95:8c9dda8a0caf
Parent:
94:d7226b2c14b6
Child:
96:eb2eb75bad0f
--- a/clock/http-clock-script.inc	Tue Apr 16 19:18:27 2019 +0000
+++ b/clock/http-clock-script.inc	Thu Apr 18 15:26:29 2019 +0000
@@ -1,8 +1,8 @@
 "//Clock script\n"
 "'use strict';\n"
 "\n"
-"let pseudo          = new Utc();\n"
-"let rtc             = new Utc();\n"
+"let pseudo          = new Clock();\n"
+"let rtc             = new Clock();\n"
 "\n"
 "let pseudoDisplay   = false;\n"
 "let pseudoStartMs   = 0;\n"
@@ -13,7 +13,6 @@
 "let sourceIsOk      = false;\n"
 "let rateIsLocked    = false;\n"
 "let timeIsLocked    = false;\n"
-"let leapmonths1970  = 0;\n"
 "\n"
 "let ppb             = 0;\n"
 "let ppbdivisor      = 0;\n"
@@ -39,13 +38,12 @@
 "let scanmin         = 0;\n"
 "\n"
 "const DISPLAY_LEAP_MS = 10000;\n"
-"const          SERVER = '/clock-ajax';\n"
 "\n"
 "function parseDate()\n"
 "{\n"
-"    let iDateStart  = BaseHeaders.toLowerCase().indexOf('date:');\n"
-"    let iDateEnd    = BaseHeaders.indexOf('\\r', iDateStart);\n"
-"    let rtcDate     = new Date(BaseHeaders.slice(iDateStart + 5, iDateEnd));\n"
+"    let iDateStart  = Ajax.headers.toLowerCase().indexOf('date:');\n"
+"    let iDateEnd    = Ajax.headers.indexOf('\\r', iDateStart);\n"
+"    let rtcDate     = new Date(Ajax.headers.slice(iDateStart + 5, iDateEnd));\n"
 "    rtc.ms          = rtcDate.getTime();\n"
 "}\n"
 "\n"
@@ -53,21 +51,17 @@
 "{\n"
 "    let lines = text.split('\\n');\n"
 "    rtc.ms         += parseInt(lines[0], 16);\n"
-"    rtc.ms         -= BaseMs;\n"
-"    diffMs          = rtc.ms + BaseMs - Date.now();\n"
-"    rtcIsSet        = hexToBit(lines[1], 0);\n"
-"    clockIsSet      = hexToBit(lines[1], 1);\n"
-"    sourceIsOk      = hexToBit(lines[1], 2);\n"
-"    rateIsLocked    = hexToBit(lines[1], 3);\n"
-"    timeIsLocked    = hexToBit(lines[1], 4);\n"
-"    rtc.leapEnable  = hexToBit(lines[1], 5);\n"
-"    rtc.leapForward = hexToBit(lines[1], 6);\n"
-"    govTrace        = hexToBit(lines[1], 7);\n"
-"    leapmonths1970  = parseInt(lines[2], 16);\n"
-"    rtc.leapMonth   =  leapmonths1970                  % 12;\n"
-"    rtc.leapYear    = (leapmonths1970 - rtc.leapMonth) / 12;\n"
-"    rtc.leapMonth  += 1;\n"
-"    rtc.leapYear   += 1970;\n"
+"    rtc.ms         -= Ajax.ms;\n"
+"    diffMs          = rtc.ms + Ajax.ms - Date.now();\n"
+"    rtcIsSet        = Ajax.hexToBit(lines[1], 0);\n"
+"    clockIsSet      = Ajax.hexToBit(lines[1], 1);\n"
+"    sourceIsOk      = Ajax.hexToBit(lines[1], 2);\n"
+"    rateIsLocked    = Ajax.hexToBit(lines[1], 3);\n"
+"    timeIsLocked    = Ajax.hexToBit(lines[1], 4);\n"
+"    rtc.leapEnable  = Ajax.hexToBit(lines[1], 5);\n"
+"    rtc.leapForward = Ajax.hexToBit(lines[1], 6);\n"
+"    govTrace        = Ajax.hexToBit(lines[1], 7);\n"
+"    rtc.months1970  = parseInt(lines[2], 16);\n"
 "    rtc.leaps       = parseInt(lines[3], 16);\n"
 "}\n"
 "function parseLinesGov(text)\n"
@@ -101,83 +95,85 @@
 "    scanmax         = parseInt(lines[1], 16);\n"
 "    scanmin         = parseInt(lines[2], 16);\n"
 "}\n"
-"function DerivedParse()\n"
+"function parse()\n"
 "{\n"
-"    let topics = BaseResponse.split('\\f');\n"
+"    let topics = Ajax.response.split('\\f');\n"
 "    parseDate();\n"
 "    parseLinesTime(topics[0]);\n"
 "    parseLinesGov (topics[1]);\n"
 "    parseLinesNtp (topics[2]);\n"
 "    parseLinesScan(topics[3]);\n"
 "}\n"
-"function DerivedDisplay()\n"
+"function display()\n"
 "{\n"
 "    let elem;\n"
-"    elem = getElementOrNull('ajax-rtc-set'      ); if (elem) elem.setAttribute('dir', rtcIsSet     ? 'rtl' : 'ltr');\n"
-"    elem = getElementOrNull('ajax-clock-set'    ); if (elem) elem.setAttribute('dir', clockIsSet   ? 'rtl' : 'ltr');\n"
-"    elem = getElementOrNull('ajax-source-ok'    ); if (elem) elem.setAttribute('dir', sourceIsOk   ? 'rtl' : 'ltr');\n"
-"    elem = getElementOrNull('ajax-rate-locked'  ); if (elem) elem.setAttribute('dir', rateIsLocked ? 'rtl' : 'ltr');\n"
-"    elem = getElementOrNull('ajax-time-locked'  ); if (elem) elem.setAttribute('dir', timeIsLocked ? 'rtl' : 'ltr');\n"
+"    elem = Ajax.getElementOrNull('ajax-rtc-set'      ); if (elem) elem.setAttribute('dir', rtcIsSet     ? 'rtl' : 'ltr');\n"
+"    elem = Ajax.getElementOrNull('ajax-clock-set'    ); if (elem) elem.setAttribute('dir', clockIsSet   ? 'rtl' : 'ltr');\n"
+"    elem = Ajax.getElementOrNull('ajax-source-ok'    ); if (elem) elem.setAttribute('dir', sourceIsOk   ? 'rtl' : 'ltr');\n"
+"    elem = Ajax.getElementOrNull('ajax-rate-locked'  ); if (elem) elem.setAttribute('dir', rateIsLocked ? 'rtl' : 'ltr');\n"
+"    elem = Ajax.getElementOrNull('ajax-time-locked'  ); if (elem) elem.setAttribute('dir', timeIsLocked ? 'rtl' : 'ltr');\n"
 "    \n"
-"    elem = getElementOrNull('ajax-leap-enable'  ); if (elem) elem.setAttribute('dir', rtc.leapEnable   ? 'rtl' : 'ltr');\n"
-"    elem = getElementOrNull('ajax-leap-forward' ); if (elem) elem.setAttribute('dir', rtc.leapForward  ? 'rtl' : 'ltr');\n"
+"    elem = Ajax.getElementOrNull('ajax-leap-enable'  ); if (elem) elem.setAttribute('dir', rtc.leapEnable   ? 'rtl' : 'ltr');\n"
+"    elem = Ajax.getElementOrNull('ajax-leap-forward' ); if (elem) elem.setAttribute('dir', rtc.leapForward  ? 'rtl' : 'ltr');\n"
 "    \n"
-"    elem = getElementOrNull('ajax-leap-year'    ); if (elem) elem.value = leapmonths1970 ? rtc.leapYear  : '';\n"
-"    elem = getElementOrNull('ajax-leap-month'   ); if (elem) elem.value = leapmonths1970 ? rtc.leapMonth : '';\n"
+"    elem = Ajax.getElementOrNull('ajax-leap-year'    ); if (elem) elem.value = rtc.months1970 ? rtc.leapYear  : '';\n"
+"    elem = Ajax.getElementOrNull('ajax-leap-month'   ); if (elem) elem.value = rtc.months1970 ? rtc.leapMonth : '';\n"
 "    \n"
-"    elem = getElementOrNull('ajax-leap-count'   ); if (elem) elem.value = rtc.leaps;\n"
+"    elem = Ajax.getElementOrNull('ajax-leap-count'   ); if (elem) elem.value = rtc.leaps;\n"
 "    \n"
-"    elem = getElementOrNull('ajax-ppb'          ); if (elem) elem.value = ppb;\n"
-"    elem = getElementOrNull('ajax-ppb-divisor'  ); if (elem) elem.value = ppbdivisor;\n"
-"    elem = getElementOrNull('ajax-ppb-max-chg'  ); if (elem) elem.value = ppbmaxchange;\n"
-"    elem = getElementOrNull('ajax-ppb-syn-lim'  ); if (elem) elem.value = syncedlimitppb;\n"
-"    elem = getElementOrNull('ajax-ppb-syn-hys'  ); if (elem) elem.value = syncedhysppb;\n"
-"    elem = getElementOrNull('ajax-off-divisor'  ); if (elem) elem.value = slewdivisor;\n"
-"    elem = getElementOrNull('ajax-off-max'      ); if (elem) elem.value = slewmax;\n"
-"    elem = getElementOrNull('ajax-off-syn-lim'  ); if (elem) elem.value = syncedlimitns / 1000000;\n"
-"    elem = getElementOrNull('ajax-off-syn-hys'  ); if (elem) elem.value = syncedhysns   / 1000000;\n"
-"    elem = getElementOrNull('ajax-off-rst-lim'  ); if (elem) elem.value = maxoffsetsecs;\n"
-"    elem = getElementOrNull('ajax-gov-trace'    ); if (elem) elem.setAttribute('dir', govTrace     ? 'rtl' : 'ltr');\n"
+"    elem = Ajax.getElementOrNull('ajax-ppb'          ); if (elem) elem.value = ppb;\n"
+"    elem = Ajax.getElementOrNull('ajax-ppb-divisor'  ); if (elem) elem.value = ppbdivisor;\n"
+"    elem = Ajax.getElementOrNull('ajax-ppb-max-chg'  ); if (elem) elem.value = ppbmaxchange;\n"
+"    elem = Ajax.getElementOrNull('ajax-ppb-syn-lim'  ); if (elem) elem.value = syncedlimitppb;\n"
+"    elem = Ajax.getElementOrNull('ajax-ppb-syn-hys'  ); if (elem) elem.value = syncedhysppb;\n"
+"    elem = Ajax.getElementOrNull('ajax-off-divisor'  ); if (elem) elem.value = slewdivisor;\n"
+"    elem = Ajax.getElementOrNull('ajax-off-max'      ); if (elem) elem.value = slewmax;\n"
+"    elem = Ajax.getElementOrNull('ajax-off-syn-lim'  ); if (elem) elem.value = syncedlimitns / 1000000;\n"
+"    elem = Ajax.getElementOrNull('ajax-off-syn-hys'  ); if (elem) elem.value = syncedhysns   / 1000000;\n"
+"    elem = Ajax.getElementOrNull('ajax-off-rst-lim'  ); if (elem) elem.value = maxoffsetsecs;\n"
+"    elem = Ajax.getElementOrNull('ajax-gov-trace'    ); if (elem) elem.setAttribute('dir', govTrace     ? 'rtl' : 'ltr');\n"
 "    \n"
-"    elem = getElementOrNull('ajax-ntp-server'   ); if (elem) elem.value = ntpserver;\n"
-"    elem = getElementOrNull('ajax-ntp-initial'  ); if (elem) elem.value = ntpinitial;\n"
-"    elem = getElementOrNull('ajax-ntp-normal'   ); if (elem) elem.value = ntpnormal / 60;\n"
-"    elem = getElementOrNull('ajax-ntp-retry'    ); if (elem) elem.value = ntpretry;\n"
-"    elem = getElementOrNull('ajax-ntp-offset'   ); if (elem) elem.value = ntpoffset;\n"
-"    elem = getElementOrNull('ajax-ntp-max-delay'); if (elem) elem.value = ntpmaxdelay;\n"
+"    elem = Ajax.getElementOrNull('ajax-ntp-server'   ); if (elem) elem.value = ntpserver;\n"
+"    elem = Ajax.getElementOrNull('ajax-ntp-initial'  ); if (elem) elem.value = ntpinitial;\n"
+"    elem = Ajax.getElementOrNull('ajax-ntp-normal'   ); if (elem) elem.value = ntpnormal / 60;\n"
+"    elem = Ajax.getElementOrNull('ajax-ntp-retry'    ); if (elem) elem.value = ntpretry;\n"
+"    elem = Ajax.getElementOrNull('ajax-ntp-offset'   ); if (elem) elem.value = ntpoffset;\n"
+"    elem = Ajax.getElementOrNull('ajax-ntp-max-delay'); if (elem) elem.value = ntpmaxdelay;\n"
 "    \n"
-"    elem = getElementOrNull('ajax-scan-avg'     ); if (elem) elem.textContent = scanavg;\n"
-"    elem = getElementOrNull('ajax-scan-max'     ); if (elem) elem.textContent = scanmax;\n"
-"    elem = getElementOrNull('ajax-scan-min'     ); if (elem) elem.textContent = scanmin;\n"
+"    elem = Ajax.getElementOrNull('ajax-scan-avg'     ); if (elem) elem.textContent = scanavg;\n"
+"    elem = Ajax.getElementOrNull('ajax-scan-max'     ); if (elem) elem.textContent = scanmax;\n"
+"    elem = Ajax.getElementOrNull('ajax-scan-min'     ); if (elem) elem.textContent = scanmin;\n"
 "    \n"
-"    elem = getElementOrNull('ajax-date-diff'    ); if (elem) elem.textContent = diffMs;\n"
+"    elem = Ajax.getElementOrNull('ajax-date-diff'    ); if (elem) elem.textContent = diffMs;\n"
 "}\n"
-"\n"
-"function DerivedTick() //This typically called every 100ms\n"
+"function handleTick() //This typically called every 100ms\n"
 "{\n"
 "    if (pseudoDisplay)\n"
 "    {\n"
-"        pseudo.adjustLeap (BaseMs);\n"
-"        pseudo.displayTime(BaseMs);\n"
-"        if (BaseMs >= pseudoStartMs + DISPLAY_LEAP_MS + 500) pseudoDisplay = false;\n"
+"        pseudo.adjustLeap (Ajax.ms);\n"
+"        pseudo.displayTime(Ajax.ms);\n"
+"        if (Ajax.ms >= pseudoStartMs + DISPLAY_LEAP_MS + 500) pseudoDisplay = false;\n"
 "    }\n"
 "    else\n"
 "    {\n"
-"        rtc.adjustLeap (BaseMs);\n"
-"        rtc.displayTime(BaseMs);\n"
+"        rtc.adjustLeap (Ajax.ms);\n"
+"        rtc.displayTime(Ajax.ms);\n"
 "    }\n"
 "}\n"
 "\n"
-"function DisplayLeap() //Called by display leap button in HTML\n"
+"function displayLeap() //Called by display leap button in HTML\n"
 "{\n"
 "   pseudoDisplay = true;\n"
-"   pseudoStartMs = BaseMs;\n"
+"   pseudoStartMs = Ajax.ms;\n"
 "   \n"
 "   pseudo.leapEnable  = true;\n"
 "   pseudo.leapForward = rtc.leapForward;\n"
 "   pseudo.leaps       = rtc.leaps;\n"
 "   pseudo.leapMonth   = rtc.leapMonth;\n"
 "   pseudo.leapYear    = rtc.leapYear;\n"
-"   pseudo.ms          = Date.UTC(rtc.leapYear, rtc.leapMonth - 1, 1) - DISPLAY_LEAP_MS / 2 - BaseMs;\n"
+"   pseudo.ms          = Date.UTC(rtc.leapYear, rtc.leapMonth - 1, 1) - DISPLAY_LEAP_MS / 2 - Ajax.ms;\n"
 "}\n"
-""
\ No newline at end of file
+"Ajax.server     = '/clock-ajax';\n"
+"Ajax.onResponse = function() { parse(); display(); };\n"
+"Ajax.onTick     = handleTick;\n"
+"Ajax.init();"
\ No newline at end of file