application文件夹下wstp文件夹1201patch合并提交
authorluozheng <1732036298@qq.com>
Mon, 20 Apr 2026 08:02:14 +0000 (16:02 +0800)
committerluozheng <1732036298@qq.com>
Mon, 20 Apr 2026 08:02:14 +0000 (16:02 +0800)
code/sdk/application/wstp/at_service/app/app_at_process.c
code/sdk/application/wstp/at_service/graphic/CMakeLists.txt
code/sdk/application/wstp/at_service/graphic/graphic_at_process.c
code/sdk/application/wstp/at_service/graphic/graphic_at_process.h
code/sdk/application/wstp/at_service/graphic/graphic_cmd_manager.c
code/sdk/application/wstp/at_service/graphic/graphic_rx_process.c
code/sdk/application/wstp/at_service/media/media_at_process.c
code/sdk/application/wstp/at_service/media/media_at_process.h
code/sdk/application/wstp/at_service/media/media_cmd_manager.c
code/sdk/application/wstp/at_service/ohosfwk/CMakeLists.txt
code/sdk/application/wstp/at_service/ohosfwk/ohosfwk_at_process.cpp

index e1f654e..5a61aad 100644 (file)
@@ -7,6 +7,8 @@
 #if defined(__LITEOS__)
 #include "los_memory.h"
 #include "los_memory_pri.h"
+#include "los_task_pri.h"
+#include "los_swtmr_pri.h"
 #ifdef CFG_DRIVERS_MMC
 #include "soc/mmc.h"
 #endif
@@ -443,36 +445,9 @@ uint32_t mcu_os_heap_info(uint8_t *para, uint32_t para_len)
     unused(para);
     unused(para_len);
 #if LOSCFG_MEM_TASK_STAT && defined __LITEOS__
-    LosMemPoolInfo *heapMan = (LosMemPoolInfo*)OS_EXTEND_MEM_ADDR;
-    TSK_INFO_S task_info;
-    uint32_t taskId;
-
-    wstp_print("\r\n");
     OsMemInfoPrint(OS_EXTEND_MEM_ADDR);
-    wstp_print("\n\t\tstack name  task id  used size  peak size\n");
-    for (taskId = 0; taskId <= LOSCFG_BASE_CORE_TSK_LIMIT; taskId++) {
-        if (0 != LOS_TaskInfoGet(taskId, &task_info)) {
-            // 过滤掉无用的task id
-            continue;
-        }
-        wstp_print("%22s  %-5d    0x%-8x 0x%-8x\n", task_info.acName, taskId,
-            heapMan->stat.taskMemstats[taskId].memUsed, heapMan->stat.taskMemstats[taskId].memPeak);
-    }
-    wstp_print("\r\n\r\n");
-
-    heapMan = (LosMemPoolInfo*)OS_SYS_MEM_ADDR;
-    OsMemInfoPrint(OS_SYS_MEM_ADDR);
-    wstp_print("\n\t\tstack name  task id  used size  peak size\n");
-    for (taskId = 0; taskId <= LOSCFG_BASE_CORE_TSK_LIMIT; taskId++) {
-        if (0 != LOS_TaskInfoGet(taskId, &task_info)) {
-            // 过滤掉无用的task id
-            continue;
-        }
-        wstp_print("%22s  %-5d    0x%-8x 0x%-8x\n", task_info.acName, taskId,
-            heapMan->stat.taskMemstats[taskId].memUsed, heapMan->stat.taskMemstats[taskId].memPeak);
-    }
     wstp_print("\r\n");
-
+    OsMemInfoPrint(OS_SYS_MEM_ADDR);
 #endif
 #if defined __FREERTOS__ && defined FREERTOS_DEBUG
     freertos_heap_print();
@@ -485,27 +460,12 @@ uint32_t mcu_os_stack_info(uint8_t *para, uint32_t para_len)
     unused(para);
     unused(para_len);
 
-#if LOSCFG_MEM_TASK_STAT && defined __LITEOS__
-    TSK_INFO_S task_info;
-    uint32_t taskId;
-    uint32_t total_size = 0;
-    uint32_t used_size = 0;
-    uint32_t peak_size = 0;
-
-    wstp_print("\n      stack name      task id    prio  status    stack addr     total size   used size   peak size   percentage\n"
-        "     --------------   -------    ---   ------    ---------      --------     --------    --------\n");
-    for (taskId = 0; taskId <= LOSCFG_BASE_CORE_TSK_LIMIT; taskId++) {
-        if (0 != LOS_TaskInfoGet(taskId, &task_info)) {
-            continue;
-        }
-        wstp_print("%22s      %-5d   %-2d      %-2d      %-10p    0x%-8x   0x%-8x   0x%-8x   %.02f\n", task_info.acName,
-            task_info.uwTaskID, task_info.usTaskPrio, task_info.usTaskStatus, task_info.uwTopOfStack,
-            task_info.uwStackSize, task_info.uwCurrUsed, task_info.uwPeakUsed, (task_info.uwCurrUsed*1.0f/task_info.uwStackSize));
-        total_size += task_info.uwStackSize;
-        used_size += task_info.uwCurrUsed;
-        peak_size += task_info.uwPeakUsed;
-    }
-    wstp_print("\n total size(%d)   used size(%d)   peak size(%d)\n",total_size,used_size,peak_size);
+#if LOSCFG_DEBUG_TASK && defined __LITEOS__
+    (VOID)OsDbgTskInfoGet(OS_ALL_TASK_MASK);
+#endif
+
+#if LOSCFG_DEBUG_SWTMR && defined __LITEOS__
+    OsDbgSwtmrInfoGet(OS_ALL_SWTMR_MASK);
 #endif
 
 #if defined __FREERTOS__ && defined FREERTOS_DEBUG
