Central Heating controller using the real time clock, PHY module for internet, 1-wire interface for temperature sensors, a system log and a configuration file

Dependencies:   net 1-wire lpc1768 crypto clock web fram log

/media/uploads/andrewboyson/heating.sch

/media/uploads/andrewboyson/heating.brd

/media/uploads/andrewboyson/eagle.epf

settings/settings.c

Committer:
andrewboyson
Date:
2018-01-11
Revision:
0:3c04f4b47041
Child:
8:8b5e0bb28da0

File content as of revision 0:3c04f4b47041:

#include <stdbool.h>

#include  "fram.h"
#include "clock.h"
#include   "net.h"

static int iClockSlewDivisor      ;
static int iClockSlewMaxMs        ;
static int iClockPpbDivisor       ;
static int iClockPpbChangeMax     ;
static int iClockSyncedLimitNs    ;
static int iClockSyncedLimitPpb   ;
static int iClockSyncedHysterisNs ;
static int iClockSyncedHysterisPpb;
static int iClockMaxOffsetSecs    ;
static int iNetPreferIp4Polled    ;

void SetClockSlewDivisor      (int  value) { ClockSlewDivisor       = value; FramWrite(iClockSlewDivisor,       4, &ClockSlewDivisor      ); }
void SetClockSlewMaxMs        (int  value) { ClockSlewMaxMs         = value; FramWrite(iClockSlewMaxMs,         4, &ClockSlewMaxMs        ); }
void SetClockPpbDivisor       (int  value) { ClockPpbDivisor        = value; FramWrite(iClockPpbDivisor,        4, &ClockPpbDivisor       ); }
void SetClockPpbChangeMax     (int  value) { ClockPpbChangeMax      = value; FramWrite(iClockPpbChangeMax,      4, &ClockPpbChangeMax     ); }
void SetClockSyncedLimitNs    (int  value) { ClockSyncedLimitNs     = value; FramWrite(iClockSyncedLimitNs,     4, &ClockSyncedLimitNs    ); }
void SetClockSyncedLimitPpb   (int  value) { ClockSyncedLimitPpb    = value; FramWrite(iClockSyncedLimitPpb,    4, &ClockSyncedLimitPpb   ); }
void SetClockSyncedHysterisNs (int  value) { ClockSyncedHysterisNs  = value; FramWrite(iClockSyncedHysterisNs,  4, &ClockSyncedHysterisNs ); }
void SetClockSyncedHysterisPpb(int  value) { ClockSyncedHysterisPpb = value; FramWrite(iClockSyncedHysterisPpb, 4, &ClockSyncedHysterisPpb); }
void SetClockMaxOffsetSecs    (int  value) { ClockMaxOffsetSecs     = value; FramWrite(iClockMaxOffsetSecs,     4, &ClockMaxOffsetSecs    ); }
void SetNetPreferIp4Polled    (bool value) { NetPreferIp4Polled     = value; FramWrite(iNetPreferIp4Polled,     1, &NetPreferIp4Polled    ); }

int SettingsInit()
{
    int address;
    int32_t def4;
    char b;
    
    def4 =       10; address = FramLoad( 4, &ClockSlewDivisor,       &def4);   if (address < 0) return -1; iClockSlewDivisor       = address;
    def4 =       20; address = FramLoad( 4, &ClockSlewMaxMs,         &def4);   if (address < 0) return -1; iClockSlewMaxMs         = address;
    def4 =     1000; address = FramLoad( 4, &ClockPpbDivisor,        &def4);   if (address < 0) return -1; iClockPpbDivisor        = address;
    def4 = 10000000; address = FramLoad( 4, &ClockPpbChangeMax,      &def4);   if (address < 0) return -1; iClockPpbChangeMax      = address;
    def4 =   100000; address = FramLoad( 4, &ClockSyncedLimitNs,     &def4);   if (address < 0) return -1; iClockSyncedLimitNs     = address;
    def4 =   100000; address = FramLoad( 4, &ClockSyncedLimitPpb,    &def4);   if (address < 0) return -1; iClockSyncedLimitPpb    = address;
    def4 =    10000; address = FramLoad( 4, &ClockSyncedHysterisNs,  &def4);   if (address < 0) return -1; iClockSyncedHysterisNs  = address;
    def4 =     1000; address = FramLoad( 4, &ClockSyncedHysterisPpb, &def4);   if (address < 0) return -1; iClockSyncedHysterisPpb = address;
    def4 =        3; address = FramLoad( 4, &ClockMaxOffsetSecs,     &def4);   if (address < 0) return -1; iClockMaxOffsetSecs     = address;
                     address = FramLoad( 1, &b, NULL); NetPreferIp4Polled = b; if (address < 0) return -1; iNetPreferIp4Polled     = address;
    
    return 0;
}