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
Diff: settings/settings.c
- 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; +}