Dependencies:   net lpc1768 crypto clock web log

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

Committer:
andrewboyson
Date:
2019-01-17
Revision:
27:eb5728b9052b
Child:
28:7fb6b4e9ab80

File content as of revision 27:eb5728b9052b:

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