#ifndef _BOARD_CONFIG_H_
#define _BOARD_CONFIG_H_

#include <driver/gpio.h>
#include <driver/uart.h>

/**
 * @brief 音频配置参数
 */
#define AUDIO_INPUT_SAMPLE_RATE  24000
#define AUDIO_OUTPUT_SAMPLE_RATE 24000

// 音频I2S接口引脚定义
#define AUDIO_I2S_GPIO_MCLK GPIO_NUM_13
#define AUDIO_I2S_GPIO_WS GPIO_NUM_10
#define AUDIO_I2S_GPIO_BCLK GPIO_NUM_12
#define AUDIO_I2S_GPIO_DIN  GPIO_NUM_11
#define AUDIO_I2S_GPIO_DOUT GPIO_NUM_9

// 音频编解码器控制引脚
#define AUDIO_CODEC_PA_PIN       GPIO_NUM_53
#define AUDIO_CODEC_I2C_SDA_PIN  GPIO_NUM_7
#define AUDIO_CODEC_I2C_SCL_PIN  GPIO_NUM_8
#define AUDIO_CODEC_ES8311_ADDR  ES8311_CODEC_DEFAULT_ADDR

// 按钮和LED配置
#define BUILTIN_LED_GPIO        GPIO_NUM_NC
#define BOOT_BUTTON_GPIO        GPIO_NUM_0
#define VOLUME_UP_BUTTON_GPIO   GPIO_NUM_NC
#define VOLUME_DOWN_BUTTON_GPIO GPIO_NUM_NC

// ML307通信模块引脚配置
#define ML307_RX_PIN GPIO_NUM_24
#define ML307_TX_PIN GPIO_NUM_25

/**
 * @brief 显示屏配置选择
 * 根据实际使用的显示屏类型选择相应配置
 */   
 #define DISPLAY_RST_GPIO    GPIO_NUM_27
#if defined(CONFIG_LCD_EK79007_1024X600)
    // EK79007 10.1英寸 (1024x600) 显示屏配置
    #define DISPLAY_TYPE_EK79007
    
    #define DISPLAY_WIDTH   1024
    #define DISPLAY_HEIGHT  600
    #define DISPLAY_MIRROR_X true
    #define DISPLAY_MIRROR_Y true
    #define DISPLAY_SWAP_XY false

    #define DISPLAY_OFFSET_X  0
    #define DISPLAY_OFFSET_Y  0

    #define DISPLAY_DC_GPIO     GPIO_NUM_43
    #define DISPLAY_CS_GPIO     GPIO_NUM_44
    #define DISPLAY_CLK_GPIO    GPIO_NUM_21
    #define DISPLAY_MOSI_GPIO   GPIO_NUM_47


    #define DISPLAY_BACKLIGHT_PIN GPIO_NUM_26
    #define DISPLAY_BACKLIGHT_OUTPUT_INVERT false

#elif defined(CONFIG_LCD_TYPE_800_1280_10_1_INCH) || defined(CONFIG_LCD_TYPE_800_1280_10_1_INCH_A)
    // JD9365 10.1英寸 (800x1280) 显示屏配置
    #define DISPLAY_TYPE_JD9365
    
    #define DISPLAY_WIDTH  800
    #define DISPLAY_HEIGHT 1280

    #define LCD_BIT_PER_PIXEL          (16)
    #define PIN_NUM_LCD_RST            GPIO_NUM_NC

    #define DELAY_TIME_MS                      (3000)
    #define LCD_MIPI_DSI_LANE_NUM          (2)    // 2 data lanes

    #define MIPI_DSI_PHY_PWR_LDO_CHAN          (3)
    #define MIPI_DSI_PHY_PWR_LDO_VOLTAGE_MV    (2500)

    #define DISPLAY_SWAP_XY false
    #define DISPLAY_MIRROR_X false
    #define DISPLAY_MIRROR_Y false

    #define DISPLAY_OFFSET_X  0
    #define DISPLAY_OFFSET_Y  0

    #define DISPLAY_BACKLIGHT_PIN GPIO_NUM_NC
    #define DISPLAY_BACKLIGHT_OUTPUT_INVERT false

#else
    // 默认配置或错误处理
    #error "请选择一种显示屏配置 (CONFIG_LCD_EK79007_1024X600 或 CONFIG_LCD_TYPE_800_1280_10_1_INCH)"
#endif

#endif // _BOARD_CONFIG_H_