Arianna autonomous DAQ firmware
Dependencies: mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW
Diff: SnConfigFrame.cpp
- Revision:
- 40:1324da35afd4
- Parent:
- 39:2f17131d22a5
- Child:
- 53:9cc158391bea
--- a/SnConfigFrame.cpp Tue Jul 30 02:03:21 2013 +0000 +++ b/SnConfigFrame.cpp Sat Oct 05 04:45:22 2013 +0000 @@ -9,7 +9,7 @@ extern "C" void mbed_mac_address(char *); bool SnConfigFrame::fgApplySafetyNets = true; -const uint8_t SnConfigFrame::kIOVers = 6; +const uint8_t SnConfigFrame::kIOVers = 8; 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) @@ -36,7 +36,7 @@ sprintf(fLabel,"HardDefaults"); fConfTime = 1338854400u; // Tue, 05 Jun 2012 00:00:00 GMT fRun = 0; - fFirstEvt = 0; + fFirstSeq = 0; fEvtsPerSeq = 1000; fRunMode = 0; fStreamHiLoPlas = 0; @@ -68,6 +68,8 @@ fCommSendData = static_cast<int16_t>(kUseBits); fCommWinPrdLowPwr = 86100u; fCommWinDurLowPwr = 300u; + fCommWinConnectTOMin = 3u; + fCommWinListenTOMin = 3u; fWatchDogPeriod = WDFAILSAFE; SetDefaultIPs(); fIsLowPower = false; @@ -128,7 +130,25 @@ SetDefaultGateIP(); } +void SnConfigFrame::ApplyConnectListenSafetyNets() { + if (fCommWinConnectTOMin<kDefTimeoutMin) { + fCommWinConnectTOMin=kDefTimeoutMin; + } + if (fCommWinConnectTOMin>(fCommWinDuration/static_cast<float>(kNcomms))) { + fCommWinConnectTOMin=kDefTimeoutMin; + } + if (fCommWinListenTOMin<kDefTimeoutMin) { + fCommWinListenTOMin=kDefTimeoutMin; + } + if (fCommWinListenTOMin>(fCommWinDuration/static_cast<float>(kNcomms))) { + fCommWinListenTOMin=kDefTimeoutMin; + } +} + void SnConfigFrame::ApplySafetyNets() { + if (fFirstSeq>kMaxFirstSeq) { + fFirstSeq=kMaxFirstSeq; + } if (fNumPlas>kNplas) { fNumPlas=kNplas; } @@ -162,6 +182,9 @@ if (fCommWinPeriod>kMaxCommWinPeriod) { fCommWinPeriod=kMaxCommWinPeriod; } + if (fCommWinPeriod<kMinCommWinPeriod) { + fCommWinPeriod=kMinCommWinPeriod; + } if (fCommWinDuration<kMinCommWinDur) { fCommWinDuration=kMinCommWinDur; } @@ -171,6 +194,7 @@ if (fCommWinDurLowPwr<kMinCommWinDur) { fCommWinDurLowPwr=kMinCommWinDur; } + ApplyConnectListenSafetyNets(); if (fWatchDogPeriod>kMaxWatchDogPer) { fWatchDogPeriod=kMaxWatchDogPer; } @@ -181,12 +205,19 @@ uint32_t SnConfigFrame::GetTimeoutTime(const uint32_t startTime, const uint32_t delta) const { + // --.-----lst------.--delta--.-- + // . . . + // start current returnVal + // + // lio=lst+delta bound by comm wind dur + // returns start + lio + const uint32_t ct = time(0); - uint32_t lst = time(0)-startTime; + uint32_t lst = ct-startTime; if ( (ct<startTime) || (ct==0) || (lst>kSecsPerDay) ) { // possible clock problems - lst = kDefTimeout; + lst = static_cast<uint32_t>(kDefTimeoutMin)*60u; } const uint32_t lio = ((lst+delta) < GetCommWinDuration()) ?