From: cheng Date: Tue, 16 Sep 2025 11:55:07 +0000 (+0800) Subject: 雷鸟:删除冗余代码 X-Git-Tag: leiniao_debug_1.0.0_20250922_020716~80 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=558660f42d5784e2b89b308d933a12d65df3accf;p=mirrors%2FFD230.git 雷鸟:删除冗余代码 --- diff --git a/code/sdk/zhihui/leiniao/audio_stream/audio_stream_player.cpp b/code/sdk/zhihui/leiniao/audio_stream/audio_stream_player.cpp index e74ca6f16..352806cbc 100644 --- a/code/sdk/zhihui/leiniao/audio_stream/audio_stream_player.cpp +++ b/code/sdk/zhihui/leiniao/audio_stream/audio_stream_player.cpp @@ -122,7 +122,7 @@ static void AudioStreamPlayThread(void *arg) if (ret != 0) { ctx->stats.retryCount++; - usleep(100000); + LOS_Msleep(100); goto WRITE_RETRY; } ctx->stats.totalBytesPlayed += msg.size; @@ -152,12 +152,12 @@ static void AudioStreamPlayThread(void *arg) else { MEDIA_ERR_LOG("AudioStreamPlayThread: queue get error=%d", status); - usleep(10000); + LOS_Msleep(100); } } else { - usleep(10000); + LOS_Msleep(100); } } @@ -282,7 +282,7 @@ int32_t AudioStreamPlayerStart(AudioStreamPlayerHandle handle) { if (handle == nullptr) { - MEDIA_ERR_LOG("AudioStreamPlayerStart: handle is null"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AudioStreamPlayerStart: handle is null"); return -1; } @@ -290,7 +290,7 @@ int32_t AudioStreamPlayerStart(AudioStreamPlayerHandle handle) if (ctx->state == AUDIO_STREAM_STATE_PLAYING) { - MEDIA_WARNING_LOG("AudioStreamPlayerStart: already playing"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AudioStreamPlayerStart: already playing"); return 0; } @@ -298,7 +298,7 @@ int32_t AudioStreamPlayerStart(AudioStreamPlayerHandle handle) int32_t ret = AudioStreamOutPlay(); if (ret != 0) { - MEDIA_ERR_LOG("AudioStreamPlayerStart: failed to start audio stream, ret=%d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AudioStreamPlayerStart: failed to start audio stream, ret=%d", ret); return -1; } @@ -318,7 +318,7 @@ int32_t AudioStreamPlayerStart(AudioStreamPlayerHandle handle) errcode_t ret_errcode_t = uapi_create_osThread_custom(&task_cfg); if (ret_errcode_t != ERRCODE_SUCC) { - MEDIA_ERR_LOG("AudioStreamPlayerStart: failed to create thread: %d", ret_errcode_t); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AudioStreamPlayerStart: failed to create thread: %d", ret_errcode_t); ctx->isStopped = true; ctx->state = AUDIO_STREAM_STATE_ERROR; return -1; @@ -342,7 +342,7 @@ int32_t AudioStreamPlayerPause(AudioStreamPlayerHandle handle) { if (handle == nullptr) { - MEDIA_ERR_LOG("AudioStreamPlayerPause: handle is null"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AudioStreamPlayerPause: handle is null"); return -1; } @@ -350,7 +350,7 @@ int32_t AudioStreamPlayerPause(AudioStreamPlayerHandle handle) if (ctx->state != AUDIO_STREAM_STATE_PLAYING) { - MEDIA_WARNING_LOG("AudioStreamPlayerPause: not playing"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AudioStreamPlayerPause: not playing"); return -1; } @@ -371,7 +371,7 @@ int32_t AudioStreamPlayerResume(AudioStreamPlayerHandle handle) { if (handle == nullptr) { - MEDIA_ERR_LOG("AudioStreamPlayerResume: handle is null"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AudioStreamPlayerResume: handle is null"); return -1; } @@ -379,7 +379,7 @@ int32_t AudioStreamPlayerResume(AudioStreamPlayerHandle handle) if (ctx->state != AUDIO_STREAM_STATE_PAUSED) { - MEDIA_WARNING_LOG("AudioStreamPlayerResume: not paused"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AudioStreamPlayerResume: not paused"); return -1; } @@ -400,7 +400,7 @@ int32_t AudioStreamPlayerStop(AudioStreamPlayerHandle handle) { if (handle == nullptr) { - MEDIA_ERR_LOG("AudioStreamPlayerStop: handle is null"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AudioStreamPlayerStop: handle is null"); return -1; } @@ -408,7 +408,7 @@ int32_t AudioStreamPlayerStop(AudioStreamPlayerHandle handle) if (ctx->state == AUDIO_STREAM_STATE_STOPPED) { - MEDIA_WARNING_LOG("AudioStreamPlayerStop: already stopped"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AudioStreamPlayerStop: already stopped"); return 0; } @@ -462,7 +462,7 @@ int32_t AudioStreamPlayerWrite(AudioStreamPlayerHandle handle, const uint8_t *da { if (handle == nullptr || data == nullptr || size == 0) { - MEDIA_ERR_LOG("AudioStreamPlayerWrite: invalid parameters"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AudioStreamPlayerWrite: invalid parameters"); return -1; } @@ -470,7 +470,7 @@ int32_t AudioStreamPlayerWrite(AudioStreamPlayerHandle handle, const uint8_t *da if (ctx->state != AUDIO_STREAM_STATE_PLAYING && ctx->state != AUDIO_STREAM_STATE_PAUSED) { - MEDIA_ERR_LOG("AudioStreamPlayerWrite: player not in playing/paused state"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AudioStreamPlayerWrite: player not in playing/paused state"); return -1; } @@ -478,7 +478,7 @@ int32_t AudioStreamPlayerWrite(AudioStreamPlayerHandle handle, const uint8_t *da uint8_t *dataCopy = (uint8_t *)malloc(size); if (dataCopy == nullptr) { - MEDIA_ERR_LOG("AudioStreamPlayerWrite: failed to allocate memory"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AudioStreamPlayerWrite: failed to allocate memory"); return -1; } @@ -497,21 +497,25 @@ int32_t AudioStreamPlayerWrite(AudioStreamPlayerHandle handle, const uint8_t *da msg.size = size; msg.timestamp = (uint32_t)time(nullptr); - osStatus_t status = osMessageQueuePut(ctx->inputQueue, &msg, 0, 0); - if (status == osOK) + osStatus_t status; + const uint32_t put_timeout_ms = 50; //单次等待上限 + int retries = 6; // 总等待 ~300ms + do { - ctx->queueMsgCount++; - ctx->stats.queueCurrentSize = ctx->queueMsgCount; - MEDIA_DEBUG_LOG("AudioStreamPlayerWrite: queued %u bytes", size); - return 0; - } - else - { - MEDIA_WARNING_LOG("AudioStreamPlayerWrite: queue full or error=%d, dropping frame", status); - ctx->stats.droppedFrames++; - free(dataCopy); - return -1; - } + status = osMessageQueuePut(ctx->inputQueue, &msg, 0, put_timeout_ms); + if (status == osOK) + { + ctx->queueMsgCount++; + ctx->stats.queueCurrentSize = ctx->queueMsgCount; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AudioStreamPlayerWrite: queued %u bytes", size); + return 0; + } + LOS_Msleep(10); // 10ms 小憩等待消费 + } while (--retries > 0); + // 超过重试仍满,丢弃本块 + ctx->stats.droppedFrames++; + free(dataCopy); + return -1; } // 清空播放队列 @@ -519,7 +523,7 @@ int32_t AudioStreamPlayerFlush(AudioStreamPlayerHandle handle) { if (handle == nullptr) { - MEDIA_ERR_LOG("AudioStreamPlayerFlush: handle is null"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AudioStreamPlayerFlush: handle is null"); return -1; } @@ -562,7 +566,7 @@ int32_t AudioStreamPlayerGetStats(AudioStreamPlayerHandle handle, AudioStreamSta { if (handle == nullptr || stats == nullptr) { - MEDIA_ERR_LOG("AudioStreamPlayerGetStats: invalid parameters"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AudioStreamPlayerGetStats: invalid parameters"); return -1; } @@ -576,7 +580,7 @@ int32_t AudioStreamPlayerSetVolume(AudioStreamPlayerHandle handle, float volume) { if (handle == nullptr || volume < 0.0f || volume > 1.0f) { - MEDIA_ERR_LOG("AudioStreamPlayerSetVolume: invalid parameters"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AudioStreamPlayerSetVolume: invalid parameters"); return -1; } @@ -593,7 +597,7 @@ int32_t AudioStreamPlayerDestroy(AudioStreamPlayerHandle handle) { if (handle == nullptr) { - MEDIA_ERR_LOG("AudioStreamPlayerDestroy: handle is null"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AudioStreamPlayerDestroy: handle is null"); return -1; } @@ -648,7 +652,7 @@ uint32_t ln_audio_player_init(void) cfg.channels = 1; cfg.bitsPerSample = 16; cfg.bufferSize = 2048; - cfg.queueSize = 10; + cfg.queueSize = 32; if (AudioStreamPlayerCreate(&cfg, &g_ln_audio_player) != 0) { printf("[LN_AUDIO] create failed\n"); @@ -683,6 +687,13 @@ int32_t ln_audio_player_write(const uint8_t* data, uint32_t size) return AudioStreamPlayerWrite(g_ln_audio_player, data, size); } +int32_t ln_audio_player_get_stats(AudioStreamStats* stats) +{ + if (stats == nullptr) return -1; + if (g_ln_audio_player == nullptr) return -1; + return AudioStreamPlayerGetStats(g_ln_audio_player, stats); +} + #ifdef __cplusplus }; #endif \ No newline at end of file diff --git a/code/sdk/zhihui/leiniao/audio_stream/audio_stream_player.h b/code/sdk/zhihui/leiniao/audio_stream/audio_stream_player.h index 76f300c94..aa84d5208 100644 --- a/code/sdk/zhihui/leiniao/audio_stream/audio_stream_player.h +++ b/code/sdk/zhihui/leiniao/audio_stream/audio_stream_player.h @@ -149,6 +149,7 @@ int32_t AudioStreamPlayerDestroy(AudioStreamPlayerHandle handle); uint32_t ln_audio_player_init(void); int32_t ln_audio_player_write(const uint8_t* data, uint32_t size); +int32_t ln_audio_player_get_stats(AudioStreamStats* stats); #ifdef __cplusplus } diff --git a/code/sdk/zhihui/leiniao/imsl_ln/leiniao_api_at.c b/code/sdk/zhihui/leiniao/imsl_ln/leiniao_api_at.c index d83cadbc5..6b682305d 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/leiniao_api_at.c +++ b/code/sdk/zhihui/leiniao/imsl_ln/leiniao_api_at.c @@ -497,22 +497,10 @@ static uint32_t vad_help(uint8_t *para, uint32_t paraLen, char *strCommonCmd) //获取设备Token static uint32_t ln_get_device_token_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd) { + VAD_UNUSED(para); + VAD_UNUSED(paraLen); VAD_UNUSED(strCommonCmd); - uint8_t argv[LN_MAX_ARGC][LN_MAX_ARGV_LEN] = {0}; - uint32_t argc = 0; - (void)ConvertCmdToParam(para, paraLen, argv, &argc); - - const char *device_id = (argc >= 1) ? (const char *)argv[0] : uapi_ln_get_device_id(); - const char *device_iccid = (argc >= 2) ? (const char *)argv[1] : uapi_ln_get_device_iccid(); - const char *device_model = (argc >= 3) ? (const char *)argv[2] : uapi_ln_get_device_model(); - const char *device_ver = (argc >= 4) ? (const char *)argv[3] : uapi_ln_get_device_version(); - printf("[LN] GetDeviceToken start id=%s iccid=%s model=%s ver=%s\n", device_id, device_iccid, device_model, device_ver); - ln_device_token_req_t req = {0}; - strcpy(req.device_id, device_id); - strcpy(req.device_iccid, device_iccid); - strcpy(req.device_model, device_model); - strcpy(req.device_version, device_ver); - do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_GET_DEVICE_TOKEN, (char *)&req, sizeof(req)); + do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_GET_DEVICE_TOKEN, NULL, 0); return ERRCODE_SUCC; } @@ -531,28 +519,9 @@ static uint32_t ln_clear_device_token_at(uint8_t *para, uint32_t paraLen, char * static uint32_t ln_speech_chat_stream_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd) { VAD_UNUSED(strCommonCmd); - uint8_t argv[LN_MAX_ARGC][LN_MAX_ARGV_LEN] = {0}; - uint32_t argc = 0; - (void)ConvertCmdToParam(para, paraLen, argv, &argc); - - const char *device_id = uapi_ln_get_device_id(); - const char *device_token = uapi_ln_get_device_token(); - if((device_id == NULL) || (device_token == NULL)) - { - printf("[LN] SpeechChat device_id or device_token is NULL\n"); - return ERRCODE_SUCC; - } - const char *audio_path = "/user/test_audio.mp3"; - - ln_speech_chat_req_t req = {0}; - strncpy(req.device_id, device_id, sizeof(req.device_id) - 1); - strncpy(req.device_token, device_token, sizeof(req.device_token) - 1); - strncpy(req.audio_path, audio_path, sizeof(req.audio_path) - 1); - - printf("[LN] SpeechChat submit: id=%s\n", req.device_id); - printf("[LN] SpeechChat submit: token=%s\n", req.device_token); - printf("[LN] SpeechChat submit: audio=%s\n", req.audio_path); - do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_SPEECH_CHAT_STREAM, (char *)&req, sizeof(req)); + VAD_UNUSED(para); + VAD_UNUSED(paraLen); + do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_SPEECH_CHAT_STREAM, NULL, 0); return ERRCODE_SUCC; } @@ -560,11 +529,9 @@ static uint32_t ln_speech_chat_stream_at(uint8_t *para, uint32_t paraLen, char * static uint32_t ln_story_choose_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd) { VAD_UNUSED(strCommonCmd); - uint8_t argv[LN_MAX_ARGC][LN_MAX_ARGV_LEN] = {0}; uint32_t argc = 0; (void)ConvertCmdToParam(para, paraLen, argv, &argc); - const char *audio_path = (argc >= 1) ? (const char *)argv[0] : "/user/story_request.mp3"; - ln_story_choose_req_t req = {0}; strncpy(req.audio_path, audio_path, sizeof(req.audio_path) - 1); - printf("[LN][STORY_CHOOSE] audio=%s\n", req.audio_path); - do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_STORY_CHOOSE, (char *)&req, sizeof(req)); + VAD_UNUSED(para); + VAD_UNUSED(paraLen); + do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_STORY_CHOOSE, NULL, 0); return ERRCODE_SUCC; } @@ -582,7 +549,9 @@ static uint32_t ln_story_random_at(uint8_t *para, uint32_t paraLen, char *strCom /* 故事-获取退出哄睡询问:AT^LN_STORY_EXIT */ static uint32_t ln_story_exit_inquiry_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd) { - VAD_UNUSED(para); VAD_UNUSED(paraLen); VAD_UNUSED(strCommonCmd); + VAD_UNUSED(para); + VAD_UNUSED(paraLen); + VAD_UNUSED(strCommonCmd); printf("[LN][STORY_EXIT_INQUIRY]\n"); do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_STORY_EXIT_INQUIRY, NULL, 0); return ERRCODE_SUCC; @@ -591,7 +560,9 @@ static uint32_t ln_story_exit_inquiry_at(uint8_t *para, uint32_t paraLen, char * /* 故事-确认结束哄睡模式:AT^LN_STORY_FINISH */ static uint32_t ln_story_finish_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd) { - VAD_UNUSED(para); VAD_UNUSED(paraLen); VAD_UNUSED(strCommonCmd); + VAD_UNUSED(para); + VAD_UNUSED(paraLen); + VAD_UNUSED(strCommonCmd); printf("[LN][STORY_FINISH]\n"); do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_STORY_FINISH, NULL, 0); return ERRCODE_SUCC; @@ -600,7 +571,9 @@ static uint32_t ln_story_finish_at(uint8_t *para, uint32_t paraLen, char *strCom /* 设备-获取角色信息:AT^LN_DEV_CHARACTER */ static uint32_t ln_device_get_character_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd) { - VAD_UNUSED(para); VAD_UNUSED(paraLen); VAD_UNUSED(strCommonCmd); + VAD_UNUSED(para); + VAD_UNUSED(paraLen); + VAD_UNUSED(strCommonCmd); printf("[LN][DEVICE_GET_CHARACTER]\n"); do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_GET_CHARACTER, NULL, 0); return ERRCODE_SUCC; @@ -609,7 +582,9 @@ static uint32_t ln_device_get_character_at(uint8_t *para, uint32_t paraLen, char /* 设备-获取绑定用户ID:AT^LN_DEV_USERID */ static uint32_t ln_device_get_userid_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd) { - VAD_UNUSED(para); VAD_UNUSED(paraLen); VAD_UNUSED(strCommonCmd); + VAD_UNUSED(para); + VAD_UNUSED(paraLen); + VAD_UNUSED(strCommonCmd); printf("[LN][DEVICE_GET_USER_ID]\n"); do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_GET_USER_ID, NULL, 0); return ERRCODE_SUCC; @@ -618,7 +593,9 @@ static uint32_t ln_device_get_userid_at(uint8_t *para, uint32_t paraLen, char *s /* OTA-获取升级任务:AT^LN_OTA_GET_TASK */ static uint32_t ln_ota_get_task_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd) { - VAD_UNUSED(para); VAD_UNUSED(paraLen); VAD_UNUSED(strCommonCmd); + VAD_UNUSED(para); + VAD_UNUSED(paraLen); + VAD_UNUSED(strCommonCmd); printf("[LN][OTA_GET_TASK]\n"); do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_OTA_GET_TASK, NULL, 0); return ERRCODE_SUCC; @@ -630,7 +607,9 @@ static uint32_t ln_ota_get_task_at(uint8_t *para, uint32_t paraLen, char *strCom */ static uint32_t ln_ota_download_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd) { - VAD_UNUSED(para); VAD_UNUSED(paraLen); VAD_UNUSED(strCommonCmd); + VAD_UNUSED(para); + VAD_UNUSED(paraLen); + VAD_UNUSED(strCommonCmd); printf("[LN][OTA_DOWNLOAD]\n"); do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_OTA_DOWNLOAD, NULL, 0); return ERRCODE_SUCC; @@ -639,7 +618,9 @@ static uint32_t ln_ota_download_at(uint8_t *para, uint32_t paraLen, char *strCom /* AT^LN_WS_START */ static uint32_t ln_ws_start_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd) { - VAD_UNUSED(para); VAD_UNUSED(paraLen); VAD_UNUSED(strCommonCmd); + VAD_UNUSED(para); + VAD_UNUSED(paraLen); + VAD_UNUSED(strCommonCmd); printf("[LN][WS_START]\n"); int ret = ln_ws_start(); if (ret != 0) diff --git a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c index 20ffbf7e0..3f288bd5b 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c +++ b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c @@ -96,6 +96,16 @@ const char *uapi_ln_ota_get_saved_path(void) return (g_ln_last_saved_path[0] != '\0') ? g_ln_last_saved_path : NULL; } +/* 获取语音对话流录音音频路径 */ +const char *uapi_ln_get_speechchat_audio_path(void) +{ + return "/user/leiniao/speech_chat_audio.mp3"; +} +/* 获取选择故事录音音频路径 */ +const char *uapi_ln_get_story_choose_audio_path(void) +{ + return "/user/leiniao/story_choose_audio.mp3"; +} /* 自适应申请HttpClient缓冲(保证header>=2048),失败则逐步扩容重试 */ HTTPC_RESULT ln_http_prepare_auto(HttpClientData *clientData, int header_size, int resp_size) { @@ -501,6 +511,7 @@ static uint32_t ln_download_mp3_file_advanced(const char *audio_url, const char int ret = -1; size_t total_written = 0; + #if TEST_MP3_DOWNLOAD // 打开文件准备写入 FILE *fd = fopen(save_path, "wb"); if (!fd) @@ -508,12 +519,15 @@ static uint32_t ln_download_mp3_file_advanced(const char *audio_url, const char printf("[SSE] fopen failed for %s\n", save_path); return ERRCODE_FAIL; } + #endif HTTPC_RESULT prep = ln_http_prepare_auto(&client_data, 2048, LN_CLIENT_PREPARE_SIZE * 2); if (prep != HTTP_SUCCESS) { printf("[SSE] prepare failed: %d\n", prep); + #if TEST_MP3_DOWNLOAD fclose(fd); + #endif return ERRCODE_FAIL; } @@ -522,7 +536,9 @@ static uint32_t ln_download_mp3_file_advanced(const char *audio_url, const char if (ret != 0) { printf("[SSE] connection failed, ret=0x%x\n", ret); + #if TEST_MP3_DOWNLOAD fclose(fd); + #endif HttpClientUnprepare(&client_data); return ERRCODE_FAIL; } @@ -532,7 +548,9 @@ static uint32_t ln_download_mp3_file_advanced(const char *audio_url, const char if (ret != 0) { printf("[SSE] send request failed, ret=0x%x\n", ret); + #if TEST_MP3_DOWNLOAD fclose(fd); + #endif HttpClientClse(&client); HttpClientUnprepare(&client_data); return ERRCODE_FAIL; @@ -546,6 +564,7 @@ static uint32_t ln_download_mp3_file_advanced(const char *audio_url, const char { if (client_data.contentBlockLen > 0) { + #if TEST_MP3_DOWNLOAD /* 一边下载到文件,一边推送到播放器队列,尝试边下边播 */ size_t written = fwrite(client_data.responseBuf, 1, client_data.contentBlockLen, fd); if (written != client_data.contentBlockLen) @@ -557,11 +576,12 @@ static uint32_t ln_download_mp3_file_advanced(const char *audio_url, const char HttpClientUnprepare(&client_data); return ERRCODE_FAIL; } + total_written += written; + #endif /* 非阻塞入队,队列满则忽略该块 */ (void)ln_audio_player_write((const uint8_t*)client_data.responseBuf, (uint32_t)client_data.contentBlockLen); - total_written += written; } } else @@ -571,7 +591,9 @@ static uint32_t ln_download_mp3_file_advanced(const char *audio_url, const char } } while (client_data.isMore); + #if TEST_MP3_DOWNLOAD fclose(fd); + #endif HttpClientUnprepare(&client_data); HttpClientClse(&client); @@ -877,35 +899,23 @@ static void ln_http_server_send_task(void const *arg) } if (mail.cmd == LN_HTTP_SERVICE_CMD_GET_DEVICE_TOKEN) { - if (mail.data != NULL && mail.len == sizeof(ln_device_token_req_t)) - { - printf("LN_HTTP_SERVICE_CMD_GET_DEVICE_TOKEN:获取雷鸟设备Token\n"); - ln_device_token_req_t req; - memcpy(&req, mail.data, sizeof(req)); - ln_get_device_token_http(req.device_id, req.device_iccid, req.device_model, req.device_version); - } + printf("LN_HTTP_SERVICE_CMD_GET_DEVICE_TOKEN:获取雷鸟设备Token\n"); + ln_get_device_token_http(uapi_ln_get_device_id(), uapi_ln_get_device_iccid(), uapi_ln_get_device_model(), uapi_ln_get_device_version()); } else if (mail.cmd == LN_HTTP_SERVICE_CMD_SPEECH_CHAT_STREAM) { - if (mail.data != NULL && mail.len == sizeof(ln_speech_chat_req_t)) - { - printf("LN_HTTP_SERVICE_CMD_SPEECH_CHAT_STREAM\n"); - ln_speech_chat_req_t req; - memcpy(&req, mail.data, sizeof(req)); - ln_speech_chat_stream_http(req.device_id, req.device_token, req.audio_path); - } + printf("LN_HTTP_SERVICE_CMD_SPEECH_CHAT_STREAM\n"); + ln_speech_chat_stream_http(uapi_ln_get_device_id(), uapi_ln_get_device_token(), uapi_ln_get_speechchat_audio_path()); } else if (mail.cmd == LN_HTTP_SERVICE_CMD_STORY_CHOOSE) { - if (mail.data && mail.len == sizeof(ln_story_choose_req_t)) { - printf("LN_HTTP_SERVICE_CMD_STORY_CHOOSE:选择故事\n"); - ln_story_choose_req_t req; memcpy(&req, mail.data, sizeof(req)); - ln_story_choose_http(uapi_ln_get_device_id(), uapi_ln_get_device_token(), req.audio_path); - } + printf("LN_HTTP_SERVICE_CMD_STORY_CHOOSE:选择故事\n"); + ln_story_choose_http(uapi_ln_get_device_id(), uapi_ln_get_device_token(), uapi_ln_get_story_choose_audio_path()); } else if (mail.cmd == LN_HTTP_SERVICE_CMD_STORY_RANDOM) { - if (mail.data && mail.len == sizeof(ln_story_random_req_t)) { + if (mail.data && mail.len == sizeof(ln_story_random_req_t)) + { printf("LN_HTTP_SERVICE_CMD_STORY_RANDOM:随机故事\n"); ln_story_random_req_t req; memcpy(&req, mail.data, sizeof(req)); ln_story_random_http(uapi_ln_get_device_id(), uapi_ln_get_device_token(), req.story_theme[0] ? req.story_theme : NULL); diff --git a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.h b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.h index 0c1db7c68..9a3c3e769 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.h +++ b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.h @@ -52,6 +52,7 @@ typedef struct #define LN_DATA_PATH "/user/leiniao" #define LN_CLIENT_PREPARE_SIZE 2*1024 +#define TEST_MP3_DOWNLOAD 0 //测试下载mp3 #define LN_HTTP_SERVICE_CMD_GET_DEVICE_TOKEN 0x1 /* 获取设备 token */ #define LN_HTTP_SERVICE_CMD_SPEECH_CHAT_STREAM 0x2 /* 语音对话流 */ @@ -100,27 +101,6 @@ typedef struct #define LN_HTTP_SERVICE_CMD_AUDIO_PAUSE 0x1005 /* 暂停播放 */ #define LN_HTTP_SERVICE_CMD_AUDIO_RESUME 0x1006 /* 恢复播放 */ -typedef struct -{ - char device_id[64]; - char device_iccid[32]; - char device_model[32]; - char device_version[16]; -} ln_device_token_req_t; - -typedef struct -{ - char device_id[64]; - char device_token[512]; - char audio_path[256]; -} ln_speech_chat_req_t; - -/* 故事-选择故事 请求体 */ -typedef struct -{ - char audio_path[256]; -} ln_story_choose_req_t; - /* 故事-随机故事 请求体(可选主题)*/ typedef struct { @@ -167,6 +147,10 @@ void uapi_ln_clear_device_token(void); int uapi_ln_ota_get_update_type(void); /* OTA 下载保存的最后一个文件路径(无则返回NULL)*/ const char *uapi_ln_ota_get_saved_path(void); +/* 获取语音对话流录音音频路径 */ +const char *uapi_ln_get_speechchat_audio_path(void); +/* 获取选择故事录音音频路径 */ +const char *uapi_ln_get_story_choose_audio_path(void); /* ============================== 共享全局状态(跨文件) ============================== */ extern char *g_device_token;