Arianna autonomous DAQ firmware

Dependencies:   mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW

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);