Monitor motorhome leisure battery and provide simple control of habitation

Dependencies:   net lpc1768 crypto clock web fram log

Revision:
4:f38b5bb8adac
Parent:
3:b96c6f6bbffc
Child:
5:4cf7ee162c4e
--- a/settings/settings.c	Sun Apr 18 19:05:35 2021 +0000
+++ b/settings/settings.c	Sat Apr 24 10:59:17 2021 +0000
@@ -1,3 +1,5 @@
+
+
 #include <stdbool.h>
 #include <stdlib.h>
 #include <string.h>
@@ -18,7 +20,6 @@
 #include         "nr.h"
 #include  "ntpclient.h"
 #include     "1-wire.h"
-#include        "wiz.h"
 #include      "echo4.h"
 #include      "echo6.h"
 #include      "dest6.h"
@@ -35,6 +36,8 @@
 #include       "tftp.h"
 #include        "dns.h"
 #include        "led.h"
+#include        "wiz.h"
+#include   "wiz-list.h"
 
 static int iClkGovSlewDivisor      ;
 static int iClkGovSlewMaxMs        ;
@@ -48,7 +51,6 @@
 static int iClkGov;
 
 static int iOneWire;
-static int iWiz;
 
 static int iDnsSendRequestsViaIp4 ;
 static int iNtpSendRequestsViaIp4 ;
@@ -87,6 +89,45 @@
 static int iHttp;
 static int iTftp;
 
+//Values
+static int iValuesServerName;
+void SetValuesServerName(char* value) { FramWrite(iValuesServerName, DNS_MAX_LABEL_LENGTH, value); }
+void GetValuesServerName(char* value) { FramRead (iValuesServerName, DNS_MAX_LABEL_LENGTH, value); value[DNS_MAX_LABEL_LENGTH] = 0; }
+
+static int iValuesFileName;
+void SetValuesFileName(char* value) { FramWrite(iValuesFileName, DNS_MAX_LABEL_LENGTH, value); }
+void GetValuesFileName(char* value) { FramRead (iValuesFileName, DNS_MAX_LABEL_LENGTH, value); value[DNS_MAX_LABEL_LENGTH] = 0; }
+
+static int iValuesWriteSize;
+void SetValuesWriteSize(int* pValue) { FramWrite(iValuesWriteSize, 4, pValue); }
+void GetValuesWriteSize(int* pValue) { FramRead (iValuesWriteSize, 4, pValue); }
+
+static int iValuesReadInterval;
+void SetValuesReadInterval(int* pValue) { FramWrite(iValuesReadInterval, 4, pValue); }
+void GetValuesReadInterval(int* pValue) { FramRead (iValuesReadInterval, 4, pValue); }
+
+static int iValuesStartTime;
+void SetValuesStartTime(int64_t* pValue) { FramWrite(iValuesStartTime, 8, pValue); }
+void GetValuesStartTime(int64_t* pValue) { FramRead (iValuesStartTime, 8, pValue); }
+
+static int iValuesCount;
+void SetValuesCount(int* pValue) { FramWrite(iValuesCount, 4, pValue); }
+void GetValuesCount(int* pValue) { FramRead (iValuesCount, 4, pValue); }
+
+static int iValuesData;
+void GetValuesData(int index, char* pValue) { FramRead (iValuesData +     index, 1, pValue); }
+void SetValuesData(int count, void* pValue) { FramWrite(iValuesData + 8 * count, 8, pValue); }
+
+//Wiz settings
+static int iWizMacs [WIZ_LIST_MAX_ITEMS];
+static int iWizNames[WIZ_LIST_MAX_ITEMS];
+static int iWizTrace;
+
+void ChgTraceWiz                     () { WizTrace = !WizTrace    ; FramWrite(iWizTrace,                       1, &WizTrace); }
+void SetWizListMac (int i, char* pMac ) { WizListSetMac (i, pMac ); FramWrite(iWizMacs [i],                    6, pMac     ); }
+void SetWizListName(int i, char* pText) { WizListSetName(i, pText); FramWrite(iWizNames[i], WIZ_LIST_NAME_LENGTH, pText    ); }
+
+
 //Clock settings
 void SetClockSlewDivisor      (int  value) { ClkGovSlewDivisor       = value; FramWrite(iClkGovSlewDivisor,       4, &ClkGovSlewDivisor      ); }
 void SetClockSlewMaxMs        (int  value) { ClkGovSlewChangeMaxMs   = value; FramWrite(iClkGovSlewMaxMs,         4, &ClkGovSlewChangeMaxMs  ); }
