/**
 * @file lcd_elements.hpp
 * @author Siwat Sirichai (siwat@siwatinc.com)
 * @brief Definitions of the LCD Elements (Pages, Elements, Pictures, etc.)
 * @version 0.1
 * @date 2024-03-19
 * 
 * @copyright Copyright (c) SIWAT SYSTEM 2024
 * 
 */

#pragma once

/*****************************************
 *               Page IDs                *
 * ***************************************/
#define LCD_PAGE_ID_BOOT 0
#define LCD_PAGE_ID_DASHBOARD 1

/*****************************************
 *    Dashboard Element & Picture IDs    *
 * ***************************************/
// Lights
#define LCD_DASHBOARD_ELEMENT_LIGHT_ALL 12
#define LCD_DASHBOARD_ELEMENT_NAME_LIGHT_ALL "btn_lta"
#define LCD_DASHBOARD_PIC_LIGHT_ALL_ON 37
#define LCD_DASHBOARD_PIC_LIGHT_ALL_ON_PRESSED 36
#define LCD_DASHBOARD_PIC_LIGHT_ALL_OFF 35
#define LCD_DASHBOARD_PIC_LIGHT_ALL_OFF_PRESSED 34

#define LCD_DASHBOARD_ELEMENT_LIGHT_1 8
#define LCD_DASHBOARD_ELEMENT_NAME_LIGHT_1 "btn_lt1"
#define LCD_DASHBOARD_PIC_LIGHT_1_ON 17
#define LCD_DASHBOARD_PIC_LIGHT_1_ON_PRESSED 16
#define LCD_DASHBOARD_PIC_LIGHT_1_OFF 15
#define LCD_DASHBOARD_PIC_LIGHT_1_OFF_PRESSED 14

#define LCD_DASHBOARD_ELEMENT_LIGHT_2 9
#define LCD_DASHBOARD_ELEMENT_NAME_LIGHT_2 "btn_lt2"
#define LCD_DASHBOARD_PIC_LIGHT_2_ON 21
#define LCD_DASHBOARD_PIC_LIGHT_2_ON_PRESSED 20
#define LCD_DASHBOARD_PIC_LIGHT_2_OFF 19
#define LCD_DASHBOARD_PIC_LIGHT_2_OFF_PRESSED 18

#define LCD_DASHBOARD_ELEMENT_LIGHT_3 10
#define LCD_DASHBOARD_ELEMENT_NAME_LIGHT_3 "btn_lt3"
#define LCD_DASHBOARD_PIC_LIGHT_3_ON 25
#define LCD_DASHBOARD_PIC_LIGHT_3_ON_PRESSED 24
#define LCD_DASHBOARD_PIC_LIGHT_3_OFF 23
#define LCD_DASHBOARD_PIC_LIGHT_3_OFF_PRESSED 22

#define LCD_DASHBOARD_ELEMENT_LIGHT_4 11
#define LCD_DASHBOARD_ELEMENT_NAME_LIGHT_4 "btn_lt4"
#define LCD_DASHBOARD_PIC_LIGHT_4_ON 29
#define LCD_DASHBOARD_PIC_LIGHT_4_ON_PRESSED 28
#define LCD_DASHBOARD_PIC_LIGHT_4_OFF 27
#define LCD_DASHBOARD_PIC_LIGHT_4_OFF_PRESSED 26

// Fans
#define LCD_DASHBOARD_ELEMENT_FAN_ALL 16
#define LCD_DASHBOARD_ELEMENT_NAME_FAN_ALL "btn_fana"
#define LCD_DASHBOARD_PIC_FAN_ALL_ON 50
#define LCD_DASHBOARD_PIC_FAN_ALL_ON_PRESSED 51
#define LCD_DASHBOARD_PIC_FAN_ALL_OFF 52
#define LCD_DASHBOARD_PIC_FAN_ALL_OFF_PRESSED 53

#define LCD_DASHBOARD_ELEMENT_FAN_1 13
#define LCD_DASHBOARD_ELEMENT_NAME_FAN_1 "btn_fan1"
#define LCD_DASHBOARD_PIC_FAN_1_ON 41
#define LCD_DASHBOARD_PIC_FAN_1_ON_PRESSED 40
#define LCD_DASHBOARD_PIC_FAN_1_OFF 39
#define LCD_DASHBOARD_PIC_FAN_1_OFF_PRESSED 38

#define LCD_DASHBOARD_ELEMENT_FAN_2 14
#define LCD_DASHBOARD_ELEMENT_NAME_FAN_2 "btn_fan2"
#define LCD_DASHBOARD_PIC_FAN_2_ON 45
#define LCD_DASHBOARD_PIC_FAN_2_ON_PRESSED 44
#define LCD_DASHBOARD_PIC_FAN_2_OFF 43
#define LCD_DASHBOARD_PIC_FAN_2_OFF_PRESSED 42

