Smart Remote 3 nRF52 v1.2
event_bus.h
1 /*$$$LICENCE_NORDIC_STANDARD<2016>$$$*/
2 
9 #ifndef __EVENT_BUS_H__
10 #define __EVENT_BUS_H__
11 
12 #include <stdint.h>
13 #include <stdbool.h>
14 #include "sdk_errors.h"
15 
16 // Enable anonymous unions.
17 #if defined(__CC_ARM)
18  #pragma push
19  #pragma anon_unions
20 #elif defined(__ICCAR_)
21  #pragma language=save
22  #pragma language=extended
23 #elif defined(__GNUC__)
24  // Anonymous unions are supported by default.
25 #endif
26 
28 #define EVENT_GROUP(_event_type) (event_group_t)((unsigned long)(_event_type) >> 8)
29 
31 typedef enum
32 {
41 
43 typedef enum
44 {
45  /* System Events */
46  EVT_SYSTEM_BATTERY_LEVEL = (EVT_GROUP_SYSTEM << 8),
47  EVT_SYSTEM_GYRO_STATE,
48 
49  /* Keyboard input events */
50  EVT_KEY_UP = (EVT_GROUP_KEY << 8),
51  EVT_KEY_DOWN,
52  EVT_KEY_HELD,
53 
54  /* Relative motion events */
55  EVT_REL_X = (EVT_GROUP_REL << 8),
56  EVT_REL_Y,
57  EVT_REL_WHEEL,
58  EVT_REL_PAN,
59 
60  /* HID report events */
61  EVT_HID_REPORT_INPUT = (EVT_GROUP_HID << 8),
62  EVT_HID_REPORT_OUTPUT,
63  EVT_HID_REPORT_FEATURE,
64 
65  /* IR symbol */
66  EVT_IR_SYMBOL = (EVT_GROUP_IR << 8),
67 
68  /* Bluetooth events */
69  EVT_BT_CONN_STATE = (EVT_GROUP_BT << 8),
70  EVT_BT_ADV_STATE,
71  EVT_BT_ALERT_LEVEL,
72  EVT_BT_DFU_STATE,
73 
74  /* ATVV events */
75  EVT_ATVV_STATE = (EVT_GROUP_ATVV << 8),
76 } event_type_t;
77 
78 typedef struct
79 {
80  event_type_t type;
81 
82  union {
83  // Valid for EVT_GROUP_SYSTEM.
84  struct {
85  uint8_t data;
86  } system;
87 
88  // Valid for EVT_GROUP_KEY.
89  struct {
90  uint16_t id;
91  uint32_t down_timestamp;
92  } key;
93 
94  // Valid for EVT_GROUP_REL.
95  struct {
96  int16_t shift;
97  } rel;
98 
99  // Valid for EVT_GROUP_HID,
100  struct {
101  uint32_t usage;
102  int16_t report;
103  } hid;
104 
105  // Valid for EVT_GROUP_IR,
106  struct {
107  const sr3_ir_symbol_t *p_symbol;
108  } ir;
109 
110  // Valid for EVT_GROUP_BT,
111  struct {
112  uint8_t data;
113  uint16_t conn_id;
114  uint16_t peer_id;
115  } bt;
116 
117  // Valid for EVT_GROUP_ATVV
118  struct {
119  uint8_t type;
120  uint8_t rate_khz;
121  uint16_t conn_id;
122  uint16_t peer_id;
123  } atvv;
124  };
125 } event_t;
126 
127 #if defined(__CC_ARM)
128  #pragma pop
129 #elif defined(__ICCAR_)
130  #pragma language=restore
131 #elif defined(__GNUC__)
132  // Anonymous unions are supported by default.
133 #endif
134 
135 // EVT_BT_CONN_STATE data
136 #define BT_CONN_STATE_DISCONNECTED 0
137 #define BT_CONN_STATE_CONNECTED 1
138 #define BT_CONN_STATE_SECURED 2
139 
140 // EVT_BT_ADV_STATE data
141 #define BT_ADV_STATE_IDLE 0
142 #define BT_ADV_STATE_ACTIVE 1
143 #define BT_ADV_STATE_ACTIVE_BONDABLE 2
144 
145 // EVT_BT_DFU_STATE data
146 #define BT_DFU_STATE_STARTED 0
147 #define BT_DFU_STATE_FINISHED 1
148 #define BT_DFU_STATE_ERROR 2
149 
150 // EVT_ATVV_STATE type
151 #define EVT_ATVV_STATE_ENABLED 0
152 #define EVT_ATVV_STATE_DISABLED 1
153 #define EVT_ATVV_STATE_MIC_OPEN 2
154 #define EVT_ATVV_STATE_MIC_CLOSE 3
155 #define EVT_ATVV_STATE_SEARCH_TIMEOUT 4
163 typedef bool (*event_handler_t)(const event_t *p_event);
164 
171 ret_code_t event_bus_init(const event_handler_t *event_handlers_table);
172 
182 ret_code_t event_send(event_type_t event_type, ...);
183 
184 #endif

Documentation feedback | Developer Zone | Subscribe | Updated