From: hcj <1224667075@qq.com> Date: Mon, 25 Aug 2025 04:26:04 +0000 (+0800) Subject: 中间版本 X-Git-Tag: leiniao_debug_1.0.0_20250922_020716~99^2~31 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=ab7944010ef611be45196060658d4b0477a905f1;p=mirrors%2FFD230.git 中间版本 --- diff --git a/code/sdk/application/brandy/brandy_standard/thread_pri_init.c b/code/sdk/application/brandy/brandy_standard/thread_pri_init.c index ce6996b57..c1fd48725 100644 --- a/code/sdk/application/brandy/brandy_standard/thread_pri_init.c +++ b/code/sdk/application/brandy/brandy_standard/thread_pri_init.c @@ -555,9 +555,11 @@ static void thread_main(const void *unused) /*启动蓝牙ble服务,cywee有重置 mac地址的操作,会需要把 蓝牙服务开启放在cywee服务之后*/ #ifdef CUSTOM_UTILS - + start_custom_ble_service(); #endif -start_custom_ble_service(); + + + #ifdef SUPPORT_ALIPAY_SEC #if !defined(A5133_DEMO_SERVER) && !defined(A5133_DEMO_CLIENT) uapi_alipay_svr_init(); diff --git a/code/sdk/build/config/target_config/brandy/config.py b/code/sdk/build/config/target_config/brandy/config.py index f2cbfba48..4de5befd2 100644 --- a/code/sdk/build/config/target_config/brandy/config.py +++ b/code/sdk/build/config/target_config/brandy/config.py @@ -395,6 +395,7 @@ target = { 'SUPPORT_CYWEE_SERVICE', 'SUPPORT_BATTERY_SERVICE', 'FD230', + 'SUPPORT_AT_OHOSFWK', # 'SUPPORT_AUTO_OTA_SERVER', # 'CONFIG_DFX_SUPPORT_DIAG_UP_MACHINE=1', #"MEM_CHECK", @@ -437,6 +438,12 @@ target = { "ppg_service", "cywee_service", "batterry_service", + "AIsystem", + "AImain", + # "AIsyscall", + "AIagent", + "AIota", + "AIsdk", "bleservice", "blemoder", "transspecard", diff --git a/code/sdk/zhihui/AI/AIagent/CMakeLists.txt b/code/sdk/zhihui/AI/AIagent/CMakeLists.txt new file mode 100644 index 000000000..eb73e593c --- /dev/null +++ b/code/sdk/zhihui/AI/AIagent/CMakeLists.txt @@ -0,0 +1,82 @@ +#=============================================================================== +# @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() diff --git a/code/sdk/zhihui/AI/agent/include/agent.h b/code/sdk/zhihui/AI/AIagent/include/agent.h similarity index 100% rename from code/sdk/zhihui/AI/agent/include/agent.h rename to code/sdk/zhihui/AI/AIagent/include/agent.h diff --git a/code/sdk/zhihui/AI/agent/src/agent.c b/code/sdk/zhihui/AI/AIagent/src/agent.c similarity index 97% rename from code/sdk/zhihui/AI/agent/src/agent.c rename to code/sdk/zhihui/AI/AIagent/src/agent.c index 90b3d43e1..ba1971485 100644 --- a/code/sdk/zhihui/AI/agent/src/agent.c +++ b/code/sdk/zhihui/AI/AIagent/src/agent.c @@ -223,14 +223,14 @@ static int agent_text_data_cb(unsigned int uiReqID, unsigned char* pucTextBuff, 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"); } diff --git a/code/sdk/zhihui/AI/AImain/AI_mian.c b/code/sdk/zhihui/AI/AImain/AI_mian.c new file mode 100644 index 000000000..33bc02e41 --- /dev/null +++ b/code/sdk/zhihui/AI/AImain/AI_mian.c @@ -0,0 +1,376 @@ +#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); + +} + diff --git a/code/sdk/zhihui/AI/AImain/CMakeLists.txt b/code/sdk/zhihui/AI/AImain/CMakeLists.txt new file mode 100644 index 000000000..7c3bd9ef3 --- /dev/null +++ b/code/sdk/zhihui/AI/AImain/CMakeLists.txt @@ -0,0 +1,81 @@ +#=============================================================================== +# @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() diff --git a/code/sdk/zhihui/AI/AImain/uapi_ai_function.h b/code/sdk/zhihui/AI/AImain/uapi_ai_function.h new file mode 100644 index 000000000..55ebe19d1 --- /dev/null +++ b/code/sdk/zhihui/AI/AImain/uapi_ai_function.h @@ -0,0 +1,8 @@ +#ifndef AI_FUNCTION_H +#define AI_FUNCTION_H + + +void uapi_CT_ai_init(void); + + +#endif \ No newline at end of file diff --git a/code/sdk/zhihui/AI/AIota/CMakeLists.txt b/code/sdk/zhihui/AI/AIota/CMakeLists.txt new file mode 100644 index 000000000..4ed797529 --- /dev/null +++ b/code/sdk/zhihui/AI/AIota/CMakeLists.txt @@ -0,0 +1,82 @@ +#=============================================================================== +# @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() diff --git a/code/sdk/zhihui/AI/ota/include/ota.h b/code/sdk/zhihui/AI/AIota/include/ota.h similarity index 100% rename from code/sdk/zhihui/AI/ota/include/ota.h rename to code/sdk/zhihui/AI/AIota/include/ota.h diff --git a/code/sdk/zhihui/AI/ota/src/ota.c b/code/sdk/zhihui/AI/AIota/src/ota.c similarity index 100% rename from code/sdk/zhihui/AI/ota/src/ota.c rename to code/sdk/zhihui/AI/AIota/src/ota.c diff --git a/code/sdk/zhihui/AI/AIsdk/CMakeLists.txt b/code/sdk/zhihui/AI/AIsdk/CMakeLists.txt new file mode 100644 index 000000000..f45374143 --- /dev/null +++ b/code/sdk/zhihui/AI/AIsdk/CMakeLists.txt @@ -0,0 +1,89 @@ +#=============================================================================== +# @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() diff --git a/code/sdk/zhihui/AI/AIsdk/include/main_include.h b/code/sdk/zhihui/AI/AIsdk/include/main_include.h new file mode 100644 index 000000000..b24fdee3d --- /dev/null +++ b/code/sdk/zhihui/AI/AIsdk/include/main_include.h @@ -0,0 +1,39 @@ +#ifndef MAIN_INCLUDE_H +#define MAIN_INCLUDE_H + +#include + +#include +#include +#include +#include +#include +#include +#include +#include "osal_task.h" +#include "lwip/arch.h" +#include "lwip/sockets.h" +#include +#include +#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 diff --git a/code/sdk/zhihui/AI/AIsdk/include/zj_aiagent.h b/code/sdk/zhihui/AI/AIsdk/include/zj_aiagent.h new file mode 100644 index 000000000..f5a67cdc2 --- /dev/null +++ b/code/sdk/zhihui/AI/AIsdk/include/zj_aiagent.h @@ -0,0 +1,439 @@ +#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 + + diff --git a/code/sdk/zhihui/AI/AIsdk/include/zj_err.h b/code/sdk/zhihui/AI/AIsdk/include/zj_err.h new file mode 100644 index 000000000..cc8293be1 --- /dev/null +++ b/code/sdk/zhihui/AI/AIsdk/include/zj_err.h @@ -0,0 +1,235 @@ +#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 + + + diff --git a/code/sdk/zhihui/AI/AIsdk/include/zj_log.h b/code/sdk/zhihui/AI/AIsdk/include/zj_log.h new file mode 100644 index 000000000..4df6a2e25 --- /dev/null +++ b/code/sdk/zhihui/AI/AIsdk/include/zj_log.h @@ -0,0 +1,61 @@ +#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 diff --git a/code/sdk/zhihui/AI/AIsdk/include/zj_network.h b/code/sdk/zhihui/AI/AIsdk/include/zj_network.h new file mode 100644 index 000000000..b05cfff77 --- /dev/null +++ b/code/sdk/zhihui/AI/AIsdk/include/zj_network.h @@ -0,0 +1,28 @@ +#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 diff --git a/code/sdk/zhihui/AI/AIsdk/include/zj_ota.h b/code/sdk/zhihui/AI/AIsdk/include/zj_ota.h new file mode 100644 index 000000000..84bde5dd2 --- /dev/null +++ b/code/sdk/zhihui/AI/AIsdk/include/zj_ota.h @@ -0,0 +1,45 @@ +#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 diff --git a/code/sdk/zhihui/AI/AIsdk/include/zj_system.h b/code/sdk/zhihui/AI/AIsdk/include/zj_system.h new file mode 100644 index 000000000..842bbbe1b --- /dev/null +++ b/code/sdk/zhihui/AI/AIsdk/include/zj_system.h @@ -0,0 +1,149 @@ +#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 diff --git a/code/sdk/zhihui/AI/AIsdk/include/zj_type.h b/code/sdk/zhihui/AI/AIsdk/include/zj_type.h new file mode 100644 index 000000000..49ddcc734 --- /dev/null +++ b/code/sdk/zhihui/AI/AIsdk/include/zj_type.h @@ -0,0 +1,132 @@ +#ifndef _ZJ_TYPE_H_ +#define _ZJ_TYPE_H_ + +// #include + +#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 + + + diff --git a/code/sdk/zhihui/AI/AIsdk/lib/libcommon.a b/code/sdk/zhihui/AI/AIsdk/lib/libcommon.a new file mode 100644 index 000000000..2caf57a80 Binary files /dev/null and b/code/sdk/zhihui/AI/AIsdk/lib/libcommon.a differ diff --git a/code/sdk/zhihui/AI/AIsdk/lib/libcos.a b/code/sdk/zhihui/AI/AIsdk/lib/libcos.a new file mode 100644 index 000000000..59bc592c4 Binary files /dev/null and b/code/sdk/zhihui/AI/AIsdk/lib/libcos.a differ diff --git a/code/sdk/zhihui/AI/AIsdk/lib/libthirdparty.a b/code/sdk/zhihui/AI/AIsdk/lib/libthirdparty.a new file mode 100644 index 000000000..bb4215f99 Binary files /dev/null and b/code/sdk/zhihui/AI/AIsdk/lib/libthirdparty.a differ diff --git a/code/sdk/zhihui/AI/AIsyscall/CMakeLists.txt b/code/sdk/zhihui/AI/AIsyscall/CMakeLists.txt new file mode 100644 index 000000000..d1d7eabdf --- /dev/null +++ b/code/sdk/zhihui/AI/AIsyscall/CMakeLists.txt @@ -0,0 +1,83 @@ +#=============================================================================== +# @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() diff --git a/code/sdk/zhihui/AI/syscall/include/syscall.h b/code/sdk/zhihui/AI/AIsyscall/include/syscall.h similarity index 100% rename from code/sdk/zhihui/AI/syscall/include/syscall.h rename to code/sdk/zhihui/AI/AIsyscall/include/syscall.h diff --git a/code/sdk/zhihui/AI/syscall/src/syscall.c b/code/sdk/zhihui/AI/AIsyscall/src/syscall.c similarity index 99% rename from code/sdk/zhihui/AI/syscall/src/syscall.c rename to code/sdk/zhihui/AI/AIsyscall/src/syscall.c index ac38f73d7..07fe4e435 100644 --- a/code/sdk/zhihui/AI/syscall/src/syscall.c +++ b/code/sdk/zhihui/AI/AIsyscall/src/syscall.c @@ -17,7 +17,7 @@ #include "zj_type.h" #include "zj_err.h" -#include "zj_syscall.h" +// #include "zj_syscall.h" // ÒÔÏÂÉùÃ÷µÄϵͳµ÷Óûص÷º¯Êý¾ùÓɳ§ÉÌʵÏÖ ³§ÉÌʵÏÖ±ê¼Ç /***********************************************************************************/ diff --git a/code/sdk/zhihui/AI/AIsystem/CMakeLists.txt b/code/sdk/zhihui/AI/AIsystem/CMakeLists.txt new file mode 100644 index 000000000..437cb6120 --- /dev/null +++ b/code/sdk/zhihui/AI/AIsystem/CMakeLists.txt @@ -0,0 +1,82 @@ +#=============================================================================== +# @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() diff --git a/code/sdk/zhihui/AI/system/include/system.h b/code/sdk/zhihui/AI/AIsystem/include/system.h similarity index 82% rename from code/sdk/zhihui/AI/system/include/system.h rename to code/sdk/zhihui/AI/AIsystem/include/system.h index 9ed07d06d..c0dcbb0ab 100644 --- a/code/sdk/zhihui/AI/system/include/system.h +++ b/code/sdk/zhihui/AI/AIsystem/include/system.h @@ -11,10 +11,10 @@ #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" diff --git a/code/sdk/zhihui/AI/system/src/system.c b/code/sdk/zhihui/AI/AIsystem/src/system.c similarity index 100% rename from code/sdk/zhihui/AI/system/src/system.c rename to code/sdk/zhihui/AI/AIsystem/src/system.c diff --git a/code/sdk/zhihui/AI/CMakeLists.txt b/code/sdk/zhihui/AI/CMakeLists.txt new file mode 100644 index 000000000..62370a036 --- /dev/null +++ b/code/sdk/zhihui/AI/CMakeLists.txt @@ -0,0 +1,5 @@ +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) diff --git a/code/sdk/zhihui/CMakeLists.txt b/code/sdk/zhihui/CMakeLists.txt index 2ad2f1472..0f601843d 100644 --- a/code/sdk/zhihui/CMakeLists.txt +++ b/code/sdk/zhihui/CMakeLists.txt @@ -9,6 +9,7 @@ add_subdirectory_if_exist(utilscpp) 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) diff --git a/code/sdk/zhihui/services/ble_service/blemoder/bleInstruct.h b/code/sdk/zhihui/services/ble_service/blemoder/bleInstruct.h index 7b34ee45a..4bf6d963f 100644 --- a/code/sdk/zhihui/services/ble_service/blemoder/bleInstruct.h +++ b/code/sdk/zhihui/services/ble_service/blemoder/bleInstruct.h @@ -621,6 +621,7 @@ typedef struct bleInstruct void (*ble_connect_ok)(void); void (*ble_disconnect_ok)(void); + void (*hand_watch_first_time_Paired)(void); bool (*ble_bin_install)(const char * data); diff --git a/code/sdk/zhihui/utils/CMakeLists.txt b/code/sdk/zhihui/utils/CMakeLists.txt index 3e07c671e..a7c19cfbc 100644 --- a/code/sdk/zhihui/utils/CMakeLists.txt +++ b/code/sdk/zhihui/utils/CMakeLists.txt @@ -45,6 +45,7 @@ set(PRIVATE_HEADER ${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) diff --git a/code/sdk/zhihui/utils/custom_utils_at_cmd.c b/code/sdk/zhihui/utils/custom_utils_at_cmd.c index 67ff68920..aff854134 100644 --- a/code/sdk/zhihui/utils/custom_utils_at_cmd.c +++ b/code/sdk/zhihui/utils/custom_utils_at_cmd.c @@ -959,6 +959,7 @@ static uint32_t PBAP_LS(uint8_t *para, uint32_t paraLen, char *strCommonCmd) #endif + static uint32_t BLE_TEST(uint8_t *para, uint32_t paraLen, char *strCommonCmd) { UNUSED(strCommonCmd); @@ -1055,6 +1056,40 @@ static uint32_t BLE_TEST(uint8_t *para, uint32_t paraLen, char *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) { @@ -1490,6 +1525,8 @@ static const at_cmd_table_t g_custom_utils_cmd[] = { { (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 *)" " }, + };