28 #include <oc_modules_cfg.h> 29 #include <oc_stdlib.h> 40 #define _________________________________________GLOBALS_SECTION____________________________________________________________________________ 43 #define TURN_ON(Name) extern const oC_Module_Registration_t Name; 45 CFG_LIST_MODULES(TURN_ON,TURN_OFF);
49 #define TURN_ON(ModuleName) &ModuleName , 52 CFG_LIST_MODULES(TURN_ON,TURN_OFF)
57 #undef _________________________________________GLOBALS_SECTION____________________________________________________________________________ 64 #define _________________________________________FUNCTIONS_SECTION__________________________________________________________________________ 73 oC_ARRAY_FOREACH_IN_ARRAY(ModuleRegistrations,registrationReference)
78 oC_SaveIfFalse(registration->Name, registration->Module != oC_Module_None, oC_ErrorCode_ModuleNotCorrect)
82 bool allRequiredEnabled =
true;
84 for( uint32_t i = 0; allRequiredEnabled && i < MAX_REQUIRED_MODULES; i++ )
86 if(registration->RequiredModules[i] != oC_Module_None)
92 if(allRequiredEnabled)
94 if(oC_SaveIfFalse(
"ModuleManager: Turn on function is not set - ", isaddresscorrect(registration->TurnOnFunction), oC_ErrorCode_WrongAddress))
96 if(oC_SaveIfErrorOccur(registration->Name, registration->TurnOnFunction()))
98 oC_SaveIfFalse(registration->Name,
oC_Module_IsTurnedOn(registration->Module), oC_ErrorCode_ModuleHasNotStartedCorrectly);
113 for( uint32_t moduleToTurnOffIndex = 0; moduleToTurnOffIndex <
oC_ARRAY_SIZE(ModuleRegistrations); moduleToTurnOffIndex++ )
115 bool someOfModulesRequireThisModule =
false;
119 oC_SaveIfFalse(moduleToTurnOff->Name, moduleToTurnOff->Module != oC_Module_None, oC_ErrorCode_ModuleNotCorrect)
123 for( uint32_t moduleToCheckRequirements = 0 ; someOfModulesRequireThisModule ==
false && moduleToCheckRequirements <
oC_ARRAY_SIZE(ModuleRegistrations) ; moduleToCheckRequirements++ )
127 for( uint32_t i = 0; someOfModulesRequireThisModule ==
false && i < MAX_REQUIRED_MODULES; i++ )
129 if(moduleToCheck->RequiredModules[i] == moduleToTurnOff->Module)
136 if(someOfModulesRequireThisModule ==
false)
138 if(oC_SaveIfFalse(
"ModuleManager: Turn off function is not set - ", isaddresscorrect(moduleToTurnOff->TurnOffFunction), oC_ErrorCode_WrongAddress))
140 if(oC_SaveIfErrorOccur(moduleToTurnOff->Name, moduleToTurnOff->TurnOffFunction()))
142 oC_SaveIfFalse(moduleToTurnOff->Name,
oC_Module_IsTurnedOn(moduleToTurnOff->Module) ==
false, oC_ErrorCode_ModuleHasNotBeenStoppedCorrectly );
157 oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
159 if(ErrorCondition( isaddresscorrect(Name), oC_ErrorCode_WrongAddress))
161 errorCode = oC_ErrorCode_ObjectNotFoundOnList;
163 oC_ARRAY_FOREACH_IN_ARRAY(ModuleRegistrations,registrationReference)
167 strcmp(Name, registration->Name) == 0
168 && ErrorCondition(registration->Module != oC_Module_None , oC_ErrorCode_ModuleNotCorrect )
169 && ErrorCondition(
oC_Module_IsTurnedOn(registration->Module) ==
false , oC_ErrorCode_ModuleIsTurnedOn )
172 bool allRequiredEnabled =
true;
174 for( uint32_t i = 0; allRequiredEnabled && i < MAX_REQUIRED_MODULES; i++ )
176 if(registration->RequiredModules[i] != oC_Module_None)
182 if(ErrorCondition( allRequiredEnabled, oC_ErrorCode_RequiredModuleNotEnabled ))
184 if(ErrorCondition( isaddresscorrect(registration->TurnOnFunction), oC_ErrorCode_WrongAddress ))
186 if( ErrorCode( registration->TurnOnFunction() ) )
188 errorCode = oC_ErrorCode_None;
189 ErrorCondition(
oC_Module_IsTurnedOn(registration->Module), oC_ErrorCode_ModuleHasNotStartedCorrectly );
208 oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
210 if(ErrorCondition( isaddresscorrect(Name), oC_ErrorCode_WrongAddress))
212 errorCode = oC_ErrorCode_ObjectNotFoundOnList;
214 for( uint32_t moduleToTurnOffIndex = 0; moduleToTurnOffIndex <
oC_ARRAY_SIZE(ModuleRegistrations); moduleToTurnOffIndex++ )
216 bool someOfModulesRequireThisModule =
false;
220 strcmp(Name, moduleToTurnOff->Name) == 0
221 && ErrorCondition(moduleToTurnOff->Module != oC_Module_None , oC_ErrorCode_ModuleNotCorrect )
222 && ErrorCondition(
oC_Module_IsTurnedOn(moduleToTurnOff->Module) ==
true , oC_ErrorCode_ModuleNotStartedYet )
225 for( uint32_t moduleToCheckRequirements = 0 ; someOfModulesRequireThisModule ==
false && moduleToCheckRequirements <
oC_ARRAY_SIZE(ModuleRegistrations) ; moduleToCheckRequirements++ )
229 for( uint32_t i = 0; someOfModulesRequireThisModule ==
false && i < MAX_REQUIRED_MODULES; i++ )
231 if(moduleToCheck->RequiredModules[i] == moduleToTurnOff->Module)
238 if(ErrorCondition(someOfModulesRequireThisModule ==
false, oC_ErrorCode_ModuleUsedByDifferentModule))
240 if(ErrorCondition( isaddresscorrect(moduleToTurnOff->TurnOffFunction), oC_ErrorCode_WrongAddress ))
242 if( ErrorCode( moduleToTurnOff->TurnOffFunction() ) )
244 errorCode = oC_ErrorCode_None;
245 ErrorCondition(
oC_Module_IsTurnedOn(moduleToTurnOff->Module) ==
false, oC_ErrorCode_ModuleHasNotBeenStoppedCorrectly );
265 oC_ARRAY_FOREACH_IN_ARRAY(ModuleRegistrations,registrationReference)
269 if(strcmp(Name,registration->Name) == 0)
271 foundRegistration = registration;
276 return foundRegistration;
279 #undef _________________________________________FUNCTIONS_SECTION__________________________________________________________________________ oC_ErrorCode_t oC_ModuleMan_TurnOnModule(const char *Name)
turns on the module
#define oC_ARRAY_SIZE(ARRAY)
returns size of static array
oC_ErrorCode_t oC_ModuleMan_TurnOffModule(const char *Name)
turns off the module
static bool oC_Module_IsTurnedOn(oC_Module_t Module)
checks if the module is turned on
The file with interface for interrupt manager.
void oC_ModuleMan_TurnOffAllPossible(void)
turns off all possible modules
Static array definitions.
The file with interface for string library.
const oC_Module_Registration_t * oC_ModuleMan_GetModuleRegistration(const char *Name)
returns module registration
void oC_ModuleMan_TurnOnAllPossible(void)
turns on all modules that turning on is possible
Manages modules in the system.
#define NULL
pointer to a zero