#define LCD_DASHBOARD_ELEMENT_FAN_3 15
#define LCD_DASHBOARD_ELEMENT_NAME_FAN_3 "btn_fan3"
#define LCD_DASHBOARD_PIC_FAN_3_ON 49
#define LCD_DASHBOARD_PIC_FAN_3_ON_PRESSED 48
#define LCD_DASHBOARD_PIC_FAN_3_OFF 47
#define LCD_DASHBOARD_PIC_FAN_3_OFF_PRESSED 46

// Air Purifier
#define LCD_DASHBOARD_ELEMENT_AIR_PURIFIER 1
#define LCD_DASHBOARD_ELEMENT_NAME_AIR_PURIFIER "btn_ap"
#define LCD_DASHBOARD_PIC_AIR_PURIFIER_ON 5
#define LCD_DASHBOARD_PIC_AIR_PURIFIER_ON_PRESSED 4
#define LCD_DASHBOARD_PIC_AIR_PURIFIER_OFF 3
#define LCD_DASHBOARD_PIC_AIR_PURIFIER_OFF_PRESSED 2

// Mosquito Zapper
#define LCD_DASHBOARD_ELEMENT_MOSQUITO_ZAPPER 5
#define LCD_DASHBOARD_ELEMENT_NAME_MOSQUITO_ZAPPER "btn_mq"
#define LCD_DASHBOARD_PIC_MOSQUITO_ZAPPER_ON 33
#define LCD_DASHBOARD_PIC_MOSQUITO_ZAPPER_ON_PRESSED 32
#define LCD_DASHBOARD_PIC_MOSQUITO_ZAPPER_OFF 31
#define LCD_DASHBOARD_PIC_MOSQUITO_ZAPPER_OFF_PRESSED 30

// AQI
#define LCD_DASHBOARD_ELEMENT_AQI_TEXT 3
#define LCD_DASHBOARD_ELEMENT_NAME_AQI_TEXT "txt_aqi"
#define LCD_DASHBOARD_ELEMENT_AQI_PICTURE 2
#define LCD_DASHBOARD_ELEMENT_NAME_AQI_PICTURE "ico_aqi"
#define LCD_DASHBOARD_PIC_AQI_GOOD 6
#define LCD_DASHBOARD_PIC_AQI_MODERATE 7
#define LCD_DASHBOARD_PIC_AQI_UNHEALTHY_FOR_SENSITIVE_GROUPS 8
#define LCD_DASHBOARD_PIC_AQI_UNHEALTHY 9
#define LCD_DASHBOARD_PIC_AQI_VERY_UNHEALTHY 10
#define LCD_DASHBOARD_PIC_AQI_HAZARDOUS 11

// Socket Power
#define LCD_DASHBOARD_ELEMENT_SOCKET_POWER 7
#define LCD_DASHBOARD_ELEMENT_NAME_SOCKET_POWER "img_socket"
#define LCD_DASHBOARD_PIC_SOCKET_POWER_ON 12
#define LCD_DASHBOARD_PIC_SOCKET_POWER_OFF 13

// Air Conditioner
#define LCD_DASHBOARD_ELEMENT_AC_STATE 12
#define LCD_DASHBOARD_ELEMENT_NAME_AC_STATE "ac_state"
#define LCD_DASHBOARD_ELEMENT_NAME_ICO_LOCK "ico_ac_lock"
#define LCD_DASHBOARD_PIC_AC_STATE_OFF 30
#define LCD_DASHBOARD_PIC_AC_STATE_OFF_PRESSED 31
#define LCD_DASHBOARD_PIC_AC_STATE_OFF_LOCKED 31
#define LCD_DASHBOARD_PIC_AC_STATE_ON 32
#define LCD_DASHBOARD_PIC_AC_STATE_ON_PRESSED 33
#define LCD_DASHBOARD_PIC_AC_STATE_ON_LOCKED 33

#define LCD_DASHBOARD_ELEMENT_AC_MODE_FAN 13
#define LCD_DASHBOARD_ELEMENT_NAME_AC_MODE_FAN "ac_mode_fan"
#define LCD_DASHBOARD_PIC_AC_MODE_FAN_ACTIVE 34
#define LCD_DASHBOARD_PIC_AC_MODE_FAN_ACTIVE_PRESS 35
#define LCD_DASHBOARD_PIC_AC_MODE_FAN_INACTIVE 35
#define LCD_DASHBOARD_PIC_AC_MODE_FAN_INACTIVE_PRESS 34

