Revision 1e5f7648 modules/PowerManagement_1-1/module.c
modules/PowerManagement_1-1/module.c | ||
---|---|---|
18 | 18 |
|
19 | 19 |
#include "module.h" |
20 | 20 |
|
21 |
#include <amiroos.h> |
|
22 |
|
|
21 | 23 |
/*===========================================================================*/ |
22 | 24 |
/** |
23 | 25 |
* @name Module specific functions |
24 | 26 |
* @{ |
25 | 27 |
*/ |
26 | 28 |
/*===========================================================================*/ |
27 |
#include <amiroos.h> |
|
28 |
|
|
29 |
/** |
|
30 |
* @brief Interrupt service routine callback for I/O interrupt signals. |
|
31 |
* |
|
32 |
* @param args Channel on which the interrupt was encountered. |
|
33 |
*/ |
|
34 |
static void _modulePalIsrCallback(void *args) { |
|
35 |
chSysLockFromISR(); |
|
36 |
chEvtBroadcastFlagsI(&aos.events.io, (1 << (*(uint16_t*)args))); |
|
37 |
chSysUnlockFromISR(); |
|
38 |
|
|
39 |
return; |
|
40 |
} |
|
41 | 29 |
|
42 | 30 |
/** @} */ |
43 | 31 |
|
... | ... | |
69 | 57 |
/* btr */ CAN_BTR_SJW(1) | CAN_BTR_TS2(3) | CAN_BTR_TS1(15) | CAN_BTR_BRP(1), |
70 | 58 |
}; |
71 | 59 |
|
72 |
aos_interrupt_cfg_t moduleIntConfig[14] = { |
|
73 |
/* channel 1 */ { // IR_INT1_N: must be enabled explicitely |
|
74 |
/* port */ GPIOB, |
|
75 |
/* pad */ GPIOB_IR_INT1_N, |
|
76 |
/* flags */ 0, |
|
77 |
/* mode */ APAL2CH_EDGE(VCNL4020_LLD_INT_EDGE), |
|
78 |
/* callback */ _modulePalIsrCallback, |
|
79 |
/* cb arg */ 1, |
|
80 |
}, |
|
81 |
/* channel 2 */ { // GAUGE_BATLOW1: must be enabled explicitely |
|
82 |
/* port */ GPIOC, |
|
83 |
/* pad */ GPIOC_GAUGE_BATLOW1, |
|
84 |
/* flags */ 0, |
|
85 |
/* mode */ PAL_EVENT_MODE_RISING_EDGE, |
|
86 |
/* callback */ _modulePalIsrCallback, |
|
87 |
/* cb arg */ 2, |
|
88 |
}, |
|
89 |
/* channel 3 */ { // GAUGE_BATGD1_N: must be enabled explicitely |
|
90 |
/* port */ GPIOC, |
|
91 |
/* pad */ GPIOC_GAUGE_BATGD1_N, |
|
92 |
/* flags */ 0, |
|
93 |
/* mode */ PAL_EVENT_MODE_RISING_EDGE, |
|
94 |
/* callback */ _modulePalIsrCallback, |
|
95 |
/* cb arg */ 3, |
|
96 |
}, |
|
97 |
/* channel 4 */ { // SYS_UART_DN: automatic interrupt on event |
|
98 |
/* port */ GPIOB, |
|
99 |
/* pad */ GPIOB_SYS_UART_DN, |
|
100 |
/* flags */ AOS_INTERRUPT_AUTOSTART, |
|
101 |
/* mode */ PAL_EVENT_MODE_BOTH_EDGES, |
|
102 |
/* callback */ _modulePalIsrCallback, |
|
103 |
/* cb arg */ 4, |
|
104 |
}, |
|
105 |
/* channel 5 */ { // IR_INT2_N: must be enabled explicitely |
|
106 |
/* port */ GPIOC, |
|
107 |
/* pad */ GPIOC_IR_INT2_N, |
|
108 |
/* flags */ 0, |
|
109 |
/* mode */ APAL2CH_EDGE(VCNL4020_LLD_INT_EDGE), |
|
110 |
/* callback */ _modulePalIsrCallback, |
|
111 |
/* cb arg */ 5, |
|
112 |
}, |
|
113 |
/* channel 6 */ { // TOUCH_INT: must be enabled explicitely |
|
114 |
/* port */ GPIOC, |
|
115 |
/* pad */ GPIOC_TOUCH_INT_N, |
|
116 |
/* flags */ 0, |
|
117 |
/* mode */ APAL2CH_EDGE(MPR121_LLD_INT_EDGE), |
|
118 |
/* callback */ _modulePalIsrCallback, |
|
119 |
/* cb arg */ 6, |
|
120 |
}, |
|
121 |
/* channel 7 */ { // GAUGE_BATLOW2: must be enabled explicitely |
|
122 |
/* port */ GPIOB, |
|
123 |
/* pad */ GPIOB_GAUGE_BATLOW2, |
|
124 |
/* flags */ 0, |
|
125 |
/* mode */ PAL_EVENT_MODE_RISING_EDGE, |
|
126 |
/* callback */ _modulePalIsrCallback, |
|
127 |
/* cb arg */ 7, |
|
128 |
}, |
|
129 |
/* channel 8 */ { // GAUGE_BATGD2_N: must be enabled explicitely |
|
130 |
/* port */ GPIOB, |
|
131 |
/* pad */ GPIOB_GAUGE_BATGD2_N, |
|
132 |
/* flags */ 0, |
|
133 |
/* mode */ PAL_EVENT_MODE_RISING_EDGE, |
|
134 |
/* callback */ _modulePalIsrCallback, |
|
135 |
/* cb arg */ 8, |
|
136 |
}, |
|
137 |
/* channel 9 */ { // PATH_DC: must be enabled explicitely |
|
138 |
/* port */ GPIOC, |
|
139 |
/* pad */ GPIOC_PATH_DC, |
|
140 |
/* flags */ 0, |
|
141 |
/* mode */ PAL_EVENT_MODE_BOTH_EDGES, |
|
142 |
/* callback */ _modulePalIsrCallback, |
|
143 |
/* cb arg */ 9, |
|
144 |
}, |
|
145 |
/* channel 10 */ { // SYS_SPI_DIR: must be enabled explicitely |
|
146 |
/* port */ GPIOC, |
|
147 |
/* pad */ GPIOC_SYS_SPI_DIR, |
|
148 |
/* flags */ 0, |
|
149 |
/* mode */ PAL_EVENT_MODE_BOTH_EDGES, |
|
150 |
/* callback */ _modulePalIsrCallback, |
|
151 |
/* cb arg */ 10, |
|
152 |
}, |
|
153 |
/* channel 11 */ { // SYS_SYNC_N: must be enabled explicitely |
|
154 |
/* port */ GPIOC, |
|
155 |
/* pad */ GPIOC_SYS_INT_N, // TODO: check this |
|
156 |
/* flags */ AOS_INTERRUPT_AUTOSTART, |
|
157 |
/* mode */ PAL_EVENT_MODE_BOTH_EDGES, |
|
158 |
/* callback */ _modulePalIsrCallback, |
|
159 |
/* cb arg */ 11, |
|
160 |
}, |
|
161 |
/* channel 12 */ { // SYS_PD_N: must be enabled explicitely |
|
162 |
/* port */ GPIOC, |
|
163 |
/* pad */ GPIOC_SYS_PD_N, |
|
164 |
/* flags */ AOS_INTERRUPT_AUTOSTART, |
|
165 |
/* mode */ PAL_EVENT_MODE_FALLING_EDGE, |
|
166 |
/* callback */ _modulePalIsrCallback, |
|
167 |
/* cb arg */ 12, |
|
168 |
}, |
|
169 |
/* channel 13 */ { // SYS_WARMRST_N: must be enabled explicitely |
|
170 |
/* port */ GPIOC, |
|
171 |
/* pad */ GPIOC_SYS_WARMRST_N, |
|
172 |
/* flags */ AOS_INTERRUPT_AUTOSTART, |
|
173 |
/* mode */ PAL_EVENT_MODE_FALLING_EDGE, |
|
174 |
/* callback */ _modulePalIsrCallback, |
|
175 |
/* cb arg */ 13, |
|
176 |
}, |
|
177 |
/* channel 14 */ { // SYS_UART_UP: must be enabled explicitely |
|
178 |
/* port */ GPIOB, |
|
179 |
/* pad */ GPIOB_SYS_UART_UP, |
|
180 |
/* flags */ AOS_INTERRUPT_AUTOSTART, |
|
181 |
/* mode */ PAL_EVENT_MODE_BOTH_EDGES, |
|
182 |
/* callback */ _modulePalIsrCallback, |
|
183 |
/* cb arg */ 14, |
|
184 |
}, |
|
185 |
}; |
|
186 |
|
|
187 |
aos_interrupt_driver_t moduleIntDriver = { |
|
188 |
/* config */ NULL, |
|
189 |
/* interrupts */ 14, |
|
190 |
}; |
|
191 |
|
|
192 | 60 |
I2CConfig moduleHalI2cProxPm18Pm33GaugeRearConfig = { |
193 | 61 |
/* I²C mode */ OPMODE_I2C, |
194 | 62 |
/* frequency */ 400000, // TODO: replace with some macro (-> ChibiOS/HAL) |
... | ... | |
246 | 114 |
*/ |
247 | 115 |
/*===========================================================================*/ |
248 | 116 |
|
249 |
apalGpio_t moduleGpioSysRegEn = { |
|
117 |
/** |
|
118 |
* @brief SYS_REG_EN output signal GPIO. |
|
119 |
*/ |
|
120 |
static apalGpio_t _gpioSysRegEn = { |
|
250 | 121 |
/* port */ GPIOA, |
251 | 122 |
/* pad */ GPIOA_SYS_REG_EN, |
252 | 123 |
}; |
124 |
apalControlGpio_t moduleSysRegEn = { |
|
125 |
/* GPIO */ &_gpioSysRegEn, |
|
126 |
/* meta */ { |
|
127 |
/* direction */ APAL_GPIO_DIRECTION_OUTPUT, |
|
128 |
/* active state */ APAL_GPIO_ACTIVE_HIGH, |
|
129 |
/* interrupt edge */ APAL_GPIO_EDGE_NONE, |
|
130 |
}, |
|
131 |
}; |
|
253 | 132 |
|
254 |
apalGpio_t moduleGpioIrInt1 = { |
|
133 |
/** |
|
134 |
* @brief IR_INT1 input signal GPIO. |
|
135 |
*/ |
|
136 |
static apalGpio_t _gpioIrInt1 = { |
|
255 | 137 |
/* port */ GPIOB, |
256 | 138 |
/* pad */ GPIOB_IR_INT1_N, |
257 | 139 |
}; |
140 |
apalControlGpio_t moduleGpioIrInt1 = { |
|
141 |
/* GPIO */ &_gpioIrInt1, |
|
142 |
/* meta */ { |
|
143 |
/* direction */ APAL_GPIO_DIRECTION_INPUT, |
|
144 |
/* active state */ (VCNL4020_LLD_INT_EDGE == APAL_GPIO_EDGE_RISING) ? APAL_GPIO_ACTIVE_HIGH : APAL_GPIO_ACTIVE_LOW, |
|
145 |
/* interrupt edge */ VCNL4020_LLD_INT_EDGE, |
|
146 |
}, |
|
147 |
}; |
|
258 | 148 |
|
259 |
apalGpio_t moduleGpioPowerEn = { |
|
149 |
/** |
|
150 |
* @brief POWER_EN output signal GPIO. |
|
151 |
*/ |
|
152 |
static apalGpio_t _gpioPowerEn = { |
|
260 | 153 |
/* port */ GPIOB, |
261 | 154 |
/* pad */ GPIOB_POWER_EN, |
262 | 155 |
}; |
156 |
apalControlGpio_t moduleGpioPowerEn = { |
|
157 |
/* GPIO */ &_gpioPowerEn, |
|
158 |
/* meta */ { |
|
159 |
/* direction */ APAL_GPIO_DIRECTION_OUTPUT, |
|
160 |
/* active state */ APAL_GPIO_ACTIVE_HIGH, |
|
161 |
/* interrupt edge */ APAL_GPIO_EDGE_NONE, |
|
162 |
}, |
|
163 |
}; |
|
263 | 164 |
|
264 |
apalGpio_t moduleGpioSysUartDn = { |
|
165 |
/** |
|
166 |
* @brief SYS_UART_DN bidirectional signal GPIO. |
|
167 |
*/ |
|
168 |
static apalGpio_t _gpioSysUartDn = { |
|
265 | 169 |
/* port */ GPIOB, |
266 | 170 |
/* pad */ GPIOB_SYS_UART_DN, |
267 | 171 |
}; |
172 |
apalControlGpio_t moduleGpioSysUartDn = { |
|
173 |
/* GPIO */ &_gpioSysUartDn, |
|
174 |
/* meta */ { |
|
175 |
/* direction */ APAL_GPIO_DIRECTION_BIDIRECTIONAL, |
|
176 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
177 |
/* interrupt edge */ APAL_GPIO_EDGE_BOTH, |
|
178 |
}, |
|
179 |
}; |
|
268 | 180 |
|
269 |
apalGpio_t moduleGpioChargeStat2A = { |
|
181 |
/** |
|
182 |
* @brief CHARGE_STAT2A input signal GPIO. |
|
183 |
*/ |
|
184 |
static apalGpio_t _gpioChargeStat2A = { |
|
270 | 185 |
/* port */ GPIOB, |
271 | 186 |
/* pad */ GPIOB_CHARGE_STAT2A, |
272 | 187 |
}; |
188 |
apalControlGpio_t moduleGpioChargeStat2A = { |
|
189 |
/* GPIO */ &_gpioChargeStat2A, |
|
190 |
/* meta */ { |
|
191 |
/* direction */ APAL_GPIO_DIRECTION_INPUT, |
|
192 |
/* active state */ BQ24103A_LLD_CHARGE_STATUS_GPIO_ACTIVE_STATE, |
|
193 |
/* interrupt edge */ APAL_GPIO_EDGE_NONE, |
|
194 |
}, |
|
195 |
}; |
|
273 | 196 |
|
274 |
apalGpio_t moduleGpioGaugeBatLow2 = { |
|
197 |
/** |
|
198 |
* @brief GAUGE_BATLOW2 input signal GPIO. |
|
199 |
*/ |
|
200 |
static apalGpio_t _gpioGaugeBatLow2 = { |
|
275 | 201 |
/* port */ GPIOB, |
276 | 202 |
/* pad */ GPIOB_GAUGE_BATLOW2, |
277 | 203 |
}; |
204 |
apalControlGpio_t moduleGpioGaugeBatLow2 = { |
|
205 |
/* GPIO */ &_gpioGaugeBatLow2, |
|
206 |
/* meta */ { |
|
207 |
/* direction */ APAL_GPIO_DIRECTION_INPUT, |
|
208 |
/* active state */ BQ27500_LLD_BATLOW_ACTIVE_STATE, |
|
209 |
/* interrupt edge */ APAL_GPIO_EDGE_BOTH, |
|
210 |
}, |
|
211 |
}; |
|
278 | 212 |
|
279 |
apalGpio_t moduleGpioGaugeBatGd2 = { |
|
213 |
/** |
|
214 |
* @brief GAUGE_BATGD2 input signal GPIO. |
|
215 |
*/ |
|
216 |
static apalGpio_t _gpioGaugeBatGd2 = { |
|
280 | 217 |
/* port */ GPIOB, |
281 | 218 |
/* pad */ GPIOB_GAUGE_BATGD2_N, |
282 | 219 |
}; |
220 |
apalControlGpio_t moduleGpioGaugeBatGd2 = { |
|
221 |
/* GPIO */ &_gpioGaugeBatGd2, |
|
222 |
/* meta */ { |
|
223 |
/* direction */ APAL_GPIO_DIRECTION_INPUT, |
|
224 |
/* active state */ BQ27500_LLD_BATGOOD_ACTIVE_STATE, |
|
225 |
/* interrupt edge */ APAL_GPIO_EDGE_BOTH, |
|
226 |
}, |
|
227 |
}; |
|
283 | 228 |
|
284 |
apalGpio_t moduleGpioLed = { |
|
229 |
/** |
|
230 |
* @brief LED output signal GPIO. |
|
231 |
*/ |
|
232 |
static apalGpio_t _gpioLed = { |
|
285 | 233 |
/* port */ GPIOB, |
286 | 234 |
/* pad */ GPIOB_LED, |
287 | 235 |
}; |
236 |
apalControlGpio_t moduleGpioLed = { |
|
237 |
/* GPIO */ &_gpioLed, |
|
238 |
/* meta */ { |
|
239 |
/* direction */ APAL_GPIO_DIRECTION_OUTPUT, |
|
240 |
/* active state */ LED_LLD_GPIO_ACTIVE_STATE, |
|
241 |
/* interrupt edge */ APAL_GPIO_EDGE_NONE, |
|
242 |
}, |
|
243 |
}; |
|
288 | 244 |
|
289 |
apalGpio_t moduleGpioSysUartUp = { |
|
245 |
/** |
|
246 |
* @brief SYS_UART_UP bidirectional signal GPIO. |
|
247 |
*/ |
|
248 |
static apalGpio_t _gpioSysUartUp = { |
|
290 | 249 |
/* port */ GPIOB, |
291 | 250 |
/* pad */ GPIOB_SYS_UART_UP, |
292 | 251 |
}; |
252 |
apalControlGpio_t moduleGpioSysUartUp = { |
|
253 |
/* GPIO */ &_gpioSysUartUp, |
|
254 |
/* meta */ { |
|
255 |
/* direction */ APAL_GPIO_DIRECTION_BIDIRECTIONAL, |
|
256 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
257 |
/* interrupt edge */ APAL_GPIO_EDGE_BOTH, |
|
258 |
}, |
|
259 |
}; |
|
293 | 260 |
|
294 |
apalGpio_t moduleGpioChargeStat1A = { |
|
261 |
/** |
|
262 |
* @brief CHARGE_STAT1A input signal GPIO. |
|
263 |
*/ |
|
264 |
static apalGpio_t _gpioChargeStat1A = { |
|
295 | 265 |
/* port */ GPIOC, |
296 | 266 |
/* pad */ GPIOC_CHARGE_STAT1A, |
297 | 267 |
}; |
268 |
apalControlGpio_t moduleGpioChargeStat1A = { |
|
269 |
/* GPIO */ &_gpioChargeStat1A, |
|
270 |
/* meta */ { |
|
271 |
/* direction */ APAL_GPIO_DIRECTION_INPUT, |
|
272 |
/* active state */ BQ24103A_LLD_CHARGE_STATUS_GPIO_ACTIVE_STATE, |
|
273 |
/* interrupt edge */ APAL_GPIO_EDGE_NONE, |
|
274 |
}, |
|
275 |
}; |
|
298 | 276 |
|
299 |
apalGpio_t moduleGpioGaugeBatLow1 = { |
|
277 |
/** |
|
278 |
* @brief GAUGE_BATLOW1 input signal GPIO. |
|
279 |
*/ |
|
280 |
static apalGpio_t _gpioGaugeBatLow1 = { |
|
300 | 281 |
/* port */ GPIOC, |
301 | 282 |
/* pad */ GPIOC_GAUGE_BATLOW1, |
302 | 283 |
}; |
284 |
apalControlGpio_t moduleGpioGaugeBatLow1 = { |
|
285 |
/* GPIO */ &_gpioGaugeBatLow1, |
|
286 |
/* meta */ { |
|
287 |
/* direction */ APAL_GPIO_DIRECTION_INPUT, |
|
288 |
/* active state */ BQ27500_LLD_BATLOW_ACTIVE_STATE, |
|
289 |
/* interrupt edge */ APAL_GPIO_EDGE_BOTH, |
|
290 |
}, |
|
291 |
}; |
|
303 | 292 |
|
304 |
apalGpio_t moduleGpioGaugeBatGd1 = { |
|
293 |
/** |
|
294 |
* @brief GAUGE_BATGD1 input signal GPIO. |
|
295 |
*/ |
|
296 |
static apalGpio_t _gpioGaugeBatGd1 = { |
|
305 | 297 |
/* port */ GPIOC, |
306 | 298 |
/* pad */ GPIOC_GAUGE_BATGD1_N, |
307 | 299 |
}; |
300 |
apalControlGpio_t moduleGpioGaugeBatGd1 = { |
|
301 |
/* GPIO */ &_gpioGaugeBatGd1, |
|
302 |
/* meta */ { |
|
303 |
/* direction */ APAL_GPIO_DIRECTION_INPUT, |
|
304 |
/* active state */ BQ27500_LLD_BATGOOD_ACTIVE_STATE, |
|
305 |
/* interrupt edge */ APAL_GPIO_EDGE_BOTH, |
|
306 |
}, |
|
307 |
}; |
|
308 | 308 |
|
309 |
apalGpio_t moduleGpioChargeEn1 = { |
|
309 |
/** |
|
310 |
* @brief CHARG_EN1 output signal GPIO. |
|
311 |
*/ |
|
312 |
static apalGpio_t _gpioChargeEn1 = { |
|
310 | 313 |
/* port */ GPIOC, |
311 | 314 |
/* pad */ GPIOC_CHARGE_EN1_N, |
312 | 315 |
}; |
316 |
apalControlGpio_t moduleGpioChargeEn1 = { |
|
317 |
/* GPIO */ &_gpioChargeEn1, |
|
318 |
/* meta */ { |
|
319 |
/* direction */ APAL_GPIO_DIRECTION_OUTPUT, |
|
320 |
/* active state */ BQ24103A_LLD_ENABLED_GPIO_ACTIVE_STATE, |
|
321 |
/* interrupt edge */ APAL_GPIO_EDGE_NONE, |
|
322 |
}, |
|
323 |
}; |
|
313 | 324 |
|
314 |
apalGpio_t moduleGpioIrInt2 = { |
|
325 |
/** |
|
326 |
* @brief IR_INT2 input signal GPIO. |
|
327 |
*/ |
|
328 |
static apalGpio_t _gpioIrInt2 = { |
|
315 | 329 |
/* port */ GPIOC, |
316 | 330 |
/* pad */ GPIOC_IR_INT2_N, |
317 | 331 |
}; |
332 |
apalControlGpio_t moduleGpioIrInt2 = { |
|
333 |
/* GPIO */ &_gpioIrInt2, |
|
334 |
/* meta */ { |
|
335 |
/* direction */ APAL_GPIO_DIRECTION_INPUT, |
|
336 |
/* active state */ (VCNL4020_LLD_INT_EDGE == APAL_GPIO_EDGE_RISING) ? APAL_GPIO_ACTIVE_HIGH : APAL_GPIO_ACTIVE_LOW, |
|
337 |
/* interrupt edge */ VCNL4020_LLD_INT_EDGE, |
|
338 |
}, |
|
339 |
}; |
|
318 | 340 |
|
319 |
apalGpio_t moduleGpioTouchInt = { |
|
341 |
/** |
|
342 |
* @brief TOUCH_INT input signal GPIO. |
|
343 |
*/ |
|
344 |
static apalGpio_t _gpioTouchInt = { |
|
320 | 345 |
/* port */ GPIOC, |
321 | 346 |
/* pad */ GPIOC_TOUCH_INT_N, |
322 | 347 |
}; |
348 |
apalControlGpio_t moduleGpioTouchInt = { |
|
349 |
/* GPIO */ &_gpioTouchInt, |
|
350 |
/* meta */ { |
|
351 |
/* direction */ APAL_GPIO_DIRECTION_INPUT, |
|
352 |
/* active state */ (MPR121_LLD_INT_EDGE == APAL_GPIO_EDGE_RISING) ? APAL_GPIO_ACTIVE_HIGH : APAL_GPIO_ACTIVE_LOW, |
|
353 |
/* interrupt edge */ MPR121_LLD_INT_EDGE, |
|
354 |
}, |
|
355 |
}; |
|
323 | 356 |
|
324 |
apalGpio_t moduleGpioSysDone = { |
|
357 |
/** |
|
358 |
* @brief SYS_DONE input signal GPIO. |
|
359 |
*/ |
|
360 |
static apalGpio_t _gpioSysDone = { |
|
325 | 361 |
/* port */ GPIOC, |
326 | 362 |
/* pad */ GPIOC_SYS_DONE, |
327 | 363 |
}; |
364 |
apalControlGpio_t moduleGpioSysDone = { |
|
365 |
/* GPIO */ &_gpioSysDone, |
|
366 |
/* meta */ { |
|
367 |
/* direction */ APAL_GPIO_DIRECTION_INPUT, |
|
368 |
/* active state */ APAL_GPIO_ACTIVE_HIGH, |
|
369 |
/* interrupt edge */ APAL_GPIO_EDGE_NONE, |
|
370 |
}, |
|
371 |
}; |
|
328 | 372 |
|
329 |
apalGpio_t moduleGpioSysProg = { |
|
373 |
/** |
|
374 |
* @brief SYS_PROG output signal GPIO. |
|
375 |
*/ |
|
376 |
static apalGpio_t _gpioSysProg = { |
|
330 | 377 |
/* port */ GPIOC, |
331 | 378 |
/* pad */ GPIOC_SYS_PROG_N, |
332 | 379 |
}; |
380 |
apalControlGpio_t moduleGpioSysProg = { |
|
381 |
/* GPIO */ &_gpioSysProg, |
|
382 |
/* meta */ { |
|
383 |
/* direction */ APAL_GPIO_DIRECTION_OUTPUT, |
|
384 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
385 |
/* interrupt edge */ APAL_GPIO_EDGE_NONE, |
|
386 |
}, |
|
387 |
}; |
|
333 | 388 |
|
334 |
apalGpio_t moduleGpioPathDc = { |
|
389 |
/** |
|
390 |
* @brief PATH_DC input signal GPIO. |
|
391 |
*/ |
|
392 |
static apalGpio_t _gpioPathDc = { |
|
335 | 393 |
/* port */ GPIOC, |
336 | 394 |
/* pad */ GPIOC_PATH_DC, |
337 | 395 |
}; |
396 |
apalControlGpio_t moduleGpioPathDc = { |
|
397 |
/* GPIO */ &_gpioPathDc, |
|
398 |
/* meta */ { |
|
399 |
/* direction */ APAL_GPIO_DIRECTION_INPUT, |
|
400 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
401 |
/* interrupt edge */ APAL_GPIO_EDGE_BOTH, |
|
402 |
}, |
|
403 |
}; |
|
338 | 404 |
|
339 |
apalGpio_t moduleGpioSysSpiDir = { |
|
405 |
/** |
|
406 |
* @brief SYS_SPI_DIR bidirectional signal GPIO. |
|
407 |
*/ |
|
408 |
static apalGpio_t _gpioSysSpiDir = { |
|
340 | 409 |
/* port */ GPIOC, |
341 | 410 |
/* pad */ GPIOC_SYS_SPI_DIR, |
342 | 411 |
}; |
412 |
apalControlGpio_t moduleGpioSysSpiDir = { |
|
413 |
/* GPIO */ &_gpioSysSpiDir, |
|
414 |
/* meta */ { |
|
415 |
/* direction */ APAL_GPIO_DIRECTION_BIDIRECTIONAL, |
|
416 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
417 |
/* interrupt edge */ APAL_GPIO_EDGE_FALLING, |
|
418 |
}, |
|
419 |
}; |
|
343 | 420 |
|
344 |
apalGpio_t moduleGpioSysSync = { |
|
421 |
/** |
|
422 |
* @brief SYS_SYNC bidirectional signal GPIO. |
|
423 |
*/ |
|
424 |
static apalGpio_t _gpioSysSync = { |
|
345 | 425 |
/* port */ GPIOC, |
346 | 426 |
/* pad */ GPIOC_SYS_INT_N, |
347 | 427 |
}; |
428 |
apalControlGpio_t moduleGpioSysSync = { |
|
429 |
/* GPIO */ &_gpioSysSync, |
|
430 |
/* meta */ { |
|
431 |
/* direction */ APAL_GPIO_DIRECTION_BIDIRECTIONAL, |
|
432 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
433 |
/* interrupt edge */ APAL_GPIO_EDGE_BOTH, |
|
434 |
}, |
|
435 |
}; |
|
348 | 436 |
|
349 |
apalGpio_t moduleGpioSysPd = { |
|
437 |
/** |
|
438 |
* @brief SYS_PD bidirectional signal GPIO. |
|
439 |
*/ |
|
440 |
static apalGpio_t _gpioSysPd = { |
|
350 | 441 |
/* port */ GPIOC, |
351 | 442 |
/* pad */ GPIOC_SYS_PD_N, |
352 | 443 |
}; |
444 |
apalControlGpio_t moduleGpioSysPd = { |
|
445 |
/* GPIO */ &_gpioSysPd, |
|
446 |
/* meta */ { |
|
447 |
/* direction */ APAL_GPIO_DIRECTION_BIDIRECTIONAL, |
|
448 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
449 |
/* interrupt edge */ APAL_GPIO_EDGE_BOTH, |
|
450 |
}, |
|
451 |
}; |
|
353 | 452 |
|
354 |
apalGpio_t moduleGpioSysWarmrst = { |
|
453 |
/** |
|
454 |
* @brief SYS_WARMRST bidirectional signal GPIO. |
|
455 |
*/ |
|
456 |
static apalGpio_t _gpioSysWarmrst = { |
|
355 | 457 |
/* port */ GPIOC, |
356 | 458 |
/* pad */ GPIOC_SYS_WARMRST_N, |
357 | 459 |
}; |
460 |
apalControlGpio_t moduleGpioSysWarmrst = { |
|
461 |
/* GPIO */ &_gpioSysWarmrst, |
|
462 |
/* meta */ { |
|
463 |
/* direction */ APAL_GPIO_DIRECTION_BIDIRECTIONAL, |
|
464 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
465 |
/* interrupt edge */ APAL_GPIO_EDGE_BOTH, |
|
466 |
}, |
|
467 |
}; |
|
358 | 468 |
|
359 |
apalGpio_t moduleGpioBtRst = { |
|
469 |
/** |
|
470 |
* @brief BT_RST output signal GPIO. |
|
471 |
*/ |
|
472 |
static apalGpio_t _gpioBtRst = { |
|
360 | 473 |
/* port */ GPIOC, |
361 | 474 |
/* pad */ GPIOC_BT_RST, |
362 | 475 |
}; |
476 |
apalControlGpio_t moduleGpioBtRst = { |
|
477 |
/* GPIO */ &_gpioBtRst, |
|
478 |
/* meta */ { |
|
479 |
/* direction */ APAL_GPIO_DIRECTION_OUTPUT, |
|
480 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
481 |
/* interrupt edge */ APAL_GPIO_EDGE_NONE, |
|
482 |
}, |
|
483 |
}; |
|
363 | 484 |
|
364 |
apalGpio_t moduleGpioChargeEn2 = { |
|
485 |
/** |
|
486 |
* @brief CHARGE_EN2 output signal GPIO. |
|
487 |
*/ |
|
488 |
static apalGpio_t _gpioChargeEn2 = { |
|
365 | 489 |
/* port */ GPIOD, |
366 | 490 |
/* pad */ GPIOD_CHARGE_EN2_N, |
367 | 491 |
}; |
492 |
apalControlGpio_t moduleGpioChargeEn2 = { |
|
493 |
/* GPIO */ &_gpioChargeEn2, |
|
494 |
/* meta */ { |
|
495 |
/* direction */ APAL_GPIO_DIRECTION_OUTPUT, |
|
496 |
/* active state */ BQ24103A_LLD_ENABLED_GPIO_ACTIVE_STATE, |
|
497 |
/* interrupt edge */ APAL_GPIO_EDGE_NONE, |
|
498 |
}, |
|
499 |
}; |
|
368 | 500 |
|
369 | 501 |
/** @} */ |
370 | 502 |
|
... | ... | |
388 | 520 |
*/ |
389 | 521 |
/*===========================================================================*/ |
390 | 522 |
|
391 |
apalControlGpio_t moduleSsspGpioPd = { |
|
392 |
/* GPIO */ &moduleGpioSysPd, |
|
393 |
/* meta */ { |
|
394 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
395 |
/* edge */ APAL_GPIO_EDGE_FALLING, |
|
396 |
/* direction */ APAL_GPIO_DIRECTION_BIDIRECTIONAL, |
|
397 |
}, |
|
398 |
}; |
|
399 |
|
|
400 |
apalControlGpio_t moduleSsspGpioSync = { |
|
401 |
/* GPIO */ &moduleGpioSysSync, |
|
402 |
/* meta */ { |
|
403 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
404 |
/* edge */ APAL_GPIO_EDGE_FALLING, |
|
405 |
/* direction */ APAL_GPIO_DIRECTION_BIDIRECTIONAL, |
|
406 |
}, |
|
407 |
}; |
|
408 |
|
|
409 |
apalControlGpio_t moduleSsspGpioDn = { |
|
410 |
/* GPIO */ &moduleGpioSysUartDn, |
|
411 |
/* meta */ { |
|
412 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
413 |
/* edge */ APAL_GPIO_EDGE_FALLING, |
|
414 |
/* direction */ APAL_GPIO_DIRECTION_BIDIRECTIONAL, |
|
415 |
}, |
|
416 |
}; |
|
417 |
|
|
418 |
apalControlGpio_t moduleSsspGpioUp = { |
|
419 |
/* GPIO */ &moduleGpioSysUartUp, |
|
420 |
/* meta */ { |
|
421 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
422 |
/* edge */ APAL_GPIO_EDGE_FALLING, |
|
423 |
/* direction */ APAL_GPIO_DIRECTION_BIDIRECTIONAL, |
|
424 |
}, |
|
425 |
}; |
|
426 |
|
|
427 | 523 |
/** @} */ |
428 | 524 |
|
429 | 525 |
/*===========================================================================*/ |
... | ... | |
439 | 535 |
}; |
440 | 536 |
|
441 | 537 |
BQ24103ADriver moduleLldBatteryChargerFront = { |
442 |
/* charge enable GPIO */ { |
|
443 |
/* GPIO */ &moduleGpioChargeEn1, |
|
444 |
/* meta */ { |
|
445 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
446 |
/* edge */ APAL_GPIO_EDGE_NONE, |
|
447 |
/* direction */ APAL_GPIO_DIRECTION_OUTPUT, |
|
448 |
}, |
|
449 |
}, |
|
450 |
/* charge status GPIO */ { |
|
451 |
/* GPIO */ &moduleGpioChargeStat1A, |
|
452 |
/* meta */ { |
|
453 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
454 |
/* edge */ APAL_GPIO_EDGE_NONE, |
|
455 |
/* direction */ APAL_GPIO_DIRECTION_INPUT, |
|
456 |
}, |
|
457 |
}, |
|
538 |
/* charge enable GPIO */ &moduleGpioChargeEn1, |
|
539 |
/* charge status GPIO */ &moduleGpioChargeStat1A, |
|
458 | 540 |
}; |
459 | 541 |
|
460 | 542 |
BQ24103ADriver moduleLldBatteryChargerRear = { |
461 |
/* charge enable GPIO */ { |
|
462 |
/* GPIO */ &moduleGpioChargeEn2, |
|
463 |
/* meta */ { |
|
464 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
465 |
/* edge */ APAL_GPIO_EDGE_NONE, |
|
466 |
/* direction */ APAL_GPIO_DIRECTION_OUTPUT, |
|
467 |
}, |
|
468 |
}, |
|
469 |
/* charge status GPIO */ { |
|
470 |
/* GPIO */ &moduleGpioChargeStat2A, |
|
471 |
/* meta */ { |
|
472 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
473 |
/* edge */ APAL_GPIO_EDGE_NONE, |
|
474 |
/* direction */ APAL_GPIO_DIRECTION_INPUT, |
|
475 |
}, |
|
476 |
}, |
|
543 |
/* charge enable GPIO */ &moduleGpioChargeEn2, |
|
544 |
/* charge status GPIO */ &moduleGpioChargeStat2A, |
|
477 | 545 |
}; |
478 | 546 |
|
479 | 547 |
BQ27500Driver moduleLldFuelGaugeFront = { |
480 |
/* I2C driver */ &MODULE_HAL_I2C_PROX_PM42_PM50_PMVDD_EEPROM_TOUCH_GAUGEFRONT, |
|
481 |
/* battery low GPIO */ { |
|
482 |
/* GPIO */ &moduleGpioGaugeBatLow1, |
|
483 |
/* meta */ { |
|
484 |
/* active state */ APAL_GPIO_ACTIVE_HIGH, |
|
485 |
/* edge */ APAL_GPIO_EDGE_NONE, |
|
486 |
/* direction */ APAL_GPIO_DIRECTION_INPUT, |
|
487 |
}, |
|
488 |
}, |
|
489 |
/* battery good GPIO */ { |
|
490 |
/* GPIO */ &moduleGpioGaugeBatGd1, |
|
491 |
/* meta */ { |
|
492 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
493 |
/* edge */ APAL_GPIO_EDGE_NONE, |
|
494 |
/* direction */ APAL_GPIO_DIRECTION_INPUT, |
|
495 |
}, |
|
496 |
}, |
|
548 |
/* I2C driver */ &MODULE_HAL_I2C_PROX_PM42_PM50_PMVDD_EEPROM_TOUCH_GAUGEFRONT, |
|
549 |
/* battery low GPIO */ &moduleGpioGaugeBatLow1, |
|
550 |
/* battery good GPIO */ &moduleGpioGaugeBatGd1, |
|
497 | 551 |
}; |
498 | 552 |
|
499 | 553 |
BQ27500Driver moduleLldFuelGaugeRear = { |
500 |
/* I2C driver */ &MODULE_HAL_I2C_PROX_PM18_PM33_GAUGEREAR, |
|
501 |
/* battery low GPIO */ { |
|
502 |
/* GPIO */ &moduleGpioGaugeBatLow2, |
|
503 |
/* meta */ { |
|
504 |
/* active state */ APAL_GPIO_ACTIVE_HIGH, |
|
505 |
/* edge */ APAL_GPIO_EDGE_NONE, |
|
506 |
/* direction */ APAL_GPIO_DIRECTION_INPUT, |
|
507 |
}, |
|
508 |
}, |
|
509 |
/* battery good GPIO */ { |
|
510 |
/* GPIO */ &moduleGpioGaugeBatGd2, |
|
511 |
/* meta */ { |
|
512 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
513 |
/* edge */ APAL_GPIO_EDGE_NONE, |
|
514 |
/* direction */ APAL_GPIO_DIRECTION_INPUT, |
|
515 |
}, |
|
516 |
}, |
|
554 |
/* I2C driver */ &MODULE_HAL_I2C_PROX_PM18_PM33_GAUGEREAR, |
|
555 |
/* battery low GPIO */ &moduleGpioGaugeBatLow2, |
|
556 |
/* battery good GPIO */ &moduleGpioGaugeBatGd2, |
|
517 | 557 |
}; |
518 | 558 |
|
519 | 559 |
INA219Driver moduleLldPowerMonitorVdd = { |
... | ... | |
552 | 592 |
}; |
553 | 593 |
|
554 | 594 |
LEDDriver moduleLldStatusLed = { |
555 |
/* LED GPIO */ { |
|
556 |
/* GPIO */ &moduleGpioLed, |
|
557 |
/* meta */ { |
|
558 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
559 |
/* edge */ APAL_GPIO_EDGE_NONE, |
|
560 |
/* direction */ APAL_GPIO_DIRECTION_OUTPUT, |
|
561 |
}, |
|
562 |
}, |
|
595 |
/* LED GPIO */ &moduleGpioLed, |
|
563 | 596 |
}; |
564 | 597 |
|
565 | 598 |
MPR121Driver moduleLldTouch = { |
... | ... | |
577 | 610 |
}; |
578 | 611 |
|
579 | 612 |
TPS62113Driver moduleLldStepDownConverter = { |
580 |
/* Power enable GPIO */ { |
|
581 |
/* GPIO */ &moduleGpioPowerEn, |
|
582 |
/* GPIO meta */ { |
|
583 |
/* active state */ APAL_GPIO_ACTIVE_HIGH, |
|
584 |
/* egde */ APAL_GPIO_EDGE_NONE, |
|
585 |
/* direction */ APAL_GPIO_DIRECTION_OUTPUT, |
|
586 |
}, |
|
587 |
}, |
|
613 |
/* Power enable GPIO */ &moduleGpioPowerEn, |
|
588 | 614 |
}; |
589 | 615 |
|
590 | 616 |
VCNL4020Driver moduleLldProximity1 = { |
... | ... | |
899 | 925 |
{ |
900 | 926 |
(void)argc; |
901 | 927 |
(void)argv; |
902 |
aosIntEnable(&moduleIntDriver, MODULE_GPIO_INT_TOUCHINT); |
|
903 | 928 |
aosUtRun(stream, &moduleUtAlldMpr121, NULL); |
904 |
aosIntDisable(&moduleIntDriver, MODULE_GPIO_INT_TOUCHINT); |
|
905 | 929 |
return AOS_OK; |
906 | 930 |
} |
907 | 931 |
static ut_mpr121data_t _utAlldMpr121Data= { |
908 | 932 |
/* MPR121 driver */ &moduleLldTouch, |
909 | 933 |
/* timeout */ MICROSECONDS_PER_SECOND, |
910 | 934 |
/* event source */ &aos.events.io, |
911 |
/* event flags */ (1 << MODULE_GPIO_INT_TOUCHINT),
|
|
935 |
/* event flags */ MODULE_OS_IOEVENTFLAGS_TOUCHINT,
|
|
912 | 936 |
}; |
913 | 937 |
aos_unittest_t moduleUtAlldMpr121 = { |
914 | 938 |
/* name */ "MPR121", |
... | ... | |
1082 | 1106 |
case WNW: |
1083 | 1107 |
mux = &moduleLldI2cMultiplexer1; |
1084 | 1108 |
((ut_vcnl4020data_t*)moduleUtAlldVcnl4020.data)->vcnld = &moduleLldProximity1; |
1085 |
((ut_vcnl4020data_t*)moduleUtAlldVcnl4020.data)->evtflags = (1 << MODULE_GPIO_INT_IRINT2); |
|
1086 |
aosIntEnable(&moduleIntDriver, MODULE_GPIO_INT_IRINT2); |
|
1109 |
((ut_vcnl4020data_t*)moduleUtAlldVcnl4020.data)->evtflags = MODULE_OS_IOEVENTFLAGS_IRINT2; |
|
1087 | 1110 |
break; |
1088 | 1111 |
case NNW: |
1089 | 1112 |
case NNE: |
... | ... | |
1091 | 1114 |
case ESE: |
1092 | 1115 |
mux = &moduleLldI2cMultiplexer2; |
1093 | 1116 |
((ut_vcnl4020data_t*)moduleUtAlldVcnl4020.data)->vcnld = &moduleLldProximity2; |
1094 |
((ut_vcnl4020data_t*)moduleUtAlldVcnl4020.data)->evtflags = (1 << MODULE_GPIO_INT_IRINT1); |
|
1095 |
aosIntEnable(&moduleIntDriver, MODULE_GPIO_INT_IRINT1); |
|
1117 |
((ut_vcnl4020data_t*)moduleUtAlldVcnl4020.data)->evtflags = MODULE_OS_IOEVENTFLAGS_IRINT1; |
|
1096 | 1118 |
break; |
1097 | 1119 |
default: |
1098 | 1120 |
break; |
... | ... | |
1109 | 1131 |
case NNE: |
1110 | 1132 |
pca9544a_lld_setchannel(mux, PCA9544A_LLD_CH1, ((ut_vcnl4020data_t*)moduleUtAlldVcnl4020.data)->timeout); |
1111 | 1133 |
aosUtRun(stream, &moduleUtAlldVcnl4020, "north-northeast sensor"); |
1112 |
aosIntDisable(&moduleIntDriver, MODULE_GPIO_INT_IRINT1); |
|
1113 | 1134 |
break; |
1114 | 1135 |
case ENE: |
1115 | 1136 |
pca9544a_lld_setchannel(mux, PCA9544A_LLD_CH3, ((ut_vcnl4020data_t*)moduleUtAlldVcnl4020.data)->timeout); |
1116 | 1137 |
aosUtRun(stream, &moduleUtAlldVcnl4020, "east-northeast sensor"); |
1117 |
aosIntDisable(&moduleIntDriver, MODULE_GPIO_INT_IRINT1); |
|
1118 | 1138 |
break; |
1119 | 1139 |
case ESE: |
1120 | 1140 |
pca9544a_lld_setchannel(mux, PCA9544A_LLD_CH2, ((ut_vcnl4020data_t*)moduleUtAlldVcnl4020.data)->timeout); |
1121 | 1141 |
aosUtRun(stream, &moduleUtAlldVcnl4020, "north-southeast sensor"); |
1122 |
aosIntDisable(&moduleIntDriver, MODULE_GPIO_INT_IRINT1); |
|
1123 | 1142 |
break; |
1124 | 1143 |
case SSE: |
1125 | 1144 |
pca9544a_lld_setchannel(mux, PCA9544A_LLD_CH0, ((ut_vcnl4020data_t*)moduleUtAlldVcnl4020.data)->timeout); |
1126 | 1145 |
aosUtRun(stream, &moduleUtAlldVcnl4020, "south-southeast sensor"); |
1127 |
aosIntDisable(&moduleIntDriver, MODULE_GPIO_INT_IRINT2); |
|
1128 | 1146 |
break; |
1129 | 1147 |
case SSW: |
1130 | 1148 |
pca9544a_lld_setchannel(mux, PCA9544A_LLD_CH1, ((ut_vcnl4020data_t*)moduleUtAlldVcnl4020.data)->timeout); |
1131 | 1149 |
aosUtRun(stream, &moduleUtAlldVcnl4020, "south-southwest sensor"); |
1132 |
aosIntDisable(&moduleIntDriver, MODULE_GPIO_INT_IRINT2); |
|
1133 | 1150 |
break; |
1134 | 1151 |
case WSW: |
1135 | 1152 |
pca9544a_lld_setchannel(mux, PCA9544A_LLD_CH3, ((ut_vcnl4020data_t*)moduleUtAlldVcnl4020.data)->timeout); |
1136 | 1153 |
aosUtRun(stream, &moduleUtAlldVcnl4020, "west-southwest sensor"); |
1137 |
aosIntDisable(&moduleIntDriver, MODULE_GPIO_INT_IRINT2); |
|
1138 | 1154 |
break; |
1139 | 1155 |
case WNW: |
1140 | 1156 |
pca9544a_lld_setchannel(mux, PCA9544A_LLD_CH2, ((ut_vcnl4020data_t*)moduleUtAlldVcnl4020.data)->timeout); |
1141 | 1157 |
aosUtRun(stream, &moduleUtAlldVcnl4020, "west-northwest sensor"); |
1142 |
aosIntDisable(&moduleIntDriver, MODULE_GPIO_INT_IRINT2); |
|
1143 | 1158 |
break; |
1144 | 1159 |
case NNW: |
1145 | 1160 |
pca9544a_lld_setchannel(mux, PCA9544A_LLD_CH0, ((ut_vcnl4020data_t*)moduleUtAlldVcnl4020.data)->timeout); |
1146 | 1161 |
aosUtRun(stream, &moduleUtAlldVcnl4020, "north-northwest sensor"); |
1147 |
aosIntDisable(&moduleIntDriver, MODULE_GPIO_INT_IRINT1); |
|
1148 | 1162 |
break; |
1149 | 1163 |
default: |
1150 | 1164 |
break; |
Also available in: Unified diff