#ifndef OLED_OLED_H_
#define OLED_OLED_H_

#include "../../include/user/OledFont.h"
#include <cstdint>
#include "ti_msp_dl_config.h"

class OLED {
public:
    struct Data {
        // 用户获取到的数据集合
    };

    static void Init(); // 初始化函数
    static void Clear(); // 清屏函数
    static void Display_On(); // 开启显示
    static void Display_Off(); // 关闭显示
    static void Set_Pos(uint8_t x, uint8_t y); // 设置显示位置
    static unsigned int oled_pow(uint8_t m, uint8_t n);
    static void ShowNum(uint8_t x, uint8_t y, unsigned int num, uint8_t len, uint8_t size2, uint8_t Color_Turn); // 显示数字
    static void ShowDecimal(uint8_t x, uint8_t y, float num, uint8_t z_len, uint8_t f_len, uint8_t size2, uint8_t Color_Turn); // 显示浮点数
    static void ShowChar(uint8_t x, uint8_t y, uint8_t chr, uint8_t Char_Size, uint8_t Color_Turn); // 显示字符
    static void ShowString(uint8_t x, uint8_t y, char* chr, uint8_t Char_Size, uint8_t Color_Turn); // 显示字符串
    static void ShowChinese(uint8_t x, uint8_t y, uint8_t no, uint8_t Color_Turn); // 显示汉字
    static void DrawBMP(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t* BMP, uint8_t Color_Turn); // 显示BMP图片
    static void HorizontalShift(uint8_t direction); // 水平全屏滚动
    static void Some_HorizontalShift(uint8_t direction, uint8_t start, uint8_t end); // 部分水平滚动
    static void VerticalAndHorizontalShift(uint8_t direction); // 垂直水平全屏滚动
    static void DisplayMode(uint8_t mode); // 设置显示模式
    static void IntensityControl(uint8_t intensity); // 设置亮度

private:
    static void WR_CMD(uint8_t cmd); // 写命令
    static void WR_DATA(uint8_t data); // 写数据
};

#endif /* OLED_OLED_H_ */