AutosarOS
ErrorTypes.h
Go to the documentation of this file.
1 
15 #ifndef ERRORTYPES_H_
16 #define ERRORTYPES_H_
17 
18 #include <string.h>
19 
23 typedef enum osServiceIdType {
59 
63 struct errorInfo_s {
65 #if OS_CONFIG_MAX_ERROR_PARAM >= 1
66  uint64_t param1;
67 #endif /* OS_CONFIG_MAX_ERROR_PARAM >= 1 */
68 #if OS_CONFIG_MAX_ERROR_PARAM >= 2
69  uint64_t param2;
70 #endif /* OS_CONFIG_MAX_ERROR_PARAM >= 2 */
71 #if OS_CONFIG_MAX_ERROR_PARAM == 3
72  uint64_t param3;
73 #endif /* OS_CONFIG_MAX_ERROR_PARAM >= 3 */
74 };
75 
76 #if defined(OS_CONFIG_HOOK_ERROR) && OS_CONFIG_HOOK_ERROR == true && !defined(__DOXYGEN__)
77 #define OS_CALL_ERROR_HOOK(error) ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { \
78  if (!blockErrorHook) { \
79  blockErrorHook = true; \
80  ErrorHook(error); \
81  blockErrorHook = false; \
82  } \
83  }
84 #else
85 
93 #define OS_CALL_ERROR_HOOK(error)
94 #endif /* defined(OS_CONFIG_HOOK_ERROR) && OS_CONFIG_HOOK_ERROR == true && !defined(__DOXYGEN__) */
95 
96 #if defined(OS_CONFIG_MAX_ERROR_PARAM) && OS_CONFIG_MAX_ERROR_PARAM >= 0 && !defined(__DOXYGEN__)
97 #if OS_CONFIG_MAX_ERROR_PARAM == 0
98 #define OS_SET_ERROR_INFO0(serviceId) ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { \
99  errorInfo.id = serviceId; \
100  }
101 
102 #define OS_SET_ERROR_INFO1(serviceId, paramPtr1, size1) ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { \
103  errorInfo.id = serviceId; \
104  }
105 
106 #define OS_SET_ERROR_INFO2(serviceId, paramPtr1, size1, \
107  paramPtr2, size2) ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { \
108  errorInfo.id = serviceId; \
109  }
110 
111 #define OS_SET_ERROR_INFO3(serviceId, paramPtr1, size1, \
112  paramPtr2, size2, \
113  paramPtr3, size3) ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { \
114  errorInfo.id = serviceId; \
115  }
116 #endif /* OS_CONFIG_MAX_ERROR_PARAM == 0 */
117 
118 #if OS_CONFIG_MAX_ERROR_PARAM == 1
119 #define OS_SET_ERROR_INFO0(serviceId) ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { \
120  errorInfo.id = serviceId; \
121  }
122 
123 #define OS_SET_ERROR_INFO1(serviceId, paramPtr1, size1) ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { \
124  errorInfo.id = serviceId; \
125  memcpy((uint8_t*) &errorInfo.param1, paramPtr1, size1); \
126  }
127 
128 #define OS_SET_ERROR_INFO2(serviceId, paramPtr1, size1, \
129  paramPtr2, size2) ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { \
130  errorInfo.id = serviceId; \
131  memcpy((uint8_t*) &errorInfo.param1, paramPtr1, size1); \
132  }
133 
134 #define OS_SET_ERROR_INFO3(serviceId, paramPtr1, size1, \
135  paramPtr2, size2, \
136  paramPtr3, size3) ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { \
137  errorInfo.id = serviceId; \
138  memcpy((uint8_t*) &errorInfo.param1, paramPtr1, size1); \
139  }
140 #endif /* OS_CONFIG_MAX_ERROR_PARAM == 1 */
141 
142 #if OS_CONFIG_MAX_ERROR_PARAM == 2
143 #define OS_SET_ERROR_INFO0(serviceId) ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { \
144  errorInfo.id = serviceId; \
145  }
146 
147 #define OS_SET_ERROR_INFO1(serviceId, paramPtr1, size1) ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { \
148  errorInfo.id = serviceId; \
149  memcpy((uint8_t*) &errorInfo.param1, paramPtr1, size1); \
150  }
151 
152 #define OS_SET_ERROR_INFO2(serviceId, paramPtr1, size1, \
153  paramPtr2, size2) ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { \
154  errorInfo.id = serviceId; \
155  memcpy((uint8_t*) &errorInfo.param1, paramPtr1, size1); \
156  memcpy((uint8_t*) &errorInfo.param2, paramPtr2, size2); \
157  }
158 
159 #define OS_SET_ERROR_INFO3(serviceId, paramPtr1, size1, \
160  paramPtr2, size2, \
161  paramPtr3, size3) ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { \
162  errorInfo.id = serviceId; \
163  memcpy((uint8_t*) &errorInfo.param1, paramPtr1, size1); \
164  memcpy((uint8_t*) &errorInfo.param2, paramPtr2, size2); \
165  }
166 #endif /* OS_CONFIG_MAX_ERROR_PARAM == 2 */
167 
168 #if OS_CONFIG_MAX_ERROR_PARAM == 3
169 #define OS_SET_ERROR_INFO0(serviceId) ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { \
170  errorInfo.id = serviceId; \
171  }
172 
173 #define OS_SET_ERROR_INFO1(serviceId, paramPtr1, size1) ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { \
174  errorInfo.id = serviceId; \
175  memcpy((uint8_t*) &errorInfo.param1, paramPtr1, size1); \
176  }
177 
178 #define OS_SET_ERROR_INFO2(serviceId, paramPtr1, size1, \
179  paramPtr2, size2) ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { \
180  errorInfo.id = serviceId; \
181  memcpy((uint8_t*) &errorInfo.param1, paramPtr1, size1); \
182  memcpy((uint8_t*) &errorInfo.param2, paramPtr2, size2); \
183  }
184 
185 #define OS_SET_ERROR_INFO3(serviceId, paramPtr1, size1, \
186  paramPtr2, size2, \
187  paramPtr3, size3) ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { \
188  errorInfo.id = serviceId; \
189  memcpy((uint8_t*) &errorInfo.param1, paramPtr1, size1); \
190  memcpy((uint8_t*) &errorInfo.param2, paramPtr2, size2); \
191  memcpy((uint8_t*) &errorInfo.param3, paramPtr3, size3); \
192  }
193 #endif /* OS_CONFIG_MAX_ERROR_PARAM == 3 */
194 
195 #if OS_CONFIG_MAX_ERROR_PARAM > 3
196 #error Values of OS_CONFIG_MAX_ERROR_PARAM larger 3 are not supported!
197 #endif /* OS_CONFIG_MAX_ERROR_PARAM > 3 */
198 
199 #else /* defined(OS_CONFIG_MAX_ERROR_PARAM) && OS_CONFIG_MAX_ERROR_PARAM >= 0 && !defined(__DOXYGEN__) */
200 
208 #define OS_SET_ERROR_INFO0(serviceId)
209 
220 #define OS_SET_ERROR_INFO1(serviceId, paramPtr1, size1)
221 
234 #define OS_SET_ERROR_INFO2(serviceId, paramPtr1, size1, paramPtr2, size2)
235 
250 #define OS_SET_ERROR_INFO3(serviceId, paramPtr1, size1, paramPtr2, size2, paramPtr3, size3)
251 #endif /* defined(OS_CONFIG_MAX_ERROR_PARAM) && OS_CONFIG_MAX_ERROR_PARAM >= 0 && !defined(__DOXYGEN__) */
252 
253 /************************************************************************/
254 /* ERROR INFORMATION ACCESS MACROS */
255 /************************************************************************/
256 #define OSErrorGetServiceId() (errorInfo.id);
257 
258 /* OSServiceId_GetAlarmBase */
259 #define OSError_GetAlarmBase_AlarmID() ((AlarmType) errorInfo.param1)
260 #define OSError_GetAlarmBase_Info() ((AlarmBaseRefType) errorInfo.param2)
261 
262 /* OSServiceId_GetAlarm */
263 #define OSError_GetAlarm_AlarmID() ((AlarmType) errorInfo.param1)
264 #define OSError_GetAlarm_Tick() ((TickRefType) errorInfo.param2)
265 
266 /* OSServiceId_SetRelAlarm */
267 #define OSError_SetRelAlarm_AlarmID() ((AlarmType) errorInfo.param1)
268 #define OSError_SetRelAlarm_increment() ((TickType) errorInfo.param2)
269 #define OSError_SetRelAlarm_cycle() ((TickType) errorInfo.param3)
270 
271 /* OSServiceId_SetAbsAlarm */
272 #define OSError_SetAbsAlarm_AlarmID() ((AlarmType) errorInfo.param1)
273 #define OSError_SetAbsAlarm_start() ((TickType) errorInfo.param2)
274 #define OSError_SetAbsAlarm_cycle() ((TickType) errorInfo.param3)
275 
276 /* OSServiceId_CancelAlarm */
277 #define OSError_CancelAlarm_AlarmID() ((AlarmType) errorInfo.param1)
278 
279 /* OSServiceId_IncrementCounter */
280 #define OSError_IncrementCounter_CounterID() ((CounterType) errorInfo.param1)
281 
282 /* OSServiceId_GetCounterValue */
283 #define OSError_GetCounterValue_CounterID() ((CounterType) errorInfo.param1)
284 #define OSError_GetCounterValue_Value() ((TickRefType) errorInfo.param2)
285 
286 /* OSServiceId_GetElapsedValue */
287 #define OSError_GetElapsedValue_CounterID() ((CounterType) errorInfo.param1)
288 #define OSError_GetElapsedValue_Value() ((TickRefType) errorInfo.param2)
289 #define OSError_GetElapsedValue_ElapsedValue() ((TickRefType) errorInfo.param3)
290 
291 /* OSServiceId_SetEvent */
292 #define OSError_SetEvent_TaskID() ((TaskType) errorInfo.param1)
293 #define OSError_SetEvent_Mask() ((EventMaskType) errorInfo.param2)
294 
295 /* OSServiceId_ClearEvent */
296 #define OSError_ClearEvent_Mask() ((EventMaskType) errorInfo.param1)
297 
298 /* OSServiceId_GetEvent */
299 #define OSError_GetEvent_TaskID() ((TaskType) errorInfo.param1)
300 #define OSError_GetEvent_Type() ((EventMaskRefType) errorInfo.param2)
301 
302 /* OSServiceId_WaitEvent */
303 #define OSError_WaitEvent_Mask() ((EventMaskType) errorInfo.param1)
304 
305 /* OSServiceId_StartOS */
306 #define OSError_StartOS_Mode() ((AppModeType) errorInfo.param1)
307 
308 /* OSServiceId_ShutdownOS */
309 #define OSError_ShutdownOS_Error ((StatusType) errorInfo.param1)
310 
311 /* OSServiceId_GetResource */
312 #define OSError_GetResource_ResID() ((ResourceType) errorInfo.param1)
313 
314 /* OSServiceId_ReleaseResource */
315 #define OSError_ReleaseResource_ResID() ((ResourceType) errorInfo.param1)
316 
317 /* OSServiceId_ActivateTask */
318 #define OSError_ActivateTask_TaskID() ((TaskType) errorInfo.param1)
319 
320 /* OSServiceId_ChainTask */
321 #define OSError_ChainTask_TaskID() ((TaskType) errorInfo.param1)
322 
323 /* OSServiceId_GetTaskID */
324 #define OSError_GetTaskID_TaskID() ((TaskRefType) errorInfo.param1)
325 
326 /* OSServiceId_GetTaskState */
327 #define OSError_GetTaskState_TaskID() ((TaskType) errorInfo.param1)
328 #define OSError_GetTaskState_State() ((TaskStateRefType) errorInfo.param2)
329 
330 /* OSServiceId_StartScheduleTableRel */
331 #define OSError_StartScheduleTableRel_ScheduleTableID ((ScheduleTableType) errorInfo.param1)
332 #define OSError_StartScheduleTableRel_Offset ((TickType) errorInfo.param2)
333 
334 /* OSServiceId_StartScheduleTableAbs */
335 #define OSError_StartScheduleTableAbs_ScheduleTableID ((ScheduleTableType) errorInfo.param1)
336 #define OSError_StartScheduleTableAbs_Start ((TickType) errorInfo.param2)
337 
338 /* OSServiceId_StopScheduleTable */
339 #define OSError_StopScheduleTable_ScheduleTableID ((ScheduleTableType) errorInfo.param1)
340 
341 /* OSServiceId_NextScheduleTable */
342 #define OSError_NextScheduleTable_ScheduleTableID_From ((ScheduleTableType) errorInfo.param1)
343 #define OSError_NextScheduleTable_ScheduleTableID_To ((ScheduleTableType) errorInfo.param2)
344 
345 /* OSServiceId_GetScheduleTableStatus */
346 #define OSError_GetScheduleTableStatus_ScheduleTableID ((ScheduleTableType) errorInfo.param1)
347 #define OSError_GetScheduleTableStatus_ScheduleStatus ((ScheduleTableStatusRefType) errorInfo.param2)
348 
349 #endif /* ERRORTYPES_H_ */
OSServiceId_WaitEvent
@ OSServiceId_WaitEvent
Definition: ErrorTypes.h:35
OSServiceId_GetAlarm
@ OSServiceId_GetAlarm
Definition: ErrorTypes.h:25
OSServiceId_GetAlarmBase
@ OSServiceId_GetAlarmBase
Definition: ErrorTypes.h:24
OSServiceId_Schedule
@ OSServiceId_Schedule
Definition: ErrorTypes.h:50
OSServiceId_NextScheduleTable
@ OSServiceId_NextScheduleTable
Definition: ErrorTypes.h:56
OSServiceId_CancelAlarm
@ OSServiceId_CancelAlarm
Definition: ErrorTypes.h:28
OSServiceId_SetRelAlarm
@ OSServiceId_SetRelAlarm
Definition: ErrorTypes.h:26
OSServiceId_ResumeOSInterrupts
@ OSServiceId_ResumeOSInterrupts
Definition: ErrorTypes.h:43
OSServiceId_EnableAllInterrupts
@ OSServiceId_EnableAllInterrupts
Definition: ErrorTypes.h:39
OSServiceId_GetTaskID
@ OSServiceId_GetTaskID
Definition: ErrorTypes.h:51
OSServiceId_StopScheduleTable
@ OSServiceId_StopScheduleTable
Definition: ErrorTypes.h:55
OSServiceId_GetScheduleTableStatus
@ OSServiceId_GetScheduleTableStatus
Definition: ErrorTypes.h:57
OSServiceId_ActivateTask
@ OSServiceId_ActivateTask
Definition: ErrorTypes.h:47
OSServiceIdType
enum osServiceIdType OSServiceIdType
Type for Service IDs.
OSServiceId_ReleaseResource
@ OSServiceId_ReleaseResource
Definition: ErrorTypes.h:46
OSServiceId_ClearEvent
@ OSServiceId_ClearEvent
Definition: ErrorTypes.h:33
OSServiceId_IncrementCounter
@ OSServiceId_IncrementCounter
Definition: ErrorTypes.h:29
OSServiceId_StartScheduleTableAbs
@ OSServiceId_StartScheduleTableAbs
Definition: ErrorTypes.h:54
OSServiceId_GetActiveApplicationMode
@ OSServiceId_GetActiveApplicationMode
Definition: ErrorTypes.h:38
OSServiceId_GetTaskState
@ OSServiceId_GetTaskState
Definition: ErrorTypes.h:52
errorInfo_s
Structure used for saving error information.
Definition: ErrorTypes.h:63
OSServiceId_ResumeAllInterrupts
@ OSServiceId_ResumeAllInterrupts
Definition: ErrorTypes.h:41
errorInfo_s::id
OSServiceIdType id
ID of service.
Definition: ErrorTypes.h:64
OSServiceId_SetAbsAlarm
@ OSServiceId_SetAbsAlarm
Definition: ErrorTypes.h:27
OSServiceId_GetResource
@ OSServiceId_GetResource
Definition: ErrorTypes.h:45
OSServiceId_TerminateTask
@ OSServiceId_TerminateTask
Definition: ErrorTypes.h:49
OSServiceId_StartOS
@ OSServiceId_StartOS
Definition: ErrorTypes.h:36
OSServiceId_ShutdownOS
@ OSServiceId_ShutdownOS
Definition: ErrorTypes.h:37
OSServiceId_DisableAllInterrupts
@ OSServiceId_DisableAllInterrupts
Definition: ErrorTypes.h:40
OSServiceId_SuspendOSInterrupts
@ OSServiceId_SuspendOSInterrupts
Definition: ErrorTypes.h:44
OSServiceId_SetEvent
@ OSServiceId_SetEvent
Definition: ErrorTypes.h:32
osServiceIdType
osServiceIdType
Type for Service IDs.
Definition: ErrorTypes.h:23
OSServiceId_ChainTask
@ OSServiceId_ChainTask
Definition: ErrorTypes.h:48
OSServiceId_SuspendAllInterrupts
@ OSServiceId_SuspendAllInterrupts
Definition: ErrorTypes.h:42
OSServiceId_GetCounterValue
@ OSServiceId_GetCounterValue
Definition: ErrorTypes.h:30
OSServiceId_StartScheduleTableRel
@ OSServiceId_StartScheduleTableRel
Definition: ErrorTypes.h:53
OSServiceId_GetEvent
@ OSServiceId_GetEvent
Definition: ErrorTypes.h:34
OSServiceId_GetElapsedValue
@ OSServiceId_GetElapsedValue
Definition: ErrorTypes.h:31