Пример #1
0
/*---------------------------   -------------------------*/
void system_sleep_countdown_detect()
{
    // 5min sleep 5*60 = 300 *1s
    if(( get_sleep_countdown() >= SYSTEM_SLEEP_DEADLINE) && (get_work_mode() == SYSTEM_DEFAULT_MODE))
    {
        clear_sleep_countdown();
        system_mcu_sleep_mode_operate();
    }
}
Пример #2
0
void GPIOTE_IRQHandler()
{
    if((NRF_GPIOTE->EVENTS_IN[0] == 1) && (NRF_GPIOTE->INTENSET & GPIOTE_INTENSET_IN0_Msk) )  
    {
        NRF_GPIOTE->EVENTS_IN[0] = 0;
        //NRF_GPIOTE->INTENSET  = GPIOTE_INTENSET_IN0_Disabled << GPIOTE_INTENSET_IN0_Pos;
        
            switch(get_work_mode())
            {
                // tap cyclical
            case SYSTEM_PEDOMETER_MODE :
                if(get_pedo_slice_handle_state() == true)
                    pedo_data_end_handle();
                
                clear_sleep_countdown();
                work_mode_switch();
                work_switch_set();                
                break;
                //
            case SYSTEM_USER_SLEEP_MODE:
                work_mode_switch();
                work_switch_set();  
                break;

            case SYSTEM_BLE_WORK_MODE:
                if(BL.E.CONNECT_STATE == false)          // ble is not paired with phone
                {
                    ble_close();
                }
                break;
            }
   
    }

    // Event causing the interrupt must be cleared.
    if((NRF_GPIOTE->EVENTS_IN[1] == 1) && (NRF_GPIOTE->INTENSET & GPIOTE_INTENSET_IN1_Msk)  )  
    {
        NRF_GPIOTE->EVENTS_IN[1] = 0;
        xprintf("GPIO INT.\r\n");
    }

}