A GPS disciplined clock

Dependencies:   net lpc1768 crypto clock web log

Committer:
andrewboyson
Date:
Fri Jan 18 14:37:57 2019 +0000
Revision:
28:7fb6b4e9ab80
Parent:
27:eb5728b9052b
Child:
29:4fe0f237fd61
Updated libraries

Who changed what in which revision?

UserRevisionLine numberNew contents of line
andrewboyson 27:eb5728b9052b 1 #include <string.h>
andrewboyson 27:eb5728b9052b 2 #include <stdlib.h>
andrewboyson 27:eb5728b9052b 3 #include <stdio.h>
andrewboyson 27:eb5728b9052b 4
andrewboyson 27:eb5728b9052b 5 #include "http.h"
andrewboyson 27:eb5728b9052b 6 #include "clkgov.h"
andrewboyson 27:eb5728b9052b 7 #include "clkutc.h"
andrewboyson 27:eb5728b9052b 8 #include "led.h"
andrewboyson 27:eb5728b9052b 9 #include "settings.h"
andrewboyson 27:eb5728b9052b 10
andrewboyson 27:eb5728b9052b 11 void HttpHomeQuery(char* pQuery)
andrewboyson 27:eb5728b9052b 12 {
andrewboyson 27:eb5728b9052b 13 while (pQuery)
andrewboyson 27:eb5728b9052b 14 {
andrewboyson 27:eb5728b9052b 15 char* pName;
andrewboyson 27:eb5728b9052b 16 char* pValue;
andrewboyson 27:eb5728b9052b 17 pQuery = HttpSplitQuery(pQuery, &pName, &pValue);
andrewboyson 27:eb5728b9052b 18
andrewboyson 28:7fb6b4e9ab80 19 if (HttpSameStr(pName, "chg-clock-leap-enable" )) ClkUtcTglNextLeapEnable ();
andrewboyson 28:7fb6b4e9ab80 20 if (HttpSameStr(pName, "chg-clock-leap-forward")) ClkUtcTglNextLeapForward();
andrewboyson 27:eb5728b9052b 21
andrewboyson 27:eb5728b9052b 22 int months1970 = ClkUtcGetNextEpochMonth1970();
andrewboyson 27:eb5728b9052b 23 int months = months1970 % 12;
andrewboyson 27:eb5728b9052b 24 int years = months1970 / 12;
andrewboyson 27:eb5728b9052b 25
andrewboyson 28:7fb6b4e9ab80 26 if (HttpSameStr(pName, "set-clock-leap-year" ))
andrewboyson 27:eb5728b9052b 27 {
andrewboyson 27:eb5728b9052b 28 years = strtol(pValue, NULL, 10) - 1970;
andrewboyson 27:eb5728b9052b 29 if (years < 0) years = 0;
andrewboyson 27:eb5728b9052b 30 ClkUtcSetNextEpochMonth1970(years * 12 + months);
andrewboyson 27:eb5728b9052b 31 }
andrewboyson 28:7fb6b4e9ab80 32 if (HttpSameStr(pName, "set-clock-leap-month" ))
andrewboyson 27:eb5728b9052b 33 {
andrewboyson 27:eb5728b9052b 34 months = strtol(pValue, NULL, 10) - 1;
andrewboyson 27:eb5728b9052b 35 if (months < 0) months = 0;
andrewboyson 27:eb5728b9052b 36 ClkUtcSetNextEpochMonth1970(years * 12 + months);
andrewboyson 27:eb5728b9052b 37 }
andrewboyson 28:7fb6b4e9ab80 38 if (HttpSameStr(pName, "set-clock-leap-count" ))
andrewboyson 27:eb5728b9052b 39 {
andrewboyson 27:eb5728b9052b 40 uint16_t leaps = strtol(pValue, NULL, 10);
andrewboyson 27:eb5728b9052b 41 ClkUtcSetEpochOffset(leaps);
andrewboyson 27:eb5728b9052b 42 }
andrewboyson 27:eb5728b9052b 43
andrewboyson 27:eb5728b9052b 44 int value = (int)strtol(pValue, NULL, 10);
andrewboyson 28:7fb6b4e9ab80 45 if (HttpSameStr(pName, "ppb" )) ClkGovSetPpb (value );
andrewboyson 28:7fb6b4e9ab80 46 if (HttpSameStr(pName, "slewdivisor" )) SetClockSlewDivisor (value );
andrewboyson 28:7fb6b4e9ab80 47 if (HttpSameStr(pName, "slewmax" )) SetClockSlewMaxMs (value );
andrewboyson 28:7fb6b4e9ab80 48 if (HttpSameStr(pName, "ppbdivisor" )) SetClockPpbDivisor (value );
andrewboyson 28:7fb6b4e9ab80 49 if (HttpSameStr(pName, "ppbmaxchange" )) SetClockPpbChangeMax (value );
andrewboyson 28:7fb6b4e9ab80 50 if (HttpSameStr(pName, "syncedlimitns" )) SetClockSyncedLimitNs (value * 1000000 );
andrewboyson 28:7fb6b4e9ab80 51 if (HttpSameStr(pName, "syncedhysns" )) SetClockSyncedHysterisNs (value * 1000000 );
andrewboyson 28:7fb6b4e9ab80 52 if (HttpSameStr(pName, "syncedlimitppb")) SetClockSyncedLimitPpb (value );
andrewboyson 28:7fb6b4e9ab80 53 if (HttpSameStr(pName, "syncedhysppb" )) SetClockSyncedHysterisPpb (value );
andrewboyson 28:7fb6b4e9ab80 54 if (HttpSameStr(pName, "maxoffsetsecs" )) SetClockMaxOffsetSecs (value );
andrewboyson 28:7fb6b4e9ab80 55 if (HttpSameStr(pName, "clockgovtrace" )) ChgTraceSync();
andrewboyson 27:eb5728b9052b 56 }
andrewboyson 27:eb5728b9052b 57 }
andrewboyson 27:eb5728b9052b 58