增加帧率相关at
authorCaisking <Casiking@zhihuishixun.com>
Fri, 26 Sep 2025 06:32:35 +0000 (14:32 +0800)
committerCaisking <Casiking@zhihuishixun.com>
Fri, 26 Sep 2025 06:32:35 +0000 (14:32 +0800)
code/sdk/zhihui/leiniao/imsl_ln/leiniao_api_at.c
code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.cpp
code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.h

index b511f4a..3ec78cb 100644 (file)
@@ -8,6 +8,7 @@
 #include <unistd.h>
 #include <sys/stat.h>
 #include <errno.h>
+#include "errcode.h"
 #include "imsl_vad.h"
 #include "media_thread_adapt.h"
 #include "ln_api.h"
@@ -49,6 +50,10 @@ static uint32_t ln_factory_at(uint8_t *para, uint32_t paraLen, char *strCommonCm
 static uint32_t ln_memory_info_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd);
 static uint32_t ln_folder_size_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd);
 
+//帧率控制相关AT命令函数声明
+static uint32_t ln_set_fps_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd);
+static uint32_t ln_get_fps_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd);
+
 /* 内存查看辅助函数 - 使用MemoryManager接口 */
 
 /* 将 PCM 文件按 10ms(160点) 分帧喂给 VAD 并打印结果 */
@@ -1347,6 +1352,60 @@ static uint32_t ln_get_device_version_at(uint8_t *para, uint32_t paraLen, char *
     printf("deviceVersion: %s\n", deviceVersion);
     return ERRCODE_SUCC;
 }
+
+/* AT^LN_SET_FPS - 设置帧率 */
+static uint32_t ln_set_fps_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+    VAD_UNUSED(strCommonCmd);
+    
+    if (para == NULL || paraLen == 0) {
+        printf("[LN][SET_FPS] Error: No parameter provided\n");
+        printf("Usage: AT^LN_SET_FPS=<fps_value>\n");
+        printf("Example: AT^LN_SET_FPS=60\n");
+        return ERRCODE_FAIL;
+    }
+    
+    // 解析参数
+    char fps_str[16] = {0};
+    if (paraLen >= sizeof(fps_str)) {
+        printf("[LN][SET_FPS] Error: Parameter too long\n");
+        return ERRCODE_FAIL;
+    }
+    
+    memcpy(fps_str, para, paraLen);
+    fps_str[paraLen] = '\0';
+    
+    // 转换为整数
+    int fps_value = atoi(fps_str);
+    
+    // 验证帧率范围 (1-120 FPS)
+    if (fps_value < 1 || fps_value > 120) {
+        printf("[LN][SET_FPS] Error: FPS value must be between 1 and 120, got: %d\n", fps_value);
+        return ERRCODE_FAIL;
+    }
+    
+    printf("[LN][SET_FPS] Setting FPS to: %d\n", fps_value);
+    
+    // 调用统一的C接口设置帧率
+    do_set_fps((uint32_t)fps_value);
+    printf("[LN][SET_FPS] Successfully set FPS to: %d\n", fps_value);
+    return ERRCODE_SUCC;
+}
+
+/* AT^LN_GET_FPS - 获取当前帧率 */
+static uint32_t ln_get_fps_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+    VAD_UNUSED(para);
+    VAD_UNUSED(paraLen);
+    VAD_UNUSED(strCommonCmd);
+    
+    printf("[LN][GET_FPS] Getting current FPS...\n");
+    
+    // 调用统一的C接口获取帧率
+    uint32_t current_fps = do_get_fps();
+    printf("[LN][GET_FPS] Current FPS: %u\n", current_fps);
+    return ERRCODE_SUCC;
+}
 static const at_cmd_table_t g_ln_api_cmd[] = {
     /* ----------------------------------- VAD ---------------------------------- */
     {(char *)"AT^VAD_INIT", vad_init, (char *)"初始化 VAD"},
@@ -1412,6 +1471,10 @@ static const at_cmd_table_t g_ln_api_cmd[] = {
     {(char *)"AT^LN_GET_DEVICE_MODEL", ln_get_device_model_at, (char *)"获取设备model: AT^LN_GET_DEVICE_MODEL"},
     //获取设备version
     {(char *)"AT^LN_GET_DEVICE_VERSION", ln_get_device_version_at, (char *)"获取设备version: AT^LN_GET_DEVICE_VERSION"},
+    
+    //帧率控制
+    {(char *)"AT^LN_SET_FPS", ln_set_fps_at, (char *)"设置帧率: AT^LN_SET_FPS=<fps_value>"},
+    {(char *)"AT^LN_GET_FPS", ln_get_fps_at, (char *)"获取当前帧率: AT^LN_GET_FPS"},
 };
 
 
index b860542..9400672 100644 (file)
@@ -64,6 +64,18 @@ void do_restore_factory_setting(void)
     OHOS::ThunderBirdModel::GetInstance()->restore_factory_settings();
 }
 
+// 设置帧率
+void do_set_fps(uint32_t fps)
+{
+    OHOS::ThunderBirdModel::GetInstance()->at_set_fps(fps);
+}
+
+// 获取帧率
+uint32_t do_get_fps(void)
+{
+    return OHOS::ThunderBirdModel::GetInstance()->at_get_fps();
+}
+
 // 推送日程提醒通知
 void push_schedule_reminder_notification(const char *title, const char *content)
 {
index 4e3c757..128632f 100644 (file)
@@ -42,6 +42,10 @@ void push_ota_progress(int progress);
 
 //恢复出厂操作
 void do_restore_factory_setting(void);
+
+//帧率控制操作
+void do_set_fps(uint32_t fps);
+uint32_t do_get_fps(void);
 // 推送日程提醒通知
 void push_schedule_reminder_notification(const char *title, const char *content);