#ifndef SOURCE_DISPLAY_H_ #define SOURCE_DISPLAY_H_ #define ZONE6_DAT *(volatile Uint16*)0x00100001 #define ZONE6_COM *(volatile Uint16*)0x00100000 #define OLED_WIDTH (128U) // ER-OLEDM024 Vertical Pixel 0~127 #define OLED_HEIGHT (64U) #define OLED_PAGE (8U) // ER-OLEDM024 Page 0~7 #define TXT_ENG_WIDTH (6U) #define TXT_ENG_HEIGHT (12U) #define TXT_TYPE_ENG (0U) #define TXT_TYPE_ETC (1U) #define TXT_MAX_LEN (22U) #define TXT_LINE_LEN (5U) #define OLED_LOAD_PROGRESS_X (14U) #define OLED_LOAD_PROGRESS_Y (52U) #define OLED_LOAD_PROGRESS_W (114U) #define OLED_LOAD_PROGRESS_H (10U) #define MODE_COMMAND (0U) #define MODE_DATA (1U) #define DIR_UP (1U) #define DIR_DOWN (0U) typedef signed char int8; typedef unsigned char Uint8; typedef enum { IDX_OLED_LINE_TITLE = 0U, IDX_OLED_LINE_1 = 14U, IDX_OLED_LINE_2 = 27U, IDX_OLED_LINE_3 = 40U, IDX_OLED_LINE_4 = 53U } E_IDX_OLED_LINE; typedef enum { IDX_OLED_ROW_0 = 0U, IDX_OLED_ROW_1, IDX_OLED_ROW_2, IDX_OLED_ROW_3, IDX_OLED_ROW_4 } E_IDX_OLED_ROW; typedef enum { IDX_OLED_PASS_DIGIT_1 = 0U, IDX_OLED_PASS_DIGIT_2, IDX_OLED_PASS_DIGIT_3, IDX_OLED_PASS_DIGIT_4 } E_IDX_OLED_PASS; typedef enum { IDX_OLED_PAGE_APU1 = 0U, // 0 IDX_OLED_PAGE_APU2, // 1 IDX_OLED_PAGE_MENU1, // 2 IDX_OLED_PAGE_MENU2, // 3 IDX_OLED_PAGE_TEMP, // 4 IDX_OLED_PAGE_SENSOR1, // 5 IDX_OLED_PAGE_SENSOR2, // 6 IDX_OLED_PAGE_SENSOR3, // 7 IDX_OLED_PAGE_SENSOR4, // 8 IDX_OLED_PAGE_WARNING1, // 9 IDX_OLED_PAGE_WARNING2, // 10 IDX_OLED_PAGE_FAULT1, // 11 IDX_OLED_PAGE_FAULT2, // 12 IDX_OLED_PAGE_FAULT3, // 13 IDX_OLED_PAGE_FAULT4, // 14 IDX_OLED_PAGE_FAULT5, // 15 IDX_OLED_PAGE_FAULT6, // 16 IDX_OLED_PAGE_FAULT7, // 17 IDX_OLED_PAGE_RESET_ALARM, // 18 IDX_OLED_PAGE_PASSWORD, // 19 IDX_OLED_PAGE_MAINTENANCE, // 20 IDX_OLED_PAGE_VERSION, // 21 IDX_OLED_PAGE_KEY_TEST, // 21 IDX_OLED_PAGE_SHUTDOWN, // 23 IDX_OLED_PAGE_MAX } E_IDX_OLED_PAGE; typedef enum { IDX_OLED_MENU_APU = 0U, // 0 IDX_OLED_MENU_TEMP, // 1 IDX_OLED_MENU_SENSOR, // 2 IDX_OLED_MENU_WARNING, // 3 } E_IDX_OLED_MENU1; typedef enum { IDX_OLED_MENU_FAULT = 0U, // 0 IDX_OLED_MENU_RESET, // 1 IDX_OLED_MENU_DEBUG // 2 } E_IDX_OLED_MENU2; typedef enum { IDX_OLED_LINE_FOCUS_1 = 0U, IDX_OLED_LINE_FOCUS_2, IDX_OLED_LINE_FOCUS_3, IDX_OLED_LINE_FOCUS_4 } E_IDX_OLED_LINE_FOCUS; typedef struct ClassPageHandler { Uint16 uiPage; void (*pAction) (void); // PageTable 참조 } CPageHandler; typedef struct ClassOledOperValue { Uint16 uiBuff[OLED_WIDTH][OLED_PAGE]; Uint16 uiPageNum; Uint16 uiOldPageNum; Uint16 uiFocusLine; Uint16 uiPrevFocusLine; Uint16 uiFocusDigit; Uint16 uiProgressValue; Uint16 uiProgressDone; Uint16 uiResetAlarmAnswer; Uint16 uiResetHourAnswer; int8 cStrBuff[TXT_LINE_LEN][TXT_MAX_LEN]; int8 cAlignBuffer[TXT_MAX_LEN]; struct { Uint16 TxtColor; Uint16 BgColor; } Color; struct { Uint16 X; Uint16 Y; } Point; } COledOperValue; void CInitXintf(void); void CInitOled(void); void COledReflash(Uint16 x, Uint16 y, Uint16 width, Uint16 height); void CDisplayPostFail(void); void CSetPage(Uint16 PageNum); void CInitKeyOperValue(void); void CInitializePage(void); void COledBufferReset(void); void CDisplayAntiNoiseRefresh(void); extern COledOperValue OledOperValue; #endif /* SOURCE_DISPLAY_H_ */