Statistics
| Branch: | Tag: | Revision:

amiro-os / modules / DiWheelDrive_1-1 / module.h @ 57a5d1df

History | View | Annotate | Download (18.819 KB)

1 e545e620 Thomas Schöpping
/*
2
AMiRo-OS is an operating system designed for the Autonomous Mini Robot (AMiRo) platform.
3 84f0ce9e Thomas Schöpping
Copyright (C) 2016..2019  Thomas Schöpping et al.
4 e545e620 Thomas Schöpping

5
This program is free software: you can redistribute it and/or modify
6
it under the terms of the GNU General Public License as published by
7
the Free Software Foundation, either version 3 of the License, or
8
(at your option) any later version.
9

10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
GNU General Public License for more details.
14

15
You should have received a copy of the GNU General Public License
16
along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
*/
18
19 53710ca3 Marc Rothmann
/**
20 37bacabf Thomas Schöpping
 * @file
21 53710ca3 Marc Rothmann
 * @brief   Structures and constant for the DiWheelDrive module.
22
 *
23
 * @addtogroup diwheeldrive_module
24
 * @{
25
 */
26
27 6ff06bbf Thomas Schöpping
#ifndef AMIROOS_MODULE_H
28
#define AMIROOS_MODULE_H
29 e545e620 Thomas Schöpping
30 e2d7143f Thomas Schöpping
#include <amiroos.h>
31
32 e545e620 Thomas Schöpping
/*===========================================================================*/
33
/**
34
 * @name Module specific functions
35
 * @{
36
 */
37
/*===========================================================================*/
38
39
/** @} */
40
41
/*===========================================================================*/
42
/**
43
 * @name ChibiOS/HAL configuration
44
 * @{
45
 */
46
/*===========================================================================*/
47
48
/**
49
 * @brief   CAN driver to use.
50
 */
51
#define MODULE_HAL_CAN                          CAND1
52
53
/**
54
 * @brief   Configuration for the CAN driver.
55
 */
56
extern CANConfig moduleHalCanConfig;
57
58
/**
59
 * @brief   I2C driver to access the compass.
60
 */
61
#define MODULE_HAL_I2C_COMPASS                  I2CD1
62
63
/**
64
 * @brief   Configuration for the compass I2C driver.
65
 */
66
extern I2CConfig moduleHalI2cCompassConfig;
67
68
/**
69
 * @brief   I2C driver to access multiplexer, proximity sensors, EEPROM and power monitor.
70
 */
71
#define MODULE_HAL_I2C_PROX_EEPROM_PWRMTR       I2CD2
72
73
/**
74
 * @brief   Configuration for the multiplexer, proximity, EEPROM and power monitor I2C driver.
75
 */
76
extern I2CConfig moduleHalI2cProxEepromPwrmtrConfig;
77
78
/**
79
 * @brief   PWM driver to use.
80
 */
81
#define MODULE_HAL_PWM_DRIVE                    PWMD2
82
83
/**
84
 * @brief   Configuration for the PWM driver.
85
 */
86
extern PWMConfig moduleHalPwmDriveConfig;
87
88
/**
89
 * @brief   Drive PWM channel for the left wheel forward direction.
90
 */
91 1e5f7648 Thomas Schöpping
#define MODULE_HAL_PWM_DRIVE_CHANNEL_LEFT_FORWARD     ((apalPWMchannel_t)0)
92 e545e620 Thomas Schöpping
93
/**
94
 * @brief   Drive PWM channel for the left wheel backward direction.
95
 */
96 1e5f7648 Thomas Schöpping
#define MODULE_HAL_PWM_DRIVE_CHANNEL_LEFT_BACKWARD    ((apalPWMchannel_t)1)
97 e545e620 Thomas Schöpping
98
/**
99
 * @brief   Drive PWM channel for the right wheel forward direction.
100
 */
101 1e5f7648 Thomas Schöpping
#define MODULE_HAL_PWM_DRIVE_CHANNEL_RIGHT_FORWARD    ((apalPWMchannel_t)2)
102 e545e620 Thomas Schöpping
103
/**
104
 * @brief   Drive PWM channel for the right wheel backward direction.
105
 */
