Andrew Boyson / web

Dependents:   oldheating gps motorhome heating

http-clock-html.c

Committer:
andrewboyson
Date:
2019-01-09
Revision:
21:048b7dbdf0aa
Parent:
20:007fb5796d20
Child:
22:f45bbb468439

File content as of revision 21:048b7dbdf0aa:

#include <time.h>

#include      "http.h"
#include      "page.h"
#include       "nav.h"
#include "http-base.h"
#include       "clk.h"
#include       "rtc.h"
#include    "clkutc.h"
#include    "clkgov.h"
#include      "scan.h"

void HttpClockHtml()
{
    HttpOk("text/html; charset=UTF-8", "no-cache", NULL, NULL);
    PageAddHeader(NavSite, "Clock", "settings.css", "clock.js");
    NavAdd(CLOCK_PAGE);
    PageAddH1(NavSite, "Clock");
    
    PageAddH2("Sync status");
    PageAddAjaxToggle(10.0, "RTC is set"           , "ajax-rtc-set"    , "");
    PageAddAjaxToggle(10.0, "Clock is set"         , "ajax-clock-set"  , "");
    PageAddAjaxToggle(10.0, "External source is ok", "ajax-source-ok"  , "");
    PageAddAjaxToggle(10.0, "Rate synchronised"    , "ajax-rate-locked", "");
    PageAddAjaxToggle(10.0, "Time synchronised"    , "ajax-time-locked", "");

    PageAddH2("Server UTC time");
    HttpAddText("<div id='date-utc'></div>\r\n");

    PageAddH2("Server local time");
    HttpAddText("<div id='date-pc'></div>\r\n");
    
    PageAddH2("Server - PC");
    HttpAddText("<div id='date-diff'></div>\r\n");    
    
    PageAddH2("Leap seconds");
    PageAddAjaxToggle(10.0, "Next leap enable"   , "ajax-leap-enable"  , "chg-clock-leap-enable"  );
    PageAddAjaxToggle(10.0, "Next leap backward" , "ajax-leap-backward", "chg-clock-leap-backward");
    PageAddAjaxHex   ( 6.0, "Next Year"   , 5.2  , "ajax-leap-year"    , "set-clock-leap-year"    );
    PageAddAjaxHex   ( 6.0, "Next Month"  , 5.2  , "ajax-leap-month"   , "set-clock-leap-month"   );
    PageAddAjaxHex   ( 6.0, "Count"       , 5.2  , "ajax-leap-count"   , "set-clock-leap-count"   );

    HttpAddText("<button type='button' onclick='DisplayLeap()'>Display Leap</button>\r\n");
    
    HttpAddText("<div><a href='https://www.ietf.org/timezones/data/leap-seconds.list'>ietf leap seconds list</a></div>\r\n");
        
    PageAddH2("Settings");
    PageAddIntInput ("/clock", 0, "Ppb",                     12, "ppb",            5, ClkGovGetPpb()                   );
    PageAddIntInput ("/clock", 0, "Ppb divisor",             12, "ppbdivisor",     5, ClkGovPpbDivisor                 );
    PageAddIntInput ("/clock", 0, "Ppb max change",          12, "ppbmaxchange",   5, ClkGovPpbChangeMax               );
    PageAddIntInput ("/clock", 0, "Ppb synced limit",        12, "syncedlimitppb", 5, ClkGovSyncedLimitPpb             );
    PageAddIntInput ("/clock", 0, "Ppb synced hysteresis",   12, "syncedhysppb",   5, ClkGovSyncedHysterisPpb          );

    PageAddIntInput ("/clock", 0, "Offset divisor",          12, "slewdivisor",    5, ClkGovSlewDivisor                );
    PageAddIntInput ("/clock", 0, "Offset max (ms)",         12, "slewmax",        5, ClkGovSlewMaxMs                  );
    PageAddIntInput ("/clock", 0, "Offset synced limit (ms)",12, "syncedlimitns",  5, ClkGovSyncedLimitNs    / 1000000 );
    PageAddIntInput ("/clock", 0, "Offset synced hys (ms)",  12, "syncedhysns",    5, ClkGovSyncedHysterisNs / 1000000 );
    PageAddIntInput ("/clock", 0, "Offset reset limit (s)",  12, "maxoffsetsecs",  5, ClkGovMaxOffsetSecs              );
    
    PageAddH2("Trace");
    if (ClkGovTrace) PageAddCheckInput("/clock", "Trace gov", "clockgovtrace", "on");
    else             PageAddCheckInput("/clock", "Trace gov", "clockgovtrace", "off");

    PageAddH2("Scan times");
    PageAddLabelledInt("Program cycles avg", 17, ScanAverage);
    PageAddLabelledInt("Program cycles max", 17, ScanMaximum);
    PageAddLabelledInt("Program cycles min", 17, ScanMinimum);

    PageAddH2("Ajax");
    HttpAddText("<code id='ajax-headers'></code>\r\n");
    HttpAddText("<code id='ajax-response'></code>\r\n");

    PageAddEnd();
}