Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: net 1-wire lpc1768 crypto clock web fram log
settings.c
00001 #include <stdbool.h> 00002 #include <stdlib.h> 00003 #include <string.h> 00004 00005 #include "clkgov.h" 00006 #include "fram.h" 00007 #include "log.h" 00008 #include "net.h" 00009 #include "link.h" 00010 #include "dnsname.h" 00011 #include "dnsquery.h" 00012 #include "dnsreply.h" 00013 #include "dnsserver.h" 00014 #include "dnslabel.h" 00015 #include "ntp.h" 00016 #include "dhcp.h" 00017 #include "ns.h" 00018 #include "nr.h" 00019 #include "ntpclient.h" 00020 #include "1-wire.h" 00021 #include "echo4.h" 00022 #include "echo6.h" 00023 #include "dest6.h" 00024 #include "ra.h" 00025 #include "rs.h" 00026 #include "ar4.h" 00027 #include "ar6.h" 00028 #include "arp.h" 00029 #include "ip4.h" 00030 #include "ip6.h" 00031 #include "udp.h" 00032 #include "tcp.h" 00033 #include "web.h" 00034 #include "tftp.h" 00035 #include "dns.h" 00036 #include "led.h" 00037 00038 static int iClkGovSlewDivisor ; 00039 static int iClkGovSlewMaxMs ; 00040 static int iClkGovPpbDivisor ; 00041 static int iClkGovPpbChangeMax ; 00042 static int iClkGovSyncedLimitNs ; 00043 static int iClkGovSyncedLimitPpb ; 00044 static int iClkGovSyncedHysterisNs ; 00045 static int iClkGovSyncedHysterisPpb; 00046 static int iClkGovMaxOffsetSecs ; 00047 static int iClkGov; 00048 00049 static int iOneWire; 00050 00051 static int iDnsSendRequestsViaIp4 ; 00052 static int iNtpSendRequestsViaIp4 ; 00053 static int iTftpSendRequestsViaIp4; 00054 00055 static int iNetHost; 00056 static int iLogUart; 00057 static int iNetStack; 00058 static int iNetNewLine; 00059 static int iNetVerbose; 00060 static int iLink; 00061 static int iDnsName; 00062 static int iDnsQuery; 00063 static int iDnsReply; 00064 static int iDnsServer; 00065 static int iNtp; 00066 static int iDhcp; 00067 static int iNsRecvSol; 00068 static int iNsRecvAdv; 00069 static int iNsSendSol; 00070 static int iNr4; 00071 static int iNr; 00072 static int iNtpClient; 00073 static int iEcho4; 00074 static int iEcho6; 00075 static int iDest6; 00076 static int iRa; 00077 static int iRs; 00078 static int iAr4; 00079 static int iAr6; 00080 static int iArp; 00081 static int iIp4; 00082 static int iIp6; 00083 static int iUdp; 00084 static int iTcp; 00085 static int iHttp; 00086 static int iTftp; 00087 00088 //Values 00089 static int iValuesServerName; 00090 void SetValuesServerName(char* value) { FramWrite(iValuesServerName, DNS_MAX_LABEL_LENGTH, value); } 00091 void GetValuesServerName(char* value) { FramRead (iValuesServerName, DNS_MAX_LABEL_LENGTH, value); value[DNS_MAX_LABEL_LENGTH] = 0; } 00092 00093 static int iValuesFileName; 00094 void SetValuesFileName(char* value) { FramWrite(iValuesFileName, DNS_MAX_LABEL_LENGTH, value); } 00095 void GetValuesFileName(char* value) { FramRead (iValuesFileName, DNS_MAX_LABEL_LENGTH, value); value[DNS_MAX_LABEL_LENGTH] = 0; } 00096 00097 static int iValuesWriteSize; 00098 void SetValuesWriteSize(int* pValue) { FramWrite(iValuesWriteSize, 4, pValue); } 00099 void GetValuesWriteSize(int* pValue) { FramRead (iValuesWriteSize, 4, pValue); } 00100 00101 static int iValuesReadInterval; 00102 void SetValuesReadInterval(int* pValue) { FramWrite(iValuesReadInterval, 4, pValue); } 00103 void GetValuesReadInterval(int* pValue) { FramRead (iValuesReadInterval, 4, pValue); } 00104 00105 static int iValuesStartTime; 00106 void SetValuesStartTime(int64_t* pValue) { FramWrite(iValuesStartTime, 8, pValue); } 00107 void GetValuesStartTime(int64_t* pValue) { FramRead (iValuesStartTime, 8, pValue); } 00108 00109 static int iValuesCount; 00110 void SetValuesCount(int* pValue) { FramWrite(iValuesCount, 4, pValue); } 00111 void GetValuesCount(int* pValue) { FramRead (iValuesCount, 4, pValue); } 00112 00113 static int iValuesData; 00114 void GetValuesData(int index, char* pValue) { FramRead (iValuesData + index, 1, pValue); } 00115 void SetValuesData(int count, void* pValue) { FramWrite(iValuesData + 8 * count, 8, pValue); } 00116 00117 //Clock settings 00118 void SetClockSlewDivisor (int value) { ClkGovSlewDivisor = value; FramWrite(iClkGovSlewDivisor, 4, &ClkGovSlewDivisor ); } 00119 void SetClockSlewMaxMs (int value) { ClkGovSlewChangeMaxMs = value; FramWrite(iClkGovSlewMaxMs, 4, &ClkGovSlewChangeMaxMs ); } 00120 void SetClockPpbDivisor (int value) { ClkGovFreqDivisor = value; FramWrite(iClkGovPpbDivisor, 4, &ClkGovFreqDivisor ); } 00121 void SetClockPpbChangeMax (int value) { ClkGovFreqChangeMaxPpb = value; FramWrite(iClkGovPpbChangeMax, 4, &ClkGovFreqChangeMaxPpb ); } 00122 void SetClockSyncedLimitNs (int value) { ClkGovSlewSyncedLimNs = value; FramWrite(iClkGovSyncedLimitNs, 4, &ClkGovSlewSyncedLimNs ); } 00123 void SetClockSyncedLimitPpb (int value) { ClkGovFreqSyncedLimPpb = value; FramWrite(iClkGovSyncedLimitPpb, 4, &ClkGovFreqSyncedLimPpb ); } 00124 void SetClockSyncedHysterisNs (int value) { ClkGovSlewSyncedHysNs = value; FramWrite(iClkGovSyncedHysterisNs, 4, &ClkGovSlewSyncedHysNs ); } 00125 void SetClockSyncedHysterisPpb(int value) { ClkGovFreqSyncedHysPpb = value; FramWrite(iClkGovSyncedHysterisPpb, 4, &ClkGovFreqSyncedHysPpb ); } 00126 void SetClockMaxOffsetSecs (int value) { ClkGovSlewOffsetMaxSecs = value; FramWrite(iClkGovMaxOffsetSecs, 4, &ClkGovSlewOffsetMaxSecs); } 00127 void ChgTraceSync () { ClkGovTrace = !ClkGovTrace ; FramWrite(iClkGov, 1, &ClkGovTrace ); } 00128 00129 //Log settings 00130 void ChgLogUart () { LogUart = !LogUart; FramWrite(iLogUart, 1, &LogUart ); } 00131 00132 //Heating settings 00133 void ChgTraceOneWire () { OneWireTrace = !OneWireTrace ; FramWrite(iOneWire, 1, &OneWireTrace ); } 00134 00135 //Net settings 00136 void ChgDnsSendRequestsViaIp4 () { DnsSendRequestsViaIp4 = !DnsSendRequestsViaIp4; FramWrite( iDnsSendRequestsViaIp4, 1, &DnsSendRequestsViaIp4); } 00137 void ChgNtpSendRequestsViaIp4 () { NtpClientQuerySendRequestsViaIp4 = !NtpClientQuerySendRequestsViaIp4; FramWrite( iNtpSendRequestsViaIp4, 1, &NtpClientQuerySendRequestsViaIp4); } 00138 void ChgTftpSendRequestsViaIp4 () { TftpSendRequestsViaIp4 = !TftpSendRequestsViaIp4; FramWrite(iTftpSendRequestsViaIp4, 1, &TftpSendRequestsViaIp4); } 00139 00140 void SetTraceNetHost (char* text) 00141 { 00142 int value = strtol(text, NULL, 16); 00143 NetTraceHost[1] = value & 0xFF; 00144 NetTraceHost[0] = (value >> 8) & 0xFF; 00145 FramWrite(iNetHost, 2, NetTraceHost); 00146 } 00147 void ChgTraceNetStack () { NetTraceStack = !NetTraceStack; FramWrite(iNetStack, 1, &NetTraceStack ); } 00148 void ChgTraceNetNewLine() { NetTraceNewLine = !NetTraceNewLine; FramWrite(iNetNewLine, 1, &NetTraceNewLine); } 00149 void ChgTraceNetVerbose() { NetTraceVerbose = !NetTraceVerbose; FramWrite(iNetVerbose, 1, &NetTraceVerbose); } 00150 void ChgTraceLink () { LinkTrace = !LinkTrace; FramWrite(iLink, 1, &LinkTrace ); } 00151 void ChgTraceDnsName () { DnsNameTrace = !DnsNameTrace; FramWrite(iDnsName, 1, &DnsNameTrace ); } 00152 void ChgTraceDnsQuery () { DnsQueryTrace = !DnsQueryTrace; FramWrite(iDnsQuery, 1, &DnsQueryTrace ); } 00153 void ChgTraceDnsReply () { DnsReplyTrace = !DnsReplyTrace; FramWrite(iDnsReply, 1, &DnsReplyTrace ); } 00154 void ChgTraceDnsServer () { DnsServerTrace = !DnsServerTrace; FramWrite(iDnsServer, 1, &DnsServerTrace ); } 00155 void ChgTraceNtp () { NtpTrace = !NtpTrace; FramWrite(iNtp, 1, &NtpTrace ); } 00156 void ChgTraceDhcp () { DhcpTrace = !DhcpTrace; FramWrite(iDhcp, 1, &DhcpTrace ); } 00157 void ChgTraceNsRecvSol () { NsTraceRecvSol = !NsTraceRecvSol; FramWrite(iNsRecvSol, 1, &NsTraceRecvSol); } 00158 void ChgTraceNsRecvAdv () { NsTraceRecvAdv = !NsTraceRecvAdv; FramWrite(iNsRecvAdv, 1, &NsTraceRecvAdv); } 00159 void ChgTraceNsSendSol () { NsTraceSendSol = !NsTraceSendSol; FramWrite(iNsSendSol, 1, &NsTraceSendSol); } 00160 void ChgTraceNr4 () { Nr4Trace = !Nr4Trace ; FramWrite(iNr4, 1, &Nr4Trace ); } 00161 void ChgTraceNr () { NrTrace = !NrTrace ; FramWrite(iNr, 1, &NrTrace ); } 00162 void ChgTraceNtpClient () { NtpClientTrace = !NtpClientTrace ; FramWrite(iNtpClient, 1, &NtpClientTrace ); } 00163 void ChgTraceEcho4 () { Echo4Trace = !Echo4Trace ; FramWrite(iEcho4, 1, &Echo4Trace ); } 00164 void ChgTraceEcho6 () { Echo6Trace = !Echo6Trace ; FramWrite(iEcho6, 1, &Echo6Trace ); } 00165 void ChgTraceDest6 () { Dest6Trace = !Dest6Trace ; FramWrite(iDest6, 1, &Dest6Trace ); } 00166 void ChgTraceRa () { RaTrace = !RaTrace ; FramWrite(iRa, 1, &RaTrace ); } 00167 void ChgTraceRs () { RsTrace = !RsTrace ; FramWrite(iRs, 1, &RsTrace ); } 00168 void ChgTraceAr4 () { Ar4Trace = !Ar4Trace ; FramWrite(iAr4, 1, &Ar4Trace ); } 00169 void ChgTraceAr6 () { Ar6Trace = !Ar6Trace ; FramWrite(iAr6, 1, &Ar6Trace ); } 00170 void ChgTraceArp () { ArpTrace = !ArpTrace ; FramWrite(iArp, 1, &ArpTrace ); } 00171 void ChgTraceIp4 () { Ip4Trace = !Ip4Trace ; FramWrite(iIp4, 1, &Ip4Trace ); } 00172 void ChgTraceIp6 () { Ip6Trace = !Ip6Trace ; FramWrite(iIp6, 1, &Ip6Trace ); } 00173 void ChgTraceUdp () { UdpTrace = !UdpTrace ; FramWrite(iUdp, 1, &UdpTrace ); } 00174 void ChgTraceTcp () { TcpTrace = !TcpTrace ; FramWrite(iTcp, 1, &TcpTrace ); } 00175 void ChgTraceHttp () { WebTrace = !WebTrace ; FramWrite(iHttp, 1, &WebTrace ); } 00176 void ChgTraceTftp () { TftpTrace = !TftpTrace ; FramWrite(iTftp, 1, &TftpTrace ); } 00177 00178 static int iServerName; 00179 static int iInitialInterval; 00180 static int iNormalInterval; 00181 static int iRetryInterval; 00182 static int iOffsetMs; 00183 static int iMaxDelayMs; 00184 00185 void SetNtpClientServerName ( char* value) { DnsLabelCopy(NtpClientQueryServerName, value); FramWrite(iServerName, DNS_MAX_LABEL_LENGTH, NtpClientQueryServerName ); } 00186 void SetNtpClientInitialInterval ( int value) { NtpClientQueryInitialInterval = (int32_t)value ; FramWrite(iInitialInterval, 4, &NtpClientQueryInitialInterval ); } 00187 void SetNtpClientNormalInterval ( int value) { NtpClientQueryNormalInterval = (int32_t)value ; FramWrite(iNormalInterval, 4, &NtpClientQueryNormalInterval ); } 00188 void SetNtpClientRetryInterval ( int value) { NtpClientQueryRetryInterval = (int32_t)value ; FramWrite(iRetryInterval, 4, &NtpClientQueryRetryInterval ); } 00189 void SetNtpClientOffsetMs ( int value) { NtpClientReplyOffsetMs = (int32_t)value ; FramWrite(iOffsetMs, 4, &NtpClientReplyOffsetMs ); } 00190 void SetNtpClientMaxDelayMs ( int value) { NtpClientReplyMaxDelayMs = (int32_t)value ; FramWrite(iMaxDelayMs, 4, &NtpClientReplyMaxDelayMs ); } 00191 00192 int SettingsNtpInit() 00193 { 00194 int address; 00195 int32_t def4; 00196 00197 def4 = 0; address = FramLoad( DNS_MAX_LABEL_LENGTH+1, NtpClientQueryServerName, NULL ); if (address < 0) return -1; iServerName = address; 00198 def4 = 1; address = FramLoad( 4, &NtpClientQueryInitialInterval, &def4); if (address < 0) return -1; iInitialInterval = address; 00199 def4 = 600; address = FramLoad( 4, &NtpClientQueryNormalInterval, &def4); if (address < 0) return -1; iNormalInterval = address; 00200 def4 = 60; address = FramLoad( 4, &NtpClientQueryRetryInterval, &def4); if (address < 0) return -1; iRetryInterval = address; 00201 def4 = 0; address = FramLoad( 4, &NtpClientReplyOffsetMs, &def4); if (address < 0) return -1; iOffsetMs = address; 00202 def4 = 50; address = FramLoad( 4, &NtpClientReplyMaxDelayMs, &def4); if (address < 0) return -1; iMaxDelayMs = address; 00203 00204 return 0; 00205 } 00206 00207 int SettingsInit() 00208 { 00209 int address; 00210 int32_t def4; 00211 int64_t def8; 00212 char b; 00213 00214 def4 = 10; address = FramLoad( 4, &ClkGovSlewDivisor, &def4); if (address < 0) return -1; iClkGovSlewDivisor = address; 00215 def4 = 20; address = FramLoad( 4, &ClkGovSlewChangeMaxMs, &def4); if (address < 0) return -1; iClkGovSlewMaxMs = address; 00216 def4 = 1000; address = FramLoad( 4, &ClkGovFreqDivisor, &def4); if (address < 0) return -1; iClkGovPpbDivisor = address; 00217 def4 = 10000000; address = FramLoad( 4, &ClkGovFreqChangeMaxPpb, &def4); if (address < 0) return -1; iClkGovPpbChangeMax = address; 00218 def4 = 100000; address = FramLoad( 4, &ClkGovSlewSyncedLimNs, &def4); if (address < 0) return -1; iClkGovSyncedLimitNs = address; 00219 def4 = 100000; address = FramLoad( 4, &ClkGovFreqSyncedLimPpb, &def4); if (address < 0) return -1; iClkGovSyncedLimitPpb = address; 00220 def4 = 10000; address = FramLoad( 4, &ClkGovSlewSyncedHysNs, &def4); if (address < 0) return -1; iClkGovSyncedHysterisNs = address; 00221 def4 = 1000; address = FramLoad( 4, &ClkGovFreqSyncedHysPpb, &def4); if (address < 0) return -1; iClkGovSyncedHysterisPpb = address; 00222 def4 = 3; address = FramLoad( 4, &ClkGovSlewOffsetMaxSecs, &def4); if (address < 0) return -1; iClkGovMaxOffsetSecs = address; 00223 address = FramLoad( 1, &b, NULL); ClkGovTrace = b; if (address < 0) return -1; iClkGov = address; 00224 address = FramLoad( 1, &b, NULL); OneWireTrace = b; if (address < 0) return -1; iOneWire = address; 00225 address = FramLoad( 1, &b, NULL); DnsSendRequestsViaIp4 = b; if (address < 0) return -1; iDnsSendRequestsViaIp4 = address; 00226 address = FramLoad( 1, &b, NULL); NtpClientQuerySendRequestsViaIp4 = b; if (address < 0) return -1; iNtpSendRequestsViaIp4 = address; 00227 address = FramLoad( 1, &b, NULL); TftpSendRequestsViaIp4 = b; if (address < 0) return -1; iTftpSendRequestsViaIp4 = address; 00228 address = FramLoad( 1, &b, NULL); LogUart = b; if (address < 0) return -1; iLogUart = address; 00229 address = FramLoad( 2, NetTraceHost, NULL) ; if (address < 0) return -1; iNetHost = address; 00230 address = FramLoad( 1, &b, NULL); NetTraceStack = b; if (address < 0) return -1; iNetStack = address; 00231 address = FramLoad( 1, &b, NULL); NetTraceNewLine = b; if (address < 0) return -1; iNetNewLine = address; 00232 address = FramLoad( 1, &b, NULL); NetTraceVerbose = b; if (address < 0) return -1; iNetVerbose = address; 00233 address = FramLoad( 1, &b, NULL); LinkTrace = b; if (address < 0) return -1; iLink = address; 00234 address = FramLoad( 1, &b, NULL); DnsNameTrace = b; if (address < 0) return -1; iDnsName = address; 00235 address = FramLoad( 1, &b, NULL); DnsQueryTrace = b; if (address < 0) return -1; iDnsQuery = address; 00236 address = FramLoad( 1, &b, NULL); DnsReplyTrace = b; if (address < 0) return -1; iDnsReply = address; 00237 address = FramLoad( 1, &b, NULL); DnsServerTrace = b; if (address < 0) return -1; iDnsServer = address; 00238 address = FramLoad( 1, &b, NULL); NtpTrace = b; if (address < 0) return -1; iNtp = address; 00239 address = FramLoad( 1, &b, NULL); DhcpTrace = b; if (address < 0) return -1; iDhcp = address; 00240 address = FramLoad( 1, &b, NULL); NsTraceRecvSol = b; if (address < 0) return -1; iNsRecvSol = address; 00241 address = FramLoad( 1, &b, NULL); NsTraceRecvAdv = b; if (address < 0) return -1; iNsRecvAdv = address; 00242 address = FramLoad( 1, &b, NULL); NsTraceSendSol = b; if (address < 0) return -1; iNsSendSol = address; 00243 address = FramLoad( 1, &b, NULL); Nr4Trace = b; if (address < 0) return -1; iNr4 = address; 00244 address = FramLoad( 1, &b, NULL); NrTrace = b; if (address < 0) return -1; iNr = address; 00245 address = FramLoad( 1, &b, NULL); NtpClientTrace = b; if (address < 0) return -1; iNtpClient = address; 00246 address = FramLoad( 1, &b, NULL); Echo4Trace = b; if (address < 0) return -1; iEcho4 = address; 00247 address = FramLoad( 1, &b, NULL); Echo6Trace = b; if (address < 0) return -1; iEcho6 = address; 00248 address = FramLoad( 1, &b, NULL); Dest6Trace = b; if (address < 0) return -1; iDest6 = address; 00249 address = FramLoad( 1, &b, NULL); RaTrace = b; if (address < 0) return -1; iRa = address; 00250 address = FramLoad( 1, &b, NULL); RsTrace = b; if (address < 0) return -1; iRs = address; 00251 address = FramLoad( 1, &b, NULL); Ar4Trace = b; if (address < 0) return -1; iAr4 = address; 00252 address = FramLoad( 1, &b, NULL); Ar6Trace = b; if (address < 0) return -1; iAr6 = address; 00253 address = FramLoad( 1, &b, NULL); ArpTrace = b; if (address < 0) return -1; iArp = address; 00254 address = FramLoad( 1, &b, NULL); Ip4Trace = b; if (address < 0) return -1; iIp4 = address; 00255 address = FramLoad( 1, &b, NULL); Ip6Trace = b; if (address < 0) return -1; iIp6 = address; 00256 address = FramLoad( 1, &b, NULL); UdpTrace = b; if (address < 0) return -1; iUdp = address; 00257 address = FramLoad( 1, &b, NULL); TcpTrace = b; if (address < 0) return -1; iTcp = address; 00258 address = FramLoad( 1, &b, NULL); WebTrace = b; if (address < 0) return -1; iHttp = address; 00259 address = FramLoad( 1, &b, NULL); TftpTrace = b; if (address < 0) return -1; iTftp = address; 00260 00261 address = FramAllocate(DNS_MAX_LABEL_LENGTH); if (address < 0) return -1; iValuesServerName = address; 00262 FramAllocate(1); //Spare 00263 address = FramAllocate(DNS_MAX_LABEL_LENGTH); if (address < 0) return -1; iValuesFileName = address; 00264 FramAllocate(1); //Spare 00265 address = FramAllocate( 4); if (address < 0) return -1; iValuesWriteSize = address; 00266 address = FramAllocate( 4); if (address < 0) return -1; iValuesReadInterval = address; 00267 address = FramAllocate( 8); if (address < 0) return -1; iValuesStartTime = address; 00268 address = FramAllocate( 4); if (address < 0) return -1; iValuesCount = address; 00269 address = FramAllocate( 1); if (address < 0) return -1; iValuesData = address; 00270 if (FramEmpty) 00271 { 00272 b = 0; FramWrite(iValuesServerName , 1, &b ); 00273 b = 0; FramWrite(iValuesFileName , 1, &b ); 00274 def4 = 100; FramWrite(iValuesWriteSize , 4, &def4); 00275 def4 = 15; FramWrite(iValuesReadInterval, 4, &def4); 00276 def8 = 0; FramWrite(iValuesStartTime , 8, &def8); 00277 def4 = 0; FramWrite(iValuesCount , 4, &def4); 00278 } 00279 return 0; 00280 00281 }
Generated on Tue Jul 12 2022 18:50:15 by