106 1e5f7648 Thomas Schöpping
#define MODULE_HAL_PWM_DRIVE_CHANNEL_RIGHT_BACKWARD   ((apalPWMchannel_t)3)
107 e545e620 Thomas Schöpping
108
/**
109
 * @brief   Quadrature encooder for the left wheel.
110
 */
111
#define MODULE_HAL_QEI_LEFT_WHEEL               QEID3
112
113
/**
114
 * @brief   Quadrature encooder for the right wheel.
115
 */
116
#define MODULE_HAL_QEI_RIGHT_WHEEL              QEID4
117
118
/**
119
 * @brief   Configuration for both quadrature encoders.
120
 */
121
extern QEIConfig moduleHalQeiConfig;
122
123
/**
124
 * @brief   QEI increments per wheel revolution.
125
 * @details 2 signal edges per pulse * 2 signals * 16 pulses per motor revolution * 22:1 gearbox
126
 */
127
#define MODULE_HAL_QEI_INCREMENTS_PER_REVOLUTION  (apalQEICount_t)(2 * 2 * 16 * 22)
128
129
/**
130
 * @brief   Serial driver of the programmer interface.
131
 */
132
#define MODULE_HAL_PROGIF                       SD1
133
134
/**
135
 * @brief   Configuration for the programmer serial interface driver.
136
 */
137
extern SerialConfig moduleHalProgIfConfig;
138
139
/**
140
 * @brief   SPI interface driver for the motion sensors (gyroscope and accelerometer).
141
 */
142
#define MODULE_HAL_SPI_MOTION                   SPID1
143
144
/**
145
 * @brief   Configuration for the motion sensor SPI interface  driver to communicate with the accelerometer.
146
 */
147
extern SPIConfig moduleHalSpiAccelerometerConfig;
148
149
/**
150
 * @brief   Configuration for the motion sensor SPI interface  driver to communicate with the gyroscope.
151
 */
152
extern SPIConfig moduleHalSpiGyroscopeConfig;
153
154 8399aeae Thomas Schöpping
/**
155
 * @brief   Real-Time Clock driver.
156
 */
157
#define MODULE_HAL_RTC                          RTCD1
158
159 e545e620 Thomas Schöpping
/** @} */
160
161
/*===========================================================================*/
162
/**
163
 * @name GPIO definitions
164
 * @{
165
 */
166
/*===========================================================================*/
167
168
/**
169
 * @brief   LED output signal GPIO.
170
 */
171 acc97cbf Thomas Schöpping
extern ROMCONST apalControlGpio_t moduleGpioLed;
172 e545e620 Thomas Schöpping
173
/**
174
 * @brief   POWER_EN output signal GPIO.
175
 */
176 acc97cbf Thomas Schöpping
extern ROMCONST apalControlGpio_t moduleGpioPowerEn;
177 e545e620 Thomas Schöpping
178
/**
179
 * @brief   COMPASS_DRDY input signal GPIO.
180
 */
181 acc97cbf Thomas Schöpping
extern ROMCONST apalControlGpio_t moduleGpioCompassDrdy;
182 e545e620 Thomas Schöpping
183
/**
184
 * @brief   IR_INT input signal GPIO.
185
 */
186 acc97cbf Thomas Schöpping
extern ROMCONST apalControlGpio_t moduleGpioIrInt;
187 e545e620 Thomas Schöpping
188
/**
189
 * @brief   GYRO_DRDY input signal GPIO.
190
 */
191 acc97cbf Thomas Schöpping
extern ROMCONST apalControlGpio_t moduleGpioGyroDrdy;
192 e545e620 Thomas Schöpping
193
/**
194
 * @brief   SYS_UART_UP bidirectional signal GPIO.
195
 */
196 acc97cbf Thomas Schöpping
extern ROMCONST apalControlGpio_t moduleGpioSysUartUp;
197 e545e620 Thomas Schöpping
198
/**
199
 * @brief   ACCEL_INT input signal GPIO.
200
 */
201 acc97cbf Thomas Schöpping
extern ROMCONST apalControlGpio_t moduleGpioAccelInt;
202 e545e620 Thomas Schöpping
203
/**
204
 * @brief   SYS_SNYC bidirectional signal GPIO.
205
 */
