作者 ookk303

dev 2.22更新

正在显示 67 个修改的文件 包含 2664 行增加678 行删除

要显示太多修改。

为保证性能只显示 67 of 67+ 个文件。

@@ -26,8 +26,10 @@ project_build/GDU_普宙PSDK @@ -26,8 +26,10 @@ project_build/GDU_普宙PSDK
26 # !project_build/DJI_大疆PSDK/samples/sample_c/platform/linux/all/hal 26 # !project_build/DJI_大疆PSDK/samples/sample_c/platform/linux/all/hal
27 # !project_build/DJI_大疆PSDK/samples/sample_c/platform/linux/all/CMakeLists.txt 27 # !project_build/DJI_大疆PSDK/samples/sample_c/platform/linux/all/CMakeLists.txt
28 28
29 -project_build/Payload-SDK-release-v3.11.0/* 29 +project_build/Payload-SDK-release-v3.12.0/*
  30 +
30 project_build/特殊固件 31 project_build/特殊固件
  32 +project_build/DJI_Test
31 33
32 34
33 # project_build/Attention_提示程序 35 # project_build/Attention_提示程序
@@ -146,7 +146,15 @@ @@ -146,7 +146,15 @@
146 "jzsdk_expansionapi.h": "c", 146 "jzsdk_expansionapi.h": "c",
147 "test_widget_speaker.h": "c", 147 "test_widget_speaker.h": "c",
148 "dji_expansion.h": "c", 148 "dji_expansion.h": "c",
149 - "test_widget.h": "c" 149 + "test_widget.h": "c",
  150 + "jzc1.h": "c",
  151 + "msp_errors.h": "c",
  152 + "megaphone_tts.h": "c",
  153 + "qtts.h": "c",
  154 + "msp_cmn.h": "c",
  155 + "ctype.h": "c",
  156 + "intl_interface.h": "c",
  157 + "iflytek_1.h": "c"
150 }, 158 },
151 "Codegeex.GenerationPreference": "automatic", 159 "Codegeex.GenerationPreference": "automatic",
152 "C_Cpp.dimInactiveRegions": false, 160 "C_Cpp.dimInactiveRegions": false,
1 # 编译链的配置 1 # 编译链的配置
2 2
3 #1、编译链与设备类型的选择 3 #1、编译链与设备类型的选择
4 -set(DEVICE_NAME JZ_H150G) 4 +set(DEVICE_NAME JZ_H150S)
5 #上一行为禁止修改行 5 #上一行为禁止修改行
6 6
7 message("**************************JZSDK构建编译开始***************************\n") 7 message("**************************JZSDK构建编译开始***************************\n")
@@ -34,6 +34,8 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_ST") @@ -34,6 +34,8 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_ST")
34 set(MAKE_COMPILER ARM_X86_64_ARRCH64) 34 set(MAKE_COMPILER ARM_X86_64_ARRCH64)
35 elseif("${DEVICE_NAME}" STREQUAL "JZ_H150G") 35 elseif("${DEVICE_NAME}" STREQUAL "JZ_H150G")
36 set(MAKE_COMPILER LINARO_ARM_CORTEX_LINUX) 36 set(MAKE_COMPILER LINARO_ARM_CORTEX_LINUX)
  37 +elseif("${DEVICE_NAME}" STREQUAL "JZ_T40")
  38 + set(MAKE_COMPILER LINARO_ARM_CORTEX_LINUX)
37 endif() 39 endif()
38 40
39 if(${MAKE_COMPILER} STREQUAL "ARM_CORTEXA9_LINUX") 41 if(${MAKE_COMPILER} STREQUAL "ARM_CORTEXA9_LINUX")
@@ -73,6 +73,30 @@ if(${LIGHTING_MODULE} STREQUAL "VERSION_SWITCH_ON") @@ -73,6 +73,30 @@ if(${LIGHTING_MODULE} STREQUAL "VERSION_SWITCH_ON")
73 73
74 endif() 74 endif()
75 75
  76 +#如果要加载探照灯模块,需要加载以下附属内容
  77 +if(${SEARCHLIGHT_MODULE} STREQUAL "VERSION_SWITCH_ON")
  78 + message("\n探照灯模块加载中")
  79 +
  80 + #打开探照灯的代码编译部分
  81 + add_definitions(-DMACRO_SEARCHLIGHT_MODULE)
  82 +
  83 + #将探照灯的源代码加入编译中
  84 + file(GLOB_RECURSE SEARCHLIGHT_SRC ${ROOT_DIRS}Module/SearchLight/*.c)
  85 + list(APPEND ALL_SRC_FILES ${SEARCHLIGHT_SRC})
  86 +
  87 +endif()
  88 +
  89 +#如果要加载侧面激光模块,需要加载以下附属内容
  90 +if(${SIDE_LASER_MODULE} STREQUAL "VERSION_SWITCH_ON")
  91 + message("\n侧面激光模块加载中")
  92 +
  93 + #打开侧面激光的代码编译部分
  94 + add_definitions(-DMACRO_SIDE_LASER_MODULE)
  95 +
  96 + file(GLOB_RECURSE MODULE_SIDE_LASER_SRC ${ROOT_DIRS}Module/SideLaser/*.c)
  97 + list(APPEND ALL_SRC_FILES ${MODULE_SIDE_LASER_SRC})
  98 +endif()
  99 +
76 #如果要加载媒体管理模块,需要加载以下附属内容 100 #如果要加载媒体管理模块,需要加载以下附属内容
77 if(${MEDIA_PROC_MODULE} STREQUAL "VERSION_SWITCH_ON") 101 if(${MEDIA_PROC_MODULE} STREQUAL "VERSION_SWITCH_ON")
78 message("\n媒体管理模块加载中") 102 message("\n媒体管理模块加载中")
@@ -135,11 +159,23 @@ if(${MEGAPHONE_MODULE} STREQUAL "VERSION_SWITCH_ON") @@ -135,11 +159,23 @@ if(${MEGAPHONE_MODULE} STREQUAL "VERSION_SWITCH_ON")
135 file(GLOB_RECURSE MEGAPHONE_SRC ${ROOT_DIRS}Module/Megaphone/*.c) 159 file(GLOB_RECURSE MEGAPHONE_SRC ${ROOT_DIRS}Module/Megaphone/*.c)
136 list(APPEND ALL_SRC_FILES ${MEGAPHONE_SRC}) 160 list(APPEND ALL_SRC_FILES ${MEGAPHONE_SRC})
137 161
138 - message("加载讯飞TTS模块")  
139 - set(IFLAY_TTS_MODULE VERSION_SWITCH_ON) 162 + #加载tts模块
  163 + if(TTS_MODULE STREQUAL "JZ_TTS_MODULE_1" )
  164 +
  165 + message("加载讯飞一代TTS模块")
  166 + add_definitions(-DMACRO_IFLAY_TTS_1_MODULE)
140 167
141 message("加载espeak模块") 168 message("加载espeak模块")
142 - set(ESPEAK_TTS_MODULE VERSION_SWITCH_ON) 169 + add_definitions(-DMACRO_ESPEAK_TTS_MODULE)
  170 +
  171 + elseif(TTS_MODULE STREQUAL "JZ_TTS_MODULE_2" )
  172 +
  173 + message("加载讯飞二代TTS模块")
  174 + add_definitions(-DMACRO_IFLAY_TTS_2_MODULE)
  175 + file(GLOB_RECURSE IFLTTEK_2_SRC ${ROOT_DIRS}Module/Megaphone/TTS/iflytek_2/*.cpp)
  176 + list(APPEND ALL_SRC_FILES ${IFLTTEK_2_SRC})
  177 +
  178 + endif()
143 179
144 message("加载alsalib模块") 180 message("加载alsalib模块")
145 set(ALSALIB_MODULE VERSION_SWITCH_ON) 181 set(ALSALIB_MODULE VERSION_SWITCH_ON)
@@ -148,6 +184,7 @@ if(${MEGAPHONE_MODULE} STREQUAL "VERSION_SWITCH_ON") @@ -148,6 +184,7 @@ if(${MEGAPHONE_MODULE} STREQUAL "VERSION_SWITCH_ON")
148 set(OPUS_MODULE VERSION_SWITCH_ON) 184 set(OPUS_MODULE VERSION_SWITCH_ON)
149 endif() 185 endif()
150 186
  187 +
151 #如果要加载通用模块,需要加载以下附属内容 188 #如果要加载通用模块,需要加载以下附属内容
152 if(${COMMON_MODULE} STREQUAL "VERSION_SWITCH_ON") 189 if(${COMMON_MODULE} STREQUAL "VERSION_SWITCH_ON")
153 190
@@ -165,16 +202,7 @@ if(${EXTENSION_API_MODULE} STREQUAL "VERSION_SWITCH_ON") @@ -165,16 +202,7 @@ if(${EXTENSION_API_MODULE} STREQUAL "VERSION_SWITCH_ON")
165 list(APPEND ALL_SRC_FILES ${EXTENSION_API_MODULE_SRC}) 202 list(APPEND ALL_SRC_FILES ${EXTENSION_API_MODULE_SRC})
166 endif() 203 endif()
167 204
168 -#如果要加载侧面激光模块,需要加载以下附属内容  
169 -if(${SIDE_LASER_MODULE} STREQUAL "VERSION_SWITCH_ON")  
170 - message("\n侧面激光模块加载中")  
171 -  
172 - #打开侧面激光的代码编译部分  
173 - add_definitions(-DMACRO_SIDE_LASER_MODULE)  
174 205
175 - file(GLOB_RECURSE MODULE_SIDE_LASER_SRC ${ROOT_DIRS}Module/SideLaser/*.c)  
176 - list(APPEND ALL_SRC_FILES ${MODULE_SIDE_LASER_SRC})  
177 -endif()  
178 206
179 #如果要加载UI模块,需要加载以下附属内容 207 #如果要加载UI模块,需要加载以下附属内容
180 if(${UI_CONTROL_MODULE} STREQUAL "VERSION_SWITCH_ON") 208 if(${UI_CONTROL_MODULE} STREQUAL "VERSION_SWITCH_ON")
@@ -15,13 +15,26 @@ set(GIMBAL_MODULE VERSION_SWITCH_OFF) @@ -15,13 +15,26 @@ set(GIMBAL_MODULE VERSION_SWITCH_OFF)
15 # IRCUT 引脚处理模块 15 # IRCUT 引脚处理模块
16 set(IRCUT_MODULE VERSION_SWITCH_OFF) 16 set(IRCUT_MODULE VERSION_SWITCH_OFF)
17 17
  18 +############### 光源模块 ##########################
  19 +
18 # LIGHTING 光源处理模块 20 # LIGHTING 光源处理模块
19 set(LIGHTING_MODULE VERSION_SWITCH_OFF) 21 set(LIGHTING_MODULE VERSION_SWITCH_OFF)
20 22
  23 +# SEARCHLIGHT 探照灯处理模块
  24 +set(SEARCHLIGHT_MODULE VERSION_SWITCH_OFF)
  25 +
  26 +################ 喊话器模块 #######################
21 27
22 # 喊话器模块 28 # 喊话器模块
23 set(MEGAPHONE_MODULE VERSION_SWITCH_OFF) 29 set(MEGAPHONE_MODULE VERSION_SWITCH_OFF)
24 30
  31 +# TTS模块
  32 +set(TTS_MODULE JZ_TTS_MODULE_1)
  33 +
  34 +##################################################
  35 +
  36 +
  37 +
25 # 电源管理模块 38 # 电源管理模块
26 set(COMMON_MODULE VERSION_SWITCH_OFF) 39 set(COMMON_MODULE VERSION_SWITCH_OFF)
27 40
@@ -377,6 +390,35 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_H150G") @@ -377,6 +390,35 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_H150G")
377 list(APPEND ALL_SRC_FILES ${DEVICE_CONFOG_SRC}) 390 list(APPEND ALL_SRC_FILES ${DEVICE_CONFOG_SRC})
378 391
379 message("JZ_H150G基础配置完毕\n") 392 message("JZ_H150G基础配置完毕\n")
  393 +
  394 +elseif("${DEVICE_NAME}" STREQUAL "JZ_T40")
  395 +
  396 + # 添加Gimbal 云台处理模块
  397 + set(GIMBAL_MODULE VERSION_SWITCH_ON)
  398 +
  399 + # 添加LIGHTING 光源处理模块
  400 + set(LIGHTING_MODULE VERSION_SWITCH_ON)
  401 +
  402 + # 添加探照灯模块
  403 + set(SEARCHLIGHT_MODULE VERSION_SWITCH_ON)
  404 +
  405 + # 添加AudioDeal 音频处理模块
  406 + set(AUDIODEAL_MODULE VERSION_SWITCH_ON)
  407 +
  408 + # 添加喊话器模块
  409 + set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
  410 +
  411 + # 添加TTS模块
  412 + set(TTS_MODULE JZ_TTS_MODULE_2)
  413 +
  414 + # 添加FFMPEG及其附属模块
  415 + set(FFMPEG_MODULE VERSION_SWITCH_ON)
  416 +
  417 + #设备独立配置源文件
  418 + file(GLOB_RECURSE DEVICE_CONFOG_SRC ${ROOT_DIRS}JZsdk_Config/DeviceSample/JZ_T40/*.c)
  419 + list(APPEND ALL_SRC_FILES ${DEVICE_CONFOG_SRC})
  420 +
  421 + message("JZ_T40基础配置完毕\n")
380 endif() 422 endif()
381 423
382 message("***********************模组模块配置完毕*********************************\n") 424 message("***********************模组模块配置完毕*********************************\n")
@@ -3,17 +3,17 @@ @@ -3,17 +3,17 @@
3 # ${ROOT_DIRS}为cmakelist文件提供的工程根目录 3 # ${ROOT_DIRS}为cmakelist文件提供的工程根目录
4 4
5 5
6 -if(${IFLAY_TTS_MODULE} STREQUAL "VERSION_SWITCH_ON")  
7 - set(iFLYTEK_TTS_DIRS "${ROOT_DIRS}ThirdParty/iFLYTEK_TTS/lib/arm-cortexa9-linux-gnueabihf") 6 +if(${TTS_MODULE} STREQUAL "JZ_TTS_MODULE_1")
  7 + set(iFLYTEK_TTS_1_DIRS "${ROOT_DIRS}ThirdParty/iFLYTEK_TTS/lib/arm-cortexa9-linux-gnueabihf")
8 include_directories(${ROOT_DIRS}ThirdParty/iFLYTEK_TTS/include) 8 include_directories(${ROOT_DIRS}ThirdParty/iFLYTEK_TTS/include)
9 target_link_libraries( 9 target_link_libraries(
10 ${PROJECT_NAME} 10 ${PROJECT_NAME}
11 - ${iFLYTEK_TTS_DIRS}/libmsc.so 11 + ${iFLYTEK_TTS_1_DIRS}/libmsc.so
12 ) 12 )
13 - message("讯飞TTS模块已加载\n") 13 + message("讯飞一代TTS模块已加载\n")
14 endif() 14 endif()
15 15
16 -if(${ESPEAK_TTS_MODULE} STREQUAL "VERSION_SWITCH_ON") 16 +if(${TTS_MODULE} STREQUAL "JZ_TTS_MODULE_1")
17 set(ESPEAK_TTS_DIRS "${ROOT_DIRS}ThirdParty/Espeak/lib/arm-cortexa9-linux-gnueabihf") 17 set(ESPEAK_TTS_DIRS "${ROOT_DIRS}ThirdParty/Espeak/lib/arm-cortexa9-linux-gnueabihf")
18 include_directories(${ROOT_DIRS}ThirdParty/Espeak/include) 18 include_directories(${ROOT_DIRS}ThirdParty/Espeak/include)
19 target_link_libraries( 19 target_link_libraries(
@@ -24,6 +24,18 @@ if(${ESPEAK_TTS_MODULE} STREQUAL "VERSION_SWITCH_ON") @@ -24,6 +24,18 @@ if(${ESPEAK_TTS_MODULE} STREQUAL "VERSION_SWITCH_ON")
24 message("Espeak模块已加载\n") 24 message("Espeak模块已加载\n")
25 endif() 25 endif()
26 26
  27 +if(${TTS_MODULE} STREQUAL "JZ_TTS_MODULE_2")
  28 + set(iFLYTEK_TTS_2_DIRS "${ROOT_DIRS}ThirdParty/iFLYTEK_TTS_2/lib/arm-cortexa9-linux-gnueabihf")
  29 + include_directories(${ROOT_DIRS}ThirdParty/iFLYTEK_TTS_2/include)
  30 +
  31 + target_link_libraries(
  32 + ${PROJECT_NAME}
  33 + aikit
  34 + rt
  35 + )
  36 + message("讯飞二代TTS模块已加载\n")
  37 +endif()
  38 +
27 if(${ALSALIB_MODULE} STREQUAL "VERSION_SWITCH_ON") 39 if(${ALSALIB_MODULE} STREQUAL "VERSION_SWITCH_ON")
28 set(ALSALIB_DIRS "${ROOT_DIRS}ThirdParty/AlsaLib/lib/arm-cortexa9-linux-gnueabihf") 40 set(ALSALIB_DIRS "${ROOT_DIRS}ThirdParty/AlsaLib/lib/arm-cortexa9-linux-gnueabihf")
29 include_directories(${ROOT_DIRS}ThirdParty/AlsaLib/include) 41 include_directories(${ROOT_DIRS}ThirdParty/AlsaLib/include)
  1 +message("开始库搜索")
  2 +
  3 +if(${TTS_MODULE} STREQUAL "JZ_TTS_MODULE_2")
  4 + link_directories(${ROOT_DIRS}ThirdParty/iFLYTEK_TTS_2/lib/arm-cortexa9-linux-gnueabihf)
  5 +
  6 + message("讯飞二代TTSLib已搜索\n")
  7 +endif()
@@ -11,3 +11,4 @@ unsigned char *JZsdk_GetDeviceName() @@ -11,3 +11,4 @@ unsigned char *JZsdk_GetDeviceName()
11 { 11 {
12 12
13 } 13 }
  14 +
@@ -29,27 +29,33 @@ @@ -29,27 +29,33 @@
29 #define VERSION_SWITCH_OFF 0x0000 //不加载 29 #define VERSION_SWITCH_OFF 0x0000 //不加载
30 30
31 //设备选择 31 //设备选择
32 -#define JZ_H1E 0x0011 32 +#define JZ_H1E 0x11
33 33
34 -#define JZ_H1T 0x0016 34 +#define JZ_H1T 0x16
35 35
36 -#define JZ_U3 0x0017  
37 -#define JZ_U3S 0x0018  
38 -#define JZ_U3D 0x0019  
39 -#define JZ_U30 0x001A 36 +#define JZ_U3 0x17
  37 +#define JZ_U3S 0x18
  38 +#define JZ_U3D 0x19
  39 +#define JZ_U30 0x1A
  40 +#define JZ_T40 0x1C
  41 +#define JZ_T40_LEFT_GIMBAL 0x1C11
  42 +#define JZ_T40_RIGHT_GIMBAL 0x1C12
  43 +#define JZ_T40_LEFT_LIGHT 0x1C21
  44 +#define JZ_T40_RIGHT_LIGHT 0x1C22
40 45
  46 +#define JZ_H150S 0x13
  47 +#define JZ_H150T 0x15
  48 +#define JZ_H150G 0x20
41 49
42 -#define JZ_H150S 0x0013  
43 -#define JZ_H150T 0x0015  
44 -#define JZ_H150G 0x0020 50 +#define JZ_H10 0x12
  51 +#define JZ_H10T 0x14
45 52
46 -#define JZ_H10 0x0012  
47 -#define JZ_H10T 0x0014  
48 53
49 #define TF_A1 0x1010 54 #define TF_A1 0x1010
50 #define JZ_C1 0x1011 55 #define JZ_C1 0x1011
51 #define JZ_ST 0x1012 56 #define JZ_ST 0x1012
52 57
  58 +
53 /*********************************** 59 /***********************************
54 * 60 *
55 * 已退出历史舞台 61 * 已退出历史舞台
@@ -97,6 +97,12 @@ typedef struct { @@ -97,6 +97,12 @@ typedef struct {
97 F32_t yaw; /*!< Specifies float value of yaw for attitude */ 97 F32_t yaw; /*!< Specifies float value of yaw for attitude */
98 } T_JZsdkAttitude3f; 98 } T_JZsdkAttitude3f;
99 99
  100 +typedef enum E_JZ_SingleCompensationMode{
  101 + JZ_SINGLE_COMPENSATION_MODE_PITCH_LEFT = 0,
  102 + JZ_SINGLE_COMPENSATION_MODE_PITCH_RIGHT = 1,
  103 +}E_JZ_SingleCompensationMode;
  104 +
  105 +
