ODeV framework  v2
AManagedTaskVtbl.h
Go to the documentation of this file.
1 
31 #ifndef INCLUDE_SERVICES_AMANAGEDTASKVTBL_H_
32 #define INCLUDE_SERVICES_AMANAGEDTASKVTBL_H_
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
38 #include "systypes.h"
39 #include "syserror.h"
40 #include "systp.h"
41 #include "FreeRTOS.h"
42 #include "task.h"
43 
47 typedef struct _AManagedTask_vtbl AManagedTask_vtbl;
48 
49 struct _AManagedTask_vtbl {
50  sys_error_code_t (*HardwareInit)(AManagedTask *this, void *pParams);
51  sys_error_code_t (*OnCreateTask)(AManagedTask *this, TaskFunction_t *pvTaskCode, const char **pcName, unsigned short *pnStackDepth, void **pParams, UBaseType_t *pxPriority);
52  sys_error_code_t (*DoEnterPowerMode)(AManagedTask *this, const EPowerMode eActivePowerMode, const EPowerMode eNewPowerMode);
53  sys_error_code_t (*HandleError)(AManagedTask *this, SysEvent xError);
54 };
55 
60 typedef struct _AMTStatus {
66 
71 
77 
81  uint8_t nIsTaskStillRunning: 1;
82 
86  uint8_t nErrorCount: 3;
87 
88  uint8_t nReserved : 1;
89 } AMTStatus;
90 
95 struct _AManagedTask {
100 
104  TaskHandle_t m_xThaskHandle;
105 
110 
115 };
116 
117 extern EPowerMode SysGetPowerMode();
118 
119 
120 // Inline functions definition
121 // ***************************
122 
123 SYS_DEFINE_INLINE
125  return this->vptr->HardwareInit(this, pParams);
126 }
127 
128 SYS_DEFINE_INLINE
129 sys_error_code_t AMTOnCreateTask(AManagedTask *this, TaskFunction_t *pvTaskCode, const char **pcName, unsigned short *pnStackDepth, void **pParams, UBaseType_t *pxPriority) {
130  return this->vptr->OnCreateTask(this, pvTaskCode, pcName, pnStackDepth, pParams, pxPriority);
131 }
132 
133 SYS_DEFINE_INLINE
134 sys_error_code_t AMTDoEnterPowerMode(AManagedTask *this, const EPowerMode eActivePowerMode, const EPowerMode eNewPowerMode) {
135  return this->vptr->DoEnterPowerMode(this, eActivePowerMode, eNewPowerMode);
136 }
137 
138 SYS_DEFINE_INLINE
140  return this->vptr->HandleError(this, xError);
141 }
142 
143 SYS_DEFINE_INLINE
145  this->m_pNext = NULL;
146  this->m_xThaskHandle = NULL;
150  this->m_xStatus.nIsTaskStillRunning = 0;
151  this->m_xStatus.nErrorCount = 0;
152  this->m_xStatus.nReserved = 0;
153 
154  return SYS_NO_ERROR_CODE;
155 }
156 
157 SYS_DEFINE_INLINE
158 EPowerMode AMTGetSystemPowerMode() {
159  return SysGetPowerMode();
160 }
161 
162 SYS_DEFINE_INLINE
164 
165  if (SYS_IS_ERROR_CODE(nStepError) && (this->m_xStatus.nErrorCount < MT_MAX_ERROR_COUNT)) {
166  this->m_xStatus.nErrorCount++;
167  }
169  this->m_xStatus.nIsTaskStillRunning = 1;
170  }
171 
172  return SYS_NO_ERROR_CODE;
173 }
174 
175 SYS_DEFINE_INLINE
178 }
179 
180 SYS_DEFINE_INLINE
182  return this->m_xStatus.nPowerModeSwitchPending;
183 }
184 
185 SYS_DEFINE_INLINE
187  UNUSED(nStepError);
188 
189  this->m_xStatus.nErrorCount++;
190 }
191 
192 
193 #ifdef __cplusplus
194 }
195 #endif
196 
197 
198 #endif /* INCLUDE_SERVICES_AMANAGEDTASKVTBL_H_ */
Definition: sysevent.h:44
Define the global error management API.
struct _AMTStatus AMTStatus
SYS_DEFINE_INLINE sys_error_code_t AMTHardwareInit(AManagedTask *this, void *pParams)
Definition: AManagedTaskVtbl.h:124
uint8_t nIsTaskStillRunning
Definition: AManagedTaskVtbl.h:81
uint8_t nDelayPowerModeSwitch
Definition: AManagedTaskVtbl.h:65
SYS_DEFINE_INLINE sys_error_code_t AMTInit(AManagedTask *this)
Definition: AManagedTaskVtbl.h:144
Definition: AManagedTaskVtbl.h:95
AMTStatus m_xStatus
Definition: AManagedTaskVtbl.h:114
SYS_DEFINE_INLINE sys_error_code_t AMTDoEnterPowerMode(AManagedTask *this, const EPowerMode eActivePowerMode, const EPowerMode eNewPowerMode)
Definition: AManagedTaskVtbl.h:134
const AManagedTask_vtbl * vptr
Definition: AManagedTaskVtbl.h:99
void SysResetAEDCounter()
Definition: sysinit.c:267
uint8_t nPowerModeSwitchDone
Definition: AManagedTaskVtbl.h:76
uint8_t nPowerModeSwitchPending
Definition: AManagedTaskVtbl.h:70
Definition: AManagedTaskVtbl.h:60
SYS_DEFINE_INLINE EPowerMode AMTGetSystemPowerMode()
Definition: AManagedTaskVtbl.h:158
struct _AManagedTask * m_pNext
Definition: AManagedTaskVtbl.h:109
#define MT_MAX_ERROR_COUNT
Definition: AManagedTask.h:44
SYS_DEFINE_INLINE sys_error_code_t AMTNotifyIsStillRunning(AManagedTask *this, sys_error_code_t nStepError)
Definition: AManagedTaskVtbl.h:163
struct _AManagedTask_vtbl AManagedTask_vtbl
Definition: AManagedTaskVtbl.h:47
SYS_DEFINE_INLINE sys_error_code_t AMTOnCreateTask(AManagedTask *this, TaskFunction_t *pvTaskCode, const char **pcName, unsigned short *pnStackDepth, void **pParams, UBaseType_t *pxPriority)
Definition: AManagedTaskVtbl.h:129
SYS_DEFINE_INLINE boolean_t AMTIsPowerModeSwitchPending(AManagedTask *this)
Definition: AManagedTaskVtbl.h:181
SYS_DEFINE_INLINE void AMTReportErrOnStepExecution(AManagedTask *this, sys_error_code_t nStepError)
Definition: AManagedTaskVtbl.h:186
SYS_DEFINE_INLINE void AMTResetAEDCounter(AManagedTask *this)
Definition: AManagedTaskVtbl.h:176
Common type declaration.
#define MT_ALLOWED_ERROR_COUNT
Definition: AManagedTask.h:51
uint8_t nErrorCount
Definition: AManagedTaskVtbl.h:86
TaskHandle_t m_xThaskHandle
Definition: AManagedTaskVtbl.h:104
unsigned short sys_error_code_t
Definition: syserror.h:45
SYS_DEFINE_INLINE sys_error_code_t AMTHandleError(AManagedTask *this, SysEvent xError)
Definition: AManagedTaskVtbl.h:139
Target platform definition.