Monitor motorhome leisure battery and provide simple control of habitation
Dependencies: net lpc1768 crypto clock web fram log
Diff: settings/settings.c
- 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; + } + + + + + +