#define LCD_DASHBOARD_ELEMENT_AC_MODE_COOL 14
#define LCD_DASHBOARD_ELEMENT_NAME_AC_MODE_COOL "ac_mode_cool"
#define LCD_DASHBOARD_PIC_AC_MODE_COOL_ACTIVE 36
#define LCD_DASHBOARD_PIC_AC_MODE_COOL_ACTIVE_PRESS 37
#define LCD_DASHBOARD_PIC_AC_MODE_COOL_INACTIVE 37
#define LCD_DASHBOARD_PIC_AC_MODE_COOL_INACTIVE_PRESS 36

#define LCD_DASHBOARD_ELEMENT_AC_FAN_SPEED_AUTO 15
#define LCD_DASHBOARD_ELEMENT_NAME_AC_FAN_SPEED_AUTO "ac_fan_auto"
#define LCD_DASHBOARD_PIC_AC_FAN_SPEED_AUTO_ACTIVE 38
#define LCD_DASHBOARD_PIC_AC_FAN_SPEED_AUTO_ACTIVE_PRESS 39
#define LCD_DASHBOARD_PIC_AC_FAN_SPEED_AUTO_INACTIVE 39
#define LCD_DASHBOARD_PIC_AC_FAN_SPEED_AUTO_INACTIVE_PRESS 38

#define LCD_DASHBOARD_ELEMENT_AC_FAN_SPEED_HIGH 16
#define LCD_DASHBOARD_ELEMENT_NAME_AC_FAN_SPEED_HIGH "ac_fan_high"
#define LCD_DASHBOARD_PIC_AC_FAN_SPEED_HIGH_ACTIVE 40
#define LCD_DASHBOARD_PIC_AC_FAN_SPEED_HIGH_ACTIVE_PRESS 41
#define LCD_DASHBOARD_PIC_AC_FAN_SPEED_HIGH_INACTIVE 41
#define LCD_DASHBOARD_PIC_AC_FAN_SPEED_HIGH_INACTIVE_PRESS 40

#define LCD_DASHBOARD_ELEMENT_AC_FAN_SPEED_MEDIUM 17
#define LCD_DASHBOARD_ELEMENT_NAME_AC_FAN_SPEED_MEDIUM "ac_fan_medium"
#define LCD_DASHBOARD_PIC_AC_FAN_SPEED_MEDIUM_ACTIVE 42
#define LCD_DASHBOARD_PIC_AC_FAN_SPEED_MEDIUM_ACTIVE_PRESS 43
#define LCD_DASHBOARD_PIC_AC_FAN_SPEED_MEDIUM_INACTIVE 43
#define LCD_DASHBOARD_PIC_AC_FAN_SPEED_MEDIUM_INACTIVE_PRESS 42

#define LCD_DASHBOARD_ELEMENT_AC_FAN_SPEED_LOW 18
#define LCD_DASHBOARD_ELEMENT_NAME_AC_FAN_SPEED_LOW "ac_fan_low"
#define LCD_DASHBOARD_PIC_AC_FAN_SPEED_LOW_ACTIVE 44
#define LCD_DASHBOARD_PIC_AC_FAN_SPEED_LOW_ACTIVE_PRESS 45
#define LCD_DASHBOARD_PIC_AC_FAN_SPEED_LOW_INACTIVE 45
#define LCD_DASHBOARD_PIC_AC_FAN_SPEED_LOW_INACTIVE_PRESS 44

#define LCD_DASHBOARD_ELEMENT_AC_TEMPERATURE 19
#define LCD_DASHBOARD_ELEMENT_NAME_AC_TEMPERATURE "ac_temp"

#define LCD_DASHBOARD_ELEMENT_AC_TEMP_UP_BUTTON 20
#define LCD_DASHBOARD_ELEMENT_NAME_AC_TEMP_UP_BUTTON "ac_temp_up"

#define LCD_DASHBOARD_ELEMENT_AC_TEMP_DOWN_BUTTON 21
#define LCD_DASHBOARD_ELEMENT_NAME_AC_TEMP_DOWN_BUTTON "ac_temp_down"

#define LCD_DASHBOARD_ELEMENT_ROOM_TEMPERATURE 19
#define LCD_DASHBOARD_ELEMENT_NAME_ROOM_TEMPERATURE "room_temp"

// All System Button
#define LCD_DASHBOARD_ELEMENT_ALL_SYSTEM_TOGGLE 20
#define LCD_DASHBOARD_ELEMENT_NAME_ALL_SYSTEM_TOGGLE "all_toggle"
#define LCD_DASHBOARD_PIC_ALL_SYSTEM_TOGGLE_ON 46
#define LCD_DASHBOARD_PIC_ALL_SYSTEM_TOGGLE_ON_PRESSED 47
#define LCD_DASHBOARD_PIC_ALL_SYSTEM_TOGGLE_OFF 47
#define LCD_DASHBOARD_PIC_ALL_SYSTEM_TOGGLE_OFF_PRESSED 46
