Skip to content

Commit fb1373e

Browse files
authored
Merge pull request #162 from baba-dev/codex/add-kconfig-for-audio-long-demo
feat(audio): gate long demo track
2 parents 21a173e + 3145fd0 commit fb1373e

4 files changed

Lines changed: 52 additions & 14 deletions

File tree

platforms/tab5/main/CMakeLists.txt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,15 @@ file(GLOB_RECURSE MY_HAL_SRCS
1818
./hal/*.cpp
1919
)
2020

21+
set(APP_EMBED_TXTFILES
22+
"../audio/startup_sfx.mp3"
23+
"../audio/shutdown_sfx.mp3"
24+
)
25+
26+
if(CONFIG_HAL_AUDIO_ENABLE_LONG_DEMO)
27+
list(APPEND APP_EMBED_TXTFILES "../audio/canon_in_d.mp3")
28+
endif()
29+
2130
idf_component_register(
2231
SRCS "app_main.cpp" ${APP_LAYER_SRCS} ${MY_HAL_SRCS}
2332
INCLUDE_DIRS "." ${APP_LAYER_INCS}
@@ -26,5 +35,5 @@ idf_component_register(
2635
esp_http_server chmorgan__esp-audio-player mooncake mooncake_log
2736
smooth_ui_toolkit power_monitor_ina226 esp_video esp_cam_sensor
2837
sensor_bmi270 espressif__usb_host_hid usb imlib json
29-
EMBED_TXTFILES "../audio/canon_in_d.mp3" "../audio/startup_sfx.mp3" "../audio/shutdown_sfx.mp3")
38+
EMBED_TXTFILES ${APP_EMBED_TXTFILES})
3039

platforms/tab5/main/Kconfig.projbuild

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,12 @@ config APP_LOG_LEVEL
88
Sets the default log verbosity for the application layer.
99
0 = none, 1 = error, 2 = warn, 3 = info, 4 = debug, 5 = verbose.
1010

11+
config HAL_AUDIO_ENABLE_LONG_DEMO
12+
bool "Enable long Canon in D demo"
13+
default n
14+
help
15+
Enable this option to embed the long-form Canon in D MP3 demo track in
16+
the firmware. Disable it for CI or release builds to save flash space and
17+
reduce build times.
18+
1119
endmenu

platforms/tab5/main/hal/components/hal_audio.cpp

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -251,24 +251,36 @@ hal::HalBase::MicTestState_t HalEsp32::getHeadphoneMicRecordTestState()
251251
/* -------------------------------------------------------------------------- */
252252
/* Music play test */
253253
/* -------------------------------------------------------------------------- */
254+
#if CONFIG_HAL_AUDIO_ENABLE_LONG_DEMO
254255
extern const uint8_t canon_in_d_mp3_start[] asm("_binary_canon_in_d_mp3_start");
255256
extern const uint8_t canon_in_d_mp3_end[] asm("_binary_canon_in_d_mp3_end");
257+
#endif
256258
extern const uint8_t startup_sfx_mp3_start[] asm("_binary_startup_sfx_mp3_start");
257259
extern const uint8_t startup_sfx_mp3_end[] asm("_binary_startup_sfx_mp3_end");
258260
extern const uint8_t shutdown_sfx_mp3_start[] asm("_binary_shutdown_sfx_mp3_start");
259261
extern const uint8_t shutdown_sfx_mp3_end[] asm("_binary_shutdown_sfx_mp3_end");
260262

261-
enum Mp3PlayTarget_t {
263+
enum Mp3PlayTarget_t
264+
{
265+
#if CONFIG_HAL_AUDIO_ENABLE_LONG_DEMO
262266
MP3_PLAY_TARGET_CANON_IN_D,
267+
#endif
263268
MP3_PLAY_TARGET_STARTUP_SFX,
264269
MP3_PLAY_TARGET_SHUTDOWN_SFX,
265270
};
266271

267-
struct MusicTestData_t {
268-
std::mutex mutex;
269-
bool killSignal = false;
270-
hal::HalBase::MusicPlayState_t state = hal::HalBase::MUSIC_PLAY_IDLE;
271-
Mp3PlayTarget_t target = MP3_PLAY_TARGET_CANON_IN_D;
272+
#if CONFIG_HAL_AUDIO_ENABLE_LONG_DEMO
273+
static constexpr Mp3PlayTarget_t kDefaultMusicTarget = MP3_PLAY_TARGET_CANON_IN_D;
274+
#else
275+
static constexpr Mp3PlayTarget_t kDefaultMusicTarget = MP3_PLAY_TARGET_STARTUP_SFX;
276+
#endif
277+
278+
struct MusicTestData_t
279+
{
280+
std::mutex mutex;
281+
bool killSignal = false;
282+
hal::HalBase::MusicPlayState_t state = hal::HalBase::MUSIC_PLAY_IDLE;
283+
Mp3PlayTarget_t target = kDefaultMusicTarget;
272284
};
273285
static MusicTestData_t _music_test_data;
274286

@@ -286,7 +298,8 @@ static void audio_player_callback(audio_player_cb_ctx_t* ctx)
286298
audio_player_state_t state = audio_player_get_state();
287299
mclog::tagInfo(TAG, "audio state: {}", (int)state);
288300

289-
if (state == AUDIO_PLAYER_STATE_IDLE) {
301+
if (state == AUDIO_PLAYER_STATE_IDLE)
302+
{
290303
GetHAL()->stopPlayMusicTest();
291304
}
292305
}
@@ -308,12 +321,15 @@ static void _music_play_task(void* param)
308321
audio_player_callback_register(audio_player_callback, NULL);
309322

310323
size_t mp3_size = 0;
311-
FILE* fp = nullptr;
312-
switch (_music_test_data.target) {
324+
FILE* fp = nullptr;
325+
switch (_music_test_data.target)
326+
{
327+
#if CONFIG_HAL_AUDIO_ENABLE_LONG_DEMO
313328
case MP3_PLAY_TARGET_CANON_IN_D:
314329
mp3_size = (canon_in_d_mp3_end - canon_in_d_mp3_start) - 1;
315330
fp = fmemopen((void*)canon_in_d_mp3_start, mp3_size, "rb");
316331
break;
332+
#endif
317333
case MP3_PLAY_TARGET_STARTUP_SFX:
318334
mp3_size = (startup_sfx_mp3_end - startup_sfx_mp3_start) - 1;
319335
fp = fmemopen((void*)startup_sfx_mp3_start, mp3_size, "rb");
@@ -325,7 +341,8 @@ static void _music_play_task(void* param)
325341
}
326342

327343
esp_err_t ret = audio_player_play(fp);
328-
if (ret != ESP_OK) {
344+
if (ret != ESP_OK)
345+
{
329346
mclog::tagError(TAG, "audio play failed");
330347
vTaskDelete(NULL);
331348
return;
@@ -355,20 +372,23 @@ static void _music_play_task(void* param)
355372

356373
void try_create_music_play_task(Mp3PlayTarget_t target)
357374
{
358-
if (_music_test_data.state == hal::HalBase::MUSIC_PLAY_IDLE) {
375+
if (_music_test_data.state == hal::HalBase::MUSIC_PLAY_IDLE)
376+
{
359377
_music_test_data.state = hal::HalBase::MUSIC_PLAY_PLAYING;
360378
_music_test_data.target = target;
361379
_music_test_data.killSignal = false;
362380
xTaskCreate(_music_play_task, "music", 3000, nullptr, 5, nullptr);
363-
} else {
381+
}
382+
else
383+
{
364384
mclog::tagWarn(TAG, "music play is running");
365385
}
366386
}
367387

368388
void HalEsp32::startPlayMusicTest()
369389
{
370390
std::lock_guard<std::mutex> lock(_music_test_data.mutex);
371-
try_create_music_play_task(MP3_PLAY_TARGET_CANON_IN_D);
391+
try_create_music_play_task(kDefaultMusicTarget);
372392
}
373393

374394
hal::HalBase::MusicPlayState_t HalEsp32::getMusicPlayTestState()

platforms/tab5/sdkconfig.defaults

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,4 @@ CONFIG_LV_USE_FONT_COMPRESSED=y
5050
CONFIG_LV_USE_DEMO_BENCHMARK=y
5151
CONFIG_IDF_EXPERIMENTAL_FEATURES=y
5252
CONFIG_ESP_HOSTED_IDF_SLAVE_TARGET="esp32c6"
53+
# CONFIG_HAL_AUDIO_ENABLE_LONG_DEMO is not set

0 commit comments

Comments
 (0)