Oh, I admit, I have no idea how all the firmware code is organized and fits together. That's why I asked if I could be misunderstanding what I was seeing there. I was just searching, trying to find where the sleep code was handled, and that turned up. I never did find exactly what I was looking for.
It’s a bit “scattered”
You’ll find in \firmware\wiring\src\spark_wiring_system.cpp
void SystemClass::sleep(uint16_t wakeUpPin, InterruptMode edgeTriggerMode, long seconds)
{
system_sleep_pin(wakeUpPin, edgeTriggerMode, seconds, 0, NULL);
}
which leads to \firmware\system\src\system_sleep.cpp
void system_sleep_pin(uint16_t wakeUpPin, uint16_t edgeTriggerMode, long seconds, uint32_t param, void* reserved)
{
if (seconds>0)
HAL_RTC_Set_UnixAlarm((time_t) seconds);
LED_Off(LED_RGB);
HAL_Core_Enter_Stop_Mode(wakeUpPin, edgeTriggerMode);
}
which leads to \firmware\hal\src\stm32f2xx\core_hal_stm32f2xx.c
void HAL_Core_Enter_Stop_Mode(uint16_t wakeUpPin, uint16_t edgeTriggerMode)
{
if ((wakeUpPin < TOTAL_PINS) && (edgeTriggerMode <= FALLING))
{
PinMode wakeUpPinMode = INPUT;
/* Set required pinMode based on edgeTriggerMode */
switch(edgeTriggerMode)
{
case CHANGE:
wakeUpPinMode = INPUT;
break;
case RISING:
wakeUpPinMode = INPUT_PULLDOWN;
break;
case FALLING:
wakeUpPinMode = INPUT_PULLUP;
break;
}
HAL_Pin_Mode(wakeUpPin, wakeUpPinMode);
/* Configure EXTI Interrupt : wake-up from stop mode using pin interrupt */
HAL_Interrupts_Attach(wakeUpPin, NULL, NULL, edgeTriggerMode, NULL);
HAL_Core_Execute_Stop_Mode();
/* Detach the Interrupt pin */
HAL_Interrupts_Detach(wakeUpPin);
}
}
And so on 