Arianna autonomous DAQ firmware
Dependencies: mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW
Diff: SnConfigFrame.cpp
- Revision:
- 56:0bba0ef15697
- Parent:
- 54:ea1234a44fe8
- Child:
- 59:21128cc24b04
--- a/SnConfigFrame.cpp Fri Jan 03 13:03:01 2014 +0000 +++ b/SnConfigFrame.cpp Thu Oct 30 06:42:17 2014 +0000 @@ -9,7 +9,11 @@ extern "C" void mbed_mac_address(char *); bool SnConfigFrame::fgApplySafetyNets = true; +#if CHIPBOARD==ATWD4CH const uint8_t SnConfigFrame::kIOVers = 8; +#else // SST +const uint8_t SnConfigFrame::kIOVers = 10; +#endif 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) @@ -39,7 +43,9 @@ fFirstSeq = 0; fEvtsPerSeq = 300; fRunMode = 0; +#if CHIPBOARD==ATWD4CH fStreamHiLoPlas = 0; +#endif fWvLoseLSB = 0; fWvLoseMSB = 4; fWvBaseline = 0; @@ -48,11 +54,13 @@ for (uint16_t i=0; i<kTotDacs; i++, dc++) { *dc = 3072u; } +#if CHIPBOARD==ATWD4CH fNumPlas = 1; uint16_t* pl = &(fPLA[0]); for (uint8_t j=0; j<kNplas; j++, pl++) { *pl = 0x7FFFu; } +#endif fNumCardsMajLog = 2; fEnableThermTrig = 0; fForceTrigPeriod = 67u; @@ -71,6 +79,7 @@ fCommWinConnectTOMin = 3u; fCommWinListenTOMin = 3u; fWatchDogPeriod = WDFAILSAFE; + fTempCheckPeriod = 0; SetDefaultIPs(); fIsLowPower = false; memcpy(fNormLabel, fLabel, kConfLblLen); @@ -147,13 +156,13 @@ if (fCommWinConnectTOMin<kDefTimeoutMin) { fCommWinConnectTOMin=kDefTimeoutMin; } - if (fCommWinConnectTOMin>(fCommWinDuration/static_cast<float>(kNcomms))) { + if (fCommWinConnectTOMin>(fCommWinDuration/(60.*static_cast<float>(kNcomms)))) { fCommWinConnectTOMin=kDefTimeoutMin; } if (fCommWinListenTOMin<kDefTimeoutMin) { fCommWinListenTOMin=kDefTimeoutMin; } - if (fCommWinListenTOMin>(fCommWinDuration/static_cast<float>(kNcomms))) { + if (fCommWinListenTOMin>(fCommWinDuration/(60.*static_cast<float>(kNcomms)))) { fCommWinListenTOMin=kDefTimeoutMin; } } @@ -162,9 +171,11 @@ if (fFirstSeq>kMaxFirstSeq) { fFirstSeq=kMaxFirstSeq; } +#if CHIPBOARD==ATWD4CH if (fNumPlas>kNplas) { fNumPlas=kNplas; } +#endif if (fNumCardsMajLog>kNchans) { fNumCardsMajLog=kNchans; } @@ -263,12 +274,16 @@ DisablePowerFor(kAfarDatTak); DisablePowerFor(kAmpsComWin); DisablePowerFor(kCardComWin); - if ( (IsPoweredFor(kIridComWin)==false) && - (IsPoweredFor(kAfarComWin)==false) ) { + if ( IsSBDonlyLowPwrMode() ) { + EnablePowerFor(kIridComWin); + DisablePowerFor(kAfarComWin); + } else if ( (IsPoweredFor(kIridComWin)==false) && + (IsPoweredFor(kAfarComWin)==false) ) { // TODO: turn on only iridum maybe? EnablePowerFor(kIridComWin); EnablePowerFor(kAfarComWin); - } + } // else same as normal for Irid and Afar Com Win + // set mode to low power fIsLowPower = true; } @@ -378,23 +393,38 @@ closedir(d); } */ +#ifdef DEBUG + printf("trying to read config [%s]\r\n",cfile); +#endif bool ret = false; FILE* cf = fopen(cfile,"rb"); if (cf!=0) { +#ifdef DEBUG + printf("opened file\r\n"); +#endif // check the header and file size to be // protect a bit against corruption uint8_t hc; uint32_t hl; SnHeaderFrame::ReadFrom(cf, hc, hl); +#ifdef DEBUG + printf("hc=%hhu, hl=%u\r\n",hc,hl); +#endif if (hc==SnHeaderFrame::kConfigCode) { const int fpos = ftell(cf); // how many bytes? fseek(cf, 0, SEEK_END); // go to end const int fend = ftell(cf); fseek(cf, fpos, SEEK_SET); // go back - + +#ifdef DEBUG + printf("fend-fpos=%d-%d=%d\r\n",fend,fpos,fend-fpos); +#endif if (hl == fend-fpos) { ReadFrom(cf); ret = (ferror(cf)==0); +#ifdef DEBUG + printf("ret = %d\r\n",(int)ret); +#endif } } fclose(cf);