/*
 * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
 *
 * SPDX-License-Identifier: Unlicense OR CC0-1.0
 */

#pragma once

#include "sdkconfig.h"

#ifdef __cplusplus
extern "C" {
#endif

#if CONFIG_IDF_TARGET_ESP32
#define EXAMPLE_I2S_BCLK_IO1        GPIO_NUM_4      // I2S bit clock io number
#define EXAMPLE_I2S_WS_IO1          GPIO_NUM_5      // I2S word select io number
#define EXAMPLE_I2S_DOUT_IO1        GPIO_NUM_18     // I2S data out io number
#define EXAMPLE_I2S_DIN_IO1         GPIO_NUM_19     // I2S data in io number
// STD simplex pins
#define EXAMPLE_I2S_BCLK_IO2        GPIO_NUM_22     // I2S bit clock io number
#define EXAMPLE_I2S_WS_IO2          GPIO_NUM_23     // I2S word select io number
#define EXAMPLE_I2S_DOUT_IO2        GPIO_NUM_25     // I2S data out io number
#define EXAMPLE_I2S_DIN_IO2         GPIO_NUM_26     // I2S data in io number

#elif CONFIG_IDF_TARGET_ESP32P4
#define EXAMPLE_I2S_BCLK_IO1        GPIO_NUM_45     // I2S bit clock io number
#define EXAMPLE_I2S_WS_IO1          GPIO_NUM_46     // I2S word select io number
#define EXAMPLE_I2S_DOUT_IO1        GPIO_NUM_47     // I2S data out io number
#define EXAMPLE_I2S_DIN_IO1         GPIO_NUM_48     // I2S data in io number
// PDM RX 4 line IO
#define EXAMPLE_I2S_DIN1_IO1        GPIO_NUM_20     // I2S data in io number
#define EXAMPLE_I2S_DIN2_IO1        GPIO_NUM_21     // I2S data in io number
#define EXAMPLE_I2S_DIN3_IO1        GPIO_NUM_22     // I2S data in io number
// STD/TDM simplex pins
#define EXAMPLE_I2S_BCLK_IO2        GPIO_NUM_20     // I2S bit clock io number
#define EXAMPLE_I2S_WS_IO2          GPIO_NUM_21     // I2S word select io number
#define EXAMPLE_I2S_DOUT_IO2        GPIO_NUM_22     // I2S data out io number
#define EXAMPLE_I2S_DIN_IO2         GPIO_NUM_23     // I2S data in io number

#elif CONFIG_IDF_TARGET_ESP32S3
#define EXAMPLE_I2S_BCLK_IO1        GPIO_NUM_2      // I2S bit clock io number
#define EXAMPLE_I2S_WS_IO1          GPIO_NUM_3      // I2S word select io number
#define EXAMPLE_I2S_DOUT_IO1        GPIO_NUM_4      // I2S data out io number
#define EXAMPLE_I2S_DIN_IO1         GPIO_NUM_5      // I2S data in io number
// PDM RX 4 line IO
#define EXAMPLE_I2S_DIN1_IO1        GPIO_NUM_6     // I2S data in io number
#define EXAMPLE_I2S_DIN2_IO1        GPIO_NUM_7     // I2S data in io number
#define EXAMPLE_I2S_DIN3_IO1        GPIO_NUM_8     // I2S data in io number
// STD/TDM simplex pins
#define EXAMPLE_I2S_BCLK_IO2        GPIO_NUM_6      // I2S bit clock io number
#define EXAMPLE_I2S_WS_IO2          GPIO_NUM_7      // I2S word select io number
#define EXAMPLE_I2S_DOUT_IO2        GPIO_NUM_8      // I2S data out io number
#define EXAMPLE_I2S_DIN_IO2         GPIO_NUM_9      // I2S data in io number

#else
#define EXAMPLE_I2S_BCLK_IO1        GPIO_NUM_2      // I2S bit clock io number
#define EXAMPLE_I2S_WS_IO1          GPIO_NUM_3      // I2S word select io number
#define EXAMPLE_I2S_DOUT_IO1        GPIO_NUM_4      // I2S data out io number
#define EXAMPLE_I2S_DIN_IO1         GPIO_NUM_5      // I2S data in io number

#define EXAMPLE_I2S_BCLK_IO2        GPIO_NUM_6      // I2S bit clock io number
#define EXAMPLE_I2S_WS_IO2          GPIO_NUM_7      // I2S word select io number
#define EXAMPLE_I2S_DOUT_IO2        GPIO_NUM_8      // I2S data out io number
#define EXAMPLE_I2S_DIN_IO2         GPIO_NUM_9      // I2S data in io number

#endif

#ifdef __cplusplus
}
#endif