Revision f606f432 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 |
|
|
57 | 39 |
/** @} */ |
58 | 40 |
|
59 | 41 |
/*===========================================================================*/ |
... | ... | |
103 | 85 |
*/ |
104 | 86 |
extern SPIConfig moduleHalSpiLightConfig; |
105 | 87 |
|
106 |
#if (BOARD_DW1000_CONNECTED == true) |
|
107 | 88 |
/** |
108 |
* @brief SPI interface driver for UWB DW1000 module.
|
|
89 |
* @brief SPI interface driver for the breakout header.
|
|
109 | 90 |
*/ |
110 |
#define MODULE_HAL_SPI_UWB SPID2
|
|
91 |
#define MODULE_HAL_SPI_BREAKOUT SPID2
|
|
111 | 92 |
|
112 | 93 |
/** |
113 |
* @brief Configuration for the high-speed SPI interface driver of DW1000 module.
|
|
94 |
* @brief UART interface driver for the breakout header (alternative to serial).
|
|
114 | 95 |
*/ |
115 |
extern SPIConfig moduleHalSpiUwbHsConfig;
|
|
96 |
#define MODULE_HAL_UART_BREAKOUT UARTD2
|
|
116 | 97 |
|
117 | 98 |
/** |
118 |
* @brief Configuration for the low-speed SPI interface driver of DW1000 module.
|
|
99 |
* @brief Real-Time Clock driver.
|
|
119 | 100 |
*/ |
120 |
extern SPIConfig moduleHalSpiUwbLsConfig;
|
|
101 |
#define MODULE_HAL_RTC RTCD1
|
|
121 | 102 |
|
122 |
#else
|
|
103 |
#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) || defined(__DOXYGEN__)
|
|
123 | 104 |
|
124 | 105 |
/** |
125 |
* @brief SPI interface driver for the breakout header.
|
|
106 |
* @brief SPI interface driver for UWB DW1000 module.
|
|
126 | 107 |
*/ |
127 |
#define MODULE_HAL_SPI_BREAKOUT SPID2 |
|
128 |
|
|
129 |
#endif /* BOARD_DW1000_CONNECTED == true*/ |
|
130 |
|
|
108 |
#define MODULE_HAL_SPI_UWB MODULE_HAL_SPI_BREAKOUT |
|
131 | 109 |
|
132 | 110 |
/** |
133 |
* @brief UART interface driver for the breakout header (alternative to serial).
|
|
111 |
* @brief Configuration for the high-speed SPI interface driver of DW1000 module.
|
|
134 | 112 |
*/ |
135 |
#define MODULE_HAL_UART_BREAKOUT UARTD2
|
|
113 |
extern SPIConfig moduleHalSpiUwbHsConfig;
|
|
136 | 114 |
|
137 | 115 |
/** |
138 |
* @brief Real-Time Clock driver.
|
|
116 |
* @brief Configuration for the low-speed SPI interface driver of DW1000 module.
|
|
139 | 117 |
*/ |
140 |
#define MODULE_HAL_RTC RTCD1 |
|
118 |
extern SPIConfig moduleHalSpiUwbLsConfig; |
|
119 |
|
|
120 |
#endif /* (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) */ |
|
141 | 121 |
|
142 | 122 |
/** @} */ |
143 | 123 |
|
... | ... | |
195 | 175 |
extern ROMCONST apalControlGpio_t moduleGpioSysUartDn; |
196 | 176 |
|
197 | 177 |
/** |
178 |
* @brief IO_7 breakout signal GPIO. |
|
179 |
*/ |
|
180 |
extern apalControlGpio_t moduleGpioBreakoutIo7; |
|
181 |
|
|
182 |
/** |
|
183 |
* @brief IO_8 breakout signal GPIO. |
|
184 |
*/ |
|
185 |
extern apalControlGpio_t moduleGpioBreakoutIo8; |
|
186 |
|
|
187 |
/** |
|
198 | 188 |
* @brief IO_4 breakout signal GPIO. |
199 | 189 |
*/ |
200 | 190 |
extern apalControlGpio_t moduleGpioBreakoutIo4; |
... | ... | |
205 | 195 |
extern apalControlGpio_t moduleGpioBreakoutIo1; |
206 | 196 |
|
207 | 197 |
/** |
198 |
* @brief IO_2 breakout signal GPIO. |
|
199 |
*/ |
|
200 |
extern apalControlGpio_t moduleGpioBreakoutIo2; |
|
201 |
|
|
202 |
/** |
|
208 | 203 |
* @brief LED output signal GPIO. |
209 | 204 |
*/ |
210 | 205 |
extern ROMCONST apalControlGpio_t moduleGpioLed; |
... | ... | |
239 | 234 |
*/ |
240 | 235 |
extern ROMCONST apalControlGpio_t moduleGpioSysSync; |
241 | 236 |
|
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 |
|
|
284 | 237 |
/** @} */ |
285 | 238 |
|
286 | 239 |
/*===========================================================================*/ |
... | ... | |
341 | 294 |
#define MODULE_OS_IOEVENTFLAGS_BREAKOUTIO8 AOS_IOEVENT_FLAG(PAL_PAD(LINE_IO_8)) |
342 | 295 |
|
343 | 296 |
/** |
344 |
* @brief Event flag to be set on a DW1000 interrupt.
|
|
297 |
* @brief Event flag to be set on a SYS_PD interrupt.
|
|
345 | 298 |
*/ |
346 |
#define MODULE_OS_IOEVENTFLAGS_DW1000 AOS_IOEVENT_FLAG(PAL_PAD(LINE_IO_8)) |
|
299 |
#define MODULE_OS_IOEVENTFLAGS_SYSPD AOS_IOEVENT_FLAG(PAL_PAD(LINE_SYS_PD_N)) |
|
300 |
|
|
301 |
#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) || defined(__DOXYGEN__) |
|
347 | 302 |
|
348 | 303 |
/** |
349 |
* @brief Event flag to be set on a SYS_PD interrupt.
|
|
304 |
* @brief Event flag to be set on a DW1000 interrupt.
|
|
350 | 305 |
*/ |
351 |
#define MODULE_OS_IOEVENTFLAGS_SYSPD AOS_IOEVENT_FLAG(PAL_PAD(LINE_SYS_PD_N)) |
|
306 |
#define MODULE_OS_IOEVENTFLAGS_DW1000 MODULE_OS_IOEVENTFLAGS_BREAKOUTIO8 |
|
307 |
|
|
308 |
#endif /* (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) */ |
|
352 | 309 |
|
353 | 310 |
#if (AMIROOS_CFG_SHELL_ENABLE == true) || (AMIROOS_CFG_TESTS_ENABLE == true) || defined(__DOXYGEN__) |
354 | 311 |
/** |
... | ... | |
363 | 320 |
*/ |
364 | 321 |
#define MODULE_INIT_INTERRUPTS() { \ |
365 | 322 |
/* breakout interrupts must be enabled explicitely */ \ |
366 |
MODULE_INIT_INTERRUPTS_DW1000(); \
|
|
323 |
MODULE_INIT_INTERRUPTS_BREAKOUT(); \
|
|
367 | 324 |
} |
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)); \
|
|
325 |
#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10)
|
|
326 |
#define MODULE_INIT_INTERRUPTS_BREAKOUT() { \
|
|
327 |
palSetLineCallback(moduleLldDw1000.gpio_exti->gpio->line, aosSysGetStdExtiCallback(), &moduleLldDw1000.gpio_exti->gpio->line); \
|
|
328 |
palEnableLineEvent(moduleLldDw1000.gpio_exti->gpio->line, APAL2CH_EDGE(moduleLldDw1000.gpio_exti->meta.edge)); \
|
|
372 | 329 |
} |
373 |
#else /* (BOARD_DW1000_CONNECTED == true) */
|
|
374 |
#define MODULE_INIT_INTERRUPTS_DW1000() { \
|
|
330 |
#elif (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_NONE)
|
|
331 |
#define MODULE_INIT_INTERRUPTS_BREAKOUT() { \
|
|
375 | 332 |
} |
376 |
#endif /* (BOARD_DW1000_CONNECTED == true) */
|
|
333 |
#endif |
|
377 | 334 |
|
378 | 335 |
/** |
379 | 336 |
* @brief Unit test initialization hook. |
... | ... | |
386 | 343 |
aosShellAddCommand(&aos.shell, &moduleTestMic9404xShellCmd); \ |
387 | 344 |
aosShellAddCommand(&aos.shell, &moduleTestTlc5947ShellCmd); \ |
388 | 345 |
aosShellAddCommand(&aos.shell, &moduleTestAllShellCmd); \ |
389 |
MODULE_INIT_TESTS_DW1000(); \
|
|
346 |
MODULE_INIT_TESTS_BREAKOUT(); \
|
|
390 | 347 |
} |
391 |
#if (BOARD_DW1000_CONNECTED == true)
|
|
392 |
#define MODULE_INIT_TESTS_DW1000() { \
|
|
348 |
#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10)
|
|
349 |
#define MODULE_INIT_TESTS_BREAKOUT() { \
|
|
393 | 350 |
aosShellAddCommand(&aos.shell, &moduleTestDw1000ShellCmd); \ |
394 | 351 |
} |
395 |
#else /* defined(AMIROLLD_CFG_DW1000) */
|
|
396 |
#define MODULE_INIT_TESTS_DW1000() { \
|
|
352 |
#elif (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_NONE)
|
|
353 |
#define MODULE_INIT_TESTS_BREAKOUT() { \
|
|
397 | 354 |
} |
398 |
#endif /* BOARD_DW1000_CONNECTED == true */
|
|
355 |
#endif |
|
399 | 356 |
|
400 | 357 |
/** |
401 | 358 |
* @brief Periphery communication interfaces initialization hook. |
... | ... | |
410 | 367 |
i2cStart(&MODULE_HAL_I2C_EEPROM_PWRMTR_BREAKOUT, &moduleHalI2cEepromPwrmtrBreakoutConfig); \ |
411 | 368 |
/* SPI */ \ |
412 | 369 |
spiStart(&MODULE_HAL_SPI_LIGHT, &moduleHalSpiLightConfig); \ |
413 |
MODULE_INIT_PERIPHERY_COMM_DW1000(); \ |
|
370 |
/* breakout module */ \ |
|
371 |
MODULE_INIT_PERIPHERY_COMM_BREAKOUT(); \ |
|
414 | 372 |
} |
415 |
#if (BOARD_DW1000_CONNECTED == true)
|
|
416 |
#define MODULE_INIT_PERIPHERY_COMM_DW1000() { \
|
|
417 |
spiStart(&MODULE_HAL_SPI_UWB, &moduleHalSpiUwbLsConfig); \
|
|
373 |
#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10)
|
|
374 |
#define MODULE_INIT_PERIPHERY_COMM_BREAKOUT() { \
|
|
375 |
spiStart(&MODULE_HAL_SPI_UWB, &moduleHalSpiUwbLsConfig); \
|
|
418 | 376 |
} |
419 |
#else /* defined(AMIROLLD_CFG_DW1000) */
|
|
420 |
#define MODULE_INIT_PERIPHERY_COMM_DW1000() { \
|
|
377 |
#elif (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_NONE)
|
|
378 |
#define MODULE_INIT_PERIPHERY_COMM_BREAKOUT() { \
|
|
421 | 379 |
} |
422 |
#endif /* BOARD_DW1000_CONNECTED == true */
|
|
380 |
#endif |
|
423 | 381 |
|
424 | 382 |
/** |
425 | 383 |
* @brief Periphery communication interface deinitialization hook. |
... | ... | |
429 | 387 |
spiStop(&MODULE_HAL_SPI_LIGHT); \ |
430 | 388 |
/* I2C */ \ |
431 | 389 |
i2cStop(&MODULE_HAL_I2C_EEPROM_PWRMTR_BREAKOUT); \ |
432 |
MODULE_SHUTDOWN_PERIPHERY_COMM_DW1000(); \ |
|
390 |
/* breakout module */ \ |
|
391 |
MODULE_SHUTDOWN_PERIPHERY_COMM_BREAKOUT(); \ |
|
433 | 392 |
/* don't stop the serial driver so messages can still be printed */ \ |
434 | 393 |
} |
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 |
} \ |
|
394 |
#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) |
|
395 |
#define MODULE_SHUTDOWN_PERIPHERY_COMM_BREAKOUT() { \ |
|
396 |
/* SPI */ \ |
|
397 |
spiStop(&MODULE_HAL_SPI_UWB); \ |
|
457 | 398 |
} |
458 |
#else /* defined(AMIROLLD_CFG_DW1000) */
|
|
459 |
#define MODULE_MAIN_LOOP_IO_EVENT_DW1000() { \
|
|
399 |
#elif (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_NONE)
|
|
400 |
#define MODULE_SHUTDOWN_PERIPHERY_COMM_BREAKOUT() { \
|
|
460 | 401 |
} |
461 |
#endif /* BOARD_DW1000_CONNECTED == true */
|
|
402 |
#endif |
|
462 | 403 |
|
463 | 404 |
/** @} */ |
464 | 405 |
|
... | ... | |
523 | 464 |
#include <alld_MIC9404x.h> |
524 | 465 |
// TODO: add SNx5C3221E |
525 | 466 |
#include <alld_TLC5947.h> |
526 |
#include <alld_DW1000.h> |
|
527 | 467 |
|
528 | 468 |
/** |
529 | 469 |
* @brief EEPROM driver. |
... | ... | |
573 | 513 |
*/ |
574 | 514 |
extern TLC5947Driver moduleLldLedPwm; |
575 | 515 |
|
516 |
#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) || defined(__DOXYGEN__) |
|
517 |
|
|
518 |
#include <alld_DW1000.h> |
|
519 |
|
|
576 | 520 |
/** |
577 |
* @brief DW1000 driver. |
|
521 |
* @brief Alias for the DW1000 driver object. |
|
522 |
* @note The dw1000 struct is defined as external variable (singleton) by the |
|
523 |
* driver, since the Decawave software stacks assumes no more than a |
|
524 |
* single device in a system. |
|
578 | 525 |
*/ |
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) */ |
|
526 |
#define moduleLldDw1000 dw1000 |
|
527 |
|
|
528 |
#endif /* (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) */ |
|
584 | 529 |
|
585 | 530 |
/** @} */ |
586 | 531 |
|
... | ... | |
625 | 570 |
extern aos_shellcommand_t moduleTestAllShellCmd; |
626 | 571 |
|
627 | 572 |
|
628 |
#if (BOARD_DW1000_CONNECTED == true) |
|
573 |
#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) || defined(__DOXYGEN__) |
|
574 |
|
|
629 | 575 |
/** |
630 | 576 |
* @brief DW1000 (UWB transmitter) test command. |
631 | 577 |
*/ |
632 | 578 |
extern aos_shellcommand_t moduleTestDw1000ShellCmd; |
633 |
#endif /* (BOARD_DW1000_CONNECTED == true) */ |
|
579 |
|
|
580 |
#endif /* (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) */ |
|
634 | 581 |
|
635 | 582 |
#endif /* (AMIROOS_CFG_TESTS_ENABLE == true) */ |
636 | 583 |
|
Also available in: Unified diff