Revision 0b989911 modules/LightRing_1-2/module.h
modules/LightRing_1-2/module.h | ||
---|---|---|
36 | 36 |
*/ |
37 | 37 |
/*===========================================================================*/ |
38 | 38 |
|
39 |
|
|
40 |
#if defined(__cplusplus) |
|
41 |
extern "C" { |
|
42 |
#endif /* defined(__cplusplus) */ |
|
43 |
|
|
44 |
#if (BOARD_DW1000_CONNECTED == true) |
|
45 |
void process_deca_irq(void); |
|
46 |
apalGpioState_t port_CheckEXT_IRQ(void) ; |
|
47 |
#endif /* (BOARD_DW1000_CONNECTED == true) */ |
|
48 |
|
|
49 |
void set_SPI_chip_select(void); |
|
50 |
void clear_SPI_chip_select(void); |
|
51 |
void reset_DW1000(void); |
|
52 |
|
|
53 |
#if defined(__cplusplus) |
|
54 |
} |
|
55 |
#endif /* defined(__cplusplus) */ |
|
56 |
|
|
39 | 57 |
/** @} */ |
40 | 58 |
|
41 | 59 |
/*===========================================================================*/ |
... | ... | |
85 | 103 |
*/ |
86 | 104 |
extern SPIConfig moduleHalSpiLightConfig; |
87 | 105 |
|
106 |
#if (BOARD_DW1000_CONNECTED == true) |
|
107 |
/** |
|
108 |
* @brief SPI interface driver for UWB DW1000 module. |
|
109 |
*/ |
|
110 |
#define MODULE_HAL_SPI_UWB SPID2 |
|
111 |
|
|
112 |
/** |
|
113 |
* @brief Configuration for the high-speed SPI interface driver of DW1000 module. |
|
114 |
*/ |
|
115 |
extern SPIConfig moduleHalSpiUwbHsConfig; |
|
116 |
|
|
117 |
/** |
|
118 |
* @brief Configuration for the low-speed SPI interface driver of DW1000 module. |
|
119 |
*/ |
|
120 |
extern SPIConfig moduleHalSpiUwbLsConfig; |
|
121 |
|
|
122 |
#else |
|
123 |
|
|
88 | 124 |
/** |
89 | 125 |
* @brief SPI interface driver for the breakout header. |
90 | 126 |
*/ |
91 | 127 |
#define MODULE_HAL_SPI_BREAKOUT SPID2 |
92 | 128 |
|
129 |
#endif /* BOARD_DW1000_CONNECTED == true*/ |
|
130 |
|
|
131 |
|
|
93 | 132 |
/** |
94 | 133 |
* @brief UART interface driver for the breakout header (alternative to serial). |
95 | 134 |
*/ |
... | ... | |
156 | 195 |
extern ROMCONST apalControlGpio_t moduleGpioSysUartDn; |
157 | 196 |
|
158 | 197 |
/** |
159 |
* @brief IO_7 breakout signal GPIO. |
|
160 |
*/ |
|
161 |
extern apalControlGpio_t moduleGpioBreakoutIo7; |
|
162 |
|
|
163 |
/** |
|
164 |
* @brief IO_8 breakout signal GPIO. |
|
165 |
*/ |
|
166 |
extern apalControlGpio_t moduleGpioBreakoutIo8; |
|
167 |
|
|
168 |
/** |
|
169 | 198 |
* @brief IO_4 breakout signal GPIO. |
170 | 199 |
*/ |
171 | 200 |
extern apalControlGpio_t moduleGpioBreakoutIo4; |
... | ... | |
176 | 205 |
extern apalControlGpio_t moduleGpioBreakoutIo1; |
177 | 206 |
|
178 | 207 |
/** |
179 |
* @brief IO_2 breakout signal GPIO. |
|
180 |
*/ |
|
181 |
extern apalControlGpio_t moduleGpioBreakoutIo2; |
|
182 |
|
|
183 |
/** |
|
184 | 208 |
* @brief LED output signal GPIO. |
185 | 209 |
*/ |
186 | 210 |
extern ROMCONST apalControlGpio_t moduleGpioLed; |
... | ... | |
215 | 239 |
*/ |
216 | 240 |
extern ROMCONST apalControlGpio_t moduleGpioSysSync; |
217 | 241 |
|
242 |
#if (BOARD_DW1000_CONNECTED == true) |
|
243 |
/** |
|
244 |
* @brief DW1000 reset output signal |
|
245 |
* @note the reset pin should be drived as low by MCU to activate. |
|
246 |
* Then, put back the reset pin as input to MCU (tri-state float on the air |
|
247 |
* is not supported in AMiRo) |
|
248 |
*/ |
|
249 |
extern ROMCONST apalControlGpio_t moduleGpioDw1000Reset; |
|
250 |
|
|
251 |
/** |
|
252 |
* @brief DW1000 wakeup signal |
|
253 |
*/ |
|
254 |
extern ROMCONST apalControlGpio_t moduleGpioDw1000WakeUp; |
|
255 |
|
|
256 |
/** |
|
257 |
* @brief DW1000 interrupt IRQn input signal. |
|
258 |
*/ |
|
259 |
extern ROMCONST apalControlGpio_t moduleGpioDw1000Irqn; |
|
260 |
|
|
261 |
/** |
|
262 |
* @brief DW1000 SPI chip select output signal. |
|
263 |
*/ |
|
264 |
extern ROMCONST apalControlGpio_t moduleGpioSpiChipSelect ; |
|
265 |
|
|
266 |
#else |
|
267 |
/** |
|
268 |
* @brief IO_2 breakout signal GPIO. |
|
269 |
*/ |
|
270 |
extern apalControlGpio_t moduleGpioBreakoutIo2; |
|
271 |
|
|
272 |
/** |
|
273 |
* @brief IO_7 breakout signal GPIO. |
|
274 |
*/ |
|
275 |
extern apalControlGpio_t moduleGpioBreakoutIo7; |
|
276 |
|
|
277 |
/** |
|
278 |
* @brief IO_8 breakout signal GPIO. |
|
279 |
*/ |
|
280 |
extern apalControlGpio_t moduleGpioBreakoutIo8; |
|
281 |
|
|
282 |
#endif /* BOARD_DW1000_CONNECTED == true */ |
|
283 |
|
|
218 | 284 |
/** @} */ |
219 | 285 |
|
220 | 286 |
/*===========================================================================*/ |
... | ... | |
275 | 341 |
#define MODULE_OS_IOEVENTFLAGS_BREAKOUTIO8 AOS_IOEVENT_FLAG(PAL_PAD(LINE_IO_8)) |
276 | 342 |
|
277 | 343 |
/** |
344 |
* @brief Event flag to be set on a DW1000 interrupt. |
|
345 |
*/ |
|
346 |
#define MODULE_OS_IOEVENTFLAGS_DW1000 AOS_IOEVENT_FLAG(PAL_PAD(LINE_IO_8)) |
|
347 |
|
|
348 |
/** |
|
278 | 349 |
* @brief Event flag to be set on a SYS_PD interrupt. |
279 | 350 |
*/ |
280 | 351 |
#define MODULE_OS_IOEVENTFLAGS_SYSPD AOS_IOEVENT_FLAG(PAL_PAD(LINE_SYS_PD_N)) |
... | ... | |
292 | 363 |
*/ |
293 | 364 |
#define MODULE_INIT_INTERRUPTS() { \ |
294 | 365 |
/* breakout interrupts must be enabled explicitely */ \ |
366 |
MODULE_INIT_INTERRUPTS_DW1000(); \ |
|
295 | 367 |
} |
368 |
#if (BOARD_DW1000_CONNECTED == true) |
|
369 |
#define MODULE_INIT_INTERRUPTS_DW1000() { \ |
|
370 |
palSetLineCallback(moduleGpioDw1000Irqn.gpio->line, aosSysGetStdExtiCallback(), &moduleGpioDw1000Irqn.gpio->line); \ |
|
371 |
palEnableLineEvent(moduleGpioDw1000Irqn.gpio->line, APAL2CH_EDGE(moduleGpioDw1000Irqn.meta.edge)); \ |
|
372 |
} |
|
373 |
#else /* (BOARD_DW1000_CONNECTED == true) */ |
|
374 |
#define MODULE_INIT_INTERRUPTS_DW1000() { \ |
|
375 |
} |
|
376 |
#endif /* (BOARD_DW1000_CONNECTED == true) */ |
|
296 | 377 |
|
297 | 378 |
/** |
298 | 379 |
* @brief Unit test initialization hook. |
... | ... | |
305 | 386 |
aosShellAddCommand(&aos.shell, &moduleTestMic9404xShellCmd); \ |
306 | 387 |
aosShellAddCommand(&aos.shell, &moduleTestTlc5947ShellCmd); \ |
307 | 388 |
aosShellAddCommand(&aos.shell, &moduleTestAllShellCmd); \ |
389 |
MODULE_INIT_TESTS_DW1000(); \ |
|
308 | 390 |
} |
391 |
#if (BOARD_DW1000_CONNECTED == true) |
|
392 |
#define MODULE_INIT_TESTS_DW1000() { \ |
|
393 |
aosShellAddCommand(&aos.shell, &moduleTestDw1000ShellCmd); \ |
|
394 |
} |
|
395 |
#else /* defined(AMIROLLD_CFG_DW1000) */ |
|
396 |
#define MODULE_INIT_TESTS_DW1000() { \ |
|
397 |
} |
|
398 |
#endif /* BOARD_DW1000_CONNECTED == true */ |
|
309 | 399 |
|
310 | 400 |
/** |
311 | 401 |
* @brief Periphery communication interfaces initialization hook. |
... | ... | |
320 | 410 |
i2cStart(&MODULE_HAL_I2C_EEPROM_PWRMTR_BREAKOUT, &moduleHalI2cEepromPwrmtrBreakoutConfig); \ |
321 | 411 |
/* SPI */ \ |
322 | 412 |
spiStart(&MODULE_HAL_SPI_LIGHT, &moduleHalSpiLightConfig); \ |
413 |
MODULE_INIT_PERIPHERY_COMM_DW1000(); \ |
|
323 | 414 |
} |
415 |
#if (BOARD_DW1000_CONNECTED == true) |
|
416 |
#define MODULE_INIT_PERIPHERY_COMM_DW1000() { \ |
|
417 |
spiStart(&MODULE_HAL_SPI_UWB, &moduleHalSpiUwbLsConfig); \ |
|
418 |
} |
|
419 |
#else /* defined(AMIROLLD_CFG_DW1000) */ |
|
420 |
#define MODULE_INIT_PERIPHERY_COMM_DW1000() { \ |
|
421 |
} |
|
422 |
#endif /* BOARD_DW1000_CONNECTED == true */ |
|
324 | 423 |
|
325 | 424 |
/** |
326 | 425 |
* @brief Periphery communication interface deinitialization hook. |
... | ... | |
330 | 429 |
spiStop(&MODULE_HAL_SPI_LIGHT); \ |
331 | 430 |
/* I2C */ \ |
332 | 431 |
i2cStop(&MODULE_HAL_I2C_EEPROM_PWRMTR_BREAKOUT); \ |
432 |
MODULE_SHUTDOWN_PERIPHERY_COMM_DW1000(); \ |
|
333 | 433 |
/* don't stop the serial driver so messages can still be printed */ \ |
334 | 434 |
} |
435 |
#if (BOARD_DW1000_CONNECTED == true) |
|
436 |
#define MODULE_SHUTDOWN_PERIPHERY_COMM_DW1000() { \ |
|
437 |
/* SPI */ \ |
|
438 |
spiStop(&MODULE_HAL_SPI_UWB); \ |
|
439 |
} |
|
440 |
#else /* defined(AMIROLLD_CFG_DW1000) */ |
|
441 |
#define MODULE_SHUTDOWN_PERIPHERY_COMM_DW1000() { \ |
|
442 |
} |
|
443 |
#endif /* BOARD_DW1000_CONNECTED == true */ |
|
444 |
|
|
445 |
|
|
446 |
/** |
|
447 |
* @brief HOOK to call process_deca_irq() func when the dw1000 interrupt pin is activated. |
|
448 |
*/ |
|
449 |
#define MODULE_MAIN_LOOP_IO_EVENT(eventflags) { \ |
|
450 |
MODULE_MAIN_LOOP_IO_EVENT_DW1000(); \ |
|
451 |
} |
|
452 |
#if (BOARD_DW1000_CONNECTED == true) |
|
453 |
#define MODULE_MAIN_LOOP_IO_EVENT_DW1000() { \ |
|
454 |
if(eventflags & MODULE_OS_IOEVENTFLAGS_DW1000) { \ |
|
455 |
process_deca_irq(); \ |
|
456 |
} \ |
|
457 |
} |
|
458 |
#else /* defined(AMIROLLD_CFG_DW1000) */ |
|
459 |
#define MODULE_MAIN_LOOP_IO_EVENT_DW1000() { \ |
|
460 |
} |
|
461 |
#endif /* BOARD_DW1000_CONNECTED == true */ |
|
335 | 462 |
|
336 | 463 |
/** @} */ |
337 | 464 |
|
... | ... | |
396 | 523 |
#include <alld_MIC9404x.h> |
397 | 524 |
// TODO: add SNx5C3221E |
398 | 525 |
#include <alld_TLC5947.h> |
526 |
#include <alld_DW1000.h> |
|
399 | 527 |
|
400 | 528 |
/** |
401 | 529 |
* @brief EEPROM driver. |
... | ... | |
445 | 573 |
*/ |
446 | 574 |
extern TLC5947Driver moduleLldLedPwm; |
447 | 575 |
|
576 |
/** |
|
577 |
* @brief DW1000 driver. |
|
578 |
*/ |
|
579 |
void setHighSpeed_SPI(bool speedValue, DW1000Driver* drv); |
|
580 |
#if (BOARD_DW1000_CONNECTED == true) |
|
581 |
extern DW1000Driver moduleLldDw1000; |
|
582 |
extern MIC9404xDriver moduleLldPowerSwitchDw1000; |
|
583 |
#endif /* (BOARD_DW1000_CONNECTED == true) */ |
|
584 |
|
|
448 | 585 |
/** @} */ |
449 | 586 |
|
450 | 587 |
/*===========================================================================*/ |
... | ... | |
487 | 624 |
*/ |
488 | 625 |
extern aos_shellcommand_t moduleTestAllShellCmd; |
489 | 626 |
|
627 |
|
|
628 |
#if (BOARD_DW1000_CONNECTED == true) |
|
629 |
/** |
|
630 |
* @brief DW1000 (UWB transmitter) test command. |
|
631 |
*/ |
|
632 |
extern aos_shellcommand_t moduleTestDw1000ShellCmd; |
|
633 |
#endif /* (BOARD_DW1000_CONNECTED == true) */ |
|
634 |
|
|
490 | 635 |
#endif /* (AMIROOS_CFG_TESTS_ENABLE == true) */ |
491 | 636 |
|
492 | 637 |
/** @} */ |
Also available in: Unified diff