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

Revision:
0:3c04f4b47041
Child:
8:8b5e0bb28da0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/settings/settings.c	Thu Jan 11 17:40:08 2018 +0000
@@ -0,0 +1,47 @@
+#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;
+}