跳转至

/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