#ifndef _BOARD_CONFIG_H_
#define _BOARD_CONFIG_H_

#include <driver/gpio.h>

enum PowerSupply {
    kDeviceTypecSupply,
    kDeviceBatterySupply,
};

#define AUDIO_INPUT_SAMPLE_RATE  24000
#define AUDIO_OUTPUT_SAMPLE_RATE 24000

#define AUDIO_INPUT_REFERENCE    true

#define AUDIO_I2S_GPIO_WS GPIO_NUM_39
#define AUDIO_I2S_GPIO_BCLK GPIO_NUM_38
#define AUDIO_I2S_GPIO_DIN GPIO_NUM_41
#define AUDIO_I2S_GPIO_DOUT GPIO_NUM_40
#define AUDIO_I2S_GPIO_MCLK GPIO_NUM_21

#define AUDIO_CODEC_PA_PIN      GPIO_NUM_NC
#define AUDIO_CODEC_I2C_SDA_PIN GPIO_NUM_3
#define AUDIO_CODEC_I2C_SCL_PIN GPIO_NUM_2
#define AUDIO_CODEC_ES8311_ADDR ES8311_CODEC_DEFAULT_ADDR
#define AUDIO_CODEC_ES7210_ADDR  ES7210_CODEC_DEFAULT_ADDR

#define BUILTIN_LED_GPIO GPIO_NUM_NC
#define BOOT_BUTTON_GPIO GPIO_NUM_0

#define DISPLAY_OFFSET_X 0
#define DISPLAY_OFFSET_Y 0

#define DISPLAY_WIDTH    320
#define DISPLAY_HEIGHT   240
#define DISPLAY_SWAP_XY  true
#define DISPLAY_MIRROR_X true
#define DISPLAY_MIRROR_Y false

#define DISPLAY_BACKLIGHT_PIN GPIO_NUM_NC
#define DISPLAY_BACKLIGHT_OUTPUT_INVERT true

// Pin Definitions 
#define LCD_SCLK_PIN GPIO_NUM_15
#define LCD_MOSI_PIN GPIO_NUM_16
#define LCD_MISO_PIN GPIO_NUM_17
#define LCD_DC_PIN GPIO_NUM_48
#define LCD_CS_PIN GPIO_NUM_47

/* IO扩展 */ 
#define AW9523B_ADDR                 0x59
#define AW9523B_INT_GPIO GPIO_NUM_42
#define XIO_KEY_K1 (IO_EXPANDER_PIN_NUM_0)
#define XIO_KEY_K2 (IO_EXPANDER_PIN_NUM_1)
#define XIO_BAT_CHRG_EN (IO_EXPANDER_PIN_NUM_2)
#define XIO_BAT_CHRG (IO_EXPANDER_PIN_NUM_3)
#define XIO_ESP_ADC_SEL (IO_EXPANDER_PIN_NUM_4)
#define XIO_PA_CTRL (IO_EXPANDER_PIN_NUM_5)
#define XIO_EXT_GPIO0 (IO_EXPANDER_PIN_NUM_6)
#define XIO_EXT_GPIO1 (IO_EXPANDER_PIN_NUM_7)
#define XIO_LCD_BL (IO_EXPANDER_PIN_NUM_8)
#define XIO_LED_RED (IO_EXPANDER_PIN_NUM_9)
#define XIO_LED_BLUE (IO_EXPANDER_PIN_NUM_10)
#define XIO_VDD_3V3_EN (IO_EXPANDER_PIN_NUM_11)
#define XIO_VBAT_EN (IO_EXPANDER_PIN_NUM_12)
#define XIO_VDDA_3V3_EN (IO_EXPANDER_PIN_NUM_13)
#define XIO_VDD_2V8_EN (IO_EXPANDER_PIN_NUM_14)
#define XIO_TP_CAM_RESET (IO_EXPANDER_PIN_NUM_15)

#define DRV_IO_EXP_OUTPUT_MASK 0XFFFC
#define DRV_IO_EXP_INPUT_MASK 0x0003

/* 相机引脚配置 */
#define CAM_PIN_PWDN    GPIO_NUM_NC
#define CAM_PIN_RESET   GPIO_NUM_NC
#define CAM_PIN_VSYNC   GPIO_NUM_6
#define CAM_PIN_LREF    GPIO_NUM_46
#define CAM_PIN_PCLK    GPIO_NUM_45
#define CAM_PIN_XCLK    GPIO_NUM_NC
#define CAM_PIN_SIOD    GPIO_NUM_NC
#define CAM_PIN_SIOC    GPIO_NUM_NC
#define CAM_PIN_D0      GPIO_NUM_7
#define CAM_PIN_D1      GPIO_NUM_8
#define CAM_PIN_D2      GPIO_NUM_9
#define CAM_PIN_D3      GPIO_NUM_10
#define CAM_PIN_D4      GPIO_NUM_11
#define CAM_PIN_D5      GPIO_NUM_12
#define CAM_PIN_D6      GPIO_NUM_4
#define CAM_PIN_D7      GPIO_NUM_5
#define CAM_2V8_EN      14
#define CAM_RST         15


#endif // _BOARD_CONFIG_H_