206 acc97cbf Thomas Schöpping
extern ROMCONST apalControlGpio_t moduleGpioSysSync;
207 e545e620 Thomas Schöpping
208
/**
209
 * @brief   PATH_DCSTAT input signal GPIO.
210
 */
211 acc97cbf Thomas Schöpping
extern ROMCONST apalControlGpio_t moduleGpioPathDcStat;
212 e545e620 Thomas Schöpping
213
/**
214
 * @brief   PATH_DCEN output signal GPIO.
215
 */
216 acc97cbf Thomas Schöpping
extern ROMCONST apalControlGpio_t moduleGpioPathDcEn;
217 e545e620 Thomas Schöpping
218
/**
219
 * @brief   SYS_PD bidirectional signal GPIO.
220
 */
221 acc97cbf Thomas Schöpping
extern ROMCONST apalControlGpio_t moduleGpioSysPd;
222 e545e620 Thomas Schöpping
223
/**
224
 * @brief   SYS_REG_EN input signal GPIO.
225
 */
226 acc97cbf Thomas Schöpping
extern ROMCONST apalControlGpio_t moduleGpioSysRegEn;
227 e545e620 Thomas Schöpping
228
/**
229
 * @brief   SYS_WARMRST bidirectional signal GPIO.
230
 */
231 acc97cbf Thomas Schöpping
extern ROMCONST apalControlGpio_t moduleGpioSysWarmrst;
232 e545e620 Thomas Schöpping
233
/** @} */
234
235
/*===========================================================================*/
236
/**
237
 * @name AMiRo-OS core configurations
238
 * @{
239
 */
240
/*===========================================================================*/
241
242
/**
243
 * @brief   Event flag to be set on a SYS_SYNC interrupt.
244
 */
245 3106e8cc Thomas Schöpping
#define MODULE_OS_IOEVENTFLAGS_SYSSYNC          AOS_IOEVENT_FLAG(PAL_PAD(LINE_SYS_INT_N))
246 e545e620 Thomas Schöpping
247
/**
248
 * @brief   Event flag to be set on a SYS_WARMRST interrupt.
249
 */
250 3106e8cc Thomas Schöpping
#define MODULE_OS_IOEVENTFLAGS_SYSWARMRST       AOS_IOEVENT_FLAG(PAL_PAD(LINE_SYS_WARMRST_N))
251 e545e620 Thomas Schöpping
252
/**
253
 * @brief   Event flag to be set on a PATH_DCSTAT interrupt.
254
 */
255 3106e8cc Thomas Schöpping
#define MODULE_OS_IOEVENTFLAGS_PATHDCSTAT       AOS_IOEVENT_FLAG(PAL_PAD(LINE_PATH_DCEN))
256 e545e620 Thomas Schöpping
257
/**
258
 * @brief   Event flag to be set on a COMPASS_DRDY interrupt.
259
 */
260 3106e8cc Thomas Schöpping
#define MODULE_OS_IOEVENTFLAGS_COMPASSDRDY      AOS_IOEVENT_FLAG(PAL_PAD(LINE_COMPASS_DRDY))
261 e545e620 Thomas Schöpping
262
/**
263
 * @brief   Event flag to be set on a SYS_PD interrupt.
264
 */
265 3106e8cc Thomas Schöpping
#define MODULE_OS_IOEVENTFLAGS_SYSPD            AOS_IOEVENT_FLAG(PAL_PAD(LINE_SYS_PD_N))
266 e545e620 Thomas Schöpping
267
/**
268
 * @brief   Event flag to be set on a SYS_REG_EN interrupt.
269
 */
270 3106e8cc Thomas Schöpping
#define MODULE_OS_IOEVENTFLAGS_SYSREGEN         AOS_IOEVENT_FLAG(PAL_PAD(LINE_SYS_REG_EN))
271 e545e620 Thomas Schöpping
272
/**
273
 * @brief   Event flag to be set on a IR_INT interrupt.
274
 */
275 3106e8cc Thomas Schöpping
#define MODULE_OS_IOEVENTFLAGS_IRINT            AOS_IOEVENT_FLAG(PAL_PAD(LINE_IR_INT))
276 e545e620 Thomas Schöpping
277
/**
278
 * @brief   Event flag to be set on a GYRO_DRDY interrupt.
279
 */
280 3106e8cc Thomas Schöpping
#define MODULE_OS_IOEVENTFLAGS_GYRODRDY         AOS_IOEVENT_FLAG(PAL_PAD(LINE_GYRO_DRDY))
281 e545e620 Thomas Schöpping
282
/**
283
 * @brief   Event flag to be set on a SYS_UART_UP interrupt.
284
 */
285 3106e8cc Thomas Schöpping
#define MODULE_OS_IOEVENTFLAGS_SYSUARTUP        AOS_IOEVENT_FLAG(PAL_PAD(LINE_SYS_UART_UP))
286 e545e620 Thomas Schöpping
287
/**
288
 * @brief   Event flag to be set on a ACCEL_INT interrupt.
289
 */
290 3106e8cc Thomas Schöpping
#define MODULE_OS_IOEVENTFLAGS_ACCELINT         AOS_IOEVENT_FLAG(PAL_PAD(LINE_ACCEL_INT_N))
291 e545e620 Thomas Schöpping
292 2dd2e257 Thomas Schöpping
#if (AMIROOS_CFG_SHELL_ENABLE == true) || (AMIROOS_CFG_TESTS_ENABLE == true) || defined(__DOXYGEN__)
293 e545e620 Thomas Schöpping
/**
294
 * @brief   Shell prompt text.
295
 */
296 acc97cbf Thomas Schöpping
extern ROMCONST char* moduleShellPrompt;
297 7de0cc90 Thomas Schöpping
#endif /* (AMIROOS_CFG_SHELL_ENABLE == true) || (AMIROOS_CFG_TESTS_ENABLE == true) */
298 e545e620 Thomas Schöpping
299
/**
300 1e5f7648 Thomas Schöpping
 * @brief   Interrupt initialization macro.
301
 * @note    SSSP related interrupt signals are already initialized in 'aos_system.c'.
302
 */
303
#define MODULE_INIT_INTERRUPTS() {                                            \
304
  /* COMPASS_DRDY */                                                          \
305 3106e8cc Thomas Schöpping
  palSetLineCallback(moduleGpioCompassDrdy.gpio->line, aosSysGetStdIntCallback(), &moduleGpioCompassDrdy.gpio->line); \
306
  palEnableLineEvent(moduleGpioCompassDrdy.gpio->line, APAL2CH_EDGE(moduleGpioCompassDrdy.meta.edge));                \
307 1e5f7648 Thomas Schöpping
  /* IR_INT */                                                                \
308 3106e8cc Thomas Schöpping
  palSetLineCallback(moduleGpioIrInt.gpio->line, aosSysGetStdIntCallback(), &moduleGpioIrInt.gpio->line); \
309
  palEnableLineEvent(moduleGpioIrInt.gpio->line, APAL2CH_EDGE(moduleGpioIrInt.meta.edge));                \
310 1e5f7648 Thomas Schöpping
  /* GYRO_DRDY */                                                             \
311 3106e8cc Thomas Schöpping
  palSetLineCallback(moduleGpioGyroDrdy.gpio->line, aosSysGetStdIntCallback(), &moduleGpioGyroDrdy.gpio->line); \
312
  palEnableLineEvent(moduleGpioGyroDrdy.gpio->line, APAL2CH_EDGE(moduleGpioGyroDrdy.meta.edge));                \
313 1e5f7648 Thomas Schöpping
  /* ACCEL_INT */                                                             \
314 3106e8cc Thomas Schöpping
  palSetLineCallback(moduleGpioAccelInt.gpio->line, aosSysGetStdIntCallback(), &moduleGpioAccelInt.gpio->line); \
315
  palEnableLineEvent(moduleGpioAccelInt.gpio->line, APAL2CH_EDGE(moduleGpioAccelInt.meta.edge));                \
316 1e5f7648 Thomas Schöpping
  /* PATH_DCSTAT */                                                           \
