\r
/*启动蓝牙ble服务,cywee有重置 mac地址的操作,会需要把 蓝牙服务开启放在cywee服务之后*/\r
#ifdef CUSTOM_UTILS\r
- \r
+ start_custom_ble_service();\r
#endif\r
-start_custom_ble_service();\r
+\r
+\r
+\r
#ifdef SUPPORT_ALIPAY_SEC\r
#if !defined(A5133_DEMO_SERVER) && !defined(A5133_DEMO_CLIENT)\r
uapi_alipay_svr_init();\r
'SUPPORT_CYWEE_SERVICE',
'SUPPORT_BATTERY_SERVICE',
'FD230',
+ 'SUPPORT_AT_OHOSFWK',
# 'SUPPORT_AUTO_OTA_SERVER',
# 'CONFIG_DFX_SUPPORT_DIAG_UP_MACHINE=1',
#"MEM_CHECK",
"ppg_service",
"cywee_service",
"batterry_service",
+ "AIsystem",
+ "AImain",
+ # "AIsyscall",
+ "AIagent",
+ "AIota",
+ "AIsdk",
"bleservice",
"blemoder",
"transspecard",
--- /dev/null
+#===============================================================================
+# @brief cmake file
+# Copyright (c) @CompanyNameMagicTag 2022-2023. All rights reserved.
+#===============================================================================
+set(COMPONENT_NAME "AIagent")
+
+set(SOURCES
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/agent.c
+)
+
+set(PUBLIC_HEADER
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/..
+ ${CMAKE_CURRENT_SOURCE_DIR}/../AIsdk/include
+)
+set(PRIVATE_HEADER
+ ${ROOT_DIR}/open_source/openharmony/drivers/peripheral/display/interfaces/include
+ ${ROOT_DIR}/middleware/utils/update/inner_include
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits
+ ${ROOT_DIR}/open_source/openharmony/utils/native/lite/include
+ ${ROOT_DIR}/middleware/services/gui/uikit/surface/interfaces/kits
+ ${ROOT_DIR}/open_source/openharmony/utils/native/lite/kv_store/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits/gfx_utils
+ ${ROOT_DIR}/middleware/services/media/foundation/player/interfaces/kits
+ ${ROOT_DIR}/application/wearable/nativeapp/nativeui/key/include
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits/font
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/frameworks/font
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/frameworks
+
+ ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/src/utils/innerkits
+ ${ROOT_DIR}/zhihui/services/factorytest_service
+ ${ROOT_DIR}/zhihui/drivers/
+ ${ROOT_DIR}/zhihui/4g/cat1Service/include
+ ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include
+ ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/include
+ # /home/hcj/615/FD230/code/sdk/application/wearable/nativeapp/nativeui/player/include/PlayersPresenter.h
+ # /home/hcj/615/FD230/code/sdk/middleware/services/gui/uikit/ui/frameworks/font/glyphs_manager.h
+ # /home/hcj/615/FD230/code/sdk//UiServersMsg.h
+)
+# /home/hcj/615/FD230/code/sdk/
+
+
+set(PRIVATE_DEFINES
+ TARGET_NAME="${TARGET_COMMAND}"
+ BUILD_TIME="${BUILD_TIME}"
+)
+
+set(PUBLIC_DEFINES
+)
+
+# use this when you want to add ccflags like -include xxx
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+ -Wno-error
+ -Wno-unused-parameter
+ -fno-exceptions
+ -fno-unwind-tables
+ -fno-asynchronous-unwind-tables
+ -Wno-undef
+ -Wno-bitwise-op-parentheses
+ -Wno-shift-op-parentheses
+ -nostdlibinc
+ -nostdinc
+ -nostdlib
+ -Wno-c++11-narrowing
+ -Wno-error=unused-function
+)
+set(WHOLE_LINK
+ true
+)
+
+set(MAIN_COMPONENT
+ false
+)
+
+build_component()
static FILE* fp = NULL;
static unsigned int uiAudioDataLen = 0;
-static int agent_audio_data_cb(unsigned int uiReqID, unsigned char *pucPackage,unsigned int uiPacklen, int bFinished, int iRspCode)
+int agent_audio_data_cb(unsigned int uiReqID, unsigned char *pucPackage,unsigned int uiPacklen, int bFinished, int iRspCode)
{
if (iRspCode != 0) return -1;
//printf("reqID %u audio len %d bFinished %d Rsp %d \n", uiReqID, uiPacklen, bFinished, iRspCode);
uiAudioDataLen += uiPacklen;
if (fp == NULL)
{
- if (_access("D:/SDK/truck-agent/Demo/resources/answer.pcm", 0) == 0)
+ if (access("D:/SDK/truck-agent/Demo/resources/answer.pcm", 0) == 0)
{
remove("D:/SDK/truck-agent/Demo/resources/answer.pcm");
}
--- /dev/null
+#include "main_include.h"
+#include "uapi_ai_function.h"
+
+/*******************************************************************************************************/
+#define SYSTEM_PATH "/user/userdata/System"
+#define CONFIG_PATH "/user/userdata/Config"
+#define LOG_PATH "/user/userdata/Log"
+
+static int create_new_session_rsp_cb(int iReqId, unsigned char* pucSessionID, int iRspCode);
+
+/***********************************************************
+ * 工作路径创建
+***********************************************************/
+static int directory_exists(const char* path)
+{
+ return access(path, 0);
+}
+
+static void make_path(void)
+{
+ char command[256] = { 0 };
+ if (directory_exists(SYSTEM_PATH) != 0)
+ {
+ snprintf(command, sizeof(command), "mkdir -p \"%s\"", SYSTEM_PATH);
+ system(command);
+ }
+ if (directory_exists(CONFIG_PATH) != 0)
+ {
+ snprintf(command, sizeof(command), "mkdir -p \"%s\"", CONFIG_PATH);
+ system(command);
+ }
+ if (directory_exists(LOG_PATH) != 0)
+ {
+ snprintf(command, sizeof(command), "mkdir -p \"%s\"", LOG_PATH);
+ system(command);
+ }
+ return;
+}
+
+/***********************************************************
+ * 智能体服务状态通知
+***********************************************************/
+static int agent_status_cb(int iAgentStatus)
+{
+ agent_getInfo()->agent_status = iAgentStatus;
+ if (iAgentStatus == 1)
+ {
+ // 获取智能体列表
+ agent_getInfo()->need_get_agent_list = 1;
+ }
+ printf("recv agent server status [%d]\n", iAgentStatus);
+ return 0;
+}
+
+/***********************************************************
+ * 图片上传回调
+***********************************************************/
+static int agent_upload_pic_cb(int iReqId, int iCode, unsigned char *pucFileID)
+{
+ if(iCode != 0) return -1;
+ printf("recv upload pic fileID [%s]\n",pucFileID);
+ strcpy(agent_getInfo()->agent_file_id, pucFileID);
+ agent_getInfo()->need_send_pic_ques = 1;
+ return 0;
+}
+
+static void demo_page1()
+{
+ printf(
+ "-----> a.创建会话\n"
+ "-----> 0.中断会话 \n"
+ "-----> 1.文本提问 \n"
+ "-----> 2.图片上传 + 图片提问 智能体平台暂不支持 \n"
+ "-----> 3.语音提问 \n"
+ "-----> 4.获取历史会话条目 \n"
+ "-----> 5.删除会话轮次记录\n"
+ "-----> 6.获取下一轮次建议问题列表 \n"
+ "-----> 7.重命名会话轮次 \n"
+ "-----> 8.获取应用meta信息 \n"
+ "-----> 请输入: "
+ );
+ return;
+}
+
+/***********************************************************
+ * 停止会话 回调
+***********************************************************/
+static int agent_interrupt_session_rsp_cb(int iReqId, int iRspCode)
+{
+ printf("interrupt session %s rsp %d \n", agent_getInfo()->agent_session_id, iRspCode);
+
+ //ZJ_CancelDownloadTask(agent_getInfo()->download_text_reqId);
+ ZJ_CancelDownloadTask(agent_getInfo()->download_audio_reqId);
+
+ agent_getInfo()->need_show_page1 = 1;
+ memset(agent_getInfo()->agent_session_id, 0, sizeof(agent_getInfo()->agent_session_id));
+ return 0;
+}
+
+
+/***********************************************************
+ * 获取历史会话条目 回调
+***********************************************************/
+static int agent_get_retrieve_chat_history_cb(int iReqId, ST_ZJ_HistoryChat* pstHistoryChatList, int iRspCode)
+{
+ ST_ZJ_HistoryChat* pstTmpNode = NULL;
+ do
+ {
+ if (iRspCode != 0) return -1;
+ while (pstHistoryChatList)
+ {
+ pstTmpNode = pstHistoryChatList;
+ pstHistoryChatList = pstHistoryChatList->pstNext;
+
+ printf("/*******************agent_get_retrieve_chat_history_cb*******************/\n");
+ printf("TurnID:\t%s\n", pstTmpNode->aucTurnID);
+ printf("Prompt:\t%s\n", pstTmpNode->pucPrompt);
+ printf("ContentUrl:\t%s\n", pstTmpNode->aucContentUrl);
+ printf("AudioUrl:\t%s\n", pstTmpNode->aucAudioUrl);
+ printf("PictureUrl:\t%s\n", pstTmpNode->aucPictureUrl);
+ }
+ } while (0);
+ agent_getInfo()->need_show_page1 = 1;
+ return 0;
+}
+
+int agent_delete_session_round_cb(unsigned int uiReqID, int iRsp)
+{
+ printf("reqid %u recv delete session round response code %d \n", uiReqID, iRsp);
+ agent_getInfo()->need_show_page1 = 1;
+ return 0;
+}
+
+int agent_get_suggest_ques_list_cb(unsigned int uiReqID, ST_ZJ_QUES_ITEM* pstList)
+{
+ ST_ZJ_QUES_ITEM* pstTmpNode = pstList;
+
+ while (pstTmpNode)
+ {
+ printf("recv suggest ques [ %s ] \n", pstTmpNode->pucQuestion);
+ pstTmpNode = pstTmpNode->pstNext;
+ }
+ agent_getInfo()->need_show_page1 = 1;
+ return 0;
+}
+
+int agent_rename_session_round_cb(unsigned int uiReqID, int iRsp)
+{
+ printf("reqID %u recv rename session round response code %d \n", uiReqID, iRsp);
+ agent_getInfo()->need_show_page1 = 1;
+ return 0;
+}
+
+int agent_get_session_meta_cb(unsigned int uiReqID, int iRsp, unsigned char* pucDalle2, unsigned char* pucBackGround, unsigned char* pucContent)
+{
+ if (iRsp != 0)
+ {
+ printf("reqID %u recv get session meta rsp code %d \n", uiReqID, iRsp);
+ }
+ else
+ {
+ printf("reqID %u recv get session meta rsp dalle2 %s background %s content %s \n", uiReqID, pucDalle2, pucBackGround, pucContent);
+ }
+ agent_getInfo()->need_show_page1 = 1;
+ return 0;
+}
+
+/***********************************************************
+ * 模拟提流程 线程
+***********************************************************/
+static void* question_task_loop(void* arg)
+{
+ static int iQuesIndex = 0;
+ unsigned char aucQues[][128] = {
+ "1+1=?",
+ "What is the weather like in the United States?",
+ "Is Taiwan China's?",
+ "What is Apple?",
+ "我父亲今年70岁了,有些骨质疏松,吃哪些药会有效果?"
+ };
+ unsigned char aucBanGongQues[][128] = {
+ "What are the commonly used office software? ? ",
+ "What was my last question? ?",
+ "How to use wps ?"
+ };
+ unsigned char ucInput = 0;
+ unsigned char aucAudioPacket[6400];
+ unsigned char* pucPicBuff = NULL;
+ unsigned int uiBuffSize = 0;
+ while (system_getInfo()->uiDemoRunFlag == 1)
+ {
+ if (agent_getInfo()->need_show_page1)
+ {
+ demo_page1();
+ scanf("%c", &ucInput);
+ agent_getInfo()->need_show_page1 = 0;
+
+ switch (ucInput)
+ {
+ case 'a':
+ {
+ unsigned int ucAgentID = 0;
+ printf("***** 请输入Agent ID: ");
+ scanf("%u", &ucAgentID);
+ ZJ_CreateNewSession(ZJ_GetOneReqId(), ucAgentID, create_new_session_rsp_cb);
+ break;
+ }
+ case '0': // 中断会话轮次
+ {
+ ZJ_InterruptSession(ZJ_GetOneReqId(), agent_getInfo()->agent_session_id, agent_getInfo()->turn_id, agent_interrupt_session_rsp_cb);
+ break;
+ }
+ case '1': // 文本提问
+ {
+ static int index = 0;
+ //ZJ_SendQuestionToAIAgent(0, agent_getInfo()->agent_session_id, agent_getInfo()->turn_id, (unsigned char*)"1+1=?", NULL);
+ //ZJ_SendQuestionToAIAgent(0, agent_getInfo()->agent_session_id, agent_getInfo()->turn_id, (unsigned char*)aucBanGongQues[index++ % 5], NULL);
+ //ZJ_SendQuestionToAIAgent(0, agent_getInfo()->agent_session_id, agent_getInfo()->turn_id, (unsigned char*)"我父亲今年70岁了,有些骨质疏松,吃哪些药会有效果 ? ", NULL);
+ ZJ_SendQuestionToAIAgent(0, agent_getInfo()->agent_session_id, agent_getInfo()->turn_id, (unsigned char*)"My father is 70 years old and has osteoporosis. What medicines will be effective?", NULL);
+ break;
+ }
+ case '2':
+ {
+ FILE* fp = fopen("../resources/test.jpg", "rb");
+
+ if (fp == NULL)
+ {
+ printf("open file err \n");
+ break;
+ }
+ fseek(fp, 0, SEEK_END);
+ uiBuffSize = ftell(fp);
+ pucPicBuff = (unsigned char*)malloc(uiBuffSize);
+ fseek(fp, 0, SEEK_SET);
+ fread(pucPicBuff, 1, uiBuffSize, fp);
+
+ ZJ_UploadPicture(ZJ_GetOneReqId(), (unsigned char*)"test.jpg", pucPicBuff, uiBuffSize, agent_upload_pic_cb);
+
+ fclose(fp);
+ free(pucPicBuff);
+ break;
+ }
+ case '3': // 语音提问
+ {
+ int iReadLen = 0;
+ FILE* fp = fopen("../resources/test.wav", "rb");
+
+ if (fp == NULL)
+ {
+ printf("open file err %d \n", errno);
+ break;
+ }
+ fseek(fp, 0, SEEK_END);
+ int iSize = ftell(fp);
+ fseek(fp, 0, SEEK_SET);
+ int num_chunks = iSize / 6400;
+ int remain = iSize % 6400;
+ int bytes_read = 0;
+
+ ZJ_SendVoiceDataToAIAgent(NULL, 0, 0);
+ while (bytes_read < iSize)
+ {
+ //static int iFirst = 1;
+ //static int iTest = 1;
+ //int iRecStatus = 0;
+
+ int read_size = (num_chunks > 0) ? 6400 : remain;
+
+ iReadLen = fread(aucAudioPacket, 1, read_size, fp);
+ num_chunks--;
+ bytes_read += iReadLen;
+ ZJ_SendVoiceDataToAIAgent(aucAudioPacket, iReadLen, 1);
+ Sleep(200); // 模拟单声道 采样率16000 每帧6400字节 = 200ms时长
+ }
+ ZJ_SendVoiceDataToAIAgent(NULL, 0, 2);
+ fclose(fp);
+ break;
+ }
+ case '4': // 获取会话历史条目内容
+ {
+ ZJ_GetRetrieveChatHistory(ZJ_GetOneReqId(), (unsigned char*)agent_getInfo()->agent_session_id, agent_get_retrieve_chat_history_cb);
+ break;
+ }
+ case '5': // 删除会话轮次记录
+ {
+ ZJ_DeleteSessionRound(ZJ_GetOneReqId(), (unsigned char*)agent_getInfo()->agent_session_id, (unsigned char*)agent_getInfo()->turn_id, agent_delete_session_round_cb);
+ break;
+ }
+ case '6': // 获取下一轮次建议问题列表
+ {
+ ZJ_GetSuggestQuesList(ZJ_GetOneReqId(), (unsigned char*)agent_getInfo()->agent_session_id, (unsigned char*)agent_getInfo()->turn_id, agent_get_suggest_ques_list_cb);
+ break;
+ }
+ case '7': // 重命名会话轮次
+ {
+ ZJ_RenameSessionRound(ZJ_GetOneReqId(), (unsigned char*)agent_getInfo()->agent_session_id, (unsigned char*)agent_getInfo()->turn_id, (unsigned char *)"test_name", agent_rename_session_round_cb);
+ break;
+ }
+ case '8': // 获取应用meta信息
+ {
+ ZJ_GetSessionMetaInfo(ZJ_GetOneReqId(), (unsigned char*)agent_getInfo()->agent_session_id, agent_get_session_meta_cb);
+ break;
+ }
+ case '9':
+ {
+ system_getInfo()->uiDemoRunFlag = 0;
+ break;
+ }
+ default:
+ agent_getInfo()->need_show_page1 = 1;
+ break;
+ }
+ }
+
+ if (agent_getInfo()->need_send_pic_ques)
+ {
+ ST_ZJ_FILEIDLIST* pstFileIDList = (ST_ZJ_FILEIDLIST*)malloc(sizeof(ST_ZJ_FILEIDLIST));
+ pstFileIDList->pstFileID = (unsigned char*)malloc(256);
+ memset(pstFileIDList->pstFileID, 0, 256);
+ strcpy(pstFileIDList->pstFileID, agent_getInfo()->agent_file_id);
+ ZJ_SendQuestionToAIAgent(1, agent_getInfo()->agent_session_id, agent_getInfo()->turn_id, (unsigned char*)"xxxxxxxxxxxxxxxx", pstFileIDList);
+
+ free(pstFileIDList->pstFileID);
+ pstFileIDList->pstFileID = NULL;
+ free(pstFileIDList);
+ pstFileIDList = NULL;
+ agent_getInfo()->need_send_pic_ques = 0;
+ }
+
+ if (agent_getInfo()->need_send_voice_ques)
+ {
+ printf("tras text - %s \n", agent_getInfo()->aucTrasText);
+ ZJ_SendQuestionToAIAgent(0, agent_getInfo()->agent_session_id, agent_getInfo()->turn_id, (unsigned char*)agent_getInfo()->aucTrasText, NULL);
+ agent_getInfo()->need_send_voice_ques = 0;
+ }
+ }
+
+ return NULL;
+}
+
+/***********************************************************
+ * 创建新会话回调
+***********************************************************/
+static int create_new_session_rsp_cb(int iReqId, unsigned char* pucSessionID, int iRspCode)
+{
+ if (iRspCode != 0) return -1;
+ memset(agent_getInfo()->agent_session_id, 0, sizeof(agent_getInfo()->agent_session_id));
+ strncpy(agent_getInfo()->agent_session_id, pucSessionID, sizeof(agent_getInfo()->agent_session_id) - 1);
+ // 新会话创建成功后重置轮次ID
+ memset(agent_getInfo()->turn_id, 0, sizeof(agent_getInfo()->turn_id));
+ agent_getInfo()->need_show_page1 = 1;
+ printf("recv create new session [%s] \n", pucSessionID);
+
+ return 0;
+}
+
+void uapi_CT_ai_init(void)
+{
+ make_path();
+
+ // syscall_init();
+ ZJ_InitEx(SYSTEM_PATH, CONFIG_PATH, LOG_PATH);
+ system_init();
+ ota_init();
+
+ agent_init();
+
+ system_start();
+ ota_start();
+ agent_start();
+ ZJ_Start();
+
+ // Sleep(3000);
+
+}
+
--- /dev/null
+#===============================================================================
+# @brief cmake file
+# Copyright (c) @CompanyNameMagicTag 2022-2023. All rights reserved.
+#===============================================================================
+set(COMPONENT_NAME "AImain")
+
+set(SOURCES
+ ${CMAKE_CURRENT_SOURCE_DIR}/AI_mian.c
+)
+
+set(PUBLIC_HEADER
+ ${CMAKE_CURRENT_SOURCE_DIR}/../AIsdk/include
+ ${CMAKE_CURRENT_SOURCE_DIR}
+)
+set(PRIVATE_HEADER
+ ${ROOT_DIR}/open_source/openharmony/drivers/peripheral/display/interfaces/include
+ ${ROOT_DIR}/middleware/utils/update/inner_include
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits
+ ${ROOT_DIR}/open_source/openharmony/utils/native/lite/include
+ ${ROOT_DIR}/middleware/services/gui/uikit/surface/interfaces/kits
+ ${ROOT_DIR}/open_source/openharmony/utils/native/lite/kv_store/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits/gfx_utils
+ ${ROOT_DIR}/middleware/services/media/foundation/player/interfaces/kits
+ ${ROOT_DIR}/application/wearable/nativeapp/nativeui/key/include
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits/font
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/frameworks/font
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/frameworks
+
+ ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/src/utils/innerkits
+ ${ROOT_DIR}/zhihui/services/factorytest_service
+ ${ROOT_DIR}/zhihui/drivers/
+ ${ROOT_DIR}/zhihui/4g/cat1Service/include
+ ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include
+ ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/include
+ # /home/hcj/615/FD230/code/sdk/application/wearable/nativeapp/nativeui/player/include/PlayersPresenter.h
+ # /home/hcj/615/FD230/code/sdk/middleware/services/gui/uikit/ui/frameworks/font/glyphs_manager.h
+ # /home/hcj/615/FD230/code/sdk//UiServersMsg.h
+)
+# /home/hcj/615/FD230/code/sdk/
+
+
+set(PRIVATE_DEFINES
+ TARGET_NAME="${TARGET_COMMAND}"
+ BUILD_TIME="${BUILD_TIME}"
+)
+
+set(PUBLIC_DEFINES
+)
+
+# use this when you want to add ccflags like -include xxx
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+ -Wno-error
+ -Wno-unused-parameter
+ -fno-exceptions
+ -fno-unwind-tables
+ -fno-asynchronous-unwind-tables
+ -Wno-undef
+ -Wno-bitwise-op-parentheses
+ -Wno-shift-op-parentheses
+ -nostdlibinc
+ -nostdinc
+ -nostdlib
+ -Wno-c++11-narrowing
+ -Wno-error=unused-function
+)
+set(WHOLE_LINK
+ true
+)
+
+set(MAIN_COMPONENT
+ false
+)
+
+build_component()
--- /dev/null
+#ifndef AI_FUNCTION_H
+#define AI_FUNCTION_H
+
+
+void uapi_CT_ai_init(void);
+
+
+#endif
\ No newline at end of file
--- /dev/null
+#===============================================================================
+# @brief cmake file
+# Copyright (c) @CompanyNameMagicTag 2022-2023. All rights reserved.
+#===============================================================================
+set(COMPONENT_NAME "AIota")
+
+set(SOURCES
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/ota.c
+)
+
+set(PUBLIC_HEADER
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/..
+ ${CMAKE_CURRENT_SOURCE_DIR}/../AIsdk/include
+)
+set(PRIVATE_HEADER
+ ${ROOT_DIR}/open_source/openharmony/drivers/peripheral/display/interfaces/include
+ ${ROOT_DIR}/middleware/utils/update/inner_include
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits
+ ${ROOT_DIR}/open_source/openharmony/utils/native/lite/include
+ ${ROOT_DIR}/middleware/services/gui/uikit/surface/interfaces/kits
+ ${ROOT_DIR}/open_source/openharmony/utils/native/lite/kv_store/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits/gfx_utils
+ ${ROOT_DIR}/middleware/services/media/foundation/player/interfaces/kits
+ ${ROOT_DIR}/application/wearable/nativeapp/nativeui/key/include
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits/font
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/frameworks/font
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/frameworks
+
+ ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/src/utils/innerkits
+ ${ROOT_DIR}/zhihui/services/factorytest_service
+ ${ROOT_DIR}/zhihui/drivers/
+ ${ROOT_DIR}/zhihui/4g/cat1Service/include
+ ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include
+ ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/include
+ # /home/hcj/615/FD230/code/sdk/application/wearable/nativeapp/nativeui/player/include/PlayersPresenter.h
+ # /home/hcj/615/FD230/code/sdk/middleware/services/gui/uikit/ui/frameworks/font/glyphs_manager.h
+ # /home/hcj/615/FD230/code/sdk//UiServersMsg.h
+)
+# /home/hcj/615/FD230/code/sdk/
+
+
+set(PRIVATE_DEFINES
+ TARGET_NAME="${TARGET_COMMAND}"
+ BUILD_TIME="${BUILD_TIME}"
+)
+
+set(PUBLIC_DEFINES
+)
+
+# use this when you want to add ccflags like -include xxx
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+ -Wno-error
+ -Wno-unused-parameter
+ -fno-exceptions
+ -fno-unwind-tables
+ -fno-asynchronous-unwind-tables
+ -Wno-undef
+ -Wno-bitwise-op-parentheses
+ -Wno-shift-op-parentheses
+ -nostdlibinc
+ -nostdinc
+ -nostdlib
+ -Wno-c++11-narrowing
+ -Wno-error=unused-function
+)
+set(WHOLE_LINK
+ true
+)
+
+set(MAIN_COMPONENT
+ false
+)
+
+build_component()
--- /dev/null
+#===============================================================================
+# @brief cmake file
+# Copyright (c) @CompanyNameMagicTag 2022-2023. All rights reserved.
+#===============================================================================
+set(COMPONENT_NAME "AIsdk")
+
+set(SOURCES
+)
+
+set(PUBLIC_HEADER
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/..
+ ${CMAKE_CURRENT_SOURCE_DIR}/../AIsystem
+ ${CMAKE_CURRENT_SOURCE_DIR}/../AIagent
+ ${CMAKE_CURRENT_SOURCE_DIR}/../AIota
+)
+set(PRIVATE_HEADER
+ ${ROOT_DIR}/open_source/openharmony/drivers/peripheral/display/interfaces/include
+ ${ROOT_DIR}/middleware/utils/update/inner_include
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits
+ ${ROOT_DIR}/open_source/openharmony/utils/native/lite/include
+ ${ROOT_DIR}/middleware/services/gui/uikit/surface/interfaces/kits
+ ${ROOT_DIR}/open_source/openharmony/utils/native/lite/kv_store/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits/gfx_utils
+ ${ROOT_DIR}/middleware/services/media/foundation/player/interfaces/kits
+ ${ROOT_DIR}/application/wearable/nativeapp/nativeui/key/include
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits/font
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/frameworks/font
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/frameworks
+
+ ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/src/utils/innerkits
+ ${ROOT_DIR}/zhihui/services/factorytest_service
+ ${ROOT_DIR}/zhihui/drivers/
+ ${ROOT_DIR}/zhihui/4g/cat1Service/include
+ ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include
+ ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/include
+ # /home/hcj/615/FD230/code/sdk/application/wearable/nativeapp/nativeui/player/include/PlayersPresenter.h
+ # /home/hcj/615/FD230/code/sdk/middleware/services/gui/uikit/ui/frameworks/font/glyphs_manager.h
+ # /home/hcj/615/FD230/code/sdk//UiServersMsg.h
+)
+# /home/hcj/615/FD230/code/sdk/
+
+
+set(PRIVATE_DEFINES
+ TARGET_NAME="${TARGET_COMMAND}"
+ BUILD_TIME="${BUILD_TIME}"
+)
+
+set(PUBLIC_DEFINES
+)
+
+# use this when you want to add ccflags like -include xxx
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+ -Wno-error
+ -Wno-unused-parameter
+ -fno-exceptions
+ -fno-unwind-tables
+ -fno-asynchronous-unwind-tables
+ -Wno-undef
+ -Wno-bitwise-op-parentheses
+ -Wno-shift-op-parentheses
+ -nostdlibinc
+ -nostdinc
+ -nostdlib
+ -Wno-c++11-narrowing
+ -Wno-error=unused-function
+)
+set(WHOLE_LINK
+ true
+)
+
+set(MAIN_COMPONENT
+ false
+)
+
+find_library(LIB_PATH_COMMONA_LIB libcommon.a ${CMAKE_CURRENT_SOURCE_DIR}/lib)
+find_library(LIB_PATH_COS_LIB libcos.a ${CMAKE_CURRENT_SOURCE_DIR}/lib)
+find_library(LIB_PATH_THIRD_LIB libthirdparty.a ${CMAKE_CURRENT_SOURCE_DIR}/lib)
+
+target_link_libraries(${TARGET_NAME} PRIVATE -Wl,--whole-archive ${LIB_PATH_COMMONA_LIB} ${LIB_PATH_COS_LIB} ${LIB_PATH_THIRD_LIB} PRIVATE -Wl,--whole-archive)
+
+build_component()
--- /dev/null
+#ifndef MAIN_INCLUDE_H
+#define MAIN_INCLUDE_H
+
+#include <stdio.h>
+
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <pthread.h>
+#include <unistd.h>
+#include <time.h>
+#include <errno.h>
+#include "osal_task.h"
+#include "lwip/arch.h"
+#include "lwip/sockets.h"
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include "securec.h"
+
+
+#include "zj_type.h"
+#include "zj_aiagent.h"
+#include "zj_err.h"
+#include "zj_ota.h"
+#include "zj_system.h"
+#include "zj_network.h"
+#include "zj_log.h"
+#ifdef NEED_IMPLEMENT_SYSCALL
+#include "zj_syscall_prv.h"
+#include "zj_syscall.h"
+#endif
+
+#include "system.h"
+#include "agent.h"
+#ifndef WIN_TEST
+#include "ota.h"
+#endif
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef ZJ_AIAGENT_H
+#define ZJ_AIAGENT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+* @brief 获取一个请求ID
+* @param 无
+* @return 请求ID
+*/
+_ZJ_API int ZJ_GetOneReqId(void);
+
+/**
+ * @brief 设置AI智能体能力
+ * @param iBSupport 是否支持 0 不支持,1 支持
+ * @return -1 失败,0 成功
+ */
+_ZJ_API int ZJ_SetAIAgentAbility(int iBSupport);
+
+/**
+ * @brief 设置与智能体音频交互的模式
+ * @param enMode 模式,见枚举 EN_ZJ_DUPLEX_MODE
+ * @return -1 失败,0 成功
+ */
+typedef enum enum_zj_duplex_mode{
+ AUDIO_MODE_HALF_DUPLEX = 0, // 单工
+ AUDIO_MODE_FULL_DUPLEX // 双工
+} EN_ZJ_DUPLEX_MODE;
+
+_ZJ_API int ZJ_SetAudioDuplexMode(EN_ZJ_DUPLEX_MODE enMode);
+
+/*****************************************************
+启动智能体应用
+*****************************************************/
+typedef struct stru_ZJ_AIAgentConfig
+{
+ unsigned char ucSubmitFlag; // 0: 平台自动提交流式语音提问; 1: 端侧手动提交提问;
+ unsigned char ucReturnReqTextFlag; // 提问语音是否翻译成文字 0: 不返回提问文字; 1: 返回提问文字
+ unsigned char ucToneDetectionFlag; // 0: 不开启语气检测; 1: 开启语气检测;
+ ST_ZJ_AUDIO_PARAM stInputAudioParam; // 采集音频编码格式
+ ST_ZJ_AUDIO_PARAM stOutputAudioParam; // 回应音频编码格式
+}ST_ZJ_AIAGENTCONFIG;
+
+/**
+ * @brief 获取AI智能体连接状态的回调函数
+ * @param iAgentStatus 连接状态 0 连接中断,1 准备就绪
+ * @return -1 失败,0 成功
+ */
+typedef int (*ZJ_PFUN_AGENTSTATUS_CB)(int iAgentStatus);
+
+/**
+ * @brief 启动AI智能体应用
+ * @param pstAIAgentConfig 智能体应用相关参数
+ * @param pFunStatusCb 智能体状态回调函数
+ * @return -1 失败,0 成功
+ */
+_ZJ_API int ZJ_StartAIAgent(ST_ZJ_AIAGENTCONFIG *pstAIAgentConfig, ZJ_PFUN_AGENTSTATUS_CB pFunStatusCb);
+
+/**
+ * @brief 停止AI智能体应用
+ * @param 无
+ * @return -1 失败,0 成功
+ */
+_ZJ_API int ZJ_StopAIAgent(void);
+
+/***************************************************************************
+获取智能体列表
+****************************************************************************/
+typedef struct stru_ZJ_ProPreProb
+{
+ unsigned char **pucStr; // 预置问题数组
+ unsigned int uiCount; // 预置问题数量
+}ST_ZJ_PROPREPROB;
+
+typedef struct stru_ZJ_FileAbility{
+ unsigned char **pucFileFormats; // 文件格式数组
+ unsigned int uiFormatCount; // 文件格式数量
+ unsigned int uiFileSize; // 文件大小(以字节为单位)
+}ST_ZJ_FILEABILITY;
+
+typedef struct stru_ZJ_AIAgentList
+{
+ unsigned char ucDefaultFlag; // 默认选择
+ unsigned int uiAgentID; // 智能体ID
+ unsigned char aucAgentName[256]; // 名称
+ unsigned char *pucDescribe; // 简介
+ unsigned char aucLanguage[64]; // 语言
+ unsigned char aucIconUrl[256]; // 头像下载地址
+ unsigned char *pucUiInterTemplate; // ui界面交互模板
+ unsigned char *pucPrompt; // 提示词
+ unsigned char *pucPromptTemplate; // 提示词模板
+ unsigned char *pucPrologue; // 开场白
+ unsigned char aucBackgroundPicUrl[256]; // 聊天背景图片地址
+ unsigned int uiVoiceType; // 声音类别
+ unsigned int uiAgentAbility; // 智能体应用支持的能力 0x01: 文本; 0x02: 图片; 0x04: 音频;
+ ST_ZJ_FILEABILITY stFileAbility; // 智能体应用支持的文件格式 和 大小
+ ST_ZJ_PROPREPROB stProloguePresetProblem; // 开场白预置问题
+ struct stru_ZJ_AIAgentList *pstNext;
+}ST_ZJ_AIAGENTLIST;
+
+/**
+ * @brief 获取AI智能体列表的回调函数
+ * @param iReqId 请求ID
+ * @param pstAiAgentList AI智能体信息列表
+ * @param iRspCode 错误码 0 成功, 非0失败
+ * @return -1 失败,0 成功
+ * @note 内存由SDK释放
+ */
+typedef int (*ZJ_PFUN_GETAIAGENTLIST_CB)(int iReqId, ST_ZJ_AIAGENTLIST* pstAiAgentList, int iRspCode);
+/**
+ * @brief 获取AI智能体列表
+ * @param pFunGetAiAgentListCb 回调函数
+ * @return -1 失败,0 成功
+ */
+_ZJ_API int ZJ_GetAgentList(int iReqId, ZJ_PFUN_GETAIAGENTLIST_CB pFunGetAiAgentListCb);
+
+/***************************************************************************
+获取历史会话列表
+****************************************************************************/
+typedef struct stru_ZJ_HistorySession
+{
+ unsigned char pucSessionID[256];
+ unsigned char pucAgentID[256];
+ unsigned char *pucTitle;
+ struct stru_ZJ_HistorySession *pstNext;
+}ST_ZJ_HISTORYSESSION;
+
+/**
+ * @brief 获取AI智能体历史会话记录列表的回调函数
+ * @param iReqId 请求ID
+ * @param pstHistorySessionList 智能体历史会话记录列表
+ * @param iRspCode 错误码 0 成功, 非0失败
+ * @return -1 失败,0 成功
+ * @note 内存由SDK释放
+ */
+typedef int (*ZJ_PFUN_GETHISTORYSESSIONS_CB)(int iReqId, ST_ZJ_HISTORYSESSION* pstHistorySessionList, int iRspCode);
+
+/**
+ * @brief 获取AI智能体历史会话记录列表
+ * @param iReqId 请求ID
+ * @param pFunGetHistorySessionsCb 回调函数
+ * @return -1 失败,0 成功
+ */
+_ZJ_API int ZJ_GetHistorySessions(int iReqId, ZJ_PFUN_GETHISTORYSESSIONS_CB pFunGetHistorySessionsCb);
+
+/***************************************************************************
+获取历史会话记录
+****************************************************************************/
+typedef struct stru_ZJ_HistoryChat
+{
+ unsigned char aucTurnID[64]; // 轮次ID
+ unsigned char *pucPrompt; // 用户提问
+ unsigned char aucContentUrl[256]; // 文本地址
+ unsigned char aucAudioUrl[256]; // 音频地址
+ unsigned char aucPictureUrl[256]; // 图片地址
+ struct stru_ZJ_HistoryChat *pstNext;
+}ST_ZJ_HistoryChat;
+
+/**
+ * @brief 获取AI智能体历史会话条目的回调函数
+ * @param iReqId 请求ID
+ * @param pstHistoryChatList 智能体历史会话条目列表
+ * @param iRspCode 错误码 0 成功, 非0失败
+ * @return -1 失败,0 成功
+ * @note 内存由SDK释放
+ */
+typedef int (*ZJ_PFUN_GETHISTORYCHAT_CB)(int iReqId, ST_ZJ_HistoryChat* pstHistoryChatList, int iRspCode);
+
+/**
+ * @brief 获取AI智能体历史会话记录列表
+ * @param iReqId 请求ID
+ * @param pFunGetHistoryChatCb 回调函数
+ * @param pucSessionID 会话ID
+ * @return -1 失败,0 成功
+ */
+_ZJ_API int ZJ_GetRetrieveChatHistory(int iReqId, unsigned char *pucSessionID, ZJ_PFUN_GETHISTORYCHAT_CB pFunGetHistoryChatCb);
+
+/***************************************************
+创建智能体应用新会话
+*****************************************************/
+/**
+ * @brief 创建AI智能体新会话的回调函数
+ * @param iReqId 请求ID
+ * @param pucSessionID 新会话ID
+ * @param iRspCode 错误码 0 成功, 非0失败
+ * @return -1 失败,0 成功
+ */
+typedef int (*ZJ_PFUN_NEWSESSIONRSP_CB)(int iReqId, unsigned char *pucSessionID, int iRspCode);
+
+/**
+ * @brief 创建AI智能体新会话
+ * @param iReqId 请求ID
+ * @param pucAgentID 智能体应用ID
+ * @param pFunNewSessionRspCb 回调函数
+ * @return -1 失败,0 成功
+ */
+_ZJ_API int ZJ_CreateNewSession(int iReqId, unsigned int uiAgentID, ZJ_PFUN_NEWSESSIONRSP_CB pFunNewSessionRspCb);
+
+/***************************************************
+中断智能体应用会话
+*****************************************************/
+/**
+ * @brief 中断AI智能体新会话的回调函数
+ * @param iReqId 请求ID
+ * @param iRspCode 错误码 0 成功, 非0失败
+ * @return -1 失败,0 成功
+ */
+typedef int (*ZJ_PFUN_INTERRUPTSESSIONRSP_CB)(int iReqId, int iRspCode);
+
+/**
+ * @brief 中断AI智能体新会话的回调函数
+ * @param iReqId 请求ID
+ * @param pucSessionID 会话ID
+ * @param pFunInterruptSessionRspCb 回调函数
+ * @return -1 失败,0 成功
+ */
+_ZJ_API int ZJ_InterruptSession(int iReqId, unsigned char *pucSessionID, unsigned char *pucTurnID, ZJ_PFUN_INTERRUPTSESSIONRSP_CB pFunInterruptSessionRspCb);
+
+/**
+ * @brief 流式发送语音数据给AI智能体
+ * @param pucVoiceData 音频数据
+ * @param iDataLen 音频数据长度
+ * @param iRecStatus 模式
+ * 0: 开始语音提问 pucVoiceData = NULL iDataLen = 0
+ * 1: 中间音频数据
+ * 2: 结束语音提问 pucVoiceData = NULL iDataLen = 0
+ * @return -1 失败,0 成功
+ * @note 在播放音频的时候; 停止发送音频
+ * @note 注意!!! 音频格式仅支持 pcm 采样率 16000 单声道 一帧数据长度 6400 字节
+ */
+_ZJ_API int ZJ_SendVoiceDataToAIAgent(unsigned char *pucVoiceData, int iDataLen, int iRecStatus);
+
+/**
+ * @brief 上传图片到Ai智能体后的回调函数
+ * @param iReqId 请求ID
+ * @param iCode 错误码 0 成功, 非0失败
+ * @param pucFileID 图片对应的文件ID
+ * @return -1 失败,0 成功
+ */
+typedef int (*ZJ_PFUN_UPLOADPICTURERSP)(int iReqId, int iCode, unsigned char *pucFileID);
+
+/**
+ * @brief 上传图片到Ai智能体
+ * @param iReqId 请求ID
+ * @param pucPicName 文件名 包含后缀的完整名称
+ * @param pucPicBuff 图片数据
+ * @param uiPicLen 图片数据长度
+ * @param pFunUploadPicRsp 回调函数
+ * @return -1 失败,0 成功
+ * @note pucPicName 图片名称包含后缀名 控制在256字节内
+ * @note 暂时没有支持图片问答的大模型应用,此接口暂不可用
+ */
+_ZJ_API int ZJ_UploadPicture(int iReqId, unsigned char *pucPicName, unsigned char *pucPicBuff, unsigned int uiPicLen, ZJ_PFUN_UPLOADPICTURERSP pFunUploadPicRsp);
+
+typedef struct stru_ZJ_FileIDList
+{
+ unsigned char *pstFileID; // 图片文件ID
+ struct stru_ZJ_FileIDList *pstNext;
+}ST_ZJ_FILEIDLIST;
+
+/**
+ * @brief 向Ai智能体进行提问
+ * @param ucTypeFlag 0 仅文本内容提问; 1 文本 + 图片内容提问
+ * @param pucTextData 文本内容
+ * @param pstFileIDList 图片列表
+ * @return -1 失败,0 成功
+ */
+_ZJ_API int ZJ_SendQuestionToAIAgent(unsigned char ucTypeFlag, unsigned char* pucSessionID, unsigned char *pucLastTurnID, unsigned char *pucTextData, ST_ZJ_FILEIDLIST *pstFileIDList);
+
+/***************************************************************************
+输出回调函数声明
+****************************************************************************/
+typedef int (*ZJ_PFUN_TEXT_CB)(unsigned char *pucSessionID, unsigned char *pucTurnID, unsigned char *pucTextUrl, int iRspCode);
+typedef int (*ZJ_PFUN_AUDIO_CB)(unsigned char *pucSessionID, unsigned char *pucTurnID, unsigned char *pucAudioUrl, int iRspCode);
+typedef int (*ZJ_PFUN_PICTURE_CB)(unsigned char *pucSessionID, unsigned char *pucTurnID, unsigned char *pucPictureUrl, int iRspCode);
+
+/**
+ * @brief 结果输出回调函数注册
+ * @param pFunOutputTextCb 文本输出回调函数
+ * @param pFunOutputAudioCb 音频输出回调函数
+ * @param pFunOutputPictureCb 图片输出回调函数
+ * @return -1 失败,0 成功
+ */
+_ZJ_API int ZJ_SetResultOutputCbFuncs(ZJ_PFUN_TEXT_CB pFunOutputTextCb, ZJ_PFUN_AUDIO_CB pFunOutputAudioCb, ZJ_PFUN_PICTURE_CB pFunOutputPictureCb);
+
+/**
+ * @brief 提问语音翻译文本回调函数注册
+ * @param pFunTrasTextCb 语音翻译输出回调函数
+ * @return -1 失败,0 成功
+ */
+_ZJ_API int ZJ_SetTranslateOutputCbFuncs(ZJ_PFUN_TEXT_CB pFunTrasTextCb);
+
+/***************************************************************************
+下载的文本数据回调函数注册
+****************************************************************************/
+/**
+ * @brief 流式文本输出回调函数
+ * @param uiReqID 请求ID
+ * @param pucTextBuff 文本数据
+ * @param uiBuffLen 文本数据长度
+ * @param bFinished 是否结束
+ * @param iRspCode 错误码 0 成功, 非0失败
+ * @return -1 失败,0 成功
+ */
+typedef int (*ZJ_PFUN_TEXT_DATA_CB)(unsigned int uiReqID, unsigned char *pucTextBuff, unsigned int uiBuffLen, int bFinished, int iRspCode);
+
+/**
+ * @brief 文本输出数据下载
+ * @param uiReqID 请求ID
+ * @param pucUrl 下载地址
+ * @param pFunTextDataCb 回调函数
+ * @return -1 失败,0 成功
+ */
+_ZJ_API int ZJ_UrlDownloadTextData(unsigned int uiReqID, unsigned char *pucUrl, ZJ_PFUN_TEXT_DATA_CB pFunTextDataCb);
+
+/***************************************************************************
+下载的图片数据回调函数注册
+****************************************************************************/
+/**
+ * @brief 图片输出回调函数
+ * @param uiReqID 请求ID
+ * @param pucPicBuff 图片数据
+ * @param uiBuffLen 图片据长度
+ * @param bFinished 是否结束
+ * @param iRspCode 错误码 0 成功, 非0失败
+ * @return -1 失败,0 成功
+ */
+typedef int (*ZJ_PFUN_PICTURE_DATA_CB)(unsigned int uiReqID, unsigned char *pucPicBuff, unsigned int uiBuffLen, int bFinished, int iRspCode);
+
+/**
+ * @brief 图片输出数据下载
+ * @param uiReqID 请求ID
+ * @param pucUrl 下载地址
+ * @param pFunPictureDataCb 回调函数
+ * @return -1 失败,0 成功
+ */
+_ZJ_API int ZJ_UrlDownloadPicData(unsigned int uiReqID, unsigned char *pucUrl, ZJ_PFUN_PICTURE_DATA_CB pFunPictureDataCb);
+
+/***************************************************************************
+下载的音频数据回调函数注册
+****************************************************************************/
+/**
+ * @brief 流式音频输出回调函数
+ * @param uiReqID 请求ID
+ * @param pucPackage 音频数据包
+ * @param uiPacklen 音频数据包长度
+ * @param bFinished 是否结束
+ * @param iRspCode 错误码 0 成功, 非0失败
+ * @return -1 失败,0 成功
+ * @note 注意!!! 音频输出格式为 pcm 采样率16000
+ */
+typedef int (*ZJ_PFUN_CUSTOM_AUDIOD_TRANS)(unsigned int uiReqID, unsigned char *pucPackage,unsigned int uiPacklen, int bFinished, int iRspCode);
+
+/**
+ * @brief 音频输出数据下载
+ * @param uiReqID 请求ID
+ * @param pucUrl 下载地址
+ * @param pFunAudioDataCb 回调函数
+ * @return -1 失败,0 成功
+ */
+_ZJ_API int ZJ_UrlDownloadAudioData(unsigned int uiReqID, unsigned char *pucUrl, ZJ_PFUN_CUSTOM_AUDIOD_TRANS pFunAudioDataCb);
+
+/***************************************************************************
+取消下载任务
+****************************************************************************/
+_ZJ_API int ZJ_CancelDownloadTask(unsigned int uiReqID);
+
+/***************************************************************************
+删除会话轮次记录
+****************************************************************************/
+typedef int (*ZJ_PFUN_COMMON_RSP)(unsigned int uiReqID, int iRsp);
+/**
+ * @brief 删除会话轮次记录
+ * @param uiReqID 请求ID
+ * @param pucSessionID 会话ID
+ * @param pucTurnID 轮次ID
+ * @param pFunDeleteSessionRoundCb 回调函数
+ * @return -1 失败,0 成功
+ */
+_ZJ_API int ZJ_DeleteSessionRound(unsigned int uiReqID, unsigned char *pucSessionID, unsigned char *pucTurnID, ZJ_PFUN_COMMON_RSP pFunDeleteSessionRoundCb);
+
+/***************************************************************************
+获取下一轮次建议问题列表
+****************************************************************************/
+// 用于存储每个问题项
+typedef struct stru_ZJ_Ques_Node{
+ unsigned char *pucQuestion;
+ struct stru_ZJ_Ques_Node *pstNext;
+} ST_ZJ_QUES_ITEM;
+
+typedef int (*ZJ_PFUN_GET_SUGGEST_QUES_LIST)(unsigned int uiReqID, ST_ZJ_QUES_ITEM *pstList);
+/**
+ * @brief 获取下一轮次建议问题列表
+ * @param uiReqID 请求ID
+ * @param pucSessionID 会话ID
+ * @param pucTurnID 轮次ID
+ * @param pFunGetSuggestQuesListCb 回调函数
+ * @return -1 失败,0 成功
+ */
+_ZJ_API int ZJ_GetSuggestQuesList(unsigned int uiReqID, unsigned char *pucSessionID, unsigned char *pucTurnID, ZJ_PFUN_GET_SUGGEST_QUES_LIST pFunGetSuggestQuesListCb);
+
+/***************************************************************************
+重命名会话轮次
+****************************************************************************/
+/**
+ * @brief 重命名会话轮次
+ * @param uiReqID 请求ID
+ * @param pucSessionID 会话ID
+ * @param pucTurnID 轮次ID
+ * @param pucConvName 新名称
+ * @param pFunRenameSessionRound 回调函数
+ * @return -1 失败,0 成功
+ */
+_ZJ_API int ZJ_RenameSessionRound(unsigned int uiReqID, unsigned char *pucSessionID, unsigned char *pucTurnID, unsigned char *pucConvName, ZJ_PFUN_COMMON_RSP pFunRenameSessionRound);
+
+/***************************************************************************
+获取应用meta信息
+PS: 这些东西都是电信要求返回的,具体是啥SDK不清楚,所以这里的URL不提供下载接口
+****************************************************************************/
+typedef int (*ZJ_PFUN_GET_SESSION_META_INFO)(unsigned int uiReqID, int iRsp, unsigned char *pucDalle2, unsigned char *pucBackGround, unsigned char *pucContent);
+/**
+ * @brief 获取应用meta信息
+ * @param uiReqID 请求ID
+ * @param pucSessionID 会话ID
+ * @param pFunGetSessionMetaInfoCb 回调函数
+ * @return -1 失败,0 成功
+ */
+_ZJ_API int ZJ_GetSessionMetaInfo(unsigned int uiReqID, unsigned char *pucSessionID, ZJ_PFUN_GET_SESSION_META_INFO pFunGetSessionMetaInfoCb);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
--- /dev/null
+#ifndef _ZJ_ERR_H_
+#define _ZJ_ERR_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+**定义服务器和sdk之间通信的错误码
+*/
+typedef enum enum_ZJ_ERR_TYPE{
+ EN_ZJ_ERR = -1, /*common err*/
+ EN_ZJ_ERR_PARAM = -2, /*param err*/
+ EN_ZJ_ERR_NOMEM = -3, /*no memory*/
+ EN_ZJ_ERR_NOINIT = -4, /*parameter not init*/
+ EN_ZJ_ERR_NORES = -5, /*no mutex, no thread, no file,inc*/
+ EN_ZJ_ERR_OVERFLOW = -6, /*stack overflow*/
+ EN_ZJ_ERR_MAGIC_N = -7, /*the heap PTR of struct is modified err */
+ EN_ZJ_ERR_KEY_UNEXIST = -8, /*key not exist */
+ EN_ZJ_ERR_FILE_EXIST = -9, /*key is exist */
+ EN_ZJ_ERR_AUTHORITY = -10, /*No authority */
+ EN_ZJ_ERR_CLOSE = -11, /*Fun Not open */
+ EN_ZJ_ERR_SUPPORT = -12, /*Fun Not support */
+ EN_ZJ_ERR_NOADDR = -13, /*addr path is err*/
+ EN_ZJ_ERR_FREQUENTLY = -14, /*request too many times*/
+ EN_ZJ_ERR_TRYAGAIN = -15, /*please try again*/
+ EN_ZJ_ERR_FULL = -16, /*dev list full*/
+ EN_ZJ_ERR_INTERCOM = -17,
+ EN_ZJ_ERR_NET = -80, /*connect net err*/
+ EN_ZJ_ERR_TIMEOUT = -83, /*wait time out*/
+ EN_ZJ_DES_CHANGE = -100, /*des changed*/
+ EN_ZJ_ERR_FILEEND = -101, /*at the end of file*/
+ EN_ZJ_ERR_FILEWAIT = -102,
+ EN_ZJ_ERR_EXIST = -110, /*dev exist*/
+ EN_ZJ_ERR_SLEEP = -111, /*dev sleep*/
+
+ EN_ZJ_ERR_OK = 0, //请求成功
+ EN_ZJ_ERR_SDK_CHARACTER = 1001, //配置WIFI时,传入SSID有无效字符
+ EN_ZJ_ERR_SDK_NO_WIFI_MODULE = 1002, //查询WIFI列表,设备没有WIFI模块
+ EN_ZJ_ERR_SDK_WIFI_ISCLOSE = 1003, //查询WIFI列表,WIFI模块关闭
+ EN_ZJ_ERR_SVR_SIGN_NO_SVR_DISTRI = 1101, //SIGN分配服务时,没有可分配的服务
+ EN_ZJ_ERR_SVR_FREQUENT_OPERATION = 1103, //访问频繁
+ EN_ZJ_ERR_SVR_COMPANYID_INVALID = 1111, //鉴权的企业ID不存在
+ EN_ZJ_ERR_SVR_COMPANY_NO_PRIVILEGE = 1112, //鉴权的企业ID对应的企业被平台禁用
+ EN_ZJ_ERR_SVR_APPID_INVALID = 1113, //鉴权传入的AppID在企业下不存在
+ EN_ZJ_ERR_SVR_APPID_NO_PRIVILEGE = 1114, //鉴权传入的AppID被企业/平台禁用
+ EN_ZJ_ERR_SVR_LICENSENOTEXIST = 1115, //传入授权的CTEI码没有找到
+ EN_ZJ_ERR_SVR_LICENSEEXPIRE = 1116, //授权用的CTEI码已经过期
+ EN_ZJ_ERR_SVR_LICENSEDISABLE = 1117, //授权用的CTEI码被平台禁用
+ EN_ZJ_ERR_SVR_APPHAVENOLICENSECOUNT = 1118, //按量授权的AppID下无可用的授权数量
+ EN_ZJ_ERR_SVR_DEVICENOTHERE = 1121, //设备登陆传入的设备ID无效,设备收到该错误码,重新注册新的ID
+ EN_ZJ_ERR_SVR_DEVICEDISABLE = 1122, //该设备被平台禁用,设备无法上云
+ EN_ZJ_ERR_SVR_DEVICE_VERSION_DISABLE = 1123, //设备版本太旧,系统不再兼容。设备此时需要进行升级
+ EN_ZJ_ERR_SVR_DEVICESVR_CALL_FAILED = 1131, //设备配置管理系统访问报错
+ EN_ZJ_ERR_SDK_DEVICE_NO_BUSI_CONFIG = 1141, //设备尚未上传业务配置
+ EN_ZJ_ERR_SDK_RESOLUTION_ABILITY_NOT_SUPPORT = 1142, //设置的设备分辨率,当前设备不支持
+ EN_ZJ_ERR_SDK_RESOLUTION_BUSI_NOT_SUPPORT = 1143, //设置的设备分辨率,可能因业务限制不支持(授权限制)
+ EN_ZJ_ERR_SDK_PTZ_ISMAX = 1144, //设备执行PTZ已经转到最大值
+ EN_ZJ_ERR_SDK_PTZ_INCRUISE = 1145, //设备正在执行PTZ巡航
+ EN_ZJ_ERR_SDK_EXITGROUP_ERR = 1146, //设备要出的组,不是设备当前的组,出组失败
+ EN_ZJ_ERR_SDK_SDCARD_FORMATTING_ERR = 1148, //设备格式化SD失败
+ EN_ZJ_ERR_SDK_SDCARD_NOT_EXIST = 1149, //格式化SD卡时,SD卡不存在
+ EN_ZJ_ERR_SDK_SDCARD_WR_ERR = 1150, //读写SD卡时,操作失败
+ EN_ZJ_ERR_SDK_ADD_CHILD_DEVICE_TIMEOUT = 1151, //添加HUB子设备时,通信超时,失败
+ EN_ZJ_ERR_SDK_CHILD_DEVICE_EXIST = 1152, //添加HUB子设备时,设备ID重复
+ EN_ZJ_ERR_SDK_HUB_OPT_ERR = 1153, //HUB发生异常,操作失败
+ EN_ZJ_ERR_SDK_QUERY_RECORD_NO_PRIVILEGE = 1154, //当前查询记录没有操作权限
+ EN_ZJ_ERR_SVR_CLOUDSVR_CALL_FAILED = 1155, //无法访问当前云存记录服务
+ EN_ZJ_ERR_SDK_LOCAL_RECORD_NOT_EXIST = 1156, //当前查询详情的本地记录文件已被清理
+ EN_ZJ_ERR_SDK_CLOUD_FILE_EXPIRE = 1157, //当前查询的云记录文件已经过期
+ EN_ZJ_ERR_SDK_NOTNEED_OTA = 1167, //当前设备不需要OTA
+ EN_ZJ_ERR_SDK_MULMEDIA_OVERLOAD = 1168, //流媒体负载比较重
+ EN_ZJ_ERR_SVR_ACCOUNT_ISEXIST = 2001, //账号已存在
+ EN_ZJ_ERR_SVR_VERIFICATION_CODE_NOTEXIST = 2207, //验证码不存在
+ EN_ZJ_ERR_SVR_REG_OTHER_ERR = 2003, //其他注册失败原因
+ EN_ZJ_ERR_SVR_ACCOUNT_NOTEIXST = 2004, //账号不存在
+ EN_ZJ_ERR_SVR_USER_ACCOUNT_PWD_ERR = 2005, //User登录账号密码错误
+ EN_ZJ_ERR_SVR_VERIFY_OPENID_ERR = 2006, //第三方登陆时,第三方校验失败
+ EN_ZJ_ERR_SVR_ACCOUNT_FORBIDDEN = 2007, //登陆时,发现账户已经被禁用
+ EN_ZJ_ERR_SVR_UTOKEN_NOTEXIST = 2008, //UTOKEN不存在
+ EN_ZJ_ERR_SVR_SMSCODE_FREQUENT = 2009, //两次获取短信验证码时间过短,返回失败
+ EN_ZJ_ERR_SVR_USER_REJECT_INVITE = 2010, //给用户发送分享邀请,被邀请者拒绝
+ EN_ZJ_ERR_SVR_GTOKENNOTMATCH = 2011, //通过Gtoken入组,Gtoken失效
+ EN_ZJ_ERR_SVR_DEVICEISINGROUP = 2012, //添加设备进组时失败,设备已经加入了另一个组
+ EN_ZJ_ERR_SVR_USERNOPRIVILEGE = 2013, //用户无操作权限
+ EN_ZJ_ERR_SVR_ACCOUNT_TYPE_NOT_SUPPORT = 2014, //获取短信验证码时,不支持手机邮箱以外的方式获取
+ EN_ZJ_ERR_SVR_ACCOUNT_FORMAT_ERR = 2015, //账号格式错误
+ EN_ZJ_ERR_SVR_ACCOUNT_ALREADY_BIND = 2016, //账号已被绑定
+ EN_ZJ_ERR_SVR_ACCOUNT_BIND_ERR = 2017, //绑定账号错误
+ EN_ZJ_ERR_SVR_FILEID_NOT_EXIST = 2018, //云存储文件ID不存在
+ EN_ZJ_ERR_SVR_APPID_NOTFOUND_TEMPLATE = 2027, //APPID未找到对应的短信/ems模板
+ EN_ZJ_ERR_SVR_DEVICE_P2P_NOT_SUPPORT = 3001, //当用户向设备请求P2P时,设备返回不支持P2P
+ EN_ZJ_ERR_SVR_CONN_NOT_MATCH = 3002, //用户与设备的P2P连接校验不匹配
+ EN_ZJ_ERR_SVR_MEDIA_MATCH_TIMEOUT = 3003, //用户和设备在MEDIA上配对超时
+ EN_ZJ_ERR_SVR_MEDIA_CHANNEL_NOTEXIST = 3004, //媒体操作时,对应的ChannelID不存在
+ EN_ZJ_ERR_SVR_MEDIA_PLAY_UPPER_LIMIT = 3005, //点播流媒体时,人数超上限
+ EN_ZJ_ERR_SVR_MEDIA_INVALID = 3006, //流媒体服务时,资源过期或无效
+ EN_ZJ_ERR_SVR_MALLOC_ERR = 4001, //服务申请内存对象错误
+ EN_ZJ_ERR_SVR_JSON_DECODE_ERR = 4002, //服务解析JSON协议错误
+ EN_ZJ_ERR_SVR_JSON_ENCODE_ERR = 4003, //服务构造JSON字符串错误
+ EN_ZJ_ERR_SVR_API_PARAM_ERR = 4004, //API调用参数错误
+ EN_ZJ_ERR_SVR_METHOD_ERR = 4005, //API返回NIL
+ EN_ZJ_ERR_SVR_ENCRYPT_ERR = 4006, //协议加密错误
+ EN_ZJ_ERR_SVR_DECRYPT_ERR = 4007, //协议解密错误
+ EN_ZJ_ERR_SVR_BUFREAD_ERR = 4008, //链接读取BUFFER错误
+ EN_ZJ_ERR_SVR_TLS_PEMKEY_ERR = 4009, //TLS链接找不到PEM KEY文件错误
+ EN_ZJ_ERR_SVR_AUTHATOKEN_ERR = 4010, //服务器之间访问调用 ATOKEN出错
+ EN_ZJ_ERR_SVR_REDIS_PUB_ERR = 4011, //Redis服务访问错误
+ EN_ZJ_ERR_SVR_DB_CONNECT_ERR = 4012, //数据库连接失败
+ EN_ZJ_ERR_SVR_DB_INSERT_ERR = 4013, //数据库数据插入失败
+ EN_ZJ_ERR_SVR_DB_SELECT_ERR = 4014, //数据库数据查询失败
+ EN_ZJ_ERR_SVR_DB_UPDATE_ERR = 4015, //数据库数据更新失败
+ EN_ZJ_ERR_SVR_DB_DELETE_ERR = 4016, //数据库数据删除失败
+ EN_ZJ_ERR_SVR_DB_NORECORD_ERR = 4017, //没有找到相关记录
+ EN_ZJ_ERR_SVR_DB_DUPLICATE_KEY = 4018, //主键重复
+ EN_ZJ_ERR_SVR_NET_LISTEN_ERR = 4019, //服务端口侦听错误
+ EN_ZJ_ERR_SVR_CLOSED = 4020, //服务关闭错误
+ EN_ZJ_ERR_SVR_IDSVR_NOT_FOUND = 4021, //IDSVR服务找不到
+ EN_ZJ_ERR_SVR_IDSTUNSVR_NOT_FOUND = 4022, //IDSTUN服务找不到
+ EN_ZJ_ERR_SVR_BUSISVR_NOT_FOUND = 4023, //BUSICENTRE服务找不到
+ EN_ZJ_ERR_SVR_MEDIASVR_NOT_FOUND = 4024, //媒体服务找不到
+ EN_ZJ_ERR_SVR_LINKSVR_NOT_FOUND = 4025, //LINK服务找不到
+ EN_ZJ_ERR_SVR_USERSVR_CALL_FAILED = 4026, //用户系统接口调用失败
+ EN_ZJ_ERR_SVR_IDSVR_CALL_FAILED = 4027, //IDSVR系统接口调用失败
+ EN_ZJ_ERR_SVR_IDSTUN_CALL_FAILED = 4028, //IDSTUN系统接口调用失败
+ EN_ZJ_ERR_SVR_PUSHSVR_NOT_FOUND = 4029, //推送服务找不到
+ EN_ZJ_ERR_SVR_GATEWAYSVR_CALL_FAILED = 4030, //网关服务调用失败
+ EN_ZJ_ERR_SVR_COMPMNGSVR_CALL_FAILED = 4031, //企业后台服务调用失败
+ EN_ZJ_ERR_SVR_PUBSUBSVR_NOT_FOUND = 4032, //订阅发布服务找不到
+ EN_ZJ_ERR_SVR_SYSNOTICESVR_NOT_FOUND = 4033, //sysnotice找不到
+ EN_ZJ_ERR_SVR_GATEWAYSVR_NOT_FOUND = 4034, //网关服务找不到
+ EN_ZJ_ERR_SVR_HTTPSVR_NOT_FOUND = 4035, //http服务找不到
+ EN_ZJ_ERR_SVR_HTTPSVR_CALL_FAILED = 4036, //http服务调用失败
+ EN_ZJ_ERR_SVR_BUSISVR_CALL_FAILED = 4037, //busicentre调用失败
+ EN_ZJ_ERR_SVR_ID_CALL_FAILED = 4038, //IDSVR调用失败
+ EN_ZJ_ERR_SVR_SIGN_CALL_FAILED = 4039, //SIGN服务调用失败
+ EN_ZJ_ERR_SVR_LINK_CALL_FAILED = 4040, //Link服务调用失败
+ EN_ZJ_ERR_SVR_LOGSVR_CALL_FAILED = 4041, //LOG系统调用失败
+ EN_ZJ_ERR_SVR_USERSVR_NOT_FOUND = 4042, //用户系统找不到
+ EN_ZJ_ERR_SVR_SYSNOTICESVR_CALL_FAILED = 4043, //sysnotice找不到调用失败
+ EN_ZJ_ERR_SVR_PUBSUBSVR_CALL_FAILED = 4044, //订阅发布服务调用失败
+ EN_ZJ_ERR_SVR_DYNAMICMETHOD_CALL_FAILED = 4045, //notice动态调用其他服务失败
+ EN_ZJ_ERR_SVR_PLAYLOAD_IS_FULL = 4046, //负载为空
+ EN_ZJ_ERR_SVR_GRPCSVR_CALL_FAILED = 4047, //GRPC调用失败
+ EN_ZJ_ERR_SVR_DEVICESVR_NOT_FOUND = 4048, //设备系统位找不到
+ EN_ZJ_ERR_SVR_EVENTSVR_NOT_FOUND = 4049, //事件系统找不到
+ EN_ZJ_ERR_SVR_ZONE_NOT_FOUND = 4050, //ZONE服务找不到
+ EN_ZJ_ERR_SVR_NET_WRITE_BLOCK = 4051, //网络通道写入包失败
+ EN_ZJ_ERR_SVR_SOCKET_CLOSED = 4052, //SOCKET连接已关闭
+ EN_ZJ_ERR_SVR_SOCKET_READERR = 4053, //SOCKET连接读取包失败
+ EN_ZJ_ERR_SVR_ID_PARSEERR = 4054, //ID参数解析失败(格式不争取)
+ EN_ZJ_ERR_SVR_NET_DNSPARSE_ERR = 4055, //
+ EN_ZJ_ERR_SVR_NET_REQ_TIMEOUT = 4056, //网络请求超时
+ EN_ZJ_ERR_SVR_SUBPUB_TOKEN_NOTEXIST = 4057,
+ EN_ZJ_ERR_SVR_SOCKET_ACCEPT_ERROR = 4058,
+ EN_ZJ_ERR_SVR_OPERATION_TOO_FREQUENT = 4059,
+ EN_ZJ_ERR_SVR_PARSE_IP_ERR = 4060,
+ EN_ZJ_ERR_SVR_GETSVRPUBKEY_ERR = 4061, //获取pubkey
+ EN_ZJ_ERR_SVR_LINKNOTICESVR_NOT_FOUND = 4062, //LINKNOTICE找不到
+ EN_ZJ_ERR_SVR_ENCRYPTTYPE_ERROR = 4064, //加密类型错误
+ EN_ZJ_ERR_SVR_VIDEOSVR_NOT_FOUND = 4065, //视频存储服务找不到
+ EN_ZJ_ERR_SVR_EXCEPTIONSVR_NOT_FOUND = 4066, //EXCEPTION服务找不到
+ EN_ZJ_ERR_SVR_LOGSVR_NOT_FOUND = 4067, //LOGSVR找不到
+ EN_ZJ_ERR_SVR_OPRECORDSVR_NOT_FOUND = 4068, //OPRECORD服务找不到
+ EN_ZJ_ERR_SVR_NATSTUNSVR_NOT_FOUND = 4069, //NATSTUN服务找不到
+ EN_ZJ_ERR_SVR_COMBO_CALL_FAILED = 4070, //套餐服务调用失败
+ EN_ZJ_ERR_SVR_COMBO_NOT_FOUND = 4071, //套餐服务找不到
+ EN_ZJ_ERR_SVR_BINDSVR_NOT_FOUND = 4073, //绑定服务找不到
+ EN_ZJ_ERR_SVR_PICTURESVR_NOT_FOUND = 4074, //图片系统找不到
+ EN_ZJ_ERR_SVR_GROUPNOTHERE = 4407, //组不存在
+ EN_ZJ_ERR_SVR_DEVICENOTINGROUP = 4409, //Device不在组里
+ EN_ZJ_ERR_SVR_WAKEUP_DEVICEERR = 4422, //唤醒出错
+ EN_ZJ_ERR_SVR_DEVICEOFFLINE = 4602, //Device不在线
+ EN_ZJ_ERR_SVR_DEVICE_ISSLEEP = 4610, //设备已休眠
+ EN_ZJ_ERR_SVR_HAVENOGROUPS = 4612, //没有组列表
+ EN_ZJ_ERR_SVR_REG_AUTH_ERR = 5001, //SIGN服务注册 SVRID&SVRPWD校验错误
+ EN_ZJ_ERR_SVR_SIGN_ATOKEN_NOT_EXIST = 5002, //SIGN服务通过SVR ATOKEN找不到服务
+ EN_ZJ_ERR_SVR_SIGN_MANAGE_NOMETHOD = 5004, //SIGN的Manage接口method不支持
+ EN_ZJ_ERR_SVR_GENERALUTOKEN_ERR = 5005, //BUSI生成UTOKEN错误
+ EN_ZJ_ERR_SVR_UTOKEN_NOTAUTHED = 5006,
+ EN_ZJ_ERR_SVR_USERNOTHERE = 5007,
+ EN_ZJ_ERR_SVR_USERISINGROUP = 5011,
+ EN_ZJ_ERR_SVR_ROLENOTEXIST = 5013,
+ EN_ZJ_ERR_SVR_CHILDGROUPNOTEXIST = 5014,
+ EN_ZJ_ERR_SVR_ROLEISINUSE = 5015,
+ EN_ZJ_ERR_SVR_GROUPISINGROUP = 5016,
+ EN_ZJ_ERR_SVR_USERNOTINGROUP = 5017,
+ EN_ZJ_ERR_SVR_GROUPNOTINGROUP = 5019,
+ EN_ZJ_ERR_SVR_DEVICEISSLEEP = 5021,
+ EN_ZJ_ERR_SVR_ID_MAXIDINDEX_GETERR = 5024,
+ EN_ZJ_ERR_SVR_APPNOTEXIST = 5026,
+ EN_ZJ_ERR_SVR_APPDISABLE = 5027,
+ EN_ZJ_ERR_SVR_APPAUTHTYPE_ERR = 5031,
+ EN_ZJ_ERR_SVR_APPISEXIST = 5032,
+ EN_ZJ_ERR_SVR_ACCOUNTTYPENOTBIND = 5034,
+ EN_ZJ_ERR_SVR_APPAUTHTYPENOTSUPPORT = 5036,
+ EN_ZJ_ERR_SVR_DEVICE_NOT_AUTH = 5038,
+ EN_ZJ_ERR_SVR_UTOKEN_NOT_AUTH = 5039,
+ EN_ZJ_ERR_SVR_DEVICE_FORBIDDEN = 5040,
+ EN_ZJ_ERR_SVR_UTOKEN_FORBIDDEN = 5041,
+ EN_ZJ_ERR_SVR_UTOKEN_CHECKERR = 5042,
+ EN_ZJ_ERR_SVR_SYSCOMMAND_FAIL = 5043,
+ EN_ZJ_ERR_SVR_PUSHTEMPLATENOTEXIST = 5044,
+ EN_ZJ_ERR_SVR_DEVICE_LIMIT_AUTH = 5045,
+ EN_ZJ_ERR_SVR_SIGN_SVRKEY_NOTEXIST = 5046,
+ EN_ZJ_ERR_SVR_SVRPUBKEY_NOTEXIST = 5047,
+ EN_ZJ_ERR_SVR_FILETYPE_NOTEXIST = 5048,
+ EN_ZJ_ERR_SVR_SUBPUB_SUBJ_NOT_EXIST = 8000,
+ EN_ZJ_ERR_SVR_SUBPUB_ID_TYPE_NOT_SUPPORT = 8001,
+ EN_ZJ_ERR_SVR_NOTICE_QUEUE_WRITE_ERR = 8002, //NOTICE服务写入队列失败
+ EN_ZJ_ERR_SVR_NOTICE_PROTO_NOT_SUPPORT = 8003, //NOTICE通知协议不支持
+ EN_ZJ_ERR_SVR_LANGUAGE_NOT_EXIST = 8004, //语言不存在
+ EN_ZJ_ERR_SVR_SUBPUB_PUBLISH_MSG_ERR = 8005, //订阅发布服务Publish失败
+ EN_ZJ_ERR_SVR_NOTICE_JUMP_NOTIE_SUPPORT = 8006, //NOTICE跨机房调用不支持
+ EN_ZJ_ERR_SVR_SIGNAL_NOT_SUPPORT = 9001, //所发送的指令,对方不支持该指令集;(版本/型号错误导致)
+ EN_ZJ_ERR_SVR_SERVICE_TIMEOUT = 9002, //指令发送后,超过超时时间仍没有回应;
+ EN_ZJ_SVR_SIGNAL_ALREADY_CACHE = 9003, //通过服务端转发信令,设备支持信令缓存,设备在线,则回应。
+ EN_ZJ_ERR_SVR_SIGNAL_DISCARD = 9004, //通过服务端转发信令,不支持信令缓存,设备不在线,则回应。
+ EN_ZJ_ERR_SVR_CMD_NOT_SUPPORT = 9010, //版本较旧,或设备类型不符合不支持当前指令。
+ EN_ZJ_ERR_SVR_DEVICE_REG_FORBIDDEN = 9030, //设备注册无权限,或服务限制,设备不再重试
+ EN_ZJ_ERR_SVR_DEVICE_LOGIN_FORBIDDEN = 9031, //设备登陆被禁用,设备不再重试
+
+
+}EN_ZJ_ERR_TYPE;
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
+
+
+
--- /dev/null
+#ifndef _ZJ_LOG_H_
+#define _ZJ_LOG_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef WIN32
+#define _ZJ_FUNC __FUNCTION__
+#else
+#define _ZJ_FUNC __func__
+
+#endif
+
+typedef enum enum_ZJ_LOG_LVL{
+ EN_ZJ_LOG_LVL_NONE = 0x0000,
+ EN_ZJ_LOG_LVL_ERR = 0x0001,
+ EN_ZJ_LOG_LVL_WARN = 0x0002,
+ EN_ZJ_LOG_LVL_INFO = 0x0004,
+ EN_ZJ_LOG_LVL_DBG = 0x0008,
+ EN_ZJ_LOG_LVL_ALL = 0x00FF,
+}EN_ZJ_LOG_LVL;
+
+typedef enum enum_ZJ_LOGCOLLECT_MODEL{
+ EN_ZJ_LOGCOLLECT_TFCARD = 2,
+ EN_ZJ_LOGCOLLECT_NET = 4,
+ EN_ZJ_LOGCOLLECT_ENCODER = 9,
+}EN_ZJ_LOGCOLLECT_MODEL;
+
+/**
+ * @brief 设置SDK调试模式
+ * @param iDebugMode 0.关闭print 1.打开print
+ * @return 0 成功 -1 失败
+ */
+_ZJ_API int ZJ_SetDebugMode(int iDebugMode);
+
+/**
+ * @brief 设置SDK日志开关
+ * @param iDebugMode 0.关闭 1.打开
+ * @return 0 成功 -1 失败
+ */
+_ZJ_API int ZJ_SetLogOpenFlag(int iOpenFlag);
+
+ /**
+ * @brief 设置SDK日志等级
+ * @param iLevel 等级 EN_ZJ_LOG_LVL
+ * @return 0 成功 -1 失败
+ */
+ _ZJ_API int ZJ_SetDebugLevel(EN_ZJ_LOG_LVL iLevel);
+
+
+#define ZJ_LOG_ERR(_pucFormat, ...) ZJ_LogPrintf((unsigned char*)_ZJ_FUNC,__LINE__,(unsigned char*)"APP", EN_ZJ_LOG_LVL_ERR,(unsigned char*)_pucFormat, ##__VA_ARGS__)
+
+#define ZJ_LOG_INF(_pucFormat, ...) ZJ_LogPrintf((unsigned char*)_ZJ_FUNC,__LINE__,(unsigned char*)"APP", EN_ZJ_LOG_LVL_INFO,(unsigned char*)_pucFormat, ##__VA_ARGS__)
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef _ZJ_NETWORK_H_
+#define _ZJ_NETWORK_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @brief 设置设备网络状态
+ * @param enNetType 网络类型 EN_ZJ_NETWORK_TYPE
+ * @param iConnectFlag 连接标志 0 表示没有连接,1 表示连接成功
+ * @return 0 成功 -1 失败
+ */
+_ZJ_API int ZJ_SetNetWorkType(EN_ZJ_NETWORK_TYPE enNetType,int iConnectFlag);
+
+/**
+ * @brief 设备扫描app二维码添加接口
+ * @param pstrQRCode 二维码信息
+ * @return 0 成功 -1 失败
+ * @note 预留接口
+ */
+_ZJ_API int ZJ_SetQRCodeString(unsigned char *pstrQRCode);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null
+#ifndef _ZJ_OTA_H_
+#define _ZJ_OTA_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @brief 设备OTA相关回调注册接口
+ * @param pFunNewVersionCb 回调函数
+ * @param pFunVersonDataDownCb 回调函数
+ * @param pFunStopUpgrade 回调函数
+ * @param pFunCoverImageNotice 回调函数
+ * @return 0 成功 -1 失败
+ */
+_ZJ_API int ZJ_SetOtaCBFuncs(ZJ_PFUN_NEWVERSON_NOTICE pFunNewVersionCb,ZJ_PFUN_NEWVERSON_DATADOWN pFunVersonDataDownCb,
+ ZJ_PFUN_STOPUPGRADE pFunStopUpgrade,ZJ_PFUN_COVERIMAGE_NOTICE pFunCoverImageNotice);
+
+/**
+ * @brief 设备开始镜像覆盖
+ * @param 无
+ * @return 0 成功 -1 失败
+ */
+_ZJ_API int ZJ_StartUpdate(void);
+
+/**
+ * @brief 设备镜像覆盖过程中进度上报
+ * @param uiPercentage 进度 1~99
+ * @return 0 成功 -1 失败
+ */
+_ZJ_API int ZJ_SetBurnningProgress(unsigned int uiPercentage);
+
+//设置OTA升级能力,具备多种能力按位与
+/**
+ * @brief 设置设备支持的OTA能力
+ * @param uiOTAAbility 能力 EN_ZJ_OTA_ABILITY
+ * @return 0 成功 -1 失败
+ */
+_ZJ_API int ZJ_SetOTAAbility(unsigned int uiOTAAbility);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef _ZJ_SYSTEM_H_
+#define _ZJ_SYSTEM_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "osal_task.h"
+
+/**
+* @brief 设备初始化接口
+* @param pucSystemPath 系统路径
+* @param pcConfPath 配置路径
+* @return 0 成功 -1 失败
+* @note 系统路径在重置 的时候,改目录下的任何文件都不要删除。
+* 需要确保路径可访问,如不可访问则会返回对应的错误状态信息。
+*/
+_ZJ_API int ZJ_Init(char *pucSystemPath, char* pcConfPath, ZJ_PFUN_THIRDOUTPUTLOG_CB pFunThirdOutputLogCb);
+
+/**
+ * @brief 设备初始化扩展接口1
+ * @param pucSystemPath 系统路径
+ * @param pcConfPath 配置路径
+ * @param pucLogPath 日志路径
+ * @return 0 成功 -1 失败
+ */
+_ZJ_API int ZJ_InitEx(char *pucSystemPath, char* pcConfPath,char *pucLogPath);
+
+/**
+ * @brief 设备初始化扩展接口2
+ * @param pucSystemPath 系统路径
+ * @param pcConfPath 配置路径
+ * @param pucLogPath 日志路径
+ * @param iFileSize 文件的大小, 单位 字节
+ * @param iFileMaxCount 文件的数目
+ * @return 0 成功 -1 失败
+ */
+_ZJ_API int ZJ_InitEx2(char *pucSystemPath, char* pcConfPath,char *pucLogPath,int iFileSize,int iFileMaxNum);
+
+/**
+ * @brief 设置企业ID和产品ID
+ * @param pucCompanyId 企业ID
+ * @param pucAppId 产品ID
+ * @return 0 成功 -1 失败
+ */
+_ZJ_API int ZJ_SetCompanyInfo(unsigned char *pucCompanyId,unsigned char* pucAppId);
+
+/**
+ * @brief 设置设备唯一标识
+ * @param pucCTEI 设备LICENSE
+ * @return 0 成功 -1 失败
+ */
+_ZJ_API int ZJ_SetCTEIID(unsigned char* pucCTEI);
+
+/**
+ * @brief 设置设备型号
+ * @param pucDevModel 设备型号 比如 EF-FH8632-0530-00 第一位 sdk 开发者 , 第二位厂商芯片信号 第三 产品型号 第四 省份
+ * @return 0 成功 -1 失败
+ */
+_ZJ_API int ZJ_SetDeviceModel(unsigned char *pucDevModel);
+
+/**
+ * @brief 设置设备系统类型
+ * @param uiOsType 系统类型
+ * @return 0 成功 -1 失败
+ * @note EN_ZJ_OS_TYPE
+ */
+_ZJ_API int ZJ_SetDevOsType(unsigned int uiOsType);
+
+/**
+ * @brief 设置设备固件版本号
+ * @param pcVersion 版本号
+ * @return 0 成功 -1 失败
+ * @note 版本号定义遵循版本号定义规则;长度小于64 个字节
+ */
+_ZJ_API int ZJ_SetAppVersion(const char* pcVersion);
+
+/**
+ * @brief 获取设备固件版本号
+ * @param 无
+ * @return 设备当前固件版本号
+ */
+_ZJ_API unsigned char* ZJ_GetAppVersion(void);
+
+/**
+ * @brief 设置SDK服务状态回调函数
+ * @param pFunSelfStatusCb 回调函数
+ * @return 0 成功 -1 失败
+ */
+_ZJ_API int ZJ_Set_SystemStatusCB(ZJ_PFUN_DEVICE_STATUS pFunSelfStatusCb);
+
+/**
+ * @brief 获取设备通过SDK从服务获取到的设备DID
+ * @param 无
+ * @return 设备DID
+ */
+_ZJ_API unsigned char* ZJ_GetDeviceId(void);
+
+/**
+ * @brief 设备按键复位接口
+ * @param uiCtrlType 操作选项 EN_ZJ_CTRLDEVICEID_TYPE
+ * @return 0 成功 -1 失败
+ */
+_ZJ_API int ZJ_CtrlDeviceId(unsigned int uiCtrlType);
+
+/**
+ * @brief 启动SDK
+ * @param 无
+ * @return 0 成功 -1 失败
+ */
+_ZJ_API int ZJ_Start(void);
+
+/**
+ * @brief 停止SDK
+ * @param 无
+ * @return 0 成功 -1 失败
+ */
+_ZJ_API int ZJ_Stop(void);
+
+/**
+ * @brief 销毁SDK实例
+ * @param 无
+ * @return 0 成功 -1 失败
+ */
+_ZJ_API int ZJ_Destroy(void);
+
+/**
+ * @brief 获取SDK服务的link地址 用于固件检测网络情况
+ * @param pucDomainHost 域名
+ * @param pucAddrIpv4 ipv4地址
+ * @param pucAddrIpv6 ipv6地址
+ * @param puiPort 端口号
+ * @param pucToken 预留参数
+ * @return 0 成功 -1 失败
+ */
+_ZJ_API int ZJ_GetLinkAddr(unsigned char **pucDomainHost,unsigned char **pucAddrIpv4, unsigned char **pucAddrIpv6, unsigned int *puiPort, unsigned char **pucToken);
+
+/**
+ * @brief 获取SDK服务的Sign地址 用于固件检测网络情况
+ * @param aucHost Sign域名
+ * @return 0 成功 -1 失败
+ */
+_ZJ_API int ZJ_GetHmServerHostAddr(unsigned char aucHost[256]);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null
+#ifndef _ZJ_TYPE_H_
+#define _ZJ_TYPE_H_
+
+// #include <time.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef ZJ_EXPORTS
+#define _ZJ_API __declspec(dllexport)
+#else
+#define _ZJ_API
+#endif
+
+#define ZJ_HANDLE void*
+// 版本号
+#define ZJ_SDK_VERSION_NUM 0x00250718
+
+// 系统类型
+typedef enum enum_zj_os_type
+{
+ EN_ZJ_OS_TYPE_LINUX = 1,
+ EN_ZJ_OS_TYPE_IOS = 2,
+ EN_ZJ_OS_TYPE_ANDRIOD = 3,
+ EN_ZJ_OS_TYPE_ANDRIODTV = 4,
+ EN_ZJ_OS_TYPE_WINDOWS = 5,
+ EN_ZJ_OS_TYPE_RTOS = 6
+}EN_ZJ_OS_TYPE;
+
+/*********************************************************************
+设备初始化状态。分别为:初始化、配置加载、网络初始化、注册、登录、绑定、运行。
+*********************************************************************/
+typedef enum enum_ZJ_SERVER_STATUS
+{
+ EN_ZJ_SERVER_STATUS_INIT = 0,
+ EN_ZJ_SERVER_STATUS_GETADDR,
+ EN_ZJ_SERVER_STATUS_CONNECT, //网络连接完成
+ EN_ZJ_SERVER_STATUS_REGIST, //设备注册
+ EN_ZJ_SERVER_STATUS_WAITBIND, //设备等待绑定
+ EN_ZJ_SERVER_STATUS_PROCESS, //设备完成上线
+ EN_ZJ_SERVER_STATUS_EXITGROUP //设备解绑退组
+}EN_ZJ_SERVER_STATUS;
+
+typedef enum enum_ZJ_CFG_ITEM
+{
+ EN_ZJ_CFG_ITEM_ALL = 0X00,
+ EN_ZJ_CFG_ITEM_DEVICE = 0X01,
+ EN_ZJ_CFG_ITEM_INIOT = 0X08,
+ EN_ZJ_CFG_ITEM_SYSTEM = 0X80,
+ EN_ZJ_CFG_ITEM_GROUPINF = 0x10000,
+}EN_ZJ_CFG_ITEM;
+
+typedef enum enum_ZJ_DEVICE_UPDATE_STATUS
+{
+ EN_ZJ_DEVICE_UPDATE_STATUS_NOUPDATE = 0, //不需要升级
+ EN_ZJ_DEVICE_UPDATE_STATUS_NEEDUPDATE = 1, //有新版本需要升级
+ EN_ZJ_DEVICE_UPDATE_STATUS_MUSTUPDATE = 2 //强制升级,系统版本不兼容需要强制升级
+}EN_ZJ_DEVICE_UPDATE_STATUS;
+
+typedef enum enum_ZJ_NETWORK_TYPE{
+ EN_ZJ_NETWORK_TYPE_NONET = 0x00, // 无网络
+ EN_ZJ_NETWORK_TYPE_WIRED = 0x01, // 有线连接
+ EN_ZJ_NETWORK_TYPE_WIFI = 0x02, // WIFI连接
+ EN_ZJ_NETWORK_TYPE_AP = 0x04, // AP热点
+ EN_ZJ_NETWORK_TYPE_SIM = 0x08, // 移动网络
+}EN_ZJ_NETWORK_TYPE;
+
+typedef enum enum_ZJ_OTA_ABILITY{
+ EN_ZJ_OTA_ABILITY_SDCARD = 0x01, // SD卡升级,用户将升级包拷贝到SD卡,然后将SD卡插入设备完成升级;
+ EN_ZJ_OTA_ABILITY_LOCALUPDATE = 0x02, // 本地升级,用户与设备连接在同一个局域网,完成升级;
+ EN_ZJ_OTA_ABILITY_REMOTEUPDATE = 0x04 // 远程升级,用户与设备不在同一个局域网,完成升级;设备需要更多的空间存放升级包;
+}EN_ZJ_OTA_ABILITY;
+
+typedef enum enum_ZJ_AUDIOENC_TYPE{
+ EN_ZJ_AUDIOENC_TYPE_PCM16 = 0x01,
+ EN_ZJ_AUDIOENC_TYPE_G711A = 0x02,
+ EN_ZJ_AUDIOENC_TYPE_G711U = 0x04,
+ EN_ZJ_AUDIOENC_TYPE_AAC = 0x08,
+ EN_ZJ_AUDIOENC_TYPE_MP3 = 0x10,
+ EN_ZJ_AUDIOENC_TYPE_SVAC = 0x20,
+ EN_ZJ_AUDIOENC_TYPE_SVAC3 = 0x40,
+}EN_ZJ_AUDIOENC_TYPE;
+
+typedef struct stru_ZJ_AUDIO_PARAM{
+ unsigned int uiEncodeType; //编码格式 EN_ZJ_AUDIOENC_TYPE
+ unsigned int uiSampleRate; //采样率
+ unsigned int uiChannel; //声道数
+ unsigned int uiDepth; //深度
+}ST_ZJ_AUDIO_PARAM;
+
+typedef enum enum_ZJ_CTRLDEVICEID_TYPE{
+ EN_ZJ_CTRLDID_NODE = 0,
+ EN_ZJ_CTRLDID_EXITGROUP // 设备解绑操作
+}EN_ZJ_CTRLDEVICEID_TYPE;
+
+// 设备状态回调接口; 告诉设备当前状态;
+typedef int (*ZJ_PFUN_DEVICE_STATUS)(EN_ZJ_SERVER_STATUS enDeviceStatus, int iErrCode);
+
+/****************************************************************
+升级回调函数
+***************************************************************/
+// 设备新版本回调接口,告诉设备有新版本
+// pucDwonUrl 固件包的下载地址, 地址格式: hostAddr:port/urlpath
+
+// 下载地址作为flash 覆盖失败后的补救措施, 正常不使用
+typedef int (*ZJ_PFUN_NEWVERSON_NOTICE)(unsigned char *pucNewVersion,unsigned int uiFileSize,unsigned char *pucDownUrl);
+
+// 设备镜像下载回调接口,sdk下载下来的数据通过此回调透传给设备,uiEndFlag : 1 表示下载完成 0 表示下载中
+// uiDataType 0 固件数据 1 配置文件
+typedef int (*ZJ_PFUN_NEWVERSON_DATADOWN)(unsigned char *pucPackage,unsigned int uiPacklen,unsigned int uiEndFlag,unsigned int uiDataType);
+
+// 停止下载文件
+typedef int (*ZJ_PFUN_STOPUPGRADE)(void);
+
+// 1 解签成功,通知固件覆盖镜像、 0 解签不成功,不覆盖
+typedef int (*ZJ_PFUN_COVERIMAGE_NOTICE)(unsigned int uiCoverFlag);
+
+//日志收集回调接口,通过该接口将所有日志打包成pcDesInfo文件;
+typedef int (*ZJ_PFUN_COLLECTLOGFILES)(unsigned char *pucPeerId,unsigned int iSessionId,unsigned char *pcDesInfo);
+
+// RTOS 串口输出回调函数
+typedef int (*ZJ_PFUN_THIRDOUTPUTLOG_CB)(const char* fmt, ...);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
+
--- /dev/null
+#===============================================================================
+# @brief cmake file
+# Copyright (c) @CompanyNameMagicTag 2022-2023. All rights reserved.
+#===============================================================================
+set(COMPONENT_NAME "AIsyscall")
+
+set(SOURCES
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/syscall.c
+)
+
+set(PUBLIC_HEADER
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/..
+ ${CMAKE_CURRENT_SOURCE_DIR}/../AIsdk/include
+
+)
+set(PRIVATE_HEADER
+ ${ROOT_DIR}/open_source/openharmony/drivers/peripheral/display/interfaces/include
+ ${ROOT_DIR}/middleware/utils/update/inner_include
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits
+ ${ROOT_DIR}/open_source/openharmony/utils/native/lite/include
+ ${ROOT_DIR}/middleware/services/gui/uikit/surface/interfaces/kits
+ ${ROOT_DIR}/open_source/openharmony/utils/native/lite/kv_store/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits/gfx_utils
+ ${ROOT_DIR}/middleware/services/media/foundation/player/interfaces/kits
+ ${ROOT_DIR}/application/wearable/nativeapp/nativeui/key/include
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits/font
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/frameworks/font
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/frameworks
+
+ ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/src/utils/innerkits
+ ${ROOT_DIR}/zhihui/services/factorytest_service
+ ${ROOT_DIR}/zhihui/drivers/
+ ${ROOT_DIR}/zhihui/4g/cat1Service/include
+ ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include
+ ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/include
+ # /home/hcj/615/FD230/code/sdk/application/wearable/nativeapp/nativeui/player/include/PlayersPresenter.h
+ # /home/hcj/615/FD230/code/sdk/middleware/services/gui/uikit/ui/frameworks/font/glyphs_manager.h
+ # /home/hcj/615/FD230/code/sdk//UiServersMsg.h
+)
+# /home/hcj/615/FD230/code/sdk/
+
+
+set(PRIVATE_DEFINES
+ TARGET_NAME="${TARGET_COMMAND}"
+ BUILD_TIME="${BUILD_TIME}"
+)
+
+set(PUBLIC_DEFINES
+)
+
+# use this when you want to add ccflags like -include xxx
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+ -Wno-error
+ -Wno-unused-parameter
+ -fno-exceptions
+ -fno-unwind-tables
+ -fno-asynchronous-unwind-tables
+ -Wno-undef
+ -Wno-bitwise-op-parentheses
+ -Wno-shift-op-parentheses
+ -nostdlibinc
+ -nostdinc
+ -nostdlib
+ -Wno-c++11-narrowing
+ -Wno-error=unused-function
+)
+set(WHOLE_LINK
+ true
+)
+
+set(MAIN_COMPONENT
+ false
+)
+
+build_component()
#include "zj_type.h"
#include "zj_err.h"
-#include "zj_syscall.h"
+// #include "zj_syscall.h"
// ÒÔÏÂÉùÃ÷µÄϵͳµ÷Óûص÷º¯Êý¾ùÓɳ§ÉÌʵÏÖ ³§ÉÌʵÏÖ±ê¼Ç
/***********************************************************************************/
--- /dev/null
+#===============================================================================
+# @brief cmake file
+# Copyright (c) @CompanyNameMagicTag 2022-2023. All rights reserved.
+#===============================================================================
+set(COMPONENT_NAME "AIsystem")
+
+set(SOURCES
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/system.c
+)
+
+set(PUBLIC_HEADER
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/..
+ ${CMAKE_CURRENT_SOURCE_DIR}/../AIsdk/include
+)
+set(PRIVATE_HEADER
+ ${ROOT_DIR}/open_source/openharmony/drivers/peripheral/display/interfaces/include
+ ${ROOT_DIR}/middleware/utils/update/inner_include
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits
+ ${ROOT_DIR}/open_source/openharmony/utils/native/lite/include
+ ${ROOT_DIR}/middleware/services/gui/uikit/surface/interfaces/kits
+ ${ROOT_DIR}/open_source/openharmony/utils/native/lite/kv_store/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits/gfx_utils
+ ${ROOT_DIR}/middleware/services/media/foundation/player/interfaces/kits
+ ${ROOT_DIR}/application/wearable/nativeapp/nativeui/key/include
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits/font
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/frameworks/font
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/frameworks
+
+ ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/src/utils/innerkits
+ ${ROOT_DIR}/zhihui/services/factorytest_service
+ ${ROOT_DIR}/zhihui/drivers/
+ ${ROOT_DIR}/zhihui/4g/cat1Service/include
+ ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include
+ ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/include
+ # /home/hcj/615/FD230/code/sdk/application/wearable/nativeapp/nativeui/player/include/PlayersPresenter.h
+ # /home/hcj/615/FD230/code/sdk/middleware/services/gui/uikit/ui/frameworks/font/glyphs_manager.h
+ # /home/hcj/615/FD230/code/sdk//UiServersMsg.h
+)
+# /home/hcj/615/FD230/code/sdk/
+
+
+set(PRIVATE_DEFINES
+ TARGET_NAME="${TARGET_COMMAND}"
+ BUILD_TIME="${BUILD_TIME}"
+)
+
+set(PUBLIC_DEFINES
+)
+
+# use this when you want to add ccflags like -include xxx
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+ -Wno-error
+ -Wno-unused-parameter
+ -fno-exceptions
+ -fno-unwind-tables
+ -fno-asynchronous-unwind-tables
+ -Wno-undef
+ -Wno-bitwise-op-parentheses
+ -Wno-shift-op-parentheses
+ -nostdlibinc
+ -nostdinc
+ -nostdlib
+ -Wno-c++11-narrowing
+ -Wno-error=unused-function
+)
+set(WHOLE_LINK
+ true
+)
+
+set(MAIN_COMPONENT
+ false
+)
+
+build_component()
#define APPID "2lKQKUjba6vXsCOW"
#define CTEI "YNWHMY250430CKAJ"
#else
-// 厂商需要自己申请三码
-#define COMPANYID "xxxxxxxxxxxxxxxx"
-#define APPID "xxxxxxxxxxxxxxxx"
-#define CTEI "xxxxxxxxxxxxxxxx"
+
+#define COMPANYID "auexhqe13em49cdv"
+#define APPID "x3rUHuYTsSOiiS5J"
+#define CTEI "J4LHYY250825DJAO"
#endif
#define DEVMODEL "TEST_AGENT_001"
#define APPVERSION "ZJ_ARM8852_0530_01_202004131758"
--- /dev/null
+add_subdirectory_if_exist(AIsystem)
+add_subdirectory_if_exist(AIagent)
+add_subdirectory_if_exist(AIota)
+add_subdirectory_if_exist(AIsdk)
+add_subdirectory_if_exist(AImain)
add_subdirectory_if_exist(drivers)
add_subdirectory_if_exist(config)
add_subdirectory_if_exist(UI)
+add_subdirectory_if_exist(AI)
if("TEST_4G_SDK" IN_LIST DEFINES)
add_subdirectory_if_exist(4gsdk)
void (*ble_connect_ok)(void);
void (*ble_disconnect_ok)(void);
+
void (*hand_watch_first_time_Paired)(void);
bool (*ble_bin_install)(const char * data);
${ROOT_DIR}/middleware/services/gui/uikit/ui/frameworks/dock/
${ROOT_DIR}/zhihui/UI/producttest/include
${ROOT_DIR}/zhihui/UI
+ ${ROOT_DIR}/zhihui/AI/AImain
)
if("FD230" IN_LIST DEFINES)
#endif
+
static uint32_t BLE_TEST(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
{
UNUSED(strCommonCmd);
printf("BLE_TEST END \n");
return ERRCODE_SUCC;
}
+#include "uapi_ai_function.h"
+
+
+static uint32_t AI_TEST(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+ UNUSED(strCommonCmd);
+ uint8_t argv[CUSTOM_UTILS_MAX_ARGC][CUSTOM_UTILS_MAX_ARGV_LEN] = {0};
+ uint32_t argc = 0;
+
+ int ret = ConvertCmdToParam(para, paraLen, argv, &argc);
+ if (ret != CUSTOM_UTILS_SUCCESS)
+ {
+ wstp_print("CUSTOM_UTILSTEST ATCMD Convert Command Failed\n");
+ return ERRCODE_FAIL;
+ }
+ printf("BLE_TEST \n");
+
+ uint8_t type =atoi( (char *)argv[0]);
+ // uint8_t type_2= atoi( (char *)argv[1]);
+
+ switch (type)
+ {
+ case 0:
+ uapi_CT_ai_init();
+ break;
+
+ default:
+ break;
+ }
+ printf("BLE_TEST END \n");
+ return ERRCODE_SUCC;
+}
+
+
static uint32_t custom_volume_test(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
{
{ (char *)"AT^AUTOOTACHECK", send_check_ota_atuoota, (char *)" " },
{ (char *)"AT^POWEROFF", custom_at_poweroff, (char *)" " },
{ (char *)"AT^GPIO", custom_at_gpio, (char *)" " },
+ { (char *)"AT^AITEST", AI_TEST, (char *)" " },
+
};