Revision 0128be0f modules/LightRing_1-0/module.c

View differences:

modules/LightRing_1-0/module.c
29 29
/**
30 30
 * @brief   Interrupt service routine callback for I/O interrupt signals.
31 31
 *
32
 * @param   extp      EXT driver to handle the ISR.
33
 * @param   channel   Channel on which the interrupt was encountered.
32
 * @param   args      Channel on which the interrupt was encountered.
34 33
 */
35
static void _moduleIsrCallback(EXTDriver* extp, expchannel_t channel) {
36
  (void)extp;
37

  
34
static void _modulePalIsrCallback(void *args) {
38 35
  chSysLockFromISR();
39
  chEvtBroadcastFlagsI(&aos.events.io, (1 << channel));
36
  chEvtBroadcastFlagsI(&aos.events.io, (1 << (*(uint16_t*)args)));
40 37
  chSysUnlockFromISR();
41 38

  
42 39
  return;
......
56 53
  /* btr  */ CAN_BTR_SJW(1) | CAN_BTR_TS2(2) | CAN_BTR_TS1(13) | CAN_BTR_BRP(1),
57 54
};
58 55

  
59
EXTConfig moduleHalExtConfig = {
60
  /* channel configrations */ {
61
    /* channel  0 */ {
62
      /* mode     */ EXT_CH_MODE_DISABLED,
63
      /* callback */ NULL,
64
    },
65
    /* channel  1 */ {
66
      /* mode     */ EXT_CH_MODE_DISABLED,
67
      /* callback */ NULL,
68
    },
69
    /* channel  2 */ { // SYS_SYNC_N: automatic interrupt on event
70
      /* mode     */ EXT_MODE_GPIOD | EXT_CH_MODE_BOTH_EDGES | EXT_CH_MODE_AUTOSTART,
71
      /* callback */ _moduleIsrCallback
72
    },
73
    /* channel  3 */ {
74
      /* mode     */ EXT_CH_MODE_DISABLED,
75
      /* callback */ NULL,
76
    },
77
    /* channel  4 */ {
78
      /* mode     */ EXT_CH_MODE_DISABLED,
79
      /* callback */ NULL,
80
    },
81
    /* channel  5 */ { // LASER_OC_N: must be enabled explicitely
82
      /* mode     */ EXT_MODE_GPIOB | EXT_CH_MODE_FALLING_EDGE,
83
      /* callback */ _moduleIsrCallback,
84
    },
85
    /* channel  6 */ { // SYS_UART_DN: automatic interrupt on event
86
      /* mode     */ EXT_MODE_GPIOB | EXT_CH_MODE_BOTH_EDGES | EXT_CH_MODE_AUTOSTART,
87
      /* callback */ _moduleIsrCallback,
88
    },
89
    /* channel  7 */ {
90
      /* mode     */ EXT_CH_MODE_DISABLED,
91
      /* callback */ NULL,
56
aos_interrupt_cfg_t moduleIntConfig[6] = {
57
    /* channel  1 */ { // SYS_INT_N/SYS_SYNC_N: automatic interrupt on event
58
      /* port     */ GPIOD,
59
      /* pad      */ GPIOD_SYS_INT_N,
60
      /* flags    */ AOS_INTERRUPT_AUTOSTART,
61
      /* mode     */ PAL_EVENT_MODE_BOTH_EDGES,
62
      /* callback */ _modulePalIsrCallback,
63
      /* cb arg   */ 1,
92 64
    },
93
    /* channel  8 */ { // WL_GDO0: must be enabled explicitely
94
      /* mode     */ EXT_MODE_GPIOB | EXT_CH_MODE_BOTH_EDGES,
95
      /* callback */ _moduleIsrCallback,
65
    /* channel  2 */ { // LASER_OC_N: must be enabled explicitely
66
      /* port     */ GPIOB,
67
      /* pad      */ GPIOB_LASER_OC_N,
68
      /* flags    */ 0,
69
      /* mode     */ PAL_EVENT_MODE_FALLING_EDGE,
70
      /* callback */ _modulePalIsrCallback,
71
      /* cb arg   */ 2,
96 72
    },
97
    /* channel  9 */ { // WL_GDO2: must be enabled explicitely
98
      /* mode     */ EXT_MODE_GPIOB | EXT_CH_MODE_BOTH_EDGES,
99
      /* callback */ _moduleIsrCallback,
73
    /* channel  3 */ { // SYS_UART_DN: automatic interrupt on event
74
      /* port     */ GPIOB,
75
      /* pad      */ GPIOB_SYS_UART_DN,
76
      /* flags    */ AOS_INTERRUPT_AUTOSTART,
77
      /* mode     */ PAL_EVENT_MODE_BOTH_EDGES,
78
      /* callback */ _modulePalIsrCallback,
79
      /* cb arg   */ 3,
100 80
    },
101
    /* channel 10 */ {
102
      /* mode     */ EXT_CH_MODE_DISABLED,
103
      /* callback */ NULL,
81
    /* channel  4 */ { // WL_GDO0: must be enabled explicitely
82
      /* port     */ GPIOB,
83
      /* pad      */ GPIOB_WL_GDO0,
84
      /* flags    */ 0,
85
      /* mode     */ PAL_EVENT_MODE_BOTH_EDGES,
86
      /* callback */ _modulePalIsrCallback,
87
      /* cb arg   */ 4,
104 88
    },
105
    /* channel 11 */ {
106
      /* mode     */ EXT_CH_MODE_DISABLED,
107
      /* callback */ NULL,
89
    /* channel  5 */ { // WL_GDO2: must be enabled explicitely
90
      /* port     */ GPIOB,
91
      /* pad      */ GPIOB_WL_GDO2,
92
      /* flags    */ 0,
93
      /* mode     */ PAL_EVENT_MODE_BOTH_EDGES,
94
      /* callback */ _modulePalIsrCallback,
95
      /* cb arg   */ 5,
108 96
    },
109
    /* channel 12 */ {
110
      /* mode     */ EXT_CH_MODE_DISABLED,
111
      /* callback */ NULL,
97
    /* channel  6 */ { // SYS_PD_N: automatic interrupt on event
98
      /* port     */ GPIOC,
99
      /* pad      */ GPIOC_SYS_PD_N,
100
      /* flags    */ AOS_INTERRUPT_AUTOSTART,
101
      /* mode     */ PAL_EVENT_MODE_FALLING_EDGE,
102
      /* callback */ _modulePalIsrCallback,
103
      /* cb arg   */ 6,
112 104
    },
113
    /* channel 13 */ {
114
      /* mode     */ EXT_CH_MODE_DISABLED,
115
      /* callback */ NULL,
116
    },
117
    /* channel 14 */ { // SYS_PD_N: automatic interrupt when activated
118
      /* mode     */ EXT_MODE_GPIOC | EXT_CH_MODE_FALLING_EDGE | EXT_CH_MODE_AUTOSTART,
119
      /* callback */ _moduleIsrCallback
120
    },
121
    /* channel 15 */ {
122
      /* mode     */ EXT_CH_MODE_DISABLED,
123
      /* callback */ NULL,
124
    },
125
    /* channel 16 */ {
126
      /* mode     */ EXT_CH_MODE_DISABLED,
127
      /* callback */ NULL,
128
    },
129
    /* channel 17 */ {
130
      /* mode     */ EXT_CH_MODE_DISABLED,
131
      /* callback */ NULL,
132
    },
133
    /* channel 18 */ {
134
      /* mode     */ EXT_CH_MODE_DISABLED,
135
      /* callback */ NULL,
136
    },
137
  }
105
};
106

  
107
aos_interrupt_driver_t moduleIntDriver = {
108
  /* config     */ NULL,
109
  /* interrupts */ 6,
138 110
};
139 111

  
140 112
I2CConfig moduleHalI2cEepromConfig = {
......
151 123
};
152 124

  
153 125
SPIConfig moduleHalSpiLightConfig = {
126
  /* circular buffer mode        */ false,
154 127
  /* callback function pointer   */ NULL,
155 128
  /* chip select line port       */ GPIOC,
156 129
  /* chip select line pad number */ GPIOC_LIGHT_XLAT,

Also available in: Unified diff