317 3106e8cc Thomas Schöpping
  palSetLineCallback(moduleGpioPathDcStat.gpio->line, aosSysGetStdIntCallback(), &moduleGpioPathDcStat.gpio->line); \
318
  palEnableLineEvent(moduleGpioPathDcStat.gpio->line, APAL2CH_EDGE(moduleGpioPathDcStat.meta.edge));                \
319 1e5f7648 Thomas Schöpping
  /* SYS_REG_EN */                                                            \
320 3106e8cc Thomas Schöpping
  palSetLineCallback(moduleGpioSysRegEn.gpio->line, aosSysGetStdIntCallback(), &moduleGpioSysRegEn.gpio->line); \
321
  palEnableLineEvent(moduleGpioSysRegEn.gpio->line, APAL2CH_EDGE(moduleGpioSysRegEn.meta.edge));                \
322 1e5f7648 Thomas Schöpping
  /* SYS_WARMRST */                                                           \
323 3106e8cc Thomas Schöpping
  palSetLineCallback(moduleGpioSysWarmrst.gpio->line, aosSysGetStdIntCallback(), &moduleGpioSysWarmrst.gpio->line); \
324
  palEnableLineEvent(moduleGpioSysWarmrst.gpio->line, APAL2CH_EDGE(moduleGpioSysWarmrst.meta.edge));                \
325 1e5f7648 Thomas Schöpping
}
326
327
/**
328 4c72a54c Thomas Schöpping
 * @brief   Test initialization hook.
329 e545e620 Thomas Schöpping
 */
330
#define MODULE_INIT_TESTS() {                                                 \
331 4c72a54c Thomas Schöpping
  /* initialize tests and add to shell */                                     \
332
  aosShellAddCommand(&aos.shell, &moduleTestA3906ShellCmd);                   \
333
  aosShellAddCommand(&aos.shell, &moduleTestAt24c01bShellCmd);                \
334
  aosShellAddCommand(&aos.shell, &moduleTestHmc5883lShellCmd);                \
335
  aosShellAddCommand(&aos.shell, &moduleTestIna219ShellCmd);                  \
336
  aosShellAddCommand(&aos.shell, &moduleTestL3g4200dShellCmd);                \
337
  aosShellAddCommand(&aos.shell, &moduleTestLedShellCmd);                     \
338
  aosShellAddCommand(&aos.shell, &moduleTestLis331dlhShellCmd);               \
339
  aosShellAddCommand(&aos.shell, &moduleTestLtc4412ShellCmd);                 \
340
  aosShellAddCommand(&aos.shell, &moduleTestPca9544aShellCmd);                \
341
  aosShellAddCommand(&aos.shell, &moduleTestTps62113ShellCmd);                \
342
  aosShellAddCommand(&aos.shell, &moduleTestVcnl4020ShellCmd);                \
343
  aosShellAddCommand(&aos.shell, &moduleTestAllShellCmd);                     \
344 e545e620 Thomas Schöpping
}
345
346
/**
347
 * @brief   Periphery communication interfaces initialization hook.
348
 */
349 4c72a54c Thomas Schöpping
#define MODULE_INIT_PERIPHERY_IF() {                                          \
350 e545e620 Thomas Schöpping
  /* serial driver */                                                         \
351
  sdStart(&MODULE_HAL_PROGIF, &moduleHalProgIfConfig);                        \
352
  /* I2C */                                                                   \
353
  moduleHalI2cCompassConfig.clock_speed = (HMC5883L_LLD_I2C_MAXFREQUENCY < moduleHalI2cCompassConfig.clock_speed) ? HMC5883L_LLD_I2C_MAXFREQUENCY : moduleHalI2cCompassConfig.clock_speed;  \
354
  moduleHalI2cCompassConfig.duty_cycle = (moduleHalI2cCompassConfig.clock_speed <= 100000) ? STD_DUTY_CYCLE : FAST_DUTY_CYCLE_2;  \
355
  i2cStart(&MODULE_HAL_I2C_COMPASS, &moduleHalI2cCompassConfig);              \
356
  moduleHalI2cProxEepromPwrmtrConfig.clock_speed = (PCA9544A_LLD_I2C_MAXFREQUENCY < moduleHalI2cProxEepromPwrmtrConfig.clock_speed) ? PCA9544A_LLD_I2C_MAXFREQUENCY : moduleHalI2cProxEepromPwrmtrConfig.clock_speed; \
