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:
98:c75c959bcde3
Parent:
97:84d58bf7a835
Child:
99:84c3273dc77f
--- a/heating/radiator.c	Sun Oct 04 07:54:54 2020 +0000
+++ b/heating/radiator.c	Sat Oct 10 14:12:46 2020 +0000
@@ -17,8 +17,8 @@
 #define RADIATOR_PUMP_SET FIO2SET(03)
 #define RADIATOR_PUMP_CLR FIO2CLR(03)
 
+static bool      htgOverride = false;
 static char      htgWinter;            static int iWinter;
-static char      htgOverride;          static int iOverride;
 static char*     hallRom;              static int iHallRom;
 static uint8_t  overrideCancelHour;    static int iOverrideCancelHour;
 static uint8_t  overrideCancelMinute;  static int iOverrideCancelMinute;
@@ -26,7 +26,7 @@
 static  int16_t  frostTemperature;     static int iFrostTemperature;
 
 bool     RadiatorGetWinter              () { return (bool)htgWinter;              } 
-bool     RadiatorGetOverride            () { return (bool)htgOverride;            } 
+bool     RadiatorGetOverride            () { return       htgOverride;            } 
 uint16_t RadiatorGetHallDS18B20Value    () { return DS18B20ValueFromRom(hallRom); }
 int      RadiatorGetOverrideCancelHour  () { return  (int)overrideCancelHour;     }
 int      RadiatorGetOverrideCancelMinute() { return  (int)overrideCancelMinute;   }
@@ -34,7 +34,6 @@
 int      RadiatorGetFrostTemperature    () { return  (int)frostTemperature;       } 
 
 static void  setWinter              ( bool  v) {                             htgWinter            =     (char)v; FramWrite(iWinter,               1, &htgWinter           ); }
-static void  setOverride            ( bool  v) {                             htgOverride          =     (char)v; FramWrite(iOverride,             1, &htgOverride         ); }
 static void  setHallRom             ( char* v) {                             memcpy(hallRom,  v, 8);             FramWrite(iHallRom,              8,  hallRom             ); }
 void RadiatorSetOverrideCancelHour  ( int   v) { if (v > 23 || v < 0) v = 0; overrideCancelHour   =  (uint8_t)v, FramWrite(iOverrideCancelHour,   1, &overrideCancelHour  ); }
 void RadiatorSetOverrideCancelMinute( int   v) { if (v > 59 || v < 0) v = 0; overrideCancelMinute =  (uint8_t)v, FramWrite(iOverrideCancelMinute, 1, &overrideCancelMinute); }
@@ -68,13 +67,13 @@
         ClkNowTmLocal(&tm);
         static bool cancelWasDue = false;
         bool cancelIsDue = tm.tm_hour == overrideCancelHour && tm.tm_min == overrideCancelMinute;
-        if (cancelIsDue && !cancelWasDue && htgOverride) setOverride(false);
+        if (cancelIsDue && !cancelWasDue && htgOverride) htgOverride = false;
         cancelWasDue = cancelIsDue;
     }
     
     //Remove override if no longer required
     static bool previousOutput = false;
-    if (previousOutput != outputBeforeOverride && htgOverride) setOverride(false);
+    if (previousOutput != outputBeforeOverride && htgOverride) htgOverride = false;
     previousOutput = outputBeforeOverride;
 }
 bool RadiatorPump = false;
@@ -95,11 +94,11 @@
     {
         if (htgWinter) //Summer -> Winter
         {
-            if (outputBeforeOverride != prevOutputBeforeOverride) setOverride(0); //Adjust the override to leave the heat as it was - off or on.
+            if (outputBeforeOverride != prevOutputBeforeOverride) htgOverride = false; //Adjust the override to leave the heat as it was - off or on.
         }
         else //Winter -> Summer
         {
-            setOverride(0); //turn off the heat.
+            htgOverride = false; //turn off the heat.
         }
     }
         
@@ -107,7 +106,7 @@
 }
 void RadiatorSetOverride(bool value)
 {
-    setOverride(value);
+    htgOverride = value;
     makeOutputBeforeOverride();
     makeOutputWithOverride(); }
 
@@ -125,11 +124,11 @@
     int8_t  def1;
     int16_t def2;
     def1 =  0; address = FramLoad( 1, &htgWinter,            &def1); if (address < 0) return -1; iWinter               = address; 
-    def1 =  0; address = FramLoad( 1, &htgOverride,          &def1); if (address < 0) return -1; iOverride             = address; 
+                         FramAllocate(1); //Spare byte
                address = FramLoad( 8,  hallRom,                  0); if (address < 0) return -1; iHallRom              = address;
     def1 = 23; address = FramLoad( 1, &overrideCancelHour,   &def1); if (address < 0) return -1; iOverrideCancelHour   = address;
     def1 =  0; address = FramLoad( 1, &overrideCancelMinute, &def1); if (address < 0) return -1; iOverrideCancelMinute = address;
-                            FramAllocate(2); //Spare two bytes
+                         FramAllocate(2); //Spare two bytes
     def2 = 15; address = FramLoad( 2, &nightTemperature,     &def2); if (address < 0) return -1; iNightTemperature     = address; 
     def2 =  8; address = FramLoad( 2, &frostTemperature,     &def2); if (address < 0) return -1; iFrostTemperature     = address;