Deep Sleep Mode and wake Up(standby mode) on Button press and run in normal mode (nRF9160)

Hi,

I am using thingy91 with NCS V2.4.0 SDK.

I have enabled settings for my devices mode store in flash. for mode of my device i created one settings variable.

first time power up device by default in deep sleep mode. and when we press button more then x time. device wake up and write setting flag -> normal mode. and reboot. 

after every power cycle device boot in normal mode. that cycle i am trying to implement.

void enter_deep_sleep(void)
{
    int err = 0;
    const struct pm_state_info si = {PM_STATE_SOFT_OFF, 0, 0};
	printk("Entering deep sleep\n");
	k_sleep(K_MSEC(100)); // Add a delay to allow logs to be printed

    // pm_state_force(0, &si);
    // pm_system_suspend(0, 0);
    // nrf_regulators_system_off(NRF_REGULATORS_NS);
	printk("Shutting down modem\n");
	err = nrf_modem_at_printf("AT+CFUN=0");
	if (err) {
		printk("AT+CFUN failed\n");
		return 0;
	}
	nrf_modem_lib_shutdown();
    // lte_lc_power_off();
    k_sleep(K_SECONDS(1));
    // nrf_regulators_system_off(NRF_REGULATORS_NS);
    pm_state_set(PM_STATE_SOFT_OFF, 0);
    // pm_system_suspend(0, 0);
    // nrf_power_system_off(NRF_POWER);
}

I have try this code for enter sleep mode. before enter_deep_sleep intialise button interrupt and call back function detect x sec botton precss and change setting flag.

this scenario work for Normal mode -> sleep mode. but sleep mode -> normal mode not able to detect Button state. so not working.

first of all i need to know this flow is fine as per my requirement. if not then give some suggestion and also let me know what things missing in flow.

Thanks

Parth

Related