Arianna autonomous DAQ firmware
Dependencies: mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW
Diff: main.cpp
- Revision:
- 30:f869ed4bcc08
- Parent:
- 28:484943132bb0
- Child:
- 31:b5bd3b189150
--- a/main.cpp Sat Nov 24 20:23:19 2012 +0000 +++ b/main.cpp Wed Nov 28 01:24:23 2012 +0000 @@ -871,81 +871,61 @@ // void SetPower(const bool isCommWin) { #ifdef DEBUG + printf("set power. isCommWin=%s\r\n",(isCommWin)?"true":"false"); printf("bef: pconp=%u (%08x), pcenet=%u (%08x)\r\n", LPC_SC->PCONP, LPC_SC->PCONP, LPC1768_PCONP_PCENET, LPC1768_PCONP_PCENET); printf("pcenet bef power: status=%d\r\n",Peripheral_GetStatus(LPC1768_PCONP_PCENET)); #endif - // TODO: turn on amps individually, when that's possible + + SnConfigFrame::EPowerModeBit cardpb(SnConfigFrame::kCardDatTak), + ampspb(SnConfigFrame::kAmpsDatTak), + iridpb(SnConfigFrame::kIridDatTak), + afarpb(SnConfigFrame::kAfarDatTak); if (isCommWin) { - PIN_turn_on_system = gConf.GetPowPinSetting(SnConfigFrame::kCardComWin); - wait_ms(10); - PIN_turn_on_amps = gConf.GetPowPinSetting(SnConfigFrame::kAmpsComWin); - wait_ms(10); - PIN_iridSbd_power = gConf.GetPowPinSetting(SnConfigFrame::kIridComWin); - wait_ms(10); -#ifdef DEBUG - printf("afar pin=%d, com powsetting=%d\r\n",PIN_afar_power.read(), - gConf.GetPowPinSetting(SnConfigFrame::kAfarComWin)); -#endif - if (gConf.IsPoweredFor(SnConfigFrame::kAfarComWin)) { -#ifdef DEBUG - printf("PHY cowin powering up\r\n"); -#endif - PHY_PowerUp(); wait(1); + cardpb = SnConfigFrame::kCardComWin; + ampspb = SnConfigFrame::kAmpsComWin; + iridpb = SnConfigFrame::kIridComWin; + afarpb = SnConfigFrame::kAfarComWin; + } + // TODO: turn on amps individually, when that's possible + PIN_turn_on_system = gConf.GetPowPinSetting(cardpb); + wait_ms(10); + PIN_turn_on_amps = gConf.GetPowPinSetting(ampspb); + wait_ms(10); + PIN_iridSbd_power = (kIridAfarPwrSame) + ? gConf.GetPowPinSetting(iridpb, false) // leave the iridium relay off. use afar relay. + : gConf.GetPowPinSetting(iridpb); + wait_ms(10); #ifdef DEBUG - printf("PHY cowin powered up\r\n"); + printf("afar pin=%d, com powsetting=%d\r\n",PIN_afar_power.read(), + gConf.GetPowPinSetting(afarpb)); #endif - } else { -#ifdef DEBUG - printf("PHY cowin powering down\r\n"); -#endif - PHY_PowerDown(); wait(1); + if (gConf.IsPoweredFor(afarpb)) { #ifdef DEBUG - printf("PHY cowin powered down\r\n"); + printf("PHY cowin powering up\r\n"); #endif - } + PHY_PowerUp(); wait(1); #ifdef DEBUG - printf("PHY done\r\n"); + printf("PHY cowin powered up\r\n"); #endif - wait_ms(100); - PIN_afar_power = gConf.GetPowPinSetting(SnConfigFrame::kAfarComWin); - wait_ms(10); } else { - PIN_turn_on_system = gConf.GetPowPinSetting(SnConfigFrame::kCardDatTak); - wait_ms(10); - PIN_turn_on_amps = gConf.GetPowPinSetting(SnConfigFrame::kAmpsDatTak); - wait_ms(10); - PIN_iridSbd_power = gConf.GetPowPinSetting(SnConfigFrame::kIridDatTak); - wait_ms(10); #ifdef DEBUG - printf("afar pin=%d, dat powsetting=%d, ispow=%d\r\n",PIN_afar_power.read(), - gConf.GetPowPinSetting(SnConfigFrame::kAfarDatTak), - (int)(gConf.IsPoweredFor(SnConfigFrame::kAfarDatTak))); + printf("PHY cowin powering down\r\n"); #endif - if (gConf.IsPoweredFor(SnConfigFrame::kAfarDatTak)) { + PHY_PowerDown(); wait(1); #ifdef DEBUG - printf("PHY dattak powering up\r\n"); + printf("PHY cowin powered down\r\n"); #endif - PHY_PowerUp(); wait(1); + } #ifdef DEBUG - printf("PHY dattak powered up\r\n"); -#endif - } else { -#ifdef DEBUG - printf("PHY dattak powering down\r\n"); + printf("PHY done\r\n"); #endif - PHY_PowerDown(); wait(1); -#ifdef DEBUG - printf("PHY dattak powered down\r\n"); -#endif - } -#ifdef DEBUG - printf("PHY done\r\n"); -#endif - wait_ms(100); - PIN_afar_power = gConf.GetPowPinSetting(SnConfigFrame::kAfarDatTak); - wait_ms(10); + wait_ms(100); + int afpp = gConf.GetPowPinSetting(afarpb); + if (kIridAfarPwrSame) { + afpp |= gConf.GetPowPinSetting(iridpb); } + PIN_afar_power = afpp; wait(1.5); // let things power up #ifdef DEBUG printf("aft: pconp=%u (%08x), pcenet=%u (%08x)\r\n", @@ -1298,7 +1278,9 @@ switch ((*cw)->GetCommType()) { case SnConfigFrame::kIrid: havePower = gConf.IsPoweredFor(SnConfigFrame::kIridComWin) - && (PIN_iridSbd_power.read() == + && ( (kIridAfarPwrSame) + ? PIN_afar_power.read() + : PIN_iridSbd_power.read() == gConf.GetPowPinSetting(SnConfigFrame::kIridComWin)); break; case SnConfigFrame::kAfar: