Arianna autonomous DAQ firmware

Dependencies:   mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW

Revision:
4:a91682e19d6b
Parent:
3:24c5f0f50bf1
Child:
5:9cea89700c66
--- a/main.cpp	Tue Jul 31 04:59:16 2012 +0000
+++ b/main.cpp	Thu Aug 02 05:42:47 2012 +0000
@@ -43,6 +43,9 @@
 DigitalIn PIN_rst_a_sf(p15);
 // afar power
 DigitalOut PIN_afar_power(p16);
+// batter voltage/current measurement
+AnalogIn PIN_vADC1(p19); 
+AnalogIn PIN_vADC2(p18); 
 // Lock daughter card registeres (during data readout).
 DigitalOut PIN_lockRegisters( p20 );
 // iridium (SBD) power
@@ -77,6 +80,7 @@
 void                      SetConfigAndMakeOutputFile();
 SnCommWin::ECommWinResult OpenCommWin();
 void                      MakeOutputFile(const bool stopRunning=false);
+void                      SetPower(const bool isCommWin);
 
 //
 // globals
@@ -173,9 +177,12 @@
     gForceTicker.detach();
     gFirstEvt = true;
     
+    // (probably) power down comms and power up cards,amps
+    SetPower(false);
+
     printf("Using config %s\r\n",gConf.GetLabel());
     SetConfigAndMakeOutputFile(); // setup defaults in case no communication
-    
+
     //
     // get config
     //
@@ -304,13 +311,40 @@
         }
     }
     SnSDUtils::OpenNewOutputFile(gConf.GetMacAddress(),
-                                 gConf.GetRun());
+                                 gConf.GetRun(),
+                                 PIN_vADC1.read_u16(),
+                                 PIN_vADC2.read_u16());
     printf("made output file with run %u\r\n",gConf.GetRun());
     printf("filename=%s\r\n",SnSDUtils::GetCurFileName());
     SnSDUtils::WriteConfig(SnSDUtils::GetCurFile(), gConf);
 }
 
 //
+// power stuff
+//
+void SetPower(const bool isCommWin) {
+    if (isCommWin) {
+        PIN_turn_on_system = gConf.IsPoweredFor(SnConfigFrame::kCardComWin);
+        wait_ms(10);
+        PIN_turn_on_amps = gConf.IsPoweredFor(SnConfigFrame::kAmpsComWin);
+        wait_ms(10);
+        PIN_iridSbd_power = gConf.IsPoweredFor(SnConfigFrame::kIridComWin);
+        wait_ms(10);
+        PIN_afar_power = gConf.IsPoweredFor(SnConfigFrame::kAfarComWin);
+        wait_ms(10);
+    } else {
+        PIN_turn_on_system = gConf.IsPoweredFor(SnConfigFrame::kCardDatTak);
+        wait_ms(10);
+        PIN_turn_on_amps = gConf.IsPoweredFor(SnConfigFrame::kAmpsDatTak);
+        wait_ms(10);
+        PIN_iridSbd_power = gConf.IsPoweredFor(SnConfigFrame::kIridDatTak);
+        wait_ms(10);
+        PIN_afar_power = gConf.IsPoweredFor(SnConfigFrame::kAfarDatTak);
+        wait_ms(10);
+    }
+}
+
+//
 // set configuration
 //
 void SetConfigAndMakeOutputFile() {
@@ -508,15 +542,8 @@
     SnSDUtils::CloseOutputFile(SnSDUtils::GetCurFile());
     SnSDUtils::OpenExistingFile(SnSDUtils::GetCurFileName(), true);
     
-    // power system down
-    PIN_turn_on_system = 1;
-    PIN_turn_on_amps = 1;
-    wait_ms(20);
-    // power up the comm systems
-    PIN_iridSbd_power = 1;
-    wait_ms(10);
-    PIN_afar_power = 1;
-    wait_ms(10);
+    // (probably) power down cards,amps and power up comms
+    SetPower(true);
     
     const uint32_t conto = (gConf.GetCommWinDuration() < kConnectTimeout) ?
         gConf.GetCommWinDuration() : kConnectTimeout;
@@ -582,17 +609,11 @@
 
     }
     
-    // power down the comm systems
-    PIN_iridSbd_power = 0;
-    wait_ms(10);
-    PIN_afar_power = 0;
-    wait_ms(10);
-    // power system back up
+    // (probably) power down comms and power up cards,amps
+    SetPower(false);
+
     gFirstEvt = true;
-    PIN_turn_on_system = 0;
-    wait_ms(10);
-    PIN_turn_on_amps = 0;
-    wait_ms(10);
+
     // reset config with system powered (for DAC/PLA setting)
     if (gotNewConfig) {
         printf("calling SetConfigAndMakeOutputFile\r\n");