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:
- 8:8b5e0bb28da0
- Parent:
- 0:3c04f4b47041
- Child:
- 11:fa01ea25b62d
--- a/settings/settings.c Tue Mar 20 18:34:53 2018 +0000 +++ b/settings/settings.c Sun Nov 18 15:49:42 2018 +0000 @@ -1,8 +1,38 @@ #include <stdbool.h> +#include <stdlib.h> -#include "fram.h" -#include "clock.h" -#include "net.h" +#include "clock.h" +#include "fram.h" +#include "log.h" +#include "net.h" +#include "link.h" +#include "dnsname.h" +#include "dnsquery.h" +#include "dnsreply.h" +#include "dnsserver.h" +#include "ntp.h" +#include "dhcp.h" +#include "ns.h" +#include "nr4.h" +#include "nr6.h" +#include "ntp-client.h" +#include "sync.h" +#include "1-wire.h" +#include "echo4.h" +#include "echo6.h" +#include "dest6.h" +#include "ra.h" +#include "rs.h" +#include "ar4.h" +#include "ar6.h" +#include "arp.h" +#include "ip4.h" +#include "ip6.h" +#include "udp.h" +#include "tcp.h" +#include "http.h" +#include "tftp.h" +#include "dns.h" static int iClockSlewDivisor ; static int iClockSlewMaxMs ; @@ -13,8 +43,48 @@ static int iClockSyncedHysterisNs ; static int iClockSyncedHysterisPpb; static int iClockMaxOffsetSecs ; -static int iNetPreferIp4Polled ; +static int iSync; + +static int iOneWire; + +static int iDnsSendRequestsViaIp4 ; +static int iNtpSendRequestsViaIp4 ; +static int iTftpSendRequestsViaIp4; +static int iNetHost; +static int iLogUart; +static int iNetStack; +static int iNetNewLine; +static int iNetVerbose; +static int iLink; +static int iDnsName; +static int iDnsQuery; +static int iDnsReply; +static int iDnsServer; +static int iNtp; +static int iDhcp; +static int iNsRecvSol; +static int iNsRecvAdv; +static int iNsSendSol; +static int iNr4; +static int iNr6; +static int iNtpClient; +static int iEcho4; +static int iEcho6; +static int iDest6; +static int iRa; +static int iRs; +static int iAr4; +static int iAr6; +static int iArp; +static int iIp4; +static int iIp6; +static int iUdp; +static int iTcp; +static int iHttp; +static int iTftp; + +//Clock settings 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 ); } @@ -24,7 +94,54 @@ 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 ); } +void ChgTraceSync () { SyncTrace = !SyncTrace ; FramWrite(iSync, 1, &SyncTrace ); } + +//Heating settings +void ChgTraceOneWire () { OneWireTrace = !OneWireTrace ; FramWrite(iOneWire, 1, &OneWireTrace ); } + +//Net settings +void ChgDnsSendRequestsViaIp4 () { DnsSendRequestsViaIp4 = !DnsSendRequestsViaIp4; FramWrite( iDnsSendRequestsViaIp4, 1, &DnsSendRequestsViaIp4); } +void ChgNtpSendRequestsViaIp4 () { NtpSendRequestsViaIp4 = !NtpSendRequestsViaIp4; FramWrite( iNtpSendRequestsViaIp4, 1, &NtpSendRequestsViaIp4); } +void ChgTftpSendRequestsViaIp4 () { TftpSendRequestsViaIp4 = !TftpSendRequestsViaIp4; FramWrite(iTftpSendRequestsViaIp4, 1, &TftpSendRequestsViaIp4); } + +void SetTraceNetHost (char* text) +{ + int value = strtol(text, NULL, 16); + NetTraceHost[1] = value & 0xFF; + NetTraceHost[0] = (value >> 8) & 0xFF; + FramWrite(iNetHost, 2, NetTraceHost); +} +void ChgLogUart () { LogUart = !LogUart; FramWrite(iLogUart, 1, &LogUart ); } +void ChgTraceNetStack () { NetTraceStack = !NetTraceStack; FramWrite(iNetStack, 1, &NetTraceStack ); } +void ChgTraceNetNewLine() { NetTraceNewLine = !NetTraceNewLine; FramWrite(iNetNewLine, 1, &NetTraceNewLine); } +void ChgTraceNetVerbose() { NetTraceVerbose = !NetTraceVerbose; FramWrite(iNetVerbose, 1, &NetTraceVerbose); } +void ChgTraceLink () { LinkTrace = !LinkTrace; FramWrite(iLink, 1, &LinkTrace ); } +void ChgTraceDnsName () { DnsNameTrace = !DnsNameTrace; FramWrite(iDnsName, 1, &DnsNameTrace ); } +void ChgTraceDnsQuery () { DnsQueryTrace = !DnsQueryTrace; FramWrite(iDnsQuery, 1, &DnsQueryTrace ); } +void ChgTraceDnsReply () { DnsReplyTrace = !DnsReplyTrace; FramWrite(iDnsReply, 1, &DnsReplyTrace ); } +void ChgTraceDnsServer () { DnsServerTrace = !DnsServerTrace; FramWrite(iDnsServer, 1, &DnsServerTrace ); } +void ChgTraceNtp () { NtpTrace = !NtpTrace; FramWrite(iNtp, 1, &NtpTrace ); } +void ChgTraceDhcp () { DhcpTrace = !DhcpTrace; FramWrite(iDhcp, 1, &DhcpTrace ); } +void ChgTraceNsRecvSol () { NsTraceRecvSol = !NsTraceRecvSol; FramWrite(iNsRecvSol, 1, &NsTraceRecvSol); } +void ChgTraceNsRecvAdv () { NsTraceRecvAdv = !NsTraceRecvAdv; FramWrite(iNsRecvAdv, 1, &NsTraceRecvAdv); } +void ChgTraceNsSendSol () { NsTraceSendSol = !NsTraceSendSol; FramWrite(iNsSendSol, 1, &NsTraceSendSol); } +void ChgTraceNr4 () { Nr4Trace = !Nr4Trace ; FramWrite(iNr4, 1, &Nr4Trace ); } +void ChgTraceNr6 () { Nr6Trace = !Nr6Trace ; FramWrite(iNr6, 1, &Nr6Trace ); } +void ChgTraceNtpClient () { NtpClientTrace = !NtpClientTrace ; FramWrite(iNtpClient, 1, &NtpClientTrace ); } +void ChgTraceEcho4 () { Echo4Trace = !Echo4Trace ; FramWrite(iEcho4, 1, &Echo4Trace ); } +void ChgTraceEcho6 () { Echo6Trace = !Echo6Trace ; FramWrite(iEcho6, 1, &Echo6Trace ); } +void ChgTraceDest6 () { Dest6Trace = !Dest6Trace ; FramWrite(iDest6, 1, &Dest6Trace ); } +void ChgTraceRa () { RaTrace = !RaTrace ; FramWrite(iRa, 1, &RaTrace ); } +void ChgTraceRs () { RsTrace = !RsTrace ; FramWrite(iRs, 1, &RsTrace ); } +void ChgTraceAr4 () { Ar4Trace = !Ar4Trace ; FramWrite(iAr4, 1, &Ar4Trace ); } +void ChgTraceAr6 () { Ar6Trace = !Ar6Trace ; FramWrite(iAr6, 1, &Ar6Trace ); } +void ChgTraceArp () { ArpTrace = !ArpTrace ; FramWrite(iArp, 1, &ArpTrace ); } +void ChgTraceIp4 () { Ip4Trace = !Ip4Trace ; FramWrite(iIp4, 1, &Ip4Trace ); } +void ChgTraceIp6 () { Ip6Trace = !Ip6Trace ; FramWrite(iIp6, 1, &Ip6Trace ); } +void ChgTraceUdp () { UdpTrace = !UdpTrace ; FramWrite(iUdp, 1, &UdpTrace ); } +void ChgTraceTcp () { TcpTrace = !TcpTrace ; FramWrite(iTcp, 1, &TcpTrace ); } +void ChgTraceHttp () { HttpTrace = !HttpTrace ; FramWrite(iHttp, 1, &HttpTrace ); } +void ChgTraceTftp () { TftpTrace = !TftpTrace ; FramWrite(iTftp, 1, &TftpTrace ); } int SettingsInit() { @@ -32,16 +149,54 @@ 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; + 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); SyncTrace = b; if (address < 0) return -1; iSync = address; + + address = FramLoad( 1, &b, NULL); OneWireTrace = b; if (address < 0) return -1; iOneWire = address; + address = FramLoad( 1, &b, NULL); DnsSendRequestsViaIp4 = b; if (address < 0) return -1; iDnsSendRequestsViaIp4 = address; + address = FramLoad( 1, &b, NULL); NtpSendRequestsViaIp4 = b; if (address < 0) return -1; iNtpSendRequestsViaIp4 = address; + address = FramLoad( 1, &b, NULL); TftpSendRequestsViaIp4 = b; if (address < 0) return -1; iTftpSendRequestsViaIp4 = address; + address = FramLoad( 1, &b, NULL); LogUart = b; if (address < 0) return -1; iLogUart = address; + address = FramLoad( 2, NetTraceHost, NULL); if (address < 0) return -1; iNetHost = address; + address = FramLoad( 1, &b, NULL); NetTraceStack = b; if (address < 0) return -1; iNetStack = address; + address = FramLoad( 1, &b, NULL); NetTraceNewLine = b; if (address < 0) return -1; iNetNewLine = address; + address = FramLoad( 1, &b, NULL); NetTraceVerbose = b; if (address < 0) return -1; iNetVerbose = address; + address = FramLoad( 1, &b, NULL); LinkTrace = b; if (address < 0) return -1; iLink = address; + address = FramLoad( 1, &b, NULL); DnsNameTrace = b; if (address < 0) return -1; iDnsName = address; + address = FramLoad( 1, &b, NULL); DnsQueryTrace = b; if (address < 0) return -1; iDnsQuery = address; + address = FramLoad( 1, &b, NULL); DnsReplyTrace = b; if (address < 0) return -1; iDnsReply = address; + address = FramLoad( 1, &b, NULL); DnsServerTrace = b; if (address < 0) return -1; iDnsServer = address; + address = FramLoad( 1, &b, NULL); NtpTrace = b; if (address < 0) return -1; iNtp = address; + address = FramLoad( 1, &b, NULL); DhcpTrace = b; if (address < 0) return -1; iDhcp = address; + address = FramLoad( 1, &b, NULL); NsTraceRecvSol = b; if (address < 0) return -1; iNsRecvSol = address; + address = FramLoad( 1, &b, NULL); NsTraceRecvAdv = b; if (address < 0) return -1; iNsRecvAdv = address; + address = FramLoad( 1, &b, NULL); NsTraceSendSol = b; if (address < 0) return -1; iNsSendSol = address; + address = FramLoad( 1, &b, NULL); Nr4Trace = b; if (address < 0) return -1; iNr4 = address; + address = FramLoad( 1, &b, NULL); Nr6Trace = b; if (address < 0) return -1; iNr6 = address; + address = FramLoad( 1, &b, NULL); NtpClientTrace = b; if (address < 0) return -1; iNtpClient = address; + address = FramLoad( 1, &b, NULL); Echo4Trace = b; if (address < 0) return -1; iEcho4 = address; + address = FramLoad( 1, &b, NULL); Echo6Trace = b; if (address < 0) return -1; iEcho6 = address; + address = FramLoad( 1, &b, NULL); Dest6Trace = b; if (address < 0) return -1; iDest6 = address; + address = FramLoad( 1, &b, NULL); RaTrace = b; if (address < 0) return -1; iRa = address; + address = FramLoad( 1, &b, NULL); RsTrace = b; if (address < 0) return -1; iRs = address; + address = FramLoad( 1, &b, NULL); Ar4Trace = b; if (address < 0) return -1; iAr4 = address; + address = FramLoad( 1, &b, NULL); Ar6Trace = b; if (address < 0) return -1; iAr6 = address; + address = FramLoad( 1, &b, NULL); ArpTrace = b; if (address < 0) return -1; iArp = address; + address = FramLoad( 1, &b, NULL); Ip4Trace = b; if (address < 0) return -1; iIp4 = address; + address = FramLoad( 1, &b, NULL); Ip6Trace = b; if (address < 0) return -1; iIp6 = address; + address = FramLoad( 1, &b, NULL); UdpTrace = b; if (address < 0) return -1; iUdp = address; + address = FramLoad( 1, &b, NULL); TcpTrace = b; if (address < 0) return -1; iTcp = address; + address = FramLoad( 1, &b, NULL); HttpTrace = b; if (address < 0) return -1; iHttp = address; + address = FramLoad( 1, &b, NULL); TftpTrace = b; if (address < 0) return -1; iTftp = address; + return 0; }