File tree Expand file tree Collapse file tree 4 files changed +54
-2
lines changed Expand file tree Collapse file tree 4 files changed +54
-2
lines changed Original file line number Diff line number Diff line change @@ -34,6 +34,19 @@ extern "C" {
34
34
* @{
35
35
*/
36
36
37
+ typedef void (* ticker_irq_handler_type )(const ticker_data_t * const );
38
+
39
+ /** Set low power ticker IRQ handler
40
+ *
41
+ * @param ticker_irq_handler IRQ handler to be connected
42
+ *
43
+ * @return previous ticker IRQ handler
44
+ *
45
+ * @note by default IRQ handler is set to ticker_irq_handler()
46
+ *
47
+ */
48
+ ticker_irq_handler_type set_lp_ticker_irq_handler (ticker_irq_handler_type ticker_irq_handler );
49
+
37
50
/** Get low power ticker's data
38
51
*
39
52
* @return The low power ticker data
Original file line number Diff line number Diff line change 19
19
20
20
static ticker_event_queue_t events = { 0 };
21
21
22
+ static ticker_irq_handler_type irq_handler = ticker_irq_handler ;
23
+
22
24
static const ticker_interface_t lp_interface = {
23
25
.init = lp_ticker_init ,
24
26
.read = lp_ticker_read ,
@@ -39,9 +41,20 @@ const ticker_data_t* get_lp_ticker_data(void)
39
41
return & lp_data ;
40
42
}
41
43
44
+ ticker_irq_handler_type set_lp_ticker_irq_handler (ticker_irq_handler_type ticker_irq_handler )
45
+ {
46
+ ticker_irq_handler_type prev_irq_handler = irq_handler ;
47
+
48
+ irq_handler = ticker_irq_handler ;
49
+
50
+ return prev_irq_handler ;
51
+ }
52
+
42
53
void lp_ticker_irq_handler (void )
43
54
{
44
- ticker_irq_handler (& lp_data );
55
+ if (irq_handler ) {
56
+ irq_handler (& lp_data );
57
+ }
45
58
}
46
59
47
60
#endif
Original file line number Diff line number Diff line change 17
17
18
18
static ticker_event_queue_t events = { 0 };
19
19
20
+ static ticker_irq_handler_type irq_handler = ticker_irq_handler ;
21
+
20
22
static const ticker_interface_t us_interface = {
21
23
.init = us_ticker_init ,
22
24
.read = us_ticker_read ,
@@ -37,7 +39,18 @@ const ticker_data_t* get_us_ticker_data(void)
37
39
return & us_data ;
38
40
}
39
41
42
+ ticker_irq_handler_type set_us_ticker_irq_handler (ticker_irq_handler_type ticker_irq_handler )
43
+ {
44
+ ticker_irq_handler_type prev_irq_handler = irq_handler ;
45
+
46
+ irq_handler = ticker_irq_handler ;
47
+
48
+ return prev_irq_handler ;
49
+ }
50
+
40
51
void us_ticker_irq_handler (void )
41
52
{
42
- ticker_irq_handler (& us_data );
53
+ if (irq_handler ) {
54
+ irq_handler (& us_data );
55
+ }
43
56
}
Original file line number Diff line number Diff line change @@ -31,6 +31,19 @@ extern "C" {
31
31
* @{
32
32
*/
33
33
34
+ typedef void (* ticker_irq_handler_type )(const ticker_data_t * const );
35
+
36
+ /** Set ticker IRQ handler
37
+ *
38
+ * @param ticker_irq_handler IRQ handler to be connected
39
+ *
40
+ * @return previous ticker IRQ handler
41
+ *
42
+ * @note by default IRQ handler is set to ticker_irq_handler()
43
+ *
44
+ */
45
+ ticker_irq_handler_type set_us_ticker_irq_handler (ticker_irq_handler_type ticker_irq_handler );
46
+
34
47
/** Get ticker's data
35
48
*
36
49
* @return The low power ticker data
You can’t perform that action at this time.
0 commit comments