index 0e620ba..59c9744 100644 (file)
@@ -29,6 +29,7 @@ set(PRIVATE_HEADER
     ${ROOT_DIR}/middleware/services/gui/lvgl/proprietary/include/dfx\r
     ${ROOT_DIR}/middleware/services/gpu/drv/include\r
     ${ROOT_DIR}/middleware/services/gpu/drv/dpu/dfx\r
+    ${ROOT_DIR}/open_source/mbedtls/mbedtls_v3.6.0/include\r
 )\r
 \r
 set(PRIVATE_DEFINES\r
index d5a214b..403f892 100644 (file)
@@ -19,6 +19,7 @@
 #include "common_def.h"\r
 #ifdef ENABLE_UIKIT\r
 #include "sample_ui.h"\r
+#include "sample_util.h"\r
 #include "dfx/dfx_cmd.h"\r
 #endif\r
 #include "lcd_bus.h"\r
@@ -127,8 +128,74 @@ static int32_t UikitSample(commu_inter_info_t* interInfo)
     g_sampleInitialized = true;\r
     return ERRCODE_SUCC;\r
 }\r
+\r
+static int32_t UikitSampleRun(commu_inter_info_t* interInfo)\r
+{\r
+    int32_t ret = ERRCODE_SUCC;\r
+    char *argv[GRAPHIC_MAX_PARAM_CNT];\r
+    int32_t argc = 0;\r
+    ret = ConvertATParamToSampleParam(interInfo->payload, interInfo->payloadLength, &argc, argv);\r
+    if (ret != ERRCODE_SUCC) {\r
+        goto FREE;\r
+    }\r
+    if (argc != 1) {\r
+        PRINT("{%s():%d} invalid argc: %d(must be : 1).\r\n", __FUNCTION__, __LINE__, argc);\r
+        goto FREE;\r
+    } else {\r
+        if (!g_sampleInitialized) {\r
+            SampleUi();\r
+            g_sampleInitialized = true;\r
+        }\r
+ \r
+        char* testcase = argv[0];\r
+        PRINT("{%s():%d} SAMPLE [%s] START RUN. \n", __FUNCTION__, __LINE__, testcase);\r
+        StartCaseUi(testcase);\r
+    }\r
+    \r
+FREE:\r
+    for (int32_t i = 0; i < argc; i++) {\r
+        if (argv[i] != NULL) {\r
+            BSP_MEM_FREE(argv[i]);\r
+            argv[i]  = NULL;\r
+        }\r
+    }\r
+    return ret;\r
+}\r
+\r
 #endif\r
 \r
