/home/runner/work/BareMetal-Drivers/BareMetal-Drivers/lib/oled/oled.h¶
// Example: Clear a rectangular area at (10, 20) with size 64x32
CFBD_OLED* oled = &my_oled_device;
CFBD_Bool result = oled->ops->clear_area(oled, 10, 20, 64, 32);
if (result) {
oled->ops->update_area(oled, 10, 20, 64, 32);
}
```cpp
pragma once¶
include "cfbd_define.h"¶
typedef enum
{
CFBD_OLEDDriverType_IIC,
CFBD_OLEDDriverType_SPI
} CFBD_OLEDDriverType;
typedef void* CFBD_OLEDHandle;
typedef struct _CFBD_OLED CFBD_OLED;
typedef CFBD_Bool ( AreaOperations)(CFBD_OLED oled, uint16_t x, uint16_t y, uint16_t width, uint16_t height);
typedef CFBD_Bool (FrameOperation)(CFBD_OLED oled);
typedef CFBD_Bool (OLEDSelfOperation)(CFBD_OLED oled);
typedef CFBD_Bool (OLED_QueryOperation)(CFBD_OLED oled, const char* property, void* args, void* request_data);
typedef CFBD_Bool (OLED_SetPropertyOperation)(CFBD_OLED oled, const char* property, void* args, void* request_data); // What to write?
typedef struct _CFBD_OLED_OPS { int (init)(CFBD_OLED oled, void* init_args);
CFBD_Bool (*setPixel)(CFBD_OLED* oled, uint16_t x, uint16_t y);
CFBD_Bool (*setArea)(CFBD_OLED* device,
uint16_t x,
uint16_t y,
uint16_t width,
uint16_t height,
uint8_t* source);
FrameOperation update;
FrameOperation clear;
FrameOperation revert;
AreaOperations update_area;
AreaOperations clear_area;
AreaOperations revert_area;
OLEDSelfOperation open;
OLEDSelfOperation close;
OLED_QueryOperation self_consult;
OLED_SetPropertyOperation self_property_setter;
} CFBD_OLEDOperations;
typedef struct _CFBD_OLED { const CFBD_OLEDOperations* ops;
CFBD_OLEDDriverType driver_type;
CFBD_OLEDHandle oled_internal_handle;
} CFBD_OLED;
typedef void* CFBDOLED_Params_Inits;
CFBD_Bool CFBD_GetOLEDHandle(CFBD_OLED* oled, const CFBD_OLEDDriverType driver_type, CFBDOLED_Params_Inits args, CFBD_Bool request_immediate_init);
// end of OLED group```
Filename: /home/runner/work/BareMetal-Drivers/BareMetal-Drivers/lib/oled/oled.h
Updated on 2026-02-03 at 13:21:55 +0000