357
  moduleHalI2cProxEepromPwrmtrConfig.clock_speed = (VCNL4020_LLD_I2C_MAXFREQUENCY < moduleHalI2cProxEepromPwrmtrConfig.clock_speed) ? VCNL4020_LLD_I2C_MAXFREQUENCY : moduleHalI2cProxEepromPwrmtrConfig.clock_speed; \
358 ddf34c3d Thomas Schöpping
  moduleHalI2cProxEepromPwrmtrConfig.clock_speed = (AT24C01B_LLD_I2C_MAXFREQUENCY < moduleHalI2cProxEepromPwrmtrConfig.clock_speed) ? AT24C01B_LLD_I2C_MAXFREQUENCY : moduleHalI2cProxEepromPwrmtrConfig.clock_speed; \
359 e545e620 Thomas Schöpping
  moduleHalI2cProxEepromPwrmtrConfig.clock_speed = (INA219_LLD_I2C_MAXFREQUENCY < moduleHalI2cProxEepromPwrmtrConfig.clock_speed) ? INA219_LLD_I2C_MAXFREQUENCY : moduleHalI2cProxEepromPwrmtrConfig.clock_speed; \
360
  moduleHalI2cProxEepromPwrmtrConfig.duty_cycle = (moduleHalI2cProxEepromPwrmtrConfig.clock_speed <= 100000) ? STD_DUTY_CYCLE : FAST_DUTY_CYCLE_2;  \
361
  i2cStart(&MODULE_HAL_I2C_PROX_EEPROM_PWRMTR, &moduleHalI2cProxEepromPwrmtrConfig);  \
362
  /* SPI is shared between accelerometer and gyroscope and needs to be restarted for each transmission */ \
363
  /* PWM */                                                                   \
364
  pwmStart(&MODULE_HAL_PWM_DRIVE, &moduleHalPwmDriveConfig);                  \
365
  /* QEI */                                                                   \
366
  qeiStart(&MODULE_HAL_QEI_LEFT_WHEEL, &moduleHalQeiConfig);                  \
367
  qeiStart(&MODULE_HAL_QEI_RIGHT_WHEEL, &moduleHalQeiConfig);                 \
368
  qeiEnable(&MODULE_HAL_QEI_LEFT_WHEEL);                                      \
369
  qeiEnable(&MODULE_HAL_QEI_RIGHT_WHEEL);                                     \
370
}
371
372
/**
373
 * @brief   Periphery communication interface deinitialization hook.
374
 */
375 4c72a54c Thomas Schöpping
#define MODULE_SHUTDOWN_PERIPHERY_IF() {                                      \
376 e545e620 Thomas Schöpping
  /* PWM */                                                                   \
377
  pwmStop(&MODULE_HAL_PWM_DRIVE);                                             \
378
  /* QEI */                                                                   \
379
  qeiDisable(&MODULE_HAL_QEI_LEFT_WHEEL);                                     \
380
  qeiDisable(&MODULE_HAL_QEI_RIGHT_WHEEL);                                    \
381
  qeiStop(&MODULE_HAL_QEI_LEFT_WHEEL);                                        \
382
  qeiStop(&MODULE_HAL_QEI_RIGHT_WHEEL);                                       \
383
  /* I2C */                                                                   \
384
  i2cStop(&MODULE_HAL_I2C_COMPASS);                                           \
385
  i2cStop(&MODULE_HAL_I2C_PROX_EEPROM_PWRMTR);                                \
386
  /* don't stop the serial driver so messages can still be printed */         \
387
}
388
389
/** @} */
390
391
/*===========================================================================*/
392
/**
393 6b53f6bf Thomas Schöpping
 * @name Startup Shutdown Synchronization Protocol (SSSP)
394
 * @{
395
 */
396
/*===========================================================================*/
397
398
/**
399
 * @brief   PD signal GPIO.
400
 */
401 1e5f7648 Thomas Schöpping
#define moduleSsspGpioPd                        moduleGpioSysPd
402 6b53f6bf Thomas Schöpping
403
/**
404
 * @brief   SYNC signal GPIO.
405
 */
