A GPS disciplined clock
Dependencies: net lpc1768 crypto clock web log
settings/settings.c
- Committer:
- andrewboyson
- Date:
- 2018-12-31
- Revision:
- 17:1dcc58dac445
- Parent:
- 16:3d40d832dc70
- Child:
- 18:eda70c3ee1a0
File content as of revision 17:1dcc58dac445:
#include <stdlib.h> #include <stdbool.h> #include "clkstate.h" #include "log.h" #include "net.h" #include "link.h" #include "dns.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 "clksync.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" #define GPREG2 (*((volatile unsigned *) 0x4002404C)) #define GPREG3 (*((volatile unsigned *) 0x40024050)) #define GPREG4 (*((volatile unsigned *) 0x40024054)) #define ALMON (*((volatile unsigned *) 0x40024078)) #define ALYEAR (*((volatile unsigned *) 0x4002407C)) #define ALDOM (*((volatile unsigned *) 0x4002406C)) /* ALSEC 6 Alarm value for Seconds R/W 0x4002 4060 - ALMIN 6 Alarm value for Minutes R/W 0x4002 4064 - ALHOUR 5 Alarm value for Hours R/W 0x4002 4068 ALDOM 5 Alarm value for Day of Month R/W 0x4002 406C * ALDOW 3 Alarm value for Day of Week R/W 0x4002 4070 ALDOY 9 Alarm value for Day of Year R/W 0x4002 4074 - ALMON 4 Alarm value for Months R/W 0x4002 4078 * ALYEAR 12 Alarm value for Years R/W 0x4002 407C * */ enum { iLogUart, iNetStack, iNetNewLine, iNetVerbose, iLink, iDnsName, iDnsQuery, iDnsReply, iDnsServer, iNtp, iDhcp, iNsRecvSol, iNsRecvAdv, iNsSendSol, iNr4, iNr6, iNtpClient, iClkSync, iEcho4, iEcho6, iDest6, iRa, iRs, iAr4, iAr6, iArp, iIp4, iIp6, iUdp, iTcp, iHttp, iTftp }; int GetSensorHeight() { return ALDOM; //9 bits } void SetSensorHeight(int value) { ALDOM = value & 0x001F; //5 bits +32 } static bool getBit(int bit) { return GPREG4 & (1U << bit); } static void setBit(int bit, bool value) { if (value) GPREG4 |= 1U << bit ; else GPREG4 &= ~(1U << bit); } void SetTraceNetHost (char* text) { int value = strtol(text, NULL, 16); NetTraceHost[1] = value & 0xFF; //Little endian so low byte NetTraceHost[0] = (value >> 8) & 0xFF; //high byte ALMON = value >> 12; // 4 bits ALYEAR = value & 0x3FFF; //12 bits } void ChgLogUart () { LogUart = !LogUart; setBit(iLogUart, LogUart ); } void ChgTraceNetStack () { NetTraceStack = !NetTraceStack; setBit(iNetStack, NetTraceStack ); } void ChgTraceNetNewLine() { NetTraceNewLine = !NetTraceNewLine; setBit(iNetNewLine, NetTraceNewLine); } void ChgTraceNetVerbose() { NetTraceVerbose = !NetTraceVerbose; setBit(iNetVerbose, NetTraceVerbose); } void ChgTraceLink () { LinkTrace = !LinkTrace; setBit(iLink, LinkTrace ); } void ChgTraceDnsName () { DnsNameTrace = !DnsNameTrace; setBit(iDnsName, DnsNameTrace ); } void ChgTraceDnsQuery () { DnsQueryTrace = !DnsQueryTrace; setBit(iDnsQuery, DnsQueryTrace ); } void ChgTraceDnsReply () { DnsReplyTrace = !DnsReplyTrace; setBit(iDnsReply, DnsReplyTrace ); } void ChgTraceDnsServer () { DnsServerTrace = !DnsServerTrace; setBit(iDnsServer, DnsServerTrace ); } void ChgTraceNtp () { NtpTrace = !NtpTrace; setBit(iNtp, NtpTrace ); } void ChgTraceDhcp () { DhcpTrace = !DhcpTrace; setBit(iDhcp, DhcpTrace ); } void ChgTraceNsRecvSol () { NsTraceRecvSol = !NsTraceRecvSol; setBit(iNsRecvSol, NsTraceRecvSol); } void ChgTraceNsRecvAdv () { NsTraceRecvAdv = !NsTraceRecvAdv; setBit(iNsRecvAdv, NsTraceRecvAdv); } void ChgTraceNsSendSol () { NsTraceSendSol = !NsTraceSendSol; setBit(iNsSendSol, NsTraceSendSol); } void ChgTraceNr4 () { Nr4Trace = !Nr4Trace ; setBit(iNr4, Nr4Trace ); } void ChgTraceNr6 () { Nr6Trace = !Nr6Trace ; setBit(iNr6, Nr6Trace ); } void ChgTraceNtpClient () { NtpClientTrace = !NtpClientTrace ; setBit(iNtpClient, NtpClientTrace ); } void ChgTraceSync () { ClkSyncTrace = !ClkSyncTrace ; setBit(iClkSync, ClkSyncTrace ); } void ChgTraceEcho4 () { Echo4Trace = !Echo4Trace ; setBit(iEcho4, Echo4Trace ); } void ChgTraceEcho6 () { Echo6Trace = !Echo6Trace ; setBit(iEcho6, Echo6Trace ); } void ChgTraceDest6 () { Dest6Trace = !Dest6Trace ; setBit(iDest6, Dest6Trace ); } void ChgTraceRa () { RaTrace = !RaTrace ; setBit(iRa, RaTrace ); } void ChgTraceRs () { RsTrace = !RsTrace ; setBit(iRs, RsTrace ); } void ChgTraceAr4 () { Ar4Trace = !Ar4Trace ; setBit(iAr4, Ar4Trace ); } void ChgTraceAr6 () { Ar6Trace = !Ar6Trace ; setBit(iAr6, Ar6Trace ); } void ChgTraceArp () { ArpTrace = !ArpTrace ; setBit(iArp, ArpTrace ); } void ChgTraceIp4 () { Ip4Trace = !Ip4Trace ; setBit(iIp4, Ip4Trace ); } void ChgTraceIp6 () { Ip6Trace = !Ip6Trace ; setBit(iIp6, Ip6Trace ); } void ChgTraceUdp () { UdpTrace = !UdpTrace ; setBit(iUdp, UdpTrace ); } void ChgTraceTcp () { TcpTrace = !TcpTrace ; setBit(iTcp, TcpTrace ); } void ChgTraceHttp () { HttpTrace = !HttpTrace ; setBit(iHttp, HttpTrace ); } void ChgTraceTftp () { TftpTrace = !TftpTrace ; setBit(iTftp, TftpTrace ); } void ChgDnsSendRequestsViaIp4() { DnsSendRequestsViaIp4 = !DnsSendRequestsViaIp4; } void ChgNtpSendRequestsViaIp4() { NtpSendRequestsViaIp4 = !NtpSendRequestsViaIp4; } void ChgTftpSendRequestsViaIp4() { TftpSendRequestsViaIp4 = !TftpSendRequestsViaIp4; } //Clock settings void SetClockSlewDivisor (int value) { ClockSlewDivisor = value; } void SetClockSlewMaxMs (int value) { ClockSlewMaxMs = value; } void SetClockPpbDivisor (int value) { ClockPpbDivisor = value; } void SetClockPpbChangeMax (int value) { ClockPpbChangeMax = value; } void SetClockSyncedLimitNs (int value) { ClockSyncedLimitNs = value; } void SetClockSyncedLimitPpb (int value) { ClockSyncedLimitPpb = value; } void SetClockSyncedHysterisNs (int value) { ClockSyncedHysterisNs = value; } void SetClockSyncedHysterisPpb(int value) { ClockSyncedHysterisPpb = value; } void SetClockMaxOffsetSecs (int value) { ClockMaxOffsetSecs = value; } int SettingsInit() { ClockSlewDivisor = 10; ClockSlewMaxMs = 20; ClockPpbDivisor = 1000; ClockPpbChangeMax = 10000000; ClockSyncedLimitNs = 100000; ClockSyncedLimitPpb = 100000; ClockSyncedHysterisNs = 10000; ClockSyncedHysterisPpb = 1000; ClockMaxOffsetSecs = 3; DnsSendRequestsViaIp4 = false; NtpSendRequestsViaIp4 = false; TftpSendRequestsViaIp4 = true; NetTraceHost[1] = ALYEAR & 0xFF; //Little endian so low byte NetTraceHost[0] = (ALMON << 4) + (ALYEAR >> 8); //high byte LogUart = getBit(iLogUart); NetTraceStack = getBit(iNetStack); NetTraceNewLine = getBit(iNetNewLine); NetTraceVerbose = getBit(iNetVerbose); LinkTrace = getBit(iLink); DnsNameTrace = getBit(iDnsName); DnsQueryTrace = getBit(iDnsQuery); DnsReplyTrace = getBit(iDnsReply); DnsServerTrace = getBit(iDnsServer); NtpTrace = getBit(iNtp); DhcpTrace = getBit(iDhcp); NsTraceRecvSol = getBit(iNsRecvSol); NsTraceRecvAdv = getBit(iNsRecvAdv); NsTraceSendSol = getBit(iNsSendSol); Nr4Trace = getBit(iNr4); Nr6Trace = getBit(iNr6); NtpClientTrace = getBit(iNtpClient); ClkSyncTrace = getBit(iClkSync); Echo4Trace = getBit(iEcho4); Echo6Trace = getBit(iEcho6); Dest6Trace = getBit(iDest6); RaTrace = getBit(iRa); RsTrace = getBit(iRs); Ar4Trace = getBit(iAr4); Ar6Trace = getBit(iAr6); ArpTrace = getBit(iArp); Ip4Trace = getBit(iIp4); Ip6Trace = getBit(iIp6); UdpTrace = getBit(iUdp); TcpTrace = getBit(iTcp); HttpTrace = getBit(iHttp); TftpTrace = getBit(iTftp); return 0; }