Dependencies:   net lpc1768 crypto clock web log

http-derived/home/http-home-query.c

Committer:
andrewboyson
Date:
2019-01-18
Revision:
28:7fb6b4e9ab80
Parent:
27:eb5728b9052b
Child:
29:4fe0f237fd61

File content as of revision 28:7fb6b4e9ab80:

#include <string.h>
#include <stdlib.h>
#include <stdio.h>

#include "http.h"
#include "clkgov.h"
#include "clkutc.h"
#include "led.h"
#include "settings.h"

void HttpHomeQuery(char* pQuery)
{
    while (pQuery)
    {
        char* pName;
        char* pValue;
        pQuery = HttpSplitQuery(pQuery, &pName, &pValue);
        
        if (HttpSameStr(pName, "chg-clock-leap-enable" )) ClkUtcTglNextLeapEnable ();
        if (HttpSameStr(pName, "chg-clock-leap-forward")) ClkUtcTglNextLeapForward();
        
        int months1970 = ClkUtcGetNextEpochMonth1970();
        int months     = months1970 % 12;
        int years      = months1970 / 12;
        
        if (HttpSameStr(pName, "set-clock-leap-year"    ))
        {
            years = strtol(pValue, NULL, 10) - 1970;
            if (years < 0) years = 0;
            ClkUtcSetNextEpochMonth1970(years * 12 + months);     
        }
        if (HttpSameStr(pName, "set-clock-leap-month"   ))
        {
            months = strtol(pValue, NULL, 10) - 1;
            if (months < 0) months = 0;
            ClkUtcSetNextEpochMonth1970(years * 12 + months);     
        }
        if (HttpSameStr(pName, "set-clock-leap-count"   ))
        {
            uint16_t leaps = strtol(pValue, NULL, 10);
            ClkUtcSetEpochOffset(leaps);     
        }
        
        int value = (int)strtol(pValue, NULL, 10);
        if (HttpSameStr(pName, "ppb"           )) ClkGovSetPpb               (value           );
        if (HttpSameStr(pName, "slewdivisor"   )) SetClockSlewDivisor        (value           );
        if (HttpSameStr(pName, "slewmax"       )) SetClockSlewMaxMs          (value           );
        if (HttpSameStr(pName, "ppbdivisor"    )) SetClockPpbDivisor         (value           );
        if (HttpSameStr(pName, "ppbmaxchange"  )) SetClockPpbChangeMax       (value           );
        if (HttpSameStr(pName, "syncedlimitns" )) SetClockSyncedLimitNs      (value * 1000000 );
        if (HttpSameStr(pName, "syncedhysns"   )) SetClockSyncedHysterisNs   (value * 1000000 );
        if (HttpSameStr(pName, "syncedlimitppb")) SetClockSyncedLimitPpb     (value           );
        if (HttpSameStr(pName, "syncedhysppb"  )) SetClockSyncedHysterisPpb  (value           );
        if (HttpSameStr(pName, "maxoffsetsecs" )) SetClockMaxOffsetSecs      (value           );
        if (HttpSameStr(pName, "clockgovtrace" )) ChgTraceSync();
    }
}