Revision f606f432 modules/LightRing_1-2/module.h

View differences:

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