initial commit

This commit is contained in:
valentineautos
2025-12-05 09:22:55 +00:00
parent 46949642a2
commit 16ffc2ab10
4033 changed files with 980542 additions and 0 deletions

View File

@@ -0,0 +1,219 @@
/*
* SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#pragma once
#include <sys/cdefs.h>
#include <stdbool.h>
#include "esp_codec_dev.h"
#include "esp_err.h"
#include "driver/gpio.h"
#include "driver/i2s_std.h"
#include "audio_player.h"
#include "file_iterator.h"
#ifdef __cplusplus
extern "C" {
#endif
#define CODEC_DEFAULT_SAMPLE_RATE (16000)
#define CODEC_DEFAULT_BIT_WIDTH (16)
#define CODEC_DEFAULT_ADC_VOLUME (24.0)
#define CODEC_DEFAULT_CHANNEL (2)
#define CODEC_DEFAULT_VOLUME (60)
#define BSP_LCD_BACKLIGHT_BRIGHTNESS_MAX (95)
#define BSP_LCD_BACKLIGHT_BRIGHTNESS_MIN (0)
#define LCD_LEDC_CH (CONFIG_BSP_DISPLAY_BRIGHTNESS_LEDC_CH)
/**************************************************************************************************
* BSP Extra interface
* Mainly provided some I2S Codec interfaces.
**************************************************************************************************/
/**
* @brief Player set mute.
*
* @param enable: true or false
*
* @return
* - ESP_OK: Success
* - Others: Fail
*/
esp_err_t bsp_extra_codec_mute_set(bool enable);
/**
* @brief Player set volume.
*
* @param volume: volume set
* @param volume_set: volume set response
*
* @return
* - ESP_OK: Success
* - Others: Fail
*/
esp_err_t bsp_extra_codec_volume_set(int volume, int *volume_set);
/**
* @brief Player get volume.
*
* @return
* - volume: volume get
*/
int bsp_extra_codec_volume_get(void);
/**
* @brief Stop I2S function.
*
* @return
* - ESP_OK: Success
* - Others: Fail
*/
esp_err_t bsp_extra_codec_dev_stop(void);
/**
* @brief Resume I2S function.
*
* @return
* - ESP_OK: Success
* - Others: Fail
*/
esp_err_t bsp_extra_codec_dev_resume(void);
/**
* @brief Set I2S format to codec.
*
* @param rate: Sample rate of sample
* @param bits_cfg: Bit lengths of one channel data
* @param ch: Channels of sample
*
* @return
* - ESP_OK: Success
* - Others: Fail
*/
esp_err_t bsp_extra_codec_set_fs(uint32_t rate, uint32_t bits_cfg, i2s_slot_mode_t ch);
/**
* @brief Read data from recoder.
*
* @param audio_buffer: The pointer of receiving data buffer
* @param len: Max data buffer length
* @param bytes_read: Byte number that actually be read, can be NULL if not needed
* @param timeout_ms: Max block time
*
* @return
* - ESP_OK: Success
* - Others: Fail
*/
esp_err_t bsp_extra_i2s_read(void *audio_buffer, size_t len, size_t *bytes_read, uint32_t timeout_ms);
/**
* @brief Write data to player.
*
* @param audio_buffer: The pointer of sent data buffer
* @param len: Max data buffer length
* @param bytes_written: Byte number that actually be sent, can be NULL if not needed
* @param timeout_ms: Max block time
*
* @return
* - ESP_OK: Success
* - Others: Fail
*/
esp_err_t bsp_extra_i2s_write(void *audio_buffer, size_t len, size_t *bytes_written, uint32_t timeout_ms);
/**
* @brief Initialize codec play and record handle.
*
* @return
* - ESP_OK: Success
* - Others: Fail
*/
esp_err_t bsp_extra_codec_init();
/**
* @brief Initialize audio player task.
*
* @param path file path
*
* @return
* - ESP_OK: Success
* - Others: Fail
*/
esp_err_t bsp_extra_player_init(void);
/**
* @brief Delete audio player task.
*
* @return
* - ESP_OK: Success
* - Others: Fail
*/
esp_err_t bsp_extra_player_del(void);
/**
* @brief Initialize a file iterator instance
*
* @param path The file path for the iterator.
* @param ret_instance A pointer to the file iterator instance to be returned.
* @return
* - ESP_OK: Successfully initialized the file iterator instance.
* - ESP_FAIL: Failed to initialize the file iterator instance due to invalid parameters or memory allocation failure.
*/
esp_err_t bsp_extra_file_instance_init(const char *path, file_iterator_instance_t **ret_instance);
/**
* @brief Play the audio file at the specified index in the file iterator
*
* @param instance The file iterator instance.
* @param index The index of the file to play within the iterator.
* @return
* - ESP_OK: Successfully started playing the audio file.
* - ESP_FAIL: Failed to play the audio file due to invalid parameters or file access issues.
*/
esp_err_t bsp_extra_player_play_index(file_iterator_instance_t *instance, int index);
/**
* @brief Play the audio file specified by the file path
*
* @param file_path The path to the audio file to be played.
* @return
* - ESP_OK: Successfully started playing the audio file.
* - ESP_FAIL: Failed to play the audio file due to file access issues.
*/
esp_err_t bsp_extra_player_play_file(const char *file_path);
/**
* @brief Register a callback function for the audio player
*
* @param cb The callback function to be registered.
* @param user_data User data to be passed to the callback function.
*/
void bsp_extra_player_register_callback(audio_player_cb_t cb, void *user_data);
/**
* @brief Check if the specified audio file is currently playing
*
* @param file_path The path to the audio file to check.
* @return
* - true: The specified audio file is currently playing.
* - false: The specified audio file is not currently playing.
*/
bool bsp_extra_player_is_playing_by_path(const char *file_path);
/**
* @brief Check if the audio file at the specified index is currently playing
*
* @param instance The file iterator instance.
* @param index The index of the file to check.
* @return
* - true: The audio file at the specified index is currently playing.
* - false: The audio file at the specified index is not currently playing.
*/
bool bsp_extra_player_is_playing_by_index(file_iterator_instance_t *instance, int index);
#ifdef __cplusplus
}
#endif