Revision 0b989911 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

  
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