+/*******************************************************************************\r
+  功能描述         :  计算当前画面截图后文件的hash值,并打印出来。\r
+  参数内容         :  参数包含一个参数(key),打印在时一同输出。用于关联定位。\r
+*******************************************************************************/\r
+static int32_t UikitHashScreen(commu_inter_info_t* interInfo)\r
+{\r
+    int32_t ret = ERRCODE_SUCC;\r
+    char *argv[GRAPHIC_MAX_PARAM_CNT];\r
+    int32_t argc = 0;\r
+    ret = ConvertATParamToSampleParam(interInfo->payload, interInfo->payloadLength, &argc, argv);\r
+    if (ret != ERRCODE_SUCC) {\r
+        goto FREE;\r
+    }\r
+    if (argc != 1) {\r
+        PRINT("{%s():%d} invalid argc: %d(must be : 1).\r\n", __FUNCTION__, __LINE__, argc);\r
+        goto FREE;\r
+    } else {\r
+        char* key = argv[0];\r
+        CalcSampleUiHash(key);\r
+    }\r
+ \r
+    PRINT("{%s():%d} free args.\r\n", __FUNCTION__, __LINE__);\r
+FREE:\r
+    for (int32_t i = 0; i < argc; i++) {\r
+        if (argv[i] != NULL) {\r
+            BSP_MEM_FREE(argv[i]);\r
+            argv[i]  = NULL;\r
+        }\r
+    }\r
+    return ret;\r
+}\r
+\r
 static int32_t UikitDfx(commu_inter_info_t* interInfo)\r
 {\r
     int32_t ret = ERRCODE_SUCC;\r
@@ -155,6 +222,8 @@ FREE:
 static const GraphicProcessType g_UikitFuncs[] = {\r
 #ifndef SUPPORT_NATIVE_UI\r
     { UIKIT_SAMPLE, UikitSample },\r
+    { UIKIT_SAMPLE_RUN, UikitSampleRun },\r
+    { UIKIT_SAMPLE_HASH, UikitHashScreen },\r
 #endif\r
     { UIKIT_DFX, UikitDfx },\r
 };\r
index e0ba960..4e2b60d 100644 (file)
@@ -67,6 +67,8 @@ typedef enum {
     UIKIT_SAMPLE,\r
     UIKIT_DFX,\r
     UIKIT_MAX,\r
+    UIKIT_SAMPLE_RUN,\r
+    UIKIT_SAMPLE_HASH,\r
 } UikitCmd;\r
 \r
 typedef enum {\r
index 6cbceaf..5039f7c 100644 (file)
@@ -28,6 +28,8 @@ static uint32_t MCGraphicATCmdHandle(uint8_t *para, uint32_t paraLen, char* strC
 static const at_cmd_table_t g_graphic_cmd[] = {\r
     { "AT^UIKIT_SAMPLE",                 MCGraphicATCmdHandle,  "00 00 00 00" },\r
     { "AT^UIKIT_DFX",                    MCGraphicATCmdHandle,  "00 01 00 00" },\r
+    { "AT^UIKIT_SAMPLE_RUN",             MCGraphicATCmdHandle,  "00 03 00 00" },\r
+    { "AT^UIKIT_SAMPLE_HASH",            MCGraphicATCmdHandle,  "00 04 00 00" },\r
     { "AT^GUI_SET_FREQ",                 MCGraphicATCmdHandle,  "01 00 00 00" },\r
     { "AT^LVGL_SAMPLE",                  MCGraphicATCmdHandle,  "02 00 00 00" },\r
     { "AT^LVGL_DFX",                     MCGraphicATCmdHandle,  "02 01 00 00" },\r
index 78d29ce..5b99831 100644 (file)
@@ -20,7 +20,7 @@
 \r
 void graphic_at_task_init(void)\r
 {\r
-#ifdef ENABLE_UIKIT\r
+#if defined(ENABLE_UIKIT) && !defined(SUPPORT_OHOSFWK)\r
     InitGraphicService();\r
 #endif\r
 \r
index 1bbe78d..a1f33ca 100644 (file)
@@ -22,6 +22,9 @@
 #include "camera_preview_sample_wrapper.h"\r
 #include "voice_call_volte_sample_wrapper.h"\r
 #include "audio_player_test.h"\r
+#ifndef MEMORY_MINI\r
+#include "audio_recorder_sample.h"\r
+#endif\r
 #endif\r
 #include "app_at_process.h"\r
 #include "app_msg_manager.h"\r
@@ -783,7 +786,7 @@ static int32_t MediaVideoPlayMute(const uint8_t *data, uint32_t dataLen)
 static int32_t MediaCameraPreviewStart(const uint8_t *data, uint32_t dataLen)\r
 {\r
     wstp_print("{%s():%d} func in.\r\n", __FUNCTION__, __LINE__);\r
-    int32_t ret = ERRCODE_SUCC;\r
+    int32_t ret = ERRCODE_FAIL;\r
 #ifdef ENABLE_UIKIT\r
     int32_t argc = 0;\r
     uint8_t *argv[MEDIA_MAX_PARAM_CNT];\r
@@ -833,7 +836,7 @@ static int32_t MediaVoiceCallVolteHandle(const uint8_t *data, uint32_t dataLen)
 {\r
     wstp_print("{%s():%d} func in.\r\n", __FUNCTION__, __LINE__);\r
 \r
-    int32_t ret;\r
+    int32_t ret = ERRCODE_FAIL;\r
     int32_t argc = 0;\r
     uint8_t *argv[MEDIA_MAX_PARAM_CNT];\r
 \r
@@ -842,7 +845,7 @@ static int32_t MediaVoiceCallVolteHandle(const uint8_t *data, uint32_t dataLen)
         goto FREE;\r
     }\r
 \r
-    VoiceCallVolteSample(argc, (const char **)&argv);\r
+    ret = VoiceCallVolteSample(argc, (const char **)&argv);\r
 \r
 FREE:\r
     for (int32_t i = 0; i < argc; i++) {\r
@@ -853,7 +856,7 @@ FREE:
     }\r
 \r
     wstp_print("{%s():%d} func out success.\r\n", __FUNCTION__, __LINE__);\r
-    return ERRCODE_SUCC;\r
+    return ret;\r
 }\r
 #endif\r
 \r
@@ -861,7 +864,7 @@ static int32_t MediaA2dpSinkAef(const uint8_t *data, uint32_t dataLen)
 {\r
     wstp_print("{%s():%d} func in.\r\n", __FUNCTION__, __LINE__);\r
 \r
-    int32_t ret;\r
+    int32_t ret = ERRCODE_FAIL;\r
     int32_t argc = 0;\r
     uint8_t *argv[MEDIA_MAX_PARAM_CNT];\r
 \r
@@ -893,6 +896,33 @@ FREE:
     return ret;\r
 }\r
 \r
+#ifndef MEMORY_MINI\r
+static int32_t MediaAudioRecorder(const uint8_t *data, uint32_t dataLen)\r
+{\r
+    wstp_print("{%s():%d} func in.\r\n", __FUNCTION__, __LINE__);\r
+\r
+    int32_t ret = ERRCODE_FAIL;\r
+    int32_t argc = 0;\r
+    uint8_t *argv[MEDIA_MAX_PARAM_CNT];\r
+\r
+    ret = ConvertCmdParamToSampleParam(data, dataLen, &argc, argv);\r
+    if (ret != ERRCODE_SUCC) {\r
+        goto FREE;\r
+    }\r
+    ret = AudioRecorderSample(argc, (const char **)&argv);\r
+FREE:\r
+    for (int32_t i = 0; i < argc; i++) {\r
+        if (argv[i] != NULL) {\r
+            BSP_MEM_FREE(argv[i]);\r
+            argv[i] = NULL;\r
+        }\r
+    }\r
+\r
+    wstp_print("{%s():%d} func out success.\r\n", __FUNCTION__, __LINE__);\r
+    return ret;\r
+}\r
+#endif\r
+\r
 #ifndef MEMORY_MINI\r
 static const MediaProcessType g_mediaAudioRecordFuncs[] = {\r
     { MEDIA_AUDIO_RECORD_START, MediaAudioRecordStart },\r
@@ -929,6 +959,10 @@ static const MediaProcessType g_mediaCameraPreviewFuncs[] = {
 static const MediaProcessType g_mediaVoiceCallVolteFuncs[] = {\r
     { MEDIA_VOICE_CALL_VOLTE_HANDLE, MediaVoiceCallVolteHandle },\r
 };\r
+\r
+static const MediaProcessType g_mediaAudioRecorderFuncs[] = {\r
+    { MEDIA_AUDIO_RECORDER_CMD, MediaAudioRecorder },\r
+};\r
 #endif\r
 \r
 static const MediaProcessType g_mediaA2dpSinkFuncs[] = {\r
@@ -1043,6 +1077,25 @@ static int32_t MediaVoiceCallVolteProcess(const uint8_t *data, uint32_t dataLen)
     wstp_print("{%s():%d} func out %s.\r\n", __FUNCTION__, __LINE__, (ret == ERRCODE_SUCC) ? "success" : "failure");\r
     return ret;\r
 }\r
+\r
+static int32_t MediaAudioRecorderProcess(const uint8_t *data, uint32_t dataLen)\r
+{\r
+    wstp_print("{%s():%d} func in.\r\n", __FUNCTION__, __LINE__);\r
+\r
+    int32_t ret = ERRCODE_FAIL;\r
+\r
+    uint8_t videoCmd = data[MEDIA_SUB_CMD_POS];\r
+    wstp_print("{%s():%d} audio recorder cmd: %d.\r\n", __FUNCTION__, __LINE__, videoCmd);\r
+\r
+    for (uint8_t i = 0; i < ARRAY_COUNT(g_mediaAudioRecorderFuncs); i++) {\r
+        if (videoCmd == g_mediaAudioRecorderFuncs[i].id) {\r
+            ret = g_mediaAudioRecorderFuncs[i].func(data, dataLen);\r
+        }\r
+    }\r
+\r
+    wstp_print("{%s():%d} func out %s.\r\n", __FUNCTION__, __LINE__, (ret == ERRCODE_SUCC) ? "success" : "failure");\r
+    return ret;\r
+}\r
 #endif\r
 \r
 static int32_t MediaA2dpSinkProcess(const uint8_t *data, uint32_t dataLen)\r
@@ -1072,6 +1125,7 @@ static const MediaProcessType g_mediaAudioFuncs[] = {
     { MEDIA_VIDEO_PLAY, MediaVideoPlayProcess },\r
     { MEDIA_CAMERA_PREVIEW, MediaCameraPreviewProcess },\r
     { MEDIA_VOICE_CALL_VOLTE, MediaVoiceCallVolteProcess },\r
+    { MEDIA_AUDIO_RECORDER, MediaAudioRecorderProcess },\r
 #endif\r
     { MEDIA_A2DP_SINK, MediaA2dpSinkProcess },\r
 };\r
index 8903d70..f13c75a 100644 (file)
@@ -32,6 +32,7 @@ typedef enum {
     MEDIA_CAMERA_PREVIEW,\r
     MEDIA_VOICE_CALL_VOLTE,\r
     MEDIA_A2DP_SINK,\r
+    MEDIA_AUDIO_RECORDER,\r
     MEDIA_AUDIO_CMD_MAX,\r
 } MediaAudioCmd;\r
 \r
@@ -105,6 +106,10 @@ typedef enum {
     MEDIA_A2DP_SINK_AEF,             // 00\r
 } MediaA2dpSinkCmd;\r
 \r
+typedef enum {\r
+    MEDIA_AUDIO_RECORDER_CMD,             // 00\r
+} MediaAudioRecorderCmd;\r
+\r
 void media_at_process(const uint8_t *data, uint32_t dataLen);\r
 uint32_t media_diag_cmd_process(diag_ser_data_t *data);\r
 \r
index f6c727b..de4dfe5 100644 (file)
@@ -142,6 +142,9 @@ static const at_cmd_table_t g_media_cmd[] = {
     { "AT^MEDIAVOICECALLVOLTE",            MCMediaATCmdHandle,  "05 00" },\r
 #endif\r
     { "AT^MEDIA2DPSINKAEF",                MCMediaATCmdHandle,  "06 00" },\r
+#ifndef MEMORY_MINI\r
+    { "AT^AUDIORECORDER",                  MCMediaATCmdHandle,  "07 00" },\r
+#endif\r
 };\r
 \r
 at_cmd_table_t *get_media_cmd_table(uint32_t *cmd_count)\r
index c180547..1bb212c 100644 (file)
@@ -22,6 +22,8 @@ set(PRIVATE_HEADER
     ${ROOT_DIR}/open_source/openharmony/foundation/appexecfwk/appexecfwk_lite/include/appexecfwk/appexecfwk_lite/services/bundlemgr_lite/include
     ${ROOT_DIR}/open_source/openharmony/base/sensors/location/sample
     ${ROOT_DIR}/open_source/openharmony/base/sensors/sample
+    ${ROOT_DIR}/application/wearable/nativeapp/nativeui/include
+    ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/animator
 )
 
 set(PRIVATE_DEFINES
index baf1d38..7ccf448 100644 (file)
@@ -7,6 +7,8 @@
  * 2022-11-17, Create file. \n
  */
 #include "stdlib.h"
+#include "sys/time.h"
+#include "time.h"
 #include "common_def.h"
 #include "wearable_log.h"
 #include "ohosfwk_at_process.h"
@@ -30,6 +32,7 @@
 #include "applist/ApplistModel.h"
 #endif
 #include "bundle_manager.h"
+#include "js_ability.h"
 #include <unistd.h>
 #ifdef SUPPORT_AT_LOCATION
 #include "location_sample.h"
 #ifdef SUPPORT_AT_SENSOR
 #include "sensor_sample.h"
 #endif
+#include "monkey/MonkeyModel.h"
 
 #define ARRAY_COUNT(array) (sizeof(array) / sizeof(array[0]))
-#define OHOSFWK_MAX_ARGC 8
-#define OHOSFWK_MAX_ARGV_LEN 64
+#define OHOSFWK_MAX_ARGC            8
+#define OHOSFWK_MAX_ARGV_LEN        64
 
-#define OHOSFWK_SUCCESS 0
-#define OHOSFWK_FAILED (-1)
+#define OHOSFWK_SUCCESS             0
+#define OHOSFWK_FAILED              (-1)
 #define MAX_PAGE 100
 #define ARGC_NUM 2
+#define DEFAULT_TIME_ZONE           (8 * 60)
+#define MINUTES_PER_HOUR 60
+#define SECONDS_PER_MINUTE 60
+#define USEC_TO_MILLI           1000
+#define TIME_MAX                64
+#define DECIMAL                     10
+#define TIME_YEAR_OFFSET        70
+#define MIN_TIMEZONE_OFFSET (-12 * 60)
+#define MAX_TIMEZONE_OFFSET (12 * 60)
+
+enum {
+    UNDEFINED_STATE = -1,
+    INIT_STATE, // 0
+    READY_STATE,
+    SHOW_STATE,
+    BACKGROUND_STATE,
+    DESTROY_STATE,
+    END_STATE
+};
 
 static void ReceiveCallback(const uint8_t resultCode, const void *resultMessage)
 {
@@ -73,8 +96,8 @@ static void ReceiveCallback(const uint8_t resultCode, const void *resultMessage)
     AdapterFree(installMsg);
 }
 
-static int ConvertCmdToParam(
-    uint8_t *para, uint32_t paraLen, uint8_t argv[OHOSFWK_MAX_ARGC][OHOSFWK_MAX_ARGV_LEN], uint32_t *argc)
+static int ConvertCmdToParam(uint8_t *para, uint32_t paraLen,
+        uint8_t argv[OHOSFWK_MAX_ARGC][OHOSFWK_MAX_ARGV_LEN], uint32_t* argc)
 {
     uint32_t pos = 0;
     *argc = 0;
@@ -115,6 +138,76 @@ static uint32_t OhosfwkATCmdAmExitJsApp(uint8_t *para, uint32_t paraLen, char *s
     return ERRCODE_SUCC;
 }
 
+static const char *StateInfoToString(int8_t pageInfo)
+{
+    switch (pageInfo) {
+        case UNDEFINED_STATE:
+            return "-1 - UNDEFINED_STATE";
+        case INIT_STATE:
+            return "0 - INIT_STATE";
+        case READY_STATE:
+            return "1 - READY_STATE";
+        case SHOW_STATE:
+            return "2 - SHOW_STATE";
+        case BACKGROUND_STATE:
+            return "3 - BACKGROUND_STATE";
+        case DESTROY_STATE:
+            return "4 - DESTROY_STATE";
+        case END_STATE:
+            return "5 - END_STATE";
+        default:
+            return "Can not get state!";
+    }
+}
+
+static uint32_t OhosfwkATCmdAmDfx(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+    unused(strCommonCmd);
+
+    uint8_t argv[OHOSFWK_MAX_ARGC][OHOSFWK_MAX_ARGV_LEN] = {0};
+    uint32_t argc = 0;
+    int ret = ConvertCmdToParam(para, paraLen, argv, &argc);
+    if (ret != OHOSFWK_SUCCESS) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OHOSFWK ATCMD Convert Command Failed\n");
+        return ERRCODE_FAIL;
+    }
+
+    char *info = reinterpret_cast<char *>(argv[0]);
+    if (info == NULL) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "failed to get info!\n");
+        return ERRCODE_FAIL;
+    }
+
+    if (strcmp(info, "dump") == 0) {
+        ElementName *elementName = OHOS::AbilityMsClient::GetInstance().GetTopAbility();
+        if (elementName == nullptr) {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "failed to get elementName!\n");
+            return ERRCODE_FAIL;
+        }
+        if (elementName->bundleName == nullptr) {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "failed to get bundleName!\n");
+            return ERRCODE_FAIL;
+        }
+        char *currentBundleName = elementName->bundleName;
+
+        BundleInfo bundleInfo;
+        ret = OHOS::BundleMsClient::GetInstance().GetBundleInfo(currentBundleName, 0, &bundleInfo);
+        if (ret != OHOSFWK_SUCCESS) {
+            PRINTK("Native App: %s\n", currentBundleName);
+            PRINTK("Can not provide BundleInfo\n");
+            return ERRCODE_SUCC;
+        }
+        int8_t pageInfo = OHOS::ACELite::GetJsPageStateInfo();
+        const char *pageInfoLog = StateInfoToString(pageInfo);
+        PRINTK("-------------PageState-------------\n");
+        PRINTK("label: %s\n", bundleInfo.label);
+        PRINTK("bundleName: %s\n", bundleInfo.bundleName);
+        PRINTK("pageState: %s\n", pageInfoLog);
+        PRINTK("-----------PageState End-----------\n");
+    }
+    return ERRCODE_SUCC;
+}
+
 static uint32_t OhosfwkATCmdBmInstall(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
 {
     unused(strCommonCmd);
@@ -232,7 +325,7 @@ static uint32_t OhosfwkATCmdAmStartJsApp(uint8_t *para, uint32_t paraLen, char *
         return ERRCODE_FAIL;
     }
 
-    if (argc != 1) {
+    if (argc > 2 || argc <= 0) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OHOSFWK ATCMD Set Parameter Failed\n");
         return ERRCODE_FAIL;
     }
@@ -244,7 +337,11 @@ static uint32_t OhosfwkATCmdAmStartJsApp(uint8_t *para, uint32_t paraLen, char *
     startElement.bundleName = (char *)argv[0];
     startElement.deviceId = nullptr;
     SetWantElement(want, startElement);
-    StartAbility(want);
+    if (argc == 2 && strcmp("NoAnimation", (char *)argv[1]) == 0) {
+            StartAbility(want);
+    } else {
+        StartAbilityWithAnimation(want, static_cast<uint8_t>(1), true);
+    }
     ClearWant(want);
     delete want;
     return ERRCODE_SUCC;
@@ -517,6 +614,7 @@ static uint32_t OhosfwkATCmdSensor(uint8_t *para, uint32_t paraLen, char *strCom
 }
 #endif
 
+#ifdef CONFIG_NATIVEAPP_TEST
 static uint32_t OhosfwkATSwitchSlicePage(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
 {
     unused(strCommonCmd);
@@ -548,6 +646,195 @@ static uint32_t OhosfwkATSwitchSlicePage(uint8_t *para, uint32_t paraLen, char *
     return ERRCODE_SUCC;
 }
 
+static uint32_t OhosATMonkeyControl(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+    unused(strCommonCmd);
+    uint8_t argv[OHOSFWK_MAX_ARGC][OHOSFWK_MAX_ARGV_LEN] = {0};
+    uint32_t argc = 0;
+
+    int ret = ConvertCmdToParam(para, paraLen, argv, &argc);
+    if (ret != OHOSFWK_SUCCESS) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OhosATMonkeyControl ATCMD Convert Command Failed");
+        return ERRCODE_FAIL;
+    }
+    if (argc != 1) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OhosATMonkeyControl ATCMD Set Parameter Failed");
+        return ERRCODE_FAIL;
+    }
+
+    char *monkeyStr = (char *)argv[0];
+    uint32_t monkeyControl = atoi(monkeyStr);
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "OhosATMonkeyControl(),monkeyControl = %[d]", monkeyControl);
+    OHOS::MonkeyModel::GetInstance().SetStart(monkeyControl);
+    return ERRCODE_SUCC;
+}
+#endif
+
+static int32_t GetLocalTimezone(void)
+{
+    struct tm localTime;
+    struct tm gmtTime;
+    struct timeval tv = { 0, 0 };
+
+    if (gettimeofday(&tv, NULL)) {
+        return 0;
+    }
+
+    localtime_r(&tv.tv_sec, &localTime);
+    gmtime_r(&tv.tv_sec, &gmtTime);
+
+    return (localTime.tm_hour - gmtTime.tm_hour) * MINUTES_PER_HOUR + (localTime.tm_min - gmtTime.tm_min);
+}
+
+static uint32_t GetTimeZone(char *time)
+{
+    char *ptr = time;
+    char *tmp;
+    const char* utcStr = "UTC";
+    size_t utcStrLen = strlen(utcStr);
+
+    // 判断是否配置时区
+    tmp = strchr(ptr, ' ');
+    if (tmp == NULL) {
+        return DEFAULT_TIME_ZONE; // 未配置时区默认为UTC+8:00
+    }
+    *tmp = '\0';
+    ptr = tmp + 1;
+    if (strncmp(ptr, utcStr, utcStrLen) != 0) {
+        return DEFAULT_TIME_ZONE;
+    }
+    ptr += utcStrLen;
+
+    // 时
+    tmp = strchr(ptr, ':');
+    if (tmp == NULL) { return 0; }
+    *tmp = '\0';
+    int hour = strtol(ptr, NULL, DECIMAL);
+    ptr = tmp + 1;
+
+    // 分
+    int min = strtol(ptr, NULL, DECIMAL);
+    int offsetMin = hour * MINUTES_PER_HOUR + min;
+    if (offsetMin < MIN_TIMEZONE_OFFSET || offsetMin > MAX_TIMEZONE_OFFSET) {
+        return DEFAULT_TIME_ZONE;
+    }
+    return offsetMin;
+}
+
+static uint32_t GetSecTime(uint8_t *time, struct timezone *tz)
+{
+    uint32_t sec;
+    struct tm tm = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, nullptr};
+    char *ptr = (char *)time;
+    char *tmp;
+
+    // 年
+    tmp = strchr(ptr, '-');
+    if (tmp == NULL) { return 0; }
+    *tmp = '\0';
+    // 年的计算需要减去1900
+    tm.tm_year = strtol(ptr, NULL, DECIMAL) - 1900;
+    if (tm.tm_year < TIME_YEAR_OFFSET) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OhosfwkATCmdTimezoneSet year num must bigger than 1970!");
+        return 0;
+    }
+    ptr = tmp + 1;
+
+    // 月
+    tmp = strchr(ptr, '-');
+    if (tmp == NULL) { return 0; }
+    *tmp = '\0';
+    // 月的计算需要减1
+    tm.tm_mon = strtol(ptr, NULL, DECIMAL) - 1;
+    ptr = tmp + 1;
+
+    // 日
+    tmp = strchr(ptr, ' ');
+    if (tmp == NULL) { return 0; }
+    *tmp = '\0';
+    tm.tm_mday = strtol(ptr, NULL, DECIMAL);
+    ptr = tmp + 1;
+
+    // 时
+    tmp = strchr(ptr, ':');
+    if (tmp == NULL) { return 0; }
+    *tmp = '\0';
+    tm.tm_hour = strtol(ptr, NULL, DECIMAL);
+    ptr = tmp + 1;
+
+    // 分
+    tmp = strchr(ptr, ':');
+    if (tmp == NULL) { return 0; }
+    *tmp = '\0';
+    tm.tm_min = strtol(ptr, NULL, DECIMAL);
+    ptr = tmp + 1;
+
+    // 秒
+    tm.tm_sec = strtol(ptr, NULL, DECIMAL);
+    sec = (uint32_t)mktime(&tm);
+
+    // 时区
+    tz->tz_minuteswest = GetTimeZone(ptr);
+
+    return sec;
+}
+
+static uint32_t OhosfwkATCmdTimezoneSet(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+    unused(strCommonCmd);
+    unused(paraLen);
+
+    struct timeval tv = { 0, 0 };
+    struct timezone tz = { 0, 0 };
+    tv.tv_sec = GetSecTime(para, &tz);
+    int32_t localTimeZone = GetLocalTimezone();
+
+    tv.tv_sec = tv.tv_sec + localTimeZone * SECONDS_PER_MINUTE - (tz.tz_minuteswest * SECONDS_PER_MINUTE);
+    if (tv.tv_sec == 0) {
+        return ERRCODE_FAIL;
+    } else if (tv.tv_sec <= (tz.tz_minuteswest * SECONDS_PER_MINUTE)) {
+        tv.tv_sec = 0;
+    }
+
+    settimeofday(&tv, &tz);
+    return ERRCODE_SUCC;
+}
+
+static uint32_t OhosfwkATCmdTimezoneGet(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+    unused(strCommonCmd);
+    unused(para);
+    unused(paraLen);
+    char timebuf[TIME_MAX] = { 0 };
+    struct tm tm;
+    struct timeval tv = { 0, 0 };
+    const char* formatStr = " %F %T";
+
+    if (gettimeofday(&tv, NULL)) {
+        return ERRCODE_FAIL;
+    }
+
+    // 计算本地时间
+    localtime_r(&tv.tv_sec, &tm);
+    uint32_t millisec = tv.tv_usec / USEC_TO_MILLI;
+    strftime(timebuf, TIME_MAX - 1, formatStr + 1, &tm);
+
+    // 计算时区
+    int32_t localTimeZone = GetLocalTimezone();
+    int32_t offsetMin = localTimeZone % MINUTES_PER_HOUR;
+    offsetMin = offsetMin < 0 ? offsetMin + MINUTES_PER_HOUR : offsetMin;
+    int32_t offsetHour = localTimeZone / MINUTES_PER_HOUR;
+    offsetHour = localTimeZone < 0 && offsetMin != 0 ? offsetHour - 1 : offsetHour;
+
+    if (localTimeZone >= 0) {
+        PRINTK("%s:%03d UTC+%d:%02d", timebuf, millisec, offsetHour, offsetMin);
+    } else {
+        PRINTK("%s:%03d UTC%d:%02d", timebuf, millisec, offsetHour, offsetMin);
+    }
+
+    return ERRCODE_SUCC;
+}
+
 static const at_cmd_table_t g_ohosfwk_cmd[] = {
     {(char *)"AT^OHOSFWK_AM_EXIT_JSAPP", OhosfwkATCmdAmExitJsApp, (char *)"00 00 00 00"},
     {(char *)"AT^OHOSFWK_BM_INSTALL", OhosfwkATCmdBmInstall, (char *)"00 00 00 01"},
@@ -559,14 +846,20 @@ static const at_cmd_table_t g_ohosfwk_cmd[] = {
     {(char *)"AT^OHOSFWK_CHANGE_LANGUAGE", OhosfwkATCmdChangeLanguage, (char *)"00 00 00 07"},
     {(char *)"AT^OHOSFWK_BM_GET_APPINFO", OhosfwkATCmdBmGetAppInfo, (char *)"00 00 00 10"},
     {(char *)"AT^OHOSFWK_BM_GET_APPLIST", OhosfwkATCmdBmGetAppList, (char *)"00 00 00 11"},
-    {(char *)"AT^OHOSFWK_MSG_START_NOTIFY", OhosfwkATStartNotify, (char *)"00 00 00 12"},
+    {(char *)"AT^OHOSFWK_AM_DFX", OhosfwkATCmdAmDfx, (char *)"00 00 00 12" },
+    {(char *)"AT^OHOSFWK_MSG_START_NOTIFY", OhosfwkATStartNotify, (char *)"00 00 00 13"},
 #ifdef SUPPORT_AT_LOCATION
     {(char *)"AT^OHOSFWK_LOCATION", OhosfwkATCmdLocation, (char *)"00 00 00 08"},
 #endif
 #ifdef SUPPORT_AT_SENSOR
     {(char *)"AT^OHOSFWK_SENSOR", OhosfwkATCmdSensor, (char *)"00 00 00 09"},
 #endif
+#ifdef CONFIG_NATIVEAPP_TEST
    {(char *)"AT^SWITCH_SLICE_PAGE", OhosfwkATSwitchSlicePage, (char *)"00 00 00 13"}, // 界面切换AT指令方便测试使用;
+   {(char *)"AT^_MONKEY_CONTROL", OhosATMonkeyControl, (char *)"00 00 00 14"}, // Monkey 开关
+#endif
+    {(char *)"AT^OHOSFWK_GLOBAL_TIMEZONE_SET", OhosfwkATCmdTimezoneSet, (char *)"00 00 00 15"},
+    {(char *)"AT^OHOSFWK_GLOBAL_TIMEZONE_GET", OhosfwkATCmdTimezoneGet, (char *)"00 00 00 16"},
 };
 
 at_cmd_table_t *get_ohosfwk_cmd_table(uint32_t *cmd_count)