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 ,
@@ -38,9 +40,20 @@ const ticker_data_t* get_lp_ticker_data(void)
38
40
return & lp_data ;
39
41
}
40
42
43
+ ticker_irq_handler_type set_lp_ticker_irq_handler (ticker_irq_handler_type ticker_irq_handler )
44
+ {
45
+ ticker_irq_handler_type prev_irq_handler = irq_handler ;
46
+
47
+ irq_handler = ticker_irq_handler ;
48
+
49
+ return prev_irq_handler ;
50
+ }
51
+
41
52
void lp_ticker_irq_handler (void )
42
53
{
43
- ticker_irq_handler (& lp_data );
54
+ if (irq_handler ) {
55
+ irq_handler (& lp_data );
56
+ }
44
57
}
45
58
46
59
#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 ,
@@ -36,7 +38,18 @@ const ticker_data_t* get_us_ticker_data(void)
36
38
return & us_data ;
37
39
}
38
40
41
+ ticker_irq_handler_type set_us_ticker_irq_handler (ticker_irq_handler_type ticker_irq_handler )
42
+ {
43
+ ticker_irq_handler_type prev_irq_handler = irq_handler ;
44
+
45
+ irq_handler = ticker_irq_handler ;
46
+
47
+ return prev_irq_handler ;
48
+ }
49
+
39
50
void us_ticker_irq_handler (void )
40
51
{
41
- ticker_irq_handler (& us_data );
52
+ if (irq_handler ) {
53
+ irq_handler (& us_data );
54
+ }
42
55
}
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