406 1e5f7648 Thomas Schöpping
#define moduleSsspGpioSync                      moduleGpioSysSync
407 6b53f6bf Thomas Schöpping
408
/**
409 933df08e Thomas Schöpping
 * @brief   UP signal GPIO.
410
 */
411 1e5f7648 Thomas Schöpping
#define moduleSsspGpioUp                        moduleGpioSysUartUp
412 933df08e Thomas Schöpping
413
/**
414 6b53f6bf Thomas Schöpping
 * @brief   Event flags for PD signal events.
415
 */
416
#define MODULE_SSSP_EVENTFLAGS_PD               MODULE_OS_IOEVENTFLAGS_SYSPD
417
418
/**
419 933df08e Thomas Schöpping
 * @brief   Event flags for SYNC signal events.
420 6b53f6bf Thomas Schöpping
 */
421
#define MODULE_SSSP_EVENTFLAGS_SYNC             MODULE_OS_IOEVENTFLAGS_SYSSYNC
422
423
/**
424 933df08e Thomas Schöpping
 * @brief   Event flags for UP signal events.
425
 */
426
#define MODULE_SSSP_EVENTFLAGS_UP               MODULE_OS_IOEVENTFLAGS_SYSUARTUP
427
428 6b53f6bf Thomas Schöpping
/** @} */
429
430
/*===========================================================================*/
431
/**
432 e545e620 Thomas Schöpping
 * @name Low-level drivers
433
 * @{
434
 */
435
/*===========================================================================*/
436 ddf34c3d Thomas Schöpping
#include <alld_A3906.h>
437
#include <alld_AT24C01B.h>
438
#include <alld_HMC5883L.h>
439
#include <alld_INA219.h>
440
#include <alld_L3G4200D.h>
441
#include <alld_LED.h>
442
#include <alld_LIS331DLH.h>
443
#include <alld_LTC4412.h>
444
#include <alld_PCA9544A.h>
445
#include <alld_TPS6211x.h>
446
#include <alld_VCNL4020.h>
447 e545e620 Thomas Schöpping
448
/**
449
 * @brief   Motor driver.
450
 */
451
extern A3906Driver moduleLldMotors;
452
453
/**
454
 * @brief   EEPROM driver.
455
 */
456 ddf34c3d Thomas Schöpping
extern AT24C01BDriver moduleLldEeprom;
457 e545e620 Thomas Schöpping
458
/**
459
 * @brief   Compass driver.
460
 */
461
extern HMC5883LDriver moduleLldCompass;
462
463
/**
464
 * @brief   Power monitor (VDD) driver.
465
 */
466
extern INA219Driver moduleLldPowerMonitorVdd;
467
468
/**
469
 * @brief   Gyroscope driver.
470
 */
471
extern L3G4200DDriver moduleLldGyroscope;
472
473
/**
474
 * @brief   Status LED driver.
475
 */
476
extern LEDDriver moduleLldStatusLed;
477
478
/**
479
 * @brief   Accelerometer driver.
480
 */
481
extern LIS331DLHDriver moduleLldAccelerometer;
482
483
/**
484
 * @brief   Power path controler (charging pins) driver.
485
 */
486
extern LTC4412Driver moduleLldPowerPathController;
487
488
/**
489
 * @brief   I2C multiplexer driver.
490
 */
491
extern PCA9544ADriver moduleLldI2cMultiplexer;
492
493
/**
494
 * @brief   Step down converter (VDRIVE) driver.
495
 */
496 ddf34c3d Thomas Schöpping
extern TPS6211xDriver moduleLldStepDownConverterVdrive;
497 e545e620 Thomas Schöpping
498
/**
499
 * @brief   Proximity sensor driver.
500
 */
501
extern VCNL4020Driver moduleLldProximity;
502
503
/** @} */
504
505
/*===========================================================================*/
506
/**
507 4c72a54c Thomas Schöpping
 * @name Tests
508 e545e620 Thomas Schöpping
 * @{
509
 */
