20 #ifndef MBED_TICKER_API_H 21 #define MBED_TICKER_API_H 49 typedef void (*ticker_event_handler)(uint32_t
id);
63 uint32_t (*read)(void);
64 void (*disable_interrupt)(void);
65 void (*clear_interrupt)(void);
67 void (*fire_interrupt)(void);
77 #define MBED_TICKER_JUST_US (!MBED_CONF_TARGET_CUSTOM_TICKERS && DEVICE_USTICKER && !DEVICE_LPTICKER) 78 #define MBED_TICKER_JUST_LP (!MBED_CONF_TARGET_CUSTOM_TICKERS && DEVICE_LPTICKER && !DEVICE_USTICKER) 80 #if (MBED_TICKER_JUST_US && defined US_TICKER_PERIOD_NUM) || \ 81 (!MBED_CONF_TARGET_CUSTOM_TICKERS && defined US_TICKER_PERIOD_NUM && defined LP_TICKER_PERIOD_NUM && \ 82 US_TICKER_PERIOD_NUM == LP_TICKER_PERIOD_NUM) 83 #define MBED_TICKER_CONSTANT_PERIOD_NUM US_TICKER_PERIOD_NUM 84 #elif MBED_TICKER_JUST_LP && defined LP_TICKER_PERIOD_NUM 85 #define MBED_TICKER_CONSTANT_PERIOD_NUM LP_TICKER_PERIOD_NUM 88 #if (MBED_TICKER_JUST_US && defined US_TICKER_PERIOD_DEN) || \ 89 (!MBED_CONF_TARGET_CUSTOM_TICKERS && defined US_TICKER_PERIOD_DEN && defined LP_TICKER_PERIOD_DEN && \ 90 US_TICKER_PERIOD_DEN == LP_TICKER_PERIOD_DEN) 91 #define MBED_TICKER_CONSTANT_PERIOD_DEN US_TICKER_PERIOD_DEN 92 #elif MBED_TICKER_JUST_LP && defined LP_TICKER_PERIOD_DEN 93 #define MBED_TICKER_CONSTANT_PERIOD_DEN LP_TICKER_PERIOD_DEN 96 #if defined MBED_TICKER_CONSTANT_PERIOD_NUM && defined MBED_TICKER_CONSTANT_PERIOD_DEN 97 #define MBED_TICKER_CONSTANT_PERIOD 100 #if (MBED_TICKER_JUST_US && defined US_TICKER_MASK) || \ 101 (!MBED_CONF_TARGET_CUSTOM_TICKERS && defined US_TICKER_MASK && defined LP_TICKER_MASK && \ 102 US_TICKER_MASK == LP_TICKER_MASK) 103 #define MBED_TICKER_CONSTANT_MASK US_TICKER_MASK 104 #elif MBED_TICKER_JUST_LP && defined LP_TICKER_MASK 105 #define MBED_TICKER_CONSTANT_MASK LP_TICKER_MASK 113 #ifndef MBED_TICKER_CONSTANT_PERIOD_NUM 116 #ifndef MBED_TICKER_CONSTANT_PERIOD_DEN 119 #ifndef MBED_TICKER_CONSTANT_MASK 123 #if !(defined MBED_TICKER_CONSTANT_PERIOD && defined MBED_TICKER_CONSTANT_MASK) 127 #if MBED_TICKER_CONSTANT_PERIOD_DEN != 1 134 #ifndef MBED_TICKER_CONSTANT_PERIOD_NUM 137 #ifndef MBED_TICKER_CONSTANT_PERIOD_DEN void ticker_insert_event_us(const ticker_data_t *const ticker, ticker_event_t *obj, us_timestamp_t timestamp, uint32_t id)
Insert an event to the queue.
uint32_t tick_last_read
Last tick read.
void ticker_resume(const ticker_data_t *const ticker)
Resume this ticker.
uint32_t tick_remainder
Ticks that have not been added to base_time.
Information about the ticker implementation.
uint32_t id
TimerEvent object.
Ticker's interface structure - required API for a ticker.
ticker_event_t * head
A pointer to head.
ticker_event_queue_t * queue
Ticker's event queue.
uint32_t max_delta
Largest delta in ticks that can be used when scheduling.
bool runs_in_deep_sleep
Whether ticker operates in deep sleep.
int ticker_get_next_timestamp_us(const ticker_data_t *const ticker, us_timestamp_t *timestamp)
Read the next event's timestamp.
uint64_t us_timestamp_t
A us timestamp stored in a 64 bit integer.
int8_t period_num_shifts
If numerator is a value of 2^n, this is n, otherwise -1.
us_timestamp_t timestamp
Event's timestamp.
struct ticker_event_s ticker_event_t
Ticker's event structure.
Ticker's data structure.
uint32_t frequency
Frequency in Hz this ticker runs at.
struct ticker_event_s * next
Next event in the queue.
Ticker's event queue structure.
us_timestamp_t present_time
Store the timestamp used for present time.
Ticker's event structure.
uint32_t bitmask
Mask to be applied to time values read.
uint32_t bits
Number of bits this ticker supports.
timestamp_t ticker_read(const ticker_data_t *const ticker)
Read the current (relative) ticker's timestamp.
const ticker_interface_t * interface
Ticker's interface.
void ticker_irq_handler(const ticker_data_t *const ticker)
IRQ handler that goes through the events to trigger overdue events.
bool dispatching
The function ticker_irq_handler is dispatching.
us_timestamp_t ticker_read_us(const ticker_data_t *const ticker)
Read the current (absolute) ticker's timestamp.
int ticker_get_next_timestamp(const ticker_data_t *const ticker, timestamp_t *timestamp)
Read the next event's timestamp.
void ticker_insert_event(const ticker_data_t *const ticker, ticker_event_t *obj, timestamp_t timestamp, uint32_t id)
Insert an event to the queue.
bool initialized
Indicate if the instance is initialized.
uint32_t timestamp_t
Legacy format representing a timestamp in us.
bool suspended
Indicate if the instance is suspended.
void ticker_remove_event(const ticker_data_t *const ticker, ticker_event_t *obj)
Remove an event from the queue.
uint32_t period_den
Ratio of period to 1us, denominator.
ticker_event_handler event_handler
Event handler.
void ticker_suspend(const ticker_data_t *const ticker)
Suspend this ticker.
uint64_t max_delta_us
Largest delta in us that can be used when scheduling.
int8_t period_den_shifts
If denominator is a value of 2^n, this is n, otherwise -1.
uint32_t period_num
Ratio of period to 1us, numerator.
void ticker_set_handler(const ticker_data_t *const ticker, ticker_event_handler handler)
Initialize a ticker and set the event handler.