/*
 * swtimer.h
 *
 *  Created on: Aug 4, 2017
 *      Author: anonymous
 */

#ifndef APP_INCLUDE_PM_SWTIMER_H_
#define APP_INCLUDE_PM_SWTIMER_H_

void swtmr_cb_register(void* timer_cb_ptr, uint8 suspend_policy);

#define SWTIMER_RESUME    0 //save remaining time
#define SWTIMER_RESTART   1 //use timer_period as remaining time
#define SWTIMER_IMMEDIATE 2 //fire timer immediately after resume
#define SWTIMER_DROP      3 //disarm timer, do not resume

#if defined(TIMER_SUSPEND_ENABLE)
#define SWTIMER_REG_CB(cb_ptr, suspend_policy) do{ \
    static bool cb_ptr##_registered_flag;\
    if(!cb_ptr##_registered_flag){ \
      cb_ptr##_registered_flag = true; \
      swtmr_cb_register(cb_ptr, suspend_policy);\
    } \
}while(0);
#else
#define SWTIMER_REG_CB(...)
#endif

#endif /* APP_INCLUDE_PM_SWTIMER_H_ */