Revision 510b93cc core/src/aos_sssp.c
core/src/aos_sssp.c | ||
---|---|---|
44 | 44 |
/* LOCAL VARIABLES */ |
45 | 45 |
/******************************************************************************/ |
46 | 46 |
|
47 |
#if (AMIROOS_CFG_SSSP_MASTER == true) || defined (__DOXYGEN__) |
|
48 |
|
|
49 | 47 |
/** |
50 | 48 |
* @brief A timer event based delays. |
51 | 49 |
*/ |
... | ... | |
61 | 59 |
*/ |
62 | 60 |
static event_listener_t _eventListenerDelay; |
63 | 61 |
|
64 |
#endif /* (AMIROOS_CFG_SSSP_MASTER == true) */ |
|
65 |
|
|
66 | 62 |
/******************************************************************************/ |
67 | 63 |
/* LOCAL FUNCTIONS */ |
68 | 64 |
/******************************************************************************/ |
69 | 65 |
|
70 |
#if (AMIROOS_CFG_SSSP_MASTER == true) || defined (__DOXYGEN__) |
|
71 |
|
|
72 | 66 |
/** |
73 | 67 |
* @brief General callback function to be used for any local timers. |
74 | 68 |
* |
... | ... | |
85 | 79 |
return; |
86 | 80 |
} |
87 | 81 |
|
88 |
#endif /* (AMIROOS_CFG_SSSP_MASTER == true) */ |
|
89 |
|
|
90 | 82 |
/** |
91 | 83 |
* @brief Waits for the S signal to switch to the desired state. |
92 | 84 |
* |
... | ... | |
120 | 112 |
return AOS_FAILURE; |
121 | 113 |
} |
122 | 114 |
|
123 |
#if (AMIROOS_CFG_SSSP_MASTER == true) || defined(__DOXYGEN__) |
|
124 |
|
|
125 | 115 |
/** |
126 | 116 |
* @brief Uses the local delay timer to setup a timed event and waits for it to fire. |
127 | 117 |
* |
... | ... | |
156 | 146 |
return AOS_FAILURE; |
157 | 147 |
} |
158 | 148 |
|
159 |
#endif /* (AMIROOS_CFG_SSSP_MASTER == true) */ |
|
160 |
|
|
161 | 149 |
/******************************************************************************/ |
162 | 150 |
/* EXPORTED FUNCTIONS */ |
163 | 151 |
/******************************************************************************/ |
... | ... | |
167 | 155 |
*/ |
168 | 156 |
void aosSsspInit(void) |
169 | 157 |
{ |
170 |
#if (AMIROOS_CFG_SSSP_MSI == true) |
|
171 |
// module ID is initialized as 'invalid' |
|
172 |
aos.sssp.moduleId = AOS_SSSP_MODULEID_INVALID; |
|
173 |
#endif /* (AMIROOS_CFG_SSSP_MSI == true) */ |
|
158 |
// local variables |
|
159 |
apalControlGpioState_t state; |
|
174 | 160 |
|
175 | 161 |
#if (AMIROOS_CFG_SSSP_STARTUP == true) |
176 | 162 |
// AMiRo-OS has to perform the basic initialization |
177 | 163 |
aos.sssp.stage = AOS_SSSP_STAGE_STARTUP_1_1; |
178 |
#if (AMIROOS_CFG_DBG == true) |
|
179 |
// check whether the initial signal configuration is correct |
|
180 |
{ |
|
181 |
apalControlGpioState_t state; |
|
182 |
// S signal |
|
183 |
apalControlGpioGet(&moduleSsspGpioS, &state); |
|
184 |
aosDbgAssert(state == APAL_GPIO_ON); |
|
185 |
// PD signal |
|
186 |
apalControlGpioGet(&moduleSsspGpioPD, &state); |
|
187 |
aosDbgAssert(state == APAL_GPIO_OFF); |
|
188 |
} |
|
189 |
#endif /* (AMIROOS_CFG_DBG == true) */ |
|
190 | 164 |
#else /* (AMIROOS_CFG_SSSP_STARTUP == true) */ |
191 | 165 |
// basic initialization was already performed by a bootloader |
192 | 166 |
aos.sssp.stage = AOS_SSSP_STAGE_STARTUP_2_1; |
193 |
#if (AMIROOS_CFG_DBG == true) |
|
194 |
// check whether the initial signal configuration is correct |
|
195 |
{ |
|
196 |
apalControlGpioState_t state; |
|
197 |
// S signal |
|
198 |
apalControlGpioGet(&moduleSsspGpioS, &state); |
|
199 |
aosDbgAssert(state == APAL_GPIO_ON); |
|
200 |
// PD signal |
|
201 |
apalControlGpioGet(&moduleSsspGpioPD, &state); |
|
202 |
aosDbgAssert(state == APAL_GPIO_OFF); |
|
203 |
} |
|
204 |
#endif /* (AMIROOS_CFG_DBG == true) */ |
|
205 | 167 |
#endif /* (AMIROOS_CFG_SSSP_STARTUP == true) */ |
206 | 168 |
|
207 |
#if (AMIROOS_CFG_SSSP_MASTER == true) |
|
169 |
// check all SSSP signals for correct state |
|
170 |
apalControlGpioGet(&moduleSsspGpioS, &state); |
|
171 |
aosDbgAssert(state == APAL_GPIO_ON); |
|
172 |
apalControlGpioGet(&moduleSsspGpioPD, &state); |
|
173 |
aosDbgAssert(state == APAL_GPIO_OFF); |
|
174 |
#if (AMIROOS_CFG_SSSP_STACK_END != true) |
|
175 |
apalControlGpioGet(&moduleSsspGpioUP, &state); |
|
176 |
aosDbgAssert(state == APAL_GPIO_OFF); |
|
177 |
#endif /* (AMIROOS_CFG_SSSP_STACK_END != true) */ |
|
178 |
#if (AMIROOS_CFG_SSSP_STACK_START != true) |
|
179 |
apalControlGpioGet(&moduleSsspGpioDN, &state); |
|
180 |
aosDbgAssert(state == APAL_GPIO_OFF); |
|
181 |
#endif /* (AMIROOS_CFG_SSSP_STACK_START != true) */ |
|
182 |
|
|
183 |
#if (AMIROOS_CFG_SSSP_MSI == true) |
|
184 |
// module ID is initialized as 'invalid' |
|
185 |
aos.sssp.moduleId = AOS_SSSP_MODULEID_INVALID; |
|
186 |
#endif /* (AMIROOS_CFG_SSSP_MSI == true) */ |
|
187 |
|
|
208 | 188 |
// initialize static variables |
209 | 189 |
chVTObjectInit(&_delayTimer); |
210 | 190 |
chEvtObjectInit(&_eventSourceDelay); |
211 |
#endif /* (AMIROOS_CFG_SSSP_MASTER == true) */ |
|
212 | 191 |
|
213 | 192 |
return; |
214 | 193 |
} |
Also available in: Unified diff