#ifndef LPSLEEP_INC #define LPSLEEP_INC typedef enum { sleepOK = 0, // normal sleep, returned on seconds transition sleepMissed, // sleep target passed before call to sleep sleepInterrupted, // sleep terminated by an external interrupt cantSleepBadFSys, // wont even try if <1.28MHz or > 16MHz cantSleepBadTickRate, // low power sleep demands tick rate of 100 cantSleepIRQ3Busy // IRQ3 is being asserted so we can't sleep } SLPResult; typedef struct { unsint sleepAt3V :1; // reduce power by reducing voltage unsint sleepADshdn :1; // force the AD into shutdown unsint sleepRSshdn :1; // force the RS232 driver to shutdown unsint sleepZeroEvenSec :1; // sleep zero waits for next second unsint sleepSpuriousRupt :1; // break on (catch) spurious interrupts unsint sleepHandleIRQ1 :1; // break on IRQ1 (RS232) interrupts unsint sleepHandleIRQ2 :1; // break on IRQ2 (unknown) interrupts unsint sleepHandleIRQ4 :1; // break on IRQ4 (unknown) interrupts unsint sleepHandleIRQ6 :1; // break on IRQ6/TP15 interrupts } SleepPowerOptions; SLPResult LowPowerSleep(ulong wakesecs); SLPResult LowPowerSleepTill(time_tt wakeup); void SleepUntil(time_tt WakeupTime); #endif LPSLEEP_INC