100 /* Exported types ------------------------------------------------------------*/ 106 /* Exported types ------------------------------------------------------------*/
101 107
102 108
@@ -19,7 +19,11 @@ int JZsdk_Get_FrameSequence(char *DealBuf) @@ -19,7 +19,11 @@ int JZsdk_Get_FrameSequence(char *DealBuf)
19 * ***************************/ 19 * ***************************/
20 int JZsdk_Get_FrameLength(char *DealBuf) 20 int JZsdk_Get_FrameLength(char *DealBuf)
21 { 21 {
22 - return ((int)DealBuf[3]) << 8 + DealBuf[4]; 22 + // 转换为 unsigned char 避免符号扩展问题
  23 + unsigned char *buf = (unsigned char *)DealBuf;
  24 +
  25 + // 正确计算:高位字节左移8位 + 低位字节
  26 + return (buf[3] << 8) | buf[4];
23 } 27 }
24 28
25 /*************************** 29 /***************************
@@ -109,6 +109,61 @@ void JZsdk_UserLogOutput(E_JZsdkConsoleLogLevel level, const char *fmt, ...) @@ -109,6 +109,61 @@ void JZsdk_UserLogOutput(E_JZsdkConsoleLogLevel level, const char *fmt, ...)
109 109
110 110
111 111
  112 +void JZsdk_User_OutputHex(E_JZsdkConsoleLogLevel level, const char *fmt, ...)
  113 +{
  114 + // 将日志级别转换为相应的字符串
  115 + const char *JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "";
  116 + switch (level) {
  117 + case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_DEBUG:
  118 + JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "DEBUG";
  119 + break;
  120 + case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_INFO:
  121 + JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "INFO";
  122 + break;
  123 + case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_WARN:
  124 + JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "WARNING";
  125 + break;
  126 + case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_ERROR:
  127 + JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "ERROR";
  128 + break;
  129 + default:
  130 + break;
  131 + }
  132 + // 使用可变参数处理传入的格式化字符串和可变参数
  133 + va_list args;
  134 + va_start(args, fmt);
  135 +
  136 + //格式化日志消息
  137 + char logMessage[10];
  138 + memset(logMessage, 0, sizeof(logMessage));
  139 + vsnprintf(logMessage, sizeof(logMessage), fmt, args);
  140 +
  141 + va_end(args);
  142 +
  143 + // 执行具体的日志输出操作
  144 + char finalLogMessage[512];
  145 + memset(finalLogMessage, 0, sizeof(finalLogMessage));
  146 + snprintf(finalLogMessage, 612, "%s", logMessage);
  147 +
  148 +
  149 + printf("%x ",finalLogMessage[0]);
  150 +
  151 + //写入日志
  152 + //HexToLogFile(finalLogMessage);
  153 +}
  154 +
  155 +
  156 +
  157 +
  158 +
  159 +
  160 +
  161 +
  162 +
  163 +
  164 +
  165 +
  166 +
112 167
113 168
114 169
@@ -325,17 +325,20 @@ static T_JZsdkReturnCode DeviceSample_init(int mode) @@ -325,17 +325,20 @@ static T_JZsdkReturnCode DeviceSample_init(int mode)
325 #if DEVICE_VERSION == JZ_H150G 325 #if DEVICE_VERSION == JZ_H150G
326 JZ_h150g_init(mode); 326 JZ_h150g_init(mode);
327 #endif 327 #endif
328 -}  
329 328
  329 + //T40加载
  330 + #if DEVICE_VERSION == JZ_T40
  331 + JZ_T40_init(mode);
  332 + #endif
  333 +}
330 334
331 -T_JZsdkReturnCode Main_APP_Psdk() 335 +//环境信息加载
  336 +static T_JZsdkReturnCode EquipmentEnvironment_Init()
332 { 337 {
333 - int value[5] = {0, 0, 0, 0, 0};  
334 -  
335 //sdklib加载 338 //sdklib加载
336 JZsdk_LibInit(JZ_FLAGCODE_ON); 339 JZsdk_LibInit(JZ_FLAGCODE_ON);
337 340
338 - //hal加载 341 + //hal信息加载,这里后期需要优化
339 JZsdk_Hal_Init(); 342 JZsdk_Hal_Init();
340 343
341 JZSDK_LOG_INFO("%x,PsdkVersion%d.%d.%d.%d\n",DEVICE_VERSION,MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION); 344 JZSDK_LOG_INFO("%x,PsdkVersion%d.%d.%d.%d\n",DEVICE_VERSION,MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION);
@@ -343,18 +346,20 @@ T_JZsdkReturnCode Main_APP_Psdk() @@ -343,18 +346,20 @@ T_JZsdkReturnCode Main_APP_Psdk()
343 //通用模块初始化 346 //通用模块初始化
344 CommonMod_Init(); 347 CommonMod_Init();
345 348
346 - //引脚初始化  
347 - Ircut_Init();  
348 -  
349 //设备信息初始化 349 //设备信息初始化
350 DeviceInfo_Init(); 350 DeviceInfo_Init();
  351 +}
  352 +
  353 +
  354 +
  355 +T_JZsdkReturnCode Main_APP_Psdk()
  356 +{
  357 + //环境加载
  358 + EquipmentEnvironment_Init();
351 359
352 //工作模式设置函数,用于超时,及播放启动语音等 360 //工作模式设置函数,用于超时,及播放启动语音等
353 Main_WorkMode(); 361 Main_WorkMode();
354 362
355 - //外接传输模块  
356 - JZsdk_data_transmisson_Receive_Init();  
357 -  
358 //设备例程初始化 363 //设备例程初始化
359 DeviceSample_init(APP_PSDK); 364 DeviceSample_init(APP_PSDK);
360 365
@@ -373,23 +378,8 @@ T_JZsdkReturnCode Main_APP_Psdk() @@ -373,23 +378,8 @@ T_JZsdkReturnCode Main_APP_Psdk()
373 378
374 int Main_APP_Uart() 379 int Main_APP_Uart()
375 { 380 {
376 - int value[5] = {0, 0, 0, 0, 0};  
377 -  
378 - //lib库初始化  
379 - JZsdk_LibInit(JZ_FLAGCODE_ON);  
380 -  
381 - JZsdk_Hal_Init();  
382 -  
383 - JZSDK_LOG_INFO("0x%x,UartVersion%d.%d.%d.%d\n",DEVICE_VERSION,MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION);  
384 -  
385 - //通用模块  
386 - CommonMod_Init();  
387 -  
388 - //引脚初始化  
389 - Ircut_Init();  
390 -  
391 - //设备信息初始化  
392 - DeviceInfo_Init(); 381 + //环境加载
  382 + EquipmentEnvironment_Init();
393 383
394 //工作模式设置函数,用于超时,及播放启动语音等 384 //工作模式设置函数,用于超时,及播放启动语音等
395 Main_WorkMode(); 385 Main_WorkMode();
@@ -404,8 +394,6 @@ int Main_APP_Uart() @@ -404,8 +394,6 @@ int Main_APP_Uart()
404 394
405 int Main_TestAPP() 395 int Main_TestAPP()
406 { 396 {
407 - int value[5] = {0, 0, 0, 0, 0};  
408 -  
409 JZsdk_LibInit(JZ_FLAGCODE_ON); 397 JZsdk_LibInit(JZ_FLAGCODE_ON);
410 398
411 JZsdk_Hal_Init(); 399 JZsdk_Hal_Init();
@@ -413,8 +401,12 @@ int Main_TestAPP() @@ -413,8 +401,12 @@ int Main_TestAPP()
413 CommonMod_Init(); 401 CommonMod_Init();
414 402
415 //串口设备1初始化 403 //串口设备1初始化
416 - value[0] = UART_DEV1_BITRATE;  
417 - JZsdk_HalPort_Init(UART_DEV_1, value); 404 + s_JZ_SerialPortHalRegInfo SerialInfo = {
  405 + .BitRate = UART_DEV1_BITRATE,
  406 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  407 + };
  408 +
  409 + JZsdk_HalPort_Init(UART_DEV_1, (void *)&SerialInfo);
418 } 410 }
419 411
420 412
@@ -246,6 +246,23 @@ extern "C" { @@ -246,6 +246,23 @@ extern "C" {
246 #define NET_WORK_TARGET_IPADDR NULL 246 #define NET_WORK_TARGET_IPADDR NULL
247 #define NET_WORK_NETMASK NULL 247 #define NET_WORK_NETMASK NULL
248 248
  249 +#elif DEVICE_VERSION == JZ_T40
  250 + #define UART_DEV1_NUM "/dev/ttyS1"
  251 + #define UART_DEV1_BITRATE (115200)
  252 +
  253 + #define UART_DEV2_NUM "/dev/ttyS0"
  254 + #define UART_DEV2_BITRATE (115200)
  255 +
  256 + #define COMM_4G_UART_NUM "/dev/ttyS2"
  257 + #define COMM_4G_UART_BITRATE (115200)
  258 +
  259 + #define GIMBAL_UART_NUM NULL
  260 + #define GIMBAL_UART_BITRATE (0)
  261 +
  262 + #define NET_WORK_IPADDR NULL
  263 + #define NET_WORK_TARGET_IPADDR NULL
  264 + #define NET_WORK_NETMASK NULL
  265 +
249 #else 266 #else
250 #define UART_DEV1_NUM NULL 267 #define UART_DEV1_NUM NULL
251 #define UART_DEV1_BITRATE (0) 268 #define UART_DEV1_BITRATE (0)
@@ -26,6 +26,8 @@ @@ -26,6 +26,8 @@
26 #include "DeviceSample/JZ_U3_series/JZ_U3D/JZ_u3d.h" 26 #include "DeviceSample/JZ_U3_series/JZ_U3D/JZ_u3d.h"
27 #include "DeviceSample/JZ_U3_series/JZ_U30/JZ_u30.h" 27 #include "DeviceSample/JZ_U3_series/JZ_U30/JZ_u30.h"
28 28
  29 +#include "DeviceSample/JZ_T40/JZ_T40.h"
  30 +
29 #include "DeviceSample/JZC1/JZC1.h" 31 #include "DeviceSample/JZC1/JZC1.h"
30 #include "DeviceSample/JZ_ST/JZ_ST.h" 32 #include "DeviceSample/JZ_ST/JZ_ST.h"
31 33
@@ -1141,6 +1141,16 @@ static T_JZsdkReturnCode JZC1_PowerOn_Read() @@ -1141,6 +1141,16 @@ static T_JZsdkReturnCode JZC1_PowerOn_Read()
1141 //c1的实际初始化函数 1141 //c1的实际初始化函数
1142 T_JZsdkReturnCode JZC1_Init(int mode) 1142 T_JZsdkReturnCode JZC1_Init(int mode)
1143 { 1143 {
  1144 + //引脚初始化
  1145 + IrcutInfo ircut_info;
  1146 + ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
  1147 + ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PG;
  1148 + ircut_info.Amplifiter_Pin.index = 5;
  1149 + ircut_info.Amplifiter_Pin.Group = 0;
  1150 + ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
  1151 +
  1152 + Ircut_Init(ircut_info);
  1153 +
1144 //网口初始化 1154 //网口初始化
1145 if (mode == APP_UART) 1155 if (mode == APP_UART)
1146 { 1156 {
@@ -1148,15 +1158,21 @@ T_JZsdkReturnCode JZC1_Init(int mode) @@ -1148,15 +1158,21 @@ T_JZsdkReturnCode JZC1_Init(int mode)
1148 JZsdk_NetWork_Init(); 1158 JZsdk_NetWork_Init();
1149 } 1159 }
1150 1160
  1161 + if (mode == APP_PSDK)
  1162 + {
  1163 + //外接传输模块,用于与飞机的数据通信
  1164 + JZsdk_data_transmisson_Receive_Init();
  1165 + }
1151 1166
1152 #ifdef RTK_MPP_STATUS_ON 1167 #ifdef RTK_MPP_STATUS_ON
1153 1168
1154 T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 1169 T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
1155 1170
1156 - T_JZsdkVideoMgmtHandler VideoMgmtHandler = {  
1157 - .SetNextFrame_IDR = JZC1_SetNextFrame_IDR, 1171 + //媒体模块初始化
  1172 + T_JZsdkMediaProcHandler MediaProcHandler = {
  1173 + .VideoMgmtHandler.SetNextFrame_IDR = JZC1_SetNextFrame_IDR,
1158 }; 1174 };
1159 - VideoMgmt_Init(VideoMgmtHandler); 1175 + MediaProc_Init(MediaProcHandler);
1160 1176
1161 //初始化红外的编码器 1177 //初始化红外的编码器
1162 g_JZC1_info.IRC_enc_info = (T_rtk_mmp_enc_info *)malloc(sizeof(T_rtk_mmp_enc_info)); 1178 g_JZC1_info.IRC_enc_info = (T_rtk_mmp_enc_info *)malloc(sizeof(T_rtk_mmp_enc_info));
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 #include "Megaphone/Megaphone.h" 6 #include "Megaphone/Megaphone.h"
7 #include "AudioDeal/AudioDeal.h" 7 #include "AudioDeal/AudioDeal.h"
8 #include "Gimbal/Gimbal.h" 8 #include "Gimbal/Gimbal.h"
  9 +#include "Ircut/Ircut.h"
9 10
10 /**************************** 11 /****************************
11 * 12 *
@@ -16,18 +17,39 @@ @@ -16,18 +17,39 @@
16 * ****************************/ 17 * ****************************/
17 T_JZsdkReturnCode JZ_h10_init(int mode) 18 T_JZsdkReturnCode JZ_h10_init(int mode)
18 { 19 {
19 - //音频库初始化  
20 - AudioDeal_Init(); 20 + //引脚初始化
  21 + IrcutInfo ircut_info;
  22 + ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
  23 + ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PG;
  24 + ircut_info.Amplifiter_Pin.index = 11;
  25 + ircut_info.Amplifiter_Pin.Group = 0;
  26 + ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
  27 +
  28 + //还有个pwm
  29 + ircut_info.PWM_1_Pin.Enable = JZ_FLAGCODE_ON;
  30 +
  31 + Ircut_Init(ircut_info);
21 32
22 - int value[5] = {0};  
23 if (mode == APP_UART) 33 if (mode == APP_UART)
24 { 34 {
25 //串口设备1初始化 35 //串口设备1初始化
26 - value[0] = UART_DEV1_BITRATE;  
27 - JZsdk_HalPort_Init(UART_DEV_1, value); 36 + s_JZ_SerialPortHalRegInfo SerialInfo = {
  37 + .BitRate = UART_DEV1_BITRATE,
  38 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  39 + };
  40 +
  41 + JZsdk_HalPort_Init(UART_DEV_1, (void *)&SerialInfo);
  42 + }
28 43
  44 + if (mode == APP_PSDK)
  45 + {
  46 + //外接传输模块,用于与飞机的数据通信
  47 + JZsdk_data_transmisson_Receive_Init();
29 } 48 }
30 49
  50 + //音频库初始化
  51 + AudioDeal_Init();
  52 +
31 //喊话器初始化 53 //喊话器初始化
32 Megaphone_Init(); 54 Megaphone_Init();
33 55
@@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
7 #include "Megaphone/Megaphone.h" 7 #include "Megaphone/Megaphone.h"
8 #include "AudioDeal/AudioDeal.h" 8 #include "AudioDeal/AudioDeal.h"
9 #include "Gimbal/Gimbal.h" 9 #include "Gimbal/Gimbal.h"
  10 +#include "Ircut/Ircut.h"
10 11
11 /**************************** 12 /****************************
12 * 13 *
@@ -17,21 +18,51 @@ @@ -17,21 +18,51 @@
17 * ****************************/ 18 * ****************************/
18 T_JZsdkReturnCode JZ_h10t_init(int mode) 19 T_JZsdkReturnCode JZ_h10t_init(int mode)
19 { 20 {
20 - //音频库初始化  
21 - AudioDeal_Init(); 21 + //引脚初始化
  22 + IrcutInfo ircut_info;
  23 + ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
  24 + ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PG;
  25 + ircut_info.Amplifiter_Pin.index = 5;
  26 + ircut_info.Amplifiter_Pin.Group = 0;
  27 + ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
  28 +
  29 + ircut_info.OutPutPower_Pin.Enable = JZ_FLAGCODE_ON;
  30 + ircut_info.OutPutPower_Pin.Port = JZ_IRC_PORT_PB;
  31 + ircut_info.OutPutPower_Pin.index = 6;
  32 + ircut_info.OutPutPower_Pin.Group = 0;
  33 + ircut_info.OutPutPower_Pin.mode = JZ_IRC_PIN_MODE_OUT;
  34 +
  35 + ircut_info.PWM_1_Pin.Enable = JZ_FLAGCODE_ON;
  36 +
  37 + Ircut_Init(ircut_info);
22 38
23 - int value[5] = {0};  
24 if (mode == APP_UART) 39 if (mode == APP_UART)
25 { 40 {
26 //串口设备1初始化 41 //串口设备1初始化
27 - value[0] = UART_DEV1_BITRATE;  
28 - JZsdk_HalPort_Init(UART_DEV_1, value); 42 + s_JZ_SerialPortHalRegInfo SerialInfo = {
  43 + .BitRate = UART_DEV1_BITRATE,
  44 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  45 + };
  46 +
  47 + JZsdk_HalPort_Init(UART_DEV_1, (void *)&SerialInfo);
  48 + }
29 49
  50 + if (mode == APP_PSDK)
  51 + {
  52 + //外接传输模块,用于与飞机的数据通信
  53 + JZsdk_data_transmisson_Receive_Init();
30 } 54 }
31 55
32 //4g设备初始化 56 //4g设备初始化
33 - value[0] = COMM_4G_UART_BITRATE;  
34 - JZsdk_HalPort_Init(UART_4G, value); 57 + s_JZ_SerialPortHalRegInfo Serial_4G_Info = {
  58 + .BitRate = COMM_4G_UART_BITRATE,
  59 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  60 + };
  61 +
  62 + JZsdk_HalPort_Init(UART_4G, (void *)&Serial_4G_Info);
  63 +
  64 + //音频库初始化
  65 + AudioDeal_Init();
35 66
36 //喊话器初始化 67 //喊话器初始化
37 Megaphone_Init(); 68 Megaphone_Init();
@@ -7,6 +7,8 @@ @@ -7,6 +7,8 @@
7 #include "Megaphone/Megaphone.h" 7 #include "Megaphone/Megaphone.h"
8 #include "AudioDeal/AudioDeal.h" 8 #include "AudioDeal/AudioDeal.h"
9 9
  10 +#include "IRCUT/ircut.h"
  11 +
10 /**************************** 12 /****************************
11 * 13 *
12 * h150g 初始化 14 * h150g 初始化
@@ -16,17 +18,37 @@ @@ -16,17 +18,37 @@
16 * ****************************/ 18 * ****************************/
17 T_JZsdkReturnCode JZ_h150g_init(int mode) 19 T_JZsdkReturnCode JZ_h150g_init(int mode)
18 { 20 {
19 - //音频库初始化  
20 - //AudioDeal_Init();  
21 -  
22 int value[5] = {0}; 21 int value[5] = {0};
  22 +
  23 + //引脚初始化
  24 + IrcutInfo ircut_info;
  25 + ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
  26 + ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PA;
  27 + ircut_info.Amplifiter_Pin.index = 17;
  28 + ircut_info.Amplifiter_Pin.Group = 0;
  29 + ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
  30 + Ircut_Init(ircut_info);
  31 +
23 if (mode == APP_UART) 32 if (mode == APP_UART)
24 { 33 {
25 //串口设备1初始化 34 //串口设备1初始化
26 - value[0] = UART_DEV1_BITRATE;  
27 - JZsdk_HalPort_Init(UART_DEV_1, value); 35 + s_JZ_SerialPortHalRegInfo SerialInfo = {
  36 + .BitRate = UART_DEV1_BITRATE,
  37 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  38 + };
  39 +
  40 + JZsdk_HalPort_Init(UART_DEV_1, (void *)&SerialInfo);
28 } 41 }
29 42
  43 + if (mode == APP_PSDK)
  44 + {
  45 + //外接传输模块,用于与飞机的数据通信
  46 + JZsdk_data_transmisson_Receive_Init();
  47 + }
  48 +
  49 + //音频库初始化
  50 + //AudioDeal_Init();
  51 +
30 //喊话器初始化 52 //喊话器初始化
31 //Megaphone_Init(); 53 //Megaphone_Init();
32 } 54 }
@@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
9 #include "Gimbal/Gimbal.h" 9 #include "Gimbal/Gimbal.h"
10 #include "MediaProc/MediaProc.h" 10 #include "MediaProc/MediaProc.h"
11 11
  12 +#include "Ircut/Ircut.h"
12 13
13 14
14 15
@@ -67,24 +68,43 @@ T_JZsdkReturnCode JZ_h150s_h150t_init(int mode) @@ -67,24 +68,43 @@ T_JZsdkReturnCode JZ_h150s_h150t_init(int mode)
67 { 68 {
68 T_JZsdkReturnCode ret; 69 T_JZsdkReturnCode ret;
69 70
70 - //音频库初始化  
71 - AudioDeal_Init(); 71 + //引脚初始化
  72 + IrcutInfo ircut_info;
  73 + ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
  74 + ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PA;
  75 + ircut_info.Amplifiter_Pin.index = 17;
  76 + ircut_info.Amplifiter_Pin.Group = 0;
  77 + ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
  78 +
  79 + Ircut_Init(ircut_info);
72 80
73 if (mode == APP_UART) 81 if (mode == APP_UART)
74 { 82 {
75 //串口设备1初始化 83 //串口设备1初始化
76 - int value[1];  
77 - value[0] = UART_DEV1_BITRATE;  
78 - JZsdk_HalPort_Init(UART_DEV_1, value); 84 + s_JZ_SerialPortHalRegInfo SerialInfo = {
  85 + .BitRate = UART_DEV1_BITRATE,
  86 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  87 + };
  88 +
  89 + JZsdk_HalPort_Init(UART_DEV_1, (void *)&SerialInfo);
  90 + }
  91 +
  92 + if (mode == APP_PSDK)
  93 + {
  94 + //外接传输模块,用于与飞机的数据通信
  95 + JZsdk_data_transmisson_Receive_Init();
79 } 96 }
80 97
81 //h150t额外开启4g 98 //h150t额外开启4g
82 if (DEVICE_VERSION == JZ_H150T) 99 if (DEVICE_VERSION == JZ_H150T)
83 { 100 {
84 - //4g设备初始化  
85 - int value[1];  
86 - value[0] = COMM_4G_UART_BITRATE;  
87 - JZsdk_HalPort_Init(UART_4G, value); 101 + //串口设备4g初始化
  102 + s_JZ_SerialPortHalRegInfo Serial_4G_Info = {
  103 + .BitRate = COMM_4G_UART_BITRATE,
  104 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  105 + };
  106 +
  107 + JZsdk_HalPort_Init(UART_4G, (void *)&Serial_4G_Info);
88 } 108 }
89 109
90 if (mode == APP_UART) 110 if (mode == APP_UART)
@@ -93,17 +113,20 @@ T_JZsdkReturnCode JZ_h150s_h150t_init(int mode) @@ -93,17 +113,20 @@ T_JZsdkReturnCode JZ_h150s_h150t_init(int mode)
93 JZsdk_NetWork_Init(); 113 JZsdk_NetWork_Init();
94 } 114 }
95 115
  116 + //音频库初始化
  117 + AudioDeal_Init();
  118 +
96 //喊话器初始化 119 //喊话器初始化
97 Megaphone_Init(); 120 Megaphone_Init();
98 121
99 //云台初始化 122 //云台初始化
100 Gimbal_Init(JZ_MODULE_CONTROL_WAY_INDEPENDENT); 123 Gimbal_Init(JZ_MODULE_CONTROL_WAY_INDEPENDENT);
101 124
102 - //视频流模块初始化  
103 - T_JZsdkVideoMgmtHandler VideoMgmtHandler = {  
104 - .SetNextFrame_IDR = NULL, 125 + //媒体模块初始化
  126 + T_JZsdkMediaProcHandler MediaProcHandler = {
  127 + .VideoMgmtHandler.SetNextFrame_IDR = NULL,
105 }; 128 };
106 - VideoMgmt_Init(VideoMgmtHandler); 129 + MediaProc_Init(MediaProcHandler);
107 130
108 //相机初始化 131 //相机初始化
109 g_H150S_Info.CamereInfo = (JZsdk_CameraInfo *)malloc(sizeof(JZsdk_CameraInfo)); 132 g_H150S_Info.CamereInfo = (JZsdk_CameraInfo *)malloc(sizeof(JZsdk_CameraInfo));
@@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
5 #include "JZsdk_Hal.h" 5 #include "JZsdk_Hal.h"
6 #include "Megaphone/Megaphone.h" 6 #include "Megaphone/Megaphone.h"
7 #include "AudioDeal/AudioDeal.h" 7 #include "AudioDeal/AudioDeal.h"
  8 +#include "Ircut/Ircut.h"
8 9
9 /**************************** 10 /****************************
10 * 11 *
@@ -16,16 +17,37 @@ @@ -16,16 +17,37 @@
16 T_JZsdkReturnCode JZ_h1e_init(int mode) 17 T_JZsdkReturnCode JZ_h1e_init(int mode)
17 { 18 {
18 int value[5] = {0}; 19 int value[5] = {0};
19 - //音频库初始化  
20 - AudioDeal_Init(); 20 +
  21 + //引脚初始化
  22 + IrcutInfo ircut_info;
  23 + ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
  24 + ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PB;
  25 + ircut_info.Amplifiter_Pin.index = 4;
  26 + ircut_info.Amplifiter_Pin.Group = 0;
  27 + ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
  28 +
  29 + Ircut_Init(ircut_info);
21 30
22 if (mode == APP_UART) 31 if (mode == APP_UART)
23 { 32 {
24 //串口设备1初始化 33 //串口设备1初始化
25 - value[0] = UART_DEV1_BITRATE;  
26 - JZsdk_HalPort_Init(UART_DEV_1, value); 34 + s_JZ_SerialPortHalRegInfo SerialInfo = {
  35 + .BitRate = UART_DEV1_BITRATE,
  36 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  37 + };
  38 +
  39 + JZsdk_HalPort_Init(UART_DEV_1, (void *)&SerialInfo);
27 } 40 }
28 41
  42 + if (mode == APP_PSDK)
  43 + {
  44 + //外接传输模块,用于与飞机的数据通信
  45 + JZsdk_data_transmisson_Receive_Init();
  46 + }
  47 +
  48 + //音频库初始化
  49 + AudioDeal_Init();
  50 +
29 //喊话器初始化 51 //喊话器初始化
30 Megaphone_Init(); 52 Megaphone_Init();
31 53
@@ -6,10 +6,11 @@ @@ -6,10 +6,11 @@
6 #include "Megaphone/Megaphone.h" 6 #include "Megaphone/Megaphone.h"
7 #include "AudioDeal/AudioDeal.h" 7 #include "AudioDeal/AudioDeal.h"
8 #include "Gimbal/Gimbal.h" 8 #include "Gimbal/Gimbal.h"
  9 +#include "Ircut/Ircut.h"
9 10
10 /**************************** 11 /****************************
11 * 12 *
12 - * h15tt 初始化 13 + * h1t 初始化
13 * 14 *
14 * mode psdk为psdk模式 uart为串口模式 15 * mode psdk为psdk模式 uart为串口模式
15 * 16 *
@@ -18,19 +19,42 @@ T_JZsdkReturnCode JZ_h1t_init(int mode) @@ -18,19 +19,42 @@ T_JZsdkReturnCode JZ_h1t_init(int mode)
18 { 19 {
19 int value[5] = {0}; 20 int value[5] = {0};
20 21
21 - //音频库初始化  
22 - AudioDeal_Init(); 22 + //引脚初始化
  23 + IrcutInfo ircut_info;
  24 + ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
  25 + ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PG;
  26 + ircut_info.Amplifiter_Pin.index = 5;
  27 + ircut_info.Amplifiter_Pin.Group = 0;
  28 + ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
  29 +
  30 + Ircut_Init(ircut_info);
23 31
24 if (mode == APP_UART) 32 if (mode == APP_UART)
25 { 33 {
26 //串口设备1初始化 34 //串口设备1初始化
27 - value[0] = UART_DEV1_BITRATE;  
28 - JZsdk_HalPort_Init(UART_DEV_1, value); 35 + s_JZ_SerialPortHalRegInfo SerialInfo = {
  36 + .BitRate = UART_DEV1_BITRATE,
  37 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  38 + };
  39 +
  40 + JZsdk_HalPort_Init(UART_DEV_1, (void *)&SerialInfo);
  41 + }
  42 +
  43 + if (mode == APP_PSDK)
  44 + {
  45 + //外接传输模块,用于与飞机的数据通信
  46 + JZsdk_data_transmisson_Receive_Init();
29 } 47 }
30 48
31 //4g设备初始化 49 //4g设备初始化
32 - value[0] = COMM_4G_UART_BITRATE;  
33 - JZsdk_HalPort_Init(UART_4G, value); 50 + s_JZ_SerialPortHalRegInfo Serial_4G_Info = {
  51 + .BitRate = COMM_4G_UART_BITRATE,
  52 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  53 + };
  54 + JZsdk_HalPort_Init(UART_4G, (void *)&Serial_4G_Info);
  55 +
  56 + //音频库初始化
  57 + AudioDeal_Init();
34 58
35 //喊话器初始化 59 //喊话器初始化
36 Megaphone_Init(); 60 Megaphone_Init();
@@ -272,6 +272,16 @@ static T_JZsdkReturnCode JZ_IrcCameraInit() @@ -272,6 +272,16 @@ static T_JZsdkReturnCode JZ_IrcCameraInit()
272 272
273 T_JZsdkReturnCode JZ_ST_Init(int mode) 273 T_JZsdkReturnCode JZ_ST_Init(int mode)
274 { 274 {
  275 + //引脚初始化
  276 + IrcutInfo ircut_info;
  277 + ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
  278 + ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PA;
  279 + ircut_info.Amplifiter_Pin.index = 17;
  280 + ircut_info.Amplifiter_Pin.Group = 0;
  281 + ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
  282 +
  283 + Ircut_Init(ircut_info);
  284 +
275 //网口初始化 285 //网口初始化
276 if (mode == APP_UART) 286 if (mode == APP_UART)
277 { 287 {
@@ -279,15 +289,21 @@ T_JZsdkReturnCode JZ_ST_Init(int mode) @@ -279,15 +289,21 @@ T_JZsdkReturnCode JZ_ST_Init(int mode)
279 JZsdk_NetWork_Init(); 289 JZsdk_NetWork_Init();
280 } 290 }
281 291
  292 + if (mode == APP_PSDK)
  293 + {
  294 + //外接传输模块,用于与飞机的数据通信
  295 + JZsdk_data_transmisson_Receive_Init();
  296 + }
  297 +
282 T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 298 T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
283 299
284 #ifdef RTK_MPP_STATUS_ON 300 #ifdef RTK_MPP_STATUS_ON
285 301
286 - //初始化相机流管理器  
287 - T_JZsdkVideoMgmtHandler VideoMgmtHandler = {  
288 - .SetNextFrame_IDR = JZST_SetNextFrame_IDR, 302 + //媒体模块初始化
  303 + T_JZsdkMediaProcHandler MediaProcHandler = {
  304 + .VideoMgmtHandler.SetNextFrame_IDR = JZST_SetNextFrame_IDR,
289 }; 305 };
290 - VideoMgmt_Init(VideoMgmtHandler); 306 + MediaProc_Init(MediaProcHandler);
291 307
292 //初始化红外的编码器 308 //初始化红外的编码器
293 g_JZST_info.IRC_enc_info = (T_rtk_mmp_enc_info *)malloc(sizeof(T_rtk_mmp_enc_info)); 309 g_JZST_info.IRC_enc_info = (T_rtk_mmp_enc_info *)malloc(sizeof(T_rtk_mmp_enc_info));
  1 +#include "JZsdkLib.h"
  2 +#include "BaseConfig.h"
  3 +#include <pthread.h>
  4 +
  5 +
  6 +#include "JZsdk_Hal.h"
  7 +#include "Megaphone/Megaphone.h"
  8 +#include "AudioDeal/AudioDeal.h"
  9 +#include "Gimbal/Gimbal.h"
  10 +#include "Lighting/Lighting_InAndOut.h"
  11 +#include "JZsdk_haldata_deal/JZsdk_data_transmisson.h"
  12 +
  13 +#include "IRCUT/ircut.h"
  14 +#include "Hal_Send/HalSend.h"
  15 +
  16 +static int T40_SubConnectFlag = JZ_FLAGCODE_OFF;
  17 +
  18 +void *JZ_T40_SubConnectTask(void *arg)
  19 +{
  20 + static int LeftGimbalConnectFlag = JZ_FLAGCODE_OFF;
  21 + static int RightGimbalConnectFlag = JZ_FLAGCODE_OFF;
  22 +
  23 + static int LeftLightConnectFlag = JZ_FLAGCODE_OFF;
  24 + static int RightLightConnectFlag = JZ_FLAGCODE_OFF;
  25 +
  26 + static int DelayTime = 0; //最多尝试连接设备30s
  27 +
  28 + while (RightGimbalConnectFlag == JZ_FLAGCODE_OFF ||
  29 + LeftGimbalConnectFlag == JZ_FLAGCODE_OFF ||
  30 + RightLightConnectFlag == JZ_FLAGCODE_OFF ||
  31 + LeftLightConnectFlag == JZ_FLAGCODE_OFF ||
  32 + DelayTime < 30000)
  33 + {
  34 + s_JZsdk_Hal_Info *HalInfo = JZsdk_Hal_GetHalInfo();
  35 +
  36 + //遍历hal信息
  37 + for (int i = 0; i < HalInfo->HalPort[UART_DEV_2].SubNum; i++)
  38 + {
  39 + if(HalInfo->HalPort[UART_DEV_2].SubId[i] == 0x1c11)
  40 + {
  41 + LeftGimbalConnectFlag = JZ_FLAGCODE_ON;
  42 + continue;
  43 + }
  44 +
  45 + if(HalInfo->HalPort[UART_DEV_2].SubId[i] == 0x1c12)
  46 + {
  47 + RightGimbalConnectFlag = JZ_FLAGCODE_ON;
  48 + continue;
  49 + }
  50 +
  51 + if(HalInfo->HalPort[UART_DEV_2].SubId[i] == 0x1c21)
  52 + {
  53 + LeftLightConnectFlag = JZ_FLAGCODE_ON;
  54 + continue;
  55 + }
  56 +
  57 + if(HalInfo->HalPort[UART_DEV_2].SubId[i] == 0x1c22)
  58 + {
  59 + RightLightConnectFlag = JZ_FLAGCODE_ON;
  60 + continue;
  61 + }
  62 + }
  63 +
  64 + //左云台未连接
  65 + if (LeftGimbalConnectFlag == JZ_FLAGCODE_OFF)
  66 + {
  67 + //向左云台发送连接指令
  68 + HalSend_type1Send_ConnectFrame(UART_DEV_2, 0x11);
  69 + delayMs(500);
  70 + DelayTime+=500;
  71 + }
  72 +
  73 + //右云台未连接
  74 + if (RightGimbalConnectFlag == JZ_FLAGCODE_OFF)
  75 + {
  76 + //向右云台发送连接指令
  77 + HalSend_type1Send_ConnectFrame(UART_DEV_2, 0x12);
  78 + delayMs(500);
  79 + DelayTime+=500;
  80 + }
  81 +
  82 + //左探照灯未连接
  83 + if (LeftLightConnectFlag == JZ_FLAGCODE_OFF)
  84 + {
  85 + //向左探照灯发送连接指令
  86 + HalSend_type1Send_ConnectFrame(UART_DEV_2, 0x21);
  87 + delayMs(500);
  88 + DelayTime+=500;
  89 + }
  90 +
  91 + //右探照灯未连接
  92 + if (RightLightConnectFlag == JZ_FLAGCODE_OFF)
  93 + {
  94 + //向右探照灯发送连接指令
  95 + HalSend_type1Send_ConnectFrame(UART_DEV_2, 0x22);
  96 + delayMs(500);
  97 + DelayTime+=500;
  98 + }
  99 + }
  100 +
  101 + T40_SubConnectFlag = JZ_FLAGCODE_ON;
  102 + JZSDK_LOG_INFO("T40 SubDevice Connect Success");
  103 +}
  104 +
  105 +/*****************************
  106 + *
  107 + *
  108 + * 子设备连接
  109 + * 两个探照灯,两个云台
  110 + *
  111 + * ***************************/
  112 +static T_JZsdkReturnCode JZ_T40_SubDevice_Init(void)
  113 +{
  114 + T_JZsdkOsalHandler *osalHandle = JZsdk_Platform_GetOsalHandler();
  115 + if (osalHandle == NULL)
  116 + {
  117 + JZSDK_LOG_ERROR("osalHandle is NULL");
  118 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  119 + }
  120 +
  121 + T_JZTaskHandle JZ_T40_SubTaskHandle;
  122 +
  123 + osalHandle->TaskCreate("T40_SubDevice_Init", JZ_T40_SubConnectTask, 2048, NULL, &JZ_T40_SubTaskHandle);
  124 +
  125 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  126 +}
  127 +
  128 +T_JZsdkReturnCode JZ_T40_Ircut_Init()
  129 +{
  130 + //引脚初始化
  131 + IrcutInfo ircut_info;
  132 + ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
  133 + ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PG;
  134 + ircut_info.Amplifiter_Pin.index = 5;
  135 + ircut_info.Amplifiter_Pin.Group = 0;
  136 + ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
  137 +
  138 + Ircut_Init(ircut_info);
  139 +}
  140 +
  141 +void *JZ_T40_CheckLightTemperatureTask(void *arg)
  142 +{
  143 + //等候子设备连接成功
  144 + while (T40_SubConnectFlag == JZ_FLAGCODE_OFF)
  145 + {
  146 + delayMs(100);
  147 + }
  148 +
  149 + JZSDK_LOG_INFO("开始检查灯温度");
  150 +
  151 + while (1)
  152 + {
  153 + //检查左灯温度
  154 + HalSend_type1Send_CheckStatus_SearchLight_Temperture(UART_DEV_2, 0x21);
  155 +
  156 + delayMs(500);
  157 +
  158 + //检查右灯温度
  159 + HalSend_type1Send_CheckStatus_SearchLight_Temperture(UART_DEV_2, 0x22);
  160 +
  161 + delayMs(500);
  162 + }
  163 +}
  164 +
  165 +static T_JZsdkReturnCode JZ_T40_CheckLightTemperature(void)
  166 +{
  167 + T_JZsdkOsalHandler *osalHandle = JZsdk_Platform_GetOsalHandler();
  168 + if (osalHandle == NULL)
  169 + {
  170 + JZSDK_LOG_ERROR("osalHandle is NULL");
  171 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  172 + }
  173 +
  174 + T_JZTaskHandle JZ_T40_CheckLightTemperatureTaskHandle;
  175 + osalHandle->TaskCreate("T40_CheckLightTemperature", JZ_T40_CheckLightTemperatureTask, 2048, NULL, &JZ_T40_CheckLightTemperatureTaskHandle);
  176 +
  177 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  178 +}
  179 +
  180 +/********************
  181 + *
  182 + *
  183 + * T40 基础参数设置
  184 + *
  185 + *
  186 + * ****************/
  187 +static T_JZsdkReturnCode JZ_T40_BaseParamSet(void)
  188 +{
  189 + //设置探照灯亮度
  190 +
  191 + //设置探照灯模式
  192 +
  193 + //设置激光模式
  194 +
  195 + //设置激光开关
  196 +
  197 + //设置警灯颜色
  198 +
  199 + //设置警灯模式
  200 +
  201 + //设置云台角度
  202 +
  203 + //设置喊话器音量
  204 +
  205 +}
  206 +
  207 +/****************************
  208 + *
  209 + * T40 初始化
  210 + *
  211 + * mode psdk为psdk模式 uart为串口模式
  212 + *
  213 + * ****************************/
  214 +T_JZsdkReturnCode JZ_T40_init(int mode)
  215 +{
  216 + //引脚初始化
  217 + JZ_T40_Ircut_Init();
  218 +
  219 + if (mode == APP_UART)
  220 + {
  221 + //串口设备1初始化
  222 + s_JZ_SerialPortHalRegInfo SerialInfo = {
  223 + .BitRate = UART_DEV1_BITRATE,
  224 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  225 + };
  226 +
  227 + JZsdk_HalPort_Init(UART_DEV_1, (void *)&SerialInfo);
  228 + }
  229 +
  230 + if (mode == APP_PSDK)
  231 + {
  232 + //外接传输模块,用于与飞机的数据通信
  233 + JZsdk_data_transmisson_Receive_Init();
  234 + }
  235 +
  236 + //串口设备2初始化
  237 + s_JZ_SerialPortHalRegInfo SerialInfo2 = {
  238 + .BitRate = UART_DEV2_BITRATE,
  239 + .ConnectType = PORT_CONNECT_TYPE_AS_MAIN,
  240 + };
  241 +
  242 + JZsdk_HalPort_Init(UART_DEV_2, (void *)&SerialInfo2);
  243 +
  244 + // //4G初始化
  245 + // value[0] = COMM_4G_UART_BITRATE;
  246 + // JZsdk_HalPort_Init(UART_4G, value);
  247 +
  248 + //子设备连接
  249 + JZ_T40_SubDevice_Init();
  250 +
  251 + //音频库初始化
  252 + AudioDeal_Init();
  253 +
  254 + //喊话器初始化
  255 + Megaphone_Init();
  256 +
  257 + //云台初始化
  258 + Gimbal_Init(JZ_MODULE_CONTROL_WAY_INDEPENDENT);
  259 +
  260 + //灯类初始化
  261 + Lighting_Init();
  262 +
  263 + //制造一个定时查询温度的线程
  264 + //JZ_T40_CheckLightTemperature();
  265 +
  266 + //基础参数设置
  267 + JZ_T40_BaseParamSet();
  268 +
  269 + JZSDK_LOG_INFO("T40 Init Success");
  270 +
  271 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  272 +}
  1 +/**
  2 + ********************************************************************
  3 + * @file JZ_T40.h
  4 + * JZ_T40.h的头文件
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZ_T40_H
  11 +#define JZ_T40_H
  12 +
  13 +#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
  14 +
  15 +
  16 +/* Includes ------------------------------------------------------------------*/
  17 +#ifdef __cplusplus
  18 +extern "C" {
  19 +#endif
  20 +
  21 +
  22 +
  23 +/* Exported constants --------------------------------------------------------*/
  24 +/* 常亮定义*/
  25 +
  26 +/* Exported types ------------------------------------------------------------*/
  27 +
  28 +T_JZsdkReturnCode JZ_T40_init(int mode);
  29 +T_JZsdkReturnCode JZ_T40_Ircut_Init();
  30 +
  31 +
  32 +#ifdef __cplusplus
  33 +}
  34 +#endif
  35 +
  36 +#endif
@@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
7 #include "Megaphone/Megaphone.h" 7 #include "Megaphone/Megaphone.h"
8 #include "AudioDeal/AudioDeal.h" 8 #include "AudioDeal/AudioDeal.h"
9 #include "Gimbal/Gimbal.h" 9 #include "Gimbal/Gimbal.h"
  10 +#include "Ircut/ircut.h"
10 11
11 /**************************** 12 /****************************
12 * 13 *
@@ -17,21 +18,43 @@ @@ -17,21 +18,43 @@
17 * ****************************/ 18 * ****************************/
18 T_JZsdkReturnCode JZ_u3_init(int mode) 19 T_JZsdkReturnCode JZ_u3_init(int mode)
19 { 20 {
20 - //音频库初始化  
21 - AudioDeal_Init(); 21 + //引脚初始化
  22 + IrcutInfo ircut_info;
  23 + ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
  24 + ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PB;
  25 + ircut_info.Amplifiter_Pin.index = 4;
  26 + ircut_info.Amplifiter_Pin.Group = 0;
  27 + ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
  28 +
  29 + Ircut_Init(ircut_info);
22 30
23 - int value[5] = {0};  
24 if (mode == APP_UART) 31 if (mode == APP_UART)
25 { 32 {
26 //串口设备1初始化 33 //串口设备1初始化
27 - value[0] = UART_DEV1_BITRATE;  
28 - JZsdk_HalPort_Init(UART_DEV_1, value); 34 + s_JZ_SerialPortHalRegInfo SerialInfo = {
  35 + .BitRate = UART_DEV1_BITRATE,
  36 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  37 + };
  38 +
  39 + JZsdk_HalPort_Init(UART_DEV_1, (void *)&SerialInfo);
  40 + }
29 41
  42 + if (mode == APP_PSDK)
  43 + {
  44 + //外接传输模块,用于与飞机的数据通信
  45 + JZsdk_data_transmisson_Receive_Init();
30 } 46 }
31 47
32 //串口设备2初始化 48 //串口设备2初始化
33 - value[0] = UART_DEV2_BITRATE;  
34 - JZsdk_HalPort_Init(UART_DEV_2, value); 49 + s_JZ_SerialPortHalRegInfo SerialInfo2 = {
  50 + .BitRate = UART_DEV2_BITRATE,
  51 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  52 + };
  53 +
  54 + JZsdk_HalPort_Init(UART_DEV_2, (void *)&SerialInfo2);
  55 +
  56 + //音频库初始化
  57 + AudioDeal_Init();
35 58
36 //喊话器初始化 59 //喊话器初始化
37 Megaphone_Init(); 60 Megaphone_Init();
@@ -8,6 +8,8 @@ @@ -8,6 +8,8 @@
8 #include "AudioDeal/AudioDeal.h" 8 #include "AudioDeal/AudioDeal.h"
9 #include "Gimbal/Gimbal.h" 9 #include "Gimbal/Gimbal.h"
10 10
  11 +#include "Ircut/ircut.h"
  12 +
11 /**************************** 13 /****************************
12 * 14 *
13 * u30 初始化 15 * u30 初始化
@@ -17,21 +19,44 @@ @@ -17,21 +19,44 @@
17 * ****************************/ 19 * ****************************/
18 T_JZsdkReturnCode JZ_u30_init(int mode) 20 T_JZsdkReturnCode JZ_u30_init(int mode)
19 { 21 {
20 - //音频库初始化  
21 - AudioDeal_Init(); 22 + //引脚初始化
  23 + IrcutInfo ircut_info;
  24 + ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
  25 + ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PB;
  26 + ircut_info.Amplifiter_Pin.index = 4;
  27 + ircut_info.Amplifiter_Pin.Group = 0;
  28 + ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
  29 +
  30 + Ircut_Init(ircut_info);
22 31
23 - int value[5] = {0};  
24 if (mode == APP_UART) 32 if (mode == APP_UART)
25 { 33 {
26 //串口设备1初始化 34 //串口设备1初始化
27 - value[0] = UART_DEV1_BITRATE;  
28 - JZsdk_HalPort_Init(UART_DEV_1, value); 35 + s_JZ_SerialPortHalRegInfo SerialInfo = {
  36 + .BitRate = UART_DEV1_BITRATE,
  37 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  38 + };
  39 +
  40 + JZsdk_HalPort_Init(UART_DEV_1, (void *)&SerialInfo);
  41 + }
29 42
  43 +
  44 + if (mode == APP_PSDK)
  45 + {
  46 + //外接传输模块,用于与飞机的数据通信
  47 + JZsdk_data_transmisson_Receive_Init();
30 } 48 }
31 49
32 //串口设备2初始化 50 //串口设备2初始化
33 - value[0] = UART_DEV2_BITRATE;  
34 - JZsdk_HalPort_Init(UART_DEV_2, value); 51 + s_JZ_SerialPortHalRegInfo SerialInfo2 = {
  52 + .BitRate = UART_DEV2_BITRATE,
  53 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  54 + };
  55 +
  56 + JZsdk_HalPort_Init(UART_DEV_2, (void *)&SerialInfo2);
  57 +
  58 + //音频库初始化
  59 + AudioDeal_Init();
35 60
36 //喊话器初始化 61 //喊话器初始化
37 Megaphone_Init(); 62 Megaphone_Init();
@@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
7 #include "Megaphone/Megaphone.h" 7 #include "Megaphone/Megaphone.h"
8 #include "AudioDeal/AudioDeal.h" 8 #include "AudioDeal/AudioDeal.h"
9 #include "Gimbal/Gimbal.h" 9 #include "Gimbal/Gimbal.h"
  10 +#include "Ircut/ircut.h"
10 11
11 /**************************** 12 /****************************
12 * 13 *
@@ -17,21 +18,43 @@ @@ -17,21 +18,43 @@
17 * ****************************/ 18 * ****************************/
18 T_JZsdkReturnCode JZ_u3d_init(int mode) 19 T_JZsdkReturnCode JZ_u3d_init(int mode)
19 { 20 {
20 - //音频库初始化  
21 - AudioDeal_Init(); 21 + //引脚初始化
  22 + IrcutInfo ircut_info;
  23 + ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
  24 + ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PB;
  25 + ircut_info.Amplifiter_Pin.index = 4;
  26 + ircut_info.Amplifiter_Pin.Group = 0;
  27 + ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
  28 +
  29 + Ircut_Init(ircut_info);
22 30
23 - int value[5] = {0};  
24 if (mode == APP_UART) 31 if (mode == APP_UART)
25 { 32 {
26 //串口设备1初始化 33 //串口设备1初始化
27 - value[0] = UART_DEV1_BITRATE;  
28 - JZsdk_HalPort_Init(UART_DEV_1, value); 34 + s_JZ_SerialPortHalRegInfo SerialInfo = {
  35 + .BitRate = UART_DEV1_BITRATE,
  36 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  37 + };
  38 +
  39 + JZsdk_HalPort_Init(UART_DEV_1, (void *)&SerialInfo);
  40 + }
29 41
  42 + if (mode == APP_PSDK)
  43 + {
  44 + //外接传输模块,用于与飞机的数据通信
  45 + JZsdk_data_transmisson_Receive_Init();
30 } 46 }
31 47
32 //串口设备2初始化 48 //串口设备2初始化
33 - value[0] = UART_DEV2_BITRATE;  
34 - JZsdk_HalPort_Init(UART_DEV_2, value); 49 + s_JZ_SerialPortHalRegInfo SerialInfo2 = {
  50 + .BitRate = UART_DEV2_BITRATE,
  51 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  52 + };
  53 +
  54 + JZsdk_HalPort_Init(UART_DEV_2, (void *)&SerialInfo2);
  55 +
  56 + //音频库初始化
  57 + AudioDeal_Init();
35 58
36 //喊话器初始化 59 //喊话器初始化
37 Megaphone_Init(); 60 Megaphone_Init();
@@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
7 #include "AudioDeal/AudioDeal.h" 7 #include "AudioDeal/AudioDeal.h"
8 #include "Gimbal/Gimbal.h" 8 #include "Gimbal/Gimbal.h"
9 #include "SideLaser/SideLaser.h" 9 #include "SideLaser/SideLaser.h"
  10 +#include "Ircut/ircut.h"
10 11
11 /**************************** 12 /****************************
12 * 13 *
@@ -17,21 +18,55 @@ @@ -17,21 +18,55 @@
17 * ****************************/ 18 * ****************************/
18 T_JZsdkReturnCode JZ_u3s_init(int mode) 19 T_JZsdkReturnCode JZ_u3s_init(int mode)
19 { 20 {
20 - //音频库初始化  
21 - AudioDeal_Init(); 21 + //引脚初始化
  22 + IrcutInfo ircut_info;
  23 + ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
  24 + ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PB;
  25 + ircut_info.Amplifiter_Pin.index = 4;
  26 + ircut_info.Amplifiter_Pin.Group = 0;
  27 + ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
  28 +
  29 + ircut_info.SideLight_Left_Pin.Enable = JZ_FLAGCODE_ON;
  30 + ircut_info.SideLight_Left_Pin.Port = JZ_IRC_PORT_PB;
  31 + ircut_info.SideLight_Left_Pin.index = 6;
  32 + ircut_info.SideLight_Left_Pin.Group = 0;
  33 + ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
  34 +
  35 + ircut_info.SideLight_Right_Pin.Enable = JZ_FLAGCODE_ON;
  36 + ircut_info.SideLight_Right_Pin.Port = JZ_IRC_PORT_PB;
  37 + ircut_info.SideLight_Right_Pin.index = 7;
  38 + ircut_info.SideLight_Right_Pin.Group = 0;
  39 + ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
  40 +
  41 + Ircut_Init(ircut_info);
22 42
23 - int value[5] = {0};  
24 if (mode == APP_UART) 43 if (mode == APP_UART)
25 { 44 {
26 //串口设备1初始化 45 //串口设备1初始化
27 - value[0] = UART_DEV1_BITRATE;  
28 - JZsdk_HalPort_Init(UART_DEV_1, value); 46 + s_JZ_SerialPortHalRegInfo SerialInfo = {
  47 + .BitRate = UART_DEV1_BITRATE,
  48 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  49 + };
  50 +
  51 + JZsdk_HalPort_Init(UART_DEV_1, (void *)&SerialInfo);
  52 + }
29 53
  54 + if (mode == APP_PSDK)
  55 + {
  56 + //外接传输模块,用于与飞机的数据通信
  57 + JZsdk_data_transmisson_Receive_Init();
30 } 58 }
31 59
32 //串口设备2初始化 60 //串口设备2初始化
33 - value[0] = UART_DEV2_BITRATE;  
34 - JZsdk_HalPort_Init(UART_DEV_2, value); 61 + s_JZ_SerialPortHalRegInfo SerialInfo2 = {
  62 + .BitRate = UART_DEV2_BITRATE,
  63 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  64 + };
  65 +
  66 + JZsdk_HalPort_Init(UART_DEV_2, (void *)&SerialInfo2);
  67 +
  68 + //音频库初始化
  69 + AudioDeal_Init();
35 70
36 //喊话器初始化 71 //喊话器初始化
37 Megaphone_Init(); 72 Megaphone_Init();
@@ -7,6 +7,8 @@ @@ -7,6 +7,8 @@
7 #include "Megaphone/Megaphone.h" 7 #include "Megaphone/Megaphone.h"
8 #include "AudioDeal/AudioDeal.h" 8 #include "AudioDeal/AudioDeal.h"
9 #include "Gimbal/Gimbal.h" 9 #include "Gimbal/Gimbal.h"
  10 +#include "Ircut/ircut.h"
  11 +
10 12
11 /**************************** 13 /****************************
12 * 14 *
@@ -17,20 +19,45 @@ @@ -17,20 +19,45 @@
17 * ****************************/ 19 * ****************************/
18 T_JZsdkReturnCode TF_a1_init(int mode) 20 T_JZsdkReturnCode TF_a1_init(int mode)
19 { 21 {
20 - //音频库初始化  
21 - AudioDeal_Init(); 22 + //引脚初始化
  23 + IrcutInfo ircut_info;
  24 + ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
  25 + ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PG;
  26 + ircut_info.Amplifiter_Pin.index = 5;
  27 + ircut_info.Amplifiter_Pin.Group = 0;
  28 + ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
  29 +
  30 + Ircut_Init(ircut_info);
22 31
23 - int value[5] = {0}; 32 + //hal层初始化
24 if (mode == APP_UART) 33 if (mode == APP_UART)
25 { 34 {
26 //串口设备1初始化 35 //串口设备1初始化
27 - value[0] = UART_DEV1_BITRATE;  
28 - JZsdk_HalPort_Init(UART_DEV_1, value); 36 + s_JZ_SerialPortHalRegInfo SerialInfo = {
  37 + .BitRate = UART_DEV1_BITRATE,
  38 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  39 + };
  40 +
  41 + JZsdk_HalPort_Init(UART_DEV_1, (void *)&SerialInfo);
  42 + }
  43 +
  44 + if (mode == APP_PSDK)
  45 + {
  46 + //外接传输模块,用于与飞机的数据通信
  47 + JZsdk_data_transmisson_Receive_Init();
29 } 48 }
30 49
31 //串口设备2初始化 50 //串口设备2初始化
32 - value[0] = UART_DEV2_BITRATE;  
33 - JZsdk_HalPort_Init(UART_DEV_2, value); 51 + s_JZ_SerialPortHalRegInfo SerialInfo2 = {
  52 + .BitRate = UART_DEV2_BITRATE,
  53 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  54 + };
  55 +
  56 + JZsdk_HalPort_Init(UART_DEV_2, (void *)&SerialInfo2);
  57 +
  58 + //音频库初始化
  59 + AudioDeal_Init();
  60 +
34 61
35 //喊话器初始化 62 //喊话器初始化
36 Megaphone_Init(); 63 Megaphone_Init();
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
7 #define VERSION_CHOOSE_H 7 #define VERSION_CHOOSE_H
8 #include "JZsdk_Base/JZsdk_Code/JZsdk_DeviceCode.h" 8 #include "JZsdk_Base/JZsdk_Code/JZsdk_DeviceCode.h"
9 //1~10行 除了D可以修改版本选择 禁止动任何东西 9 //1~10行 除了D可以修改版本选择 禁止动任何东西
10 -#define DEVICE_VERSION JZ_H150G 10 +#define DEVICE_VERSION JZ_H150S
11 11
12 //禁止修改行 选择是串口程序 还是 psdk程序 12 //禁止修改行 选择是串口程序 还是 psdk程序
13 #define APP_VERSION APP_PSDK 13 #define APP_VERSION APP_PSDK
@@ -21,9 +21,9 @@ @@ -21,9 +21,9 @@
21 #define MINOR_VERSION_TEN_POSITION 0 21 #define MINOR_VERSION_TEN_POSITION 0
22 #define MINOR_VERSION_ONE_POSITION 3 22 #define MINOR_VERSION_ONE_POSITION 3
23 #define MODIFY_VERSION_TEN_POSITION 1 23 #define MODIFY_VERSION_TEN_POSITION 1
24 -#define MODIFY_VERSION_ONE_POSITION 1 24 +#define MODIFY_VERSION_ONE_POSITION 2
25 #define DEBUG_VERSION_TEN_POSITION 0 25 #define DEBUG_VERSION_TEN_POSITION 0
26 -#define DEBUG_VERSION_ONE_POSITION 3 26 +#define DEBUG_VERSION_ONE_POSITION 0
27 27
28 28
29 29
@@ -49,6 +49,18 @@ @@ -49,6 +49,18 @@
49 #define MEGAPHONE_CONFIG_STATUS_ON 49 #define MEGAPHONE_CONFIG_STATUS_ON
50 #endif 50 #endif
51 51
  52 + #ifdef MACRO_IFLAY_TTS_1_MODULE
  53 + #define IFLAY_TTS_1_CONFIG_STATUS_ON
  54 + #endif
  55 +
  56 + #ifdef MACRO_ESPEAK_TTS_MODULE
  57 + #define ESPEAK_TTS_CONFIG_STATUS_ON
  58 + #endif
  59 +
  60 + #ifdef MACRO_IFLAY_TTS_2_MODULE
  61 + #define IFLAY_TTS_2_CONFIG_STATUS_ON
  62 + #endif
  63 +
52 //是否开启媒体功能 64 //是否开启媒体功能
53 #ifdef MACRO_MEDIA_PROC_MODULE 65 #ifdef MACRO_MEDIA_PROC_MODULE
54 #define MEDIA_PROC_CONFIG_STATUS_ON 66 #define MEDIA_PROC_CONFIG_STATUS_ON
@@ -99,6 +111,11 @@ @@ -99,6 +111,11 @@
99 #define LIGHTING_STATUS_ON 111 #define LIGHTING_STATUS_ON
100 #endif 112 #endif
101 113
  114 + //是否加载探照灯模块
  115 + #ifdef MACRO_SEARCHLIGHT_MODULE
  116 + #define SEARCHLIGHT_STATUS_ON
  117 + #endif
  118 +
102 //是否加载云台模块 119 //是否加载云台模块
103 #ifdef MACRO_GIMBAL_MODULE 120 #ifdef MACRO_GIMBAL_MODULE
104 #define GIMBAL_STATUS_ON 121 #define GIMBAL_STATUS_ON
@@ -111,6 +128,9 @@ @@ -111,6 +128,9 @@
111 128
112 //是否开启喊话器功能 129 //是否开启喊话器功能
113 #define MEGAPHONE_CONFIG_STATUS_ON 130 #define MEGAPHONE_CONFIG_STATUS_ON
  131 + #define IFLAY_TTS_1_CONFIG_STATUS_ON
  132 + #define IFLAY_TTS_2_CONFIG_STATUS_ON
  133 + #define ESPEAK_TTS_CONFIG_STATUS_ON
114 134
115 //是否开启媒体管理功能 135 //是否开启媒体管理功能
116 #define MEDIA_PROC_CONFIG_STATUS_ON 136 #define MEDIA_PROC_CONFIG_STATUS_ON
@@ -142,6 +162,9 @@ @@ -142,6 +162,9 @@
142 //默认开启光源模块 162 //默认开启光源模块
143 #define LIGHTING_STATUS_ON 163 #define LIGHTING_STATUS_ON
144 164
  165 + //默认开启探照灯模块
  166 + #define SEARCHLIGHT_STATUS_ON
  167 +
145 //默认开启云台模块 168 //默认开启云台模块
146 #define GIMBAL_STATUS_ON 169 #define GIMBAL_STATUS_ON
147 #endif 170 #endif
@@ -35,6 +35,9 @@ @@ -35,6 +35,9 @@
35 #include "AudioDeal/AudioDeal.h" 35 #include "AudioDeal/AudioDeal.h"
36 #endif 36 #endif
37 37
  38 +#ifdef SEARCHLIGHT_STATUS_ON
  39 + #include "Searchlight/Searchlight.h"
  40 +#endif
38 41
39 static int HalRecvMode = JZ_FLAGCODE_OFF; //接收模式,主要是为了限制不同设备同时要求hal层做出 同一个数据接收相关功能 ,目前做法是只限定一个hal设备使用一种数据接收模式 42 static int HalRecvMode = JZ_FLAGCODE_OFF; //接收模式,主要是为了限制不同设备同时要求hal层做出 同一个数据接收相关功能 ,目前做法是只限定一个hal设备使用一种数据接收模式
40 static int HalRecvDataLen = 0; //用于计算接收数据长度 43 static int HalRecvDataLen = 0; //用于计算接收数据长度
@@ -64,7 +67,7 @@ static T_JZsdkMutexHandle GetMusicList_MutexHandle = NULL; @@ -64,7 +67,7 @@ static T_JZsdkMutexHandle GetMusicList_MutexHandle = NULL;
64 67
65 /********* 68 /*********
66 * 69 *
67 - * 回复连接 70 + * 作为子设备,接收到连接帧,并回复连接 与设备号
68 * 71 *
69 * 72 *
70 **********/ 73 **********/
@@ -3003,20 +3006,25 @@ static T_JZsdkReturnCode RecvDeal_CheckStatus_SearchLightLightAttribute(int Port @@ -3003,20 +3006,25 @@ static T_JZsdkReturnCode RecvDeal_CheckStatus_SearchLightLightAttribute(int Port
3003 { 3006 {
3004 JZSDK_LOG_INFO("%s,灯光属性查询",JZsdk_DefineCode_GetPortName(Port)); 3007 JZSDK_LOG_INFO("%s,灯光属性查询",JZsdk_DefineCode_GetPortName(Port));
3005 3008
  3009 + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  3010 +
  3011 +#ifdef SEARCHLIGHT_STATUS_ON
3006 //1、获取帧的序列号 3012 //1、获取帧的序列号
3007 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 3013 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
3008 3014
3009 //2、查询灯光属性 3015 //2、查询灯光属性
3010 - int Light_Frequency;  
3011 - int Light_Mode;  
3012 - int Light_LeftLumen;  
3013 - int Light_RightLumen;  
3014 - T_JZsdkReturnCode ret = UIcontrol_CheckStatus_SearchLightLightAttribute(&Light_Frequency, &Light_Mode, &Light_LeftLumen, &Light_RightLumen); 3016 + ret = UIcontrol_FlushSearchLightLightAttribute();
  3017 +
  3018 + T_JzSearchLightAttribute LightAttribute;
  3019 + ret = SearchLight_Get_SearchLightAttribute(&LightAttribute);
  3020 +
3015 3021
3016 // 2、回复灯光属性 3022 // 2、回复灯光属性
3017 - HalSend_type1Send_SearchLight_Frequency(Port, Light_Frequency);  
3018 - HalSend_type1Send_SearchLight_Mode(Port, Light_Mode);  
3019 - HalSend_type1Send_SearchLight_Lumen(Port, Light_LeftLumen, Light_RightLumen); 3023 + HalSend_type1Send_SearchLight_Frequency(Port, LightAttribute.Frequency);
  3024 + HalSend_type1Send_SearchLight_Mode(Port, LightAttribute.Mode);
  3025 + HalSend_type1Send_SearchLight_Lumen(Port, LightAttribute.LeftBrightness, LightAttribute.RightBrightness);
  3026 +
  3027 +#endif
3020 3028
3021 return ret; 3029 return ret;
3022 } 3030 }
@@ -3880,11 +3888,53 @@ static T_JZsdkReturnCode RecvDeal_ObtainConnectFrame(int Port, char *getbuf) @@ -3880,11 +3888,53 @@ static T_JZsdkReturnCode RecvDeal_ObtainConnectFrame(int Port, char *getbuf)
3880 //获取帧的序列号 3888 //获取帧的序列号
3881 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 3889 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
3882 3890
3883 - //1、通过数据帧2,获取值  
3884 - int value = getbuf[10]; 3891 + //获取设备id
  3892 + //计算ID长度
  3893 + int FrameLenth = JZsdk_Get_FrameLength(getbuf);
  3894 + int IDLength = FrameLenth - 11;
3885 3895
3886 - //2、发送到本地处理  
3887 - //TestAPP_Connect(value); 3896 + //获取ID
  3897 + int DeviceID = 0;
  3898 +
  3899 + //将ID转换为int
  3900 + for (int i = 0; i < IDLength; i++)
  3901 + {
  3902 + DeviceID = DeviceID + (getbuf[9 + i] << (8 * (IDLength - i - 1)));
  3903 + }
  3904 +
  3905 + JZSDK_LOG_INFO("收到连接回复帧, 设备ID: %d", DeviceID);
  3906 +
  3907 + //将ID放入Hal信息
  3908 + s_JZsdk_Hal_Info *halInfo = JZsdk_Hal_GetHalInfo();
  3909 + if (halInfo == NULL)
  3910 + {
  3911 + JZSDK_LOG_ERROR("获取Hal信息失败");
  3912 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  3913 + }
  3914 +
  3915 + //遍历ID表
  3916 + for (int i = 0; i < halInfo->HalPort[Port].SubNum ; i++)
  3917 + {
  3918 + if (halInfo->HalPort[Port].SubId[i] == DeviceID)
  3919 + {
  3920 + JZSDK_LOG_INFO("已拥有设备ID: %d", DeviceID);
  3921 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  3922 + }
  3923 + }
  3924 +
  3925 + //添加ID
  3926 + if (halInfo->HalPort[Port].SubNum >= JZ_MAX_SUB_ID_NUM)
  3927 + {
  3928 + JZSDK_LOG_INFO("设备ID表已满");
  3929 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  3930 + }
  3931 + else
  3932 + {
  3933 + JZSDK_LOG_INFO("添加设备ID: %d", DeviceID);
  3934 + }
  3935 +
  3936 + halInfo->HalPort[Port].SubId[halInfo->HalPort[Port].SubNum] = DeviceID;
  3937 + halInfo->HalPort[Port].SubNum++;
3888 3938
3889 return ret; 3939 return ret;
3890 } 3940 }
@@ -4470,11 +4520,12 @@ static void *UartReinit_thread(void *arg) @@ -4470,11 +4520,12 @@ static void *UartReinit_thread(void *arg)
4470 4520
4471 int Port = arg_value[0]; 4521 int Port = arg_value[0];
4472 4522
4473 - int Value[1];  
4474 - Value[0]= arg_value[1]; 4523 + s_JZ_SerialPortHalRegInfo SerialInfo = {
  4524 + .BitRate = arg_value[1],
  4525 + .ConnectType = PORT_CONNECT_TYPE_AS_SUB
  4526 + };
4475 4527
4476 -  
4477 - JZsdk_HalPort_ReInit(Port, Value); 4528 + JZsdk_HalPort_ReInit(Port, (void *)&SerialInfo);
4478 4529
4479 JZSDK_LOG_INFO("串口重置完毕"); 4530 JZSDK_LOG_INFO("串口重置完毕");
4480 4531
@@ -5337,6 +5388,7 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi @@ -5337,6 +5388,7 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi
5337 //收到连接回复帧 5388 //收到连接回复帧
5338 case JZ_INSCODE_5BFRAME_INITIATECONNECT: 5389 case JZ_INSCODE_5BFRAME_INITIATECONNECT:
5339 RecvDeal_ObtainConnectFrame(Port,getbuf); 5390 RecvDeal_ObtainConnectFrame(Port,getbuf);
  5391 + return 0;
5340 break; 5392 break;
5341 5393
5342 //收到心跳帧 5394 //收到心跳帧
@@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
12 #include "./HalSend_type1.h" 12 #include "./HalSend_type1.h"
13 13
14 //发送主动连接帧 14 //发送主动连接帧
15 -T_JZsdkReturnCode HalSend_type1Send_ConnectFrame(int PortNum) 15 +T_JZsdkReturnCode HalSend_type1Send_ConnectFrame(int PortNum, int FrameSequence)
16 { 16 {
17 unsigned char sendbuf[256]; 17 unsigned char sendbuf[256];
18 int send_buf_len; 18 int send_buf_len;
@@ -20,8 +20,10 @@ T_JZsdkReturnCode HalSend_type1Send_ConnectFrame(int PortNum) @@ -20,8 +20,10 @@ T_JZsdkReturnCode HalSend_type1Send_ConnectFrame(int PortNum)
20 //1、获取帧样板 20 //1、获取帧样板
21 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_ASKFORCONNECT , sendbuf, &send_buf_len); 21 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_ASKFORCONNECT , sendbuf, &send_buf_len);
22 22
  23 + sendbuf[6] = FrameSequence; //帧序列
  24 +
23 //2、发送帧 25 //2、发送帧
24 - HalSend_SendData(PortNum ,sendbuf, send_buf_len, 1); 26 + HalSend_SendData(PortNum ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
25 27
26 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 28 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
27 } 29 }
@@ -918,7 +920,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalPitchAngle(int Uartport, int Fra @@ -918,7 +920,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalPitchAngle(int Uartport, int Fra
918 } 920 }
919 921
920 //设置当前云台角度 922 //设置当前云台角度
921 -T_JZsdkReturnCode HalSend_type1Send_Set_GimbalPitchAngle(int Uartport ,int angle) 923 +T_JZsdkReturnCode HalSend_type1Send_Set_GimbalPitchAngle(int Uartport ,int angle, int FrameSequence, int ReplyFlag)
922 { 924 {
923 //printf("发送设置云台角度帧 %d\n",angle); //该打印可能会造成卡顿 925 //printf("发送设置云台角度帧 %d\n",angle); //该打印可能会造成卡顿
924 unsigned char sendbuf[256]; 926 unsigned char sendbuf[256];
@@ -938,6 +940,8 @@ T_JZsdkReturnCode HalSend_type1Send_Set_GimbalPitchAngle(int Uartport ,int angle @@ -938,6 +940,8 @@ T_JZsdkReturnCode HalSend_type1Send_Set_GimbalPitchAngle(int Uartport ,int angle
938 sendbuf[9] = 0x00; 940 sendbuf[9] = 0x00;
939 } 941 }
940 942
  943 + sendbuf[5] = ReplyFlag; //应答位
  944 + sendbuf[6] = FrameSequence; //帧序列
941 sendbuf[10] = ((angle>>8) & 0xff); 945 sendbuf[10] = ((angle>>8) & 0xff);
942 sendbuf[11] = (angle & 0xff); 946 sendbuf[11] = (angle & 0xff);
943 947
@@ -963,7 +967,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalAngle(int Uartport ,int Fr @@ -963,7 +967,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalAngle(int Uartport ,int Fr
963 } 967 }
964 968
965 //微调云台pitch 969 //微调云台pitch
966 -T_JZsdkReturnCode HalSend_type1Send_Set_GimbalFineTuningPitch(int Uartport, int PitchFineTuning) 970 +T_JZsdkReturnCode HalSend_type1Send_Set_GimbalFineTuningPitch(int Uartport, int PitchFineTuning, int FrameSequence)
967 { 971 {
968 printf("发送微调云台pitch帧\n"); 972 printf("发送微调云台pitch帧\n");
969 unsigned char sendbuf[256]; 973 unsigned char sendbuf[256];
@@ -983,6 +987,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_GimbalFineTuningPitch(int Uartport, int @@ -983,6 +987,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_GimbalFineTuningPitch(int Uartport, int
983 sendbuf[9] = 0x00; 987 sendbuf[9] = 0x00;
984 } 988 }
985 989
  990 + sendbuf[6] = FrameSequence; //帧序列
986 sendbuf[10] = ((PitchFineTuning>>8) & 0xff); 991 sendbuf[10] = ((PitchFineTuning>>8) & 0xff);
987 sendbuf[11] = (PitchFineTuning & 0xff); 992 sendbuf[11] = (PitchFineTuning & 0xff);
988 993
@@ -1113,7 +1118,7 @@ T_JZsdkReturnCode HalSend_type1Send_SetGimbalRange(int Uartport,int FrameSequenc @@ -1113,7 +1118,7 @@ T_JZsdkReturnCode HalSend_type1Send_SetGimbalRange(int Uartport,int FrameSequenc
1113 ****************************************************************************************************************************************************/ 1118 ****************************************************************************************************************************************************/
1114 1119
1115 //发送设置探照灯爆闪频率 1120 //发送设置探照灯爆闪频率
1116 -T_JZsdkReturnCode HalSend_type1Send_Set_SearchLightFrequency(int Uartport ,int Frequency) 1121 +T_JZsdkReturnCode HalSend_type1Send_Set_SearchLightFrequency(int Uartport ,int Frequency, int FrameSequence)
1117 { 1122 {
1118 printf("发送设置爆闪频率帧\n"); 1123 printf("发送设置爆闪频率帧\n");
1119 1124
@@ -1125,13 +1130,14 @@ T_JZsdkReturnCode HalSend_type1Send_Set_SearchLightFrequency(int Uartport ,int F @@ -1125,13 +1130,14 @@ T_JZsdkReturnCode HalSend_type1Send_Set_SearchLightFrequency(int Uartport ,int F
1125 1130
1126 //2、写入数据 1131 //2、写入数据
1127 sendbuf[10] = Frequency; 1132 sendbuf[10] = Frequency;
  1133 + sendbuf[6] = FrameSequence;
1128 1134
1129 //3、发送帧 1135 //3、发送帧
1130 HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND); 1136 HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1131 } 1137 }
1132 1138
1133 //设置探照灯控制 1139 //设置探照灯控制
1134 -T_JZsdkReturnCode HalSend_type1Send_SearchLight_Control(int Uartport,int mode) 1140 +T_JZsdkReturnCode HalSend_type1Send_SearchLight_Control(int Uartport,int mode, int FrameSequence)
1135 { 1141 {
1136 printf("发送探照灯控制\n"); 1142 printf("发送探照灯控制\n");
1137 1143
@@ -1143,13 +1149,14 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Control(int Uartport,int mode) @@ -1143,13 +1149,14 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Control(int Uartport,int mode)
1143 1149
1144 //2、写入数据 1150 //2、写入数据
1145 sendbuf[10] = mode; 1151 sendbuf[10] = mode;
  1152 + sendbuf[6] = FrameSequence;
1146 1153
1147 //3、发送帧 1154 //3、发送帧
1148 HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND); 1155 HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1149 } 1156 }
1150 1157
1151 //设置探照灯亮度 1158 //设置探照灯亮度
1152 -T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetLumen(int Uartport, int LeftLumen, int RightLumen) 1159 +T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetLumen(int Uartport, int LeftLumen, int RightLumen, int FrameSequence)
1153 { 1160 {
1154 printf("发送设置探照灯亮度\n"); 1161 printf("发送设置探照灯亮度\n");
1155 1162
@@ -1162,12 +1169,37 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetLumen(int Uartport, int Left @@ -1162,12 +1169,37 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetLumen(int Uartport, int Left
1162 //2、写入数据 1169 //2、写入数据
1163 sendbuf[9] = LeftLumen; 1170 sendbuf[9] = LeftLumen;
1164 sendbuf[10] = RightLumen; 1171 sendbuf[10] = RightLumen;
  1172 + sendbuf[6] = FrameSequence;
  1173 +
  1174 + //3、发送帧
  1175 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
  1176 +}
  1177 +
  1178 +//设置单边探照灯亮度
  1179 +T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetSingleLumem(int Uartport, int Lumen, int FrameSequence)
  1180 +{
  1181 + printf("发送设置单边探照灯亮度\n");
  1182 +
  1183 + unsigned char sendbuf[256];
  1184 + int send_buf_len;
  1185 +
  1186 + //1、获取帧样板
  1187 + JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMEN, sendbuf, &send_buf_len);
  1188 +
  1189 + //2、将模板从14位改成13位
  1190 + sendbuf[4] = 0x0C;
  1191 + memcpy(&sendbuf[9], &sendbuf[10], 4);
  1192 + sendbuf[13] = 0x00;
  1193 + send_buf_len=send_buf_len--;
  1194 +
  1195 + //2、写入数据
  1196 + sendbuf[6] = FrameSequence;
  1197 + sendbuf[9] = Lumen;
1165 1198
1166 //3、发送帧 1199 //3、发送帧
1167 HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND); 1200 HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1168 } 1201 }
1169 1202
1170 -//发送  
1171 1203
1172 //查询探照灯频率 1204 //查询探照灯频率
1173 T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Frequency(int Uartport) 1205 T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Frequency(int Uartport)
@@ -1230,7 +1262,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Attribute(int Uartpo @@ -1230,7 +1262,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Attribute(int Uartpo
1230 } 1262 }
1231 1263
1232 //查询探照灯温度 1264 //查询探照灯温度
1233 -T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Temperture(int Uartport) 1265 +T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Temperture(int Uartport, int FrameSequence)
1234 { 1266 {
1235 printf("发送查询探照灯温度\n"); 1267 printf("发送查询探照灯温度\n");
1236 1268
@@ -1240,6 +1272,8 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Temperture(int Uartp @@ -1240,6 +1272,8 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Temperture(int Uartp
1240 //1、获取帧样板 1272 //1、获取帧样板
1241 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE, sendbuf, &send_buf_len); 1273 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE, sendbuf, &send_buf_len);
1242 1274
  1275 + sendbuf[6] = FrameSequence;
  1276 +
1243 //2、发送帧 1277 //2、发送帧
1244 HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND); 1278 HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1245 } 1279 }
@@ -24,7 +24,7 @@ extern "C" { @@ -24,7 +24,7 @@ extern "C" {
24 /* Exported types ------------------------------------------------------------*/ 24 /* Exported types ------------------------------------------------------------*/
25 T_JZsdkReturnCode HalSend_type1Send_Reply_Success(int Uartport ,int FrameSequence); 25 T_JZsdkReturnCode HalSend_type1Send_Reply_Success(int Uartport ,int FrameSequence);
26 T_JZsdkReturnCode HalSend_type1Send_Send_Connect(int Uartport , int FrameSequence,int Version_flag); 26 T_JZsdkReturnCode HalSend_type1Send_Send_Connect(int Uartport , int FrameSequence,int Version_flag);
27 -T_JZsdkReturnCode HalSend_type1Send_ConnectFrame(int PortNum); 27 +T_JZsdkReturnCode HalSend_type1Send_ConnectFrame(int PortNum, int FrameSequence);
28 T_JZsdkReturnCode HalSend_type1Send_Send_HeartBeatStatus(int Uartport , int FrameSequence,int HeartBeatStatus); 28 T_JZsdkReturnCode HalSend_type1Send_Send_HeartBeatStatus(int Uartport , int FrameSequence,int HeartBeatStatus);
29 29
30 T_JZsdkReturnCode HalSend_type1Send_Set_PowerStatus(int Uartport, int FrameSequence, int status); 30 T_JZsdkReturnCode HalSend_type1Send_Set_PowerStatus(int Uartport, int FrameSequence, int status);
@@ -69,9 +69,9 @@ T_JZsdkReturnCode HalSend_type1Send_Send_OpusList_Stop(int Uartport, int FrameSe @@ -69,9 +69,9 @@ T_JZsdkReturnCode HalSend_type1Send_Send_OpusList_Stop(int Uartport, int FrameSe
69 69
70 70
71 T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalPitchAngle(int Uartport, int FrameSequence ,int angle); 71 T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalPitchAngle(int Uartport, int FrameSequence ,int angle);
72 -T_JZsdkReturnCode HalSend_type1Send_Set_GimbalPitchAngle(int Uartport ,int angle); 72 +T_JZsdkReturnCode HalSend_type1Send_Set_GimbalPitchAngle(int Uartport ,int angle, int FrameSequence, int ReplyFlag);
73 T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalFineTuningPitch(int Uartport, int FrameSequence, int FineTunigPitch); 73 T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalFineTuningPitch(int Uartport, int FrameSequence, int FineTunigPitch);
74 -T_JZsdkReturnCode HalSend_type1Send_Set_GimbalFineTuningPitch(int Uartport, int PitchFineTuning); 74 +T_JZsdkReturnCode HalSend_type1Send_Set_GimbalFineTuningPitch(int Uartport, int PitchFineTuning, int FrameSequence);
75 T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalFineTuningPitch(int Uartport, int FrameSequence); 75 T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalFineTuningPitch(int Uartport, int FrameSequence);
76 T_JZsdkReturnCode HalSend_type1Send_Set_GimbalLinkageControl(int Uartport,int FrameSequence, int value); 76 T_JZsdkReturnCode HalSend_type1Send_Set_GimbalLinkageControl(int Uartport,int FrameSequence, int value);
77 T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalLinkage(int Uartport,int FrameSequence); 77 T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalLinkage(int Uartport,int FrameSequence);
@@ -88,9 +88,11 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_CurrentPlayTime(int Uartport ,int time @@ -88,9 +88,11 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_CurrentPlayTime(int Uartport ,int time
88 T_JZsdkReturnCode HalSend_type1Send_Reply_CurrentPlayTimeStatus(int Uartport, int FrameSequence ,int mode); 88 T_JZsdkReturnCode HalSend_type1Send_Reply_CurrentPlayTimeStatus(int Uartport, int FrameSequence ,int mode);
89 89
90 90
91 -T_JZsdkReturnCode HalSend_type1Send_Set_SearchLightFrequency(int Uartport ,int Frequency);  
92 -T_JZsdkReturnCode HalSend_type1Send_SearchLight_Control(int Uartport,int mode);  
93 -T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetLumen(int Uartport, int LeftLumen, int RightLumen); 91 +T_JZsdkReturnCode HalSend_type1Send_Set_SearchLightFrequency(int Uartport ,int Frequency, int FrameSequence);
  92 +T_JZsdkReturnCode HalSend_type1Send_SearchLight_Control(int Uartport,int mode, int FrameSequence);
  93 +T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetLumen(int Uartport, int LeftLumen, int RightLumen, int FrameSequence);
  94 +T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetSingleLumem(int Uartport, int Lumen, int FrameSequence);
  95 +
94 T_JZsdkReturnCode HalSend_type1Send_MessageSubcription_Control(int Uartport, int value); 96 T_JZsdkReturnCode HalSend_type1Send_MessageSubcription_Control(int Uartport, int value);
95 97
96 T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Status(int Uartport,int status, int mode); 98 T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Status(int Uartport,int status, int mode);
@@ -115,7 +117,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Frequency(int Uartpo @@ -115,7 +117,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Frequency(int Uartpo
115 T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Lumen(int Uartport); 117 T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Lumen(int Uartport);
116 T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Mode(int Uartport); 118 T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Mode(int Uartport);
117 T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Attribute(int Uartport); 119 T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Attribute(int Uartport);
118 -T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Temperture(int Uartport); 120 +T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Temperture(int Uartport, int FrameSequence);
119 121
120 122
121 T_JZsdkReturnCode HalSend_type1Send_WarningLight_Status(int Uartport, int status, int mode); 123 T_JZsdkReturnCode HalSend_type1Send_WarningLight_Status(int Uartport, int status, int mode);
@@ -24,48 +24,36 @@ T_JZsdkReturnCode JZsdk_Hal_Init() @@ -24,48 +24,36 @@ T_JZsdkReturnCode JZsdk_Hal_Init()
24 g_HalInfo = pOsalHandler->Malloc(sizeof(s_JZsdk_Hal_Info)); 24 g_HalInfo = pOsalHandler->Malloc(sizeof(s_JZsdk_Hal_Info));
25 } 25 }
26 26
  27 + //将结构体信息清空
  28 + memset(g_HalInfo, 0, sizeof(s_JZsdk_Hal_Info));
  29 +
27 //PSDK系列初始化 30 //PSDK系列初始化
28 for (int i = DEVICE_PSDK; i < UART_4G; i++) 31 for (int i = DEVICE_PSDK; i < UART_4G; i++)
29 { 32 {
30 - g_HalInfo->HalPort[i].UseFlag = JZ_FLAGCODE_OFF;  
31 - g_HalInfo->HalPort[i].ConnectStatus = JZ_FLAGCODE_OFF;  
32 - g_HalInfo->HalPort[i].HeartBeatStatusSend = JZ_FLAGCODE_OFF;  
33 g_HalInfo->HalPort[i].PortType = PORT_TYPE_PSDK; 33 g_HalInfo->HalPort[i].PortType = PORT_TYPE_PSDK;
34 } 34 }
35 35
36 //UART系列初始化 36 //UART系列初始化
37 for (int i = UART_4G; i < USB_DEV_1; i++) 37 for (int i = UART_4G; i < USB_DEV_1; i++)
38 { 38 {
39 - g_HalInfo->HalPort[i].UseFlag = JZ_FLAGCODE_OFF;  
40 - g_HalInfo->HalPort[i].ConnectStatus = JZ_FLAGCODE_OFF;  
41 - g_HalInfo->HalPort[i].HeartBeatStatusSend = JZ_FLAGCODE_OFF;  
42 g_HalInfo->HalPort[i].PortType = PORT_TYPE_UART; 39 g_HalInfo->HalPort[i].PortType = PORT_TYPE_UART;
43 } 40 }
44 41
45 //USB系列初始化 42 //USB系列初始化
46 for (int i = USB_DEV_1; i < NET_DEV_1; i++) 43 for (int i = USB_DEV_1; i < NET_DEV_1; i++)
47 { 44 {
48 - g_HalInfo->HalPort[i].UseFlag = JZ_FLAGCODE_OFF;  
49 - g_HalInfo->HalPort[i].ConnectStatus = JZ_FLAGCODE_OFF;  
50 - g_HalInfo->HalPort[i].HeartBeatStatusSend = JZ_FLAGCODE_OFF;  
51 g_HalInfo->HalPort[i].PortType = PORT_TYPE_USB; 45 g_HalInfo->HalPort[i].PortType = PORT_TYPE_USB;
52 } 46 }
53 47
54 //网口系列初始化 48 //网口系列初始化
55 for (int i = NET_DEV_1; i < HAL_DATA_TRANSMISSION; i++) 49 for (int i = NET_DEV_1; i < HAL_DATA_TRANSMISSION; i++)
56 { 50 {
57 - g_HalInfo->HalPort[i].UseFlag = JZ_FLAGCODE_OFF;  
58 - g_HalInfo->HalPort[i].ConnectStatus = JZ_FLAGCODE_OFF;  
59 - g_HalInfo->HalPort[i].HeartBeatStatusSend = JZ_FLAGCODE_OFF;  
60 g_HalInfo->HalPort[i].PortType = PORT_TYPE_NET; 51 g_HalInfo->HalPort[i].PortType = PORT_TYPE_NET;
61 } 52 }
62 53
63 //特殊数据层 54 //特殊数据层
64 for (int i = HAL_DATA_TRANSMISSION; i < HAL_MAX; i++) 55 for (int i = HAL_DATA_TRANSMISSION; i < HAL_MAX; i++)
65 { 56 {
66 - g_HalInfo->HalPort[i].UseFlag = JZ_FLAGCODE_OFF;  
67 - g_HalInfo->HalPort[i].ConnectStatus = JZ_FLAGCODE_OFF;  
68 - g_HalInfo->HalPort[i].HeartBeatStatusSend = JZ_FLAGCODE_OFF;  
69 g_HalInfo->HalPort[i].PortType = PORT_TYPE_TRANS_DATA; 57 g_HalInfo->HalPort[i].PortType = PORT_TYPE_TRANS_DATA;
70 } 58 }
71 59
@@ -141,12 +129,13 @@ T_JZsdkReturnCode JZsdk_HalPort_SetUseFlag(int PortName,int UseFlag) @@ -141,12 +129,13 @@ T_JZsdkReturnCode JZsdk_HalPort_SetUseFlag(int PortName,int UseFlag)
141 129
142 //用于给初始化函数调用 130 //用于给初始化函数调用
143 static T_JZsdkReturnCode JZsdK_HalPort_Init_Info(int PortName, int UseFlag 131 static T_JZsdkReturnCode JZsdK_HalPort_Init_Info(int PortName, int UseFlag
144 - , int ConnectStatus, int HeartBeatStatusSend, int PortType) 132 + , int ConnectStatus, int HeartBeatStatusSend, int PortType, int ConnectType)
145 { 133 {
146 g_HalInfo->HalPort[PortName].UseFlag = UseFlag; 134 g_HalInfo->HalPort[PortName].UseFlag = UseFlag;
147 g_HalInfo->HalPort[PortName].ConnectStatus = ConnectStatus; 135 g_HalInfo->HalPort[PortName].ConnectStatus = ConnectStatus;
148 g_HalInfo->HalPort[PortName].HeartBeatStatusSend = HeartBeatStatusSend; 136 g_HalInfo->HalPort[PortName].HeartBeatStatusSend = HeartBeatStatusSend;
149 g_HalInfo->HalPort[PortName].PortType = PortType; 137 g_HalInfo->HalPort[PortName].PortType = PortType;
  138 + g_HalInfo->HalPort[PortName].ConnectType = ConnectType;
150 139
151 //记录端口 140 //记录端口
152 JZsdk_HalPort_SetUseFlag(PortName, JZ_FLAGCODE_ON); 141 JZsdk_HalPort_SetUseFlag(PortName, JZ_FLAGCODE_ON);
@@ -161,14 +150,19 @@ static T_JZsdkReturnCode JZsdK_HalPort_Init_Info(int PortName, int UseFlag @@ -161,14 +150,19 @@ static T_JZsdkReturnCode JZsdK_HalPort_Init_Info(int PortName, int UseFlag
161 * uart初始化 value[0]为波特率 150 * uart初始化 value[0]为波特率
162 * 151 *
163 * ******************/ 152 * ******************/
164 -T_JZsdkReturnCode JZsdk_HalPort_Init(int PortName, int Value[]) 153 +T_JZsdkReturnCode JZsdk_HalPort_Init(int PortName, void *Value)
165 { 154 {
166 T_JZsdkReturnCode ret; 155 T_JZsdkReturnCode ret;
167 156
168 //psdk初始化 157 //psdk初始化
169 if (PortName >= DEVICE_PSDK && PortName < UART_4G) 158 if (PortName >= DEVICE_PSDK && PortName < UART_4G)
170 { 159 {
171 - JZsdK_HalPort_Init_Info(PortName, JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, JZ_FLAGCODE_OFF, PORT_TYPE_PSDK); 160 + JZsdK_HalPort_Init_Info(PortName,
  161 + JZ_FLAGCODE_ON,
  162 + JZ_FLAGCODE_OFF,
  163 + JZ_FLAGCODE_OFF,
  164 + PORT_TYPE_PSDK,
  165 + PORT_CONNECT_TYPE_AS_SUB);
172 166
173 JZSDK_LOG_INFO("hal%s 初始化",JZsdk_DefineCode_GetPortName(PortName)); 167 JZSDK_LOG_INFO("hal%s 初始化",JZsdk_DefineCode_GetPortName(PortName));
174 168
@@ -180,14 +174,25 @@ T_JZsdkReturnCode JZsdk_HalPort_Init(int PortName, int Value[]) @@ -180,14 +174,25 @@ T_JZsdkReturnCode JZsdk_HalPort_Init(int PortName, int Value[])
180 { 174 {
181 JZSDK_LOG_INFO("hal%s 初始化",JZsdk_DefineCode_GetPortName(PortName)); 175 JZSDK_LOG_INFO("hal%s 初始化",JZsdk_DefineCode_GetPortName(PortName));
182 176
183 - ret = JZsdk_Uart_ReInit(PortName, Value[0]); 177 + if (Value == NULL)
  178 + {
  179 + JZSDK_LOG_ERROR("hal%s 初始化失败,Value为NULL",JZsdk_DefineCode_GetPortName(PortName));
  180 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  181 + }
  182 +
  183 + s_JZ_SerialPortHalRegInfo *PortInfo = (s_JZ_SerialPortHalRegInfo *)Value;
  184 +
  185 + int BitRate = PortInfo->BitRate;
  186 + int ConnectType = PortInfo->ConnectType;
  187 +
  188 + ret = JZsdk_Uart_ReInit(PortName, BitRate);
184 if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) 189 if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
185 { 190 {
186 JZSDK_LOG_ERROR("hal%s 初始化失败",JZsdk_DefineCode_GetPortName(PortName)); 191 JZSDK_LOG_ERROR("hal%s 初始化失败",JZsdk_DefineCode_GetPortName(PortName));
187 return ret; 192 return ret;
188 } 193 }
189 194
190 - JZsdK_HalPort_Init_Info(PortName, JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, JZ_FLAGCODE_OFF, PORT_TYPE_UART); 195 + JZsdK_HalPort_Init_Info(PortName, JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, JZ_FLAGCODE_OFF, PORT_TYPE_UART, ConnectType);
191 196
192 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 197 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
193 } 198 }
@@ -207,7 +212,7 @@ T_JZsdkReturnCode JZsdk_HalPort_Init(int PortName, int Value[]) @@ -207,7 +212,7 @@ T_JZsdkReturnCode JZsdk_HalPort_Init(int PortName, int Value[])
207 //数据传输初始化 212 //数据传输初始化
208 if (PortName == HAL_DATA_TRANSMISSION) 213 if (PortName == HAL_DATA_TRANSMISSION)
209 { 214 {
210 - JZsdK_HalPort_Init_Info(PortName, JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, JZ_FLAGCODE_OFF, PORT_TYPE_TRANS_DATA); 215 + JZsdK_HalPort_Init_Info(PortName, JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, JZ_FLAGCODE_OFF, PORT_TYPE_TRANS_DATA, PORT_CONNECT_TYPE_AS_SUB);
211 216
212 JZSDK_LOG_INFO("hal%s 初始化",JZsdk_DefineCode_GetPortName(PortName)); 217 JZSDK_LOG_INFO("hal%s 初始化",JZsdk_DefineCode_GetPortName(PortName));
213 } 218 }
@@ -223,7 +228,7 @@ T_JZsdkReturnCode JZsdk_HalPort_Init(int PortName, int Value[]) @@ -223,7 +228,7 @@ T_JZsdkReturnCode JZsdk_HalPort_Init(int PortName, int Value[])
223 * 与init的区别是, Reinit 是要调用多线程来重初始化的 228 * 与init的区别是, Reinit 是要调用多线程来重初始化的
224 * 229 *
225 * ***************************/ 230 * ***************************/
226 -T_JZsdkReturnCode JZsdk_HalPort_ReInit(int PortName, int Value[]) 231 +T_JZsdkReturnCode JZsdk_HalPort_ReInit(int PortName, void *Value)
227 { 232 {
228 return JZsdk_HalPort_Init(PortName, Value); 233 return JZsdk_HalPort_Init(PortName, Value);
229 } 234 }
@@ -25,6 +25,8 @@ extern "C" { @@ -25,6 +25,8 @@ extern "C" {
25 /* Exported constants --------------------------------------------------------*/ 25 /* Exported constants --------------------------------------------------------*/
26 /* 常亮定义*/ 26 /* 常亮定义*/
27 27
  28 +#define JZ_MAX_SUB_ID_NUM 10
  29 +
28 typedef enum E_HAL_PORT_TYPE 30 typedef enum E_HAL_PORT_TYPE
29 { 31 {
30 PORT_TYPE_PSDK = 0, 32 PORT_TYPE_PSDK = 0,
@@ -35,6 +37,26 @@ typedef enum E_HAL_PORT_TYPE @@ -35,6 +37,26 @@ typedef enum E_HAL_PORT_TYPE
35 PORT_TYPE_TRANS_DATA = 4, 37 PORT_TYPE_TRANS_DATA = 4,
36 }E_HAL_PORT_TYPE; 38 }E_HAL_PORT_TYPE;
37 39
  40 +typedef enum E_HAL_CONNECT_TYPE
  41 +{
  42 + PORT_CONNECT_TYPE_AS_SUB = 0, //作为副设备
  43 + PORT_CONNECT_TYPE_AS_MAIN = 1, //作为主设备
  44 +
  45 +}E_HAL_CONNECT_TYPE;
  46 +
  47 +
  48 +/******************
  49 + *
  50 + * hal使用状态
  51 + *
  52 + * ********/
  53 +typedef struct s_JZ_SerialPortHalRegInfo
  54 +{
  55 + int BitRate; //波特率
  56 + E_HAL_CONNECT_TYPE ConnectType; //连接类型
  57 +}s_JZ_SerialPortHalRegInfo;
  58 +
  59 +
38 /****************** 60 /******************
39 * 61 *
40 * hal使用状态 62 * hal使用状态
@@ -45,9 +67,17 @@ typedef enum E_HAL_PORT_TYPE @@ -45,9 +67,17 @@ typedef enum E_HAL_PORT_TYPE
45 typedef struct s_JZsdk_HalStatus 67 typedef struct s_JZsdk_HalStatus
46 { 68 {
47 int UseFlag; //hal使用标志位 //初始化时开关关闭 69 int UseFlag; //hal使用标志位 //初始化时开关关闭
48 - int ConnectStatus; //接收过连接帧后打开  
49 - int HeartBeatStatusSend; //心跳帧的发送开关  
50 - int PortType; 70 + int PortType; //hal的端口类型
  71 + int ConnectType;//主副设备类型
  72 +
  73 +//作为主设备专有
  74 + int SubId[JZ_MAX_SUB_ID_NUM]; //副设备ID
  75 + int SubNum; //副设备数量
  76 +
  77 +//作为副设备专有
  78 + int HeartBeatStatusSend; //对主设备发送心跳帧的发送开关
  79 + int ConnectStatus; //连接状态,接收过连接帧后打开
  80 +
51 }s_JZsdk_HalStatus; 81 }s_JZsdk_HalStatus;
52 82
53 typedef struct s_JZsdk_Hal_Info 83 typedef struct s_JZsdk_Hal_Info
@@ -64,8 +94,8 @@ typedef struct s_JZsdk_Hal_Info @@ -64,8 +94,8 @@ typedef struct s_JZsdk_Hal_Info
64 int JZsdk_HalPort_UseFlag(int PortName); 94 int JZsdk_HalPort_UseFlag(int PortName);
65 T_JZsdkReturnCode JZsdk_HalPort_SetUseFlag(int PortName,int UseFlag); 95 T_JZsdkReturnCode JZsdk_HalPort_SetUseFlag(int PortName,int UseFlag);
66 96
67 -T_JZsdkReturnCode JZsdk_HalPort_Init(int PortName, int Value[]);  
68 -T_JZsdkReturnCode JZsdk_HalPort_ReInit(int PortName, int Value[]); 97 +T_JZsdkReturnCode JZsdk_HalPort_Init(int PortName, void *Value);
  98 +T_JZsdkReturnCode JZsdk_HalPort_ReInit(int PortName, void *Value);
69 99
70 T_JZsdkReturnCode JZsdk_Hal_Init(); 100 T_JZsdkReturnCode JZsdk_Hal_Init();
71 101
  1 +#include "JZsdkLib.h"
  2 +
  3 +/**************************
  4 + *
  5 + * i2c reset
  6 + *
  7 + *
  8 + * **********************/
  9 +// static T_JZsdkReturnCode JZsdk_HalI2c_i2cReset()
  10 +// {
  11 +// char systemCmd[JZSDK_CMD_SIZE] = {0};
  12 +
  13 +// JZ_U32 ret;
  14 +
  15 +// // 1. 导出GPIO
  16 +// sprintf(systemCmd, "echo %d > /sys/class/gpio/export", I2C_DEVICE_RESET_GPIO_NUM);
  17 +// ret = system(systemCmd);
  18 +// if (ret != 0) {
  19 +// printf("Export reset gpio failed, %d\r\n", ret);
  20 +// return; // 建议提前返回避免后续错误
  21 +// }
  22 +
  23 +// // 2. 设置方向为输出
  24 +// sprintf(systemCmd, "echo out > /sys/class/gpio/gpio%d/direction", I2C_DEVICE_RESET_GPIO_NUM);
  25 +// ret = system(systemCmd);
  26 +// if (ret != 0) {
  27 +// printf("Set gpio direction failed, %d\r\n", ret);
  28 +// goto unexport;
  29 +// }
  30 +
  31 +// // 3. 拉低复位引脚
  32 +// sprintf(systemCmd, "echo 0 > /sys/class/gpio/gpio%d/value", I2C_DEVICE_RESET_GPIO_NUM);
  33 +// ret = system(systemCmd);
  34 +// if (ret != 0) {
  35 +// printf("Set gpio value failed, %d\r\n", ret);
  36 +// goto unexport;
  37 +// }
  38 +
  39 +// usleep(I2C_DEVICE_RESET_TIME_US);
  40 +
  41 +// // 4. 拉高复位引脚
  42 +// sprintf(systemCmd, "echo 1 > /sys/class/gpio/gpio%d/value", I2C_DEVICE_RESET_GPIO_NUM);
  43 +// ret = system(systemCmd);
  44 +// if (ret != 0) {
  45 +// printf("Set gpio value failed, %d\r\n", ret);
  46 +// goto unexport;
  47 +// }
  48 +
  49 +// unexport:
  50 +// // 5. 取消导出GPIO
  51 +// sprintf(systemCmd, "echo %d > /sys/class/gpio/unexport", I2C_DEVICE_RESET_GPIO_NUM);
  52 +// system(systemCmd); // 忽略取消导出的返回值
  53 +
  54 +// }
  55 +
@@ -221,13 +221,14 @@ static void *UartDeal_rece(void *arg) @@ -221,13 +221,14 @@ static void *UartDeal_rece(void *arg)
221 // data_len2+=args->MessageLength; 221 // data_len2+=args->MessageLength;
222 // printf("当前接收长度%d bytesRead%d bmessage%d reslen%d\n",data_len,bytesRead,data_len2,args->ResLen); 222 // printf("当前接收长度%d bytesRead%d bmessage%d reslen%d\n",data_len,bytesRead,data_len2,args->ResLen);
223 223
224 - // JZSDK_LOG_INFO("从串口读取到,长度%d",(args->MessageLength-args->ResLen));  
225 -  
226 - // for (int i = 0; i < (args->MessageLength-args->ResLen); i++)  
227 - // {  
228 - // JZSDK_LOG_OUTPUTHEX("%s",&args->Message[i+args->ResLen]);  
229 - // } 224 +#if 1
  225 + JZSDK_LOG_INFO("从串口读取到,长度%d",(args->MessageLength-args->ResLen));
230 226
  227 + for (int i = 0; i < (args->MessageLength-args->ResLen); i++)
  228 + {
  229 + JZSDK_LOG_OUTPUTHEX("%s",&args->Message[i+args->ResLen]);
  230 + }
  231 +#endif
231 // 更新剩余长度 232 // 更新剩余长度
232 args->ResLen = 0; 233 args->ResLen = 0;
233 } 234 }
@@ -557,17 +558,17 @@ static void JZsdk_Uart_UartSend_Task(void *data) @@ -557,17 +558,17 @@ static void JZsdk_Uart_UartSend_Task(void *data)
557 558
558 if (taskData->Uart_name == UART_4G) 559 if (taskData->Uart_name == UART_4G)
559 { 560 {
560 - printf("4G设备发送\n"); 561 + printf("task4G设备发送\n");
561 write(Uart_4G_fd, taskData->str, taskData->str_lenth); 562 write(Uart_4G_fd, taskData->str, taskData->str_lenth);
562 } 563 }
563 else if (taskData->Uart_name == UART_DEV_1) 564 else if (taskData->Uart_name == UART_DEV_1)
564 { 565 {
565 - printf("串口1号设备发送\n"); 566 + printf("task串口1号设备发送\n");
566 write(Uart_DEV1_fd, taskData->str, taskData->str_lenth); 567 write(Uart_DEV1_fd, taskData->str, taskData->str_lenth);
567 } 568 }
568 else if (taskData->Uart_name == UART_DEV_2) 569 else if (taskData->Uart_name == UART_DEV_2)
569 { 570 {
570 - printf("串口2号设备发送\n"); 571 + printf("task串口2号设备发送\n");
571 write(Uart_DEV2_fd, taskData->str, taskData->str_lenth); 572 write(Uart_DEV2_fd, taskData->str, taskData->str_lenth);
572 } 573 }
573 else if (taskData->Uart_name == HAL_DATA_TRANSMISSION) 574 else if (taskData->Uart_name == HAL_DATA_TRANSMISSION)
@@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
3 #include <time.h> 3 #include <time.h>
4 #include <unistd.h> 4 #include <unistd.h>
5 #include <string.h> 5 #include <string.h>
  6 +#include <math.h>
6 #include "Attribute.h" 7 #include "Attribute.h"
7 8
8 // 每个月的天数表(索引0为占位) 9 // 每个月的天数表(索引0为占位)
@@ -16,6 +16,7 @@ @@ -16,6 +16,7 @@
16 #include "Gimbal/Gimbal.h" 16 #include "Gimbal/Gimbal.h"
17 #include "Gimbal/Gimbal_DataDeal/Gimbal_DataDeal.h" 17 #include "Gimbal/Gimbal_DataDeal/Gimbal_DataDeal.h"
18 #include "Gimbal/Gimbal_MotorFineTuning/MotorFineTuning.h" 18 #include "Gimbal/Gimbal_MotorFineTuning/MotorFineTuning.h"
  19 +#include "Gimbal/SingleCompensation/SingleCompensation.h"
19 20
20 #include "BaseConfig.h" 21 #include "BaseConfig.h"
21 #include "Hal_Send/HalSend.h" 22 #include "Hal_Send/HalSend.h"
@@ -33,6 +34,12 @@ static int g_MotorFineTuningPitch = 0; //pitch微调值 @@ -33,6 +34,12 @@ static int g_MotorFineTuningPitch = 0; //pitch微调值
33 static int g_MotorFineTuningYaw = 0; //yaw微调值 34 static int g_MotorFineTuningYaw = 0; //yaw微调值
34 static int g_MotorFineTuningRoll = 0; //roll微调值 35 static int g_MotorFineTuningRoll = 0; //roll微调值
35 36
  37 +//单边微调角度,并非会在每次调整角度后发送,而是在每次单边微调和初始化时发送
  38 +static T_JZ_SingleCompensationInfo g_SingleCompensationInfo = {
  39 + .Left_SingleCompensationValue = 0,
  40 + .Right_SingleCompensationValue = 0,
  41 +};
  42 +
36 //飞机自身角度 43 //飞机自身角度
37 static int Gimbal_UavSelfPitch = 0; 44 static int Gimbal_UavSelfPitch = 0;
38 45
@@ -366,7 +373,7 @@ T_JZsdkReturnCode Gimbal_Set_PitchFineTuning(int pitch) @@ -366,7 +373,7 @@ T_JZsdkReturnCode Gimbal_Set_PitchFineTuning(int pitch)
366 g_MotorFineTuningPitch = pitch; 373 g_MotorFineTuningPitch = pitch;
367 374
368 #if DEVICE_VERSION == JZ_H1T 375 #if DEVICE_VERSION == JZ_H1T
369 - HalSend_type1Send_Set_GimbalFineTuningPitch(UART_DEV_1, g_MotorFineTuningPitch); 376 + HalSend_type1Send_Set_GimbalFineTuningPitch(UART_DEV_1, g_MotorFineTuningPitch, 0x00);
370 #endif 377 #endif
371 } 378 }
372 break; 379 break;
@@ -619,6 +626,73 @@ T_JZsdkReturnCode Gimbal_Obtain_Gimbal_Pitch(int Pitch) @@ -619,6 +626,73 @@ T_JZsdkReturnCode Gimbal_Obtain_Gimbal_Pitch(int Pitch)
619 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 626 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
620 } 627 }
621 628
  629 +
  630 +/********************************
  631 + *
  632 + *
  633 + * 单边云台补偿值设置
  634 + *
  635 + *
  636 + * ************************************/
  637 +T_JZsdkReturnCode Gimbal_Set_SingleCompensation(int Mode, int Value)
  638 +{
  639 + //判断云台是否初始化完成
  640 + if (g_JZsdk_GimbalStatusFlag == JZ_FLAGCODE_OFF)
  641 + {
  642 + JZSDK_LOG_ERROR("云台未初始化");
  643 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  644 + }
  645 +
  646 + if (Mode == JZ_SINGLE_COMPENSATION_MODE_PITCH_LEFT)
  647 + {
  648 + JZSDK_LOG_INFO("设置单边补偿值,模式:左补偿,值:%d\n", Value);
  649 + g_SingleCompensationInfo.Left_SingleCompensationValue = g_SingleCompensationInfo.Left_SingleCompensationValue + Value;
  650 +
  651 + //设置本地的单边补偿值
  652 + SingleCompensation_SaveValues(&g_SingleCompensationInfo);
  653 +
  654 + //发送单边补偿值到云台
  655 + HalSend_type1Send_Set_GimbalFineTuningPitch(UART_DEV_2, g_SingleCompensationInfo.Left_SingleCompensationValue, 0x11);
  656 + }
  657 +
  658 + else if (Mode == JZ_SINGLE_COMPENSATION_MODE_PITCH_RIGHT)
  659 + {
  660 + JZSDK_LOG_INFO("设置单边补偿值,模式:右补偿,值:%d\n", Value);
  661 + g_SingleCompensationInfo.Right_SingleCompensationValue = g_SingleCompensationInfo.Right_SingleCompensationValue + Value;
  662 +
  663 + //设置本地的单边补偿值
  664 + SingleCompensation_SaveValues(&g_SingleCompensationInfo);
  665 +
  666 + //发送单边补偿值到云台
  667 + HalSend_type1Send_Set_GimbalFineTuningPitch(UART_DEV_2, g_SingleCompensationInfo.Right_SingleCompensationValue, 0x12);
  668 + }
  669 +
  670 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  671 +}
  672 +
  673 +
  674 +
  675 +
  676 +
  677 +
  678 +
  679 +
  680 +
  681 +
  682 +
  683 +
  684 +
  685 +
  686 +
  687 +
  688 +
  689 +
  690 +
  691 +
  692 +
  693 +
  694 +
  695 +
622 /************************************************************** 696 /**************************************************************
623 * 697 *
624 * 698 *
@@ -758,6 +832,13 @@ static T_JZsdkReturnCode Gimbal_Set_RealPitchAngle(int pitch, int FineTuningP, i @@ -758,6 +832,13 @@ static T_JZsdkReturnCode Gimbal_Set_RealPitchAngle(int pitch, int FineTuningP, i
758 832
759 833
760 834
  835 +
  836 +
  837 +
  838 +
  839 +
  840 +
  841 +
761 T_JZsdkReturnCode Get_JZsdk_GimbalStatusFlag() 842 T_JZsdkReturnCode Get_JZsdk_GimbalStatusFlag()
762 { 843 {
763 return g_JZsdk_GimbalStatusFlag; 844 return g_JZsdk_GimbalStatusFlag;
@@ -841,12 +922,28 @@ static T_JZsdkReturnCode Gimbal_Init_IndependentControl() @@ -841,12 +922,28 @@ static T_JZsdkReturnCode Gimbal_Init_IndependentControl()
841 { 922 {
842 g_Gimbal_Mode = JZ_MODULE_CONTROL_WAY_INDEPENDENT; 923 g_Gimbal_Mode = JZ_MODULE_CONTROL_WAY_INDEPENDENT;
843 924
  925 + T_JZsdkReturnCode ret;
  926 +
844 //舵机初始化 927 //舵机初始化
845 Gimal_MotorInit(); 928 Gimal_MotorInit();
846 929
847 //云台微调初始化 930 //云台微调初始化
848 MotorFineTuning_Init(&g_MotorFineTuningPitch, &g_MotorFineTuningYaw, &g_MotorFineTuningRoll); 931 MotorFineTuning_Init(&g_MotorFineTuningPitch, &g_MotorFineTuningYaw, &g_MotorFineTuningRoll);
849 932
  933 + //单边云台补偿初始化
  934 + ret = JZsdk_SingleCompensation_Init(&g_SingleCompensationInfo);
  935 + if ((JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS == ret) && (DEVICE_VERSION == JZ_T40))
  936 + {
  937 + JZSDK_LOG_INFO("单边云台补偿初始化成功, 读取到补偿值,左补偿值:%d,右补偿值:%d", g_SingleCompensationInfo.Left_SingleCompensationValue, g_SingleCompensationInfo.Right_SingleCompensationValue);
  938 +
  939 + //发送单边补偿值到云台
  940 + HalSend_type1Send_Set_GimbalFineTuningPitch(UART_DEV_2, g_SingleCompensationInfo.Left_SingleCompensationValue, 0x11);
  941 +
  942 + delayMs(500);
  943 +
  944 + HalSend_type1Send_Set_GimbalFineTuningPitch(UART_DEV_2, g_SingleCompensationInfo.Right_SingleCompensationValue, 0x12);
  945 + }
  946 +
850 //云台角度初始化 947 //云台角度初始化
851 Gimbal_Flush_Pitch(); 948 Gimbal_Flush_Pitch();
852 949
@@ -44,6 +44,8 @@ T_JZsdkReturnCode Gimbal_Obtain_GimbalLinkage(int GimbalLinkage); @@ -44,6 +44,8 @@ T_JZsdkReturnCode Gimbal_Obtain_GimbalLinkage(int GimbalLinkage);
44 T_JZsdkReturnCode Gimbal_CheckStatus_Angle(int *PitchAngle, int *YawAngle, int *RollAngle); 44 T_JZsdkReturnCode Gimbal_CheckStatus_Angle(int *PitchAngle, int *YawAngle, int *RollAngle);
45 T_JZsdkReturnCode Gimbal_Obtain_Gimbal_Pitch(int Pitch); 45 T_JZsdkReturnCode Gimbal_Obtain_Gimbal_Pitch(int Pitch);
46 46
  47 +T_JZsdkReturnCode Gimbal_Set_SingleCompensation(int Mode, int Value);
  48 +
47 49
48 T_JZsdkReturnCode Gimbal_PitchSelfangleMode(int Pitch); 50 T_JZsdkReturnCode Gimbal_PitchSelfangleMode(int Pitch);
49 int Gimbal_PitchScaleMode(int value); 51 int Gimbal_PitchScaleMode(int value);
@@ -115,12 +115,17 @@ T_JZsdkReturnCode Gimbal_DataDeal_SetRealAngle(int angle) @@ -115,12 +115,17 @@ T_JZsdkReturnCode Gimbal_DataDeal_SetRealAngle(int angle)
115 || DEVICE_VERSION == TF_A1 115 || DEVICE_VERSION == TF_A1
116 116
117 //发送角度给串口2 117 //发送角度给串口2
118 - HalSend_type1Send_Set_GimbalPitchAngle(UART_DEV_2, angle); 118 + HalSend_type1Send_Set_GimbalPitchAngle(UART_DEV_2, angle, 0, JZ_FLAGCODE_ON);
119 119
120 #elif DEVICE_VERSION == JZ_H1T 120 #elif DEVICE_VERSION == JZ_H1T
121 121
122 //发送角度给串口1 122 //发送角度给串口1
123 - HalSend_type1Send_Set_GimbalPitchAngle(UART_DEV_1, angle); 123 + HalSend_type1Send_Set_GimbalPitchAngle(UART_DEV_1, angle, 0, JZ_FLAGCODE_ON);
  124 +
  125 +#elif DEVICE_VERSION == JZ_T40
  126 +
  127 + //T40很特殊,需要控制两个子设备,所以要准备帧序列
  128 + HalSend_type1Send_Set_GimbalPitchAngle(UART_DEV_2, angle, 0x10, JZ_FLAGCODE_OFF);
124 129
125 #else 130 #else
126 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 131 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
@@ -67,6 +67,13 @@ extern "C" { @@ -67,6 +67,13 @@ extern "C" {
67 #define MAX_PITCH 300 67 #define MAX_PITCH 300
68 #define MIN_PITCH -900 68 #define MIN_PITCH -900
69 69
  70 +#elif DEVICE_VERSION == JZ_T40
  71 +
  72 +#define PITCH_PWM_MAX 0
  73 +#define PITCH_PWM_MIN 0
  74 +#define MAX_PITCH 300
  75 +#define MIN_PITCH -900
  76 +
70 #else 77 #else
71 78
72 #define PITCH_PWM_MAX 0 79 #define PITCH_PWM_MAX 0
  1 +#include <stdio.h>
  2 +#include "JZsdkLib.h"
  3 +
  4 +#include "./SingleCompensation.h"
  5 +
  6 +#define SINGLE_COMPENSATION_INFO_PATH "/root/SingleCompensationInfo.txt"
  7 +
  8 +
  9 +static T_JZsdkReturnCode SingleCompensation_ReadValues(T_JZ_SingleCompensationInfo *p_SingleCompensationInfo)
  10 +{
  11 + FILE *file = fopen(SINGLE_COMPENSATION_INFO_PATH, "r");
  12 +
  13 + // 如果文件不存在,创建默认文件
  14 + if (!file)
  15 + {
  16 + // 设置默认值
  17 + p_SingleCompensationInfo->Left_SingleCompensationValue = 0;
  18 + p_SingleCompensationInfo->Right_SingleCompensationValue = 0;
  19 +
  20 + // 创建文件并写入默认值
  21 + FILE *new_file = fopen(SINGLE_COMPENSATION_INFO_PATH, "w");
  22 + if (!new_file)
  23 + {
  24 + JZSDK_LOG_ERROR("Failed to create default config file");
  25 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  26 + }
  27 +
  28 + fprintf(new_file, "%d\n%d\n", p_SingleCompensationInfo->Left_SingleCompensationValue, p_SingleCompensationInfo->Right_SingleCompensationValue);
  29 + fclose(new_file);
  30 +
  31 + JZSDK_LOG_INFO("Created default config file with values: Left=0, Right=0");
  32 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  33 + }
  34 +
  35 + // 读取两个整数值
  36 + if (fscanf(file, "%d %d", &(p_SingleCompensationInfo->Left_SingleCompensationValue) , &(p_SingleCompensationInfo->Right_SingleCompensationValue)) != 2)
  37 + {
  38 + // 如果读取失败,使用默认值
  39 + p_SingleCompensationInfo->Left_SingleCompensationValue = 0;
  40 + p_SingleCompensationInfo->Right_SingleCompensationValue = 0;
  41 + }
  42 +
  43 + fclose(file);
  44 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  45 +}
  46 +
  47 +T_JZsdkReturnCode SingleCompensation_SaveValues(T_JZ_SingleCompensationInfo *p_SingleCompensationInfo)
  48 +{
  49 + FILE *file = fopen(SINGLE_COMPENSATION_INFO_PATH, "w");
  50 + if (!file) {
  51 + JZSDK_LOG_ERROR("Failed to open config file for writing");
  52 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  53 + }
  54 +
  55 + // 直接写入两个值
  56 + fprintf(file, "%d\n%d\n", p_SingleCompensationInfo->Left_SingleCompensationValue, p_SingleCompensationInfo->Right_SingleCompensationValue);
  57 + fclose(file);
  58 +
  59 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  60 +}
  61 +
  62 +
  63 +T_JZsdkReturnCode JZsdk_SingleCompensation_Init(T_JZ_SingleCompensationInfo *p_SingleCompensationInfo)
  64 +{
  65 + //读取本地的补偿值
  66 + SingleCompensation_ReadValues(p_SingleCompensationInfo);
  67 +
  68 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  69 +}
  70 +
  1 +
  2 +/**
  3 + ********************************************************************
  4 + * @file SingleCompensation.h
  5 + * SingleCompensation.h 的头文件
  6 + *
  7 + *********************************************************************
  8 + */
  9 +
  10 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  11 +#ifndef SINGLE_COMPENSATION_H
  12 +#define SINGLE_COMPENSATION_H
  13 +
  14 +/* Includes ------------------------------------------------------------------*/
  15 +#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
  16 +
  17 +#ifdef __cplusplus
  18 +extern "C" {
  19 +#endif
  20 +
  21 +/* Exported constants --------------------------------------------------------*/
  22 +/* 常亮定义*/
  23 +
  24 +typedef struct T_JZ_SingleCompensationInfo
  25 +{
  26 + int Left_SingleCompensationValue; //左单轴补偿值
  27 + int Right_SingleCompensationValue; //右单轴补偿值
  28 +}T_JZ_SingleCompensationInfo;
  29 +
  30 +/* Exported types ------------------------------------------------------------*/
  31 +
  32 +/* Exported functions --------------------------------------------------------*/
  33 +T_JZsdkReturnCode JZsdk_SingleCompensation_Init(T_JZ_SingleCompensationInfo *p_SingleCompensationInfo);
  34 +T_JZsdkReturnCode SingleCompensation_SaveValues(T_JZ_SingleCompensationInfo *p_SingleCompensationInfo);
  35 +
  36 +
  37 +
  38 +#ifdef __cplusplus
  39 +}
  40 +#endif
  41 +
  42 +#endif
@@ -63,28 +63,6 @@ static int PowerContorl; @@ -63,28 +63,6 @@ static int PowerContorl;
63 #define Page_Size (4096 * 2) 63 #define Page_Size (4096 * 2)
64 #define PIO_BASE_ADDRESS 0x01C20800 64 #define PIO_BASE_ADDRESS 0x01C20800
65 65
66 -#if DEVICE_VERSION == JZ_H1E  
67 - #define AMPLIFIER_PIN PB  
68 - #define AMPLIFIER_PIN_NUM 4  
69 -#elif DEVICE_VERSION == JZ_H1T  
70 - #define AMPLIFIER_PIN PG  
71 - #define AMPLIFIER_PIN_NUM 5  
72 -#elif DEVICE_VERSION == JZ_H10T  
73 - #define AMPLIFIER_PIN PG  
74 - #define AMPLIFIER_PIN_NUM 5  
75 -#elif DEVICE_VERSION == JZ_U3  
76 - #define AMPLIFIER_PIN PB  
77 - #define AMPLIFIER_PIN_NUM 4  
78 -#elif DEVICE_VERSION == TF_A1  
79 - #define AMPLIFIER_PIN PG  
80 - #define AMPLIFIER_PIN_NUM 5  
81 -#else  
82 - #define AMPLIFIER_PIN PB  
83 - #define AMPLIFIER_PIN_NUM 4  
84 -#endif  
85 -  
86 -  
87 -  
88 #define STATUS_LIGHT_PIN PG 66 #define STATUS_LIGHT_PIN PG
89 #define STATUS_LIGHT_PIN_NUM 2 67 #define STATUS_LIGHT_PIN_NUM 2
90 68
@@ -95,7 +73,7 @@ static uint32_t *gpio_dat = NULL; @@ -95,7 +73,7 @@ static uint32_t *gpio_dat = NULL;
95 static uint32_t *pwm_base_map = NULL; 73 static uint32_t *pwm_base_map = NULL;
96 static uint32_t *pwm1_period = NULL; 74 static uint32_t *pwm1_period = NULL;
97 75
98 -void GPIO_ConfigPin(PORT port, unsigned int pin, PIN_MODE mode) 76 +static void GPIO_ConfigPin(PORT port, unsigned int pin, PIN_MODE mode)
99 { 77 {
100 if (base_map == NULL) 78 if (base_map == NULL)
101 return; 79 return;
@@ -104,7 +82,7 @@ void GPIO_ConfigPin(PORT port, unsigned int pin, PIN_MODE mode) @@ -104,7 +82,7 @@ void GPIO_ConfigPin(PORT port, unsigned int pin, PIN_MODE mode)
104 printf("struct PIO_Struct size : %d\n",sizeof(PIO->Pn[port])); 82 printf("struct PIO_Struct size : %d\n",sizeof(PIO->Pn[port]));
105 } 83 }
106 84
107 -void GPIO_SetPin(PORT port, unsigned int pin, unsigned int level) 85 +static void GPIO_SetPin(PORT port, unsigned int pin, unsigned int level)
108 { 86 {
109 if (base_map == NULL) 87 if (base_map == NULL)
110 return; 88 return;
@@ -128,23 +106,6 @@ int GPIO_Free(void) @@ -128,23 +106,6 @@ int GPIO_Free(void)
128 } 106 }
129 107
130 108
131 -  
132 -  
133 -void V3s_set_amplifier(int amplifier_mode)  
134 -{ //功放开关  
135 - if(amplifier_mode==0)  
136 - {//关闭功放  
137 - printf("关闭功放\n");  
138 - GPIO_SetPin(AMPLIFIER_PIN,AMPLIFIER_PIN_NUM,0);  
139 - }  
140 - else if(amplifier_mode==1)  
141 - {//打开功放  
142 - printf("打开功放\n");  
143 - GPIO_SetPin(AMPLIFIER_PIN,AMPLIFIER_PIN_NUM,1);  
144 - }  
145 -}  
146 -  
147 -  
148 int V3s_PWM_contrl(int PWM_num) 109 int V3s_PWM_contrl(int PWM_num)
149 { 110 {
150 111
@@ -191,22 +152,22 @@ static void GPIO_mmap_Init() @@ -191,22 +152,22 @@ static void GPIO_mmap_Init()
191 } 152 }
192 153
193 154
194 -//状态灯初始化  
195 -static void Status_light_init()  
196 -{  
197 - //状态灯初始化  
198 - //这里已经将0x1c20000的地址映射到了内存中,但是我们需要的地址是0x01C20800,所以要再加上地址偏移量~  
199 - PIO = (PIO_Map *)((unsigned int)base_map + addr_offset);  
200 - printf("PIO:0x%.8X\n", PIO); 155 +// //状态灯初始化
  156 +// static void Status_light_init()
  157 +// {
  158 +// //状态灯初始化
  159 +// //这里已经将0x1c20000的地址映射到了内存中,但是我们需要的地址是0x01C20800,所以要再加上地址偏移量~
  160 +// PIO = (PIO_Map *)((unsigned int)base_map + addr_offset);
  161 +// printf("PIO:0x%.8X\n", PIO);
201 162
202 - GPIO_ConfigPin(STATUS_LIGHT_PIN,STATUS_LIGHT_PIN_NUM,OUT);  
203 -} 163 +// GPIO_ConfigPin(STATUS_LIGHT_PIN,STATUS_LIGHT_PIN_NUM,OUT);
  164 +// }
204 165
205 -static void Status_light()  
206 -{  
207 - //低电平亮  
208 - GPIO_SetPin(STATUS_LIGHT_PIN,STATUS_LIGHT_PIN_NUM,0);  
209 -} 166 +// static void Status_light()
  167 +// {
  168 +// //低电平亮
  169 +// GPIO_SetPin(STATUS_LIGHT_PIN,STATUS_LIGHT_PIN_NUM,0);
  170 +// }
210 171
211 static void PWM_init() //pwm初始化 172 static void PWM_init() //pwm初始化
212 { 173 {
@@ -261,89 +222,257 @@ static void PWM_init() //pwm初始化 @@ -261,89 +222,257 @@ static void PWM_init() //pwm初始化
261 printf("v3spwm初始化完成\n"); 222 printf("v3spwm初始化完成\n");
262 } 223 }
263 224
264 -static int V3S_Power_Pin_init() 225 +
  226 +
  227 +
  228 +// void V3s_Ircut_Init()//引脚初始化
  229 +// {
  230 +// GPIO_mmap_Init(); //GPIO 内存映射初始化
  231 +
  232 +// //这里已经将0x1c20000的地址映射到了内存中,但是我们需要的地址是0x01C20800,所以要再加上地址偏移量~
  233 +// PIO = (PIO_Map *)((unsigned int)base_map + addr_offset);
  234 +// printf("PIO:0x%.8X", PIO);
  235 +
  236 +// //静音引脚初始化
  237 +// GPIO_ConfigPin(AMPLIFIER_PIN,AMPLIFIER_PIN_NUM,OUT);
  238 +
  239 +// //10T要初始化电机引脚
  240 +// if (DEVICE_VERSION == JZ_H10T)
  241 +// {
  242 +// PWM_init() ; //pwm初始化
  243 +// GPIO_ConfigPin(PB,6,OUT); //对外供电初始化
  244 +// }
  245 +
  246 +// //激光引脚初始化
  247 +// if (DEVICE_VERSION == JZ_U3S)
  248 +// {
  249 +// GPIO_ConfigPin(PB,6,OUT);
  250 +// GPIO_ConfigPin(PB,7,OUT);
  251 +// }
  252 +
  253 +// //状态灯初始化
  254 +// //Status_light_init();
  255 +// //打开状态灯
  256 +// //Status_light();
  257 +// }
  258 +
  259 +
  260 +int V3s_Ircut_uInit()
265 { 261 {
266 - //这里已经将0x1c20000的地址映射到了内存中,但是我们需要的地址是0x01C20800,所以要再加上地址偏移量~  
267 - PIO = (PIO_Map *)((unsigned int)base_map + addr_offset);  
268 - printf("PIO:0x%.8X", PIO); 262 + //GPIO 内存映射移除
  263 + munmap(base_map, Page_Size);
  264 + printf("munmap success!\n");
  265 +}
  266 +
  267 +// void Ircut_V3S_Set_OutPutPowerControl(int power_control)
  268 +// {
  269 +// if (DEVICE_VERSION == JZ_H10T)
  270 +// {
  271 +// if (power_control == 1)
  272 +// {
  273 +// GPIO_ConfigPin(PB,6,OUT); //电源脚初始化
  274 +// GPIO_SetPin(PB,6,1); //打开开关
  275 +// }
  276 +// else if(power_control ==0)
  277 +// {
  278 +// GPIO_SetPin(PB,6,0); //关闭开关
  279 +// GPIO_ConfigPin(PB,6,DISABLE); //释放引脚
  280 +// }
  281 +
  282 +// }
  283 +
  284 +// }
  285 +
269 286
270 - if (DEVICE_VERSION == JZ_H10T) 287 +/********************
  288 + *
  289 + * 端口组换算
  290 + * 将JZSDK的端口组转换成V3S的端口组
  291 + *
  292 + * **********************/
  293 +static T_JZsdkReturnCode V3s_Port_Conversion(E_JZ_IRC_PORT port, PORT *v3s_port)
  294 +{
  295 + switch (port)
271 { 296 {
272 - GPIO_ConfigPin(PB,6,OUT); 297 + case JZ_IRC_PORT_PA:
  298 + *v3s_port = PA;
  299 + break;
  300 +
  301 + case JZ_IRC_PORT_PB:
  302 + *v3s_port = PB;
  303 + break;
  304 +
  305 + case JZ_IRC_PORT_PC:
  306 + *v3s_port = PC;
  307 + break;
273 308
  309 + case JZ_IRC_PORT_PD:
  310 + *v3s_port = PD;
  311 + break;
  312 +
  313 + case JZ_IRC_PORT_PE:
  314 + *v3s_port = PE;
  315 + break;
  316 +
  317 + case JZ_IRC_PORT_PF:
  318 + *v3s_port = PF;
  319 + break;
  320 +
  321 + case JZ_IRC_PORT_PG:
  322 + *v3s_port = PG;
  323 + break;
  324 +
  325 + default:
  326 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  327 + break;
274 } 328 }
275 329
  330 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
276 } 331 }
277 332
278 333
  334 +/********************
  335 + *
  336 + * 端口模式换算
  337 + * 将JZSDK的端口模式转换成V3S的端口模式
  338 + *
  339 + * **********************/
  340 +static T_JZsdkReturnCode V3s_PinMode_Conversion(E_JZ_IRC_PIN_MODE mode, PIN_MODE *v3s_mode)
  341 +{
  342 + switch (mode)
  343 + {
  344 + case JZ_IRC_PIN_MODE_IN:
  345 + *v3s_mode = IN;
  346 + break;
  347 +
  348 + case JZ_IRC_PIN_MODE_OUT:
  349 + *v3s_mode = OUT;
  350 + break;
  351 +
  352 + case JZ_IRC_PIN_MODE_AUX:
  353 + *v3s_mode = AUX;
  354 + break;
  355 +
  356 + case JZ_IRC_PIN_MODE_INT:
  357 + *v3s_mode = INT;
  358 + break;
279 359
  360 + case JZ_IRC_PIN_MODE_DISABLE:
  361 + *v3s_mode = DISABLE;
  362 + break;
280 363
281 -void V3s_Ircut_Init()//引脚初始化 364 + default:
  365 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  366 + break;
  367 + }
  368 +
  369 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  370 +}
  371 +
  372 +
  373 +T_JZsdkReturnCode JZsdk_V3s_Ircut_Init(IrcutInfo *ircut_info)
282 { 374 {
283 - GPIO_mmap_Init(); //GPIO 内存映射初始化 375 + //内存映射初始化
  376 + GPIO_mmap_Init();
284 377
  378 + //地址偏移量
285 //这里已经将0x1c20000的地址映射到了内存中,但是我们需要的地址是0x01C20800,所以要再加上地址偏移量~ 379 //这里已经将0x1c20000的地址映射到了内存中,但是我们需要的地址是0x01C20800,所以要再加上地址偏移量~
286 PIO = (PIO_Map *)((unsigned int)base_map + addr_offset); 380 PIO = (PIO_Map *)((unsigned int)base_map + addr_offset);
287 printf("PIO:0x%.8X", PIO); 381 printf("PIO:0x%.8X", PIO);
288 382
289 - //静音引脚初始化  
290 - GPIO_ConfigPin(AMPLIFIER_PIN,AMPLIFIER_PIN_NUM,OUT);  
291 -  
292 - //10T要初始化电机引脚  
293 - if (DEVICE_VERSION == JZ_H10T) 383 + //静音角引脚初始化
  384 + if (ircut_info->Amplifiter_Pin.Enable == JZ_FLAGCODE_ON)
  385 + {
  386 + //获取引脚组
  387 + PORT Amplifiter_Pin_port;
  388 + if(V3s_Port_Conversion(ircut_info->Amplifiter_Pin.Port, &Amplifiter_Pin_port) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
294 { 389 {
295 - PWM_init() ; //pwm初始化  
296 - GPIO_ConfigPin(PB,6,OUT); //对外供电初始化 390 + JZSDK_LOG_ERROR("V3s_Port_Conversion error!\n");
  391 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
297 } 392 }
298 393
299 - //激光引脚初始化  
300 - if (DEVICE_VERSION == JZ_U3S) 394 + //获取引脚模式
  395 + PIN_MODE Amplifiter_Pin_mode;
  396 + if(V3s_PinMode_Conversion(ircut_info->Amplifiter_Pin.mode, &Amplifiter_Pin_mode) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
301 { 397 {
302 - GPIO_ConfigPin(PB,6,OUT);  
303 - GPIO_ConfigPin(PB,7,OUT); 398 + JZSDK_LOG_ERROR("V3s_PinMode_Conversion error!\n");
  399 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
304 } 400 }
305 401
306 - //状态灯初始化  
307 - //Status_light_init();  
308 - //打开状态灯  
309 - //Status_light();  
310 -} 402 + //配置引脚
  403 + GPIO_ConfigPin(Amplifiter_Pin_port,ircut_info->Amplifiter_Pin.index,Amplifiter_Pin_mode);
  404 + }
  405 +
  406 + if (ircut_info->SideLight_Right_Pin.Enable == JZ_FLAGCODE_ON)
  407 + {
  408 + //获取引脚组
  409 + PORT SideLight_Right_Pin_port;
  410 + if(V3s_Port_Conversion(ircut_info->SideLight_Right_Pin.Port, &SideLight_Right_Pin_port) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  411 + {
  412 + JZSDK_LOG_ERROR("V3s_Port_Conversion error!\n");
  413 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  414 + }
311 415
  416 + //获取引脚模式
  417 + PIN_MODE SideLight_Right_Pin_mode;
  418 + if(V3s_PinMode_Conversion(ircut_info->SideLight_Right_Pin.mode, &SideLight_Right_Pin_mode) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  419 + {
  420 + JZSDK_LOG_ERROR("V3s_PinMode_Conversion error!\n");
  421 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  422 + }
312 423
313 -int V3s_Ircut_uInit()  
314 -{  
315 - //GPIO 内存映射移除  
316 - munmap(base_map, Page_Size);  
317 - printf("munmap success!\n");  
318 -} 424 + //配置引脚
  425 + GPIO_ConfigPin(SideLight_Right_Pin_port,ircut_info->SideLight_Right_Pin.index,SideLight_Right_Pin_mode);
  426 + }
319 427
320 -void Ircut_V3S_Set_OutPutPowerControl(int power_control)  
321 -{  
322 - if (DEVICE_VERSION == JZ_H10T) 428 + if (ircut_info->SideLight_Left_Pin.Enable == JZ_FLAGCODE_ON)
323 { 429 {
324 - if (power_control == 1) 430 + //获取引脚组
  431 + PORT SideLight_Left_Pin_port;
  432 + if(V3s_Port_Conversion(ircut_info->SideLight_Left_Pin.Port, &SideLight_Left_Pin_port) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
325 { 433 {
326 - GPIO_ConfigPin(PB,6,OUT); //电源脚初始化  
327 - GPIO_SetPin(PB,6,1); //打开开关 434 + JZSDK_LOG_ERROR("V3s_Port_Conversion error!\n");
  435 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
328 } 436 }
329 - else if(power_control ==0) 437 +
  438 + //获取引脚模式
  439 + PIN_MODE SideLight_Left_Pin_mode;
  440 + if(V3s_PinMode_Conversion(ircut_info->SideLight_Left_Pin.mode, &SideLight_Left_Pin_mode) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
330 { 441 {
331 - GPIO_SetPin(PB,6,0); //关闭开关  
332 - GPIO_ConfigPin(PB,6,DISABLE); //释放引脚 442 + JZSDK_LOG_ERROR("V3s_PinMode_Conversion error!\n");
  443 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  444 + }
  445 +
  446 + //配置引脚
  447 + GPIO_ConfigPin(SideLight_Left_Pin_port,ircut_info->SideLight_Left_Pin.index,SideLight_Left_Pin_mode);
333 } 448 }
334 449
  450 + if (ircut_info->PWM_1_Pin.Enable == JZ_FLAGCODE_ON)
  451 + {
  452 + //配置PWM
  453 + PWM_init();
335 } 454 }
336 455
  456 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
337 } 457 }
338 458
339 -/*********************** 459 +/***************************
340 * 460 *
341 - * 引脚控制 461 + * 设置引脚状态
342 * 462 *
343 * 463 *
344 - * ********************/  
345 -T_JZsdkReturnCode V3s_PinControl(int port, int num, int status) 464 + * ****************************/
  465 +T_JZsdkReturnCode JZsdk_V3s_Gpio_SetPin(E_JZ_IRC_PORT port, int index, int status)
346 { 466 {
  467 + //转换引脚组
  468 + PORT gpio_port;
  469 + if(V3s_Port_Conversion(port, &gpio_port) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  470 + {
  471 + JZSDK_LOG_ERROR("V3s_Port_Conversion error!\n");
  472 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  473 + }
  474 +
  475 + //转换引脚状态
347 int value = 0; 476 int value = 0;
348 if (status == JZ_FLAGCODE_ON) 477 if (status == JZ_FLAGCODE_ON)
349 { 478 {
@@ -354,5 +483,8 @@ T_JZsdkReturnCode V3s_PinControl(int port, int num, int status) @@ -354,5 +483,8 @@ T_JZsdkReturnCode V3s_PinControl(int port, int num, int status)
354 value = 0; 483 value = 0;
355 } 484 }
356 485
357 - GPIO_SetPin(port,num,value); //关闭开关 486 + //设置引脚状态
  487 + GPIO_SetPin(gpio_port, index, value);
  488 +
  489 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
358 } 490 }
@@ -2,12 +2,13 @@ @@ -2,12 +2,13 @@
2 #define V3S_IRCUT_H 2 #define V3S_IRCUT_H
3 3
4 #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" 4 #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
  5 +#include "Ircut/ircut.h"
5 6
6 -void V3s_Ircut_Init();  
7 int V3s_Ircut_uInit() ; 7 int V3s_Ircut_uInit() ;
8 -void V3s_set_amplifier(int amplifier_mode);  
9 int V3s_PWM_contrl(int PWM_num); 8 int V3s_PWM_contrl(int PWM_num);
10 -void Ircut_V3S_Set_OutPutPowerControl(int power_control);  
11 -T_JZsdkReturnCode V3s_PinControl(int port, int num, int status); 9 +
  10 +
  11 +T_JZsdkReturnCode JZsdk_V3s_Gpio_SetPin(E_JZ_IRC_PORT port, int index, int status);
  12 +T_JZsdkReturnCode JZsdk_V3s_Ircut_Init(IrcutInfo *ircut_info);
12 13
13 #endif 14 #endif
@@ -7,116 +7,219 @@ @@ -7,116 +7,219 @@
7 #include "JZsdkLib.h" 7 #include "JZsdkLib.h"
8 8
9 static int OutPutPower = JZ_FLAGCODE_OFF; 9 static int OutPutPower = JZ_FLAGCODE_OFF;
  10 +static IrcutInfo *T_Ircut_info = NULL;
  11 +static int Ircut_Init_flag = JZ_FLAGCODE_OFF;
10 12
11 -T_JZsdkReturnCode Ircut_Init()//引脚初始化 13 +/**************************
  14 + *
  15 + * 引脚初始化
  16 + *
  17 + *
  18 + * *************************/
  19 +T_JZsdkReturnCode Ircut_Init(IrcutInfo ircut_info)
12 { 20 {
  21 + if (T_Ircut_info != NULL)
  22 + {
  23 + Ircut_Init_flag = JZ_FLAGCODE_OFF;
  24 + free(T_Ircut_info);
  25 + T_Ircut_info = NULL;
  26 + }
  27 +
  28 + T_Ircut_info = (IrcutInfo *)malloc(sizeof(IrcutInfo));
  29 + if (T_Ircut_info == NULL)
  30 + {
  31 + JZSDK_LOG_ERROR("MODULE_IRCUT_INIT_MALLOC_ERROR");
  32 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  33 + }
  34 +
  35 + memcpy(T_Ircut_info, &ircut_info, sizeof(IrcutInfo));
  36 +
  37 + //初始化对应的引脚
13 if (DEVICE_VERSION == JZ_H1E || DEVICE_VERSION == JZ_H1T || DEVICE_VERSION == JZ_H10T || 38 if (DEVICE_VERSION == JZ_H1E || DEVICE_VERSION == JZ_H1T || DEVICE_VERSION == JZ_H10T ||
14 DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30|| 39 DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30||
15 - DEVICE_VERSION == TF_A1) 40 + DEVICE_VERSION == TF_A1 || DEVICE_VERSION == JZ_T40)
16 { 41 {
17 - V3s_Ircut_Init(); 42 + JZsdk_V3s_Ircut_Init(T_Ircut_info);
18 } 43 }
19 44
  45 + //暂不修改为新式
20 else if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T || DEVICE_VERSION == JZ_H10) 46 else if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T || DEVICE_VERSION == JZ_H10)
21 { 47 {
22 H3_ircut_init(); 48 H3_ircut_init();
23 } 49 }
  50 +
  51 + //暂不修改为新式
24 else if (DEVICE_VERSION == JZ_C1) 52 else if (DEVICE_VERSION == JZ_C1)
25 { 53 {
26 //快门引脚初始化 54 //快门引脚初始化
27 SysfsGPIO_Init_ircut(KT_IRC_SHUTTER_GPIO_NUM, "out"); 55 SysfsGPIO_Init_ircut(KT_IRC_SHUTTER_GPIO_NUM, "out");
28 } 56 }
29 -  
30 else 57 else
31 { 58 {
32 - printf("无引脚使用\n"); 59 + JZSDK_LOG_ERROR("无引脚使用\n");
  60 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
33 } 61 }
34 62
  63 + Ircut_Init_flag = JZ_FLAGCODE_ON;
  64 +
35 JZSDK_LOG_INFO("MODULE_IRCUT_INIT_COMPLETE"); 65 JZSDK_LOG_INFO("MODULE_IRCUT_INIT_COMPLETE");
36 66
37 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 67 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
38 } 68 }
39 69
40 -  
41 T_JZsdkReturnCode Ircut_uInit() 70 T_JZsdkReturnCode Ircut_uInit()
42 { 71 {
43 - if (DEVICE_VERSION == JZ_H1E) 72 +
  73 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  74 +}
  75 +
  76 +//PWM控制
  77 +// 函数:Ircut_PWM_control
  78 +// 功能:控制Ircut的PWM
  79 +// 参数:pwm_num:PWM编号
  80 +// 返回值:无
  81 +int Ircut_PWM_control(int pwm_num)
  82 +{
  83 + // 判断设备版本是否为JZ_H10T
  84 + if (DEVICE_VERSION == JZ_H10T)
44 { 85 {
45 - V3s_Ircut_uInit(); 86 + // 调用V3s_PWM_contrl函数,控制PWM
  87 + V3s_PWM_contrl(pwm_num);
46 } 88 }
  89 +}
  90 +
  91 +
  92 +
  93 +//查询是否有开启电源控制
  94 +T_JZsdkReturnCode Ircut_CheckStatus_OutPutPower(int *value)
  95 +{
  96 + if (DEVICE_VERSION == JZ_H10T)
  97 + {
  98 + *value = OutPutPower;
47 99
48 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 100 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  101 + }
  102 +
  103 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
49 } 104 }
50 105
51 -//功放开关  
52 -T_JZsdkReturnCode set_amplifier(int amplifier_mode) 106 +
  107 +
  108 +/**********************
  109 + *
  110 + * 引脚控制
  111 + *
  112 + *
  113 + * *****************/
  114 +T_JZsdkReturnCode Ircut_PinControl(E_JZ_IRC_PORT port, int index, int status)
53 { 115 {
  116 +
54 if (DEVICE_VERSION == JZ_H1E || DEVICE_VERSION == JZ_H1T || DEVICE_VERSION == JZ_H10T || 117 if (DEVICE_VERSION == JZ_H1E || DEVICE_VERSION == JZ_H1T || DEVICE_VERSION == JZ_H10T ||
55 - DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30 ||  
56 - DEVICE_VERSION == TF_A1) 118 + DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30||
  119 + DEVICE_VERSION == TF_A1 || DEVICE_VERSION == JZ_T40)
57 { 120 {
58 - V3s_set_amplifier(amplifier_mode); 121 + JZsdk_V3s_Gpio_SetPin(port, index, status);
59 } 122 }
60 123
61 if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T || DEVICE_VERSION == JZ_H10) 124 if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T || DEVICE_VERSION == JZ_H10)
62 { 125 {
63 - H3_ircut_set_amplifier(amplifier_mode); 126 + H3_ircut_set_amplifier(status);
64 } 127 }
65 128
66 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
67 } 129 }
68 130
69 -//PWM控制  
70 -int Ircut_PWM_control(int pwm_num) 131 +/*************************
  132 + *
  133 + * 侧面激光引脚控制
  134 + * index 0 左 1 右
  135 + * 0 绿 1 红
  136 + *
  137 + * ***********************/
  138 +T_JZsdkReturnCode Ircut_SideLaser_IrcutControl(int index, int status)
71 { 139 {
72 - if (DEVICE_VERSION == JZ_H10T) 140 + if (T_Ircut_info == NULL)
73 { 141 {
74 - V3s_PWM_contrl(pwm_num); 142 + JZSDK_LOG_ERROR("Ircut_info is NULL");
  143 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
75 } 144 }
76 -}  
77 145
78 -//对外电源控制  
79 -T_JZsdkReturnCode Ircut_Set_OutPutPower_Control(int value)  
80 -{  
81 - if (DEVICE_VERSION == JZ_H10T) 146 + if (index == 0 && T_Ircut_info->SideLight_Right_Pin.Enable == JZ_FLAGCODE_ON)
82 { 147 {
83 - if (value == JZ_FLAGCODE_OFF || value == JZ_FLAGCODE_ON)  
84 - {  
85 - Ircut_V3S_Set_OutPutPowerControl(value);  
86 - OutPutPower = value;  
87 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 148 + Ircut_PinControl(T_Ircut_info->SideLight_Right_Pin.Port,
  149 + T_Ircut_info->SideLight_Right_Pin.index,
  150 + status);
88 } 151 }
  152 + else if (index == 1 && T_Ircut_info->SideLight_Right_Pin.Enable == JZ_FLAGCODE_ON)
  153 + {
  154 + Ircut_PinControl(T_Ircut_info->SideLight_Left_Pin.Port,
  155 + T_Ircut_info->SideLight_Left_Pin.index,
  156 + status);
89 } 157 }
90 158
91 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 159 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
92 } 160 }
93 161
94 162
95 -//查询是否有开启电源控制  
96 -T_JZsdkReturnCode Ircut_CheckStatus_OutPutPower(int *value) 163 +/***********************************
  164 + *
  165 + * 功放开关
  166 + *
  167 + *
  168 + * ********************************/
  169 +T_JZsdkReturnCode set_amplifier(int amplifier_mode)
97 { 170 {
98 - if (DEVICE_VERSION == JZ_H10T) 171 + if (T_Ircut_info == NULL)
99 { 172 {
100 - *value = OutPutPower;  
101 -  
102 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 173 + JZSDK_LOG_ERROR("Ircut_info is NULL");
  174 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
103 } 175 }
104 176
  177 + if (T_Ircut_info->Amplifiter_Pin.Enable != JZ_FLAGCODE_ON)
  178 + {
  179 + JZSDK_LOG_ERROR("Amplifiter_Pin is not enable");
105 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 180 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  181 + }
  182 +
  183 + Ircut_PinControl(T_Ircut_info->Amplifiter_Pin.Port,
  184 + T_Ircut_info->Amplifiter_Pin.index,
  185 + amplifier_mode);
  186 +
  187 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
106 } 188 }
107 189
108 -/*********************** 190 +/***********************************
109 * 191 *
110 - * 引脚控制 192 + * 对外电源控制
111 * 193 *
112 * 194 *
113 - * ********************/  
114 -T_JZsdkReturnCode Ircut_PinControl(int port, int num, int status) 195 + * ********************************/
  196 +T_JZsdkReturnCode Ircut_Set_OutPutPower_Control(int value)
115 { 197 {
116 - if (DEVICE_VERSION == JZ_H1E || DEVICE_VERSION == JZ_H1T || DEVICE_VERSION == JZ_H10T ||  
117 - DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30 ||  
118 - DEVICE_VERSION == TF_A1) 198 +
  199 + if (T_Ircut_info == NULL)
  200 + {
  201 + JZSDK_LOG_ERROR("Ircut_info is NULL");
  202 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  203 + }
  204 +
  205 + if (T_Ircut_info->OutPutPower_Pin.Enable != JZ_FLAGCODE_ON)
119 { 206 {
120 - V3s_PinControl(port, num, status); 207 + JZSDK_LOG_ERROR("OutPutPower_Pin is not enable");
  208 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
121 } 209 }
  210 +
  211 + if (DEVICE_VERSION == JZ_H10T)
  212 + {
  213 + if (value == JZ_FLAGCODE_OFF || value == JZ_FLAGCODE_ON)
  214 + {
  215 +
  216 + Ircut_PinControl(T_Ircut_info->OutPutPower_Pin.Port,
  217 + T_Ircut_info->OutPutPower_Pin.index,
  218 + value);
  219 + OutPutPower = value;
  220 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  221 + }
  222 + }
  223 +
  224 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
122 } 225 }
@@ -20,19 +20,78 @@ extern "C" { @@ -20,19 +20,78 @@ extern "C" {
20 #endif 20 #endif
21 21
22 /* Exported constants --------------------------------------------------------*/ 22 /* Exported constants --------------------------------------------------------*/
  23 +typedef enum E_JZ_IRC_PORT{
  24 + JZ_IRC_PORT_PA = 0,
  25 + JZ_IRC_PORT_PB = 1,
  26 + JZ_IRC_PORT_PC = 2,
  27 + JZ_IRC_PORT_PD = 3,
  28 + JZ_IRC_PORT_PE = 4,
  29 + JZ_IRC_PORT_PF = 5,
  30 + JZ_IRC_PORT_PG = 6,
  31 +}E_JZ_IRC_PORT;
  32 +
  33 +typedef enum E_JZ_IRC_PIN_MODE{
  34 + JZ_IRC_PIN_MODE_IN = 0x00, //输入模式
  35 + JZ_IRC_PIN_MODE_OUT = 0x01, //输出模式
  36 + JZ_IRC_PIN_MODE_AUX = 0x02, //辅助模式
  37 + JZ_IRC_PIN_MODE_INT = 0x03, //中断模式
  38 + JZ_IRC_PIN_MODE_DISABLE = 0x04, //禁用模式
  39 +}E_JZ_IRC_PIN_MODE;
  40 +
  41 +typedef struct T_JZsdkIrcut_GpioInfo{
  42 + int Enable; //使能开关 jzoff关 jzon开
  43 + int Group; //引脚所在组
  44 + E_JZ_IRC_PORT Port; //引脚所在组的端口
  45 + int index; //引脚所在组中的第几个引脚
  46 + E_JZ_IRC_PIN_MODE mode; //引脚模式
  47 +}T_JZsdkIrcut_GpioInfo;
  48 +
  49 +typedef struct T_JZsdkIrcut_PwmInfo{
  50 + int Enable; //使能开关 jzoff关 jzon开
  51 +}T_JZsdkIrcut_PwmInfo;
  52 +
23 /* 常亮定义*/ 53 /* 常亮定义*/
  54 +/*******
  55 + *
  56 + * 引脚信息结构体
  57 + *
  58 + * ********/
  59 +typedef struct IrcutInfo
  60 +{
  61 +//喊话器引脚信息
  62 + //静音角
  63 + T_JZsdkIrcut_GpioInfo Amplifiter_Pin;
  64 +
  65 +
  66 +//侧面激光引脚信息
  67 + T_JZsdkIrcut_GpioInfo SideLight_Right_Pin;
  68 + T_JZsdkIrcut_GpioInfo SideLight_Left_Pin;
  69 +
  70 +//对外输出电源
  71 + T_JZsdkIrcut_GpioInfo OutPutPower_Pin;
  72 +
  73 +
  74 +//pwm引脚信息
  75 + //pwm引脚1
  76 + T_JZsdkIrcut_PwmInfo PWM_1_Pin;
  77 +
  78 +}IrcutInfo;
24 79
25 /* Exported types ------------------------------------------------------------*/ 80 /* Exported types ------------------------------------------------------------*/
26 81
27 /* Exported functions --------------------------------------------------------*/ 82 /* Exported functions --------------------------------------------------------*/
28 -T_JZsdkReturnCode Ircut_Init();  
29 T_JZsdkReturnCode Ircut_uInit() ; 83 T_JZsdkReturnCode Ircut_uInit() ;
30 -T_JZsdkReturnCode set_amplifier(int amplifier_mode); 84 +
31 int Ircut_PWM_control(int pwm_num); 85 int Ircut_PWM_control(int pwm_num);
32 -T_JZsdkReturnCode Ircut_Set_OutPutPower_Control(int value);  
33 T_JZsdkReturnCode Ircut_CheckStatus_OutPutPower(int *value); 86 T_JZsdkReturnCode Ircut_CheckStatus_OutPutPower(int *value);
34 87
35 -T_JZsdkReturnCode Ircut_PinControl(int port, int num, int status); 88 +
  89 +
  90 +T_JZsdkReturnCode Ircut_Init(IrcutInfo ircut_info);
  91 +T_JZsdkReturnCode Ircut_SideLaser_IrcutControl(int index, int status);
  92 +T_JZsdkReturnCode set_amplifier(int amplifier_mode);
  93 +T_JZsdkReturnCode Ircut_Set_OutPutPower_Control(int value);
  94 +
36 #ifdef __cplusplus 95 #ifdef __cplusplus
37 } 96 }
38 #endif 97 #endif
@@ -41,23 +41,23 @@ T_JZsdkReturnCode Lighting_Init() @@ -41,23 +41,23 @@ T_JZsdkReturnCode Lighting_Init()
41 * 探照灯 灯光属性 41 * 探照灯 灯光属性
42 * 42 *
43 ********************************************************************************************************************************/ 43 ********************************************************************************************************************************/
44 -//查询灯光属性  
45 -T_JZsdkReturnCode Lighting_CheckStatus_SearchLightLightAttribute(int *ValueFrequency, int *ValueMode, int *ValueLeftLumen, int *ValueRightLumen)  
46 -{  
47 - //1、刷新查询灯光属性  
48 - if (DEVICE_VERSION == JZ_H1T)  
49 - {  
50 - SearchLight_V3S_H1T_CheckStatus_LightAttribute();  
51 - } 44 +// //查询灯光属性
  45 +// T_JZsdkReturnCode Lighting_CheckStatus_SearchLightLightAttribute(int *ValueFrequency, int *ValueMode, int *ValueLeftLumen, int *ValueRightLumen)
  46 +// {
  47 +// //1、刷新查询灯光属性
  48 +// if (DEVICE_VERSION == JZ_H1T)
  49 +// {
  50 +// SearchLight_V3S_H1T_CheckStatus_LightAttribute();
  51 +// }
52 52
53 - //2、获取一次本地灯光属性  
54 - Lighting_Get_SearchLightMode(ValueMode);  
55 - Lighting_Get_SearchLightLumen(ValueLeftLumen, ValueRightLumen);  
56 - Lighting_Get_SearchLightFrequency(ValueFrequency); 53 +// //2、获取一次本地灯光属性
  54 +// Lighting_Get_SearchLightMode(ValueMode);
  55 +// Lighting_Get_SearchLightLumen(ValueLeftLumen, ValueRightLumen);
  56 +// Lighting_Get_SearchLightFrequency(ValueFrequency);
57 57
58 58
59 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
60 -} 59 +// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  60 +// }
61 61
62 /******************************************************************************************************************************** 62 /********************************************************************************************************************************
63 * 63 *
@@ -65,53 +65,57 @@ T_JZsdkReturnCode Lighting_CheckStatus_SearchLightLightAttribute(int *ValueFrequ @@ -65,53 +65,57 @@ T_JZsdkReturnCode Lighting_CheckStatus_SearchLightLightAttribute(int *ValueFrequ
65 * 65 *
66 ********************************************************************************************************************************/ 66 ********************************************************************************************************************************/
67 67
68 -//设置探照灯模式  
69 -T_JZsdkReturnCode Lighting_SearchLightControl(int mode)  
70 -{  
71 - printf("设置%x探照灯模式\n",DEVICE_VERSION); 68 +// //设置探照灯模式
  69 +// T_JZsdkReturnCode Lighting_SearchLightControl(int mode)
  70 +// {
  71 +// printf("设置%x探照灯模式\n",DEVICE_VERSION);
72 72
73 - SearchLight_Mode = mode; 73 +// SearchLight_Mode = mode;
74 74
75 - if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)  
76 - {  
77 - return SearchLight_V3S_U3_SearchLightControl(mode);  
78 - }  
79 - else if (DEVICE_VERSION == JZ_H1T)  
80 - {  
81 - return SearchLight_V3S_H1T_SearchLightControl(mode);  
82 - }  
83 - else if (DEVICE_VERSION == TF_A1)  
84 - {  
85 - return SearchLight_V3S_TFA1_SearchLightControl(mode);  
86 - } 75 +// if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
  76 +// {
  77 +// return SearchLight_V3S_U3_SearchLightControl(mode);
  78 +// }
  79 +// else if (DEVICE_VERSION == JZ_T40)
  80 +// {
  81 +// return SearchLight_V3S_T40_SearchLightControl(mode);
  82 +// }
  83 +// else if (DEVICE_VERSION == JZ_H1T)
  84 +// {
  85 +// return SearchLight_V3S_H1T_SearchLightControl(mode);
  86 +// }
  87 +// else if (DEVICE_VERSION == TF_A1)
  88 +// {
  89 +// return SearchLight_V3S_TFA1_SearchLightControl(mode);
  90 +// }
87 91
88 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
89 -} 92 +// return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  93 +// }
90 94
91 -//收到并修改探照灯模式(中继修改)  
92 -T_JZsdkReturnCode Lighting_Obtain_SearchLightMode(int mode)  
93 -{  
94 - printf("%x探照灯模式改变%d\n",DEVICE_VERSION, mode); 95 +// //收到并修改探照灯模式(中继修改)
  96 +// T_JZsdkReturnCode Lighting_Obtain_SearchLightMode(int mode)
  97 +// {
  98 +// printf("%x探照灯模式改变%d\n",DEVICE_VERSION, mode);
95 99
96 - SearchLight_Mode = mode; 100 +// SearchLight_Mode = mode;
97 101
98 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
99 -} 102 +// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  103 +// }
100 104
101 -//获取探照灯的灯光模式  
102 -T_JZsdkReturnCode Lighting_Get_SearchLightMode(int *mode)  
103 -{  
104 - *mode = SearchLight_Mode; 105 +// //获取探照灯的灯光模式
  106 +// T_JZsdkReturnCode Lighting_Get_SearchLightMode(int *mode)
  107 +// {
  108 +// *mode = SearchLight_Mode;
105 109
106 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
107 -} 110 +// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  111 +// }
108 112
109 -//查询探照灯灯光模式  
110 -T_JZsdkReturnCode Lighting_CheckStatus_SearchLightMode()  
111 -{ 113 +// //查询探照灯灯光模式
  114 +// T_JZsdkReturnCode Lighting_CheckStatus_SearchLightMode()
  115 +// {
112 116
113 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
114 -} 117 +// return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  118 +// }
115 119
116 120
117 /******************************************************************************************************************************** 121 /********************************************************************************************************************************
@@ -120,65 +124,71 @@ T_JZsdkReturnCode Lighting_CheckStatus_SearchLightMode() @@ -120,65 +124,71 @@ T_JZsdkReturnCode Lighting_CheckStatus_SearchLightMode()
120 * 124 *
121 ********************************************************************************************************************************/ 125 ********************************************************************************************************************************/
122 126
123 -//设置探照灯的灯光亮度  
124 -T_JZsdkReturnCode Lighting_Set_SearchLightLumen(int LeftLumen, int RightLumen)  
125 -{  
126 - printf("设置%x探照灯灯光亮度\n",DEVICE_VERSION);  
127 -  
128 - if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)  
129 - {  
130 - SearchLight_RightLumen = RightLumen;  
131 - SearchLight_LeftLumen = LeftLumen;  
132 - return SearchLight_V3S_U3_Set_SearchLightLumen(LeftLumen, RightLumen);  
133 - }  
134 - else if (DEVICE_VERSION == JZ_H1T)  
135 - {  
136 - return SearchLight_V3S_H1T_Set_SearchLightLumen(LeftLumen, RightLumen);  
137 - }  
138 - else if (DEVICE_VERSION == TF_A1)  
139 - {  
140 - SearchLight_RightLumen = RightLumen;  
141 - SearchLight_LeftLumen = LeftLumen;  
142 - return SearchLight_V3S_TFA1_Set_SearchLightLumen(LeftLumen, RightLumen);  
143 - }  
144 -  
145 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
146 -}  
147 -  
148 -//收到并修改探照灯的灯光亮度(中继修改)  
149 -T_JZsdkReturnCode Lighting_Obtain_SearchLightLumen(int LeftLumen, int RightLumen)  
150 -{  
151 - printf("接收到%x探照灯灯光亮度 左灯%d 右灯%d\n",DEVICE_VERSION, LeftLumen, RightLumen);  
152 -  
153 - //如果是主喊话器副灯的单一设备  
154 - if (DEVICE_VERSION == TF_A1 || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)  
155 - {  
156 -  
157 - }  
158 -  
159 - else  
160 - {  
161 - SearchLight_RightLumen = RightLumen;  
162 - SearchLight_LeftLumen = LeftLumen;  
163 - }  
164 -  
165 -  
166 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
167 -}  
168 -  
169 -//获取探照灯设置的灯光亮度  
170 -T_JZsdkReturnCode Lighting_Get_SearchLightLumen(int *LeftLumen, int *RightLumen)  
171 -{  
172 - *LeftLumen = SearchLight_LeftLumen;  
173 - *RightLumen = SearchLight_RightLumen;  
174 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
175 -}  
176 -  
177 -//查询探照灯灯光亮度  
178 -T_JZsdkReturnCode Lighting_CheckStatus_SearchLightLumen()  
179 -{  
180 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
181 -} 127 +// //设置探照灯的灯光亮度
  128 +// T_JZsdkReturnCode Lighting_Set_SearchLightLumen(int LeftLumen, int RightLumen)
  129 +// {
  130 +// printf("设置%x探照灯灯光亮度\n",DEVICE_VERSION);
  131 +
  132 +// if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
  133 +// {
  134 +// SearchLight_RightLumen = RightLumen;
  135 +// SearchLight_LeftLumen = LeftLumen;
  136 +// return SearchLight_V3S_U3_Set_SearchLightLumen(LeftLumen, RightLumen);
  137 +// }
  138 +// else if (DEVICE_VERSION == JZ_T40)
  139 +// {
  140 +// SearchLight_RightLumen = RightLumen;
  141 +// SearchLight_LeftLumen = LeftLumen;
  142 +// return SearchLight_V3S_T40_Set_SearchLightLumen(LeftLumen, RightLumen);
  143 +// }
  144 +// else if (DEVICE_VERSION == JZ_H1T)
  145 +// {
  146 +// return SearchLight_V3S_H1T_Set_SearchLightLumen(LeftLumen, RightLumen);
  147 +// }
  148 +// else if (DEVICE_VERSION == TF_A1)
  149 +// {
  150 +// SearchLight_RightLumen = RightLumen;
  151 +// SearchLight_LeftLumen = LeftLumen;
  152 +// return SearchLight_V3S_TFA1_Set_SearchLightLumen(LeftLumen, RightLumen);
  153 +// }
  154 +
  155 +// return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  156 +// }
  157 +
  158 +// //收到并修改探照灯的灯光亮度(中继修改)
  159 +// T_JZsdkReturnCode Lighting_Obtain_SearchLightLumen(int LeftLumen, int RightLumen)
  160 +// {
  161 +// printf("接收到%x探照灯灯光亮度 左灯%d 右灯%d\n",DEVICE_VERSION, LeftLumen, RightLumen);
  162 +
  163 +// //如果是主喊话器副灯的单一设备
  164 +// if (DEVICE_VERSION == TF_A1 || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
  165 +// {
  166 +
  167 +// }
  168 +
  169 +// else
  170 +// {
  171 +// SearchLight_RightLumen = RightLumen;
  172 +// SearchLight_LeftLumen = LeftLumen;
  173 +// }
  174 +
  175 +
  176 +// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  177 +// }
  178 +
  179 +// //获取探照灯设置的灯光亮度
  180 +// T_JZsdkReturnCode Lighting_Get_SearchLightLumen(int *LeftLumen, int *RightLumen)
  181 +// {
  182 +// *LeftLumen = SearchLight_LeftLumen;
  183 +// *RightLumen = SearchLight_RightLumen;
  184 +// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  185 +// }
  186 +
  187 +// //查询探照灯灯光亮度
  188 +// T_JZsdkReturnCode Lighting_CheckStatus_SearchLightLumen()
  189 +// {
  190 +// return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  191 +// }
182 192
183 193
184 194
@@ -188,107 +198,111 @@ T_JZsdkReturnCode Lighting_CheckStatus_SearchLightLumen() @@ -188,107 +198,111 @@ T_JZsdkReturnCode Lighting_CheckStatus_SearchLightLumen()
188 * 198 *
189 ********************************************************************************************************************************/ 199 ********************************************************************************************************************************/
190 200
191 -//设置爆闪灯频率  
192 -T_JZsdkReturnCode Lighting_Set_SearchLightFrequency(int value)  
193 -{  
194 - printf("设置0x%x:探照灯爆闪频率\n",DEVICE_VERSION);  
195 -  
196 - if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)  
197 - {  
198 - SearchLight_Frequency = value;  
199 - return SearchLight_V3S_U3_Set_SearchLightFrequency(value);  
200 - }  
201 - else if (DEVICE_VERSION == JZ_H1T)  
202 - {  
203 - return SearchLight_V3S_H1T_Set_SearchLightFrequency(value);  
204 - }  
205 - else if (DEVICE_VERSION == TF_A1)  
206 - {  
207 - return SearchLight_V3S_TFA1_Set_SearchLightFrequency(value);  
208 - }  
209 -  
210 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
211 -}  
212 -  
213 -//收到并修改探照灯的灯光频率(中继修改)  
214 -T_JZsdkReturnCode Lighting_Obtain_SearchLightFrequency(int Frequency)  
215 -{  
216 - printf("%x探照灯爆闪频率改变%d\n",DEVICE_VERSION, Frequency);  
217 -  
218 - SearchLight_Frequency = Frequency;  
219 -  
220 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
221 -}  
222 -  
223 -//获取探照灯的灯光频率  
224 -T_JZsdkReturnCode Lighting_Get_SearchLightFrequency(int *Frequency)  
225 -{  
226 - *Frequency = SearchLight_Frequency;  
227 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
228 -}  
229 -  
230 -//查询探照灯灯光频率  
231 -T_JZsdkReturnCode Lighting_CheckStatus_SearchLightFrequency()  
232 -{  
233 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
234 -}  
235 -  
236 -//收到并修改探照灯的温度(中继修改)  
237 -T_JZsdkReturnCode Lighting_Obtain_SearchLightTemperature(int LeftTemperature, int RightTemperature)  
238 -{  
239 - printf("设备0x1010%x探照灯温度改变左灯%d 右灯%d\n",DEVICE_VERSION, LeftTemperature ,RightTemperature);  
240 -  
241 - SearchLight_LeftTemperature = LeftTemperature;  
242 - SearchLight_RightTemperature = RightTemperature;  
243 -  
244 - int Max_tmeperature; //最大温度值  
245 -  
246 - Max_tmeperature = MAX(LeftTemperature, RightTemperature);  
247 -  
248 - //判断探照灯是否有打开  
249 - if (SearchLight_Mode == JZ_FLAGCODE_OFF)  
250 - {  
251 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
252 - }  
253 -  
254 - //如果是JZ u3  
255 - if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)  
256 - {  
257 - //输入温度进温度控制线程  
258 - SearchLightTemControl_Set_g_InputTemp(Max_tmeperature);  
259 - }  
260 - if (DEVICE_VERSION == TF_A1)  
261 - {  
262 - //输入温度进温度控制线程  
263 - SearchLightTemControl_Set_g_InputTemp(Max_tmeperature);  
264 - }  
265 -  
266 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
267 -}  
268 -  
269 -//获取探照灯的灯光温度  
270 -T_JZsdkReturnCode Lighting_Get_SearchLightTemperature(int *LeftTemperature, int *RightTemperature)  
271 -{  
272 - *LeftTemperature = SearchLight_LeftTemperature;  
273 - *RightTemperature = SearchLight_RightTemperature;  
274 -  
275 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
276 -}  
277 -  
278 -//查询灯光温度  
279 -T_JZsdkReturnCode Lighting_CheckStatus_SearchLightTemperture(int *ValueLeftTemperature, int *ValueRightTemperaturen)  
280 -{  
281 - //1、刷新查询灯光温度  
282 - if (DEVICE_VERSION == JZ_H1T)  
283 - {  
284 - SearchLight_V3S_H1T_CheckStatus_SearchLightTemperture();  
285 - }  
286 -  
287 - //2、获取一次本地灯光温度  
288 - Lighting_Get_SearchLightTemperature(ValueLeftTemperature, ValueRightTemperaturen);  
289 -  
290 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
291 -} 201 +// //设置爆闪灯频率
  202 +// T_JZsdkReturnCode Lighting_Set_SearchLightFrequency(int value)
  203 +// {
  204 +// printf("设置0x%x:探照灯爆闪频率\n",DEVICE_VERSION);
  205 +
  206 +// if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
  207 +// {
  208 +// SearchLight_Frequency = value;
  209 +// return SearchLight_V3S_U3_Set_SearchLightFrequency(value);
  210 +// }
  211 +// else if (DEVICE_VERSION == JZ_T40)
  212 +// {
  213 +// return SearchLight_V3S_T40_Set_SearchLightFrequency(value);
  214 +// }
  215 +// else if (DEVICE_VERSION == JZ_H1T)
  216 +// {
  217 +// return SearchLight_V3S_H1T_Set_SearchLightFrequency(value);
  218 +// }
  219 +// else if (DEVICE_VERSION == TF_A1)
  220 +// {
  221 +// return SearchLight_V3S_TFA1_Set_SearchLightFrequency(value);
  222 +// }
  223 +
  224 +// return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  225 +// }
  226 +
  227 +// //收到并修改探照灯的灯光频率(中继修改)
  228 +// T_JZsdkReturnCode Lighting_Obtain_SearchLightFrequency(int Frequency)
  229 +// {
  230 +// printf("%x探照灯爆闪频率改变%d\n",DEVICE_VERSION, Frequency);
  231 +
  232 +// SearchLight_Frequency = Frequency;
  233 +
  234 +// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  235 +// }
  236 +
  237 +// //获取探照灯的灯光频率
  238 +// T_JZsdkReturnCode Lighting_Get_SearchLightFrequency(int *Frequency)
  239 +// {
  240 +// *Frequency = SearchLight_Frequency;
  241 +// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  242 +// }
  243 +
  244 +// //查询探照灯灯光频率
  245 +// T_JZsdkReturnCode Lighting_CheckStatus_SearchLightFrequency()
  246 +// {
  247 +// return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  248 +// }
  249 +
  250 +// //收到并修改探照灯的温度(中继修改)
  251 +// T_JZsdkReturnCode Lighting_Obtain_SearchLightTemperature(int LeftTemperature, int RightTemperature)
  252 +// {
  253 +// printf("设备0x1010%x探照灯温度改变左灯%d 右灯%d\n",DEVICE_VERSION, LeftTemperature ,RightTemperature);
  254 +
  255 +// SearchLight_LeftTemperature = LeftTemperature;
  256 +// SearchLight_RightTemperature = RightTemperature;
  257 +
  258 +// int Max_tmeperature; //最大温度值
  259 +
  260 +// Max_tmeperature = MAX(LeftTemperature, RightTemperature);
  261 +
  262 +// //判断探照灯是否有打开
  263 +// if (SearchLight_Mode == JZ_FLAGCODE_OFF)
  264 +// {
  265 +// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  266 +// }
  267 +
  268 +// if (DEVICE_VERSION == JZ_U3 ||
  269 +// DEVICE_VERSION == JZ_U3S ||
  270 +// DEVICE_VERSION == JZ_U3D ||
  271 +// DEVICE_VERSION == JZ_U30 ||
  272 +// DEVICE_VERSION == TF_A1 ||
  273 +// DEVICE_VERSION == JZ_T40
  274 +// )
  275 +// {
  276 +// //输入温度进温度控制线程
  277 +// SearchLightTemControl_Set_g_InputTemp(Max_tmeperature);
  278 +// }
  279 +
  280 +// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  281 +// }
  282 +
  283 +// //获取探照灯的灯光温度
  284 +// T_JZsdkReturnCode Lighting_Get_SearchLightTemperature(int *LeftTemperature, int *RightTemperature)
  285 +// {
  286 +// *LeftTemperature = SearchLight_LeftTemperature;
  287 +// *RightTemperature = SearchLight_RightTemperature;
  288 +
  289 +// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  290 +// }
  291 +
  292 +// //查询灯光温度
  293 +// T_JZsdkReturnCode Lighting_CheckStatus_SearchLightTemperture(int *ValueLeftTemperature, int *ValueRightTemperaturen)
  294 +// {
  295 +// //1、刷新查询灯光温度
  296 +// if (DEVICE_VERSION == JZ_H1T)
  297 +// {
  298 +// SearchLight_V3S_H1T_CheckStatus_SearchLightTemperture();
  299 +// }
  300 +
  301 +// //2、获取一次本地灯光温度
  302 +// Lighting_Get_SearchLightTemperature(ValueLeftTemperature, ValueRightTemperaturen);
  303 +
  304 +// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  305 +// }
292 306
293 /******************************************************************************************************************************** 307 /********************************************************************************************************************************
294 * 308 *
@@ -428,35 +442,35 @@ T_JZsdkReturnCode Lighting_CheckStatus_WarningLightColor(int *ValueColor1, int * @@ -428,35 +442,35 @@ T_JZsdkReturnCode Lighting_CheckStatus_WarningLightColor(int *ValueColor1, int *
428 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 442 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
429 } 443 }
430 444
431 -/*********  
432 - *  
433 - *刷新亮度函数  
434 - *  
435 -**********/  
436 -T_JZsdkReturnCode JZsdk_SearchLight_FlushLumen(int InputLumen)  
437 -{  
438 - JZsdk_SearchLightTemControl_FlushLumen(InputLumen);  
439 -}  
440 -  
441 -/****************  
442 - *  
443 - * 获取消息订阅状态  
444 - *  
445 - * *************/  
446 -int JZsdk_SearchLight_GetMessageSubFlag(void)  
447 -{  
448 - return g_SearchLight_Subscription_Flag;  
449 -}  
450 -  
451 -/***************************  
452 - *  
453 - * 设置消息订阅状态  
454 - *  
455 - *  
456 -************************/  
457 -T_JZsdkReturnCode JZsdk_SearchLight_SetMessageSubFlag(int InputFlag)  
458 -{  
459 - g_SearchLight_Subscription_Flag = InputFlag;  
460 -  
461 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
462 -}  
  445 +// /*********
  446 +// *
  447 +// *刷新亮度函数
  448 +// *
  449 +// **********/
  450 +// T_JZsdkReturnCode JZsdk_SearchLight_FlushLumen(int InputLumen)
  451 +// {
  452 +// JZsdk_SearchLightTemControl_FlushLumen(InputLumen);
  453 +// }
  454 +
  455 +// /****************
  456 +// *
  457 +// * 获取消息订阅状态
  458 +// *
  459 +// * *************/
  460 +// int JZsdk_SearchLight_GetMessageSubFlag(void)
  461 +// {
  462 +// return g_SearchLight_Subscription_Flag;
  463 +// }
  464 +
  465 +// /***************************
  466 +// *
  467 +// * 设置消息订阅状态
  468 +// *
  469 +// *
  470 +// ************************/
  471 +// T_JZsdkReturnCode JZsdk_SearchLight_SetMessageSubFlag(int InputFlag)
  472 +// {
  473 +// g_SearchLight_Subscription_Flag = InputFlag;
  474 +
  475 +// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  476 +// }
@@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
8 T_JZsdkReturnCode SearchLight_V3S_H1T_Set_SearchLightFrequency(int value) 8 T_JZsdkReturnCode SearchLight_V3S_H1T_Set_SearchLightFrequency(int value)
9 { 9 {
10 //向H1T的单片机发送调节频率帧 10 //向H1T的单片机发送调节频率帧
11 - HalSend_type1Send_Set_SearchLightFrequency(UART_DEV_1, value); 11 + HalSend_type1Send_Set_SearchLightFrequency(UART_DEV_1, value, 0x00);
12 12
13 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 13 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
14 } 14 }
@@ -17,7 +17,7 @@ T_JZsdkReturnCode SearchLight_V3S_H1T_Set_SearchLightFrequency(int value) @@ -17,7 +17,7 @@ T_JZsdkReturnCode SearchLight_V3S_H1T_Set_SearchLightFrequency(int value)
17 T_JZsdkReturnCode SearchLight_V3S_H1T_SearchLightControl(int mode) 17 T_JZsdkReturnCode SearchLight_V3S_H1T_SearchLightControl(int mode)
18 { 18 {
19 //向H1T的单片机发送探照灯控制帧 19 //向H1T的单片机发送探照灯控制帧
20 - HalSend_type1Send_SearchLight_Control(UART_DEV_1, mode); 20 + HalSend_type1Send_SearchLight_Control(UART_DEV_1, mode, 0x00);
21 21
22 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 22 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
23 } 23 }
@@ -26,7 +26,7 @@ T_JZsdkReturnCode SearchLight_V3S_H1T_SearchLightControl(int mode) @@ -26,7 +26,7 @@ T_JZsdkReturnCode SearchLight_V3S_H1T_SearchLightControl(int mode)
26 T_JZsdkReturnCode SearchLight_V3S_H1T_Set_SearchLightLumen(int LeftLumen, int RightLumen) 26 T_JZsdkReturnCode SearchLight_V3S_H1T_Set_SearchLightLumen(int LeftLumen, int RightLumen)
27 { 27 {
28 //向H1T的单片机发送探照灯控制帧 28 //向H1T的单片机发送探照灯控制帧
29 - HalSend_type1Send_SearchLight_SetLumen(UART_DEV_1, LeftLumen, RightLumen); 29 + HalSend_type1Send_SearchLight_SetLumen(UART_DEV_1, LeftLumen, RightLumen, 0x00);
30 30
31 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 31 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
32 } 32 }
@@ -72,7 +72,7 @@ T_JZsdkReturnCode SearchLight_V3S_H1T_CheckStatus_LightAttribute() @@ -72,7 +72,7 @@ T_JZsdkReturnCode SearchLight_V3S_H1T_CheckStatus_LightAttribute()
72 T_JZsdkReturnCode SearchLight_V3S_H1T_CheckStatus_SearchLightTemperture() 72 T_JZsdkReturnCode SearchLight_V3S_H1T_CheckStatus_SearchLightTemperture()
73 { 73 {
74 //向H1T的单片机发送探照灯灯光模式查询帧 74 //向H1T的单片机发送探照灯灯光模式查询帧
75 - HalSend_type1Send_CheckStatus_SearchLight_Temperture(UART_DEV_1); 75 + HalSend_type1Send_CheckStatus_SearchLight_Temperture(UART_DEV_1, 0x00);
76 76
77 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 77 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
78 } 78 }
@@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
8 T_JZsdkReturnCode SearchLight_V3S_TFA1_Set_SearchLightFrequency(int value) 8 T_JZsdkReturnCode SearchLight_V3S_TFA1_Set_SearchLightFrequency(int value)
9 { 9 {
10 //向u3的单片机发送调节频率帧 10 //向u3的单片机发送调节频率帧
11 - HalSend_type1Send_Set_SearchLightFrequency(UART_DEV_2, value); 11 + HalSend_type1Send_Set_SearchLightFrequency(UART_DEV_2, value, 0x00);
12 12
13 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 13 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
14 } 14 }
@@ -16,7 +16,7 @@ T_JZsdkReturnCode SearchLight_V3S_TFA1_Set_SearchLightFrequency(int value) @@ -16,7 +16,7 @@ T_JZsdkReturnCode SearchLight_V3S_TFA1_Set_SearchLightFrequency(int value)
16 T_JZsdkReturnCode SearchLight_V3S_TFA1_SearchLightControl(int mode) 16 T_JZsdkReturnCode SearchLight_V3S_TFA1_SearchLightControl(int mode)
17 { 17 {
18 //向u3的单片机发送探照灯控制帧 18 //向u3的单片机发送探照灯控制帧
19 - HalSend_type1Send_SearchLight_Control(UART_DEV_2, mode); 19 + HalSend_type1Send_SearchLight_Control(UART_DEV_2, mode, 0x00);
20 20
21 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 21 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
22 } 22 }
@@ -25,10 +25,7 @@ T_JZsdkReturnCode SearchLight_V3S_TFA1_SearchLightControl(int mode) @@ -25,10 +25,7 @@ T_JZsdkReturnCode SearchLight_V3S_TFA1_SearchLightControl(int mode)
25 T_JZsdkReturnCode SearchLight_V3S_TFA1_Set_SearchLightLumen(int LeftLumen, int RightLumen) 25 T_JZsdkReturnCode SearchLight_V3S_TFA1_Set_SearchLightLumen(int LeftLumen, int RightLumen)
26 { 26 {
27 //向tfa1的单片机发送探照灯控制帧 27 //向tfa1的单片机发送探照灯控制帧
28 - HalSend_type1Send_SearchLight_SetLumen(UART_DEV_2, LeftLumen, RightLumen);  
29 -  
30 - //向tfa1的单片机发送查询亮度帧  
31 - //JZsdk_Uart_Send_SearchLight_CheckStatus_Lumen(UART_DEV_2); 28 + HalSend_type1Send_SearchLight_SetLumen(UART_DEV_2, LeftLumen, RightLumen, 0x00);
32 29
33 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 30 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
34 } 31 }
@@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
8 T_JZsdkReturnCode SearchLight_V3S_U3_Set_SearchLightFrequency(int value) 8 T_JZsdkReturnCode SearchLight_V3S_U3_Set_SearchLightFrequency(int value)
9 { 9 {
10 //向u3的单片机发送调节频率帧 10 //向u3的单片机发送调节频率帧
11 - HalSend_type1Send_Set_SearchLightFrequency(UART_DEV_2, value); 11 + HalSend_type1Send_Set_SearchLightFrequency(UART_DEV_2, value, 0x00);
12 12
13 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 13 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
14 } 14 }
@@ -16,7 +16,7 @@ T_JZsdkReturnCode SearchLight_V3S_U3_Set_SearchLightFrequency(int value) @@ -16,7 +16,7 @@ T_JZsdkReturnCode SearchLight_V3S_U3_Set_SearchLightFrequency(int value)
16 T_JZsdkReturnCode SearchLight_V3S_U3_SearchLightControl(int mode) 16 T_JZsdkReturnCode SearchLight_V3S_U3_SearchLightControl(int mode)
17 { 17 {
18 //向u3的单片机发送探照灯控制帧 18 //向u3的单片机发送探照灯控制帧
19 - HalSend_type1Send_SearchLight_Control(UART_DEV_2, mode); 19 + HalSend_type1Send_SearchLight_Control(UART_DEV_2, mode, 0x00);
20 20
21 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 21 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
22 } 22 }
@@ -24,7 +24,45 @@ T_JZsdkReturnCode SearchLight_V3S_U3_SearchLightControl(int mode) @@ -24,7 +24,45 @@ T_JZsdkReturnCode SearchLight_V3S_U3_SearchLightControl(int mode)
24 T_JZsdkReturnCode SearchLight_V3S_U3_Set_SearchLightLumen(int LeftLumen, int RightLumen) 24 T_JZsdkReturnCode SearchLight_V3S_U3_Set_SearchLightLumen(int LeftLumen, int RightLumen)
25 { 25 {
26 //向u3的单片机发送探照灯控制帧 26 //向u3的单片机发送探照灯控制帧
27 - HalSend_type1Send_SearchLight_SetLumen(UART_DEV_2, LeftLumen, RightLumen); 27 + HalSend_type1Send_SearchLight_SetLumen(UART_DEV_2, LeftLumen, RightLumen, 0x00);
  28 +
  29 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  30 +}
  31 +
  32 +
  33 +
  34 +
  35 +
  36 +
  37 +
  38 +/***********************************
  39 + *
  40 + * 以下为T40的临时存放
  41 + *
  42 + *
  43 + * ********************************/
  44 +
  45 +
  46 +T_JZsdkReturnCode SearchLight_V3S_T40_Set_SearchLightFrequency(int value)
  47 +{
  48 + //向u3的单片机发送调节频率帧
  49 + HalSend_type1Send_Set_SearchLightFrequency(UART_DEV_2, value, 0x20);
  50 +
  51 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  52 +}
  53 +
  54 +T_JZsdkReturnCode SearchLight_V3S_T40_SearchLightControl(int mode)
  55 +{
  56 + //向u3的单片机发送探照灯控制帧
  57 + HalSend_type1Send_SearchLight_Control(UART_DEV_2, mode, 0x20);
  58 +
  59 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  60 +}
  61 +
  62 +T_JZsdkReturnCode SearchLight_V3S_T40_Set_SearchLightLumen(int LeftLumen, int RightLumen)
  63 +{
  64 + //向单片机发送探照灯控制帧
  65 + HalSend_type1Send_SearchLight_SetSingleLumem(UART_DEV_2, LeftLumen, 0x20);
28 66
29 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 67 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
30 } 68 }
@@ -29,6 +29,10 @@ T_JZsdkReturnCode SearchLight_V3S_U3_SearchLightControl(int mode); @@ -29,6 +29,10 @@ T_JZsdkReturnCode SearchLight_V3S_U3_SearchLightControl(int mode);
29 T_JZsdkReturnCode SearchLight_V3S_U3_Set_SearchLightLumen(int LeftLumen, int RightLumen); 29 T_JZsdkReturnCode SearchLight_V3S_U3_Set_SearchLightLumen(int LeftLumen, int RightLumen);
30 30
31 31
  32 +T_JZsdkReturnCode SearchLight_V3S_T40_Set_SearchLightFrequency(int value);
  33 +T_JZsdkReturnCode SearchLight_V3S_T40_SearchLightControl(int mode);
  34 +T_JZsdkReturnCode SearchLight_V3S_T40_Set_SearchLightLumen(int LeftLumen, int RightLumen);
  35 +
32 #ifdef __cplusplus 36 #ifdef __cplusplus
33 } 37 }
34 #endif 38 #endif
@@ -8,6 +8,7 @@ @@ -8,6 +8,7 @@
8 #include "version_choose.h" 8 #include "version_choose.h"
9 #include "BaseConfig.h" 9 #include "BaseConfig.h"
10 10
  11 +#include "MediaProc/MediaProc.h"
11 #include "./VideoMgmt/VideoMgmt.h" 12 #include "./VideoMgmt/VideoMgmt.h"
12 #include "./MultProc/MultProc.h" 13 #include "./MultProc/MultProc.h"
13 #include "./MediaParm.h" 14 #include "./MediaParm.h"
@@ -50,8 +51,26 @@ static T_JZsdkReturnCode MediaProc_MultiThreading() @@ -50,8 +51,26 @@ static T_JZsdkReturnCode MediaProc_MultiThreading()
50 } 51 }
51 52
52 //视频流模块初始化 53 //视频流模块初始化
53 -T_JZsdkReturnCode MediaProc_Init() 54 +T_JZsdkReturnCode MediaProc_Init(T_JZsdkMediaProcHandler MediaProcHandler)
54 { 55 {
  56 + //初始化DCIM存储文件夹
  57 + if (JZsdk_check_directory_exists_posix("/root/sdcard/DCIM") != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  58 + {
  59 + JZsdk_Osal_Mkdir("/root/sdcard/DCIM");
  60 + }
  61 + //创建录像文件夹
  62 + if (JZsdk_check_directory_exists_posix("/root/sdcard/DCIM/Videos") != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  63 + {
  64 + JZsdk_Osal_Mkdir("/root/sdcard/DCIM/Videos");
  65 + }
  66 + //创建照片文件夹
  67 + if( JZsdk_check_directory_exists_posix("/root/sdcard/DCIM/Photos") != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  68 + {
  69 + JZsdk_Osal_Mkdir("/root/sdcard/DCIM/Photos");
  70 + }
  71 +
  72 + //初始化媒体模块
  73 + VideoMgmt_Init(MediaProcHandler.VideoMgmtHandler);
55 74
56 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 75 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
57 } 76 }
@@ -19,13 +19,19 @@ @@ -19,13 +19,19 @@
19 extern "C" { 19 extern "C" {
20 #endif 20 #endif
21 21
  22 +typedef struct T_JZsdkMediaProcHandler
  23 +{
  24 + T_JZsdkVideoMgmtHandler VideoMgmtHandler;
  25 +
  26 +}T_JZsdkMediaProcHandler;
  27 +
22 /* Exported constants --------------------------------------------------------*/ 28 /* Exported constants --------------------------------------------------------*/
23 /* 常亮定义*/ 29 /* 常亮定义*/
24 30
25 /* Exported types ------------------------------------------------------------*/ 31 /* Exported types ------------------------------------------------------------*/
26 32
27 /* Exported functions --------------------------------------------------------*/ 33 /* Exported functions --------------------------------------------------------*/
28 -T_JZsdkReturnCode MediaProc_Init(); 34 +T_JZsdkReturnCode MediaProc_Init(T_JZsdkMediaProcHandler MediaProcHandler);
29 35
30 36
31 37
@@ -11,9 +11,7 @@ @@ -11,9 +11,7 @@
11 #include "BaseConfig.h" 11 #include "BaseConfig.h"
12 #include "JZsdk_network/JZsdk_network.h" 12 #include "JZsdk_network/JZsdk_network.h"
13 13
14 -#if APP_VERSION == APP_PSDK  
15 - #include "JZsdk_PsdkExpansion/JZsdk_PsdkExpansion.h"  
16 -#endif 14 +#include "ExtensionAPI/JZsdk_ExpansionApi.h"
17 15
18 //推流入口 16 //推流入口
19 T_JZsdkReturnCode VideoStream_PushFrame(unsigned char* h264_data, unsigned int data_len) 17 T_JZsdkReturnCode VideoStream_PushFrame(unsigned char* h264_data, unsigned int data_len)
@@ -37,8 +35,12 @@ T_JZsdkReturnCode VideoStream_PushFrame(unsigned char* h264_data, unsigned int d @@ -37,8 +35,12 @@ T_JZsdkReturnCode VideoStream_PushFrame(unsigned char* h264_data, unsigned int d
37 35
38 //放入到对应的传输函数 36 //放入到对应的传输函数
39 #if APP_VERSION == APP_PSDK 37 #if APP_VERSION == APP_PSDK
40 - //大疆模式,往大疆入口推流  
41 - JZsdk_Expansion_Push_DJIH264Frame(h264_data, data_len); 38 +
  39 + T_JZsdkToPsdkHandler *JzsdkToPsdkHandle = ExpansionApi_JZsdkToPsdk_GetHandler();
  40 + if (JzsdkToPsdkHandle != NULL && JzsdkToPsdkHandle->push_DJIH264Frame_to_plane != NULL)
  41 + {
  42 + JzsdkToPsdkHandle->push_DJIH264Frame_to_plane(h264_data, data_len);
  43 + }
42 44
43 #elif APP_VERSION == APP_UART 45 #elif APP_VERSION == APP_UART
44 JZsdk_NetWork_SentData(h264_data, data_len); 46 JZsdk_NetWork_SentData(h264_data, data_len);
@@ -19,7 +19,6 @@ @@ -19,7 +19,6 @@
19 #include "Megaphone/MegTempControl/MegTempControl.h" 19 #include "Megaphone/MegTempControl/MegTempControl.h"
20 #include "../AudioDeal/AudioDeal.h" 20 #include "../AudioDeal/AudioDeal.h"
21 #include "./TTS/Megaphone_TTS.h" 21 #include "./TTS/Megaphone_TTS.h"
22 -#include "./TTS/cnTTS/cnTTS.h"  
23 #include "Megaphone/Music/AudioFile/Megaphone_AudioFile.h" 22 #include "Megaphone/Music/AudioFile/Megaphone_AudioFile.h"
24 #include "Megaphone/Music/RealTimeMP2/Megaphone_RealTimeMP2.h" 23 #include "Megaphone/Music/RealTimeMP2/Megaphone_RealTimeMP2.h"
25 #include "Megaphone/opus/Megaphone_Opus.h" 24 #include "Megaphone/opus/Megaphone_Opus.h"
@@ -167,20 +166,12 @@ static T_JZsdkReturnCode Megaphone_Play(struct MegaphoneInfo *IndexInfo, enum Me @@ -167,20 +166,12 @@ static T_JZsdkReturnCode Megaphone_Play(struct MegaphoneInfo *IndexInfo, enum Me
167 166
168 switch (status) 167 switch (status)
169 { 168 {
170 - case AUDIO_PLAY_STATUS_IFLAY_TTS: 169 + case AUDIO_PLAY_STATUS_TTS:
171 { 170 {
172 - JZSDK_LOG_INFO("音频播放:cnTTS"); 171 + JZSDK_LOG_INFO("音频播放:TTS");
173 172
174 - //播放讯飞tts  
175 - ret = Megaphone_cnTTS_Play(IndexInfo->str, IndexInfo->str_len, ReplyFlag);  
176 - }  
177 - break;  
178 -  
179 - case ADDIO_PLAY_STATUS_ESPEAK_TTS:  
180 - {  
181 - JZSDK_LOG_INFO("音频播放:esTTS");  
182 -  
183 - ret = Espeak_tts(IndexInfo->str , IndexInfo->str_len); 173 + //播放tts
  174 + ret = Megaphone_Tts_Play(IndexInfo->str, IndexInfo->str_len, ReplyFlag);
184 } 175 }
185 break; 176 break;
186 177
@@ -304,14 +295,7 @@ T_JZsdkReturnCode Megaphone_TTS_Play(unsigned char *str, unsigned int str_len, i @@ -304,14 +295,7 @@ T_JZsdkReturnCode Megaphone_TTS_Play(unsigned char *str, unsigned int str_len, i
304 //1、获取当前音色 295 //1、获取当前音色
305 int tone = TTS_Get_tone(); 296 int tone = TTS_Get_tone();
306 297
307 - if (tone >= 0x00 && tone <= 0x36)  
308 - {  
309 - ret = Megaphone_Play(g_MegaphoneInfo, AUDIO_PLAY_STATUS_IFLAY_TTS, ReplyFlag);  
310 - }  
311 - else  
312 - {  
313 - ret = Megaphone_Play(g_MegaphoneInfo, ADDIO_PLAY_STATUS_ESPEAK_TTS, ReplyFlag);  
314 - } 298 + ret = Megaphone_Play(g_MegaphoneInfo, AUDIO_PLAY_STATUS_TTS, ReplyFlag);
315 299
316 //检测是否开启了预设模式,且属于是需要回复即正常播放的tts,保存tts文本和音色 300 //检测是否开启了预设模式,且属于是需要回复即正常播放的tts,保存tts文本和音色
317 if (PrsetTask_GetPrsetTaskSaveContentFlag() == JZ_FLAGCODE_ON) 301 if (PrsetTask_GetPrsetTaskSaveContentFlag() == JZ_FLAGCODE_ON)
@@ -973,6 +957,22 @@ T_JZsdkReturnCode Megaphone_Init_OnlyTTs() @@ -973,6 +957,22 @@ T_JZsdkReturnCode Megaphone_Init_OnlyTTs()
973 } 957 }
974 958
975 MegaphoneStatusFlag = JZ_FLAGCODE_ON; 959 MegaphoneStatusFlag = JZ_FLAGCODE_ON;
  960 +
  961 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  962 +}
  963 +
  964 +/***************
  965 + *
  966 + * 喊话器反初始化tts
  967 + *
  968 + * **************/
  969 +T_JZsdkReturnCode Megaphone_DeInit_OnlyTTs()
  970 +{
  971 + Megaphone_TTS_DeInit();
  972 +
  973 + MegaphoneStatusFlag = JZ_FLAGCODE_OFF;
  974 +
  975 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
976 } 976 }
977 977
978 978
@@ -1184,9 +1184,7 @@ static T_JZsdkReturnCode Megaphone_ConvertPlayStatus(int status) @@ -1184,9 +1184,7 @@ static T_JZsdkReturnCode Megaphone_ConvertPlayStatus(int status)
1184 } 1184 }
1185 1185
1186 //B、查询是否在播放文本 1186 //B、查询是否在播放文本
1187 - if (status == AUDIO_PLAY_STATUS_IFLAY_TTS  
1188 - || status == ADDIO_PLAY_STATUS_ESPEAK_TTS  
1189 - ) 1187 + if (status == AUDIO_PLAY_STATUS_TTS)
1190 { 1188 {
1191 return 0x20; 1189 return 0x20;
1192 } 1190 }
@@ -38,8 +38,7 @@ typedef enum MegaphonePlayStatus @@ -38,8 +38,7 @@ typedef enum MegaphonePlayStatus
38 { 38 {
39 AUDIO_PLAY_STATUS_IDLE = 0x00, //空闲状态 39 AUDIO_PLAY_STATUS_IDLE = 0x00, //空闲状态
40 AUDIO_PLAY_STATUS_MUSIC = 0x01, //播放歌曲 40 AUDIO_PLAY_STATUS_MUSIC = 0x01, //播放歌曲
41 - AUDIO_PLAY_STATUS_IFLAY_TTS = 0x02, //播放讯飞文本  
42 - ADDIO_PLAY_STATUS_ESPEAK_TTS = 0x03, //espeak文本 41 + AUDIO_PLAY_STATUS_TTS = 0x02, //播放文本
43 AUDIO_PLAY_STATUS_OPUS_REAL_TIME = 0x04, //opus实时语音 42 AUDIO_PLAY_STATUS_OPUS_REAL_TIME = 0x04, //opus实时语音
44 AUDIO_PLAY_STATUS_OPUS_RECORD = 0x05, //opus录音 43 AUDIO_PLAY_STATUS_OPUS_RECORD = 0x05, //opus录音
45 AUDIO_PLAY_STATUS_MP3_REAL_TIME = 0x06, //mp3实时语音 44 AUDIO_PLAY_STATUS_MP3_REAL_TIME = 0x06, //mp3实时语音
@@ -79,6 +78,8 @@ extern struct MegaphoneInfo *g_MegaphoneInfo; @@ -79,6 +78,8 @@ extern struct MegaphoneInfo *g_MegaphoneInfo;
79 /* Exported functions --------------------------------------------------------*/ 78 /* Exported functions --------------------------------------------------------*/
80 T_JZsdkReturnCode Megaphone_Init(); 79 T_JZsdkReturnCode Megaphone_Init();
81 T_JZsdkReturnCode Megaphone_Init_OnlyTTs(); 80 T_JZsdkReturnCode Megaphone_Init_OnlyTTs();
  81 +T_JZsdkReturnCode Megaphone_DeInit_OnlyTTs();
  82 +
82 T_JZsdkReturnCode Megaphone_TTS_Play(unsigned char *str, unsigned int str_len, int ReplyFlag); 83 T_JZsdkReturnCode Megaphone_TTS_Play(unsigned char *str, unsigned int str_len, int ReplyFlag);
83 T_JZsdkReturnCode Megaphone_TTS_param(int flagcode, enum MegaphoneTTSParam paramflag, int *value); 84 T_JZsdkReturnCode Megaphone_TTS_param(int flagcode, enum MegaphoneTTSParam paramflag, int *value);
84 T_JZsdkReturnCode Megaphone_Amplifier_param(int flagcode, int *value); 85 T_JZsdkReturnCode Megaphone_Amplifier_param(int flagcode, int *value);
@@ -4,10 +4,14 @@ @@ -4,10 +4,14 @@
4 4
5 #include "Megaphone/Music/AudioFile/Megaphone_AudioFile.h" 5 #include "Megaphone/Music/AudioFile/Megaphone_AudioFile.h"
6 #include "Megaphone/TTS/Megaphone_TTS.h" 6 #include "Megaphone/TTS/Megaphone_TTS.h"
  7 +#include "JZsdkLib.h"
  8 +#include "version_choose.h"
  9 +
  10 +
  11 +#ifdef ESPEAK_TTS_CONFIG_STATUS_ON
7 12
8 #include "Intl_interface.h" 13 #include "Intl_interface.h"
9 #include "version_choose.h" 14 #include "version_choose.h"
10 -#include "JZsdkLib.h"  
11 15
12 #define RECODE_DIR "/root/record/" 16 #define RECODE_DIR "/root/record/"
13 17
@@ -16,7 +20,6 @@ T_JZsdkReturnCode Espeak_init() @@ -16,7 +20,6 @@ T_JZsdkReturnCode Espeak_init()
16 char dict_path[]="/root";//设置资源库路径 20 char dict_path[]="/root";//设置资源库路径
17 char wav_save_path[]=RECODE_DIR;//设置生成音频路径 21 char wav_save_path[]=RECODE_DIR;//设置生成音频路径
18 tts_init(dict_path,wav_save_path);//初始化 22 tts_init(dict_path,wav_save_path);//初始化
19 - printf("espeak_init\n");  
20 23
21 //检查record文件夹是否存在 24 //检查record文件夹是否存在
22 if (JZsdk_check_directory_exists_posix(RECODE_DIR) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) 25 if (JZsdk_check_directory_exists_posix(RECODE_DIR) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
@@ -24,6 +27,8 @@ T_JZsdkReturnCode Espeak_init() @@ -24,6 +27,8 @@ T_JZsdkReturnCode Espeak_init()
24 JZsdk_RunSystemCmd("mkdir /root/record"); 27 JZsdk_RunSystemCmd("mkdir /root/record");
25 } 28 }
26 29
  30 + JZSDK_LOG_DEBUG("espeak_init");
  31 +
27 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 32 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
28 } 33 }
29 34
@@ -108,3 +113,5 @@ T_JZsdkReturnCode Espeak_tts(unsigned char *tts_words ,unsigned int len) @@ -108,3 +113,5 @@ T_JZsdkReturnCode Espeak_tts(unsigned char *tts_words ,unsigned int len)
108 113
109 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 114 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
110 } 115 }
  116 +
  117 +#endif
@@ -3,7 +3,10 @@ @@ -3,7 +3,10 @@
3 #include "DeviceInfo/DeviceInfo.h" 3 #include "DeviceInfo/DeviceInfo.h"
4 #include "Megaphone/TTS/Espeak_tts/Espeak_tts.h" 4 #include "Megaphone/TTS/Espeak_tts/Espeak_tts.h"
5 5
6 -#include "./cnTTS/cnTTS.h" 6 +#include "./iflytek_1/iflytek_1.h"
  7 +#include "./iflytek_2/iflytek_2.h"
  8 +
  9 +#include "version_choose.h"
7 10
8 static int g_Megaphone_TTS_tone = 0x01; 11 static int g_Megaphone_TTS_tone = 0x01;
9 static int g_Megaphone_TTS_NormalVolume = 100; //生成的tts原音量 12 static int g_Megaphone_TTS_NormalVolume = 100; //生成的tts原音量
@@ -16,18 +19,90 @@ static int g_tts_add = JZ_FLAGCODE_OFF; //追加声音 @@ -16,18 +19,90 @@ static int g_tts_add = JZ_FLAGCODE_OFF; //追加声音
16 **********/ 19 **********/
17 T_JZsdkReturnCode Megaphone_TTS_Init() 20 T_JZsdkReturnCode Megaphone_TTS_Init()
18 { 21 {
  22 +
  23 + //根据不同的喊话器初始化不同的TTS库
  24 +
  25 +#ifdef IFLAY_TTS_1_CONFIG_STATUS_ON
19 //讯飞初始化 26 //讯飞初始化
20 - Megaphone_cnTTS_Init(); 27 + Iflytek_1_Init();
  28 +#endif
  29 +
  30 +#ifdef ESPEAK_TTS_CONFIG_STATUS_ON
21 31
22 //海外固件,外语初始化 32 //海外固件,外语初始化
23 Espeak_init(); 33 Espeak_init();
24 34
  35 +#endif
  36 +
  37 +#ifdef IFLAY_TTS_2_CONFIG_STATUS_ON
  38 + //讯飞初始化
  39 + Iflytek_2_Init();
  40 +#endif
  41 +
25 JZSDK_LOG_DEBUG("Megaphone_TTS_Init"); 42 JZSDK_LOG_DEBUG("Megaphone_TTS_Init");
26 } 43 }
27 44
28 45
29 /********* 46 /*********
30 * 47 *
  48 + * TTS销毁
  49 + *
  50 + * *********/
  51 +T_JZsdkReturnCode Megaphone_TTS_DeInit()
  52 +{
  53 +#ifdef IFLAY_TTS_2_CONFIG_STATUS_ON
  54 + //讯飞初始化
  55 + Iflytek_2_DeInit();
  56 +#endif
  57 +
  58 +}
  59 +
  60 +
  61 +
  62 +/*********
  63 + *
  64 + * TTSPLAY
  65 + *
  66 + *
  67 +**********/
  68 +T_JZsdkReturnCode Megaphone_Tts_Play(unsigned char *str, unsigned int str_len, int ReplyFlag)
  69 +{
  70 +#ifdef IFLAY_TTS_1_CONFIG_STATUS_ON
  71 +
  72 + //判断音色
  73 + int tone = TTS_Get_tone();
  74 + if (tone >= 0x00 && tone <= 0x36)
  75 + {
  76 + return Ifytek_1_Play(str, str_len, ReplyFlag);
  77 + }
  78 + else
  79 + {
  80 + return Espeak_tts(str ,str_len);
  81 + }
  82 +
  83 +#endif
  84 +
  85 +#ifdef IFLAY_TTS_2_CONFIG_STATUS_ON
  86 +
  87 + return Ifytek_2_Play(str, str_len, ReplyFlag);
  88 +
  89 +#endif
  90 +
  91 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  92 +}
  93 +
  94 +
  95 +
  96 +
  97 +
  98 +
  99 +
  100 +
  101 +
  102 +
  103 +
  104 +/*********
  105 + *
31 * 获取生成的tts音量 106 * 获取生成的tts音量
32 * 107 *
33 * 108 *
@@ -45,7 +45,9 @@ int TTS_Set_speed(int value); @@ -45,7 +45,9 @@ int TTS_Set_speed(int value);
45 int TTS_Set_TTS_AppendTone(int value); 45 int TTS_Set_TTS_AppendTone(int value);
46 46
47 T_JZsdkReturnCode Megaphone_TTS_Init(); 47 T_JZsdkReturnCode Megaphone_TTS_Init();
  48 +T_JZsdkReturnCode Megaphone_TTS_DeInit();
48 49
  50 +T_JZsdkReturnCode Megaphone_Tts_Play(unsigned char *str, unsigned int str_len, int ReplyFlag);
49 51
50 #ifdef __cplusplus 52 #ifdef __cplusplus
51 } 53 }
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 #include <stdlib.h> 4 #include <stdlib.h>
5 #include <pthread.h> 5 #include <pthread.h>
6 6
7 -#include "./cnTTS.h" 7 +
8 #include "../Megaphone_TTS.h" 8 #include "../Megaphone_TTS.h"
9 #include "../../Megaphone.h" 9 #include "../../Megaphone.h"
10 10
@@ -14,11 +14,15 @@ @@ -14,11 +14,15 @@
14 #include "JZsdkLib.h" 14 #include "JZsdkLib.h"
15 15
16 #include "version_choose.h" 16 #include "version_choose.h"
  17 +
  18 +#ifdef IFLAY_TTS_1_CONFIG_STATUS_ON
  19 +#include "./iflytek_1.h"
17 #include "qtts.h" 20 #include "qtts.h"
18 #include "msp_cmn.h" 21 #include "msp_cmn.h"
19 #include "msp_errors.h" 22 #include "msp_errors.h"
20 #include "msp_types.h" 23 #include "msp_types.h"
21 24
  25 +
22 #define TTS_SAVE 0 26 #define TTS_SAVE 0
23 27
24 static T_JZsdkReturnCode TTS_Synthesis(const char* src_text, const char* params) 28 static T_JZsdkReturnCode TTS_Synthesis(const char* src_text, const char* params)
@@ -326,7 +330,7 @@ static void *Play_cntts_pthread(void *arg) @@ -326,7 +330,7 @@ static void *Play_cntts_pthread(void *arg)
326 //广播状态开始 330 //广播状态开始
327 if (ReplyFlag == JZ_FLAGCODE_ON) 331 if (ReplyFlag == JZ_FLAGCODE_ON)
328 { 332 {
329 - Megaphone_status_Broadcast(AUDIO_PLAY_STATUS_IFLAY_TTS); 333 + Megaphone_status_Broadcast(AUDIO_PLAY_STATUS_TTS);
330 } 334 }
331 335
332 int amplifier = JZ_FLAGCODE_ON; 336 int amplifier = JZ_FLAGCODE_ON;
@@ -356,8 +360,6 @@ static void *Play_cntts_pthread(void *arg) @@ -356,8 +360,6 @@ static void *Play_cntts_pthread(void *arg)
356 { 360 {
357 Megaphone_status_Broadcast(JZ_FLAGCODE_OFF); 361 Megaphone_status_Broadcast(JZ_FLAGCODE_OFF);
358 } 362 }
359 -  
360 - JZSDK_LOG_INFO("TTS线程结束");  
361 } 363 }
362 364
363 365
@@ -392,9 +394,11 @@ relogin: @@ -392,9 +394,11 @@ relogin:
392 * tts初始化 394 * tts初始化
393 * 395 *
394 **********/ 396 **********/
395 -T_JZsdkReturnCode Megaphone_cnTTS_Init() 397 +T_JZsdkReturnCode Iflytek_1_Init()
396 { 398 {
397 login_tts(); 399 login_tts();
  400 +
  401 + JZSDK_LOG_DEBUG("Iflytek_1_Init");
398 } 402 }
399 403
400 404
@@ -404,7 +408,7 @@ T_JZsdkReturnCode Megaphone_cnTTS_Init() @@ -404,7 +408,7 @@ T_JZsdkReturnCode Megaphone_cnTTS_Init()
404 * 讯飞TTS_播放函数 408 * 讯飞TTS_播放函数
405 * 409 *
406 **********/ 410 **********/
407 -T_JZsdkReturnCode Megaphone_cnTTS_Play(unsigned char *str, unsigned int str_len, int ReplyFlag) 411 +T_JZsdkReturnCode Ifytek_1_Play(unsigned char *str, unsigned int str_len, int ReplyFlag)
408 { 412 {
409 //1、制造一个数据产生函数 413 //1、制造一个数据产生函数
410 pthread_t TTS_flie_task; 414 pthread_t TTS_flie_task;
@@ -441,3 +445,5 @@ T_JZsdkReturnCode Megaphone_cnTTS_Play(unsigned char *str, unsigned int str_len, @@ -441,3 +445,5 @@ T_JZsdkReturnCode Megaphone_cnTTS_Play(unsigned char *str, unsigned int str_len,
441 445
442 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 446 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
443 } 447 }
  448 +
  449 +#endif
1 /** 1 /**
2 ******************************************************************** 2 ********************************************************************
3 - * @file cnTTS.h  
4 - * cnTTS的头文件 3 + * @file Module/Megaphone/TTS/iflytek_1/iflytek_1.h
  4 + * TTS的头文件
5 * 5 *
6 ********************************************************************* 6 *********************************************************************
7 */ 7 */
8 8
9 /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ 9 /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
10 -#ifndef CN_TTS_H  
11 -#define CN_TTS_H 10 +#ifndef IFLYTEK_1_H
  11 +#define IFLYTEK_1_H
12 12
13 /* Includes ------------------------------------------------------------------*/ 13 /* Includes ------------------------------------------------------------------*/
14 #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" 14 #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
@@ -26,8 +26,8 @@ extern "C" { @@ -26,8 +26,8 @@ extern "C" {
26 26
27 27
28 28
29 -T_JZsdkReturnCode Megaphone_cnTTS_Init();  
30 -T_JZsdkReturnCode Megaphone_cnTTS_Play(unsigned char *str, unsigned int str_len, int ReplyFlag); 29 +T_JZsdkReturnCode Iflytek_1_Init();
  30 +T_JZsdkReturnCode Ifytek_1_Play(unsigned char *str, unsigned int str_len, int ReplyFlag);
31 31
32 32
33 #ifdef __cplusplus 33 #ifdef __cplusplus
  1 +#include <stdio.h>
  2 +#include <string.h>
  3 +#include <ctype.h>
  4 +#include <stdlib.h>
  5 +#include <pthread.h>
  6 +
  7 +#include "../Megaphone_TTS.h"
  8 +#include "../../Megaphone.h"
  9 +#include "./iflytek_2.h"
  10 +
  11 +#include "AudioDeal/AudioDeal.h"
  12 +#include "Megaphone/Volume/volume.h"
  13 +
  14 +#include "JZsdkLib.h"
  15 +#include "version_choose.h"
  16 +
  17 +#ifdef IFLAY_TTS_2_CONFIG_STATUS_ON
  18 +
  19 +#include "iflytek_tts.h"
  20 +
  21 +static T_JZsdkReturnCode IflyTek_2_Tts_Input(int language, char *Text, int speed, int volume)
  22 +{
  23 + //1、将JZSDK的Language索引值转换为 IFLTEK2的语言索引值
  24 + //2、将language转换为音色文件
  25 + int IfyTek_language = 0;
  26 + char role[20] = {0};
  27 +
  28 + switch (language)
  29 + {
  30 + case 0x01: // 中文女生
  31 + IfyTek_language = 1;
  32 + strcpy(role, "xiaoyan");
  33 + break;
  34 +
  35 + case 0x02: // 中文男生
  36 + IfyTek_language = 1;
  37 + strcpy(role, "xiaofeng");
  38 + break;
  39 +
  40 + case 0x11: // 英文女生
  41 + IfyTek_language = 2;
  42 + strcpy(role, "catherine");
  43 + break;
  44 +
  45 + case 0x12: // 英文男生
  46 + IfyTek_language = 2;
  47 + strcpy(role, "john");
  48 + break;
  49 +
  50 + case 0x31: // 东北
  51 + IfyTek_language = 1;
  52 + strcpy(role, "xiaoqian");
  53 + break;
  54 +
  55 + case 0x32: // 四川
  56 + IfyTek_language = 1;
  57 + strcpy(role, "yezi");
  58 + break;
  59 +
  60 + case 0x33: // 河南
  61 + IfyTek_language = 1;
  62 + strcpy(role, "xiaokun");
  63 + break;
  64 + case 0x34: // 湖南
  65 + IfyTek_language = 1;
  66 + strcpy(role, "xiaoqiang");
  67 + break;
  68 +
  69 + /*case 35: // 陕西
  70 + role = "xiaoying";
  71 + break;
  72 + */
  73 +
  74 + case 0x36: // 广东
  75 + IfyTek_language = 12; // 粤语
  76 + strcpy(role, "xiaomei");
  77 + break;
  78 +
  79 + case 0x37: // 湖北
  80 + IfyTek_language = 1;
  81 + strcpy(role, "xiaowang");
  82 + break;
  83 +
  84 + /*case 38: // 东北
  85 + role = "xiaoqian";
  86 + break;
  87 + */
  88 +
  89 + default: // 默认中文女生
  90 + IfyTek_language = 1;
  91 + strcpy(role, "xiaoyan");
  92 + break;
  93 + }
  94 +
  95 + IflytekLib_2_TextToTts(IfyTek_language, role, Text, speed, volume);
  96 +
  97 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  98 +}
  99 +
  100 +static T_JZsdkReturnCode TTS_FILE_play(struct t_Megaphone_tts_param *Megaphone_tts_param)
  101 +{
  102 + int tone = Megaphone_tts_param->tts_tone;
  103 + int speed = Megaphone_tts_param->tts_speed;
  104 + char *argv = Megaphone_tts_param->ttsdata;
  105 + int ReplyFlag = Megaphone_tts_param->ReplyFlag;
  106 + int tts_add_mode = Megaphone_tts_param->tts_add;
  107 + int volume = Megaphone_tts_param->tts_volume;
  108 +
  109 + //开始合成音频
  110 + int loop;
  111 + int loop_interval;
  112 + do
  113 + {
  114 + //输入数据
  115 + IflyTek_2_Tts_Input(tone, argv, speed, volume);
  116 + //如果开启了追加模式
  117 + // if(tts_add_mode == JZ_FLAGCODE_ON)
  118 + // {
  119 + // //追加合成音频
  120 + // IflyTek_2_Tts_Input(tone, argv, volume);
  121 + // }
  122 +
  123 + Megaphone_param(JZ_FLAGCODE_GET, MEGAPHONE_LOOP, &loop);
  124 + Megaphone_param(JZ_FLAGCODE_GET, MEGAPHONE_LOOP_INTERVAL, &loop_interval);
  125 +
  126 + //循环播放延时
  127 + while (loop_interval > 0 && (loop == JZ_FLAGCODE_ON) && (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_ON))
  128 + {
  129 + delayMs(50);
  130 + loop_interval -= 50;
  131 + }
  132 +
  133 + } while ((loop == JZ_FLAGCODE_ON) && (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_ON));
  134 +
  135 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  136 +}
  137 +
  138 +//TTS合成线程
  139 +static void *Play_cntts_pthread(void *arg)
  140 +{
  141 + struct t_Megaphone_tts_param *Megaphone_tts_param = (struct t_Megaphone_tts_param *) arg;
  142 +
  143 + int ReplyFlag = Megaphone_tts_param->ReplyFlag;
  144 +
  145 + //设置标志位
  146 + Megaphone_MegDataGenFlag(JZ_FLAGCODE_SET, JZ_FLAGCODE_ON);
  147 + Megaphone_MegDataGenFinshFlag(JZ_FLAGCODE_SET, JZ_FLAGCODE_ON);
  148 +
  149 + //广播状态开始
  150 + if (ReplyFlag == JZ_FLAGCODE_ON)
  151 + {
  152 + Megaphone_status_Broadcast(AUDIO_PLAY_STATUS_TTS);
  153 + }
  154 +
  155 + int amplifier = JZ_FLAGCODE_ON;
  156 + Megaphone_Amplifier_param(JZ_FLAGCODE_SET, &amplifier);
  157 +
  158 + //修改tts前的音量
  159 + Megaphone_SetVolume(0, 1);
  160 +
  161 + //生成tts播放文件
  162 + TTS_FILE_play(Megaphone_tts_param);
  163 +
  164 + //释放掉结构体和标志位
  165 + JZsdk_Free(Megaphone_tts_param);
  166 +
  167 + //恢复音量
  168 + int audio_volume = Megaphone_GetUiVolume();
  169 + Megaphone_SetVolume(audio_volume,0);
  170 +
  171 + amplifier = JZ_FLAGCODE_OFF;
  172 + Megaphone_Amplifier_param(JZ_FLAGCODE_SET, &amplifier);
  173 +
  174 + Megaphone_MegDataGenFlag(JZ_FLAGCODE_SET, JZ_FLAGCODE_OFF);
  175 + Megaphone_MegDataGenFinshFlag(JZ_FLAGCODE_SET, JZ_FLAGCODE_OFF);
  176 +
  177 + //广播关闭
  178 + if (ReplyFlag == JZ_FLAGCODE_ON)
  179 + {
  180 + Megaphone_status_Broadcast(JZ_FLAGCODE_OFF);
  181 + }
  182 +
  183 +}
  184 +
  185 +/*********
  186 + *
  187 + * 讯飞TTS_播放函数
  188 + *
  189 +**********/
  190 +T_JZsdkReturnCode Ifytek_2_Play(unsigned char *str, unsigned int str_len, int ReplyFlag)
  191 +{
  192 + //1、制造一个数据产生函数
  193 + pthread_t TTS_flie_task;
  194 + pthread_attr_t task_attribute; //线程属性
  195 + pthread_attr_init(&task_attribute); //初始化线程属性
  196 + pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程属性
  197 +
  198 + //tts参数结构体
  199 + struct t_Megaphone_tts_param *Megaphone_tts_param = NULL;
  200 + if(JZsdk_Malloc( (void **)&Megaphone_tts_param, sizeof(struct t_Megaphone_tts_param)) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)//如果申请内存失败,malloc会返回一个NULl
  201 + {
  202 + printf("malloc use failure");
  203 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;//申请内存失败,错误退出
  204 + }
  205 +
  206 + //清空参数
  207 + memset (Megaphone_tts_param,0,sizeof(struct t_Megaphone_tts_param));
  208 +
  209 + //写入参数
  210 + Megaphone_tts_param->tts_speed = TTS_Get_speed();
  211 + Megaphone_tts_param->tts_tone = TTS_Get_tone();
  212 + Megaphone_tts_param->tts_volume = TTS_Get_NormalVolume();
  213 + Megaphone_tts_param->tts_add = TTS_Get_TTS_AppendTone();
  214 + Megaphone_tts_param->ReplyFlag = ReplyFlag;
  215 + memset(Megaphone_tts_param->ttsdata,0,sizeof(Megaphone_tts_param->ttsdata));
  216 + memcpy(Megaphone_tts_param->ttsdata, str, str_len);
  217 +
  218 + int tts_ret = pthread_create(&TTS_flie_task,&task_attribute,Play_cntts_pthread,(void *)Megaphone_tts_param); //TTS线程
  219 + if(tts_ret != 0)
  220 + {
  221 + printf("创建TTS线程失败\n");
  222 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  223 + }
  224 +
  225 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  226 +}
  227 +
  228 +
  229 +
  230 +/*********
  231 + *
  232 + * tts初始化
  233 + *
  234 +**********/
  235 +T_JZsdkReturnCode Iflytek_2_Init()
  236 +{
  237 + IflytekLib_2_Init();
  238 +
  239 + JZSDK_LOG_DEBUG("Iflytek_2_Init");
  240 +
  241 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  242 +}
  243 +
  244 +/*******
  245 + *
  246 + * tts销毁
  247 + *
  248 + * ********/
  249 +T_JZsdkReturnCode Iflytek_2_DeInit()
  250 +{
  251 + IflytekLib_2_UnInit();
  252 +
  253 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  254 +}
  255 +
  256 +#endif
  1 +/**
  2 + ********************************************************************
  3 + * @file Module/Megaphone/TTS/iflytek_2/iflytek_2.h
  4 + * TTS的头文件
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef IFLYTEK_2_H
  11 +#define IFLYTEK_2_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
  15 +
  16 +#ifdef __cplusplus
  17 +extern "C" {
  18 +#endif
  19 +
  20 +/* Exported constants --------------------------------------------------------*/
  21 +/* 常亮定义*/
  22 +
  23 +/* Exported types ------------------------------------------------------------*/
  24 +
  25 +/* Exported functions --------------------------------------------------------*/
  26 +
  27 +
  28 +
  29 +T_JZsdkReturnCode Ifytek_2_Init();
  30 +T_JZsdkReturnCode Iflytek_2_DeInit();
  31 +T_JZsdkReturnCode Ifytek_2_Play(unsigned char *str, unsigned int str_len, int ReplyFlag);
  32 +
  33 +
  34 +
  35 +#ifdef __cplusplus
  36 +}
  37 +#endif
  38 +
  39 +#endif