forked from jorgenkraghjakobsen/snapclient
-
Notifications
You must be signed in to change notification settings - Fork 23
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* AI Thinker Support * Improved volume setting * Added AI as Board --------- Co-authored-by: Unknown0816 <[email protected]>
- Loading branch information
1 parent
713cda5
commit 417ec7f
Showing
9 changed files
with
639 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,155 @@ | ||
/* | ||
* ESPRESSIF MIT License | ||
* | ||
* Copyright (c) 2019 <ESPRESSIF SYSTEMS (SHANGHAI) CO., LTD> | ||
* | ||
* Permission is hereby granted for use on all ESPRESSIF SYSTEMS products, in | ||
* which case, it is free of charge, to any person obtaining a copy of this | ||
* software and associated documentation files (the "Software"), to deal in the | ||
* Software without restriction, including without limitation the rights to | ||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
* copies of the Software, and to permit persons to whom the Software is | ||
* furnished to do so, subject to the following conditions: | ||
* | ||
* The above copyright notice and this permission notice shall be included in | ||
* all copies or substantial portions of the Software. | ||
* | ||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | ||
* IN THE SOFTWARE. | ||
* | ||
*/ | ||
|
||
#include "board.h" | ||
#include "audio_mem.h" | ||
#include "esp_log.h" | ||
|
||
//#include "periph_sdcard.h" | ||
//#include "led_indicator.h" | ||
//#include "periph_touch.h" | ||
//#include "periph_button.h" | ||
|
||
static const char *TAG = "AUDIO_BOARD"; | ||
|
||
static audio_board_handle_t board_handle = 0; | ||
|
||
audio_board_handle_t | ||
audio_board_init (void) | ||
{ | ||
if (board_handle) | ||
{ | ||
ESP_LOGW (TAG, "The board has already been initialized!"); | ||
return board_handle; | ||
} | ||
board_handle = (audio_board_handle_t)audio_calloc ( | ||
1, sizeof (struct audio_board_handle)); | ||
AUDIO_MEM_CHECK (TAG, board_handle, return NULL); | ||
board_handle->audio_hal = audio_board_codec_init (); | ||
|
||
return board_handle; | ||
} | ||
|
||
audio_hal_handle_t | ||
audio_board_codec_init (void) | ||
{ | ||
audio_hal_codec_config_t audio_codec_cfg = AUDIO_CODEC_DEFAULT_CONFIG (); | ||
audio_hal_handle_t codec_hal | ||
= audio_hal_init (&audio_codec_cfg, &AUDIO_CODEC_ES8388_DEFAULT_HANDLE); | ||
AUDIO_NULL_CHECK (TAG, codec_hal, return NULL); | ||
return codec_hal; | ||
} | ||
|
||
/* | ||
display_service_handle_t audio_board_led_init(void) | ||
{ | ||
led_indicator_handle_t led = | ||
led_indicator_init((gpio_num_t)get_green_led_gpio()); display_service_config_t | ||
display = { .based_cfg = { .task_stack = 0, .task_prio = 0, .task_core = 0, | ||
.task_func = NULL, | ||
.service_start = NULL, | ||
.service_stop = NULL, | ||
.service_destroy = NULL, | ||
.service_ioctl = led_indicator_pattern, | ||
.service_name = "DISPLAY_serv", | ||
.user_data = NULL, | ||
}, | ||
.instance = led, | ||
}; | ||
return display_service_create(&display); | ||
} | ||
esp_err_t audio_board_key_init(esp_periph_set_handle_t set) | ||
{ | ||
periph_button_cfg_t btn_cfg = { | ||
.gpio_mask = (1ULL << get_input_rec_id()) | (1ULL << | ||
get_input_mode_id()), //REC BTN & MODE BTN | ||
}; | ||
esp_periph_handle_t button_handle = periph_button_init(&btn_cfg); | ||
AUDIO_NULL_CHECK(TAG, button_handle, return ESP_ERR_ADF_MEMORY_LACK); | ||
esp_err_t ret = ESP_OK; | ||
ret = esp_periph_start(set, button_handle); | ||
if (ret != ESP_OK) { | ||
return ret; | ||
} | ||
periph_touch_cfg_t touch_cfg = { | ||
.touch_mask = TOUCH_PAD_SEL4 | TOUCH_PAD_SEL7 | TOUCH_PAD_SEL8 | | ||
TOUCH_PAD_SEL9, .tap_threshold_percent = 70, | ||
}; | ||
esp_periph_handle_t touch_periph = periph_touch_init(&touch_cfg); | ||
AUDIO_NULL_CHECK(TAG, touch_periph, return ESP_ERR_ADF_MEMORY_LACK); | ||
ret = esp_periph_start(set, touch_periph); | ||
return ret; | ||
} | ||
esp_err_t audio_board_sdcard_init(esp_periph_set_handle_t set, | ||
periph_sdcard_mode_t mode) | ||
{ | ||
if (mode >= SD_MODE_MAX) { | ||
ESP_LOGE(TAG, "PLease select the correct sd mode!, current mode is %d", | ||
mode); return ESP_FAIL; | ||
} | ||
periph_sdcard_cfg_t sdcard_cfg = { | ||
.root = "/sdcard", | ||
.card_detect_pin = get_sdcard_intr_gpio(), // GPIO_NUM_34 | ||
.mode = mode, | ||
}; | ||
esp_periph_handle_t sdcard_handle = periph_sdcard_init(&sdcard_cfg); | ||
esp_err_t ret = esp_periph_start(set, sdcard_handle); | ||
int retry_time = 5; | ||
bool mount_flag = false; | ||
while (retry_time --) { | ||
if (periph_sdcard_is_mounted(sdcard_handle)) { | ||
mount_flag = true; | ||
break; | ||
} else { | ||
vTaskDelay(500 / portTICK_PERIOD_MS); | ||
} | ||
} | ||
if (mount_flag == false) { | ||
ESP_LOGE(TAG, "Sdcard mount failed"); | ||
return ESP_FAIL; | ||
} | ||
return ret; | ||
} | ||
*/ | ||
|
||
audio_board_handle_t | ||
audio_board_get_handle (void) | ||
{ | ||
return board_handle; | ||
} | ||
|
||
esp_err_t | ||
audio_board_deinit (audio_board_handle_t audio_board) | ||
{ | ||
esp_err_t ret = ESP_OK; | ||
ret = audio_hal_deinit (audio_board->audio_hal); | ||
audio_free (audio_board); | ||
board_handle = NULL; | ||
return ret; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
/* | ||
* ESPRESSIF MIT License | ||
* | ||
* Copyright (c) 2019 <ESPRESSIF SYSTEMS (SHANGHAI) CO., LTD> | ||
* | ||
* Permission is hereby granted for use on all ESPRESSIF SYSTEMS products, in | ||
* which case, it is free of charge, to any person obtaining a copy of this | ||
* software and associated documentation files (the "Software"), to deal in the | ||
* Software without restriction, including without limitation the rights to | ||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
* copies of the Software, and to permit persons to whom the Software is | ||
* furnished to do so, subject to the following conditions: | ||
* | ||
* The above copyright notice and this permission notice shall be included in | ||
* all copies or substantial portions of the Software. | ||
* | ||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | ||
* IN THE SOFTWARE. | ||
* | ||
*/ | ||
|
||
#ifndef _AUDIO_BOARD_H_ | ||
#define _AUDIO_BOARD_H_ | ||
|
||
#include "audio_hal.h" | ||
#include "board_def.h" | ||
#include "board_pins_config.h" | ||
//#include "esp_peripherals.h" | ||
//#include "display_service.h" | ||
//#include "periph_sdcard.h" | ||
|
||
#ifdef __cplusplus | ||
extern "C" | ||
{ | ||
#endif | ||
|
||
/** | ||
* @brief Audio board handle | ||
*/ | ||
struct audio_board_handle | ||
{ | ||
audio_hal_handle_t audio_hal; /*!< audio hardware abstract layer handle */ | ||
}; | ||
|
||
typedef struct audio_board_handle *audio_board_handle_t; | ||
|
||
/** | ||
* @brief Initialize audio board | ||
* | ||
* @return The audio board handle | ||
*/ | ||
audio_board_handle_t audio_board_init (void); | ||
|
||
/** | ||
* @brief Initialize codec chip | ||
* | ||
* @return The audio hal handle | ||
*/ | ||
audio_hal_handle_t audio_board_codec_init (void); | ||
|
||
///** | ||
// * @brief Initialize led peripheral and display service | ||
// * | ||
// * @return The audio display service handle | ||
// */ | ||
// display_service_handle_t audio_board_led_init(void); | ||
// | ||
///** | ||
// * @brief Initialize key peripheral | ||
// * | ||
// * @param set The handle of esp_periph_set_handle_t | ||
// * | ||
// * @return | ||
// * - ESP_OK, success | ||
// * - Others, fail | ||
// */ | ||
// esp_err_t audio_board_key_init(esp_periph_set_handle_t set); | ||
// | ||
///** | ||
// * @brief Initialize sdcard peripheral | ||
// * | ||
// * @param set The handle of esp_periph_set_handle_t | ||
// * | ||
// * @return | ||
// * - ESP_OK, success | ||
// * - Others, fail | ||
// */ | ||
// esp_err_t audio_board_sdcard_init(esp_periph_set_handle_t set, | ||
// periph_sdcard_mode_t mode); | ||
|
||
/** | ||
* @brief Query audio_board_handle | ||
* | ||
* @return The audio board handle | ||
*/ | ||
audio_board_handle_t audio_board_get_handle (void); | ||
|
||
/** | ||
* @brief Uninitialize the audio board | ||
* | ||
* @param audio_board The handle of audio board | ||
* | ||
* @return 0 success, | ||
* others fail | ||
*/ | ||
esp_err_t audio_board_deinit (audio_board_handle_t audio_board); | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
/* | ||
* ESPRESSIF MIT License | ||
* | ||
* Copyright (c) 2019 <ESPRESSIF SYSTEMS (SHANGHAI) CO., LTD> | ||
* | ||
* Permission is hereby granted for use on all ESPRESSIF SYSTEMS products, in | ||
* which case, it is free of charge, to any person obtaining a copy of this | ||
* software and associated documentation files (the "Software"), to deal in the | ||
* Software without restriction, including without limitation the rights to | ||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
* copies of the Software, and to permit persons to whom the Software is | ||
* furnished to do so, subject to the following conditions: | ||
* | ||
* The above copyright notice and this permission notice shall be included in | ||
* all copies or substantial portions of the Software. | ||
* | ||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | ||
* IN THE SOFTWARE. | ||
* | ||
*/ | ||
|
||
#ifndef _AUDIO_BOARD_DEFINITION_H_ | ||
#define _AUDIO_BOARD_DEFINITION_H_ | ||
|
||
#include "driver/touch_pad.h" | ||
|
||
#define SDCARD_OPEN_FILE_NUM_MAX 5 | ||
#define SDCARD_INTR_GPIO GPIO_NUM_34 | ||
|
||
#define BUTTON_REC_ID GPIO_NUM_36 | ||
#define BUTTON_MODE_ID GPIO_NUM_39 | ||
#define BUTTON_SET_ID TOUCH_PAD_NUM9 | ||
#define BUTTON_PLAY_ID TOUCH_PAD_NUM8 | ||
#define BUTTON_VOLUP_ID TOUCH_PAD_NUM7 | ||
#define BUTTON_VOLDOWN_ID TOUCH_PAD_NUM4 | ||
|
||
#define AUXIN_DETECT_GPIO GPIO_NUM_12 | ||
#define HEADPHONE_DETECT GPIO_NUM_19 | ||
#define PA_ENABLE_GPIO GPIO_NUM_21 | ||
|
||
#define GREEN_LED_GPIO GPIO_NUM_22 | ||
|
||
extern audio_hal_func_t AUDIO_CODEC_ES8388_DEFAULT_HANDLE; | ||
|
||
#define AUDIO_CODEC_DEFAULT_CONFIG() \ | ||
{ \ | ||
.adc_input = AUDIO_HAL_ADC_INPUT_LINE1, \ | ||
.dac_output = AUDIO_HAL_DAC_OUTPUT_ALL, \ | ||
.codec_mode = AUDIO_HAL_CODEC_MODE_BOTH, \ | ||
.i2s_iface = { \ | ||
.mode = AUDIO_HAL_MODE_SLAVE, \ | ||
.fmt = AUDIO_HAL_I2S_NORMAL, \ | ||
.samples = AUDIO_HAL_48K_SAMPLES, \ | ||
.bits = AUDIO_HAL_BIT_LENGTH_16BITS, \ | ||
}, \ | ||
}; | ||
|
||
#define INPUT_KEY_NUM 6 | ||
|
||
#define INPUT_KEY_DEFAULT_INFO() \ | ||
{ \ | ||
{ \ | ||
.type = PERIPH_ID_BUTTON, \ | ||
.user_id = INPUT_KEY_USER_ID_REC, \ | ||
.act_id = BUTTON_REC_ID, \ | ||
}, \ | ||
{ \ | ||
.type = PERIPH_ID_BUTTON, \ | ||
.user_id = INPUT_KEY_USER_ID_MODE, \ | ||
.act_id = BUTTON_MODE_ID, \ | ||
}, \ | ||
{ \ | ||
.type = PERIPH_ID_TOUCH, \ | ||
.user_id = INPUT_KEY_USER_ID_SET, \ | ||
.act_id = BUTTON_SET_ID, \ | ||
}, \ | ||
{ \ | ||
.type = PERIPH_ID_TOUCH, \ | ||
.user_id = INPUT_KEY_USER_ID_PLAY, \ | ||
.act_id = BUTTON_PLAY_ID, \ | ||
}, \ | ||
{ \ | ||
.type = PERIPH_ID_TOUCH, \ | ||
.user_id = INPUT_KEY_USER_ID_VOLUP, \ | ||
.act_id = BUTTON_VOLUP_ID, \ | ||
}, \ | ||
{ \ | ||
.type = PERIPH_ID_TOUCH, .user_id = INPUT_KEY_USER_ID_VOLDOWN, \ | ||
.act_id = BUTTON_VOLDOWN_ID, \ | ||
} \ | ||
} | ||
|
||
#endif |
Oops, something went wrong.