//##############################
//① ヘッダー部 (gmt130_lcd.h)
//##############################
#ifndef GMT130_LCD_H_
#define GMT130_LCD_H_

#include "ch32v20x.h"

// ピン制御マクロ
#define LCD_DC_CMD()    GPIO_WriteBit(GPIOB, GPIO_Pin_3, Bit_RESET)
#define LCD_DC_DATA()   GPIO_WriteBit(GPIOB, GPIO_Pin_3, Bit_SET)
#define LCD_RST_LOW()   GPIO_WriteBit(GPIOB, GPIO_Pin_4, Bit_RESET)
#define LCD_RST_HIGH()  GPIO_WriteBit(GPIOB, GPIO_Pin_4, Bit_SET)

//#define LCD_CS_LOW()    GPIO_WriteBit(GPIOB, GPIO_Pin_1, Bit_RESET)
//#define LCD_CS_HIGH()   GPIO_WriteBit(GPIOB, GPIO_Pin_1, Bit_SET)
//#define LCD_DC_CMD()    GPIO_WriteBit(GPIOB, GPIO_Pin_2, Bit_RESET)
//#define LCD_DC_DATA()   GPIO_WriteBit(GPIOB, GPIO_Pin_2, Bit_SET)
//#define LCD_RST_LOW()   GPIO_WriteBit(GPIOB, GPIO_Pin_10, Bit_RESET)
//#define LCD_RST_HIGH()  GPIO_WriteBit(GPIOB, GPIO_Pin_10, Bit_SET)

// カラー定義 (16bit 565フォーマット)
#define BLACK   0x0000
#define WHITE   0xFFFF
#define GREEN   0x07E0
#define GRAY    0x8410

// 関数プロトタイプ
void LCD_Init(void);
void LCD_SetBrightness(uint8_t percent);
void LCD_Clear(uint16_t color);
void LCD_DrawChar(uint8_t x, uint8_t y, char c, uint16_t color, uint16_t bg);
void LCD_DrawString(uint8_t x, uint8_t y, const char* str, uint16_t color, uint16_t bg);
void LCD_DrawFillRect(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint16_t color);
void LCD_DrawBar(uint8_t x, uint8_t y, uint8_t val, uint8_t max_val);
void LCD_SetRotation(uint8_t mode);
void LCD_Display_Update(SystemParams* params);

#endif
