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
settings/settings.c
- Committer:
- andrewboyson
- Date:
- 2018-11-18
- Revision:
- 8:8b5e0bb28da0
- Parent:
- 0:3c04f4b47041
- Child:
- 11:fa01ea25b62d
File content as of revision 8:8b5e0bb28da0:
#include <stdbool.h> #include <stdlib.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 ; static int iClockPpbDivisor ; static int iClockPpbChangeMax ; static int iClockSyncedLimitNs ; static int iClockSyncedLimitPpb ; static int iClockSyncedHysterisNs ; static int iClockSyncedHysterisPpb; static int iClockMaxOffsetSecs ; 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 ); } void SetClockPpbChangeMax (int value) { ClockPpbChangeMax = value; FramWrite(iClockPpbChangeMax, 4, &ClockPpbChangeMax ); } void SetClockSyncedLimitNs (int value) { ClockSyncedLimitNs = value; FramWrite(iClockSyncedLimitNs, 4, &ClockSyncedLimitNs ); } void SetClockSyncedLimitPpb (int value) { ClockSyncedLimitPpb = value; FramWrite(iClockSyncedLimitPpb, 4, &ClockSyncedLimitPpb ); } 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 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() { int address; 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); 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; }