@@ -104,7 +145,6 @@
 
 //Heating settings
 void ChgTraceOneWire          () {   OneWireTrace        =   !OneWireTrace       ; FramWrite(iOneWire,    1,   &OneWireTrace       ); }
-void ChgTraceWiz              () {       WizTrace        =   !WizTrace           ; FramWrite(iWiz,        1,   &WizTrace           ); }
 
 //Net settings
 void ChgDnsSendRequestsViaIp4    () {            DnsSendRequestsViaIp4 =             !DnsSendRequestsViaIp4; FramWrite( iDnsSendRequestsViaIp4,    1,             &DnsSendRequestsViaIp4); }
@@ -184,6 +224,7 @@
 {
     int address;
     int32_t def4;
+    int64_t def8;
     char b;
     
     def4 =       10; address = FramLoad( 4, &ClkGovSlewDivisor,       &def4);    if (address < 0) return -1; iClkGovSlewDivisor       = address;
@@ -232,7 +273,46 @@
     address = FramLoad( 1, &b, NULL);       TcpTrace         = b; if (address < 0) return -1; iTcp         = address;
     address = FramLoad( 1, &b, NULL);       WebTrace         = b; if (address < 0) return -1; iHttp        = address;
     address = FramLoad( 1, &b, NULL);      TftpTrace         = b; if (address < 0) return -1; iTftp        = address;
-    address = FramLoad( 1, &b, NULL);       WizTrace         = b; if (address < 0) return -1; iWiz         = address;
 
+    address = FramAllocate(DNS_MAX_LABEL_LENGTH); if (address < 0) return -1; iValuesServerName   = address;
+    FramAllocate(1); //Spare
+    address = FramAllocate(DNS_MAX_LABEL_LENGTH); if (address < 0) return -1; iValuesFileName     = address;
+    FramAllocate(1); //Spare
+    address = FramAllocate(                   4); if (address < 0) return -1; iValuesWriteSize    = address;
+    address = FramAllocate(                   4); if (address < 0) return -1; iValuesReadInterval = address;
+    address = FramAllocate(                   8); if (address < 0) return -1; iValuesStartTime    = address;
+    address = FramAllocate(                   4); if (address < 0) return -1; iValuesCount        = address;
+    address = FramAllocate(                   1); if (address < 0) return -1; iValuesData         = address;
+    if (FramEmpty)
+    {
+        b    =   0; FramWrite(iValuesServerName  , 1, &b   );
+        b    =   0; FramWrite(iValuesFileName    , 1, &b   );
+        def4 = 100; FramWrite(iValuesWriteSize   , 4, &def4);
+        def4 =  15; FramWrite(iValuesReadInterval, 4, &def4);
+        def8 =   0; FramWrite(iValuesStartTime   , 8, &def8);
+        def4 =   0; FramWrite(iValuesCount       , 4, &def4);
+    }
+    
+    address = FramLoad( 1, &b, NULL);       WizTrace         = b; if (address < 0) return -1; iWizTrace    = address;
+    
+    for (int i = 0; i < WIZ_LIST_MAX_ITEMS; i++)
+    {
+        char mac [6];
+        char name[WIZ_LIST_NAME_LENGTH];
+        address = FramLoad(6                   , mac , NULL); if (address < 0) return -1; iWizMacs [i] = address;
+        address = FramLoad(WIZ_LIST_NAME_LENGTH, name, NULL); if (address < 0) return -1; iWizNames[i] = address;
+        WizListSetMac (i, mac );
+        WizListSetName(i, name);
+    }
+    
+    iValuesData = FramUsed;
+    
     return 0;
+    
 }
+
+
+
+
+
+