Arianna autonomous DAQ firmware
Dependencies: mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW
Diff: SnConfigFrame.cpp
- Revision:
- 28:484943132bb0
- Parent:
- 22:f957c4f840ad
- Child:
- 31:b5bd3b189150
--- a/SnConfigFrame.cpp Thu Nov 01 07:00:17 2012 +0000 +++ b/SnConfigFrame.cpp Sat Nov 24 06:38:43 2012 +0000 @@ -11,6 +11,7 @@ const uint8_t SnConfigFrame::kIOVers = 4; const char* const SnConfigFrame::kDefConfFile = "/local/DEFCONF.DAT"; +const char* const SnConfigFrame::kDefIPflag = "DEF"; const uint32_t SnConfigFrame::kMinCommWinPrdLowPwr = 14400; // exclusive min low power comm win period (s) const uint32_t SnConfigFrame::kMaxCommWinPrdLowPwr = 259200; // exclusive max low power comm win period (s) const uint32_t SnConfigFrame::kMinCommWinDurLowPwr = 300; // exclusive min low power comm win duration (s) @@ -52,27 +53,22 @@ for (uint8_t j=0; j<kNplas; j++, pl++) { *pl = 0x7FFFu; } - fNumCardsMajLog = 1; + fNumCardsMajLog = 2; fEnableThermTrig = 1; fForceTrigPeriod = 67u; fHeartBeatPeriod = 0; fAmpsOn = 0x0Fu; fEvtThrtlPeriodMs = 50u; - fPowerMode = kAmpsDatTak|kCardDatTak|kIridComWin|kAfarComWin; + fPowerMode = kAmpsDatTak|kCardDatTak|kAmpsComWin|kCardComWin|kIridComWin|kAfarComWin; fBatVoltLowPwr = 0; - fVoltCheckPeriod = 1200u; - fCommWinPeriod = 3300u; + fVoltCheckPeriod = 600u; + fCommWinPeriod = 3600u; fCommWinDuration = 600u; - fCommSendData = 0; + fCommSendData = static_cast<int16_t>(kUseBits); fCommWinPrdLowPwr = 86100u; fCommWinDurLowPwr = 300u; - sprintf(fRemoteServer,"%s","128.195.204.151"); - fRemotePort = 6655; - sprintf(fMbedIP,"%s","128.195.204.148"); - sprintf(fMbedMask,"%s","255.255.255.0"); - sprintf(fMbedGate,"%s","128.195.204.1"); fWatchDogPeriod = WDFAILSAFE; - + SetDefaultIPs(); fIsLowPower = false; memcpy(fNormLabel, fLabel, kConfLblLen); fNormPowerMode = fPowerMode; @@ -80,6 +76,102 @@ } +void SnConfigFrame::SetDefaultRemoteServ() { + sprintf(fRemoteServer,"%s","128.195.204.151"); +} + +void SnConfigFrame::SetDefaultRemotePort() { + fRemotePort = 6655; +} + +void SnConfigFrame::SetDefaultMbedIP() { + const uint64_t ip = GetMacAddress(); + switch (ip) { + case 0x0002F7F0C3B60000: // station 3 + sprintf(fMbedIP,"%s","157.132.94.35"); + break; + case 0x0002F7F0C41C0000: // station 4 + sprintf(fMbedIP,"%s","157.132.94.37"); + break; + case 0x0002F7F0AEE00000: // station 5 + sprintf(fMbedIP,"%s","157.132.94.39"); + break; + case 0x0002F7F0C4450000: // station 6 + sprintf(fMbedIP,"%s","157.132.94.41"); + break; + case 0x0002F7F0D2880000: // station 7 + sprintf(fMbedIP,"%s","157.132.94.43"); + break; + case 0x0002F7F0C0F80000: // station 8 + sprintf(fMbedIP,"%s","157.132.94.45"); + break; + default: // what?? + sprintf(fMbedIP,"%s","157.132.94.30"); // anciet station + break; + }; +} +// brian dornick 3107 +void SnConfigFrame::SetDefaultMaskIP() { + sprintf(fMbedMask,"%s","255.255.255.0"); +} + +void SnConfigFrame::SetDefaultGateIP() { + sprintf(fMbedGate,"%s","157.132.94.1"); +} + +void SnConfigFrame::SetDefaultIPs() { + SetDefaultRemoteServ(); + SetDefaultRemotePort(); + SetDefaultMbedIP(); + SetDefaultMaskIP(); + SetDefaultGateIP(); +} + +void SnConfigFrame::ApplySafetyNets() { + if (fNumPlas>kNplas) { + fNumPlas=kNplas; + } + if (fNumCardsMajLog>kNchans) { + fNumCardsMajLog=kNchans; + } + if (fNumCardsMajLog<1u) { + fNumCardsMajLog=1u; + } + if ( (fForceTrigPeriod>0) && + (fForceTrigPeriod<kMinForcePer) ) { + fForceTrigPeriod = kMinForcePer; + } + if (fEvtThrtlPeriodMs>kMaxThrottlePerMs) { + fEvtThrtlPeriodMs=kMaxThrottlePerMs; + } + if ( (IsPoweredFor(kIridComWin)==false) && + (IsPoweredFor(kAfarComWin)==false) ) { + EnablePowerFor(kIridComWin); + EnablePowerFor(kAfarComWin); + } + if (fBatVoltLowPwr>kMaxBatVoltLowPwr) { + fBatVoltLowPwr=kMaxBatVoltLowPwr; + } + if (fCommWinPeriod>kMaxCommWinPeriod) { + fCommWinPeriod=kMaxCommWinPeriod; + } + if (fCommWinDuration<kMinCommWinDur) { + fCommWinDuration=kMinCommWinDur; + } + if (fCommWinPrdLowPwr>kMaxCommWinPeriod) { + fCommWinPrdLowPwr=kMaxCommWinPeriod; + } + if (fCommWinDurLowPwr<kMinCommWinDur) { + fCommWinDurLowPwr=kMinCommWinDur; + } + if (fWatchDogPeriod>kMaxWatchDogPer) { + fWatchDogPeriod=kMaxWatchDogPer; + } + if (fWatchDogPeriod<kMinWatchDogPer) { + fWatchDogPeriod=kMinWatchDogPer; + } +} + uint32_t SnConfigFrame::GetTimeoutTime(const uint32_t startTime, const uint32_t delta) const { const uint32_t ct = time(0);