28 #include <oc_stdlib.h> 36 #define _________________________________________IF_FUNCTIONS_SECTION_______________________________________________________________________ 40 bool oC_Driver_IsDriverRequiredBy( oC_Driver_t Driver , oC_Driver_t RequiredDriver )
42 bool required =
false;
44 if(isaddresscorrect(Driver) && isaddresscorrect(RequiredDriver))
46 for(uint16_t driverIndex = 0; driverIndex < Driver->RequiredCount ; driverIndex++)
48 if(Driver->RequiredList[driverIndex] == RequiredDriver)
61 oC_Driver_Type_t oC_Driver_GetDriverType( oC_Driver_t Driver )
63 oC_Driver_Type_t type = oC_Driver_Type_Incorrect;
65 if(isaddresscorrect(Driver))
75 bool oC_Driver_ReadRequiredList( oC_Driver_t Driver , oC_Driver_RequiredList_t * outRequiredList , uint16_t * outRequiredListCount )
79 if(isaddresscorrect(Driver) && isram(outRequiredList) && isram(outRequiredListCount))
81 *outRequiredList = Driver->RequiredList;
82 *outRequiredListCount = Driver->RequiredCount;
90 oC_ErrorCode_t oC_Driver_TurnOn( oC_Driver_t Driver )
92 oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
95 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver) , oC_ErrorCode_WrongAddress )
98 if(Driver->IsTurnedOn ==
NULL)
100 errorCode = oC_ErrorCode_None;
102 else if(isaddresscorrect(Driver->IsTurnedOn) ==
false)
104 errorCode = oC_ErrorCode_WrongAddress;
106 else if(Driver->IsTurnedOn())
108 errorCode = oC_ErrorCode_ModuleIsTurnedOn;
112 if(Driver->TurnOn ==
NULL)
114 errorCode = oC_ErrorCode_None;
116 if(isaddresscorrect(Driver->TurnOn))
118 errorCode = Driver->TurnOn();
122 errorCode = oC_ErrorCode_WrongAddress;
132 oC_ErrorCode_t oC_Driver_TurnOff( oC_Driver_t Driver )
134 oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
137 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver) , oC_ErrorCode_WrongAddress )
140 if(Driver->IsTurnedOn ==
NULL)
142 errorCode = oC_ErrorCode_None;
144 else if(isaddresscorrect(Driver->IsTurnedOn) ==
false)
146 errorCode = oC_ErrorCode_WrongAddress;
148 else if(Driver->IsTurnedOn() ==
false)
150 errorCode = oC_ErrorCode_ModuleNotStartedYet;
154 if(Driver->TurnOff ==
NULL)
156 errorCode = oC_ErrorCode_None;
158 if(isaddresscorrect(Driver->TurnOff))
160 errorCode = Driver->TurnOff();
164 errorCode = oC_ErrorCode_WrongAddress;
174 bool oC_Driver_IsTurnedOn( oC_Driver_t Driver )
176 bool turnedOn =
false;
178 if(isaddresscorrect(Driver))
180 if(Driver->IsTurnedOn ==
NULL)
184 else if(isaddresscorrect(Driver->IsTurnedOn))
186 turnedOn = Driver->IsTurnedOn();
195 oC_ErrorCode_t oC_Driver_Configure( oC_Driver_t Driver ,
const void * Config ,
void ** outContext )
197 oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
200 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver) , oC_ErrorCode_WrongAddress ) &&
201 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver->Configure) , oC_ErrorCode_NotHandledByDriver )
204 errorCode = Driver->Configure(Config,outContext);
212 oC_ErrorCode_t oC_Driver_Unconfigure( oC_Driver_t Driver ,
const void * Config ,
void ** outContext )
214 oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
217 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver) , oC_ErrorCode_WrongAddress ) &&
218 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver->Unconfigure), oC_ErrorCode_NotHandledByDriver )
221 errorCode = Driver->Unconfigure(Config,outContext);
229 oC_ErrorCode_t oC_Driver_Read( oC_Driver_t Driver ,
void * Context ,
char * outBuffer , uint32_t * Size , oC_Time_t Timeout )
231 oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
234 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver) , oC_ErrorCode_WrongAddress ) &&
235 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver->Read), oC_ErrorCode_NotHandledByDriver )
238 errorCode = Driver->Read(Context,outBuffer,Size,Timeout);
246 oC_ErrorCode_t oC_Driver_Write( oC_Driver_t Driver ,
void * Context ,
const char * Buffer , uint32_t * Size , oC_Time_t Timeout )
248 oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
251 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver) , oC_ErrorCode_WrongAddress ) &&
252 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver->Write), oC_ErrorCode_NotHandledByDriver )
255 errorCode = Driver->Write(Context,Buffer,Size,Timeout);
263 oC_ErrorCode_t oC_Driver_HandleIoctl( oC_Driver_t Driver ,
void * Context , oC_Ioctl_Command_t Command ,
void * Data )
265 oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
268 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver) , oC_ErrorCode_WrongAddress ) &&
269 oC_AssignErrorCodeIfFalse(&errorCode , oC_Ioctl_IsCorrectCommand(Command), oC_ErrorCode_CommandNotCorrect )
272 if(Command == oC_IoCtl_SpecialCommand_GetDriverVersion)
276 *((uint32_t*)Data) = Driver->Version;
277 errorCode = oC_ErrorCode_None;
281 errorCode = oC_ErrorCode_OutputAddressNotInRAM;
284 else if(ErrorCondition(isaddresscorrect(Driver->HandleIoctl), oC_ErrorCode_NotHandledByDriver ))
286 errorCode = Driver->HandleIoctl(Context,Command,Data);
295 oC_ErrorCode_t oC_Driver_ReadColorMap( oC_Driver_t Driver ,
void * Context ,
oC_ColorMap_t ** outColorMap )
297 oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
300 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver) , oC_ErrorCode_WrongAddress ) &&
301 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver->ReadColorMap), oC_ErrorCode_NotHandledByDriver )
304 errorCode = Driver->ReadColorMap(Context,outColorMap);
312 oC_ErrorCode_t oC_Driver_SetResolution( oC_Driver_t Driver ,
void * Context , oC_Pixel_ResolutionUInt_t Width , oC_Pixel_ResolutionUInt_t Height )
314 oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
317 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver) , oC_ErrorCode_WrongAddress ) &&
318 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver->SetResolution), oC_ErrorCode_NotHandledByDriver )
321 errorCode = Driver->SetResolution(Context,Width,Height);
329 oC_ErrorCode_t oC_Driver_ReadResolution( oC_Driver_t Driver ,
void * Context , oC_Pixel_ResolutionUInt_t * outWidth , oC_Pixel_ResolutionUInt_t * outHeight )
331 oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
334 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver) , oC_ErrorCode_WrongAddress ) &&
335 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver->ReadResolution), oC_ErrorCode_NotHandledByDriver )
338 errorCode = Driver->ReadResolution(Context,outWidth,outHeight);
346 oC_ErrorCode_t oC_Driver_SendFrame( oC_Driver_t Driver ,
void * Context ,
const oC_Net_Frame_t * Frame , oC_Time_t Timeout )
348 oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
351 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver) , oC_ErrorCode_WrongAddress ) &&
352 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver->SendFrame) , oC_ErrorCode_NotHandledByDriver )
355 errorCode = Driver->SendFrame(Context,Frame,Timeout);
363 oC_ErrorCode_t oC_Driver_ReceiveFrame( oC_Driver_t Driver ,
void * Context ,
oC_Net_Frame_t * outFrame , oC_Time_t Timeout )
365 oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
368 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver) , oC_ErrorCode_WrongAddress ) &&
369 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver->ReceiveFrame) , oC_ErrorCode_NotHandledByDriver )
372 errorCode = Driver->ReceiveFrame(Context,outFrame,Timeout);
380 oC_ErrorCode_t oC_Driver_SetWakeOnLanEvent( oC_Driver_t Driver ,
void * Context ,
oC_Event_t WolEvent )
382 oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
385 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver) , oC_ErrorCode_WrongAddress ) &&
386 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver->SetWakeOnLanEvent) , oC_ErrorCode_NotHandledByDriver )
389 errorCode = Driver->SetWakeOnLanEvent(Context,WolEvent);
397 oC_ErrorCode_t oC_Driver_Flush( oC_Driver_t Driver ,
void * Context )
399 oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
402 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver) , oC_ErrorCode_WrongAddress ) &&
403 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver->Flush) , oC_ErrorCode_NotHandledByDriver )
406 errorCode = Driver->Flush(Context);
414 oC_ErrorCode_t oC_Driver_SetLoopback( oC_Driver_t Driver ,
void * Context ,
oC_Net_Layer_t Layer ,
bool Enabled )
416 oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
419 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver) , oC_ErrorCode_WrongAddress ) &&
420 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver->SetLoopback) , oC_ErrorCode_NotHandledByDriver )
423 errorCode = Driver->SetLoopback(Context,Layer,Enabled);
431 oC_ErrorCode_t oC_Driver_PerformDiagnostics( oC_Driver_t Driver ,
void * Context ,
oC_Diag_t * outDiags , uint32_t * NumberOfDiags )
433 oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
436 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver) , oC_ErrorCode_WrongAddress ) &&
437 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver->PerformDiagnostics) , oC_ErrorCode_NotHandledByDriver )
440 errorCode = Driver->PerformDiagnostics(Context,outDiags,NumberOfDiags);
448 oC_ErrorCode_t oC_Driver_ReadNetInfo( oC_Driver_t Driver ,
void * Context ,
oC_Net_Info_t * outInfo )
450 oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
453 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver) , oC_ErrorCode_WrongAddress ) &&
454 oC_AssignErrorCodeIfFalse(&errorCode , isaddresscorrect(Driver->ReadNetInfo) , oC_ErrorCode_NotHandledByDriver )
457 errorCode = Driver->ReadNetInfo(Context,outInfo);
463 #undef _________________________________________IF_FUNCTIONS_SECTION_______________________________________________________________________ stores network interface informations
The file with interface for driver creating.
stores informations about the frame to send
The file with interface for IOCTL.
#define NULL
pointer to a zero
oC_Net_Layer_t
stores layer of the OSI model