in Firmware/ExpressivePixelsCore/EPXApp.cpp [639:675]
void CExpressivePixelsApp::ProcessPowerStateChange()
{
// Process a change in power state
switch(m_pendingPowerStateChange)
{
case EPXAPP_PENDINGPOWERSTATE_BLE_ON:
case EPXAPP_PENDINGPOWERSTATE_USB_ON:
DEBUGLOGLN("POWERSTATECHANGED %s", m_pendingPowerStateChange == EPXAPP_PENDINGPOWERSTATE_BLE_ON ? "BLE ON" : "USB ON");
if (m_pendingPowerStateChange == EPXAPP_PENDINGPOWERSTATE_BLE_ON)
m_powerState |= EPXAPP_POWERSTATE_ON_BLE;
else if (m_pendingPowerStateChange == EPXAPP_PENDINGPOWERSTATE_USB_ON)
{
// If plugged into USB and the 'autoplay on USB' is on then start playing all animations on the device
if (m_bAutoPlayOnUSBPower && m_connectedChannel == EPXAPP_CONNECTIONCHANNEL_NONE)
ToggleInvokedAutoPlay(true);
m_powerState |= EPXAPP_POWERSTATE_ON_USB;
}
break;
case EPXAPP_PENDINGPOWERSTATE_BLE_OFF:
case EPXAPP_PENDINGPOWERSTATE_USB_OFF:
{
DEBUGLOGLN("POWERSTATECHANGED %s", m_pendingPowerStateChange == EPXAPP_PENDINGPOWERSTATE_BLE_OFF ? "BLE OFF" : "USB OFF");
if (m_pendingPowerStateChange == EPXAPP_PENDINGPOWERSTATE_BLE_OFF)
m_powerState &= ~EPXAPP_POWERSTATE_ON_BLE;
else if (m_pendingPowerStateChange == EPXAPP_PENDINGPOWERSTATE_USB_OFF && m_connectedChannel != EPXAPP_CONNECTIONCHANNEL_BLE)
{
// If losing USB power then turn off auto-play animations
if (m_bAutoPlayOnUSBPower)
ToggleInvokedAutoPlay(false);
m_powerState &= ~EPXAPP_POWERSTATE_ON_USB;
}
break;
}
}
m_pendingPowerStateChange = EPXAPP_PENDINGPOWERSTATE_NONE;
}