Andrew Boyson / oldheating

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

Revision:
48:6eac12df3ad5
Parent:
41:6413522ed343
Child:
91:8b192efd0288
diff -r 229338b3adcb -r 6eac12df3ad5 heating/boiler.c
--- a/heating/boiler.c	Tue Apr 23 18:47:47 2019 +0000
+++ b/heating/boiler.c	Fri Apr 26 16:40:19 2019 +0000
@@ -17,33 +17,48 @@
 #define BOILER_CALL_SET FIO2SET(5)
 #define BOILER_CALL_CLR FIO2CLR(5)
 
-static char    tankRom[8];   static int iTankRom;
-static char    outputRom[8]; static int iOutputRom;
-static char    returnRom[8]; static int iReturnRom;
+static char*     tankRom; static int iTankRom;
+static char*   outputRom; static int iOutputRom;
+static char*   returnRom; static int iReturnRom;
 
 static int32_t tankSetPoint;   static int iTankSetPoint;
 static int32_t tankHysteresis; static int iTankHysteresis;
 static int32_t runOnResidual;  static int iRunOnResidual;
 static int32_t runOnTime;      static int iRunOnTime;
 
-char* BoilerGetTankRom       () { return       tankRom;        } 
-char* BoilerGetOutputRom     () { return       outputRom;      } 
-char* BoilerGetReturnRom     () { return       returnRom;      } 
-int   BoilerGetTankSetPoint  () { return (int) tankSetPoint;   } 
-int   BoilerGetTankHysteresis() { return (int) tankHysteresis; } 
-int   BoilerGetRunOnResidual () { return (int) runOnResidual;  } 
-int   BoilerGetRunOnTime     () { return (int) runOnTime;      } 
+uint16_t BoilerGetTankDS18B20Value  () { return DS18B20ValueFromRom(tankRom);   } 
+uint16_t BoilerGetOutputDS18B20Value() { return DS18B20ValueFromRom(outputRom); } 
+uint16_t BoilerGetReturnDS18B20Value() { return DS18B20ValueFromRom(returnRom); } 
+int      BoilerGetTankSetPoint      () { return tankSetPoint;   } 
+int      BoilerGetTankHysteresis    () { return tankHysteresis; } 
+int      BoilerGetRunOnResidual     () { return runOnResidual;  } 
+int      BoilerGetRunOnTime         () { return runOnTime;      } 
 
-void BoilerSetTankRom        (char* value) { memcpy(tankRom,   value, 8);      FramWrite(iTankRom,         8,  tankRom        ); }
-void BoilerSetOutputRom      (char* value) { memcpy(outputRom, value, 8);      FramWrite(iOutputRom,       8,  outputRom      ); }
-void BoilerSetReturnRom      (char* value) { memcpy(returnRom, value, 8);      FramWrite(iReturnRom,       8,  returnRom      ); }
-void BoilerSetTankSetPoint   (int   value) { tankSetPoint    = (int32_t)value; FramWrite(iTankSetPoint,    4, &tankSetPoint   ); }
-void BoilerSetTankHysteresis (int   value) { tankHysteresis  = (int32_t)value; FramWrite(iTankHysteresis,  4, &tankHysteresis ); }
-void BoilerSetRunOnResidual  (int   value) { runOnResidual   = (int32_t)value; FramWrite(iRunOnResidual,   4, &runOnResidual  ); }
-void BoilerSetRunOnTime      (int   value) { runOnTime       = (int32_t)value; FramWrite(iRunOnTime,       4, &runOnTime      ); }
+static void setTankRom       (char* value) { memcpy(tankRom,   value, 8); FramWrite(iTankRom,         8,  tankRom        ); }
+static void setOutputRom     (char* value) { memcpy(outputRom, value, 8); FramWrite(iOutputRom,       8,  outputRom      ); }
+static void setReturnRom     (char* value) { memcpy(returnRom, value, 8); FramWrite(iReturnRom,       8,  returnRom      ); }
+void BoilerSetTankSetPoint   (int   value) { tankSetPoint    = value;     FramWrite(iTankSetPoint,    4, &tankSetPoint   ); }
+void BoilerSetTankHysteresis (int   value) { tankHysteresis  = value;     FramWrite(iTankHysteresis,  4, &tankHysteresis ); }
+void BoilerSetRunOnResidual  (int   value) { runOnResidual   = value;     FramWrite(iRunOnResidual,   4, &runOnResidual  ); }
+void BoilerSetRunOnTime      (int   value) { runOnTime       = value;     FramWrite(iRunOnTime,       4, &runOnTime      ); }
 
 int BoilerInit()
 {
+      tankRom = DS18B20Roms + 8 * DS18B20RomCount;
+    DS18B20RomSetters[DS18B20RomCount] = setTankRom;
+    DS18B20RomNames[DS18B20RomCount] = "Tank";
+    DS18B20RomCount++;
+    
+    outputRom = DS18B20Roms + 8 * DS18B20RomCount;
+    DS18B20RomSetters[DS18B20RomCount] = setOutputRom;
+    DS18B20RomNames[DS18B20RomCount] = "BlrOut";
+    DS18B20RomCount++;
+    
+    returnRom = DS18B20Roms + 8 * DS18B20RomCount;
+    DS18B20RomSetters[DS18B20RomCount] = setReturnRom;
+    DS18B20RomNames[DS18B20RomCount] = "BlrRtn";
+    DS18B20RomCount++;
+    
     int address;
     int32_t def4;
                 address = FramLoad( 8,  tankRom,            0); if (address < 0) return -1; iTankRom        = address;
@@ -56,7 +71,7 @@
     
     BOILER_PUMP_DIR = 1; //Set the direction to 1 == output
     BOILER_CALL_DIR = 1; //Set the direction to 1 == output
-    
+
     return 0;
 }
 bool BoilerCall = false;