bool Interrupt_disableMaster(void) { // // Disable processor interrupts. // return (CPU_cpsid()); }
/* * ======== PowerMSP432_policyFxn ======== */ void PowerMSP432_policyFxn() { UInt constraints; Bool slept = false; UInt taskKey; UInt swiKey; /* disable interrupts */ CPU_cpsid(); /* disable Swi and Task scheduling */ swiKey = Swi_disable(); taskKey = Task_disable(); /* query the declared constraints */ constraints = Power_getConstraintMask(); /* * Check if can go to a sleep state, starting with the deepest level. * Do not go to a sleep state if a lesser sleep state is disallowed. */ /* check if can go to DEEPSLEEP_1 */ if ((constraints & ((1 << PowerMSP432_DISALLOW_SLEEP) | (1 << PowerMSP432_DISALLOW_DEEPSLEEP_0) | (1 << PowerMSP432_DISALLOW_DEEPSLEEP_1))) == 0) { /* go to DEEPSLEEP_1 */ Power_sleep(PowerMSP432_DEEPSLEEP_1); /* set 'slept' to true*/ slept = true; } /* if didn't sleep yet, now check if can go to DEEPSLEEP_0 */ if (!slept && ((constraints & ((1 << PowerMSP432_DISALLOW_SLEEP) | (1 << PowerMSP432_DISALLOW_DEEPSLEEP_0))) == 0)) { /* go to DEEPSLEEP_0 */ Power_sleep(PowerMSP432_DEEPSLEEP_0); /* set 'slept' to true*/ slept = true; } /* if didn't sleep yet, now check if can go to SLEEP */ if (!slept && ((constraints & (1 << PowerMSP432_DISALLOW_SLEEP)) == 0)) { /* go to SLEEP */ Power_sleep(PowerMSP432_SLEEP); /* set 'slept' to true*/ slept = true; } /* re-enable interrupts */ CPU_cpsie(); /* restore Swi scheduling */ Swi_restore(swiKey); /* restore Task scheduling */ Task_restore(taskKey); /* if didn't sleep yet, just do WFI */ if (!slept) { __asm(" wfi"); } }