510
/*===========================================================================*/
511
#if (AMIROOS_CFG_TESTS_ENABLE == true) || defined(__DOXYGEN__)
512
513
/**
514 4c72a54c Thomas Schöpping
 * @brief   A3906 (motor driver) test command.
515 e545e620 Thomas Schöpping
 */
516 4c72a54c Thomas Schöpping
extern aos_shellcommand_t moduleTestA3906ShellCmd;
517 e545e620 Thomas Schöpping
518
/**
519 4c72a54c Thomas Schöpping
 * @brief   AT24C01BN-SH-B (EEPROM) test command.
520 e545e620 Thomas Schöpping
 */
521 4c72a54c Thomas Schöpping
extern aos_shellcommand_t moduleTestAt24c01bShellCmd;
522 e545e620 Thomas Schöpping
523
/**
524 4c72a54c Thomas Schöpping
 * @brief   HMC5883L (compass) test command.
525 e545e620 Thomas Schöpping
 */
526 4c72a54c Thomas Schöpping
extern aos_shellcommand_t moduleTestHmc5883lShellCmd;
527 e545e620 Thomas Schöpping
528
/**
529 4c72a54c Thomas Schöpping
 * @brief   INA219 (power monitor) test command.
530 e545e620 Thomas Schöpping
 */
531 4c72a54c Thomas Schöpping
extern aos_shellcommand_t moduleTestIna219ShellCmd;
532 e545e620 Thomas Schöpping
533
/**
534 4c72a54c Thomas Schöpping
 * @brief   L3G4200D (gyroscope) test command.
535 e545e620 Thomas Schöpping
 */
536 4c72a54c Thomas Schöpping
extern aos_shellcommand_t moduleTestL3g4200dShellCmd;
537 e545e620 Thomas Schöpping
538
/**
539 4c72a54c Thomas Schöpping
 * @brief   Status LED test command.
540 e545e620 Thomas Schöpping
 */
541 4c72a54c Thomas Schöpping
extern aos_shellcommand_t moduleTestLedShellCmd;
542 e545e620 Thomas Schöpping
543
/**
544 4c72a54c Thomas Schöpping
 * @brief   LIS331DLH (accelerometer) test command.
545 e545e620 Thomas Schöpping
 */
546 4c72a54c Thomas Schöpping
extern aos_shellcommand_t moduleTestLis331dlhShellCmd;
547 e545e620 Thomas Schöpping
548
/**
549 4c72a54c Thomas Schöpping
 * @brief   LTC4412 (power path controller) test command.
550 e545e620 Thomas Schöpping
 */
551 4c72a54c Thomas Schöpping
extern aos_shellcommand_t moduleTestLtc4412ShellCmd;
552 e545e620 Thomas Schöpping
553
/**
554 4c72a54c Thomas Schöpping
 * @brief   PCA9544A (I2C multiplexer) test command.
555 e545e620 Thomas Schöpping
 */
556 4c72a54c Thomas Schöpping
extern aos_shellcommand_t moduleTestPca9544aShellCmd;
557 e545e620 Thomas Schöpping
558
/**
559 4c72a54c Thomas Schöpping
 * @brief   TPS62113 (step-down converter) test command.
560 e545e620 Thomas Schöpping
 */
561 4c72a54c Thomas Schöpping
extern aos_shellcommand_t moduleTestTps62113ShellCmd;
562 e545e620 Thomas Schöpping
563
/**
564 4c72a54c Thomas Schöpping
 * @brief   VCNL4020 (proximity sensor) test command.
565 e545e620 Thomas Schöpping
 */
566 4c72a54c Thomas Schöpping
extern aos_shellcommand_t moduleTestVcnl4020ShellCmd;
567
568
/**
569
 * @brief   Entire module test command.
570
 */
571
extern aos_shellcommand_t moduleTestAllShellCmd;
572 e545e620 Thomas Schöpping
573 7de0cc90 Thomas Schöpping
#endif /* (AMIROOS_CFG_TESTS_ENABLE == true) */
574 e545e620 Thomas Schöpping
575
/** @} */
576
577 6ff06bbf Thomas Schöpping
#endif /* AMIROOS_MODULE_H */
578 53710ca3 Marc Rothmann
579
/** @} */