Choco OS  V.0.16.9.0
Join to the chocolate world
oc_lcdtft.c
Go to the documentation of this file.
1 
30 #include <oc_lcdtft.h>
31 #include <oc_lcdtft_lld.h>
32 #include <oc_compiler.h>
33 #include <oc_module.h>
34 #include <oc_intman.h>
35 #include <oc_null.h>
36 #include <oc_gpio.h>
37 #include <string.h>
38 
39 #ifdef oC_LCDTFT_LLD_AVAILABLE
40 
46 #define _________________________________________DRIVER_DEFINITIONS_SECTION_________________________________________________________________
47 
48 #define DRIVER_SOURCE
49 
50 /* Driver basic definitions */
51 #define DRIVER_NAME LCDTFT
52 #define DRIVER_FILE_NAME "lcdtft"
53 #define DRIVER_TYPE GRAPHICS_DRIVER
54 #define DRIVER_VERSION oC_Driver_MakeVersion(1,0,0)
55 #define REQUIRED_DRIVERS &GPIO
56 #define REQUIRED_BOOT_LEVEL oC_Boot_Level_RequireMemoryManager | oC_Boot_Level_RequireDriversManager
57 
58 /* Driver interface definitions */
59 #define DRIVER_CONFIGURE oC_LCDTFT_Configure
60 #define DRIVER_UNCONFIGURE oC_LCDTFT_Unconfigure
61 #define DRIVER_TURN_ON oC_LCDTFT_TurnOn
62 #define DRIVER_TURN_OFF oC_LCDTFT_TurnOff
63 #define IS_TURNED_ON oC_LCDTFT_IsTurnedOn
64 #define HANDLE_IOCTL oC_LCDTFT_Ioctl
65 #define READ_COLOR_MAP oC_LCDTFT_ReadColorMap
66 #define SET_RESOLUTION oC_LCDTFT_SetResolution
67 #define READ_RESOLUTION oC_LCDTFT_ReadResolution
68 
69 #undef _________________________________________DRIVER_DEFINITIONS_SECTION_________________________________________________________________
70 
71 /* This header must be always at the end of include list */
72 #include <oc_driver.h>
73 
79 #define _________________________________________TYPES_SECTION______________________________________________________________________________
80 
81 //==========================================================================================================================================
87 //==========================================================================================================================================
88 struct Context_t
89 {
92  oC_LCDTFT_LLD_TimingParameters_t TimingParameters;
93  union
94  {
95  oC_ColorMap_t* ColorMap;
96  const oC_ColorMap_t* ConstColorMap;
97  };
98  bool ColorMapAllocated;
99 };
100 
101 #undef _________________________________________TYPES_SECTION______________________________________________________________________________
102 
103 
104 
110 #define _________________________________________VARIABLES_SECTION__________________________________________________________________________
111 
112 //==========================================================================================================================================
116 //==========================================================================================================================================
117 static const oC_Allocator_t Allocator = {
118  .Name = "lcdtft"
119 };
120 
121 #undef _________________________________________VARIABLES_SECTION__________________________________________________________________________
122 
128 #define _________________________________________LOCAL_PROTOTYPES_SECTION___________________________________________________________________
129 
130 static inline bool IsContextCorrect ( oC_LCDTFT_Context_t Context );
131 static oC_ErrorCode_t Context_New ( const oC_LCDTFT_Config_t * Config , oC_LCDTFT_Context_t * outContext );
132 static oC_ErrorCode_t Context_Delete ( oC_LCDTFT_Context_t * outContext );
133 
134 #undef _________________________________________LOCAL_PROTOTYPES_SECTION___________________________________________________________________
135 
141 #define _________________________________________INTERFACE_FUNCTIONS_SECTION________________________________________________________________
142 
143 //==========================================================================================================================================
152 //==========================================================================================================================================
153 oC_ErrorCode_t oC_LCDTFT_TurnOn( void )
154 {
155  oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
156 
157  if(oC_Module_TurnOffVerification(&errorCode , oC_Module_LCDTFT))
158  {
159  errorCode = oC_LCDTFT_LLD_TurnOnDriver();
160 
161  if(errorCode == oC_ErrorCode_ModuleIsTurnedOn)
162  {
163  errorCode = oC_ErrorCode_None;
164  }
165 
166  if(!oC_ErrorOccur(errorCode))
167  {
168  /* This must be always at the end of the function */
169  oC_Module_TurnOn(oC_Module_LCDTFT);
170  errorCode = oC_ErrorCode_None;
171  }
172  }
173 
174  return errorCode;
175 }
176 
177 //==========================================================================================================================================
186 //==========================================================================================================================================
187 oC_ErrorCode_t oC_LCDTFT_TurnOff( void )
188 {
189  oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
190 
191  if(oC_Module_TurnOnVerification(&errorCode , oC_Module_LCDTFT))
192  {
193  /* This must be at the start of the function */
194  oC_Module_TurnOff(oC_Module_LCDTFT);
195 
196  errorCode = oC_LCDTFT_LLD_TurnOffDriver();
197 
198  if(errorCode == oC_ErrorCode_ModuleNotStartedYet)
199  {
200  errorCode = oC_ErrorCode_None;
201  }
202  }
203 
204  return errorCode;
205 }
206 
207 //==========================================================================================================================================
213 //==========================================================================================================================================
215 {
216  return oC_Module_IsTurnedOn(oC_Module_LCDTFT);
217 }
218 
219 //==========================================================================================================================================
230 //==========================================================================================================================================
231 oC_ErrorCode_t oC_LCDTFT_Configure( const oC_LCDTFT_Config_t * Config , oC_LCDTFT_Context_t * outContext )
232 {
233  oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
234 
235  if(oC_Module_TurnOnVerification(&errorCode , oC_Module_LCDTFT))
236  {
237  if(
238  ErrorCondition( isram(Config) || isrom(Config) , oC_ErrorCode_WrongConfigAddress ) &&
239  ErrorCondition( isram(outContext) , oC_ErrorCode_OutputAddressNotInRAM ) &&
240  ErrorCondition( Config->Width > 0 && Config->Height > 0 , oC_ErrorCode_ResolutionNotSet )
241  )
242  {
243  oC_IntMan_EnterCriticalSection();
244  oC_LCDTFT_Context_t context = NULL;
245  if(
246  oC_AssignErrorCode(&errorCode , Context_New(Config,&context) ) &&
247  oC_AssignErrorCode(&errorCode , oC_LCDTFT_LLD_SetPower(oC_Power_On) ) &&
248  oC_AssignErrorCode(&errorCode , oC_LCDTFT_LLD_DisableOperations() ) &&
249  oC_AssignErrorCode(&errorCode , oC_LCDTFT_LLD_SetPixelFormat(Config->ColorFormat) ) &&
250  oC_AssignErrorCode(&errorCode , oC_LCDTFT_LLD_ConnectPins(&Config->Pins) ) &&
251  oC_AssignErrorCode(&errorCode , oC_LCDTFT_LLD_SetFrequency(Config->ClockFrequency , Config->PermissibleDifference) ) &&
252  oC_AssignErrorCode(&errorCode , oC_LCDTFT_LLD_SetPixelClockPolarity(Config->PixelClockPolarity) ) &&
253  oC_AssignErrorCode(&errorCode , oC_LCDTFT_LLD_SetPolarities(Config->HSyncPolarity,Config->VSyncPolarity,Config->DESyncPolarity) ) &&
254  oC_AssignErrorCode(&errorCode , oC_LCDTFT_LLD_SetResolution(Config->Width,Config->Height) ) &&
255  oC_AssignErrorCode(&errorCode , oC_LCDTFT_LLD_SetTimingParameters(&Config->TimingParameters) ) &&
256  oC_AssignErrorCode(&errorCode , oC_LCDTFT_LLD_SetColormapBuffer(context->ColorMap->Map) ) &&
257  oC_AssignErrorCode(&errorCode , oC_LCDTFT_LLD_EnableOperations() )
258  )
259  {
260  *outContext = context;
261  errorCode = oC_ErrorCode_None;
262  }
263  else
264  {
265  oC_SaveIfErrorOccur("LCDTFT-Configure: Error while deleting context - " , Context_Delete(&context));
266  }
267  oC_IntMan_ExitCriticalSection();
268  }
269  }
270 
271  return errorCode;
272 }
273 
274 //==========================================================================================================================================
285 //==========================================================================================================================================
286 oC_ErrorCode_t oC_LCDTFT_Unconfigure( const oC_LCDTFT_Config_t * Config , oC_LCDTFT_Context_t * outContext )
287 {
288  oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
289 
290  if(oC_Module_TurnOnVerification(&errorCode , oC_Module_LCDTFT))
291  {
292  if(
293  ErrorCondition( isaddresscorrect(Config) , oC_ErrorCode_WrongConfigAddress) &&
294  ErrorCondition( isram(outContext) , oC_ErrorCode_OutputAddressNotInRAM) &&
295  ErrorCondition( IsContextCorrect(*outContext) , oC_ErrorCode_ContextNotCorrect )
296  )
297  {
298  if(
299  oC_AssignErrorCode( &errorCode , oC_LCDTFT_LLD_RestoreDefaultState() ) &&
300  oC_AssignErrorCode( &errorCode , oC_LCDTFT_LLD_DisconnectPins(&Config->Pins) ) &&
301  oC_AssignErrorCode( &errorCode , Context_Delete(outContext) )
302  )
303  {
304  errorCode = oC_ErrorCode_None;
305  }
306  }
307  }
308 
309  return errorCode;
310 }
311 
312 //==========================================================================================================================================
324 //==========================================================================================================================================
325 oC_ErrorCode_t oC_LCDTFT_Ioctl( oC_LCDTFT_Context_t Context , oC_Ioctl_Command_t Command , void * Data )
326 {
327  oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
328 
329  if(
330  oC_Module_TurnOnVerification(&errorCode , oC_Module_LCDTFT ) &&
331  ErrorCondition( isaddresscorrect(Context) , oC_ErrorCode_WrongAddress ) &&
332  ErrorCondition( oC_Ioctl_IsCorrectCommand(Command) , oC_ErrorCode_CommandNotCorrect ) &&
333  ErrorCondition( IsContextCorrect(Context) , oC_ErrorCode_ContextNotCorrect )
334  )
335  {
336  switch(Command)
337  {
338  //==============================================================================================================================
339  /*
340  * Not handled commands
341  */
342  //==============================================================================================================================
343  default:
344  errorCode = oC_ErrorCode_CommandNotHandled;
345  break;
346  }
347  }
348 
349  return errorCode;
350 }
351 
352 //==========================================================================================================================================
353 //==========================================================================================================================================
354 oC_ErrorCode_t oC_LCDTFT_SetBackgroundColor( oC_LCDTFT_Context_t Context , oC_Color_t Color , oC_ColorFormat_t ColorFormat )
355 {
356  oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
357 
358  if(oC_Module_TurnOnVerification(&errorCode , oC_Module_LCDTFT))
359  {
360  if(
361  ErrorCondition( IsContextCorrect(Context) , oC_ErrorCode_ContextNotCorrect ) &&
362  ErrorCondition( oC_Color_IsCorrect(Color) , oC_ErrorCode_ColorNotCorrect ) &&
363  ErrorCondition( oC_ColorFormat_IsCorrect(ColorFormat) , oC_ErrorCode_ColorFormatNotCorrect )
364  )
365  {
366  errorCode = oC_LCDTFT_LLD_SetBackgroundColor(Color,ColorFormat);
367  }
368  }
369 
370  return errorCode;
371 }
372 
373 //==========================================================================================================================================
374 //==========================================================================================================================================
375 oC_ErrorCode_t oC_LCDTFT_ReadBackgroundColor( oC_LCDTFT_Context_t Context , oC_Color_t * outColor , oC_ColorFormat_t ColorFormat )
376 {
377  oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
378 
379  if(oC_Module_TurnOnVerification(&errorCode , oC_Module_LCDTFT))
380  {
381  if(
382  ErrorCondition( IsContextCorrect(Context) , oC_ErrorCode_ContextNotCorrect ) &&
383  ErrorCondition( isram(outColor) , oC_ErrorCode_OutputAddressNotInRAM ) &&
384  ErrorCondition( oC_ColorFormat_IsCorrect(ColorFormat) , oC_ErrorCode_ColorFormatNotCorrect )
385  )
386  {
387  errorCode = oC_LCDTFT_LLD_ReadBackgroundColor(outColor,ColorFormat);
388  }
389  }
390 
391  return errorCode;
392 }
393 //==========================================================================================================================================
394 //==========================================================================================================================================
395 oC_ErrorCode_t oC_LCDTFT_ReadColorMap( oC_LCDTFT_Context_t Context , oC_ColorMap_t ** outColorMap )
396 {
397  oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
398 
399  if(oC_Module_TurnOnVerification(&errorCode , oC_Module_LCDTFT))
400  {
401  if(
402  ErrorCondition( IsContextCorrect(Context) , oC_ErrorCode_ContextNotCorrect ) &&
403  ErrorCondition( isram(outColorMap) , oC_ErrorCode_OutputAddressNotInRAM )
404  )
405  {
406  *outColorMap = Context->ColorMap;
407  errorCode = oC_ErrorCode_None;
408  }
409  }
410 
411  return errorCode;
412 }
413 
414 //==========================================================================================================================================
415 //==========================================================================================================================================
416 oC_ErrorCode_t oC_LCDTFT_SetResolution( oC_LCDTFT_Context_t Context , oC_Pixel_ResolutionUInt_t Width , oC_Pixel_ResolutionUInt_t Height )
417 {
418  oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
419 
420  if(oC_Module_TurnOnVerification(&errorCode , oC_Module_LCDTFT))
421  {
422  if(
423  ErrorCondition( IsContextCorrect(Context) , oC_ErrorCode_ContextNotCorrect ) &&
424  oC_AssignErrorCode( &errorCode , oC_LCDTFT_LLD_DisableOperations() ) &&
425  oC_AssignErrorCode( &errorCode , oC_LCDTFT_LLD_SetResolution(Width,Height) ) &&
426  oC_AssignErrorCode( &errorCode , oC_LCDTFT_LLD_SetTimingParameters(&Context->TimingParameters) ) &&
427  oC_AssignErrorCode( &errorCode , oC_LCDTFT_LLD_EnableOperations() )
428  )
429  {
430  errorCode = oC_ErrorCode_None;
431  }
432  }
433 
434  return errorCode;
435 }
436 
437 //==========================================================================================================================================
438 //==========================================================================================================================================
439 oC_ErrorCode_t oC_LCDTFT_ReadResolution( oC_LCDTFT_Context_t Context , oC_Pixel_ResolutionUInt_t * outWidth , oC_Pixel_ResolutionUInt_t * outHeight )
440 {
441  oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
442 
443  if(oC_Module_TurnOnVerification(&errorCode , oC_Module_LCDTFT))
444  {
445  if(
446  ErrorCondition( IsContextCorrect(Context) , oC_ErrorCode_ContextNotCorrect ) &&
447  ErrorCondition( isram(outWidth) , oC_ErrorCode_OutputAddressNotInRAM ) &&
448  ErrorCondition( isram(outHeight) , oC_ErrorCode_OutputAddressNotInRAM )
449  )
450  {
451  errorCode = oC_LCDTFT_LLD_ReadResolution(outWidth,outHeight);
452  }
453  }
454 
455  return errorCode;
456 }
457 
458 #undef _________________________________________INTERFACE_FUNCTIONS_SECTION________________________________________________________________
459 
465 #define _________________________________________LOCAL_FUNCTIONS_SECTION____________________________________________________________________
466 
467 //==========================================================================================================================================
471 //==========================================================================================================================================
472 static inline bool IsContextCorrect( oC_LCDTFT_Context_t Context )
473 {
474  return isram(Context) && oC_CheckObjectControl(Context,oC_ObjectId_LcdTftContext,Context->ObjectControl) && isaddresscorrect(Context->ColorMap->Map);
475 }
476 
477 //==========================================================================================================================================
481 //==========================================================================================================================================
482 static oC_ErrorCode_t Context_New( const oC_LCDTFT_Config_t * Config , oC_LCDTFT_Context_t * outContext )
483 {
484  oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
485  oC_LCDTFT_Context_t context = kmalloc(sizeof(struct Context_t) , &Allocator , AllocationFlags_CanWait1Second | AllocationFlags_ZeroFill );
486 
487  if(ErrorCondition(context != NULL , oC_ErrorCode_AllocationError))
488  {
489  context->ConstColorMap = Config->ColorMap;
490  context->ColorMapAllocated = false;
491 
492  if(context->ColorMap == NULL)
493  {
494  context->ColorMap = oC_ColorMap_New(&Allocator,AllocationFlags_CanWait1Second | AllocationFlags_ExternalRamFirst ,Config->Width,Config->Height,Config->ColorFormat);
495  context->ColorMapAllocated = true;
496  }
497 
498  if(ErrorCondition(context->ColorMap != NULL , oC_ErrorCode_AllocationError ) &&
499  ErrorCondition(oC_ColorMap_IsCorrect(context->ColorMap) , oC_ErrorCode_ColorMapNotCorrect )
500  )
501  {
502  *outContext = context;
503  context->ObjectControl = oC_CountObjectControl(context,oC_ObjectId_LcdTftContext);
504  errorCode = oC_ErrorCode_None;
505 
506  memcpy( &context->TimingParameters , &Config->TimingParameters , sizeof(oC_LCDTFT_LLD_TimingParameters_t));
507  }
508  else
509  {
510  oC_SaveIfErrorOccur("Context_New: Delete context error: " , Context_Delete(&context));
511  }
512  }
513 
514 
515  return errorCode;
516 }
517 
518 //==========================================================================================================================================
522 //==========================================================================================================================================
523 static oC_ErrorCode_t Context_Delete( oC_LCDTFT_Context_t * outContext )
524 {
525  oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
526  oC_LCDTFT_Context_t context = *outContext;
527 
528  errorCode = oC_ErrorCode_None;
529 
530  if(context->ColorMapAllocated)
531  {
532  if(!oC_ColorMap_Delete(context->ColorMap,AllocationFlags_CanWaitForever))
533  {
534  errorCode = oC_ErrorCode_ReleaseError;
535  }
536  }
537  if(!kfree(context,AllocationFlags_CanWaitForever))
538  {
539  errorCode = oC_ErrorCode_ReleaseError;
540  }
541 
542  return errorCode;
543 }
544 
545 #undef _________________________________________LOCAL_FUNCTIONS_SECTION____________________________________________________________________
546 #endif
oC_ErrorCode_t oC_LCDTFT_LLD_SetTimingParameters(const oC_LCDTFT_LLD_TimingParameters_t *TimingParameters)
oC_ErrorCode_t oC_LCDTFT_LLD_SetBackgroundColor(oC_Color_t Color, oC_ColorFormat_t ColorFormat)
Something is powered on.
Definition: oc_stdtypes.h:252
oC_ErrorCode_t oC_LCDTFT_TurnOff(void)
Turns off the LCDTFT driver.
Definition: oc_lcdtft.c:187
oC_ErrorCode_t oC_LCDTFT_LLD_RestoreDefaultState(void)
oC_ErrorCode_t oC_LCDTFT_LLD_EnableOperations(void)
static oC_ErrorCode_t Context_New(const oC_LCDTFT_Config_t *Config, oC_LCDTFT_Context_t *outContext)
Definition: oc_lcdtft.c:482
const char * Name
Definition: oc_stdlib.h:161
oC_ErrorCode_t oC_LCDTFT_LLD_SetPixelFormat(oC_ColorFormat_t PixelFormat)
static oC_ErrorCode_t Context_Delete(oC_LCDTFT_Context_t *outContext)
Definition: oc_lcdtft.c:523
The file with interface for the GPIO driver.
oC_ErrorCode_t oC_LCDTFT_Ioctl(oC_LCDTFT_Context_t Context, oC_Ioctl_Command_t Command, void *Data)
handles input/output driver commands
Definition: oc_lcdtft.c:325
oC_ErrorCode_t oC_LCDTFT_LLD_SetResolution(oC_Pixel_ResolutionUInt_t Width, oC_Pixel_ResolutionUInt_t Height)
identifier for allocations
Definition: oc_stdlib.h:159
The file with interface for LCDTFT driver.
The file contains definitions for the compiler, that helps to manage errors, etc. ...
oC_ErrorCode_t oC_LCDTFT_LLD_SetPower(oC_Power_t Power)
oC_ErrorCode_t oC_LCDTFT_LLD_SetColormapBuffer(const void *Buffer)
static const oC_Allocator_t Allocator
Definition: oc_lcdtft.c:117
oC_ErrorCode_t oC_LCDTFT_LLD_SetPolarities(oC_LCDTFT_LLD_Polarity_t HSyncPolarity, oC_LCDTFT_LLD_Polarity_t VSyncPolarity, oC_LCDTFT_LLD_Polarity_t DataEnablePolarity)
oC_ErrorCode_t oC_LCDTFT_Configure(const oC_LCDTFT_Config_t *Config, oC_LCDTFT_Context_t *outContext)
configures LCDTFT pins to work
Definition: oc_lcdtft.c:231
The file with interface for driver creating.
The file with interface for the module library.
static bool oC_Module_IsTurnedOn(oC_Module_t Module)
checks if the module is turned on
Definition: oc_module.h:121
uint32_t oC_ObjectControl_t
stores object control value
Definition: oc_object.h:141
oC_ErrorCode_t oC_LCDTFT_TurnOn(void)
turns on the module
Definition: oc_lcdtft.c:153
The file with interface for interrupt manager.
oC_ErrorCode_t oC_LCDTFT_LLD_ReadResolution(oC_Pixel_ResolutionUInt_t *outWidth, oC_Pixel_ResolutionUInt_t *outHeight)
oC_ErrorCode_t oC_LCDTFT_LLD_TurnOffDriver(void)
oC_ErrorCode_t oC_LCDTFT_LLD_TurnOnDriver(void)
static oC_ObjectControl_t oC_CountObjectControl(void *ObjectPointer, oC_ObjectId_t ObjectId)
counts object control for object
Definition: oc_object.h:168
static bool oC_CheckObjectControl(void *ObjectPointer, oC_ObjectId_t ObjectId, oC_ObjectControl_t ObjectControl)
checks if object control is correct
Definition: oc_object.h:203
oC_ErrorCode_t oC_LCDTFT_LLD_DisconnectPins(const oC_LCDTFT_LLD_Pins_t *Pins)
oC_ErrorCode_t oC_LCDTFT_LLD_ConnectPins(const oC_LCDTFT_LLD_Pins_t *Pins)
static void oC_Module_TurnOn(oC_Module_t Module)
sets module as turned on
Definition: oc_module.h:170
oC_ObjectControl_t ObjectControl
Definition: oc_eth.c:100
stores ETH context
Definition: oc_eth.c:97
static bool oC_Module_TurnOffVerification(oC_ErrorCode_t *outErrorCode, oC_Module_t Module)
verify if module is turned off
Definition: oc_module.h:155
oC_ErrorCode_t oC_LCDTFT_LLD_SetPixelClockPolarity(oC_LCDTFT_LLD_PixelClockPolarity_t PixelPolarity)
Definition of the null pointer.
static bool oC_Module_TurnOnVerification(oC_ErrorCode_t *outErrorCode, oC_Module_t Module)
verify if module is turned on
Definition: oc_module.h:138
oC_ErrorCode_t oC_LCDTFT_Unconfigure(const oC_LCDTFT_Config_t *Config, oC_LCDTFT_Context_t *outContext)
Unconfigures the driver.
Definition: oc_lcdtft.c:286
oC_ErrorCode_t oC_LCDTFT_LLD_SetFrequency(oC_Frequency_t Frequency, oC_Frequency_t PermissibleDifference)
oC_ErrorCode_t oC_LCDTFT_LLD_ReadBackgroundColor(oC_Color_t *outColor, oC_ColorFormat_t ColorFormat)
LCDTFT driver configuration structure.
Definition: oc_lcdtft.h:92
The file with LLD interface for the LCDTFT driver.
bool oC_LCDTFT_IsTurnedOn(void)
checks if the driver is turned on
Definition: oc_lcdtft.c:214
static bool IsContextCorrect(oC_LCDTFT_Context_t Context)
Checks if the context of the LCDTFT driver is correct.
Definition: oc_lcdtft.c:472
oC_ErrorCode_t oC_LCDTFT_LLD_DisableOperations(void)
#define NULL
pointer to a zero
Definition: oc_null.h:37
static void oC_Module_TurnOff(oC_Module_t Module)
sets module as turned off
Definition: oc_module.h:185