作者 ookk303

添加了新的讯飞库

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

要显示太多修改。

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

@@ -154,7 +154,16 @@ @@ -154,7 +154,16 @@
154 "msp_cmn.h": "c", 154 "msp_cmn.h": "c",
155 "ctype.h": "c", 155 "ctype.h": "c",
156 "intl_interface.h": "c", 156 "intl_interface.h": "c",
157 - "iflytek_1.h": "c" 157 + "iflytek_1.h": "c",
  158 + "warnlight.h": "c",
  159 + "searchlight.h": "c",
  160 + "speex_preprocess.h": "c",
  161 + "ff_filter.h": "c",
  162 + "motorfinetuning.h": "c",
  163 + "debuginfo.h": "c",
  164 + "h3_ircut.h": "c",
  165 + "dji_high_speed_data_channel.h": "c",
  166 + "psdk_ui.h": "c"
158 }, 167 },
159 "Codegeex.GenerationPreference": "automatic", 168 "Codegeex.GenerationPreference": "automatic",
160 "C_Cpp.dimInactiveRegions": false, 169 "C_Cpp.dimInactiveRegions": false,
1 # 编译链的配置 1 # 编译链的配置
2 2
3 #1、编译链与设备类型的选择 3 #1、编译链与设备类型的选择
4 -set(DEVICE_NAME JZ_H150S) 4 +set(DEVICE_NAME JZ_T40)
5 #上一行为禁止修改行 5 #上一行为禁止修改行
6 6
7 message("**************************JZSDK构建编译开始***************************\n") 7 message("**************************JZSDK构建编译开始***************************\n")
@@ -60,19 +60,6 @@ if(${IRCUT_MODULE} STREQUAL "VERSION_SWITCH_ON") @@ -60,19 +60,6 @@ if(${IRCUT_MODULE} STREQUAL "VERSION_SWITCH_ON")
60 60
61 endif() 61 endif()
62 62
63 -#如果要加载光源模块,需要加载以下附属内容  
64 -if(${LIGHTING_MODULE} STREQUAL "VERSION_SWITCH_ON")  
65 - message("\n光源模块加载中")  
66 -  
67 - #打开光源的代码编译部分  
68 - add_definitions(-DMACRO_LIGHTING_MODULE)  
69 -  
70 - #将光源的源代码加入编译中  
71 - file(GLOB_RECURSE LIGHTING_SRC ${ROOT_DIRS}Module/Lighting/*.c)  
72 - list(APPEND ALL_SRC_FILES ${LIGHTING_SRC})  
73 -  
74 -endif()  
75 -  
76 #如果要加载探照灯模块,需要加载以下附属内容 63 #如果要加载探照灯模块,需要加载以下附属内容
77 if(${SEARCHLIGHT_MODULE} STREQUAL "VERSION_SWITCH_ON") 64 if(${SEARCHLIGHT_MODULE} STREQUAL "VERSION_SWITCH_ON")
78 message("\n探照灯模块加载中") 65 message("\n探照灯模块加载中")
@@ -86,6 +73,19 @@ if(${SEARCHLIGHT_MODULE} STREQUAL "VERSION_SWITCH_ON") @@ -86,6 +73,19 @@ if(${SEARCHLIGHT_MODULE} STREQUAL "VERSION_SWITCH_ON")
86 73
87 endif() 74 endif()
88 75
  76 +#如果要加载警示灯模块,需要加载以下附属内容
  77 +if(${WARNLIGHT_MODULE} STREQUAL "VERSION_SWITCH_ON")
  78 + message("\n警示灯模块加载中")
  79 +
  80 + #打开探照灯的代码编译部分
  81 + add_definitions(-DMACRO_WARNLIGHT_MODULE)
  82 +
  83 + #将探照灯的源代码加入编译中
  84 + file(GLOB_RECURSE WARNLIGHT_SRC ${ROOT_DIRS}Module/WarnLight/*.c)
  85 + list(APPEND ALL_SRC_FILES ${WARNLIGHT_SRC})
  86 +
  87 +endif()
  88 +
89 #如果要加载侧面激光模块,需要加载以下附属内容 89 #如果要加载侧面激光模块,需要加载以下附属内容
90 if(${SIDE_LASER_MODULE} STREQUAL "VERSION_SWITCH_ON") 90 if(${SIDE_LASER_MODULE} STREQUAL "VERSION_SWITCH_ON")
91 message("\n侧面激光模块加载中") 91 message("\n侧面激光模块加载中")
@@ -17,12 +17,12 @@ set(IRCUT_MODULE VERSION_SWITCH_OFF) @@ -17,12 +17,12 @@ set(IRCUT_MODULE VERSION_SWITCH_OFF)
17 17
18 ############### 光源模块 ########################## 18 ############### 光源模块 ##########################
19 19
20 -# LIGHTING 光源处理模块  
21 -set(LIGHTING_MODULE VERSION_SWITCH_OFF)  
22 -  
23 # SEARCHLIGHT 探照灯处理模块 20 # SEARCHLIGHT 探照灯处理模块
24 set(SEARCHLIGHT_MODULE VERSION_SWITCH_OFF) 21 set(SEARCHLIGHT_MODULE VERSION_SWITCH_OFF)
25 22
  23 +# WARNLIGHT 警示灯处理模块
  24 +set(WARNLIGHT_MODULE VERSION_SWITCH_OFF)
  25 +
26 ################ 喊话器模块 ####################### 26 ################ 喊话器模块 #######################
27 27
28 # 喊话器模块 28 # 喊话器模块
@@ -74,6 +74,9 @@ set(LIB_KT_MODULE VERSION_SWITCH_OFF) @@ -74,6 +74,9 @@ set(LIB_KT_MODULE VERSION_SWITCH_OFF)
74 # 飒特库 74 # 飒特库
75 set(LIB_SATIRC_MODULE VERSION_SWITCH_OFF) 75 set(LIB_SATIRC_MODULE VERSION_SWITCH_OFF)
76 76
  77 +# speex库
  78 +set(SPEEX_MODULE VERSION_SWITCH_OFF)
  79 +
77 ########################## 通用库加载 ########################################### 80 ########################## 通用库加载 ###########################################
78 81
79 # 添加信息模块 82 # 添加信息模块
@@ -105,9 +108,6 @@ if("${DEVICE_NAME}" STREQUAL "JZ_H1E") @@ -105,9 +108,6 @@ if("${DEVICE_NAME}" STREQUAL "JZ_H1E")
105 # 添加Gimbal 云台处理模块 108 # 添加Gimbal 云台处理模块
106 set(GIMBAL_MODULE VERSION_SWITCH_ON) 109 set(GIMBAL_MODULE VERSION_SWITCH_ON)
107 110
108 - # 添加LIGHTING 光源处理模块  
109 - set(LIGHTING_MODULE VERSION_SWITCH_ON)  
110 -  
111 # 添加喊话器模块 111 # 添加喊话器模块
112 set(MEGAPHONE_MODULE VERSION_SWITCH_ON) 112 set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
113 113
@@ -128,8 +128,11 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_H1T") @@ -128,8 +128,11 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_H1T")
128 # 添加Gimbal 云台处理模块 128 # 添加Gimbal 云台处理模块
129 set(GIMBAL_MODULE VERSION_SWITCH_ON) 129 set(GIMBAL_MODULE VERSION_SWITCH_ON)
130 130
131 - # 添加LIGHTING 光源处理模块  
132 - set(LIGHTING_MODULE VERSION_SWITCH_ON) 131 + # 添加SEARCHLIGHT 探照灯处理模块
  132 + set(SEARCHLIGHT_MODULE VERSION_SWITCH_ON)
  133 +
  134 + # 添加WARNLIGHT 警示灯处理模块
  135 + set(WARNLIGHT_MODULE VERSION_SWITCH_ON)
133 136
134 # 添加喊话器模块 137 # 添加喊话器模块
135 set(MEGAPHONE_MODULE VERSION_SWITCH_ON) 138 set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
@@ -151,8 +154,11 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_U3") @@ -151,8 +154,11 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_U3")
151 # 添加Gimbal 云台处理模块 154 # 添加Gimbal 云台处理模块
152 set(GIMBAL_MODULE VERSION_SWITCH_ON) 155 set(GIMBAL_MODULE VERSION_SWITCH_ON)
153 156
154 - # 添加LIGHTING 光源处理模块  
155 - set(LIGHTING_MODULE VERSION_SWITCH_ON) 157 + # 添加SEARCHLIGHT 探照灯处理模块
  158 + set(SEARCHLIGHT_MODULE VERSION_SWITCH_ON)
  159 +
  160 + # 添加WARNLIGHT 警示灯处理模块
  161 + set(WARNLIGHT_MODULE VERSION_SWITCH_ON)
156 162
157 # 添加喊话器模块 163 # 添加喊话器模块
158 set(MEGAPHONE_MODULE VERSION_SWITCH_ON) 164 set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
@@ -174,8 +180,11 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_U3S") @@ -174,8 +180,11 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_U3S")
174 # 添加Gimbal 云台处理模块 180 # 添加Gimbal 云台处理模块
175 set(GIMBAL_MODULE VERSION_SWITCH_ON) 181 set(GIMBAL_MODULE VERSION_SWITCH_ON)
176 182
177 - # 添加LIGHTING 光源处理模块  
178 - set(LIGHTING_MODULE VERSION_SWITCH_ON) 183 + # 添加SEARCHLIGHT 探照灯处理模块
  184 + set(SEARCHLIGHT_MODULE VERSION_SWITCH_ON)
  185 +
  186 + # 添加WARNLIGHT 警示灯处理模块
  187 + set(WARNLIGHT_MODULE VERSION_SWITCH_ON)
179 188
180 # 添加喊话器模块 189 # 添加喊话器模块
181 set(MEGAPHONE_MODULE VERSION_SWITCH_ON) 190 set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
@@ -200,8 +209,11 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_U3D") @@ -200,8 +209,11 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_U3D")
200 # 添加Gimbal 云台处理模块 209 # 添加Gimbal 云台处理模块
201 set(GIMBAL_MODULE VERSION_SWITCH_ON) 210 set(GIMBAL_MODULE VERSION_SWITCH_ON)
202 211
203 - # 添加LIGHTING 光源处理模块  
204 - set(LIGHTING_MODULE VERSION_SWITCH_ON) 212 + # 添加SEARCHLIGHT 探照灯处理模块
  213 + set(SEARCHLIGHT_MODULE VERSION_SWITCH_ON)
  214 +
  215 + # 添加WARNLIGHT 警示灯处理模块
  216 + set(WARNLIGHT_MODULE VERSION_SWITCH_ON)
205 217
206 # 添加喊话器模块 218 # 添加喊话器模块
207 set(MEGAPHONE_MODULE VERSION_SWITCH_ON) 219 set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
@@ -223,8 +235,11 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_U30") @@ -223,8 +235,11 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_U30")
223 # 添加Gimbal 云台处理模块 235 # 添加Gimbal 云台处理模块
224 set(GIMBAL_MODULE VERSION_SWITCH_ON) 236 set(GIMBAL_MODULE VERSION_SWITCH_ON)
225 237
226 - # 添加LIGHTING 光源处理模块  
227 - set(LIGHTING_MODULE VERSION_SWITCH_ON) 238 + # 添加SEARCHLIGHT 探照灯处理模块
  239 + set(SEARCHLIGHT_MODULE VERSION_SWITCH_ON)
  240 +
  241 + # 添加WARNLIGHT 警示灯处理模块
  242 + set(WARNLIGHT_MODULE VERSION_SWITCH_ON)
228 243
229 # 添加喊话器模块 244 # 添加喊话器模块
230 set(MEGAPHONE_MODULE VERSION_SWITCH_ON) 245 set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
@@ -336,9 +351,6 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_C1") @@ -336,9 +351,6 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_C1")
336 # 添加Gimbal 云台处理模块 351 # 添加Gimbal 云台处理模块
337 set(GIMBAL_MODULE VERSION_SWITCH_ON) 352 set(GIMBAL_MODULE VERSION_SWITCH_ON)
338 353
339 - # 添加LIGHTING 光源处理模块  
340 - set(LIGHTING_MODULE VERSION_SWITCH_ON)  
341 -  
342 # 添加MediaProc 媒体管理模块 354 # 添加MediaProc 媒体管理模块
343 set(MEDIA_PROC_MODULE VERSION_SWITCH_ON) 355 set(MEDIA_PROC_MODULE VERSION_SWITCH_ON)
344 356
@@ -396,8 +408,8 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_T40") @@ -396,8 +408,8 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_T40")
396 # 添加Gimbal 云台处理模块 408 # 添加Gimbal 云台处理模块
397 set(GIMBAL_MODULE VERSION_SWITCH_ON) 409 set(GIMBAL_MODULE VERSION_SWITCH_ON)
398 410
399 - # 添加LIGHTING 光源处理模块  
400 - set(LIGHTING_MODULE VERSION_SWITCH_ON) 411 + # 添加WARNLIGHT 警示灯处理模块
  412 + set(WARNLIGHT_MODULE VERSION_SWITCH_ON)
401 413
402 # 添加探照灯模块 414 # 添加探照灯模块
403 set(SEARCHLIGHT_MODULE VERSION_SWITCH_ON) 415 set(SEARCHLIGHT_MODULE VERSION_SWITCH_ON)
@@ -405,6 +417,12 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_T40") @@ -405,6 +417,12 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_T40")
405 # 添加AudioDeal 音频处理模块 417 # 添加AudioDeal 音频处理模块
406 set(AUDIODEAL_MODULE VERSION_SWITCH_ON) 418 set(AUDIODEAL_MODULE VERSION_SWITCH_ON)
407 419
  420 + # 添加speex音频处理模块
  421 + # set(SPEEX_MODULE VERSION_SWITCH_ON)
  422 +
  423 + # 添加激光模块
  424 + set(SIDE_LASER_MODULE VERSION_SWITCH_ON)
  425 +
408 # 添加喊话器模块 426 # 添加喊话器模块
409 set(MEGAPHONE_MODULE VERSION_SWITCH_ON) 427 set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
410 428
@@ -56,6 +56,19 @@ if(${OPUS_MODULE} STREQUAL "VERSION_SWITCH_ON") @@ -56,6 +56,19 @@ if(${OPUS_MODULE} STREQUAL "VERSION_SWITCH_ON")
56 message("OPUS模块已加载\n") 56 message("OPUS模块已加载\n")
57 endif() 57 endif()
58 58
  59 +if(${SPEEX_MODULE} STREQUAL "VERSION_SWITCH_ON")
  60 +
  61 + add_definitions(-DMACRO_SPEEX_MODULE) #加载模块
  62 +
  63 + set(SPEEX_DIRS "${ROOT_DIRS}ThirdParty/Speex/lib/arm-cortexa9-linux-gnueabihf")
  64 + include_directories(${ROOT_DIRS}ThirdParty/Speex/include)
  65 + target_link_libraries(
  66 + ${PROJECT_NAME}
  67 + ${SPEEX_DIRS}/libspeexdsp.so
  68 + )
  69 + message("Speex模块已加载\n")
  70 +endif()
  71 +
59 # if(${CedarxLib} STREQUAL "VERSION_SWITCH_ON") 72 # if(${CedarxLib} STREQUAL "VERSION_SWITCH_ON")
60 # message("\nCedarX已加载\n") 73 # message("\nCedarX已加载\n")
61 # target_link_libraries(${PROJECT_NAME} 74 # target_link_libraries(${PROJECT_NAME}
@@ -180,7 +193,6 @@ endif() @@ -180,7 +193,6 @@ endif()
180 193
181 endif() 194 endif()
182 195
183 -  
184 #RK_mmp库 196 #RK_mmp库
185 if(${LIB_RK_MMP} STREQUAL "VERSION_SWITCH_ON") 197 if(${LIB_RK_MMP} STREQUAL "VERSION_SWITCH_ON")
186 message("RK_MMP库已加载\n") 198 message("RK_MMP库已加载\n")
  1 +#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
  2 +#include <string.h> // 添加memcpy函数支持
  3 +#include "JZring.h"
  4 +
  5 +typedef struct T_JZring
  6 +{
  7 + U8_t *buffer; // 缓冲区指针
  8 + U32_t size; // 缓冲区总容量
  9 + U32_t head; // 写入位置(下一个可写位置)
  10 + U32_t tail; // 读取位置(下一个可读位置)
  11 + U32_t count; // 当前数据量(可选改进)
  12 +} T_JZring;
  13 +
  14 +
  15 +// 初始化环形缓冲区
  16 +T_JZsdkReturnCode JZring_Init(T_JZringHandle *ring, U8_t *buffer, U32_t size)
  17 +{
  18 + if (!buffer || size == 0)
  19 + {
  20 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  21 + }
  22 +
  23 + //注册ring
  24 + T_JZring *r = (T_JZring*)malloc(sizeof(T_JZring));
  25 + if (!r) {
  26 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  27 + }
  28 +
  29 + r->buffer = buffer;
  30 + r->size = size;
  31 + r->head = 0;
  32 + r->tail = 0;
  33 + r->count = 0; // 初始化数据计数
  34 +
  35 + *ring = (T_JZringHandle)r;
  36 +
  37 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  38 +}
  39 +
  40 +// 写入数据到环形缓冲区
  41 +T_JZsdkReturnCode JZring_Write(T_JZringHandle ring, const U8_t *data, U32_t size)
  42 +{
  43 + if (!ring || !data) {
  44 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  45 + }
  46 + if (size == 0) {
  47 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  48 + }
  49 +
  50 + T_JZring *r = (T_JZring*)ring;
  51 +
  52 + // 检查可用空间
  53 + U32_t free_space = r->size - r->count;
  54 + if (size > free_space) {
  55 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  56 + }
  57 +
  58 + // 分两段复制数据(处理回绕)
  59 + U32_t first_chunk = r->size - r->head;
  60 + if (first_chunk >= size) {
  61 + memcpy(r->buffer + r->head, data, size);
  62 + r->head = (r->head + size) % r->size;
  63 + } else {
  64 + memcpy(r->buffer + r->head, data, first_chunk);
  65 + memcpy(r->buffer, data + first_chunk, size - first_chunk);
  66 + r->head = size - first_chunk;
  67 + }
  68 +
  69 + r->count += size; // 更新数据计数
  70 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  71 +}
  72 +
  73 +// 从环形缓冲区读取数据
  74 +T_JZsdkReturnCode JZring_Read(T_JZringHandle ring, U8_t *data, U32_t size, U32_t *readSize)
  75 +{
  76 + if (!ring || !data || !readSize) {
  77 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  78 + }
  79 +
  80 + T_JZring *r = (T_JZring*)ring;
  81 + *readSize = 0;
  82 +
  83 + if (r->count == 0 || size == 0) {
  84 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  85 + }
  86 +
  87 + // 计算实际可读数量
  88 + U32_t bytes_to_read = (size > r->count) ? r->count : size;
  89 +
  90 + // 分两段复制数据(处理回绕)
  91 + U32_t first_chunk = r->size - r->tail;
  92 + if (first_chunk >= bytes_to_read) {
  93 + memcpy(data, r->buffer + r->tail, bytes_to_read);
  94 + r->tail = (r->tail + bytes_to_read) % r->size;
  95 + } else {
  96 + memcpy(data, r->buffer + r->tail, first_chunk);
  97 + memcpy(data + first_chunk, r->buffer, bytes_to_read - first_chunk);
  98 + r->tail = bytes_to_read - first_chunk;
  99 + }
  100 +
  101 + r->count -= bytes_to_read; // 更新数据计数
  102 + *readSize = bytes_to_read;
  103 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  104 +}
  105 +
  106 +T_JZsdkReturnCode JZring_GetSize(T_JZringHandle ring, U32_t *size)
  107 +{
  108 + T_JZring *ringHandle = (T_JZring*)ring;
  109 +
  110 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  111 +}
  112 +
  113 +T_JZsdkReturnCode JZring_GetFreeSize(T_JZringHandle ring, U32_t *size)
  114 +{
  115 + T_JZring *ringHandle = (T_JZring*)ring;
  116 +
  117 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  118 +}
  119 +
  120 +T_JZsdkReturnCode JZring_Reset(T_JZringHandle ring)
  121 +{
  122 + T_JZring *ringHandle = (T_JZring*)ring;
  123 +
  124 + ringHandle->head = 0;
  125 + ringHandle->tail = 0;
  126 +
  127 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  128 +}
  129 +
  130 +T_JZsdkReturnCode JZring_DeInit(T_JZringHandle ring)
  131 +{
  132 + T_JZring *ringHandle = (T_JZring*)ring;
  133 +
  134 + ringHandle->buffer = NULL;
  135 + ringHandle->size = 0;
  136 + ringHandle->head = 0;
  137 + ringHandle->tail = 0;
  138 +
  139 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  140 +}
1 /** 1 /**
2 ******************************************************************** 2 ********************************************************************
3 - * @file WarningLight_V3S_H1T.h  
4 - * WarningLight_V3S_H1T的头文件 3 + * @file JZring.h
  4 + * 环形缓冲区
5 * 5 *
6 ********************************************************************* 6 *********************************************************************
7 */ 7 */
8 8
9 /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ 9 /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
10 -#ifndef WARNINGLIGHT_V3S_H1T_H  
11 -#define WARNINGLIGHT_V3S_H1T_H 10 +#ifndef JZ_RING_H
  11 +#define JZ_RING_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"
@@ -18,16 +18,15 @@ extern "C" { @@ -18,16 +18,15 @@ extern "C" {
18 #endif 18 #endif
19 19
20 /* Exported constants --------------------------------------------------------*/ 20 /* Exported constants --------------------------------------------------------*/
21 -/* 常亮定义*/  
22 - 21 +typedef void* T_JZringHandle;
23 22
24 /* Exported types ------------------------------------------------------------*/ 23 /* Exported types ------------------------------------------------------------*/
25 24
  25 +
26 /* Exported functions --------------------------------------------------------*/ 26 /* Exported functions --------------------------------------------------------*/
27 -T_JZsdkReturnCode WarningLight_V3S_H1T_Set_WarningLight_Status(int status, int mode);  
28 -T_JZsdkReturnCode WarningLight_V3S_H1T_Set_WarningLight_Color(int color1, int color2);  
29 -T_JZsdkReturnCode WarningLight_V3S_H1T_CheckStatus_WarningLightStatus();  
30 -T_JZsdkReturnCode WarningLight_V3S_H1T_CheckStatus_WarningLightColor(); 27 +T_JZsdkReturnCode JZring_Init(T_JZringHandle *ring, U8_t *buffer, U32_t size);
  28 +T_JZsdkReturnCode JZring_Write(T_JZringHandle ring, const U8_t *data, U32_t size);
  29 +T_JZsdkReturnCode JZring_Read(T_JZringHandle ring, U8_t *data, U32_t size, U32_t *readSize);
31 30
32 #ifdef __cplusplus 31 #ifdef __cplusplus
33 } 32 }
@@ -147,6 +147,8 @@ typedef enum { @@ -147,6 +147,8 @@ typedef enum {
147 147
148 JZ_INSCODE_5AFRAME_SEARCHLIGHT_CONTROL = 0x10000E00, //探照灯开光 148 JZ_INSCODE_5AFRAME_SEARCHLIGHT_CONTROL = 0x10000E00, //探照灯开光
149 JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMEN = 0x10000E10, //设置探照灯亮度 149 JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMEN = 0x10000E10, //设置探照灯亮度
  150 + JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMENPOWERLIMIT = 0x10000E11, //设置探照灯亮度功率限制
  151 +
150 JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_FREQUENCY = 0x10000E20, //设置把爆闪频率 152 JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_FREQUENCY = 0x10000E20, //设置把爆闪频率
151 JZ_INSCODE_5AFRAME_SEARCHLIGHT_MESSAGE_SUBSCRIPTION_CONTROL = 0x10000E21,//探照灯消息订阅控制 153 JZ_INSCODE_5AFRAME_SEARCHLIGHT_MESSAGE_SUBSCRIPTION_CONTROL = 0x10000E21,//探照灯消息订阅控制
152 154
@@ -24,6 +24,7 @@ typedef enum JZsdk_Widget_Control @@ -24,6 +24,7 @@ typedef enum JZsdk_Widget_Control
24 JZSDK_WIDGET_LASTSONG = 0x0000, // 控件上一曲 24 JZSDK_WIDGET_LASTSONG = 0x0000, // 控件上一曲
25 JZSDK_WIDGET_NEXTSONG = 0x0001, // 控件下一曲 25 JZSDK_WIDGET_NEXTSONG = 0x0001, // 控件下一曲
26 JZSDK_WIDGET_PLAYANDSTOP = 0x0002, // 控件播放暂停 26 JZSDK_WIDGET_PLAYANDSTOP = 0x0002, // 控件播放暂停
  27 + JZSDK_WIDGET_VOLUME = 0x0003, // 控件音量
27 28
28 JZSDK_WIDGET_SIDE_LASER_MODE = 0x0020, 29 JZSDK_WIDGET_SIDE_LASER_MODE = 0x0020,
29 30
@@ -102,6 +102,19 @@ typedef enum E_JZ_SingleCompensationMode{ @@ -102,6 +102,19 @@ typedef enum E_JZ_SingleCompensationMode{
102 JZ_SINGLE_COMPENSATION_MODE_PITCH_RIGHT = 1, 102 JZ_SINGLE_COMPENSATION_MODE_PITCH_RIGHT = 1,
103 }E_JZ_SingleCompensationMode; 103 }E_JZ_SingleCompensationMode;
104 104
  105 +typedef enum E_JZ_GimbalSingleCalibrationMode{
  106 + JZ_GIMBAL_SINGLE_CALIBRATION_MODE_LEFT_MAX = 0,
  107 + JZ_GIMBAL_SINGLE_CALIBRATION_MODE_LEFT_MIN = 1,
  108 + JZ_GIMBAL_SINGLE_CALIBRATION_MODE_LEFT_ZERO = 2,
  109 + JZ_GIMBAL_SINGLE_CALIBRATION_MODE_LEFT_RESET = 3,
  110 + JZ_GIMBAL_SINGLE_CALIBRATION_MODE_LEFT_DEBUG_ANGLE_RESET = 4,
  111 + JZ_GIMBAL_SINGLE_CALIBRATION_MODE_RIGHT_MAX = 5,
  112 + JZ_GIMBAL_SINGLE_CALIBRATION_MODE_RIGHT_MIN = 6,
  113 + JZ_GIMBAL_SINGLE_CALIBRATION_MODE_RIGHT_ZERO = 7,
  114 + JZ_GIMBAL_SINGLE_CALIBRATION_MODE_RIGHT_RESET = 8,
  115 + JZ_GIMBAL_SINGLE_CALIBRATION_MODE_RIGHT_DEBUG_ANGLE_RESET = 9,
  116 +
  117 +}E_JZ_GimbalSingleCalibrationMode;
105 118
106 /* Exported types ------------------------------------------------------------*/ 119 /* Exported types ------------------------------------------------------------*/
107 120
@@ -496,6 +496,10 @@ static int Comparison_5AFRAME_FirstLevelCode_0x63(char *getdata) @@ -496,6 +496,10 @@ static int Comparison_5AFRAME_FirstLevelCode_0x63(char *getdata)
496 return JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMEN; 496 return JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMEN;
497 break; 497 break;
498 498
  499 + case 0x53:
  500 + return JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMENPOWERLIMIT;
  501 + break;
  502 +
499 default: 503 default:
500 return JZ_ERROR_SYSTEM_FRAME_ERROR; 504 return JZ_ERROR_SYSTEM_FRAME_ERROR;
501 break; 505 break;
@@ -121,6 +121,22 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len) @@ -121,6 +121,22 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len)
121 } 121 }
122 break; 122 break;
123 123
  124 + case JZ_INSCODE_5AFRAME_LASER_CONTROL:
  125 + {
  126 + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x60 ,0x51 ,0x00, 0x00 , 0x00 ,0x23};
  127 + memcpy(str, sendbuf, 13);
  128 + *str_len = 13;
  129 + }
  130 + break;
  131 +
  132 + case JZ_INSCODE_5AFRAME_LASER_MODE:
  133 + {
  134 + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x60 ,0x52 ,0x00, 0x00 , 0x00 ,0x23};
  135 + memcpy(str, sendbuf, 13);
  136 + *str_len = 13;
  137 + }
  138 + break;
  139 +
124 case JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_FREQUENCY: 140 case JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_FREQUENCY:
125 { 141 {
126 char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x61 ,0x51 ,0x00 ,0x00 ,0x00 ,0x23}; 142 char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x61 ,0x51 ,0x00 ,0x00 ,0x00 ,0x23};
@@ -145,6 +161,14 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len) @@ -145,6 +161,14 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len)
145 } 161 }
146 break; 162 break;
147 163
  164 + case JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMENPOWERLIMIT:
  165 + {
  166 + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x63 ,0x53 ,0x00 ,0x00 ,0x00 ,0x23};
  167 + memcpy(str, sendbuf, 13);
  168 + *str_len = 13;
  169 + }
  170 + break;
  171 +
148 case JZ_INSCODE_5AFRAME_GIMBAL_PITCH_CONTROL: 172 case JZ_INSCODE_5AFRAME_GIMBAL_PITCH_CONTROL:
149 { 173 {
150 char sendbuf[14] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0E ,0x00 ,0x00 ,0x64 ,0x51 ,0x00 ,0x00 ,0x00 ,0x00 ,0x23}; 174 char sendbuf[14] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0E ,0x00 ,0x00 ,0x64 ,0x51 ,0x00 ,0x00 ,0x00 ,0x00 ,0x23};
@@ -7,9 +7,11 @@ @@ -7,9 +7,11 @@
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 "Lighting/Lighting_InAndOut.h"  
11 #include "JZsdk_haldata_deal/JZsdk_data_transmisson.h" 10 #include "JZsdk_haldata_deal/JZsdk_data_transmisson.h"
12 11
  12 +#include "SearchLight/SearchLight.h"
  13 +#include "WarnLight/WarnLight.h"
  14 +
13 #include "IRCUT/ircut.h" 15 #include "IRCUT/ircut.h"
14 #include "Hal_Send/HalSend.h" 16 #include "Hal_Send/HalSend.h"
15 17
@@ -25,11 +27,12 @@ void *JZ_T40_SubConnectTask(void *arg) @@ -25,11 +27,12 @@ void *JZ_T40_SubConnectTask(void *arg)
25 27
26 static int DelayTime = 0; //最多尝试连接设备30s 28 static int DelayTime = 0; //最多尝试连接设备30s
27 29
28 - while (RightGimbalConnectFlag == JZ_FLAGCODE_OFF || 30 + while (
  31 + (RightGimbalConnectFlag == JZ_FLAGCODE_OFF ||
29 LeftGimbalConnectFlag == JZ_FLAGCODE_OFF || 32 LeftGimbalConnectFlag == JZ_FLAGCODE_OFF ||
30 RightLightConnectFlag == JZ_FLAGCODE_OFF || 33 RightLightConnectFlag == JZ_FLAGCODE_OFF ||
31 - LeftLightConnectFlag == JZ_FLAGCODE_OFF ||  
32 - DelayTime < 30000) 34 + LeftLightConnectFlag == JZ_FLAGCODE_OFF ) &&
  35 + DelayTime < 20000)
33 { 36 {
34 s_JZsdk_Hal_Info *HalInfo = JZsdk_Hal_GetHalInfo(); 37 s_JZsdk_Hal_Info *HalInfo = JZsdk_Hal_GetHalInfo();
35 38
@@ -146,7 +149,6 @@ void *JZ_T40_CheckLightTemperatureTask(void *arg) @@ -146,7 +149,6 @@ void *JZ_T40_CheckLightTemperatureTask(void *arg)
146 delayMs(100); 149 delayMs(100);
147 } 150 }
148 151
149 - JZSDK_LOG_INFO("开始检查灯温度");  
150 152
151 while (1) 153 while (1)
152 { 154 {
@@ -202,6 +204,13 @@ static T_JZsdkReturnCode JZ_T40_BaseParamSet(void) @@ -202,6 +204,13 @@ static T_JZsdkReturnCode JZ_T40_BaseParamSet(void)
202 204
203 //设置喊话器音量 205 //设置喊话器音量
204 206
  207 +
  208 +
  209 + //测试部分
  210 +
  211 + //1、将总功率设置为无限制
  212 + //HalSend_type1Send_SearchLight_SetLumenPowerLimit(UART_DEV_2, 0x00, 0x64, 0x20, 0x00);
  213 +
205 } 214 }
206 215
207 /**************************** 216 /****************************
@@ -241,9 +250,9 @@ T_JZsdkReturnCode JZ_T40_init(int mode) @@ -241,9 +250,9 @@ T_JZsdkReturnCode JZ_T40_init(int mode)
241 250
242 JZsdk_HalPort_Init(UART_DEV_2, (void *)&SerialInfo2); 251 JZsdk_HalPort_Init(UART_DEV_2, (void *)&SerialInfo2);
243 252
244 - // //4G初始化  
245 - // value[0] = COMM_4G_UART_BITRATE;  
246 - // JZsdk_HalPort_Init(UART_4G, value); 253 + //4G初始化
  254 + int value[1] = {COMM_4G_UART_BITRATE};
  255 + JZsdk_HalPort_Init(UART_4G, value);
247 256
248 //子设备连接 257 //子设备连接
249 JZ_T40_SubDevice_Init(); 258 JZ_T40_SubDevice_Init();
@@ -257,11 +266,17 @@ T_JZsdkReturnCode JZ_T40_init(int mode) @@ -257,11 +266,17 @@ T_JZsdkReturnCode JZ_T40_init(int mode)
257 //云台初始化 266 //云台初始化
258 Gimbal_Init(JZ_MODULE_CONTROL_WAY_INDEPENDENT); 267 Gimbal_Init(JZ_MODULE_CONTROL_WAY_INDEPENDENT);
259 268
260 - //灯类初始化  
261 - Lighting_Init(); 269 + //探照灯初始化
  270 + SearchLight_Init(JZ_MODULE_CONTROL_WAY_INDEPENDENT);
  271 +
  272 + //警灯初始化
  273 + WarnLight_Init(JZ_MODULE_CONTROL_WAY_INDEPENDENT);
  274 +
  275 + //激光初始化
  276 + SideLaser_Init();
262 277
263 - //制造一个定时查询温度的线程  
264 - //JZ_T40_CheckLightTemperature(); 278 + //温度检测
  279 + JZ_T40_CheckLightTemperature();
265 280
266 //基础参数设置 281 //基础参数设置
267 JZ_T40_BaseParamSet(); 282 JZ_T40_BaseParamSet();
@@ -7,23 +7,23 @@ @@ -7,23 +7,23 @@
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_H150S 10 +#define DEVICE_VERSION JZ_T40
11 11
12 //禁止修改行 选择是串口程序 还是 psdk程序 12 //禁止修改行 选择是串口程序 还是 psdk程序
13 -#define APP_VERSION APP_PSDK 13 +#define APP_VERSION APP_UART
14 14
15 //禁止修改行 板子型号 15 //禁止修改行 板子型号
16 #define PLATFORM_VERSION PLATFORM_V3S 16 #define PLATFORM_VERSION PLATFORM_V3S
17 17
18 //禁止修改行 串口连接程序的软件版本号 18 //禁止修改行 串口连接程序的软件版本号
19 #define MAJOR_VERSION_TEN_POSITION 0 19 #define MAJOR_VERSION_TEN_POSITION 0
20 -#define MAJOR_VERSION_ONE_POSITION 1 20 +#define MAJOR_VERSION_ONE_POSITION 0
21 #define MINOR_VERSION_TEN_POSITION 0 21 #define MINOR_VERSION_TEN_POSITION 0
22 -#define MINOR_VERSION_ONE_POSITION 3  
23 -#define MODIFY_VERSION_TEN_POSITION 1 22 +#define MINOR_VERSION_ONE_POSITION 0
  23 +#define MODIFY_VERSION_TEN_POSITION 0
24 #define MODIFY_VERSION_ONE_POSITION 2 24 #define MODIFY_VERSION_ONE_POSITION 2
25 -#define DEBUG_VERSION_TEN_POSITION 0  
26 -#define DEBUG_VERSION_ONE_POSITION 0 25 +#define DEBUG_VERSION_TEN_POSITION 2
  26 +#define DEBUG_VERSION_ONE_POSITION 2
27 27
28 28
29 29
@@ -44,6 +44,11 @@ @@ -44,6 +44,11 @@
44 #define AUDIODEAL_CONFIG_STATUS_ON 44 #define AUDIODEAL_CONFIG_STATUS_ON
45 #endif 45 #endif
46 46
  47 + //是否开启回声抑制功能
  48 + #ifdef MACRO_SPEEX_MODULE
  49 + #define SPEEX_STATUS_ON
  50 + #endif
  51 +
47 //是否开启喊话器功能 52 //是否开启喊话器功能
48 #ifdef MACRO_MEGAPHONE_MODULE 53 #ifdef MACRO_MEGAPHONE_MODULE
49 #define MEGAPHONE_CONFIG_STATUS_ON 54 #define MEGAPHONE_CONFIG_STATUS_ON
@@ -106,16 +111,16 @@ @@ -106,16 +111,16 @@
106 #define SIDE_LASER_STATUS_ON 111 #define SIDE_LASER_STATUS_ON
107 #endif 112 #endif
108 113
109 - //是否加载光源模块  
110 - #ifdef MACRO_LIGHTING_MODULE  
111 - #define LIGHTING_STATUS_ON  
112 - #endif  
113 -  
114 //是否加载探照灯模块 114 //是否加载探照灯模块
115 #ifdef MACRO_SEARCHLIGHT_MODULE 115 #ifdef MACRO_SEARCHLIGHT_MODULE
116 #define SEARCHLIGHT_STATUS_ON 116 #define SEARCHLIGHT_STATUS_ON
117 #endif 117 #endif
118 118
  119 + //是否加载警灯模块
  120 + #ifdef MACRO_WARNLIGHT_MODULE
  121 + #define WARNLIGHT_STATUS_ON
  122 + #endif
  123 +
119 //是否加载云台模块 124 //是否加载云台模块
120 #ifdef MACRO_GIMBAL_MODULE 125 #ifdef MACRO_GIMBAL_MODULE
121 #define GIMBAL_STATUS_ON 126 #define GIMBAL_STATUS_ON
@@ -125,6 +130,7 @@ @@ -125,6 +130,7 @@
125 130
126 //是否开启音频库功能 131 //是否开启音频库功能
127 #define AUDIODEAL_CONFIG_STATUS_ON 132 #define AUDIODEAL_CONFIG_STATUS_ON
  133 + #define SPEEX_STATUS_ON //回声抑制库
128 134
129 //是否开启喊话器功能 135 //是否开启喊话器功能
130 #define MEGAPHONE_CONFIG_STATUS_ON 136 #define MEGAPHONE_CONFIG_STATUS_ON
@@ -159,12 +165,12 @@ @@ -159,12 +165,12 @@
159 //默认开启satlib 165 //默认开启satlib
160 #define SATIRC_LIB_STATUS_ON 166 #define SATIRC_LIB_STATUS_ON
161 167
162 - //默认开启光源模块  
163 - #define LIGHTING_STATUS_ON  
164 -  
165 //默认开启探照灯模块 168 //默认开启探照灯模块
166 #define SEARCHLIGHT_STATUS_ON 169 #define SEARCHLIGHT_STATUS_ON
167 170
  171 + //默认开启警灯模块
  172 + #define WARNLIGHT_STATUS_ON
  173 +
168 //默认开启云台模块 174 //默认开启云台模块
169 #define GIMBAL_STATUS_ON 175 #define GIMBAL_STATUS_ON
170 #endif 176 #endif
@@ -3008,23 +3008,21 @@ static T_JZsdkReturnCode RecvDeal_CheckStatus_SearchLightLightAttribute(int Port @@ -3008,23 +3008,21 @@ static T_JZsdkReturnCode RecvDeal_CheckStatus_SearchLightLightAttribute(int Port
3008 3008
3009 T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 3009 T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
3010 3010
3011 -#ifdef SEARCHLIGHT_STATUS_ON  
3012 //1、获取帧的序列号 3011 //1、获取帧的序列号
3013 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 3012 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
3014 3013
3015 //2、查询灯光属性 3014 //2、查询灯光属性
3016 - ret = UIcontrol_FlushSearchLightLightAttribute();  
3017 -  
3018 - T_JzSearchLightAttribute LightAttribute;  
3019 - ret = SearchLight_Get_SearchLightAttribute(&LightAttribute); 3015 + int Frequency;
  3016 + int Mode;
  3017 + int LeftBrightness;
  3018 + int RightBrightness;
3020 3019
  3020 + ret = UIcontrol_CheckStatus_SearchLightLightAttribute(&LeftBrightness, &RightBrightness, &Mode, &Frequency);
3021 3021
3022 // 2、回复灯光属性 3022 // 2、回复灯光属性
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 3023 + HalSend_type1Send_SearchLight_Frequency(Port, Frequency);
  3024 + HalSend_type1Send_SearchLight_Mode(Port, Mode);
  3025 + HalSend_type1Send_SearchLight_Lumen(Port, LeftBrightness, RightBrightness);
3028 3026
3029 return ret; 3027 return ret;
3030 } 3028 }
@@ -3140,8 +3138,8 @@ static T_JZsdkReturnCode RecvDeal_CheckStatus_LaserStatus(int Port, char *getbuf @@ -3140,8 +3138,8 @@ static T_JZsdkReturnCode RecvDeal_CheckStatus_LaserStatus(int Port, char *getbuf
3140 #endif 3138 #endif
3141 3139
3142 // 2、回复激光状态 3140 // 2、回复激光状态
3143 - HalSend_type1Send_LaserControl(Port, LaserControl);  
3144 - HalSend_type1Send_LaserMode(Port, LaserMode); 3141 + HalSend_type1Send_LaserControl(Port, 0x00, LaserControl);
  3142 + HalSend_type1Send_LaserMode(Port, 0x00, LaserMode);
3145 3143
3146 return ReturnCode; 3144 return ReturnCode;
3147 } 3145 }
@@ -4143,17 +4141,35 @@ static T_JZsdkReturnCode RecvDeal_ObtainSearchLight_Lumen(int Port, char *getbuf @@ -4143,17 +4141,35 @@ static T_JZsdkReturnCode RecvDeal_ObtainSearchLight_Lumen(int Port, char *getbuf
4143 **********/ 4141 **********/
4144 static T_JZsdkReturnCode RecvDeal_ObtainSearchLight_Temperature(int Port, char *getbuf) 4142 static T_JZsdkReturnCode RecvDeal_ObtainSearchLight_Temperature(int Port, char *getbuf)
4145 { 4143 {
4146 - //JZSDK_LOG_INFO("%s,收到探照灯温度",JZsdk_DefineCode_GetPortName(Port)); 4144 +
4147 4145
4148 //获取帧的序列号 4146 //获取帧的序列号
4149 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 4147 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
4150 4148
  4149 + //判断数据位长度
  4150 + int FrameLenth = JZsdk_Get_FrameLength(getbuf);
  4151 + int DataLength = FrameLenth - 11;
  4152 +
  4153 + if (DataLength == 2)
  4154 + {
4151 //1、通过数据帧2,获取值 4155 //1、通过数据帧2,获取值
4152 int value1 = getbuf[9]; 4156 int value1 = getbuf[9];
4153 int value2 = getbuf[10]; 4157 int value2 = getbuf[10];
4154 4158
  4159 + //JZSDK_LOG_DEBUG("%s,收到探照灯温度 %d %d",JZsdk_DefineCode_GetPortName(Port), value1, value2);
  4160 +
4155 //2、发送到本地处理 4161 //2、发送到本地处理
4156 UIcontrol_ObtainSearchLight_Temperature(Port, value1, value2); 4162 UIcontrol_ObtainSearchLight_Temperature(Port, value1, value2);
  4163 + }
  4164 + if (DataLength == 1)
  4165 + {
  4166 + int value = getbuf[9];
  4167 +
  4168 + //JZSDK_LOG_DEBUG("%s, %x 收到探照灯温度 %d",JZsdk_DefineCode_GetPortName(Port), FrameSequence,value);
  4169 +
  4170 + //2、发送到本地处理
  4171 + UIcontrol_ObtainSearchLight_SingleTemperature(Port, FrameSequence, value);
  4172 + }
4157 4173
4158 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 4174 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
4159 } 4175 }
@@ -1200,6 +1200,27 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetSingleLumem(int Uartport, in @@ -1200,6 +1200,27 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetSingleLumem(int Uartport, in
1200 HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND); 1200 HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1201 } 1201 }
1202 1202
  1203 +//设置亮度功率上限
  1204 +T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetLumenPowerLimit(int Uartport,int dire, int value, int FrameSequence, int ReplyFlag)
  1205 +{
  1206 + printf("发送设置亮度功率上限\n");
  1207 +
  1208 + unsigned char sendbuf[256];
  1209 + int send_buf_len;
  1210 +
  1211 + //1、获取帧样板
  1212 + JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMENPOWERLIMIT, sendbuf, &send_buf_len);
  1213 +
  1214 + //2、写入数据
  1215 + sendbuf[5] = ReplyFlag;
  1216 + sendbuf[6] = FrameSequence; //帧序列
  1217 + sendbuf[9] = dire;
  1218 + sendbuf[10] = value;
  1219 +
  1220 + //3、发送帧
  1221 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
  1222 +}
  1223 +
1203 1224
1204 //查询探照灯频率 1225 //查询探照灯频率
1205 T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Frequency(int Uartport) 1226 T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Frequency(int Uartport)
@@ -1264,7 +1285,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Attribute(int Uartpo @@ -1264,7 +1285,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Attribute(int Uartpo
1264 //查询探照灯温度 1285 //查询探照灯温度
1265 T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Temperture(int Uartport, int FrameSequence) 1286 T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Temperture(int Uartport, int FrameSequence)
1266 { 1287 {
1267 - printf("发送查询探照灯温度\n"); 1288 + //printf("发送查询探照灯温度\n");
1268 1289
1269 unsigned char sendbuf[256]; 1290 unsigned char sendbuf[256];
1270 int send_buf_len; 1291 int send_buf_len;
@@ -1272,6 +1293,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Temperture(int Uartp @@ -1272,6 +1293,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Temperture(int Uartp
1272 //1、获取帧样板 1293 //1、获取帧样板
1273 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE, sendbuf, &send_buf_len); 1294 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE, sendbuf, &send_buf_len);
1274 1295
  1296 + sendbuf[5] = 0x01;
1275 sendbuf[6] = FrameSequence; 1297 sendbuf[6] = FrameSequence;
1276 1298
1277 //2、发送帧 1299 //2、发送帧
@@ -1413,7 +1435,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeCheckResult(int Uartport, int s @@ -1413,7 +1435,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeCheckResult(int Uartport, int s
1413 * 设置警灯状态 1435 * 设置警灯状态
1414 * 1436 *
1415 * **************/ 1437 * **************/
1416 -T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Status(int Uartport,int status, int mode) 1438 +T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Status(int Uartport, int frameSequence,int status, int mode)
1417 { 1439 {
1418 printf("发送设置警灯状态\n"); 1440 printf("发送设置警灯状态\n");
1419 1441
@@ -1424,6 +1446,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Status(int Uartport,int sta @@ -1424,6 +1446,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Status(int Uartport,int sta
1424 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_WARNINGLIGHT_CONTROL, sendbuf, &send_buf_len); 1446 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_WARNINGLIGHT_CONTROL, sendbuf, &send_buf_len);
1425 1447
1426 //2、写入数据 1448 //2、写入数据
  1449 + sendbuf[6] = frameSequence;
1427 sendbuf[9] = status; 1450 sendbuf[9] = status;
1428 sendbuf[10] = mode; 1451 sendbuf[10] = mode;
1429 1452
@@ -1436,7 +1459,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Status(int Uartport,int sta @@ -1436,7 +1459,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Status(int Uartport,int sta
1436 * 设置警灯颜色 1459 * 设置警灯颜色
1437 * 1460 *
1438 * **************/ 1461 * **************/
1439 -T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Color(int Uartport,int color1, int color2) 1462 +T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Color(int Uartport, int frameSequence, int color1, int color2)
1440 { 1463 {
1441 printf("发送设置警灯颜色\n"); 1464 printf("发送设置警灯颜色\n");
1442 1465
@@ -1449,6 +1472,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Color(int Uartport,int colo @@ -1449,6 +1472,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Color(int Uartport,int colo
1449 //2、写入数据 1472 //2、写入数据
1450 sendbuf[9] = color1; 1473 sendbuf[9] = color1;
1451 sendbuf[10] = color2; 1474 sendbuf[10] = color2;
  1475 + sendbuf[6] = frameSequence;
1452 1476
1453 //3、发送帧 1477 //3、发送帧
1454 HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND); 1478 HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
@@ -1557,12 +1581,60 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Lumen(int Uartport,int LeftLumen @@ -1557,12 +1581,60 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Lumen(int Uartport,int LeftLumen
1557 HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND); 1581 HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1558 } 1582 }
1559 1583
  1584 +
  1585 +/***********
  1586 + *
  1587 + * 控制侧面激光
  1588 + *
  1589 + * *************/
  1590 +T_JZsdkReturnCode HalSend_type1Send_SetLaserControl(int Uartport, int frameSequence, int Control)
  1591 +{
  1592 + printf("发送 控制侧面激光\n");
  1593 +
  1594 + unsigned char sendbuf[256];
  1595 + int send_buf_len;
  1596 +
  1597 + //1、获取帧样板
  1598 + JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_LASER_CONTROL, sendbuf, &send_buf_len);
  1599 +
  1600 + //2、写入数据
  1601 + sendbuf[6] = frameSequence;
  1602 + sendbuf[10] = Control;
  1603 +
  1604 + //3、发送帧
  1605 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
  1606 +}
  1607 +
  1608 +/***********
  1609 + *
  1610 + * 控制侧面模式
  1611 + *
  1612 + * *************/
  1613 +T_JZsdkReturnCode HalSend_type1Send_SetLaserMode(int Uartport, int frameSequence, int mode)
  1614 +{
  1615 + printf("发送 控制侧面激光模式\n");
  1616 +
  1617 + unsigned char sendbuf[256];
  1618 + int send_buf_len;
  1619 +
  1620 + //1、获取帧样板
  1621 + JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_LASER_MODE, sendbuf, &send_buf_len);
  1622 +
  1623 + //2、写入数据
  1624 + sendbuf[6] = frameSequence;
  1625 + sendbuf[10] = mode;
  1626 +
  1627 + //3、发送帧
  1628 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
  1629 +}
  1630 +
  1631 +
1560 /******************** 1632 /********************
1561 * 1633 *
1562 * 发送侧面激光控制值 1634 * 发送侧面激光控制值
1563 * 1635 *
1564 * *************/ 1636 * *************/
1565 -T_JZsdkReturnCode HalSend_type1Send_LaserControl(int Uartport, int Control) 1637 +T_JZsdkReturnCode HalSend_type1Send_LaserControl(int Uartport, int frameSequence, int Control)
1566 { 1638 {
1567 printf("发送侧面激光控制值帧\n"); 1639 printf("发送侧面激光控制值帧\n");
1568 1640
@@ -1573,6 +1645,7 @@ T_JZsdkReturnCode HalSend_type1Send_LaserControl(int Uartport, int Control) @@ -1573,6 +1645,7 @@ T_JZsdkReturnCode HalSend_type1Send_LaserControl(int Uartport, int Control)
1573 JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_CHECKSTATUS_LASER_STATUS_CONTROL, sendbuf, &send_buf_len); 1645 JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_CHECKSTATUS_LASER_STATUS_CONTROL, sendbuf, &send_buf_len);
1574 1646
1575 //2、写入数据 1647 //2、写入数据
  1648 + sendbuf[6] = frameSequence;
1576 sendbuf[10] = Control; 1649 sendbuf[10] = Control;
1577 1650
1578 //3、发送帧 1651 //3、发送帧
@@ -1584,7 +1657,7 @@ T_JZsdkReturnCode HalSend_type1Send_LaserControl(int Uartport, int Control) @@ -1584,7 +1657,7 @@ T_JZsdkReturnCode HalSend_type1Send_LaserControl(int Uartport, int Control)
1584 * 发送侧面激光模式 1657 * 发送侧面激光模式
1585 * 1658 *
1586 * *************/ 1659 * *************/
1587 -T_JZsdkReturnCode HalSend_type1Send_LaserMode(int Uartport, int mode) 1660 +T_JZsdkReturnCode HalSend_type1Send_LaserMode(int Uartport, int frameSequence, int mode)
1588 { 1661 {
1589 printf("发送侧面激光模式值帧\n"); 1662 printf("发送侧面激光模式值帧\n");
1590 1663
@@ -1595,6 +1668,7 @@ T_JZsdkReturnCode HalSend_type1Send_LaserMode(int Uartport, int mode) @@ -1595,6 +1668,7 @@ T_JZsdkReturnCode HalSend_type1Send_LaserMode(int Uartport, int mode)
1595 JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_CHECKSTATUS_LASER_STATUS_MODE, sendbuf, &send_buf_len); 1668 JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_CHECKSTATUS_LASER_STATUS_MODE, sendbuf, &send_buf_len);
1596 1669
1597 //2、写入数据 1670 //2、写入数据
  1671 + sendbuf[6] = frameSequence;
1598 sendbuf[10] = mode; 1672 sendbuf[10] = mode;
1599 1673
1600 //3、发送帧 1674 //3、发送帧
@@ -91,12 +91,14 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_CurrentPlayTimeStatus(int Uartport, in @@ -91,12 +91,14 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_CurrentPlayTimeStatus(int Uartport, in
91 T_JZsdkReturnCode HalSend_type1Send_Set_SearchLightFrequency(int Uartport ,int Frequency, int FrameSequence); 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); 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); 93 T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetLumen(int Uartport, int LeftLumen, int RightLumen, int FrameSequence);
  94 +T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetLumenPowerLimit(int Uartport,int dire, int value, int FrameSequence, int ReplyFlag);
  95 +
94 T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetSingleLumem(int Uartport, int Lumen, int FrameSequence); 96 T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetSingleLumem(int Uartport, int Lumen, int FrameSequence);
95 97
96 T_JZsdkReturnCode HalSend_type1Send_MessageSubcription_Control(int Uartport, int value); 98 T_JZsdkReturnCode HalSend_type1Send_MessageSubcription_Control(int Uartport, int value);
97 99
98 -T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Status(int Uartport,int status, int mode);  
99 -T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Color(int Uartport,int color1, int color2); 100 +T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Status(int Uartport, int frameSequence,int status, int mode);
  101 +T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Color(int Uartport, int frameSequence, int color1, int color2);
100 102
101 T_JZsdkReturnCode HalSend_type1Send_SerialNumber(int UartPort, int FrameSequence, char *SerialNumber, int SerialNumberLenth); 103 T_JZsdkReturnCode HalSend_type1Send_SerialNumber(int UartPort, int FrameSequence, char *SerialNumber, int SerialNumberLenth);
102 T_JZsdkReturnCode HalSend_type1Send_Reply_CheckSpecialParameters(int Uartport,int FrameSequence,int type, int value); 104 T_JZsdkReturnCode HalSend_type1Send_Reply_CheckSpecialParameters(int Uartport,int FrameSequence,int type, int value);
@@ -109,6 +111,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_CheckSpecialParameters(int Uartport,in @@ -109,6 +111,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_CheckSpecialParameters(int Uartport,in
109 T_JZsdkReturnCode HalSend_type1Send_SearchLight_Frequency(int Uartport, int Frequency); 111 T_JZsdkReturnCode HalSend_type1Send_SearchLight_Frequency(int Uartport, int Frequency);
110 T_JZsdkReturnCode HalSend_type1Send_SearchLight_Mode(int Uartport, int mode); 112 T_JZsdkReturnCode HalSend_type1Send_SearchLight_Mode(int Uartport, int mode);
111 T_JZsdkReturnCode HalSend_type1Send_SearchLight_Lumen(int Uartport,int LeftLumen, int RightLumen); 113 T_JZsdkReturnCode HalSend_type1Send_SearchLight_Lumen(int Uartport,int LeftLumen, int RightLumen);
  114 +
112 T_JZsdkReturnCode HalSend_type1Send_SearchLight_Temperature(int Uartport, int LeftTemperature, int RightTemperature); 115 T_JZsdkReturnCode HalSend_type1Send_SearchLight_Temperature(int Uartport, int LeftTemperature, int RightTemperature);
113 116
114 117
@@ -134,9 +137,11 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeStart(int Uartport); @@ -134,9 +137,11 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeStart(int Uartport);
134 T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeEnd(int Uartport); 137 T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeEnd(int Uartport);
135 T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeCheckResult(int Uartport, int status); 138 T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeCheckResult(int Uartport, int status);
136 139
137 -T_JZsdkReturnCode HalSend_type1Send_LaserControl(int Uartport, int Control);  
138 -T_JZsdkReturnCode HalSend_type1Send_LaserMode(int Uartport, int mode); 140 +T_JZsdkReturnCode HalSend_type1Send_LaserControl(int Uartport, int frameSequence, int Control);
  141 +T_JZsdkReturnCode HalSend_type1Send_LaserMode(int Uartport, int frameSequence, int mode);
139 142
  143 +T_JZsdkReturnCode HalSend_type1Send_SetLaserControl(int Uartport, int frameSequence, int Control);
  144 +T_JZsdkReturnCode HalSend_type1Send_SetLaserMode(int Uartport, int frameSequence, int mode);
140 145
141 146
142 /* Exported functions --------------------------------------------------------*/ 147 /* Exported functions --------------------------------------------------------*/
@@ -221,7 +221,7 @@ static void *UartDeal_rece(void *arg) @@ -221,7 +221,7 @@ 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 -#if 1 224 +#if 0
225 JZSDK_LOG_INFO("从串口读取到,长度%d",(args->MessageLength-args->ResLen)); 225 JZSDK_LOG_INFO("从串口读取到,长度%d",(args->MessageLength-args->ResLen));
226 226
227 for (int i = 0; i < (args->MessageLength-args->ResLen); i++) 227 for (int i = 0; i < (args->MessageLength-args->ResLen); i++)
@@ -523,17 +523,17 @@ T_JZsdkReturnCode JZsdk_Uart_UartSend_NotTask(int Uart_Name, unsigned char *str, @@ -523,17 +523,17 @@ T_JZsdkReturnCode JZsdk_Uart_UartSend_NotTask(int Uart_Name, unsigned char *str,
523 { 523 {
524 if (Uart_Name == UART_4G) 524 if (Uart_Name == UART_4G)
525 { 525 {
526 - printf("向4G设备发送\n"); 526 + //printf("向4G设备发送\n");
527 write(Uart_4G_fd, str, str_lenth); 527 write(Uart_4G_fd, str, str_lenth);
528 } 528 }
529 else if (Uart_Name == UART_DEV_1) 529 else if (Uart_Name == UART_DEV_1)
530 { 530 {
531 - printf("向串口1号设备发送\n"); 531 + //printf("向串口1号设备发送\n");
532 write(Uart_DEV1_fd, str, str_lenth); 532 write(Uart_DEV1_fd, str, str_lenth);
533 } 533 }
534 else if (Uart_Name = UART_DEV_2) 534 else if (Uart_Name = UART_DEV_2)
535 { 535 {
536 - printf("向串口2号设备发送\n"); 536 + //printf("向串口2号设备发送\n");
537 write(Uart_DEV2_fd, str, str_lenth); 537 write(Uart_DEV2_fd, str, str_lenth);
538 } 538 }
539 539
@@ -558,17 +558,17 @@ static void JZsdk_Uart_UartSend_Task(void *data) @@ -558,17 +558,17 @@ static void JZsdk_Uart_UartSend_Task(void *data)
558 558
559 if (taskData->Uart_name == UART_4G) 559 if (taskData->Uart_name == UART_4G)
560 { 560 {
561 - printf("task4G设备发送\n"); 561 + //printf("task4G设备发送\n");
562 write(Uart_4G_fd, taskData->str, taskData->str_lenth); 562 write(Uart_4G_fd, taskData->str, taskData->str_lenth);
563 } 563 }
564 else if (taskData->Uart_name == UART_DEV_1) 564 else if (taskData->Uart_name == UART_DEV_1)
565 { 565 {
566 - printf("task串口1号设备发送\n"); 566 + //printf("task串口1号设备发送\n");
567 write(Uart_DEV1_fd, taskData->str, taskData->str_lenth); 567 write(Uart_DEV1_fd, taskData->str, taskData->str_lenth);
568 } 568 }
569 else if (taskData->Uart_name == UART_DEV_2) 569 else if (taskData->Uart_name == UART_DEV_2)
570 { 570 {
571 - printf("task串口2号设备发送\n"); 571 + //printf("task串口2号设备发送\n");
572 write(Uart_DEV2_fd, taskData->str, taskData->str_lenth); 572 write(Uart_DEV2_fd, taskData->str, taskData->str_lenth);
573 } 573 }
574 else if (taskData->Uart_name == HAL_DATA_TRANSMISSION) 574 else if (taskData->Uart_name == HAL_DATA_TRANSMISSION)
@@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
8 #include "FF_Statement.h" 8 #include "FF_Statement.h"
9 #include "./AudioDeal.h" 9 #include "./AudioDeal.h"
10 #include "JZsdkLib.h" 10 #include "JZsdkLib.h"
11 - 11 +#include "version_choose.h"
12 12
13 13
14 #include "./AudioDealThread/AudioDealThread.h" 14 #include "./AudioDealThread/AudioDealThread.h"
@@ -18,6 +18,10 @@ @@ -18,6 +18,10 @@
18 #include "AudioStreamDeal/AudioStreamDeal.h" 18 #include "AudioStreamDeal/AudioStreamDeal.h"
19 #include "Filter/FF_Filter.h" 19 #include "Filter/FF_Filter.h"
20 20
  21 +#ifdef SPEEX_STATUS_ON
  22 + #include "Speex/Speex.h"
  23 +#endif
  24 +
21 #define MP3_DIR "/root/sdcard/1.mp3" 25 #define MP3_DIR "/root/sdcard/1.mp3"
22 #define PCM_16000_DIR "/root/sdcard/16000_test.pcm" 26 #define PCM_16000_DIR "/root/sdcard/16000_test.pcm"
23 #define READ_SIZE (2000) 27 #define READ_SIZE (2000)
@@ -119,15 +123,15 @@ T_JZsdkReturnCode AudioDeal_ResampleRest(unsigned int in_sampleRate, AVChannelLa @@ -119,15 +123,15 @@ T_JZsdkReturnCode AudioDeal_ResampleRest(unsigned int in_sampleRate, AVChannelLa
119 * 123 *
120 * ***************************************************************************************************************************************************/ 124 * ***************************************************************************************************************************************************/
121 125
122 -/*************************** 126 +/*************
123 * 127 *
124 - * pcm数据接入接口 128 + * 文本类型的pcm数据导入接口
125 * 129 *
126 - * Data Type = 0 为文本pcm  
127 - * Date Type = 1 为语音流pcm 130 + * 区别
  131 + * a 使用文本专用的滤波
128 * 132 *
129 - * ************/  
130 -T_JZsdkReturnCode AudioDeal_PcmDataInput(int In_Bitrate, unsigned char *buffer, int bytesRead, int DataType) 133 + * **********************/
  134 +T_JZsdkReturnCode AudioDeal_PcmDataInput_TextSteam(int In_Bitrate, unsigned char *buffer, int bytesRead)
131 { 135 {
132 if (AudioDeakInfo_index == NULL) 136 if (AudioDeakInfo_index == NULL)
133 { 137 {
@@ -140,22 +144,112 @@ T_JZsdkReturnCode AudioDeal_PcmDataInput(int In_Bitrate, unsigned char *buffer, @@ -140,22 +144,112 @@ T_JZsdkReturnCode AudioDeal_PcmDataInput(int In_Bitrate, unsigned char *buffer,
140 delayMs(1); 144 delayMs(1);
141 } 145 }
142 146
  147 + int DateType = 0x00;
143 148
144 //1、打开音频库的处理标志位,该标志可以重复打开,只有强制关闭音频时,需要关闭该标志 149 //1、打开音频库的处理标志位,该标志可以重复打开,只有强制关闭音频时,需要关闭该标志
145 AudioDeakInfo_index->AudioDeal_ResampleAndFilter_Execute_Flag = JZ_FLAGCODE_ON; 150 AudioDeakInfo_index->AudioDeal_ResampleAndFilter_Execute_Flag = JZ_FLAGCODE_ON;
146 151
147 - //Set_AudioDeal_ResampleAndFilterAndPlay_Flag(AudioDeakInfo_index, JZ_FLAGCODE_ON);  
148 -  
149 //默认数据pcm接入口都是 单声道,16位 152 //默认数据pcm接入口都是 单声道,16位
150 - PCM_PooL_Interface_PcmData(AudioDeakInfo_index, In_Bitrate, (AVChannelLayout)AV_CHANNEL_LAYOUT_MONO, AV_SAMPLE_FMT_S16, buffer, bytesRead, DataType); 153 + PCM_PooL_Interface_PcmData(AudioDeakInfo_index, In_Bitrate, (AVChannelLayout)AV_CHANNEL_LAYOUT_MONO, AV_SAMPLE_FMT_S16, buffer, bytesRead, DateType);
151 //printf("Read %zu bytes from the PCM file.\n", bytesRead); 154 //printf("Read %zu bytes from the PCM file.\n", bytesRead);
152 155
153 - //标志音频库已经结束,不过alsa库内有10组缓存,该标志位结束,只能认为重采样和滤波结束  
154 - //Set_AudioDeal_ResampleAndFilterAndPlay_Flag(AudioDeakInfo_index, JZ_FLAGCODE_OFF); 156 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  157 +}
  158 +
  159 +
  160 +/*************
  161 + *
  162 + * 录音语音类型的pcm数据导入接口
  163 + *
  164 + * 区别
  165 + * a 使用语音专用的滤波
  166 + *
  167 + * **********************/
  168 +T_JZsdkReturnCode AudioDeal_PcmDataInput_RecordSteam(int In_Bitrate, unsigned char *buffer, int bytesRead)
  169 +{
  170 + if (AudioDeakInfo_index == NULL)
  171 + {
  172 + JZSDK_LOG_ERROR("音频处理器未注册");
  173 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  174 + }
  175 +
  176 + while (Audiodeal_status != JZ_FLAGCODE_ON)
  177 + {
  178 + delayMs(1);
  179 + }
  180 +
  181 + int DateType = 0x01;
  182 +
  183 + //1、打开音频库的处理标志位,该标志可以重复打开,只有强制关闭音频时,需要关闭该标志
  184 + AudioDeakInfo_index->AudioDeal_ResampleAndFilter_Execute_Flag = JZ_FLAGCODE_ON;
  185 +
  186 + //默认数据pcm接入口都是 单声道,16位
  187 + PCM_PooL_Interface_PcmData(AudioDeakInfo_index, In_Bitrate, (AVChannelLayout)AV_CHANNEL_LAYOUT_MONO, AV_SAMPLE_FMT_S16, buffer, bytesRead, DateType);
  188 +
  189 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  190 +}
  191 +
  192 +/*************
  193 + *
  194 + * 实时语音语音类型的pcm数据导入接口
  195 + *
  196 + * 区别
  197 + * a 使用语音专用的滤波
  198 + * b 需要进行回音消除
  199 + *
  200 + * **********************/
  201 +T_JZsdkReturnCode AudioDeal_PcmDataInput_RealTimeSteam(int In_Bitrate, unsigned char *buffer, int bytesRead)
  202 +{
  203 + if (AudioDeakInfo_index == NULL)
  204 + {
  205 + JZSDK_LOG_ERROR("音频处理器未注册");
  206 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  207 + }
  208 +
  209 + while (Audiodeal_status != JZ_FLAGCODE_ON)
  210 + {
  211 + delayMs(1);
  212 + }
  213 +
  214 + int DateType = 0x02;
  215 +
  216 + //1、打开音频库的处理标志位,该标志可以重复打开,只有强制关闭音频时,需要关闭该标志
  217 + AudioDeakInfo_index->AudioDeal_ResampleAndFilter_Execute_Flag = JZ_FLAGCODE_ON;
  218 +
  219 + //将数据拿去进行回音消除
  220 + //将数据合并为u16型
  221 +
  222 +#ifdef SPEEX_STATUS_ON
  223 +
  224 + short TempPcm[bytesRead / 2];
  225 + short OutPcm[bytesRead / 2];
  226 + for (int i = 0; i < bytesRead / 2; i++)
  227 + {
  228 + TempPcm[i] = (buffer[2*i] & 0xFF) | (((short)buffer[2*i + 1]) << 8);
  229 + }
  230 +
  231 + //送去回音消除
  232 + T_JZsdkReturnCode ret = Speex_DealData(TempPcm, OutPcm, bytesRead / 2);
  233 + // if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  234 + // {
  235 + // //将输出的pcm还原回u8型到数据缓冲区
  236 + // for (int i = 0; i < bytesRead / 2; i++)
  237 + // {
  238 + // buffer[2*i] = (OutPcm[i] & 0xFF);
  239 + // buffer[2*i + 1] = ((OutPcm[i] >> 8) & 0xFF);
  240 + // }
  241 + // }
  242 +
  243 +#endif
  244 +
  245 + //默认数据pcm接入口都是 单声道,16位
  246 + PCM_PooL_Interface_PcmData(AudioDeakInfo_index, In_Bitrate, (AVChannelLayout)AV_CHANNEL_LAYOUT_MONO, AV_SAMPLE_FMT_S16, buffer, bytesRead, DateType);
155 247
156 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 248 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
157 } 249 }
158 250
  251 +
  252 +
159 // /*************************** 253 // /***************************
160 // * 254 // *
161 // * 无回复接口 255 // * 无回复接口
@@ -360,3 +454,18 @@ T_JZsdkReturnCode Get_AudioDealStatus() @@ -360,3 +454,18 @@ T_JZsdkReturnCode Get_AudioDealStatus()
360 { 454 {
361 return Get_AudioDealThreadStatus(); 455 return Get_AudioDealThreadStatus();
362 } 456 }
  457 +
  458 +/**************
  459 + *
  460 + * 回音抑制初始化
  461 + *
  462 + * ***********/
  463 +T_JZsdkReturnCode AudioDeal_EchoCancellation_Init(int SampleRate)
  464 +{
  465 +#ifdef SPEEX_STATUS_ON
  466 +
  467 + Speex_Init(SampleRate);
  468 +#endif
  469 +
  470 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  471 +}
@@ -89,7 +89,13 @@ enum AudioDealPlayType @@ -89,7 +89,13 @@ enum AudioDealPlayType
89 89
90 /* Exported functions --------------------------------------------------------*/ 90 /* Exported functions --------------------------------------------------------*/
91 T_JZsdkReturnCode AudioDeal_Init(); 91 T_JZsdkReturnCode AudioDeal_Init();
92 -T_JZsdkReturnCode AudioDeal_PcmDataInput(int In_Bitrate, unsigned char *buffer, int bytesRead, int DataType); 92 +
  93 +T_JZsdkReturnCode AudioDeal_PcmDataInput_TextSteam(int In_Bitrate, unsigned char *buffer, int bytesRead);
  94 +T_JZsdkReturnCode AudioDeal_PcmDataInput_RecordSteam(int In_Bitrate, unsigned char *buffer, int bytesRead);
  95 +T_JZsdkReturnCode AudioDeal_PcmDataInput_RealTimeSteam(int In_Bitrate, unsigned char *buffer, int bytesRead);
  96 +
  97 +T_JZsdkReturnCode AudioDeal_EchoCancellation_Init(int SampleRate);
  98 +
93 T_JZsdkReturnCode AudioDeal_StopDeal(); 99 T_JZsdkReturnCode AudioDeal_StopDeal();
94 100
95 T_JZsdkReturnCode AudioDeal_FilePlayInput(unsigned char *FilePath); 101 T_JZsdkReturnCode AudioDeal_FilePlayInput(unsigned char *FilePath);
  1 +#include "JZsdkLib.h"
  2 +#include "version_choose.h"
  3 +
  4 +//main函数参数一是原始pcm文件名,参数二是去噪后的pcm文件名
  5 +
  6 +
  7 +#ifdef SPEEX_STATUS_ON
  8 +
  9 +#include <stdio.h>
  10 +#include <string.h>
  11 +#include "speex/speex_echo.h" // Speex 回声消除头文件
  12 +#include "speex/speex_preprocess.h" // Speex 预处理头文件
  13 +
  14 +/*
  15 +graph LR
  16 +
  17 +A[原始语音信号] --> B[预处理]
  18 +B --> C[语言检测]
  19 +C -->|英语| D[英语参数配置]
  20 +C -->|汉语| E[汉语参数配置]
  21 +C -->|法语| F[法语参数配置]
  22 +D --> G[Speex编码器]
  23 +E --> H[Speex编码器]
  24 +F --> I[Speex编码器]
  25 +G --> J[输出编码数据]
  26 +H --> J
  27 +I --> J
  28 +*/
  29 +
  30 +#define TAIL_TIME 500 //回声尾长,单位毫秒
  31 +
  32 +typedef struct JZ_SpeexInfo{
  33 +
  34 + //处理的音频样本长度, 一般对应10~20ms的音频数据,太小会增加计算开销,太大会增加处理延迟
  35 + int DealSampleLen;
  36 +
  37 + /*
  38 + 回声尾长 表示需要消除的回声持续时间(以样本数计) 建议值对应100-500毫秒的音频数据
  39 + 对于8kHz采样率:800-4000个样本
  40 + 对于16kHz采样率:1600-8000个样本
  41 + */
  42 + int TailLen;
  43 +
  44 + //音频采样率
  45 + int SampleRate;
  46 +
  47 + // Speex回声消除状态
  48 + SpeexEchoState *EchoState;
  49 +
  50 + // Speex预处理状态
  51 + SpeexPreprocessState *PreprocessState;
  52 +
  53 + // 存储回声消除的样本
  54 + short *EchoBuf;
  55 + int EchoBufLen;
  56 +
  57 + //标志位
  58 + int Flag;
  59 +
  60 +}JZ_SpeexInfo;
  61 +
  62 +static JZ_SpeexInfo g_SpeexInfo = {0};
  63 +
  64 +T_JZsdkReturnCode Speex_Deinit()
  65 +{
  66 + if (g_SpeexInfo.Flag == JZ_FLAGCODE_ON)
  67 + {
  68 + speex_echo_state_destroy(g_SpeexInfo.EchoState); // 释放回声消除状态
  69 + speex_preprocess_state_destroy(g_SpeexInfo.PreprocessState); // 释放预处理状态
  70 +
  71 + memset(&(g_SpeexInfo.EchoBuf), 0, sizeof(g_SpeexInfo.EchoBuf));
  72 + g_SpeexInfo.EchoBufLen = 0;
  73 +
  74 + if (g_SpeexInfo.EchoBuf != NULL)
  75 + {
  76 + free(g_SpeexInfo.EchoBuf);
  77 + g_SpeexInfo.EchoBuf = NULL;
  78 + }
  79 +
  80 + g_SpeexInfo.Flag = JZ_FLAGCODE_OFF;
  81 + }
  82 +
  83 + JZSDK_LOG_DEBUG("Speex_Deinit success\n");
  84 +
  85 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  86 +}
  87 +
  88 +T_JZsdkReturnCode Speex_Init(int SampleRate)
  89 +{
  90 + //检查speex的参数
  91 + if (g_SpeexInfo.Flag == JZ_FLAGCODE_ON)
  92 + {
  93 + Speex_Deinit();
  94 + }
  95 +
  96 + g_SpeexInfo.SampleRate = SampleRate;
  97 +
  98 + //计算长度
  99 + g_SpeexInfo.TailLen = SampleRate * TAIL_TIME / 1000 ; //可以×1.2作为余量
  100 + g_SpeexInfo.DealSampleLen = 640; //16000 * time / 1000 //目前是因为程序写死了80 后面可以改
  101 +
  102 + // 初始化回声消除状态
  103 + g_SpeexInfo.EchoState = speex_echo_state_init(g_SpeexInfo.DealSampleLen, g_SpeexInfo.TailLen);
  104 + g_SpeexInfo.PreprocessState = speex_preprocess_state_init(g_SpeexInfo.DealSampleLen, g_SpeexInfo.SampleRate); // 初始化预处理状态
  105 +
  106 + //设置采样率
  107 + speex_echo_ctl(g_SpeexInfo.EchoState, SPEEX_ECHO_SET_SAMPLING_RATE, &(g_SpeexInfo.SampleRate));
  108 +
  109 + //将预处理状态与回声消除状态关联
  110 + speex_preprocess_ctl(g_SpeexInfo.PreprocessState, SPEEX_PREPROCESS_SET_ECHO_STATE, g_SpeexInfo.EchoState);
  111 +
  112 + //注册预处理数据数组
  113 + g_SpeexInfo.EchoBuf = (short *)malloc(g_SpeexInfo.TailLen * sizeof(short));
  114 +
  115 + g_SpeexInfo.Flag = JZ_FLAGCODE_ON;
  116 +
  117 + JZSDK_LOG_DEBUG("Speex_Init success\n");
  118 +
  119 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  120 +}
  121 +
  122 +T_JZsdkReturnCode Speex_DealData(short *InData, short *OutData, int frame_size)
  123 +{
  124 + if (g_SpeexInfo.Flag == JZ_FLAGCODE_OFF)
  125 + {
  126 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  127 + }
  128 +
  129 + //填充回声消除的样本
  130 + if (g_SpeexInfo.EchoBufLen < g_SpeexInfo.TailLen)
  131 + {
  132 + memcpy(&(g_SpeexInfo.EchoBuf[g_SpeexInfo.EchoBufLen]), InData, frame_size * sizeof(short));
  133 + g_SpeexInfo.EchoBufLen += frame_size;
  134 + }
  135 + //如果里面有完整数据
  136 + else if (g_SpeexInfo.EchoBufLen == g_SpeexInfo.DealSampleLen)
  137 + {
  138 + //对数据进行位移
  139 + memmove(g_SpeexInfo.EchoBuf, &(g_SpeexInfo.EchoBuf[frame_size]), (g_SpeexInfo.EchoBufLen - frame_size) * sizeof(short));
  140 +
  141 + //将新的数据填充到回声消除的样本中
  142 + memcpy(&(g_SpeexInfo.EchoBuf[g_SpeexInfo.EchoBufLen - frame_size]), InData, frame_size * sizeof(short));
  143 + }
  144 + //如果里面的数据超了
  145 + else if (g_SpeexInfo.EchoBufLen > g_SpeexInfo.TailLen)
  146 + {
  147 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  148 + }
  149 +
  150 + //如果没有填充完回声数组
  151 + if (g_SpeexInfo.EchoBufLen < g_SpeexInfo.TailLen)
  152 + {
  153 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  154 + }
  155 +
  156 + // // 执行回声消除
  157 + // speex_echo_cancellation(g_SpeexInfo.EchoState, InData, g_SpeexInfo.EchoBuf, OutData);
  158 +
  159 + // // 执行预处理(如噪声抑制等)
  160 + // speex_preprocess_run(g_SpeexInfo.PreprocessState, OutData);
  161 +
  162 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  163 +}
  164 +
  165 +#endif // SPEEX_STATUS_ON
1 /** 1 /**
2 ******************************************************************** 2 ********************************************************************
3 - * @file SearchLight_V3S_TFA1.h  
4 - * SearchLight_V3S_TFA1的头文件 3 + * @file speex.h
  4 + * speex的头文件
5 * 5 *
6 ********************************************************************* 6 *********************************************************************
7 */ 7 */
8 8
9 /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ 9 /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
10 -#ifndef SEARCHLIGHT_V3S_TFA1_H  
11 -#define SEARCHLIGHT_V3S_TFA1_H 10 +#ifndef SPEEX_H
  11 +#define SPEEX_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"
@@ -20,14 +20,12 @@ extern "C" { @@ -20,14 +20,12 @@ extern "C" {
20 /* Exported constants --------------------------------------------------------*/ 20 /* Exported constants --------------------------------------------------------*/
21 /* 常亮定义*/ 21 /* 常亮定义*/
22 22
23 -  
24 /* Exported types ------------------------------------------------------------*/ 23 /* Exported types ------------------------------------------------------------*/
25 24
26 -/* Exported functions --------------------------------------------------------*/  
27 -T_JZsdkReturnCode SearchLight_V3S_TFA1_Set_SearchLightFrequency(int value);  
28 -T_JZsdkReturnCode SearchLight_V3S_TFA1_SearchLightControl(int mode);  
29 -T_JZsdkReturnCode SearchLight_V3S_TFA1_Set_SearchLightLumen(int LeftLumen, int RightLumen);  
30 25
  26 +/* Exported functions --------------------------------------------------------*/
  27 +T_JZsdkReturnCode Speex_DealData(short *InData, short *OutData, int frame_size);
  28 +T_JZsdkReturnCode Speex_Init(int SampleRate);
31 29
32 #ifdef __cplusplus 30 #ifdef __cplusplus
33 } 31 }
  1 +#include "JZsdkLib.h"
  2 +
  3 +#include "version_choose.h"
  4 +#include "DebugInfo.h"
  5 +
  6 +
  7 +static int DebugMode_Flag = JZ_FLAGCODE_OFF;
  8 +
  9 +T_JZsdkReturnCode DebugInfo_Init()
  10 +{
  11 +
  12 +//强制打开调试模式
  13 +#if 1
  14 + JZsdk_create_file("/root/ShakedownTest");
  15 +
  16 + DebugMode_Flag = JZ_FLAGCODE_ON;
  17 +
  18 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  19 +
  20 +#endif
  21 +
  22 + //目前仅psdk支持debug模式
  23 +#if APP_VERSION != APP_PSDK
  24 +
  25 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  26 +
  27 +#endif
  28 + if (JZsdk_check_file_exists("/root/ShakedownTest") != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  29 + {
  30 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  31 + }
  32 +
  33 + JZSDK_LOG_INFO("打开调试模式");
  34 + DebugMode_Flag = JZ_FLAGCODE_ON;
  35 +
  36 + if(JZsdk_Osal_delete("/root/ShakedownTest") != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  37 + {
  38 + JZSDK_LOG_ERROR("移除调试模式失败");
  39 + }
  40 +
  41 +
  42 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  43 +}
  44 +
  45 +
  46 +T_JZsdkReturnCode DebugInfo_ModeSet(int mode)
  47 +{
  48 + if (mode == JZ_FLAGCODE_ON)
  49 + {
  50 + if(JZsdk_create_file("/root/ShakedownTest") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  51 + {
  52 + JZSDK_LOG_INFO("已开启shakedownTest调试模式");
  53 + }
  54 +
  55 + DebugMode_Flag = JZ_FLAGCODE_ON;
  56 +
  57 +
  58 + JZSDK_LOG_DEBUG("DebugMode_Flag = %d", DebugMode_Flag);
  59 +
  60 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  61 + }
  62 +
  63 + if (mode == JZ_FLAGCODE_OFF)
  64 + {
  65 + if(JZsdk_Osal_delete("/root/ShakedownTest") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  66 + {
  67 + JZSDK_LOG_INFO("已关闭shakedownTest调试模式");
  68 + }
  69 +
  70 + DebugMode_Flag = JZ_FLAGCODE_OFF;
  71 +
  72 + JZSDK_LOG_DEBUG("DebugMode_Flag = %d", DebugMode_Flag);
  73 +
  74 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  75 + }
  76 +
  77 + return JZ_ERROR_SYSTEM_MODULE_CODE_HARDLY_FAILURE;
  78 +}
  79 +
  80 +int DebugInfo_ModeGet()
  81 +{
  82 + return DebugMode_Flag;
  83 +}
1 /** 1 /**
2 ******************************************************************** 2 ********************************************************************
3 - * @file SearchLight_V3S.h  
4 - * SearchLight_V3S的头文件 3 + * @file DebugInfo.h
  4 + * DebugInfo.h 的头文件
5 * 5 *
6 ********************************************************************* 6 *********************************************************************
7 */ 7 */
8 8
9 /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ 9 /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
10 -#ifndef SEARCHLIGHT_V3S_H  
11 -#define SEARCHLIGHT_V3S_H 10 +#ifndef DEBUG_INFO_H
  11 +#define DEBUG_INFO_H
12 12
13 /* Includes ------------------------------------------------------------------*/ 13 /* Includes ------------------------------------------------------------------*/
14 -#include "./SearchLight_V3S_U3/SearchLight_V3S_U3.h"  
15 -#include "./SearchLight_V3S_H1T/SearchLight_V3S_H1T.h"  
16 -#include "./SearchLight_V3S_TFA1/SearchLight_V3S_TFA1.h"  
17 - 14 +#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
18 15
19 #ifdef __cplusplus 16 #ifdef __cplusplus
20 extern "C" { 17 extern "C" {
@@ -23,11 +20,12 @@ extern "C" { @@ -23,11 +20,12 @@ extern "C" {
23 /* Exported constants --------------------------------------------------------*/ 20 /* Exported constants --------------------------------------------------------*/
24 /* 常亮定义*/ 21 /* 常亮定义*/
25 22
26 -  
27 /* Exported types ------------------------------------------------------------*/ 23 /* Exported types ------------------------------------------------------------*/
28 24
29 /* Exported functions --------------------------------------------------------*/ 25 /* Exported functions --------------------------------------------------------*/
30 - 26 +T_JZsdkReturnCode DebugInfo_ModeSet(int mode);
  27 +T_JZsdkReturnCode DebugInfo_Init();
  28 +int DebugInfo_ModeGet();
31 29
32 #ifdef __cplusplus 30 #ifdef __cplusplus
33 } 31 }
@@ -57,6 +57,9 @@ T_JZsdkReturnCode DeviceInfo_Init() @@ -57,6 +57,9 @@ T_JZsdkReturnCode DeviceInfo_Init()
57 //设备属性初始化 57 //设备属性初始化
58 Attribute_Init(); 58 Attribute_Init();
59 59
  60 + //debug模式
  61 + DebugInfo_Init();
  62 +
60 JZSDK_LOG_INFO("MODULE_DEVICE_INFO_INIT_COMPLETE"); 63 JZSDK_LOG_INFO("MODULE_DEVICE_INFO_INIT_COMPLETE");
61 } 64 }
62 65
@@ -15,6 +15,7 @@ @@ -15,6 +15,7 @@
15 #include "DeviceInfo/HardwareInfo/HardwareInfo.h" 15 #include "DeviceInfo/HardwareInfo/HardwareInfo.h"
16 #include "DeviceInfo/Attribute/Attribute.h" 16 #include "DeviceInfo/Attribute/Attribute.h"
17 #include "LanguageInfo/LanguageInfo.h" 17 #include "LanguageInfo/LanguageInfo.h"
  18 +#include "DebugInfo/DebugInfo.h"
18 19
19 /* Includes ------------------------------------------------------------------*/ 20 /* Includes ------------------------------------------------------------------*/
20 #ifdef __cplusplus 21 #ifdef __cplusplus
@@ -16,7 +16,9 @@ @@ -16,7 +16,9 @@
16 #include "Megaphone/MegTempControl/MegTempControl.h" 16 #include "Megaphone/MegTempControl/MegTempControl.h"
17 #endif 17 #endif
18 18
19 -#include "Lighting/Lighting_InAndOut.h" 19 +#ifdef SEARCHLIGHT_STATUS_ON
  20 + #include "Searchlight/Searchlight.h"
  21 +#endif
20 22
21 #define MESSAGE_MAX_LEN 1024 23 #define MESSAGE_MAX_LEN 1024
22 24
@@ -258,7 +260,9 @@ static T_JZsdkReturnCode DeviceMessage_Enter_Default(unsigned char *message) @@ -258,7 +260,9 @@ static T_JZsdkReturnCode DeviceMessage_Enter_Default(unsigned char *message)
258 #endif 260 #endif
259 261
260 //如果为组合版 262 //如果为组合版
261 -#if (DEVICE_VERSION == TF_A1 || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S ||DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30) 263 +#if (DEVICE_VERSION == TF_A1 || DEVICE_VERSION == JZ_U3 || \
  264 + DEVICE_VERSION == JZ_U3S ||DEVICE_VERSION == JZ_U3D \
  265 + || DEVICE_VERSION == JZ_U30 || DEVICE_VERSION == JZ_T40)
262 266
263 // //组合板写入 267 // //组合板写入
264 // snprintf(new_message,128,"光斑y值%d\n",Widget_GetCenter_ValueY()); 268 // snprintf(new_message,128,"光斑y值%d\n",Widget_GetCenter_ValueY());
@@ -269,7 +273,11 @@ static T_JZsdkReturnCode DeviceMessage_Enter_Default(unsigned char *message) @@ -269,7 +273,11 @@ static T_JZsdkReturnCode DeviceMessage_Enter_Default(unsigned char *message)
269 static int SearchLight_RightTemperature = 0; 273 static int SearchLight_RightTemperature = 0;
270 274
271 //获取温度 275 //获取温度
272 - Lighting_Get_SearchLightTemperature(&SearchLight_LeftTemperature, &SearchLight_RightTemperature); 276 + T_JzSearchLightAttribute searchLightInfo;
  277 + SearchLight_Get_SearchLightAttribute(&searchLightInfo);
  278 +
  279 + SearchLight_LeftTemperature = searchLightInfo.LeftTemperature;
  280 + SearchLight_RightTemperature = searchLightInfo.RightTemperature;
273 281
274 memset(new_message,0,sizeof(new_message)); 282 memset(new_message,0,sizeof(new_message));
275 memset(old_message,0,sizeof(old_message)); 283 memset(old_message,0,sizeof(old_message));
@@ -20,6 +20,16 @@ @@ -20,6 +20,16 @@
20 20
21 #include "BaseConfig.h" 21 #include "BaseConfig.h"
22 #include "Hal_Send/HalSend.h" 22 #include "Hal_Send/HalSend.h"
  23 +#include "DeviceInfo/DebugInfo/DebugInfo.h"
  24 +
  25 +
  26 +
  27 +static T_GimbalInfo g_GimbalInfo = {
  28 + .PitchLimitMax = MAX_PITCH,
  29 + .PitchLimitMin = MIN_PITCH,
  30 + .DebugPitch_Left = 0,
  31 + .DebugPitch_Right = 0,
  32 +};
23 33
24 //云台使用的模式, 当前有透传模式和独立模式 34 //云台使用的模式, 当前有透传模式和独立模式
25 static int g_Gimbal_Mode = JZ_FLAGCODE_OFF; 35 static int g_Gimbal_Mode = JZ_FLAGCODE_OFF;
@@ -52,9 +62,25 @@ static int g_JZsdk_GimbalStatusFlag = JZ_FLAGCODE_OFF; //云台状态,用于 @@ -52,9 +62,25 @@ static int g_JZsdk_GimbalStatusFlag = JZ_FLAGCODE_OFF; //云台状态,用于
52 62
53 static T_JZsdkReturnCode Gimbal_Set_RealPitchAngle(int pitch, int FineTuningP, int UAV_pitch); 63 static T_JZsdkReturnCode Gimbal_Set_RealPitchAngle(int pitch, int FineTuningP, int UAV_pitch);
54 64
  65 +
  66 +
55 //手动刷新角度标志位 67 //手动刷新角度标志位
56 static int g_Flush_Pitch = JZ_FLAGCODE_OFF; 68 static int g_Flush_Pitch = JZ_FLAGCODE_OFF;
57 69
  70 +/****************
  71 + *
  72 + * 软件云台限位刷新
  73 + *
  74 + *
  75 + * *****************/
  76 +T_JZsdkReturnCode Gimbal_LimitAngleFlush()
  77 +{
  78 + g_GimbalInfo.PitchLimitMax = MAX_PITCH;
  79 + g_GimbalInfo.PitchLimitMin = MIN_PITCH;
  80 +
  81 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  82 +}
  83 +
58 /************************** 84 /**************************
59 * 85 *
60 * 86 *
@@ -67,6 +93,8 @@ static void *Gimbal_SendAngleTask(void *arg) @@ -67,6 +93,8 @@ static void *Gimbal_SendAngleTask(void *arg)
67 int Old_angle = 0; //上一次变化的角度 93 int Old_angle = 0; //上一次变化的角度
68 int Old_UAV_self_angle; //上一次飞机的角度 94 int Old_UAV_self_angle; //上一次飞机的角度
69 int Old_PitchFineTuning; //上一次微调的角度 95 int Old_PitchFineTuning; //上一次微调的角度
  96 + int Old_DebugPitchLeft = 0; //上一次调试角度
  97 + int Old_DebugPitchRight = 0; //上一次调试角度
70 98
71 JZSDK_LOG_INFO("云台角度发送初始化完成"); 99 JZSDK_LOG_INFO("云台角度发送初始化完成");
72 100
@@ -78,11 +106,15 @@ static void *Gimbal_SendAngleTask(void *arg) @@ -78,11 +106,15 @@ static void *Gimbal_SendAngleTask(void *arg)
78 || Gimbal_UavSelfPitch != Old_UAV_self_angle //飞机自身角度发生了变化 106 || Gimbal_UavSelfPitch != Old_UAV_self_angle //飞机自身角度发生了变化
79 || g_MotorFineTuningPitch != Old_PitchFineTuning //微调角度发生了变化 107 || g_MotorFineTuningPitch != Old_PitchFineTuning //微调角度发生了变化
80 || g_Flush_Pitch == JZ_FLAGCODE_ON 108 || g_Flush_Pitch == JZ_FLAGCODE_ON
  109 + || g_GimbalInfo.DebugPitch_Left != Old_DebugPitchLeft
  110 + || g_GimbalInfo.DebugPitch_Right != Old_DebugPitchRight
81 ) 111 )
82 { 112 {
83 Old_angle = Gimbal_PitchAngle; 113 Old_angle = Gimbal_PitchAngle;
84 Old_UAV_self_angle = Gimbal_UavSelfPitch; 114 Old_UAV_self_angle = Gimbal_UavSelfPitch;
85 Old_PitchFineTuning = g_MotorFineTuningPitch; 115 Old_PitchFineTuning = g_MotorFineTuningPitch;
  116 + Old_DebugPitchLeft = g_GimbalInfo.DebugPitch_Left;
  117 + Old_DebugPitchRight = g_GimbalInfo.DebugPitch_Right;
86 g_Flush_Pitch = JZ_FLAGCODE_OFF; 118 g_Flush_Pitch = JZ_FLAGCODE_OFF;
87 Gimbal_Set_RealPitchAngle(Old_angle, Old_PitchFineTuning, Old_UAV_self_angle); 119 Gimbal_Set_RealPitchAngle(Old_angle, Old_PitchFineTuning, Old_UAV_self_angle);
88 } 120 }
@@ -142,7 +174,7 @@ T_JZsdkReturnCode Gimbal_Set_PitchAngle(int angle) @@ -142,7 +174,7 @@ T_JZsdkReturnCode Gimbal_Set_PitchAngle(int angle)
142 //独立模式 174 //独立模式
143 case JZ_MODULE_CONTROL_WAY_INDEPENDENT: 175 case JZ_MODULE_CONTROL_WAY_INDEPENDENT:
144 { 176 {
145 - if (angle < MIN_PITCH || angle > MAX_PITCH || (MIN_PITCH == MAX_PITCH)) 177 + if (angle < g_GimbalInfo.PitchLimitMin || angle > g_GimbalInfo.PitchLimitMax || (g_GimbalInfo.PitchLimitMin == g_GimbalInfo.PitchLimitMax))
146 { 178 {
147 printf("云台俯仰输入值范围出错:%d\n", angle); 179 printf("云台俯仰输入值范围出错:%d\n", angle);
148 return JZ_ERRORCODE_GIMBAL_INVALID_PITCH; 180 return JZ_ERRORCODE_GIMBAL_INVALID_PITCH;
@@ -239,6 +271,89 @@ T_JZsdkReturnCode Gimbal_SetGimbalRange(int flag, int value) @@ -239,6 +271,89 @@ T_JZsdkReturnCode Gimbal_SetGimbalRange(int flag, int value)
239 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 271 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
240 } 272 }
241 273
  274 +
  275 +/********************************
  276 + *
  277 + *
  278 + * 单边云台校准选择
  279 + *
  280 + *
  281 + * ************************************/
  282 +T_JZsdkReturnCode Gimbal_Set_GimbalSingleCalibration(E_JZ_GimbalSingleCalibrationMode Mode)
  283 +{
  284 + JZSDK_LOG_INFO("单边云台校准选择 Mode:%d 0x%x", Mode);
  285 +
  286 + switch (Mode)
  287 + {
  288 + case JZ_GIMBAL_SINGLE_CALIBRATION_MODE_LEFT_MAX:
  289 + {
  290 +#if DEVICE_VERSION == JZ_T40
  291 + HalSend_type1Send_SetGimbalRange(UART_DEV_2, 0x11, 0xFF);
  292 +#endif
  293 +
  294 + }
  295 + break;
  296 +
  297 + case JZ_GIMBAL_SINGLE_CALIBRATION_MODE_LEFT_MIN:
  298 + {
  299 +#if DEVICE_VERSION == JZ_T40
  300 + HalSend_type1Send_SetGimbalRange(UART_DEV_2, 0x11, 0x00);
  301 +#endif
  302 + }
  303 + break;
  304 +
  305 + case JZ_GIMBAL_SINGLE_CALIBRATION_MODE_LEFT_ZERO:
  306 + {
  307 +#if DEVICE_VERSION == JZ_T40
  308 + HalSend_type1Send_SetGimbalRange(UART_DEV_2, 0x11, 0x02);
  309 +#endif
  310 + }
  311 + break;
  312 +
  313 + case JZ_GIMBAL_SINGLE_CALIBRATION_MODE_LEFT_RESET:
  314 + {
  315 +#if DEVICE_VERSION == JZ_T40
  316 + HalSend_type1Send_SetGimbalRange(UART_DEV_2, 0x11, 0x01);
  317 +#endif
  318 + }
  319 + break;
  320 +
  321 + case JZ_GIMBAL_SINGLE_CALIBRATION_MODE_RIGHT_MAX:
  322 + {
  323 +#if DEVICE_VERSION == JZ_T40
  324 + HalSend_type1Send_SetGimbalRange(UART_DEV_2, 0x12, 0xFF);
  325 +#endif
  326 + }
  327 + break;
  328 +
  329 + case JZ_GIMBAL_SINGLE_CALIBRATION_MODE_RIGHT_MIN:
  330 + {
  331 +#if DEVICE_VERSION == JZ_T40
  332 + HalSend_type1Send_SetGimbalRange(UART_DEV_2, 0x12, 0x00);
  333 +#endif
  334 + }
  335 + break;
  336 +
  337 + case JZ_GIMBAL_SINGLE_CALIBRATION_MODE_RIGHT_ZERO:
  338 + {
  339 +#if DEVICE_VERSION == JZ_T40
  340 + HalSend_type1Send_SetGimbalRange(UART_DEV_2, 0x12, 0x02);
  341 +#endif
  342 + }
  343 + break;
  344 +
  345 + case JZ_GIMBAL_SINGLE_CALIBRATION_MODE_RIGHT_RESET:
  346 + {
  347 +#if DEVICE_VERSION == JZ_T40
  348 + HalSend_type1Send_SetGimbalRange(UART_DEV_2, 0x12, 0x01);
  349 +#endif
  350 + }
  351 + break;
  352 + }
  353 +
  354 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  355 +}
  356 +
242 //查询云台微调值 357 //查询云台微调值
243 T_JZsdkReturnCode Gimbal_CheckStatus_GimbalFineTuning(int *FineTuningPitch, int *FineTuningYaw, int *FineTuningRoll) 358 T_JZsdkReturnCode Gimbal_CheckStatus_GimbalFineTuning(int *FineTuningPitch, int *FineTuningYaw, int *FineTuningRoll)
244 { 359 {
@@ -717,11 +832,11 @@ T_JZsdkReturnCode Gimbal_PitchSelfangleMode(int Pitch) @@ -717,11 +832,11 @@ T_JZsdkReturnCode Gimbal_PitchSelfangleMode(int Pitch)
717 //2、滑动条 换算 云台角度 832 //2、滑动条 换算 云台角度
718 int Gimbal_PitchScaleMode(int value) 833 int Gimbal_PitchScaleMode(int value)
719 { 834 {
720 - int step = (abs(MAX_PITCH) + abs(MIN_PITCH)) / 100; 835 + int step = (abs(g_GimbalInfo.PitchLimitMax) + abs(g_GimbalInfo.PitchLimitMin)) / 100;
721 836
722 int angle = 0; 837 int angle = 0;
723 838
724 - angle = value * step + MIN_PITCH; 839 + angle = value * step + g_GimbalInfo.PitchLimitMin;
725 840
726 return angle; 841 return angle;
727 } 842 }
@@ -732,20 +847,20 @@ T_JZsdkReturnCode Gimbal_PitchRotationMode(int value) @@ -732,20 +847,20 @@ T_JZsdkReturnCode Gimbal_PitchRotationMode(int value)
732 int angle; 847 int angle;
733 848
734 //JZSDK_LOG_DEBUG("拨轮控制"); 849 //JZSDK_LOG_DEBUG("拨轮控制");
735 - if (MAX_PITCH == MIN_PITCH) 850 + if (g_GimbalInfo.PitchLimitMax == g_GimbalInfo.PitchLimitMin)
736 { 851 {
737 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 852 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
738 } 853 }
739 854
740 855
741 angle = Gimbal_PitchAngle + value; 856 angle = Gimbal_PitchAngle + value;
742 - if (angle > MAX_PITCH) 857 + if (angle > g_GimbalInfo.PitchLimitMax)
743 { 858 {
744 - angle = MAX_PITCH; 859 + angle = g_GimbalInfo.PitchLimitMax;
745 } 860 }
746 - else if (angle < MIN_PITCH) 861 + else if (angle < g_GimbalInfo.PitchLimitMin)
747 { 862 {
748 - angle = MIN_PITCH; 863 + angle = g_GimbalInfo.PitchLimitMin;
749 } 864 }
750 865
751 if (angle == Gimbal_PitchAngle) 866 if (angle == Gimbal_PitchAngle)
@@ -764,8 +879,8 @@ int Gimbal_ReplyPitchToUAVScale(int angle) @@ -764,8 +879,8 @@ int Gimbal_ReplyPitchToUAVScale(int angle)
764 { 879 {
765 int value; 880 int value;
766 881
767 - int step = (abs(MAX_PITCH) + abs(MIN_PITCH)) / 100;  
768 - value = (angle - MIN_PITCH)/step; 882 + int step = (abs(g_GimbalInfo.PitchLimitMax) + abs(g_GimbalInfo.PitchLimitMin)) / 100;
  883 + value = (angle - g_GimbalInfo.PitchLimitMin)/step;
769 884
770 return value; 885 return value;
771 } 886 }
@@ -783,14 +898,14 @@ static T_JZsdkReturnCode Gimbal_Set_RealPitchAngle(int pitch, int FineTuningP, i @@ -783,14 +898,14 @@ static T_JZsdkReturnCode Gimbal_Set_RealPitchAngle(int pitch, int FineTuningP, i
783 //叠加飞机角度和微调角度 898 //叠加飞机角度和微调角度
784 temp_angle = pitch - UAV_pitch + FineTuningP; 899 temp_angle = pitch - UAV_pitch + FineTuningP;
785 900
786 - if (temp_angle < MIN_PITCH) 901 + if (temp_angle < g_GimbalInfo.PitchLimitMin)
787 { 902 {
788 - temp_angle = MIN_PITCH; 903 + temp_angle = g_GimbalInfo.PitchLimitMin;
789 } 904 }
790 905
791 - if (temp_angle > MAX_PITCH) 906 + if (temp_angle > g_GimbalInfo.PitchLimitMax)
792 { 907 {
793 - temp_angle = MAX_PITCH; 908 + temp_angle = g_GimbalInfo.PitchLimitMax;
794 } 909 }
795 910
796 Gimbal_RealPitchAngle = temp_angle; 911 Gimbal_RealPitchAngle = temp_angle;
@@ -830,7 +945,44 @@ static T_JZsdkReturnCode Gimbal_Set_RealPitchAngle(int pitch, int FineTuningP, i @@ -830,7 +945,44 @@ static T_JZsdkReturnCode Gimbal_Set_RealPitchAngle(int pitch, int FineTuningP, i
830 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 945 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
831 } 946 }
832 947
  948 +/*
  949 + 输入调试角度
  950 + pitch加减的值
  951 + flag标志位 =on时 重置调试角度
  952 + direction = 0 左调试角度
  953 + direction = 1 右调试角度
  954 +*/
  955 +T_JZsdkReturnCode Gimbal_Set_DebugPitch(int pitch, int flag, int direction)
  956 +{
  957 + //如果重置标志位开启
  958 + if (flag == JZ_FLAGCODE_ON)
  959 + {
  960 + if (direction == 0)
  961 + {
  962 + g_GimbalInfo.DebugPitch_Left = 0;
  963 + }
833 964
  965 + else if (direction == 1)
  966 + {
  967 + g_GimbalInfo.DebugPitch_Right = 0;
  968 + }
  969 +
  970 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  971 + }
  972 +
  973 +
  974 + if (direction == 0)
  975 + {
  976 + g_GimbalInfo.DebugPitch_Left += pitch;
  977 + }
  978 +
  979 + else if (direction == 1)
  980 + {
  981 + g_GimbalInfo.DebugPitch_Right += pitch;
  982 + }
  983 +
  984 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  985 +}
834 986
835 987
836 988
@@ -867,6 +1019,12 @@ T_JZsdkReturnCode Gimbal_Flush_Pitch() @@ -867,6 +1019,12 @@ T_JZsdkReturnCode Gimbal_Flush_Pitch()
867 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 1019 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
868 } 1020 }
869 1021
  1022 +T_JZsdkReturnCode Gimbal_Get_GimbalInfo(T_GimbalInfo *GimbalInfo)
  1023 +{
  1024 + memcpy(GimbalInfo, &g_GimbalInfo, sizeof(T_GimbalInfo));
  1025 +
  1026 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  1027 +}
870 1028
871 1029
872 1030
@@ -964,6 +1122,9 @@ static T_JZsdkReturnCode Gimbal_Init_IndependentControl() @@ -964,6 +1122,9 @@ static T_JZsdkReturnCode Gimbal_Init_IndependentControl()
964 * ******************************/ 1122 * ******************************/
965 T_JZsdkReturnCode Gimbal_Init(enum JZ_MODULE_CONTROL_WAY Mode) 1123 T_JZsdkReturnCode Gimbal_Init(enum JZ_MODULE_CONTROL_WAY Mode)
966 { 1124 {
  1125 + //限位初始化
  1126 + Gimbal_LimitAngleFlush();
  1127 +
967 switch (Mode) 1128 switch (Mode)
968 { 1129 {
969 //独立控制模式 1130 //独立控制模式
@@ -19,6 +19,12 @@ extern "C" { @@ -19,6 +19,12 @@ extern "C" {
19 19
20 /* Exported constants --------------------------------------------------------*/ 20 /* Exported constants --------------------------------------------------------*/
21 /* 常亮定义*/ 21 /* 常亮定义*/
  22 +typedef struct T_GimbalInfo{
  23 + int PitchLimitMax;
  24 + int PitchLimitMin;
  25 + int DebugPitch_Left;
  26 + int DebugPitch_Right;
  27 +}T_GimbalInfo;
22 28
23 /* Exported types ------------------------------------------------------------*/ 29 /* Exported types ------------------------------------------------------------*/
24 30
@@ -39,6 +45,8 @@ T_JZsdkReturnCode Gimbal_Set_PitchFineTuning(int pitch); @@ -39,6 +45,8 @@ T_JZsdkReturnCode Gimbal_Set_PitchFineTuning(int pitch);
39 T_JZsdkReturnCode Gimbal_Set_YawFineTuning(int yaw); 45 T_JZsdkReturnCode Gimbal_Set_YawFineTuning(int yaw);
40 T_JZsdkReturnCode Gimbal_Set_RollFineTuning(int pitch, int yaw, int roll); 46 T_JZsdkReturnCode Gimbal_Set_RollFineTuning(int pitch, int yaw, int roll);
41 T_JZsdkReturnCode Gimbal_Set_GimbalLinkageControl(int value); 47 T_JZsdkReturnCode Gimbal_Set_GimbalLinkageControl(int value);
  48 +T_JZsdkReturnCode Gimbal_Set_DebugPitch(int pitch, int flag, int direction);
  49 +
42 T_JZsdkReturnCode Gimbal_CheckStatus_GimbalLinkage(int *value); 50 T_JZsdkReturnCode Gimbal_CheckStatus_GimbalLinkage(int *value);
43 T_JZsdkReturnCode Gimbal_Obtain_GimbalLinkage(int GimbalLinkage); 51 T_JZsdkReturnCode Gimbal_Obtain_GimbalLinkage(int GimbalLinkage);
44 T_JZsdkReturnCode Gimbal_CheckStatus_Angle(int *PitchAngle, int *YawAngle, int *RollAngle); 52 T_JZsdkReturnCode Gimbal_CheckStatus_Angle(int *PitchAngle, int *YawAngle, int *RollAngle);
@@ -52,11 +60,16 @@ int Gimbal_PitchScaleMode(int value); @@ -52,11 +60,16 @@ int Gimbal_PitchScaleMode(int value);
52 T_JZsdkReturnCode Gimbal_PitchRotationMode(int value); 60 T_JZsdkReturnCode Gimbal_PitchRotationMode(int value);
53 int Gimbal_ReplyPitchToUAVScale(int angle); 61 int Gimbal_ReplyPitchToUAVScale(int angle);
54 62
  63 +T_JZsdkReturnCode Gimbal_Set_GimbalSingleCalibration(E_JZ_GimbalSingleCalibrationMode Mode);
55 64
56 int Gimbal_Get_PitchAngle(); 65 int Gimbal_Get_PitchAngle();
57 int Gimbal_Get_PitchFineTuning(); 66 int Gimbal_Get_PitchFineTuning();
58 int Gimbal_Get_PitchRealPitchAngle(); 67 int Gimbal_Get_PitchRealPitchAngle();
  68 +T_JZsdkReturnCode Gimbal_Get_GimbalInfo(T_GimbalInfo *GimbalInfo);
  69 +
59 T_JZsdkReturnCode Gimbal_Flush_Pitch(); 70 T_JZsdkReturnCode Gimbal_Flush_Pitch();
  71 +T_JZsdkReturnCode Gimbal_LimitAngleFlush();
  72 +
60 73
61 #ifdef __cplusplus 74 #ifdef __cplusplus
62 } 75 }
@@ -13,6 +13,7 @@ @@ -13,6 +13,7 @@
13 #include "Hal_Send/HalSend.h" 13 #include "Hal_Send/HalSend.h"
14 #include "JZsdk_uart/JZsdk_Uart.h" 14 #include "JZsdk_uart/JZsdk_Uart.h"
15 #include "Ircut/H3_ircut/H3_ircut.h" 15 #include "Ircut/H3_ircut/H3_ircut.h"
  16 +#include "DeviceInfo/DebugInfo/DebugInfo.h"
16 17
17 #ifdef WIRINGPI_STATUS_ON 18 #ifdef WIRINGPI_STATUS_ON
18 #include <wiringPi.h> 19 #include <wiringPi.h>
@@ -127,6 +128,23 @@ T_JZsdkReturnCode Gimbal_DataDeal_SetRealAngle(int angle) @@ -127,6 +128,23 @@ T_JZsdkReturnCode Gimbal_DataDeal_SetRealAngle(int angle)
127 //T40很特殊,需要控制两个子设备,所以要准备帧序列 128 //T40很特殊,需要控制两个子设备,所以要准备帧序列
128 HalSend_type1Send_Set_GimbalPitchAngle(UART_DEV_2, angle, 0x10, JZ_FLAGCODE_OFF); 129 HalSend_type1Send_Set_GimbalPitchAngle(UART_DEV_2, angle, 0x10, JZ_FLAGCODE_OFF);
129 130
  131 + //如果处于调试模式
  132 + if(DebugInfo_ModeGet() == JZ_FLAGCODE_ON)
  133 + {
  134 + //获取云台的debug角度
  135 + T_GimbalInfo gimbalinfo;
  136 + Gimbal_Get_GimbalInfo(&gimbalinfo);
  137 + if (gimbalinfo.DebugPitch_Left != 0)
  138 + {
  139 + HalSend_type1Send_Set_GimbalPitchAngle(UART_DEV_2, (angle+gimbalinfo.DebugPitch_Left), 0x11, JZ_FLAGCODE_OFF);
  140 + }
  141 + if (gimbalinfo.DebugPitch_Right != 0)
  142 + {
  143 + HalSend_type1Send_Set_GimbalPitchAngle(UART_DEV_2, (angle+gimbalinfo.DebugPitch_Right), 0x12, JZ_FLAGCODE_OFF);
  144 + }
  145 + }
  146 +
  147 +
130 #else 148 #else
131 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 149 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
132 #endif 150 #endif
@@ -393,3 +411,4 @@ static T_JZsdkReturnCode Gimbal_DataDeal_Write_PitchBaseOffset(int offset) @@ -393,3 +411,4 @@ static T_JZsdkReturnCode Gimbal_DataDeal_Write_PitchBaseOffset(int offset)
393 411
394 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 412 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
395 } 413 }
  414 +
1 -#include <stdio.h>  
2 -#include <string.h>  
3 -  
4 -#include "version_choose.h"  
5 -#include "Lighting_InAndOut.h"  
6 -#include "./SearchLight/SearchLight_V3S/SearchLight_V3S.h"  
7 -#include "./WarningLight/WarningLight_V3S/WarningLight_V3S.h"  
8 -#include "SearchLight/SearchLightTemControl/SearchLightTemControl.h"  
9 -#include "UI_control.h"  
10 -#include "BaseConfig.h"  
11 -#include "Hal_Send/HalSend.h"  
12 -  
13 -static int SearchLight_Frequency; //探照灯频率  
14 -static int SearchLight_Mode; //探照灯模式  
15 -  
16 -  
17 -static int SearchLight_LeftLumen; //探照灯设置左灯亮度  
18 -static int SearchLight_RightLumen; //探照灯设置右灯亮度  
19 -  
20 -static int SearchLight_LeftTemperature; //探照灯左边温度  
21 -static int SearchLight_RightTemperature; //探照灯右边温度  
22 -  
23 -static int WarningLight_Status; //警灯状态  
24 -static int WarningLight_Mode; //警灯模式  
25 -  
26 -static int WarningLight_Color1; //警灯颜色1  
27 -static int WarningLight_Color2; //警灯颜色2  
28 -  
29 -static int g_SearchLight_Subscription_Flag = JZ_FLAGCODE_ON; //消息订阅状态  
30 -  
31 -#define MAX(a,b) ( (a>b) ?a:b )  
32 -  
33 -T_JZsdkReturnCode Lighting_Init()  
34 -{  
35 - //温控初始化  
36 - JZsdk_SearchLightTemControl_Init();  
37 -}  
38 -  
39 -/********************************************************************************************************************************  
40 - *  
41 - * 探照灯 灯光属性  
42 - *  
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 -// }  
52 -  
53 -// //2、获取一次本地灯光属性  
54 -// Lighting_Get_SearchLightMode(ValueMode);  
55 -// Lighting_Get_SearchLightLumen(ValueLeftLumen, ValueRightLumen);  
56 -// Lighting_Get_SearchLightFrequency(ValueFrequency);  
57 -  
58 -  
59 -// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
60 -// }  
61 -  
62 -/********************************************************************************************************************************  
63 - *  
64 - * 探照灯 模式相关  
65 - *  
66 -********************************************************************************************************************************/  
67 -  
68 -// //设置探照灯模式  
69 -// T_JZsdkReturnCode Lighting_SearchLightControl(int mode)  
70 -// {  
71 -// printf("设置%x探照灯模式\n",DEVICE_VERSION);  
72 -  
73 -// SearchLight_Mode = mode;  
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_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 -// }  
91 -  
92 -// return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
93 -// }  
94 -  
95 -// //收到并修改探照灯模式(中继修改)  
96 -// T_JZsdkReturnCode Lighting_Obtain_SearchLightMode(int mode)  
97 -// {  
98 -// printf("%x探照灯模式改变%d\n",DEVICE_VERSION, mode);  
99 -  
100 -// SearchLight_Mode = mode;  
101 -  
102 -// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
103 -// }  
104 -  
105 -// //获取探照灯的灯光模式  
106 -// T_JZsdkReturnCode Lighting_Get_SearchLightMode(int *mode)  
107 -// {  
108 -// *mode = SearchLight_Mode;  
109 -  
110 -// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
111 -// }  
112 -  
113 -// //查询探照灯灯光模式  
114 -// T_JZsdkReturnCode Lighting_CheckStatus_SearchLightMode()  
115 -// {  
116 -  
117 -// return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
118 -// }  
119 -  
120 -  
121 -/********************************************************************************************************************************  
122 - *  
123 - * 探照灯 灯光亮度相关  
124 - *  
125 -********************************************************************************************************************************/  
126 -  
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 -// }  
192 -  
193 -  
194 -  
195 -/********************************************************************************************************************************  
196 - *  
197 - * 探照灯 灯光频率相关  
198 - *  
199 -********************************************************************************************************************************/  
200 -  
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 -// }  
306 -  
307 -/********************************************************************************************************************************  
308 - *  
309 - * 探照灯 警灯状态  
310 - *  
311 -********************************************************************************************************************************/  
312 -//设置警灯状态  
313 -T_JZsdkReturnCode Lighting_Set_WarningLight_Status(int status, int mode)  
314 -{  
315 - printf("设置0x%x:警灯状态\n",DEVICE_VERSION);  
316 -  
317 -  
318 -#if DEVICE_VERSION == JZ_H1T  
319 - return WarningLight_V3S_H1T_Set_WarningLight_Status(status, mode);  
320 -  
321 -#elif DEVICE_VERSION == TF_A1  
322 - return WarningLight_V3S_TFA1_Set_WarningLight_Status(status, mode);  
323 -#elif DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30  
324 - WarningLight_Status = status;  
325 - WarningLight_Mode = mode;  
326 - return HalSend_type1Send_Set_WarningLight_Status(UART_DEV_2, status, mode);  
327 -#else  
328 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
329 -#endif  
330 -}  
331 -  
332 -//收到并修改警灯状态  
333 -T_JZsdkReturnCode Lighting_Obtain_WarningLight_Status(int status, int mode)  
334 -{  
335 - printf("%x警灯状态改变 状态%d 模式%d\n",DEVICE_VERSION, status ,mode);  
336 -  
337 - WarningLight_Status = status;  
338 - WarningLight_Mode = mode;  
339 -  
340 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
341 -}  
342 -  
343 -//获取探警灯状态  
344 -T_JZsdkReturnCode Lighting_Get_WarningLight_Status(int *status, int *mode)  
345 -{  
346 - *status = WarningLight_Status;  
347 - *mode = WarningLight_Mode;  
348 -  
349 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
350 -}  
351 -  
352 -/*********  
353 - *  
354 - * 查询警灯状态  
355 - *  
356 -**********/  
357 -T_JZsdkReturnCode Lighting_CheckStatus_WarningLightStatus(int *ValueSwitch, int *ValueMode)  
358 -{  
359 - //1、刷新查询警灯状态  
360 - if (DEVICE_VERSION == JZ_H1T)  
361 - {  
362 - WarningLight_V3S_H1T_CheckStatus_WarningLightStatus();  
363 - }  
364 - else if (DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)  
365 - {  
366 - HalSend_type1Send_CheckStatus_WarningLightStatus(UART_DEV_2);  
367 - }  
368 -  
369 - //2、获取一次本地警灯状态  
370 - Lighting_Get_WarningLight_Status(ValueSwitch, ValueMode);  
371 -  
372 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
373 -}  
374 -  
375 -/********************************************************************************************************************************  
376 - *  
377 - * 探照灯 警灯颜色  
378 - *  
379 -********************************************************************************************************************************/  
380 -//设置警灯颜色  
381 -T_JZsdkReturnCode Lighting_Set_WarningLight_Color(int color1, int color2)  
382 -{  
383 - printf("设置0x%x:警灯颜色\n",DEVICE_VERSION);  
384 -  
385 -#if DEVICE_VERSION == JZ_H1T  
386 - return WarningLight_V3S_H1T_Set_WarningLight_Color(color1, color2);  
387 -  
388 -#elif DEVICE_VERSION == TF_A1  
389 - return WarningLight_V3S_TFA1_Set_WarningLight_Color(color1, color2);  
390 -#elif DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30  
391 -  
392 - //临时方案,u3s查不到警灯颜色  
393 - #if DEVICE_VERSION == JZ_U3S  
394 - WarningLight_Color1 = color1;  
395 - WarningLight_Color2 = color2;  
396 - #endif  
397 -  
398 - return HalSend_type1Send_Set_WarningLight_Color(UART_DEV_2, color1, color2);  
399 -#else  
400 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
401 -#endif  
402 -  
403 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
404 -}  
405 -  
406 -//收到并修改警灯颜色  
407 -T_JZsdkReturnCode Lighting_Obtain_WarningLight_Color(int color1, int color2)  
408 -{  
409 - printf("%x警灯颜色改变 颜色1:%d 颜色2:%d\n",DEVICE_VERSION, color1 ,color2);  
410 -  
411 - WarningLight_Color1 = color1;  
412 - WarningLight_Color2 = color2;  
413 -  
414 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
415 -}  
416 -  
417 -//获取探警灯颜色  
418 -T_JZsdkReturnCode Lighting_Get_WarningLight_Color(int *color1, int *color2)  
419 -{  
420 - *color1 = WarningLight_Color1;  
421 - *color2 = WarningLight_Color2;  
422 -  
423 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
424 -}  
425 -  
426 -/*********  
427 - *  
428 - * 查询探警灯颜色  
429 - *  
430 -**********/  
431 -T_JZsdkReturnCode Lighting_CheckStatus_WarningLightColor(int *ValueColor1, int *ValueColor2)  
432 -{  
433 - //1、刷新查询探警灯颜色  
434 - if (DEVICE_VERSION == JZ_H1T)  
435 - {  
436 - WarningLight_V3S_H1T_CheckStatus_WarningLightColor();  
437 - }  
438 -  
439 - //2、获取一次本地探警灯颜色  
440 - Lighting_Get_WarningLight_Color(ValueColor1, ValueColor2);  
441 -  
442 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
443 -}  
444 -  
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 -// }  
1 -/**  
2 - ********************************************************************  
3 - * @file Lighting_InAndOut.h  
4 - * Lighting_InAndOut的头文件  
5 - *  
6 - *********************************************************************  
7 - */  
8 -  
9 -/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/  
10 -#ifndef LIGHTING_INANDOUT_H  
11 -#define LIGHTING_INANDOUT_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 -T_JZsdkReturnCode Lighting_Init();  
27 -  
28 -T_JZsdkReturnCode Lighting_CheckStatus_SearchLightLightAttribute(int *ValueFrequency, int *ValueMode, int *ValueLeftLumen, int *ValueRightLumen);  
29 -  
30 -T_JZsdkReturnCode Lighting_SearchLightControl(int mode);  
31 -T_JZsdkReturnCode Lighting_Obtain_SearchLightMode(int mode);  
32 -T_JZsdkReturnCode Lighting_Get_SearchLightMode(int *mode);  
33 -  
34 -T_JZsdkReturnCode Lighting_Set_SearchLightLumen(int LeftLumen, int RightLumen);  
35 -T_JZsdkReturnCode Lighting_Obtain_SearchLightLumen(int LeftLumen, int RightLumen);  
36 -T_JZsdkReturnCode Lighting_Get_SearchLightLumen(int *LeftLumen, int *RightLumen);  
37 -  
38 -T_JZsdkReturnCode Lighting_Set_SearchLightFrequency(int value);  
39 -T_JZsdkReturnCode Lighting_Obtain_SearchLightFrequency(int Frequency);  
40 -T_JZsdkReturnCode Lighting_Get_SearchLightFrequency(int *Frequency);  
41 -  
42 -T_JZsdkReturnCode Lighting_Obtain_SearchLightTemperature(int LeftTemperature, int RightTemperature);  
43 -T_JZsdkReturnCode Lighting_Get_SearchLightTemperature(int *LeftTemperature, int *RightTemperature);  
44 -T_JZsdkReturnCode Lighting_CheckStatus_SearchLightTemperture(int *ValueLeftTemperature, int *ValueRightTemperaturen);  
45 -  
46 -T_JZsdkReturnCode Lighting_Set_WarningLight_Status(int status, int mode);  
47 -T_JZsdkReturnCode Lighting_Obtain_WarningLight_Status(int status, int mode);  
48 -T_JZsdkReturnCode Lighting_Get_WarningLight_Status(int *status, int *mode);  
49 -T_JZsdkReturnCode Lighting_CheckStatus_WarningLightStatus(int *ValueSwitch, int *ValueMode);  
50 -  
51 -T_JZsdkReturnCode Lighting_Set_WarningLight_Color(int color1, int color2);  
52 -T_JZsdkReturnCode Lighting_Obtain_WarningLight_Color(int color1, int color2);  
53 -T_JZsdkReturnCode Lighting_Get_WarningLight_Color(int *color1, int *color2);  
54 -T_JZsdkReturnCode Lighting_CheckStatus_WarningLightColor(int *ValueColor1, int *ValueColor2);  
55 -  
56 -T_JZsdkReturnCode JZsdk_SearchLight_FlushLumen(int InputLumen);  
57 -  
58 -  
59 -int JZsdk_SearchLight_GetMessageSubFlag(void);  
60 -T_JZsdkReturnCode JZsdk_SearchLight_SetMessageSubFlag(int InputFlag);  
61 -  
62 -  
63 -#ifdef __cplusplus  
64 -}  
65 -#endif  
66 -  
67 -#endif  
1 -#include <stdio.h>  
2 -#include "./SearchLight_V3S_H1T.h"  
3 -#include "BaseConfig.h"  
4 -  
5 -#include "Hal_Send/HalSend.h"  
6 -  
7 -//设置探照灯频率  
8 -T_JZsdkReturnCode SearchLight_V3S_H1T_Set_SearchLightFrequency(int value)  
9 -{  
10 - //向H1T的单片机发送调节频率帧  
11 - HalSend_type1Send_Set_SearchLightFrequency(UART_DEV_1, value, 0x00);  
12 -  
13 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
14 -}  
15 -  
16 -//设置探照灯控制模式  
17 -T_JZsdkReturnCode SearchLight_V3S_H1T_SearchLightControl(int mode)  
18 -{  
19 - //向H1T的单片机发送探照灯控制帧  
20 - HalSend_type1Send_SearchLight_Control(UART_DEV_1, mode, 0x00);  
21 -  
22 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
23 -}  
24 -  
25 -//设置灯亮度  
26 -T_JZsdkReturnCode SearchLight_V3S_H1T_Set_SearchLightLumen(int LeftLumen, int RightLumen)  
27 -{  
28 - //向H1T的单片机发送探照灯控制帧  
29 - HalSend_type1Send_SearchLight_SetLumen(UART_DEV_1, LeftLumen, RightLumen, 0x00);  
30 -  
31 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
32 -}  
33 -  
34 -//查询探照灯模式  
35 -T_JZsdkReturnCode SearchLight_V3S_H1T_CheckStatus_LightMode()  
36 -{  
37 - //向H1T的单片机发送探照灯灯光模式查询帧  
38 - HalSend_type1Send_CheckStatus_SearchLight_Mode(UART_DEV_1);  
39 -  
40 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
41 -}  
42 -  
43 -//查询探照灯亮度  
44 -T_JZsdkReturnCode SearchLight_V3S_H1T_CheckStatus_LightLumen()  
45 -{  
46 - //向H1T的单片机发送探照灯灯光模式查询帧  
47 - HalSend_type1Send_CheckStatus_SearchLight_Lumen(UART_DEV_1);  
48 -  
49 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
50 -}  
51 -  
52 -//查询探照灯频率  
53 -T_JZsdkReturnCode SearchLight_V3S_H1T_CheckStatus_LightFrequency()  
54 -{  
55 - //向H1T的单片机发送探照灯灯光模式查询帧  
56 - HalSend_type1Send_CheckStatus_SearchLight_Frequency(UART_DEV_1);  
57 -  
58 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
59 -}  
60 -  
61 -  
62 -//查询探照灯灯光属性  
63 -T_JZsdkReturnCode SearchLight_V3S_H1T_CheckStatus_LightAttribute()  
64 -{  
65 - //向H1T的单片机发送探照灯灯光模式查询帧  
66 - HalSend_type1Send_CheckStatus_SearchLight_Attribute(UART_DEV_1);  
67 -  
68 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
69 -}  
70 -  
71 -//查询探照灯灯光温度  
72 -T_JZsdkReturnCode SearchLight_V3S_H1T_CheckStatus_SearchLightTemperture()  
73 -{  
74 - //向H1T的单片机发送探照灯灯光模式查询帧  
75 - HalSend_type1Send_CheckStatus_SearchLight_Temperture(UART_DEV_1, 0x00);  
76 -  
77 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
78 -}  
1 -/**  
2 - ********************************************************************  
3 - * @file SearchLight_V3S_H1T.h  
4 - * SearchLight_V3S_H1T的头文件  
5 - *  
6 - *********************************************************************  
7 - */  
8 -  
9 -/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/  
10 -#ifndef SEARCHLIGHT_V3S_H1T_H  
11 -#define SEARCHLIGHT_V3S_H1T_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 -  
24 -/* Exported types ------------------------------------------------------------*/  
25 -  
26 -/* Exported functions --------------------------------------------------------*/  
27 -T_JZsdkReturnCode SearchLight_V3S_H1T_Set_SearchLightFrequency(int value);  
28 -T_JZsdkReturnCode SearchLight_V3S_H1T_SearchLightControl(int mode);  
29 -T_JZsdkReturnCode SearchLight_V3S_H1T_Set_SearchLightLumen(int LeftLumen, int RightLumen);  
30 -T_JZsdkReturnCode SearchLight_V3S_H1T_CheckStatus_LightAttribute();  
31 -T_JZsdkReturnCode SearchLight_V3S_H1T_CheckStatus_LightMode();  
32 -T_JZsdkReturnCode SearchLight_V3S_H1T_CheckStatus_LightLumen();  
33 -T_JZsdkReturnCode SearchLight_V3S_H1T_CheckStatus_LightFrequency();  
34 -T_JZsdkReturnCode SearchLight_V3S_H1T_CheckStatus_LightAttribute();  
35 -T_JZsdkReturnCode SearchLight_V3S_H1T_CheckStatus_SearchLightTemperture();  
36 -  
37 -#ifdef __cplusplus  
38 -}  
39 -#endif  
40 -  
41 -#endif  
1 -#include <stdio.h>  
2 -#include "./SearchLight_V3S_TFA1.h"  
3 -  
4 -#include "BaseConfig.h"  
5 -#include "Hal_Send/HalSend.h"  
6 -  
7 -  
8 -T_JZsdkReturnCode SearchLight_V3S_TFA1_Set_SearchLightFrequency(int value)  
9 -{  
10 - //向u3的单片机发送调节频率帧  
11 - HalSend_type1Send_Set_SearchLightFrequency(UART_DEV_2, value, 0x00);  
12 -  
13 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
14 -}  
15 -  
16 -T_JZsdkReturnCode SearchLight_V3S_TFA1_SearchLightControl(int mode)  
17 -{  
18 - //向u3的单片机发送探照灯控制帧  
19 - HalSend_type1Send_SearchLight_Control(UART_DEV_2, mode, 0x00);  
20 -  
21 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
22 -}  
23 -  
24 -  
25 -T_JZsdkReturnCode SearchLight_V3S_TFA1_Set_SearchLightLumen(int LeftLumen, int RightLumen)  
26 -{  
27 - //向tfa1的单片机发送探照灯控制帧  
28 - HalSend_type1Send_SearchLight_SetLumen(UART_DEV_2, LeftLumen, RightLumen, 0x00);  
29 -  
30 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
31 -}  
1 -#include <stdio.h>  
2 -#include "./SearchLight_V3S_U3.h"  
3 -  
4 -#include "BaseConfig.h"  
5 -#include "Hal_Send/HalSend.h"  
6 -  
7 -  
8 -T_JZsdkReturnCode SearchLight_V3S_U3_Set_SearchLightFrequency(int value)  
9 -{  
10 - //向u3的单片机发送调节频率帧  
11 - HalSend_type1Send_Set_SearchLightFrequency(UART_DEV_2, value, 0x00);  
12 -  
13 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
14 -}  
15 -  
16 -T_JZsdkReturnCode SearchLight_V3S_U3_SearchLightControl(int mode)  
17 -{  
18 - //向u3的单片机发送探照灯控制帧  
19 - HalSend_type1Send_SearchLight_Control(UART_DEV_2, mode, 0x00);  
20 -  
21 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
22 -}  
23 -  
24 -T_JZsdkReturnCode SearchLight_V3S_U3_Set_SearchLightLumen(int LeftLumen, int RightLumen)  
25 -{  
26 - //向u3的单片机发送探照灯控制帧  
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);  
66 -  
67 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
68 -}  
1 -/**  
2 - ********************************************************************  
3 - * @file SearchLight_V3S_U3.h  
4 - * SearchLight_V3S_U3的头文件  
5 - *  
6 - *********************************************************************  
7 - */  
8 -  
9 -/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/  
10 -#ifndef SEARCHLIGHT_V3S_U3_H  
11 -#define SEARCHLIGHT_V3S_U3_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 -  
24 -/* Exported types ------------------------------------------------------------*/  
25 -  
26 -/* Exported functions --------------------------------------------------------*/  
27 -T_JZsdkReturnCode SearchLight_V3S_U3_Set_SearchLightFrequency(int value);  
28 -T_JZsdkReturnCode SearchLight_V3S_U3_SearchLightControl(int mode);  
29 -T_JZsdkReturnCode SearchLight_V3S_U3_Set_SearchLightLumen(int LeftLumen, int RightLumen);  
30 -  
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 -  
36 -#ifdef __cplusplus  
37 -}  
38 -#endif  
39 -  
40 -#endif  
1 -#include <stdio.h>  
2 -#include "./WarningLight_V3S_H1T.h"  
3 -#include "BaseConfig.h"  
4 -  
5 -#include "Hal_Send/HalSend.h"  
6 -  
7 -//设置警灯状态  
8 -T_JZsdkReturnCode WarningLight_V3S_H1T_Set_WarningLight_Status(int status, int mode)  
9 -{  
10 - //向底座T60s发送警灯状态  
11 - HalSend_type1Send_Set_WarningLight_Status(UART_DEV_1, status, mode);  
12 -  
13 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
14 -}  
15 -  
16 -//设置警灯颜色  
17 -T_JZsdkReturnCode WarningLight_V3S_H1T_Set_WarningLight_Color(int color1, int color2)  
18 -{  
19 - HalSend_type1Send_Set_WarningLight_Color(UART_DEV_1, color1, color2);  
20 -  
21 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
22 -}  
23 -  
24 -/*********  
25 - *  
26 - * 查询警灯状态  
27 - *  
28 -**********/  
29 -T_JZsdkReturnCode WarningLight_V3S_H1T_CheckStatus_WarningLightStatus()  
30 -{  
31 - HalSend_type1Send_CheckStatus_WarningLightStatus(UART_DEV_1);  
32 -  
33 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
34 -}  
35 -  
36 -/*********  
37 - *  
38 - * 查询警灯颜色  
39 - *  
40 -**********/  
41 -T_JZsdkReturnCode WarningLight_V3S_H1T_CheckStatus_WarningLightColor()  
42 -{  
43 - HalSend_type1Send_CheckStatus_WarningLightColor(UART_DEV_1);  
44 -  
45 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
46 -}  
1 -#include <stdio.h>  
2 -#include "./WarningLight_V3S_TFA1.h"  
3 -#include "BaseConfig.h"  
4 -  
5 -#include "Hal_Send/HalSend.h"  
6 -  
7 -//设置警灯状态  
8 -T_JZsdkReturnCode WarningLight_V3S_TFA1_Set_WarningLight_Status(int status, int mode)  
9 -{  
10 - //向单片机发送警灯状态  
11 - HalSend_type1Send_Set_WarningLight_Status(UART_DEV_2, status, mode);  
12 -  
13 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
14 -}  
15 -  
16 -//设置警灯颜色  
17 -T_JZsdkReturnCode WarningLight_V3S_TFA1_Set_WarningLight_Color(int color1, int color2)  
18 -{  
19 - HalSend_type1Send_Set_WarningLight_Color(UART_DEV_2, color1, color2);  
20 -  
21 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
22 -}  
23 -  
24 -/*********  
25 - *  
26 - * 查询警灯状态  
27 - *  
28 -**********/  
29 -T_JZsdkReturnCode WarningLight_V3S_TFA1_CheckStatus_WarningLightStatus()  
30 -{  
31 - HalSend_type1Send_CheckStatus_WarningLightStatus(UART_DEV_2);  
32 -  
33 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
34 -}  
35 -  
36 -/*********  
37 - *  
38 - * 查询警灯颜色  
39 - *  
40 -**********/  
41 -T_JZsdkReturnCode WarningLight_V3S_TFA1_CheckStatus_WarningLightColor()  
42 -{  
43 - HalSend_type1Send_CheckStatus_WarningLightColor(UART_DEV_2);  
44 -  
45 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
46 -}  
1 -/**  
2 - ********************************************************************  
3 - * @file WarningLight_V3S_TFA1.h  
4 - * WarningLight_V3S_TFA1的头文件  
5 - *  
6 - *********************************************************************  
7 - */  
8 -  
9 -/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/  
10 -#ifndef WARNINGLIGHT_V3S_TFA1_H  
11 -#define WARNINGLIGHT_V3S_TFA1_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 -  
24 -/* Exported types ------------------------------------------------------------*/  
25 -  
26 -/* Exported functions --------------------------------------------------------*/  
27 -T_JZsdkReturnCode WarningLight_V3S_TFA1_Set_WarningLight_Status(int status, int mode);  
28 -T_JZsdkReturnCode WarningLight_V3S_TFA1_Set_WarningLight_Color(int color1, int color2);  
29 -T_JZsdkReturnCode WarningLight_V3S_TFA1_CheckStatus_WarningLightStatus();  
30 -T_JZsdkReturnCode WarningLight_V3S_TFA1_CheckStatus_WarningLightColor();  
31 -  
32 -#ifdef __cplusplus  
33 -}  
34 -#endif  
35 -  
36 -#endif  
@@ -31,7 +31,7 @@ T_JZsdkReturnCode VideoStream_PushFrame(unsigned char* h264_data, unsigned int d @@ -31,7 +31,7 @@ T_JZsdkReturnCode VideoStream_PushFrame(unsigned char* h264_data, unsigned int d
31 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 31 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
32 } 32 }
33 33
34 - //JZSDK_LOG_INFO("推送帧"); 34 + //JZSDK_LOG_DEBUG("相机推流帧%d",data_len);
35 35
36 //放入到对应的传输函数 36 //放入到对应的传输函数
37 #if APP_VERSION == APP_PSDK 37 #if APP_VERSION == APP_PSDK
@@ -46,7 +46,7 @@ static T_JZsdkReturnCode PcmPlay_Interface(t_PcmParam *PcmParam) @@ -46,7 +46,7 @@ static T_JZsdkReturnCode PcmPlay_Interface(t_PcmParam *PcmParam)
46 nbBytes = fread(cbits, 1, 3 * 1276, Pcm_fp); 46 nbBytes = fread(cbits, 1, 3 * 1276, Pcm_fp);
47 if(nbBytes > 0) 47 if(nbBytes > 0)
48 { 48 {
49 - AudioDeal_PcmDataInput(g_opus_sampleRate, (unsigned char *)cbits, nbBytes, 1); 49 + AudioDeal_PcmDataInput_RecordSteam(g_opus_sampleRate, (unsigned char *)cbits, nbBytes);
50 } 50 }
51 51
52 int totalSamples = nbBytes / (2); 52 int totalSamples = nbBytes / (2);
@@ -73,7 +73,7 @@ T_JZsdkReturnCode Megaphone_Tts_Play(unsigned char *str, unsigned int str_len, i @@ -73,7 +73,7 @@ T_JZsdkReturnCode Megaphone_Tts_Play(unsigned char *str, unsigned int str_len, i
73 int tone = TTS_Get_tone(); 73 int tone = TTS_Get_tone();
74 if (tone >= 0x00 && tone <= 0x36) 74 if (tone >= 0x00 && tone <= 0x36)
75 { 75 {
76 - return Ifytek_1_Play(str, str_len, ReplyFlag); 76 + return Iflytek_1_Play(str, str_len, ReplyFlag);
77 } 77 }
78 else 78 else
79 { 79 {
@@ -84,7 +84,7 @@ T_JZsdkReturnCode Megaphone_Tts_Play(unsigned char *str, unsigned int str_len, i @@ -84,7 +84,7 @@ T_JZsdkReturnCode Megaphone_Tts_Play(unsigned char *str, unsigned int str_len, i
84 84
85 #ifdef IFLAY_TTS_2_CONFIG_STATUS_ON 85 #ifdef IFLAY_TTS_2_CONFIG_STATUS_ON
86 86
87 - return Ifytek_2_Play(str, str_len, ReplyFlag); 87 + return Iflytek_2_Play(str, str_len, ReplyFlag);
88 88
89 #endif 89 #endif
90 90
@@ -98,7 +98,7 @@ static T_JZsdkReturnCode TTS_Synthesis(const char* src_text, const char* params) @@ -98,7 +98,7 @@ static T_JZsdkReturnCode TTS_Synthesis(const char* src_text, const char* params)
98 98
99 //没将数据放入PCM通道 99 //没将数据放入PCM通道
100 //printf("产生了%d 的数据\n",audio_len); 100 //printf("产生了%d 的数据\n",audio_len);
101 - AudioDeal_PcmDataInput(16000, (unsigned char *)data, audio_len, 0); 101 + AudioDeal_PcmDataInput_TextSteam(16000, (unsigned char *)data, audio_len);
102 } 102 }
103 103
104 if (synth_status == MSP_TTS_FLAG_DATA_END) 104 if (synth_status == MSP_TTS_FLAG_DATA_END)
@@ -408,7 +408,7 @@ T_JZsdkReturnCode Iflytek_1_Init() @@ -408,7 +408,7 @@ T_JZsdkReturnCode Iflytek_1_Init()
408 * 讯飞TTS_播放函数 408 * 讯飞TTS_播放函数
409 * 409 *
410 **********/ 410 **********/
411 -T_JZsdkReturnCode Ifytek_1_Play(unsigned char *str, unsigned int str_len, int ReplyFlag) 411 +T_JZsdkReturnCode Iflytek_1_Play(unsigned char *str, unsigned int str_len, int ReplyFlag)
412 { 412 {
413 //1、制造一个数据产生函数 413 //1、制造一个数据产生函数
414 pthread_t TTS_flie_task; 414 pthread_t TTS_flie_task;
@@ -27,7 +27,7 @@ extern "C" { @@ -27,7 +27,7 @@ extern "C" {
27 27
28 28
29 T_JZsdkReturnCode Iflytek_1_Init(); 29 T_JZsdkReturnCode Iflytek_1_Init();
30 -T_JZsdkReturnCode Ifytek_1_Play(unsigned char *str, unsigned int str_len, int ReplyFlag); 30 +T_JZsdkReturnCode Iflytek_1_Play(unsigned char *str, unsigned int str_len, int ReplyFlag);
31 31
32 32
33 #ifdef __cplusplus 33 #ifdef __cplusplus
  1 +#include <fstream>
  2 +#include <assert.h>
  3 +#include <cstring>
  4 +#include <atomic>
  5 +#include <unistd.h>
  6 +#include <string>
  7 +
  8 +#include "JZsdkLib.h"
  9 +#include "version_choose.h"
  10 +
  11 +#ifdef IFLAY_TTS_2_CONFIG_STATUS_ON
  12 +
  13 +#include "aikit_biz_api.h"
  14 +#include "aikit_constant.h"
  15 +#include "aikit_biz_config.h"
  16 +#include "iflytek_tts.h"
  17 +#include "AudioDeal/AudioDeal.h"
  18 +#include "../../Megaphone.h"
  19 +#include "iflytek_tts.h"
  20 +
  21 +
  22 +using namespace std;
  23 +using namespace AIKIT;
  24 +
  25 +static std::atomic_bool ttsFinished(false);
  26 +static const char *ABILITY = "e2e44feff";
  27 +static AIKIT_HANDLE *g_AikitHandle = nullptr; //合成句柄
  28 +
  29 +static int IflytekLib_2_StopTts();
  30 +
  31 +
  32 +
  33 +void OnOutput(AIKIT_HANDLE* handle, const AIKIT_OutputData* output)
  34 +{
  35 + //检测数据生成标志位是否有关闭,如果有关闭,则主动关闭合成,并退出该事件
  36 + if (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_OFF)
  37 + {
  38 + IflytekLib_2_StopTts();
  39 + return;
  40 + }
  41 +
  42 + //如果存在数据,则播放
  43 + if (output->node->value)
  44 + {
  45 + //生产的文本数据 output->node->value
  46 + //生产的数据长度 output->node->len
  47 + //char类型
  48 +
  49 + //JZSDK_LOG_DEBUG("生产了数据%d", output->node->len);
  50 + printf("生产了数据%d\n", output->node->len);
  51 +
  52 + //将该数据发送到alsa播放器
  53 + AudioDeal_PcmDataInput_TextSteam(16000, (unsigned char *)output->node->value, output->node->len);
  54 + }
  55 +
  56 +
  57 +}
  58 +
  59 +void OnEvent(AIKIT_HANDLE* handle, AIKIT_EVENT eventType, const AIKIT_OutputEvent* eventValue) {
  60 + if (eventType == AIKIT_Event_End) {
  61 + ttsFinished = true;
  62 +
  63 + JZSDK_LOG_INFO("合成完成");
  64 + }
  65 +}
  66 +
  67 +void OnError(AIKIT_HANDLE* handle, int32_t err, const char* desc) {
  68 + printf("OnError:%d\n", err);
  69 +
  70 + //报错
  71 +}
  72 +
  73 +int IflytekLib_2_TextToTts(int language,
  74 + const char *TtsRole,
  75 + const char *text, int speed, int volume)
  76 +{
  77 +
  78 + AIKIT_ParamBuilder* paramBuilder = nullptr;
  79 + AIKIT_DataBuilder* dataBuilder = nullptr;
  80 + AiText* aiText_raw = nullptr;
  81 +
  82 +
  83 + // 重置完成标志
  84 + ttsFinished = false;
  85 +
  86 + paramBuilder = AIKIT_ParamBuilder::create();
  87 + paramBuilder->clear();
  88 + // 设置发音人
  89 + paramBuilder->param("vcn", TtsRole, strlen(TtsRole));
  90 + paramBuilder->param("vcnModel", TtsRole, strlen(TtsRole));
  91 + // 设置语种
  92 + paramBuilder->param("language", language);
  93 + // 设置文本编码
  94 + paramBuilder->param("textEncoding", "UTF-8", strlen("UTF-8"));
  95 +
  96 + //语速
  97 + //paramBuilder->param("speed",speed); //可选参数,默认为0
  98 +
  99 + //音调
  100 + //paramBuilder->param("pitch",100); //可选参数,默认为0
  101 +
  102 + //声音
  103 + //paramBuilder->param("volume",100);//可选参数,默认为0
  104 +
  105 + //JZSDK_LOG_DEBUG("TTS Role:%s Len:%d, Text:%s Len:%d, language:%d", TtsRole, strlen(TtsRole), text, strlen(text), language);
  106 +
  107 + int ret = AIKIT_Start(ABILITY, AIKIT_Builder::build(paramBuilder), nullptr, &g_AikitHandle);
  108 + if(ret != 0) {
  109 + printf("AIKIT_Start failed: %d\n", ret);
  110 + goto exit;
  111 + }
  112 +
  113 + dataBuilder = AIKIT_DataBuilder::create();
  114 + dataBuilder->clear();
  115 + //aiText_raw = AiText::get("text")->data(text.c_str(), text.length())->once()->valid();
  116 + aiText_raw = AiText::get("text")->data(text, strlen(text) )->once()->valid();
  117 + dataBuilder->payload(aiText_raw);
  118 +
  119 + ret = AIKIT_Write(g_AikitHandle, AIKIT_Builder::build(dataBuilder));
  120 + if(ret != 0) {
  121 + printf("AIKIT_Write failed: %d\n", ret);
  122 + goto exit;
  123 + }
  124 +
  125 + // 等待合成完成
  126 + while(!ttsFinished) {
  127 + usleep(1000);
  128 + }
  129 +
  130 + //JZSDK_LOG_INFO("合成完成");
  131 +
  132 + ret = AIKIT_End(g_AikitHandle);
  133 +
  134 +exit:
  135 + if(paramBuilder != nullptr) {
  136 + delete paramBuilder;
  137 + }
  138 + if(dataBuilder != nullptr) {
  139 + delete dataBuilder;
  140 + }
  141 +}
  142 +
  143 +
  144 +
  145 +
  146 +
  147 +
  148 +
  149 +
  150 +
  151 +
  152 +
  153 +int IflytekLib_2_Init()
  154 +{
  155 + AIKIT_Configurator::builder()
  156 + .app()
  157 + .appID("03857dfd")
  158 + .apiSecret("OTA2OTEzMTVlOGYwMjllMmJkYzEwZGY5")
  159 + .apiKey("2b2c60f8a80b8cdfe45ae1058a25149a")
  160 + .workDir("/root/Iflytek_2")
  161 + .auth()
  162 + .authType(0)
  163 + .log()
  164 + .logLevel(LOG_LVL_OFF) //关闭日志打印
  165 + .logMode(LOG_STDOUT); //日志输出为控制台
  166 +
  167 + int ret = AIKIT_Init();
  168 + if(ret != 0) {
  169 + printf("AIKIT_Init failed: %d\n", ret);
  170 + return -1;
  171 + }
  172 +
  173 + AIKIT_Callbacks cbs = {OnOutput, OnEvent, OnError};
  174 + AIKIT_RegisterAbilityCallback(ABILITY, cbs);
  175 +
  176 + return 0;
  177 +}
  178 +
  179 +int IflytekLib_2_UnInit()
  180 +{
  181 + AIKIT_UnInit();
  182 + return 0;
  183 +}
  184 +
  185 +static int IflytekLib_2_StopTts()
  186 +{
  187 + AIKIT_OutputEvent eventData = {};
  188 + if (g_AikitHandle != nullptr)
  189 + {
  190 + OnEvent(g_AikitHandle,AIKIT_Event_End,&eventData);
  191 + }
  192 +
  193 + return 0;
  194 +}
  195 +
  196 +#endif
  1 +#include <fstream>
  2 +#include <assert.h>
  3 +#include <cstring>
  4 +#include <atomic>
  5 +#include <unistd.h>
  6 +#include <string>
  7 +
  8 +#include "JZsdkLib.h"
  9 +#include "version_choose.h"
  10 +
  11 +#ifdef IFLAY_TTS_2_CONFIG_STATUS_ON
  12 +
  13 +#include "aikit_biz_api.h"
  14 +#include "aikit_constant.h"
  15 +#include "aikit_biz_config.h"
  16 +#include "iflytek_tts.h"
  17 +#include "AudioDeal/AudioDeal.h"
  18 +#include "../../Megaphone.h"
  19 +#include "iflytek_tts.h"
  20 +
  21 +
  22 +using namespace std;
  23 +using namespace AIKIT;
  24 +
  25 +static std::atomic_bool ttsFinished(false);
  26 +static const char *ABILITY = "e2e44feff";
  27 +static AIKIT_HANDLE *g_AikitHandle = nullptr; //合成句柄
  28 +
  29 +static int IflytekLib_2_StopTts();
  30 +
  31 +static FILE *iflytts_fp = NULL;
  32 +#define IFLYTTS_FP_NAME "/root/tmp_tts_file.pcm"
  33 +
  34 +
  35 +void OnOutput(AIKIT_HANDLE* handle, const AIKIT_OutputData* output)
  36 +{
  37 + //检测数据生成标志位是否有关闭,如果有关闭,则主动关闭合成,并退出该事件
  38 + if (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_OFF)
  39 + {
  40 + IflytekLib_2_StopTts();
  41 + return;
  42 + }
  43 +
  44 + //如果存在数据,则播放
  45 + if (output->node->value)
  46 + {
  47 + //生产的文本数据 output->node->value
  48 + //生产的数据长度 output->node->len
  49 + //char类型
  50 +
  51 + //JZSDK_LOG_DEBUG("生产了数据%d", output->node->len);
  52 + printf("生产了数据%d\n", output->node->len);
  53 +
  54 + //将该数据发送到alsa播放器
  55 + //AudioDeal_PcmDataInput_TextSteam(16000, (unsigned char *)output->node->value, output->node->len);
  56 +
  57 + if (iflytts_fp != NULL)
  58 + {
  59 + fwrite(output->node->value, sizeof(char), output->node->len, iflytts_fp);
  60 + fflush(iflytts_fp);
  61 + }
  62 +
  63 + }
  64 +
  65 +
  66 +}
  67 +
  68 +void OnEvent(AIKIT_HANDLE* handle, AIKIT_EVENT eventType, const AIKIT_OutputEvent* eventValue) {
  69 + if (eventType == AIKIT_Event_End) {
  70 + ttsFinished = true;
  71 +
  72 + JZSDK_LOG_INFO("合成完成");
  73 + }
  74 +}
  75 +
  76 +void OnError(AIKIT_HANDLE* handle, int32_t err, const char* desc) {
  77 + printf("OnError:%d\n", err);
  78 +
  79 + //报错
  80 +}
  81 +
  82 +int IflytekLib_2_TextToTts(int language,
  83 + const char *TtsRole,
  84 + const char *text, int speed, int volume)
  85 +{
  86 +
  87 + if (iflytts_fp != NULL)
  88 + {
  89 + JZSDK_LOG_ERROR("file %s is not closed\n", IFLYTTS_FP_NAME);
  90 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  91 + }
  92 +
  93 +
  94 + AIKIT_ParamBuilder* paramBuilder = nullptr;
  95 + AIKIT_DataBuilder* dataBuilder = nullptr;
  96 + AiText* aiText_raw = nullptr;
  97 +
  98 +
  99 + // 重置完成标志
  100 + ttsFinished = false;
  101 +
  102 + paramBuilder = AIKIT_ParamBuilder::create();
  103 + paramBuilder->clear();
  104 + // 设置发音人
  105 + paramBuilder->param("vcn", TtsRole, strlen(TtsRole));
  106 + paramBuilder->param("vcnModel", TtsRole, strlen(TtsRole));
  107 + // 设置语种
  108 + paramBuilder->param("language", language);
  109 + // 设置文本编码
  110 + paramBuilder->param("textEncoding", "UTF-8", strlen("UTF-8"));
  111 +
  112 + //语速
  113 + //paramBuilder->param("speed",speed); //可选参数,默认为0
  114 +
  115 + //音调
  116 + //paramBuilder->param("pitch",100); //可选参数,默认为0
  117 +
  118 + //声音
  119 + //paramBuilder->param("volume",100);//可选参数,默认为0
  120 +
  121 + //打开临存文件
  122 + iflytts_fp = fopen(IFLYTTS_FP_NAME, "w+b");
  123 + if (iflytts_fp == NULL)
  124 + {
  125 + JZSDK_LOG_ERROR("open file %s failed\n", IFLYTTS_FP_NAME);
  126 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  127 + }
  128 +
  129 + //JZSDK_LOG_DEBUG("TTS Role:%s Len:%d, Text:%s Len:%d, language:%d", TtsRole, strlen(TtsRole), text, strlen(text), language);
  130 +
  131 + int ret = AIKIT_Start(ABILITY, AIKIT_Builder::build(paramBuilder), nullptr, &g_AikitHandle);
  132 + if(ret != 0) {
  133 + printf("AIKIT_Start failed: %d\n", ret);
  134 + goto exit;
  135 + }
  136 +
  137 + dataBuilder = AIKIT_DataBuilder::create();
  138 + dataBuilder->clear();
  139 + //aiText_raw = AiText::get("text")->data(text.c_str(), text.length())->once()->valid();
  140 + aiText_raw = AiText::get("text")->data(text, strlen(text) )->once()->valid();
  141 + dataBuilder->payload(aiText_raw);
  142 +
  143 + ret = AIKIT_Write(g_AikitHandle, AIKIT_Builder::build(dataBuilder));
  144 + if(ret != 0) {
  145 + printf("AIKIT_Write failed: %d\n", ret);
  146 + goto exit;
  147 + }
  148 +
  149 + // 等待合成完成
  150 + while(!ttsFinished) {
  151 + usleep(1000);
  152 + }
  153 +
  154 + JZSDK_LOG_DEBUG("合成完成,开始播放");
  155 +
  156 + //将fp指针移到文件开头
  157 + fseek(iflytts_fp, 0, SEEK_SET);
  158 +
  159 + //将数据导入播放器
  160 + unsigned char buffer[1024];
  161 + int len;
  162 + while (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) != JZ_FLAGCODE_OFF)
  163 + {
  164 + len = fread(buffer, sizeof(char), 1024, iflytts_fp);
  165 + if (len <= 0)
  166 + {
  167 + JZSDK_LOG_DEBUG("已读取完毕\n");
  168 + break;
  169 + }
  170 +
  171 + AudioDeal_PcmDataInput_TextSteam(16000, buffer, len);
  172 + }
  173 +
  174 + JZSDK_LOG_INFO("播放完成");
  175 +
  176 + ret = AIKIT_End(g_AikitHandle);
  177 +
  178 +exit:
  179 + if(paramBuilder != nullptr) {
  180 + delete paramBuilder;
  181 + }
  182 + if(dataBuilder != nullptr) {
  183 + delete dataBuilder;
  184 + }
  185 +
  186 + if (iflytts_fp != NULL)
  187 + {
  188 + fclose(iflytts_fp);
  189 + iflytts_fp = NULL;
  190 + }
  191 +
  192 + return 0;
  193 +}
  194 +
  195 +
  196 +
  197 +
  198 +
  199 +
  200 +
  201 +
  202 +
  203 +
  204 +
  205 +int IflytekLib_2_Init()
  206 +{
  207 + AIKIT_Configurator::builder()
  208 + .app()
  209 + .appID("03857dfd")
  210 + .apiSecret("OTA2OTEzMTVlOGYwMjllMmJkYzEwZGY5")
  211 + .apiKey("2b2c60f8a80b8cdfe45ae1058a25149a")
  212 + .workDir("/root/Iflytek_2")
  213 + .auth()
  214 + .authType(0)
  215 + .log()
  216 + .logLevel(LOG_LVL_OFF) //关闭日志打印
  217 + .logMode(LOG_STDOUT); //日志输出为控制台
  218 +
  219 + int ret = AIKIT_Init();
  220 + if(ret != 0) {
  221 + printf("AIKIT_Init failed: %d\n", ret);
  222 + return -1;
  223 + }
  224 +
  225 + AIKIT_Callbacks cbs = {OnOutput, OnEvent, OnError};
  226 + AIKIT_RegisterAbilityCallback(ABILITY, cbs);
  227 +
  228 + return 0;
  229 +}
  230 +
  231 +int IflytekLib_2_UnInit()
  232 +{
  233 + AIKIT_UnInit();
  234 + return 0;
  235 +}
  236 +
  237 +static int IflytekLib_2_StopTts()
  238 +{
  239 + AIKIT_OutputEvent eventData = {};
  240 + if (g_AikitHandle != nullptr)
  241 + {
  242 + OnEvent(g_AikitHandle,AIKIT_Event_End,&eventData);
  243 + }
  244 +
  245 + return 0;
  246 +}
  247 +
  248 +#endif
@@ -22,47 +22,47 @@ static T_JZsdkReturnCode IflyTek_2_Tts_Input(int language, char *Text, int speed @@ -22,47 +22,47 @@ static T_JZsdkReturnCode IflyTek_2_Tts_Input(int language, char *Text, int speed
22 { 22 {
23 //1、将JZSDK的Language索引值转换为 IFLTEK2的语言索引值 23 //1、将JZSDK的Language索引值转换为 IFLTEK2的语言索引值
24 //2、将language转换为音色文件 24 //2、将language转换为音色文件
25 - int IfyTek_language = 0; 25 + int IflyTek_language = 0;
26 char role[20] = {0}; 26 char role[20] = {0};
27 27
28 switch (language) 28 switch (language)
29 { 29 {
30 case 0x01: // 中文女生 30 case 0x01: // 中文女生
31 - IfyTek_language = 1; 31 + IflyTek_language = 1;
32 strcpy(role, "xiaoyan"); 32 strcpy(role, "xiaoyan");
33 break; 33 break;
34 34
35 case 0x02: // 中文男生 35 case 0x02: // 中文男生
36 - IfyTek_language = 1; 36 + IflyTek_language = 1;
37 strcpy(role, "xiaofeng"); 37 strcpy(role, "xiaofeng");
38 break; 38 break;
39 39
40 case 0x11: // 英文女生 40 case 0x11: // 英文女生
41 - IfyTek_language = 2; 41 + IflyTek_language = 2;
42 strcpy(role, "catherine"); 42 strcpy(role, "catherine");
43 break; 43 break;
44 44
45 case 0x12: // 英文男生 45 case 0x12: // 英文男生
46 - IfyTek_language = 2; 46 + IflyTek_language = 2;
47 strcpy(role, "john"); 47 strcpy(role, "john");
48 break; 48 break;
49 49
50 case 0x31: // 东北 50 case 0x31: // 东北
51 - IfyTek_language = 1; 51 + IflyTek_language = 1;
52 strcpy(role, "xiaoqian"); 52 strcpy(role, "xiaoqian");
53 break; 53 break;
54 54
55 case 0x32: // 四川 55 case 0x32: // 四川
56 - IfyTek_language = 1; 56 + IflyTek_language = 1;
57 strcpy(role, "yezi"); 57 strcpy(role, "yezi");
58 break; 58 break;
59 59
60 case 0x33: // 河南 60 case 0x33: // 河南
61 - IfyTek_language = 1; 61 + IflyTek_language = 1;
62 strcpy(role, "xiaokun"); 62 strcpy(role, "xiaokun");
63 break; 63 break;
64 case 0x34: // 湖南 64 case 0x34: // 湖南
65 - IfyTek_language = 1; 65 + IflyTek_language = 1;
66 strcpy(role, "xiaoqiang"); 66 strcpy(role, "xiaoqiang");
67 break; 67 break;
68 68
@@ -72,12 +72,12 @@ static T_JZsdkReturnCode IflyTek_2_Tts_Input(int language, char *Text, int speed @@ -72,12 +72,12 @@ static T_JZsdkReturnCode IflyTek_2_Tts_Input(int language, char *Text, int speed
72 */ 72 */
73 73
74 case 0x36: // 广东 74 case 0x36: // 广东
75 - IfyTek_language = 12; // 粤语 75 + IflyTek_language = 12; // 粤语
76 strcpy(role, "xiaomei"); 76 strcpy(role, "xiaomei");
77 break; 77 break;
78 78
79 case 0x37: // 湖北 79 case 0x37: // 湖北
80 - IfyTek_language = 1; 80 + IflyTek_language = 1;
81 strcpy(role, "xiaowang"); 81 strcpy(role, "xiaowang");
82 break; 82 break;
83 83
@@ -87,12 +87,12 @@ static T_JZsdkReturnCode IflyTek_2_Tts_Input(int language, char *Text, int speed @@ -87,12 +87,12 @@ static T_JZsdkReturnCode IflyTek_2_Tts_Input(int language, char *Text, int speed
87 */ 87 */
88 88
89 default: // 默认中文女生 89 default: // 默认中文女生
90 - IfyTek_language = 1; 90 + IflyTek_language = 1;
91 strcpy(role, "xiaoyan"); 91 strcpy(role, "xiaoyan");
92 break; 92 break;
93 } 93 }
94 94
95 - IflytekLib_2_TextToTts(IfyTek_language, role, Text, speed, volume); 95 + IflytekLib_2_TextToTts(IflyTek_language, role, Text, speed, volume);
96 96
97 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 97 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
98 } 98 }
@@ -187,7 +187,7 @@ static void *Play_cntts_pthread(void *arg) @@ -187,7 +187,7 @@ static void *Play_cntts_pthread(void *arg)
187 * 讯飞TTS_播放函数 187 * 讯飞TTS_播放函数
188 * 188 *
189 **********/ 189 **********/
190 -T_JZsdkReturnCode Ifytek_2_Play(unsigned char *str, unsigned int str_len, int ReplyFlag) 190 +T_JZsdkReturnCode Iflytek_2_Play(unsigned char *str, unsigned int str_len, int ReplyFlag)
191 { 191 {
192 //1、制造一个数据产生函数 192 //1、制造一个数据产生函数
193 pthread_t TTS_flie_task; 193 pthread_t TTS_flie_task;
@@ -26,9 +26,9 @@ extern "C" { @@ -26,9 +26,9 @@ extern "C" {
26 26
27 27
28 28
29 -T_JZsdkReturnCode Ifytek_2_Init(); 29 +T_JZsdkReturnCode Iflytek_2_Init();
30 T_JZsdkReturnCode Iflytek_2_DeInit(); 30 T_JZsdkReturnCode Iflytek_2_DeInit();
31 -T_JZsdkReturnCode Ifytek_2_Play(unsigned char *str, unsigned int str_len, int ReplyFlag); 31 +T_JZsdkReturnCode Iflytek_2_Play(unsigned char *str, unsigned int str_len, int ReplyFlag);
32 32
33 33
34 34
@@ -28,6 +28,8 @@ static AIKIT_HANDLE *g_AikitHandle = nullptr; //合成句柄 @@ -28,6 +28,8 @@ static AIKIT_HANDLE *g_AikitHandle = nullptr; //合成句柄
28 28
29 static int IflytekLib_2_StopTts(); 29 static int IflytekLib_2_StopTts();
30 30
  31 +static FILE *iflytts_fp = NULL;
  32 +#define IFLYTTS_FP_NAME "/root/tmp_tts_file.pcm"
31 33
32 34
33 void OnOutput(AIKIT_HANDLE* handle, const AIKIT_OutputData* output) 35 void OnOutput(AIKIT_HANDLE* handle, const AIKIT_OutputData* output)
@@ -46,10 +48,18 @@ void OnOutput(AIKIT_HANDLE* handle, const AIKIT_OutputData* output) @@ -46,10 +48,18 @@ void OnOutput(AIKIT_HANDLE* handle, const AIKIT_OutputData* output)
46 //生产的数据长度 output->node->len 48 //生产的数据长度 output->node->len
47 //char类型 49 //char类型
48 50
49 - JZSDK_LOG_DEBUG("生产了数据%d", output->node->len); 51 + //JZSDK_LOG_DEBUG("生产了数据%d", output->node->len);
  52 + printf("生产了数据%d\n", output->node->len);
50 53
51 //将该数据发送到alsa播放器 54 //将该数据发送到alsa播放器
52 - AudioDeal_PcmDataInput(16000, (unsigned char *)output->node->value, output->node->len, 0); 55 + //AudioDeal_PcmDataInput_TextSteam(16000, (unsigned char *)output->node->value, output->node->len);
  56 +
  57 + if (iflytts_fp != NULL)
  58 + {
  59 + fwrite(output->node->value, sizeof(char), output->node->len, iflytts_fp);
  60 + fflush(iflytts_fp);
  61 + }
  62 +
53 } 63 }
54 64
55 65
@@ -74,6 +84,13 @@ int IflytekLib_2_TextToTts(int language, @@ -74,6 +84,13 @@ int IflytekLib_2_TextToTts(int language,
74 const char *text, int speed, int volume) 84 const char *text, int speed, int volume)
75 { 85 {
76 86
  87 + if (iflytts_fp != NULL)
  88 + {
  89 + JZSDK_LOG_ERROR("file %s is not closed\n", IFLYTTS_FP_NAME);
  90 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  91 + }
  92 +
  93 +
77 AIKIT_ParamBuilder* paramBuilder = nullptr; 94 AIKIT_ParamBuilder* paramBuilder = nullptr;
78 AIKIT_DataBuilder* dataBuilder = nullptr; 95 AIKIT_DataBuilder* dataBuilder = nullptr;
79 AiText* aiText_raw = nullptr; 96 AiText* aiText_raw = nullptr;
@@ -101,6 +118,14 @@ int IflytekLib_2_TextToTts(int language, @@ -101,6 +118,14 @@ int IflytekLib_2_TextToTts(int language,
101 //声音 118 //声音
102 //paramBuilder->param("volume",100);//可选参数,默认为0 119 //paramBuilder->param("volume",100);//可选参数,默认为0
103 120
  121 + //打开临存文件
  122 + iflytts_fp = fopen(IFLYTTS_FP_NAME, "w+b");
  123 + if (iflytts_fp == NULL)
  124 + {
  125 + JZSDK_LOG_ERROR("open file %s failed\n", IFLYTTS_FP_NAME);
  126 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  127 + }
  128 +
104 //JZSDK_LOG_DEBUG("TTS Role:%s Len:%d, Text:%s Len:%d, language:%d", TtsRole, strlen(TtsRole), text, strlen(text), language); 129 //JZSDK_LOG_DEBUG("TTS Role:%s Len:%d, Text:%s Len:%d, language:%d", TtsRole, strlen(TtsRole), text, strlen(text), language);
105 130
106 int ret = AIKIT_Start(ABILITY, AIKIT_Builder::build(paramBuilder), nullptr, &g_AikitHandle); 131 int ret = AIKIT_Start(ABILITY, AIKIT_Builder::build(paramBuilder), nullptr, &g_AikitHandle);
@@ -126,7 +151,27 @@ int IflytekLib_2_TextToTts(int language, @@ -126,7 +151,27 @@ int IflytekLib_2_TextToTts(int language,
126 usleep(1000); 151 usleep(1000);
127 } 152 }
128 153
129 - //JZSDK_LOG_INFO("合成完成"); 154 + JZSDK_LOG_DEBUG("合成完成,开始播放");
  155 +
  156 + //将fp指针移到文件开头
  157 + fseek(iflytts_fp, 0, SEEK_SET);
  158 +
  159 + //将数据导入播放器
  160 + unsigned char buffer[1024];
  161 + int len;
  162 + while (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) != JZ_FLAGCODE_OFF)
  163 + {
  164 + len = fread(buffer, sizeof(char), 1024, iflytts_fp);
  165 + if (len <= 0)
  166 + {
  167 + JZSDK_LOG_DEBUG("已读取完毕\n");
  168 + break;
  169 + }
  170 +
  171 + AudioDeal_PcmDataInput_TextSteam(16000, buffer, len);
  172 + }
  173 +
  174 + JZSDK_LOG_INFO("播放完成");
130 175
131 ret = AIKIT_End(g_AikitHandle); 176 ret = AIKIT_End(g_AikitHandle);
132 177
@@ -137,6 +182,14 @@ exit: @@ -137,6 +182,14 @@ exit:
137 if(dataBuilder != nullptr) { 182 if(dataBuilder != nullptr) {
138 delete dataBuilder; 183 delete dataBuilder;
139 } 184 }
  185 +
  186 + if (iflytts_fp != NULL)
  187 + {
  188 + fclose(iflytts_fp);
  189 + iflytts_fp = NULL;
  190 + }
  191 +
  192 + return 0;
140 } 193 }
141 194
142 195
  1 +#include <fstream>
  2 +#include <assert.h>
  3 +#include <cstring>
  4 +#include <atomic>
  5 +#include <unistd.h>
  6 +#include <string>
  7 +
  8 +#include "JZsdkLib.h"
  9 +#include "version_choose.h"
  10 +#include "JZsdk_base/JZring/JZring.h"
  11 +
  12 +#ifdef IFLAY_TTS_2_CONFIG_STATUS_ON
  13 +
  14 +#include "aikit_biz_api.h"
  15 +#include "aikit_constant.h"
  16 +#include "aikit_biz_config.h"
  17 +#include "iflytek_tts.h"
  18 +#include "AudioDeal/AudioDeal.h"
  19 +#include "../../Megaphone.h"
  20 +#include "iflytek_tts.h"
  21 +
  22 +
  23 +using namespace std;
  24 +using namespace AIKIT;
  25 +
  26 +static std::atomic_bool ttsFinished(false);
  27 +static const char *ABILITY = "e2e44feff";
  28 +static AIKIT_HANDLE *g_AikitHandle = nullptr; //合成句柄
  29 +
  30 +static int IflytekLib_2_StopTts();
  31 +
  32 +#define IFLYTEK_RING_BUF_SIZE 1024*100
  33 +static T_JZringHandle g_ringHandle;
  34 +static char *g_ringBuf = NULL;
  35 +
  36 +void OnOutput(AIKIT_HANDLE* handle, const AIKIT_OutputData* output)
  37 +{
  38 + T_JZsdkReturnCode ret;
  39 +
  40 + //检测数据生成标志位是否有关闭,如果有关闭,则主动关闭合成,并退出该事件
  41 + if (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_OFF)
  42 + {
  43 + IflytekLib_2_StopTts();
  44 + return;
  45 + }
  46 +
  47 + //如果存在数据,则播放
  48 + if (output->node->value)
  49 + {
  50 + //生产的文本数据 output->node->value
  51 + //生产的数据长度 output->node->len
  52 + //char类型
  53 +
  54 + //JZSDK_LOG_DEBUG("生产了数据%d", output->node->len);
  55 + printf("生产了数据%d\n", output->node->len);
  56 +
  57 + //将该数据发送到alsa播放器
  58 + //AudioDeal_PcmDataInput_TextSteam(16000, (unsigned char *)output->node->value, output->node->len);
  59 +
  60 +
  61 + while (1)
  62 + {
  63 + ret = JZring_Write(g_ringHandle, (U8_t *)output->node->value, (U32_t)output->node->len);
  64 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  65 + {
  66 + break;
  67 + }
  68 + }
  69 + }
  70 +
  71 +}
  72 +
  73 +void OnEvent(AIKIT_HANDLE* handle, AIKIT_EVENT eventType, const AIKIT_OutputEvent* eventValue) {
  74 + if (eventType == AIKIT_Event_End) {
  75 + ttsFinished = true;
  76 +
  77 + JZSDK_LOG_INFO("合成完成");
  78 + }
  79 +}
  80 +
  81 +void OnError(AIKIT_HANDLE* handle, int32_t err, const char* desc) {
  82 + printf("OnError:%d\n", err);
  83 +
  84 + //报错
  85 +}
  86 +
  87 +int IflytekLib_2_TextToTts(int language,
  88 + const char *TtsRole,
  89 + const char *text, int speed, int volume)
  90 +{
  91 +
  92 + AIKIT_ParamBuilder* paramBuilder = nullptr;
  93 + AIKIT_DataBuilder* dataBuilder = nullptr;
  94 + AiText* aiText_raw = nullptr;
  95 +
  96 +
  97 + // 重置完成标志
  98 + ttsFinished = false;
  99 +
  100 + paramBuilder = AIKIT_ParamBuilder::create();
  101 + paramBuilder->clear();
  102 + // 设置发音人
  103 + paramBuilder->param("vcn", TtsRole, strlen(TtsRole));
  104 + paramBuilder->param("vcnModel", TtsRole, strlen(TtsRole));
  105 + // 设置语种
  106 + paramBuilder->param("language", language);
  107 + // 设置文本编码
  108 + paramBuilder->param("textEncoding", "UTF-8", strlen("UTF-8"));
  109 +
  110 + //语速
  111 + //paramBuilder->param("speed",speed); //可选参数,默认为0
  112 +
  113 + //音调
  114 + //paramBuilder->param("pitch",100); //可选参数,默认为0
  115 +
  116 + //声音
  117 + //paramBuilder->param("volume",100);//可选参数,默认为0
  118 +
  119 + //JZSDK_LOG_DEBUG("TTS Role:%s Len:%d, Text:%s Len:%d, language:%d", TtsRole, strlen(TtsRole), text, strlen(text), language);
  120 +
  121 + int ret = AIKIT_Start(ABILITY, AIKIT_Builder::build(paramBuilder), nullptr, &g_AikitHandle);
  122 + if(ret != 0) {
  123 + printf("AIKIT_Start failed: %d\n", ret);
  124 + goto exit;
  125 + }
  126 +
  127 + dataBuilder = AIKIT_DataBuilder::create();
  128 + dataBuilder->clear();
  129 + //aiText_raw = AiText::get("text")->data(text.c_str(), text.length())->once()->valid();
  130 + aiText_raw = AiText::get("text")->data(text, strlen(text) )->once()->valid();
  131 + dataBuilder->payload(aiText_raw);
  132 +
  133 + ret = AIKIT_Write(g_AikitHandle, AIKIT_Builder::build(dataBuilder));
  134 + if(ret != 0) {
  135 + printf("AIKIT_Write failed: %d\n", ret);
  136 + goto exit;
  137 + }
  138 +
  139 + // 等待合成完成
  140 + while(!ttsFinished) {
  141 + usleep(1000);
  142 + }
  143 +
  144 + //JZSDK_LOG_INFO("合成完成");
  145 +
  146 + ret = AIKIT_End(g_AikitHandle);
  147 +
  148 +exit:
  149 + if(paramBuilder != nullptr) {
  150 + delete paramBuilder;
  151 + }
  152 + if(dataBuilder != nullptr) {
  153 + delete dataBuilder;
  154 + }
  155 +}
  156 +
  157 +
  158 +
  159 +
  160 +
  161 +
  162 +
  163 +
  164 +
  165 +
  166 +
  167 +int IflytekLib_2_Init()
  168 +{
  169 + //初始化环形缓冲区数组
  170 + g_ringBuf = (char *)malloc(IFLYTEK_RING_BUF_SIZE * sizeof(char));
  171 + JZring_Init(&g_ringHandle, g_ringBuf, IFLYTEK_RING_BUF_SIZE);
  172 +
  173 + AIKIT_Configurator::builder()
  174 + .app()
  175 + .appID("03857dfd")
  176 + .apiSecret("OTA2OTEzMTVlOGYwMjllMmJkYzEwZGY5")
  177 + .apiKey("2b2c60f8a80b8cdfe45ae1058a25149a")
  178 + .workDir("/root/Iflytek_2")
  179 + .auth()
  180 + .authType(0)
  181 + .log()
  182 + .logLevel(LOG_LVL_OFF) //关闭日志打印
  183 + .logMode(LOG_STDOUT); //日志输出为控制台
  184 +
  185 + int ret = AIKIT_Init();
  186 + if(ret != 0) {
  187 + printf("AIKIT_Init failed: %d\n", ret);
  188 + return -1;
  189 + }
  190 +
  191 + AIKIT_Callbacks cbs = {OnOutput, OnEvent, OnError};
  192 + AIKIT_RegisterAbilityCallback(ABILITY, cbs);
  193 +
  194 + return 0;
  195 +}
  196 +
  197 +int IflytekLib_2_UnInit()
  198 +{
  199 + AIKIT_UnInit();
  200 + return 0;
  201 +}
  202 +
  203 +static int IflytekLib_2_StopTts()
  204 +{
  205 + AIKIT_OutputEvent eventData = {};
  206 + if (g_AikitHandle != nullptr)
  207 + {
  208 + OnEvent(g_AikitHandle,AIKIT_Event_End,&eventData);
  209 + }
  210 +
  211 + return 0;
  212 +}
  213 +
  214 +#endif
@@ -104,8 +104,8 @@ extern "C" { @@ -104,8 +104,8 @@ extern "C" {
104 #define MAX_TTS_VOLUME (82) 104 #define MAX_TTS_VOLUME (82)
105 105
106 #elif DEVICE_VERSION == JZ_T40 106 #elif DEVICE_VERSION == JZ_T40
107 - #define MAX_VOLUME (100)  
108 - #define MAX_TTS_VOLUME (100) 107 + #define MAX_VOLUME (63)
  108 + #define MAX_TTS_VOLUME (70)
109 109
110 #else 110 #else
111 #define MAX_VOLUME (75) 111 #define MAX_VOLUME (75)
@@ -100,7 +100,7 @@ static T_JZsdkReturnCode FixedFilePlay() @@ -100,7 +100,7 @@ static T_JZsdkReturnCode FixedFilePlay()
100 nbBytes = fread(cbits, 1, 3 * 1276, PlayFixedFile_pcm_fp); 100 nbBytes = fread(cbits, 1, 3 * 1276, PlayFixedFile_pcm_fp);
101 if(nbBytes > 0) 101 if(nbBytes > 0)
102 { 102 {
103 - AudioDeal_PcmDataInput(g_opus_sampleRate, (unsigned char *)cbits, nbBytes, 1); 103 + AudioDeal_PcmDataInput_RecordSteam(g_opus_sampleRate, (unsigned char *)cbits, nbBytes);
104 } 104 }
105 105
106 int totalSamples = nbBytes / (2); 106 int totalSamples = nbBytes / (2);
@@ -68,6 +68,9 @@ static T_JZsdkReturnCode Opus_RealTimeVoiceInit(int decode_rate) @@ -68,6 +68,9 @@ static T_JZsdkReturnCode Opus_RealTimeVoiceInit(int decode_rate)
68 ReadTimeVoice_StatusFlag = JZ_FLAGCODE_ON; 68 ReadTimeVoice_StatusFlag = JZ_FLAGCODE_ON;
69 RealTimeDecodeRate = decode_rate; 69 RealTimeDecodeRate = decode_rate;
70 70
  71 + //将音频库里的回音抑制开了
  72 + AudioDeal_EchoCancellation_Init(decode_rate);
  73 +
71 //2、创建线程输入缓冲池线程 74 //2、创建线程输入缓冲池线程
72 ret = Opus_RealTimeVoice_WriteData_init(); 75 ret = Opus_RealTimeVoice_WriteData_init();
73 if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) 76 if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
@@ -225,7 +228,7 @@ static T_JZsdkReturnCode Opus_RealTimeVoice_PlayData(unsigned char *data,int len @@ -225,7 +228,7 @@ static T_JZsdkReturnCode Opus_RealTimeVoice_PlayData(unsigned char *data,int len
225 pcm_bytes[2 * i + 1] = (TempPcm[i] >> 8) & 0xFF; 228 pcm_bytes[2 * i + 1] = (TempPcm[i] >> 8) & 0xFF;
226 } 229 }
227 230
228 - AudioDeal_PcmDataInput(RealTimeDecodeRate, pcm_bytes, frame_size*2, 1); 231 + AudioDeal_PcmDataInput_RealTimeSteam(RealTimeDecodeRate, pcm_bytes, frame_size*2);
229 232
230 if (decodeErrorFlag == JZ_FLAGCODE_ON) 233 if (decodeErrorFlag == JZ_FLAGCODE_ON)
231 { 234 {
@@ -119,7 +119,8 @@ T_JZsdkReturnCode SearchLight_SetBrightness(int left, int right, int FlushTempLu @@ -119,7 +119,8 @@ T_JZsdkReturnCode SearchLight_SetBrightness(int left, int right, int FlushTempLu
119 119
120 #elif (DEVICE_VERSION == JZ_T40) 120 #elif (DEVICE_VERSION == JZ_T40)
121 121
122 - HalSend_type1Send_SearchLight_SetLumen(UART_DEV_2, left, right, 0x20); 122 + int lumen = MAX(left, right);
  123 + HalSend_type1Send_SearchLight_SetSingleLumem(UART_DEV_2, lumen, 0x20);
123 124
124 #elif (DEVICE_VERSION == JZ_H1T) 125 #elif (DEVICE_VERSION == JZ_H1T)
125 126
@@ -237,7 +238,7 @@ T_JZsdkReturnCode SearchLight_Get_SearchLightAttribute(T_JzSearchLightAttribute @@ -237,7 +238,7 @@ T_JZsdkReturnCode SearchLight_Get_SearchLightAttribute(T_JzSearchLightAttribute
237 * ********************/ 238 * ********************/
238 T_JZsdkReturnCode SearchLight_Flush_SearchLightAttribute() 239 T_JZsdkReturnCode SearchLight_Flush_SearchLightAttribute()
239 { 240 {
240 -#if DEVISE_VERSION == JZ_H1T 241 +#if DEVICE_VERSION == JZ_H1T
241 242
242 HalSend_type1Send_CheckStatus_SearchLight_Attribute(UART_DEV_1); 243 HalSend_type1Send_CheckStatus_SearchLight_Attribute(UART_DEV_1);
243 #endif 244 #endif
@@ -252,7 +253,7 @@ T_JZsdkReturnCode SearchLight_Flush_SearchLightAttribute() @@ -252,7 +253,7 @@ T_JZsdkReturnCode SearchLight_Flush_SearchLightAttribute()
252 * *************/ 253 * *************/
253 T_JZsdkReturnCode SearchLight_Flush_SearchLightTemerature() 254 T_JZsdkReturnCode SearchLight_Flush_SearchLightTemerature()
254 { 255 {
255 -#if DEVISE_VERSION == JZ_H1T 256 +#if DEVICE_VERSION == JZ_H1T
256 257
257 HalSend_type1Send_CheckStatus_SearchLight_Temperture(UART_DEV_1); 258 HalSend_type1Send_CheckStatus_SearchLight_Temperture(UART_DEV_1);
258 #endif 259 #endif
@@ -48,4 +48,9 @@ T_JZsdkReturnCode SearchLight_Obtain_Frequency(int Frequency); @@ -48,4 +48,9 @@ T_JZsdkReturnCode SearchLight_Obtain_Frequency(int Frequency);
48 T_JZsdkReturnCode SearchLight_Obtain_Brightness(int left, int right); 48 T_JZsdkReturnCode SearchLight_Obtain_Brightness(int left, int right);
49 T_JZsdkReturnCode SearchLight_Obtain_Mode(E_JzSearchLightMode mode); 49 T_JZsdkReturnCode SearchLight_Obtain_Mode(E_JzSearchLightMode mode);
50 50
  51 +T_JZsdkReturnCode JZsdk_SearchLight_SetMessageSubFlag(int InputFlag);
  52 +int JZsdk_SearchLight_GetMessageSubFlag(void);
  53 +
  54 +T_JZsdkReturnCode SearchLight_Init(enum JZ_MODULE_CONTROL_WAY Mode);
  55 +
51 #endif 56 #endif
@@ -94,7 +94,7 @@ static int JZsdk_SearchLightGetLimitTemp(int DeviceMode) @@ -94,7 +94,7 @@ static int JZsdk_SearchLightGetLimitTemp(int DeviceMode)
94 break; 94 break;
95 95
96 case JZ_T40: 96 case JZ_T40:
97 - return 70; 97 + return 65;
98 break; 98 break;
99 99
100 default: 100 default:
@@ -13,8 +13,6 @@ @@ -13,8 +13,6 @@
13 #include "./SearchLightTemControl.h" 13 #include "./SearchLightTemControl.h"
14 #include "../SearchLight.h" 14 #include "../SearchLight.h"
15 15
16 -#include "Lighting_InAndOut.h"  
17 -  
18 static int g_InputTemp = 0; //全局输入温度 16 static int g_InputTemp = 0; //全局输入温度
19 static int g_InputLumen = 0; //全局输入亮度 17 static int g_InputLumen = 0; //全局输入亮度
20 static int g_OutputLumen = 0; //温控线程返回来的亮度 18 static int g_OutputLumen = 0; //温控线程返回来的亮度
@@ -124,7 +122,7 @@ static void *TempControl_TempTask(void *arg) @@ -124,7 +122,7 @@ static void *TempControl_TempTask(void *arg)
124 if (light_mode != JZ_FLAGCODE_OFF) 122 if (light_mode != JZ_FLAGCODE_OFF)
125 { 123 {
126 //重设亮度 124 //重设亮度
127 - UIcontrol_Set_SearchLightLumen(NO_SPECIFIED, 0, Lumen, Lumen); 125 + UIcontrol_Set_SearchLightLumen(NO_SPECIFIED, JZ_FLAGCODE_OFF, Lumen, Lumen);
128 } 126 }
129 127
130 } 128 }
@@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
7 #include "Ircut/ircut.h" 7 #include "Ircut/ircut.h"
8 #include "SideLaser/SideLaser.h" 8 #include "SideLaser/SideLaser.h"
9 9
  10 +#include "Hal_Send/HalSend.h"
10 11
11 static T_JZsdkReturnCode SideLaser_RealCotrol(int LaserNum, int status); 12 static T_JZsdkReturnCode SideLaser_RealCotrol(int LaserNum, int status);
12 13
@@ -20,13 +21,18 @@ static int g_SideLaserControl = JZ_FLAGCODE_OFF; @@ -20,13 +21,18 @@ static int g_SideLaserControl = JZ_FLAGCODE_OFF;
20 static int SideLaser_Frequency = 50; //1~100 21 static int SideLaser_Frequency = 50; //1~100
21 22
22 23
  24 +
  25 +
23 static void *SideLaserControl_task(void *arg) 26 static void *SideLaserControl_task(void *arg)
24 { 27 {
25 int status = JZ_FLAGCODE_OFF; 28 int status = JZ_FLAGCODE_OFF;
26 static T_SideLaserMode Last_LaserMode = SIDE_LASER_OFF; 29 static T_SideLaserMode Last_LaserMode = SIDE_LASER_OFF;
27 30
  31 +
  32 +#if DEVICE_VERSION == JZ_U3S
28 while (1) 33 while (1)
29 { 34 {
  35 +
30 switch (g_SideLaser_RealMode) 36 switch (g_SideLaser_RealMode)
31 { 37 {
32 case SIDE_LASER_OFF: 38 case SIDE_LASER_OFF:
@@ -149,8 +155,34 @@ static void *SideLaserControl_task(void *arg) @@ -149,8 +155,34 @@ static void *SideLaserControl_task(void *arg)
149 } 155 }
150 156
151 delayMs(10); 157 delayMs(10);
  158 +
  159 +
  160 + }
  161 +#endif
  162 +
  163 +#if DEVICE_VERSION == JZ_T40
  164 + while(1)
  165 + {
  166 + if (Last_LaserMode != g_SideLaser_RealMode)
  167 + {
  168 + Last_LaserMode = g_SideLaser_RealMode;
  169 +
  170 + if (g_SideLaser_RealMode == SIDE_LASER_OFF)
  171 + {
  172 + HalSend_type1Send_SetLaserControl(UART_DEV_2, 0x20 ,JZ_FLAGCODE_OFF);
  173 + }
  174 + else
  175 + {
  176 + int mode = g_SideLaser_RealMode - 1;
  177 + HalSend_type1Send_SetLaserControl(UART_DEV_2, 0x20 ,JZ_FLAGCODE_ON);
  178 + HalSend_type1Send_SetLaserMode(UART_DEV_2, 0x20, mode);
  179 + }
  180 +
  181 + }
  182 +
152 } 183 }
153 184
  185 +#endif
154 } 186 }
155 187
156 /************************************ 188 /************************************
  1 +#include "Psdk_To_UI.h"
  2 +#include "JZsdkLib.h"
  3 +#include "UI_control/Psdk_Ui.h"
  4 +#include "UI_control/UI_control.h"
  5 +
  6 +#include "version_choose.h"
  7 +
  8 +T_JZsdkReturnCode JZsdk_PsdkToUi_PlayLastSong()
  9 +{
  10 + //1、将播放上一首歌曲的命令发送到UIcontrol
  11 + UIcontrol_LastSong(DEVICE_PSDK);
  12 +
  13 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  14 +}
  15 +
  16 +T_JZsdkReturnCode JZsdk_PsdkToUi_PlayNextSong()
  17 +{
  18 + //1、将播放下一首歌曲的命令发送到UIcontrol
  19 + UIcontrol_NextSong(DEVICE_PSDK);
  20 +
  21 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  22 +}
  23 +
  24 +T_JZsdkReturnCode JZsdk_PsdkToUi_SetVolume(int volume)
  25 +{
  26 + //1、将volume传递到所有的psdk ui (因为psdk有两个音量ui)
  27 + JZsdk_UI_value_set(JZSDK_WIDGET_VOLUME, volume);
  28 +
  29 + //2、将音量控制值发送到UIcontrol 用于控制设备
  30 + UIcontrol_SetVolume(DEVICE_PSDK, volume, JZ_FLAGCODE_ON);
  31 +
  32 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  33 +}
@@ -87,6 +87,7 @@ static T_JZsdkReturnCode UI_control_WidgetArraySet(int index, int value) @@ -87,6 +87,7 @@ static T_JZsdkReturnCode UI_control_WidgetArraySet(int index, int value)
87 T_JZsdkToPsdkHandler *handle = ExpansionApi_JZsdkToPsdk_GetHandler(); 87 T_JZsdkToPsdkHandler *handle = ExpansionApi_JZsdkToPsdk_GetHandler();
88 if (handle != NULL && handle->Set_UI_Widget_Value != NULL) 88 if (handle != NULL && handle->Set_UI_Widget_Value != NULL)
89 { 89 {
  90 + //将控件值设置到psdk的ui控件
90 handle->Set_UI_Widget_Value(index, value); 91 handle->Set_UI_Widget_Value(index, value);
91 } 92 }
92 } 93 }
  1 +#include "Psdk_Ui.h"
  2 +#include "JZsdkLib.h"
  3 +#include "ExtensionAPI/JZsdk_ExpansionApi.h"
  4 +
  5 +
  6 +/****************
  7 + *
  8 + * 控件设置
  9 + *
  10 + * *************/
  11 +static T_JZsdkReturnCode UI_control_WidgetArraySet(int index, int value)
  12 +{
  13 + T_JZsdkToPsdkHandler *handle = ExpansionApi_JZsdkToPsdk_GetHandler();
  14 + if (handle != NULL && handle->Set_UI_Widget_Value != NULL)
  15 + {
  16 + //将控件值设置到psdk的ui控件
  17 + handle->Set_UI_Widget_Value(index, value);
  18 + }
  19 +}
  20 +
  21 +
  22 +/****************
  23 + *
  24 + * 二级控件设置
  25 + *
  26 + * *************/
  27 +static T_JZsdkReturnCode UI_control_SecondaryWidgetArraySet(int type, int value)
  28 +{
  29 + T_JZsdkToPsdkHandler *handle = ExpansionApi_JZsdkToPsdk_GetHandler();
  30 + if (handle == NULL)
  31 + {
  32 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  33 + }
  34 +
  35 + switch (type)
  36 + {
  37 +
  38 + case PSDK_UI_SECONDARY_WIDGET_PLAYSTATUS:
  39 + if (handle->Set_UI_SpeakerWidget_PlayState != NULL)
  40 + {
  41 + return handle->Set_UI_SpeakerWidget_PlayState(value);
  42 + }
  43 + break;
  44 +
  45 + case PSDK_UI_SECONDARY_WIDGET_LOOPPLAY:
  46 + if (handle->Set_UI_SpeakerWidget_LoopMode != NULL)
  47 + {
  48 + return handle->Set_UI_SpeakerWidget_LoopMode(value);
  49 + }
  50 + break;
  51 +
  52 + case JZSDK_WIDGET_VOLUME://音量
  53 + if (handle->Set_UI_SpeakerWidget_Volume != NULL)
  54 + {
  55 + return handle->Set_UI_SpeakerWidget_Volume(value);
  56 + }
  57 + break;
  58 +
  59 +
  60 + default:
  61 + break;
  62 + }
  63 +}
  64 +
  65 +static T_JZsdkReturnCode JZsdk_UI_DJIpsdk_Widget_set(JZsdk_Widget_Control index, int value)
  66 +{
  67 + switch (index)
  68 + {
  69 + case JZSDK_WIDGET_VOLUME:
  70 + {
  71 + //1、大疆音量控件需要去设置喊话器控件内的音量
  72 + UI_control_WidgetArraySet(3, value);
  73 + UI_control_WidgetArraySet(4, value);
  74 +
  75 + //2、大疆音量控件需要去设置悬浮窗的音量
  76 + UI_control_SecondaryWidgetArraySet(JZSDK_WIDGET_VOLUME, value);
  77 + }
  78 + break;
  79 +
  80 + default:
  81 + break;
  82 + }
  83 +}
  84 +T_JZsdkReturnCode JZsdk_UI_value_set(JZsdk_Widget_Control index, int value)
  85 +{
  86 + JZsdk_UI_DJIpsdk_Widget_set(index, value);
  87 +}
1 /** 1 /**
2 ******************************************************************** 2 ********************************************************************
3 - * @file WarningLight_V3S.h  
4 - * WarningLight_V3S的头文件 3 + * @file Psdk_Ui.h
  4 + * Psdk_Ui的头文件
5 * 5 *
6 ********************************************************************* 6 *********************************************************************
7 */ 7 */
8 8
9 /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ 9 /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
10 -#ifndef WARNINGLIGHT_V3S_H  
11 -#define WARNINGLIGHT_V3S_H 10 +#ifndef PSDK_UI_H
  11 +#define PSDK_UI_H
12 12
13 /* Includes ------------------------------------------------------------------*/ 13 /* Includes ------------------------------------------------------------------*/
14 -#include "./WarningLight_V3S_H1T/WarningLight_V3S_H1T.h"  
15 -#include "./WarningLight_V3S_TFA1/WarningLight_V3S_TFA1.h"  
16 - 14 +#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
  15 +#include "UI_control/WidegMgmt/JZsdk_WidgetIndex.h"
17 16
18 #ifdef __cplusplus 17 #ifdef __cplusplus
19 extern "C" { 18 extern "C" {
20 #endif 19 #endif
21 20
22 /* Exported constants --------------------------------------------------------*/ 21 /* Exported constants --------------------------------------------------------*/
23 -/* 常亮定义*/  
24 22
  23 +/* 常亮定义*/
25 24
26 /* Exported types ------------------------------------------------------------*/ 25 /* Exported types ------------------------------------------------------------*/
27 26
28 /* Exported functions --------------------------------------------------------*/ 27 /* Exported functions --------------------------------------------------------*/
  28 +T_JZsdkReturnCode JZsdk_UI_value_set(JZsdk_Widget_Control index, int value);
29 29
30 30
31 #ifdef __cplusplus 31 #ifdef __cplusplus
@@ -4,7 +4,6 @@ @@ -4,7 +4,6 @@
4 #include "BaseConfig.h" 4 #include "BaseConfig.h"
5 5
6 #include "Megaphone/Megaphone.h" 6 #include "Megaphone/Megaphone.h"
7 -#include "Lighting_InAndOut.h"  
8 #include "Gimbal/Gimbal.h" 7 #include "Gimbal/Gimbal.h"
9 #include "Psdk_UI_io.h" 8 #include "Psdk_UI_io.h"
10 #include "ircut.h" 9 #include "ircut.h"
@@ -33,6 +32,10 @@ @@ -33,6 +32,10 @@
33 #include "SearchLight/SearchLight.h" 32 #include "SearchLight/SearchLight.h"
34 #endif 33 #endif
35 34
  35 +#ifdef WARNLIGHT_STATUS_ON
  36 + #include "WarnLight/WarnLight.h"
  37 +#endif
  38 +
36 static char *UI_CONTROL_ERROR = "ui_control处错误"; 39 static char *UI_CONTROL_ERROR = "ui_control处错误";
37 40
38 /******************************************************************************************************** 41 /********************************************************************************************************
@@ -1138,7 +1141,7 @@ T_JZsdkReturnCode UIcontrol_Obtain_GimbalLinkage(int DeviceName, int GimbalLinka @@ -1138,7 +1141,7 @@ T_JZsdkReturnCode UIcontrol_Obtain_GimbalLinkage(int DeviceName, int GimbalLinka
1138 **********/ 1141 **********/
1139 T_JZsdkReturnCode UIcontrol_Set_SearchLightFrequency(int DeviceName,int value) 1142 T_JZsdkReturnCode UIcontrol_Set_SearchLightFrequency(int DeviceName,int value)
1140 { 1143 {
1141 -#ifdef LIGHTING_STATUS_ON 1144 +#ifdef SEARCHLIGHT_STATUS_ON
1142 //调用探照灯的接口 1145 //调用探照灯的接口
1143 T_JZsdkReturnCode ret = SearchLight_SetFrequency(value); 1146 T_JZsdkReturnCode ret = SearchLight_SetFrequency(value);
1144 if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) 1147 if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
@@ -1188,7 +1191,7 @@ T_JZsdkReturnCode UIcontrol_Set_SearchLightFrequency(int DeviceName,int value) @@ -1188,7 +1191,7 @@ T_JZsdkReturnCode UIcontrol_Set_SearchLightFrequency(int DeviceName,int value)
1188 **********/ 1191 **********/
1189 T_JZsdkReturnCode UIcontrol_SearchLightControl(int DeviceName, int value) 1192 T_JZsdkReturnCode UIcontrol_SearchLightControl(int DeviceName, int value)
1190 { 1193 {
1191 -#ifdef LIGHTING_STATUS_ON 1194 +#ifdef SEARCHLIGHT_STATUS_ON
1192 //调用探照灯的灯光模式接口 1195 //调用探照灯的灯光模式接口
1193 T_JZsdkReturnCode ret = SearchLight_SetMode(value); 1196 T_JZsdkReturnCode ret = SearchLight_SetMode(value);
1194 if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) 1197 if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
@@ -1238,7 +1241,7 @@ T_JZsdkReturnCode UIcontrol_SearchLightControl(int DeviceName, int value) @@ -1238,7 +1241,7 @@ T_JZsdkReturnCode UIcontrol_SearchLightControl(int DeviceName, int value)
1238 **********/ 1241 **********/
1239 T_JZsdkReturnCode UIcontrol_Set_SearchLightLumen(int DeviceName, int WeatherFlush, int value1, int value2) 1242 T_JZsdkReturnCode UIcontrol_Set_SearchLightLumen(int DeviceName, int WeatherFlush, int value1, int value2)
1240 { 1243 {
1241 -#ifdef LIGHTING_STATUS_ON 1244 +#ifdef SEARCHLIGHT_STATUS_ON
1242 //检查是否合法 1245 //检查是否合法
1243 if (value1 >= 100) 1246 if (value1 >= 100)
1244 { 1247 {
@@ -1271,24 +1274,24 @@ T_JZsdkReturnCode UIcontrol_Set_SearchLightLumen(int DeviceName, int WeatherFlus @@ -1271,24 +1274,24 @@ T_JZsdkReturnCode UIcontrol_Set_SearchLightLumen(int DeviceName, int WeatherFlus
1271 //获取探照灯属性 1274 //获取探照灯属性
1272 T_JzSearchLightAttribute LightAttribute; 1275 T_JzSearchLightAttribute LightAttribute;
1273 SearchLight_Get_SearchLightAttribute(&LightAttribute); 1276 SearchLight_Get_SearchLightAttribute(&LightAttribute);
1274 - int LeftLumen = LightAttribute.LeftBrightness;  
1275 - int RightLumen = LightAttribute.RightBrightness; 1277 + int LeftTemp = LightAttribute.LeftTemperature;
  1278 + int RightTemp = LightAttribute.RightTemperature;
1276 1279
1277 //通知其他设备的ui界面变化 1280 //通知其他设备的ui界面变化
1278 //如果4G模块有启动 1281 //如果4G模块有启动
1279 if ((JZsdk_HalPort_UseFlag(UART_4G) == JZ_FLAGCODE_ON) && (DeviceName != UART_4G) ) 1282 if ((JZsdk_HalPort_UseFlag(UART_4G) == JZ_FLAGCODE_ON) && (DeviceName != UART_4G) )
1280 { 1283 {
1281 - HalSend_type1Send_SearchLight_Lumen(UART_4G, LeftLumen, RightLumen); 1284 + HalSend_type1Send_SearchLight_Lumen(UART_4G, LeftTemp, RightTemp);
1282 } 1285 }
1283 //如果设备1有启动 1286 //如果设备1有启动
1284 if ( (JZsdk_HalPort_UseFlag(UART_DEV_1) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_1) ) 1287 if ( (JZsdk_HalPort_UseFlag(UART_DEV_1) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_1) )
1285 { 1288 {
1286 - HalSend_type1Send_SearchLight_Lumen(UART_DEV_1, LeftLumen, RightLumen); 1289 + HalSend_type1Send_SearchLight_Lumen(UART_DEV_1, LeftTemp, RightTemp);
1287 } 1290 }
1288 //如果设备2有启动 1291 //如果设备2有启动
1289 if ( (JZsdk_HalPort_UseFlag(UART_DEV_2) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_2) ) 1292 if ( (JZsdk_HalPort_UseFlag(UART_DEV_2) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_2) )
1290 { 1293 {
1291 - HalSend_type1Send_SearchLight_Lumen(UART_DEV_2, LeftLumen, RightLumen); 1294 + HalSend_type1Send_SearchLight_Lumen(UART_DEV_2, LeftTemp, RightTemp);
1292 } 1295 }
1293 //如果psdk接口已经使用 1296 //如果psdk接口已经使用
1294 if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 1297 if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
@@ -1305,12 +1308,26 @@ T_JZsdkReturnCode UIcontrol_Set_SearchLightLumen(int DeviceName, int WeatherFlus @@ -1305,12 +1308,26 @@ T_JZsdkReturnCode UIcontrol_Set_SearchLightLumen(int DeviceName, int WeatherFlus
1305 * 查询灯光属性 1308 * 查询灯光属性
1306 * 1309 *
1307 **********/ 1310 **********/
1308 -T_JZsdkReturnCode UIcontrol_FlushSearchLightLightAttribute() 1311 +T_JZsdkReturnCode UIcontrol_CheckStatus_SearchLightLightAttribute(int *ValueLeftLumen, int *ValueRightLumen, int *ValueMode, int *ValueFrequency)
1309 { 1312 {
1310 #ifdef SEARCHLIGHT_STATUS_ON 1313 #ifdef SEARCHLIGHT_STATUS_ON
1311 1314
  1315 + //刷新探照灯属性
1312 SearchLight_Flush_SearchLightAttribute(); 1316 SearchLight_Flush_SearchLightAttribute();
1313 1317
  1318 + T_JzSearchLightAttribute LightAttribute;
  1319 + T_JZsdkReturnCode ret = SearchLight_Get_SearchLightAttribute(&LightAttribute);
  1320 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  1321 + {
  1322 + printf("%s:%s\n",UI_CONTROL_ERROR,JZsdk_GetReturnCodeMessage(ret));
  1323 + return ret;
  1324 + }
  1325 +
  1326 + *ValueLeftLumen = LightAttribute.LeftBrightness;
  1327 + *ValueRightLumen = LightAttribute.RightBrightness;
  1328 + *ValueMode = LightAttribute.Mode;
  1329 + *ValueFrequency = LightAttribute.Frequency;
  1330 +
1314 #endif 1331 #endif
1315 } 1332 }
1316 1333
@@ -1346,7 +1363,7 @@ T_JZsdkReturnCode UIcontrol_CheckStatus_SearchLightTemperture(int *ValueLeftTemp @@ -1346,7 +1363,7 @@ T_JZsdkReturnCode UIcontrol_CheckStatus_SearchLightTemperture(int *ValueLeftTemp
1346 ******************/ 1363 ******************/
1347 T_JZsdkReturnCode UIcontrol_Set_SearchLight_MessageSubscribe(int DeviceName, int value) 1364 T_JZsdkReturnCode UIcontrol_Set_SearchLight_MessageSubscribe(int DeviceName, int value)
1348 { 1365 {
1349 -#ifdef LIGHTING_STATUS_ON 1366 +#ifdef SEARCHLIGHT_STATUS_ON
1350 1367
1351 //调用探照灯的接口 1368 //调用探照灯的接口
1352 T_JZsdkReturnCode ret = JZsdk_SearchLight_SetMessageSubFlag(value); 1369 T_JZsdkReturnCode ret = JZsdk_SearchLight_SetMessageSubFlag(value);
@@ -1362,9 +1379,9 @@ T_JZsdkReturnCode UIcontrol_Set_SearchLight_MessageSubscribe(int DeviceName, int @@ -1362,9 +1379,9 @@ T_JZsdkReturnCode UIcontrol_Set_SearchLight_MessageSubscribe(int DeviceName, int
1362 //设置警灯状态 1379 //设置警灯状态
1363 T_JZsdkReturnCode UIcontrol_Set_WarningLight_ModeControl(int DeviceName, int value1, int value2) 1380 T_JZsdkReturnCode UIcontrol_Set_WarningLight_ModeControl(int DeviceName, int value1, int value2)
1364 { 1381 {
1365 -#ifdef LIGHTING_STATUS_ON 1382 +#ifdef WARNLIGHT_STATUS_ON
1366 //调用探照灯的接口 1383 //调用探照灯的接口
1367 - T_JZsdkReturnCode ret = Lighting_Set_WarningLight_Status(value1, value2); 1384 + T_JZsdkReturnCode ret = WarnLight_Set_StatusAndMode(value1, value2);
1368 if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) 1385 if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
1369 { 1386 {
1370 printf("%s:%s\n",UI_CONTROL_ERROR,JZsdk_GetReturnCodeMessage(ret)); 1387 printf("%s:%s\n",UI_CONTROL_ERROR,JZsdk_GetReturnCodeMessage(ret));
@@ -1373,25 +1390,25 @@ T_JZsdkReturnCode UIcontrol_Set_WarningLight_ModeControl(int DeviceName, int val @@ -1373,25 +1390,25 @@ T_JZsdkReturnCode UIcontrol_Set_WarningLight_ModeControl(int DeviceName, int val
1373 1390
1374 delayMs(10); 1391 delayMs(10);
1375 1392
1376 - //获取当前警灯状态  
1377 - int status, mode;  
1378 - Lighting_Get_WarningLight_Status(&status, &mode); 1393 + //获取当前警灯属性
  1394 + T_JzWarnLightAttribute LightAttribute;
  1395 + WarnLight_Get_Attribute(&LightAttribute);
1379 1396
1380 //通知其他设备的ui界面变化 1397 //通知其他设备的ui界面变化
1381 //如果4G模块有启动 1398 //如果4G模块有启动
1382 if ((JZsdk_HalPort_UseFlag(UART_4G) == JZ_FLAGCODE_ON) && (DeviceName != UART_4G) ) 1399 if ((JZsdk_HalPort_UseFlag(UART_4G) == JZ_FLAGCODE_ON) && (DeviceName != UART_4G) )
1383 { 1400 {
1384 - HalSend_type1Send_WarningLight_Status(UART_4G, status, mode); 1401 + HalSend_type1Send_WarningLight_Status(UART_4G, LightAttribute.status, LightAttribute.mode);
1385 } 1402 }
1386 //如果设备1有启动 1403 //如果设备1有启动
1387 if ( (JZsdk_HalPort_UseFlag(UART_DEV_1) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_1) ) 1404 if ( (JZsdk_HalPort_UseFlag(UART_DEV_1) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_1) )
1388 { 1405 {
1389 - HalSend_type1Send_WarningLight_Status(UART_DEV_1, status, mode); 1406 + HalSend_type1Send_WarningLight_Status(UART_DEV_1, LightAttribute.status, LightAttribute.mode);
1390 } 1407 }
1391 //如果设备2有启动 1408 //如果设备2有启动
1392 if ( (JZsdk_HalPort_UseFlag(UART_DEV_2) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_2) ) 1409 if ( (JZsdk_HalPort_UseFlag(UART_DEV_2) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_2) )
1393 { 1410 {
1394 - HalSend_type1Send_WarningLight_Status(UART_DEV_2, status, mode); 1411 + HalSend_type1Send_WarningLight_Status(UART_DEV_2, LightAttribute.status, LightAttribute.mode);
1395 } 1412 }
1396 //如果psdk接口已经使用 1413 //如果psdk接口已经使用
1397 if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 1414 if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
@@ -1407,9 +1424,9 @@ T_JZsdkReturnCode UIcontrol_Set_WarningLight_ModeControl(int DeviceName, int val @@ -1407,9 +1424,9 @@ T_JZsdkReturnCode UIcontrol_Set_WarningLight_ModeControl(int DeviceName, int val
1407 //设置警灯颜色 1424 //设置警灯颜色
1408 T_JZsdkReturnCode UIcontrol_Set_WarningLight_Color(int DeviceName, int value1, int value2) 1425 T_JZsdkReturnCode UIcontrol_Set_WarningLight_Color(int DeviceName, int value1, int value2)
1409 { 1426 {
1410 -#ifdef LIGHTING_STATUS_ON 1427 +#ifdef WARNLIGHT_STATUS_ON
1411 //调用探照灯的接口 1428 //调用探照灯的接口
1412 - T_JZsdkReturnCode ret = Lighting_Set_WarningLight_Color(value1, value2); 1429 + T_JZsdkReturnCode ret = WarnLight_Set_Color(value1, value2);
1413 if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) 1430 if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
1414 { 1431 {
1415 printf("%s:%s\n",UI_CONTROL_ERROR,JZsdk_GetReturnCodeMessage(ret)); 1432 printf("%s:%s\n",UI_CONTROL_ERROR,JZsdk_GetReturnCodeMessage(ret));
@@ -1418,25 +1435,25 @@ T_JZsdkReturnCode UIcontrol_Set_WarningLight_Color(int DeviceName, int value1, i @@ -1418,25 +1435,25 @@ T_JZsdkReturnCode UIcontrol_Set_WarningLight_Color(int DeviceName, int value1, i
1418 1435
1419 delayMs(10); 1436 delayMs(10);
1420 1437
1421 - //获取当前警灯颜色  
1422 - int color1, color2;  
1423 - Lighting_Get_WarningLight_Color(&color1, &color2); 1438 + //获取当前警灯属性
  1439 + T_JzWarnLightAttribute LightAttribute;
  1440 + WarnLight_Get_Attribute(&LightAttribute);
1424 1441
1425 //通知其他设备的ui界面变化 1442 //通知其他设备的ui界面变化
1426 //如果4G模块有启动 1443 //如果4G模块有启动
1427 if ((JZsdk_HalPort_UseFlag(UART_4G) == JZ_FLAGCODE_ON) && (DeviceName != UART_4G) ) 1444 if ((JZsdk_HalPort_UseFlag(UART_4G) == JZ_FLAGCODE_ON) && (DeviceName != UART_4G) )
1428 { 1445 {
1429 - HalSend_type1Send_WarningLight_Color(UART_4G, color1, color2); 1446 + HalSend_type1Send_WarningLight_Color(UART_4G, LightAttribute.Color1, LightAttribute.Color2);
1430 } 1447 }
1431 //如果设备1有启动 1448 //如果设备1有启动
1432 if ( (JZsdk_HalPort_UseFlag(UART_DEV_1) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_1) ) 1449 if ( (JZsdk_HalPort_UseFlag(UART_DEV_1) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_1) )
1433 { 1450 {
1434 - HalSend_type1Send_WarningLight_Color(UART_DEV_1, color1, color2); 1451 + HalSend_type1Send_WarningLight_Color(UART_DEV_1, LightAttribute.Color1, LightAttribute.Color2);
1435 } 1452 }
1436 //如果设备2有启动 1453 //如果设备2有启动
1437 if ( (JZsdk_HalPort_UseFlag(UART_DEV_2) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_2) ) 1454 if ( (JZsdk_HalPort_UseFlag(UART_DEV_2) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_2) )
1438 { 1455 {
1439 - HalSend_type1Send_WarningLight_Color(UART_DEV_2, color1, color2); 1456 + HalSend_type1Send_WarningLight_Color(UART_DEV_2, LightAttribute.Color1, LightAttribute.Color2);
1440 } 1457 }
1441 //如果psdk接口已经使用 1458 //如果psdk接口已经使用
1442 if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 1459 if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
@@ -1456,9 +1473,19 @@ T_JZsdkReturnCode UIcontrol_Set_WarningLight_Color(int DeviceName, int value1, i @@ -1456,9 +1473,19 @@ T_JZsdkReturnCode UIcontrol_Set_WarningLight_Color(int DeviceName, int value1, i
1456 **********/ 1473 **********/
1457 T_JZsdkReturnCode UIcontrol_CheckStatus_WarningLightStatus(int *ValueSwitch, int *ValueMode) 1474 T_JZsdkReturnCode UIcontrol_CheckStatus_WarningLightStatus(int *ValueSwitch, int *ValueMode)
1458 { 1475 {
1459 -#ifdef LIGHTING_STATUS_ON  
1460 - //获取本地的警灯状态,并主动刷新一次警灯状态  
1461 - Lighting_CheckStatus_WarningLightStatus(ValueSwitch, ValueMode); 1476 +#ifdef WARNLIGHT_STATUS_ON
  1477 +
  1478 + //去刷新一次警灯状态
  1479 + WarnLight_Flush_StatusAndMode();
  1480 +
  1481 + //获取警灯属性
  1482 + T_JzWarnLightAttribute LightAttribute;
  1483 + WarnLight_Get_Attribute(&LightAttribute);
  1484 +
  1485 + *ValueSwitch = LightAttribute.status;
  1486 + *ValueMode = LightAttribute.mode;
  1487 +
  1488 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
1462 #endif 1489 #endif
1463 } 1490 }
1464 1491
@@ -1469,9 +1496,20 @@ T_JZsdkReturnCode UIcontrol_CheckStatus_WarningLightStatus(int *ValueSwitch, int @@ -1469,9 +1496,20 @@ T_JZsdkReturnCode UIcontrol_CheckStatus_WarningLightStatus(int *ValueSwitch, int
1469 **********/ 1496 **********/
1470 T_JZsdkReturnCode UIcontrol_CheckStatus_WarningLightColor(int *ValueColor1, int *ValueColor2) 1497 T_JZsdkReturnCode UIcontrol_CheckStatus_WarningLightColor(int *ValueColor1, int *ValueColor2)
1471 { 1498 {
1472 -#ifdef LIGHTING_STATUS_ON  
1473 - //获取本地的警灯颜色,并主动刷新一次警灯颜色  
1474 - Lighting_CheckStatus_WarningLightColor(ValueColor1, ValueColor2); 1499 +#ifdef WARNLIGHT_STATUS_ON
  1500 +
  1501 + //去刷新一次警灯颜色
  1502 + WarnLight_Flush_StatusAndMode();
  1503 +
  1504 + //获取警灯属性
  1505 + T_JzWarnLightAttribute LightAttribute;
  1506 + WarnLight_Get_Attribute(&LightAttribute);
  1507 +
  1508 + *ValueColor1 = LightAttribute.Color1;
  1509 + *ValueColor2 = LightAttribute.Color2;
  1510 +
  1511 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  1512 +
1475 #endif 1513 #endif
1476 } 1514 }
1477 1515
@@ -1603,7 +1641,7 @@ T_JZsdkReturnCode UIcontrol_CheckStatus_OutPutPowerValue(int *Value) @@ -1603,7 +1641,7 @@ T_JZsdkReturnCode UIcontrol_CheckStatus_OutPutPowerValue(int *Value)
1603 **********/ 1641 **********/
1604 T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Frequency(int DeviceName, int Frequency) 1642 T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Frequency(int DeviceName, int Frequency)
1605 { 1643 {
1606 -#ifdef LIGHTING_STATUS_ON 1644 +#ifdef SEARCHLIGHT_STATUS_ON
1607 //1、设置本地存储值 1645 //1、设置本地存储值
1608 SearchLight_Obtain_Frequency(Frequency); 1646 SearchLight_Obtain_Frequency(Frequency);
1609 1647
@@ -1639,7 +1677,7 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Frequency(int DeviceName, int Freq @@ -1639,7 +1677,7 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Frequency(int DeviceName, int Freq
1639 **********/ 1677 **********/
1640 T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Mode(int DeviceName, int mode) 1678 T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Mode(int DeviceName, int mode)
1641 { 1679 {
1642 -#ifdef LIGHTING_STATUS_ON 1680 +#ifdef SEARCHLIGHT_STATUS_ON
1643 //1、设置本地存储值 1681 //1、设置本地存储值
1644 SearchLight_Obtain_Mode(mode); 1682 SearchLight_Obtain_Mode(mode);
1645 1683
@@ -1675,7 +1713,7 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Mode(int DeviceName, int mode) @@ -1675,7 +1713,7 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Mode(int DeviceName, int mode)
1675 **********/ 1713 **********/
1676 T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Lumen(int DeviceName, int LeftLumen, int RightLumen) 1714 T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Lumen(int DeviceName, int LeftLumen, int RightLumen)
1677 { 1715 {
1678 -#ifdef LIGHTING_STATUS_ON 1716 +#ifdef SEARCHLIGHT_STATUS_ON
1679 //1、设置本地存储值 1717 //1、设置本地存储值
1680 SearchLight_Obtain_Brightness(LeftLumen, RightLumen); 1718 SearchLight_Obtain_Brightness(LeftLumen, RightLumen);
1681 1719
@@ -1715,7 +1753,7 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Lumen(int DeviceName, int LeftLume @@ -1715,7 +1753,7 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Lumen(int DeviceName, int LeftLume
1715 **********/ 1753 **********/
1716 T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Temperature(int DeviceName, int LeftTemperature, int RightTemperature) 1754 T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Temperature(int DeviceName, int LeftTemperature, int RightTemperature)
1717 { 1755 {
1718 -#ifdef LIGHTING_STATUS_ON 1756 +#ifdef SEARCHLIGHT_STATUS_ON
1719 //1、设置本地存储值 1757 //1、设置本地存储值
1720 SearchLight_Obtain_Temperature(LeftTemperature, RightTemperature); 1758 SearchLight_Obtain_Temperature(LeftTemperature, RightTemperature);
1721 1759
@@ -1728,15 +1766,10 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Temperature(int DeviceName, int Le @@ -1728,15 +1766,10 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Temperature(int DeviceName, int Le
1728 //如果设备1有启动 1766 //如果设备1有启动
1729 if ( (JZsdk_HalPort_UseFlag(UART_DEV_1) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_1) ) 1767 if ( (JZsdk_HalPort_UseFlag(UART_DEV_1) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_1) )
1730 { 1768 {
1731 -#ifdef LIGHTING_STATUS_ON  
1732 if (JZsdk_SearchLight_GetMessageSubFlag() == JZ_FLAGCODE_ON) 1769 if (JZsdk_SearchLight_GetMessageSubFlag() == JZ_FLAGCODE_ON)
1733 { 1770 {
1734 HalSend_type1Send_SearchLight_Temperature(UART_DEV_1, LeftTemperature, RightTemperature); 1771 HalSend_type1Send_SearchLight_Temperature(UART_DEV_1, LeftTemperature, RightTemperature);
1735 } 1772 }
1736 -#else  
1737 - HalSend_type1Send_SearchLight_Temperature(UART_DEV_1, LeftTemperature, RightTemperature);  
1738 -#endif  
1739 -  
1740 } 1773 }
1741 //如果设备2有启动 1774 //如果设备2有启动
1742 if ( (JZsdk_HalPort_UseFlag(UART_DEV_2) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_2) ) 1775 if ( (JZsdk_HalPort_UseFlag(UART_DEV_2) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_2) )
@@ -1751,8 +1784,81 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Temperature(int DeviceName, int Le @@ -1751,8 +1784,81 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Temperature(int DeviceName, int Le
1751 1784
1752 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 1785 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
1753 #endif 1786 #endif
  1787 +
  1788 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
1754 } 1789 }
1755 1790
  1791 +
  1792 +/*********
  1793 + *
  1794 + * 收到单边灯光温度
  1795 + *
  1796 +**********/
  1797 +T_JZsdkReturnCode UIcontrol_ObtainSearchLight_SingleTemperature(int DeviceName, int FrameSequence, int Temperature)
  1798 +{
  1799 +
  1800 +//目前只有T40用
  1801 +#ifdef SEARCHLIGHT_STATUS_ON
  1802 +
  1803 + int Brocastflag = JZ_FLAGCODE_OFF;
  1804 +
  1805 + #if DEVICE_VERSION == JZ_T40
  1806 +
  1807 + //先读取本地探照灯属性
  1808 + T_JzSearchLightAttribute SearchLightAttribute;
  1809 + SearchLight_Get_SearchLightAttribute(&SearchLightAttribute);
  1810 +
  1811 + //分析出左右
  1812 + if (FrameSequence == 0x21) //左
  1813 + {
  1814 + SearchLight_Obtain_Temperature(Temperature, SearchLightAttribute.RightTemperature);
  1815 + Brocastflag = JZ_FLAGCODE_ON;
  1816 + }
  1817 +
  1818 + if (FrameSequence == 0x22) //右
  1819 + {
  1820 + SearchLight_Obtain_Temperature(SearchLightAttribute.LeftTemperature, Temperature);
  1821 + Brocastflag = JZ_FLAGCODE_ON;
  1822 + }
  1823 +
  1824 + #endif
  1825 +
  1826 + T_JzSearchLightAttribute Attribute;
  1827 + SearchLight_Get_SearchLightAttribute(&Attribute);
  1828 +
  1829 + if(Brocastflag == JZ_FLAGCODE_ON && FrameSequence == 0x21)
  1830 + {
  1831 + //通知其他设备的ui界面变化
  1832 + //如果4G模块有启动
  1833 + if ((JZsdk_HalPort_UseFlag(UART_4G) == JZ_FLAGCODE_ON) && (DeviceName != UART_4G) )
  1834 + {
  1835 + HalSend_type1Send_SearchLight_Temperature(UART_4G, Attribute.LeftTemperature, Attribute.RightTemperature);
  1836 + }
  1837 + //如果设备1有启动
  1838 + if ( (JZsdk_HalPort_UseFlag(UART_DEV_1) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_1) )
  1839 + {
  1840 + if (JZsdk_SearchLight_GetMessageSubFlag() == JZ_FLAGCODE_ON)
  1841 + {
  1842 + HalSend_type1Send_SearchLight_Temperature(UART_DEV_1, Attribute.LeftTemperature, Attribute.RightTemperature);
  1843 + }
  1844 + }
  1845 + //如果设备2有启动
  1846 + if ( (JZsdk_HalPort_UseFlag(UART_DEV_2) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_2) )
  1847 + {
  1848 + HalSend_type1Send_SearchLight_Temperature(UART_DEV_1, Attribute.LeftTemperature, Attribute.RightTemperature);
  1849 + }
  1850 + //如果psdk接口已经使用
  1851 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
  1852 + {
  1853 + HalSend_type1Send_SearchLight_Temperature(UART_DEV_1, Attribute.LeftTemperature, Attribute.RightTemperature);
  1854 + }
  1855 + }
  1856 +
  1857 +#endif
  1858 +
  1859 +}
  1860 +
  1861 +
1756 /**************************************************************************************************************************************** 1862 /****************************************************************************************************************************************
1757 * 1863 *
1758 * 警灯相关 1864 * 警灯相关
@@ -1765,9 +1871,10 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Temperature(int DeviceName, int Le @@ -1765,9 +1871,10 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Temperature(int DeviceName, int Le
1765 **********/ 1871 **********/
1766 T_JZsdkReturnCode UIcontrol_ObtainWarningLight_Status(int DeviceName, int status, int mode) 1872 T_JZsdkReturnCode UIcontrol_ObtainWarningLight_Status(int DeviceName, int status, int mode)
1767 { 1873 {
1768 -#ifdef LIGHTING_STATUS_ON 1874 +#ifdef WARNLIGHT_STATUS_ON
  1875 +
1769 //1、设置本地存储值 1876 //1、设置本地存储值
1770 - Lighting_Obtain_WarningLight_Status(status, mode); 1877 + WarnLight_Obatin_StatusAndMode(status, mode);
1771 1878
1772 //2、通知其他设备变化 1879 //2、通知其他设备变化
1773 if ((JZsdk_HalPort_UseFlag(UART_4G) == JZ_FLAGCODE_ON) && (DeviceName != UART_4G) ) 1880 if ((JZsdk_HalPort_UseFlag(UART_4G) == JZ_FLAGCODE_ON) && (DeviceName != UART_4G) )
@@ -1801,9 +1908,9 @@ T_JZsdkReturnCode UIcontrol_ObtainWarningLight_Status(int DeviceName, int status @@ -1801,9 +1908,9 @@ T_JZsdkReturnCode UIcontrol_ObtainWarningLight_Status(int DeviceName, int status
1801 **********/ 1908 **********/
1802 T_JZsdkReturnCode UIcontrol_ObtainWarningLight_Color(int DeviceName, int color1, int color2) 1909 T_JZsdkReturnCode UIcontrol_ObtainWarningLight_Color(int DeviceName, int color1, int color2)
1803 { 1910 {
1804 -#ifdef LIGHTING_STATUS_ON 1911 +#ifdef WARNLIGHT_STATUS_ON
1805 //1、设置本地存储值 1912 //1、设置本地存储值
1806 - Lighting_Obtain_WarningLight_Color(color1, color2); 1913 + WarnLight_Obatin_Color(color1, color2);
1807 1914
1808 //2、通知其他设备变化 1915 //2、通知其他设备变化
1809 if ((JZsdk_HalPort_UseFlag(UART_4G) == JZ_FLAGCODE_ON) && (DeviceName != UART_4G) ) 1916 if ((JZsdk_HalPort_UseFlag(UART_4G) == JZ_FLAGCODE_ON) && (DeviceName != UART_4G) )
@@ -75,8 +75,10 @@ T_JZsdkReturnCode UIcontrol_CheckStatus_GimbalAngle(int *PitchValue, int *YawVal @@ -75,8 +75,10 @@ T_JZsdkReturnCode UIcontrol_CheckStatus_GimbalAngle(int *PitchValue, int *YawVal
75 T_JZsdkReturnCode UIcontrol_Set_SearchLightFrequency(int DeviceName,int value); 75 T_JZsdkReturnCode UIcontrol_Set_SearchLightFrequency(int DeviceName,int value);
76 T_JZsdkReturnCode UIcontrol_SearchLightControl(int DeviceName, int mode); 76 T_JZsdkReturnCode UIcontrol_SearchLightControl(int DeviceName, int mode);
77 T_JZsdkReturnCode UIcontrol_Set_SearchLightLumen(int DeviceName, int WeatherFlush, int value1, int value2); 77 T_JZsdkReturnCode UIcontrol_Set_SearchLightLumen(int DeviceName, int WeatherFlush, int value1, int value2);
78 -T_JZsdkReturnCode UIcontrol_FlushSearchLightLightAttribute(); 78 +T_JZsdkReturnCode UIcontrol_CheckStatus_SearchLightLightAttribute(int *ValueLeftLumen, int *ValueRightLumen, int *ValueMode, int *ValueFrequency);
79 T_JZsdkReturnCode UIcontrol_CheckStatus_SearchLightTemperture(int *ValueLeftTemperature, int *ValueRightTemperaturen); 79 T_JZsdkReturnCode UIcontrol_CheckStatus_SearchLightTemperture(int *ValueLeftTemperature, int *ValueRightTemperaturen);
  80 +T_JZsdkReturnCode UIcontrol_ObtainSearchLight_SingleTemperature(int DeviceName, int FrameSequence, int Temperature);
  81 +
80 T_JZsdkReturnCode UIcontrol_Set_SearchLight_MessageSubscribe(int DeviceName, int value); 82 T_JZsdkReturnCode UIcontrol_Set_SearchLight_MessageSubscribe(int DeviceName, int value);
81 83
82 //警灯类 84 //警灯类
  1 +#include "JZsdkLib.h"
  2 +
  3 +#include "version_choose.h"
  4 +#include "Hal_Send/HalSend.h"
  5 +#include "WarnLight/WarnLight.h"
  6 +
  7 +
  8 +typedef struct T_JzWarnLightInfo{
  9 + T_JzWarnLightAttribute Attribute;
  10 + JZ_MODULE_CONTROL_WAY ControlMode; //控制模式
  11 +}T_JzWarnLightInfo;
  12 +
  13 +static T_JzWarnLightInfo g_WarnLightInfo;
  14 +
  15 +T_JZsdkReturnCode WarnLight_Init(enum JZ_MODULE_CONTROL_WAY Mode)
  16 +{
  17 + //初始化参数
  18 + static T_JzWarnLightAttribute Attribute = {
  19 + .Color1 = E_JZ_WARNLIGHT_COLOR_RED,
  20 + .Color2 = E_JZ_WARNLIGHT_COLOR_BLUE,
  21 + .mode = E_JZ_WARNLIGHT_MODE_ALTERATING_FAST_FALSHING,
  22 + .status = JZ_FLAGCODE_OFF,
  23 + };
  24 +
  25 + memcpy(&g_WarnLightInfo.Attribute, &Attribute, sizeof(T_JzWarnLightAttribute));
  26 +
  27 + g_WarnLightInfo.ControlMode = Mode;
  28 +
  29 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  30 +}
  31 +
  32 +T_JZsdkReturnCode WarnLight_Set_StatusAndMode(int status, int mode)
  33 +{
  34 + JZSDK_LOG_DEBUG("WarnLight_Set_StatusAndMode: status = %d, mode = %d", status, mode);
  35 +
  36 +#if DEVICE_VERSION == JZ_H1T
  37 +
  38 + HalSend_type1Send_Set_WarningLight_Status(UART_DEV_1, 0x00, status, mode);
  39 +
  40 +#elif DEVICE_VERSION == TF_A1 || \
  41 + DEVICE_VERSION == JZ_U3S || \
  42 + DEVICE_VERSION == JZ_U3D || \
  43 + DEVICE_VERSION == JZ_U30
  44 +
  45 + HalSend_type1Send_Set_WarningLight_Status(UART_DEV_2, 0x00, status, mode);
  46 +
  47 +#elif DEVICE_VERSION == JZ_T40
  48 +
  49 + HalSend_type1Send_Set_WarningLight_Status(UART_DEV_2, 0x20, status, mode);
  50 +
  51 +#endif
  52 +
  53 + g_WarnLightInfo.Attribute.mode = mode;
  54 + g_WarnLightInfo.Attribute.status = status;
  55 +
  56 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  57 +}
  58 +
  59 +//收到警灯状态
  60 +T_JZsdkReturnCode WarnLight_Obatin_StatusAndMode(int status, int mode)
  61 +{
  62 + JZSDK_LOG_DEBUG("%x警灯状态改变 状态%d 模式%d",DEVICE_VERSION, status ,mode);
  63 +
  64 + g_WarnLightInfo.Attribute.mode = mode;
  65 + g_WarnLightInfo.Attribute.status = status;
  66 +
  67 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  68 +}
  69 +
  70 +/*********
  71 + *
  72 + * 刷新警灯状态
  73 + *
  74 +**********/
  75 +T_JZsdkReturnCode WarnLight_Flush_StatusAndMode()
  76 +{
  77 + //如果是中继设备,则进行一次灯光属性查询
  78 + if(g_WarnLightInfo.ControlMode == JZ_MODULE_CONTROL_WAY_TRANSPARENT)
  79 + {
  80 + //查询灯光属性
  81 + HalSend_type1Send_CheckStatus_WarningLightStatus(UART_DEV_1);
  82 + }
  83 +
  84 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  85 +}
  86 +
  87 +
  88 +
  89 +//设置警灯颜色
  90 +T_JZsdkReturnCode WarnLight_Set_Color(int Color1, int Color2)
  91 +{
  92 + JZSDK_LOG_DEBUG("设置0x%x:警灯颜色 Color1:0x%x, color:0x%x",DEVICE_VERSION, Color1, Color2);
  93 +
  94 +#if DEVICE_VERSION == JZ_H1T
  95 + HalSend_type1Send_Set_WarningLight_Color(UART_DEV_1, 0x00, Color1, Color2);
  96 +
  97 +#elif DEVICE_VERSION == TF_A1 || \
  98 + DEVICE_VERSION == JZ_U3S || \
  99 + DEVICE_VERSION == JZ_U3D || \
  100 + DEVICE_VERSION == JZ_U30
  101 +
  102 +
  103 + HalSend_type1Send_Set_WarningLight_Color(UART_DEV_2, 0x00, Color1, Color2);
  104 +
  105 +#elif DEVICE_VERSION == JZ_T40
  106 +
  107 + HalSend_type1Send_Set_WarningLight_Color(UART_DEV_2, 0x20, Color1, Color2);
  108 +
  109 +#endif
  110 +
  111 + g_WarnLightInfo.Attribute.Color1 = Color1;
  112 + g_WarnLightInfo.Attribute.Color2 = Color2;
  113 +
  114 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  115 +}
  116 +
  117 +//收到警灯颜色
  118 +T_JZsdkReturnCode WarnLight_Obatin_Color(int Color1, int Color2)
  119 +{
  120 + JZSDK_LOG_DEBUG("收到0x%x:警灯颜色 Color1:0x%x, color:0x%x",DEVICE_VERSION, Color1, Color2);
  121 +
  122 + g_WarnLightInfo.Attribute.Color1 = Color1;
  123 + g_WarnLightInfo.Attribute.Color2 = Color2;
  124 +
  125 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  126 +}
  127 +
  128 +//刷新警灯颜色
  129 +T_JZsdkReturnCode WarnLight_Flush_Color()
  130 +{
  131 + //如果是中继设备,则进行一次灯光属性查询
  132 + if(g_WarnLightInfo.ControlMode == JZ_MODULE_CONTROL_WAY_TRANSPARENT)
  133 + {
  134 + //查询灯光属性
  135 + HalSend_type1Send_CheckStatus_WarningLightColor(UART_DEV_1);
  136 + }
  137 +
  138 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  139 +}
  140 +
  141 +//获取警灯属性
  142 +T_JZsdkReturnCode WarnLight_Get_Attribute(T_JzWarnLightAttribute *Attribute)
  143 +{
  144 + if(Attribute == NULL)
  145 + {
  146 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  147 + }
  148 +
  149 + memcpy(Attribute, &g_WarnLightInfo.Attribute, sizeof(T_JzWarnLightAttribute));
  150 +
  151 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  152 +}
  153 +
  154 +
  1 +/**
  2 + ********************************************************************
  3 + * @file WarnLight.h
  4 + * WarnLight的头文件
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef WARNLIGHT_H
  11 +#define WARNLIGHT_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 +typedef struct T_JzWarnLightAttribute{
  25 + int mode; //模式
  26 + int status; //状态
  27 + int Color1; //颜色1
  28 + int Color2; //颜色2
  29 +}T_JzWarnLightAttribute;
  30 +
  31 +
  32 +typedef enum E_JzWarnLightColor{
  33 + E_JZ_WARNLIGHT_COLOR_RED = 1,
  34 + E_JZ_WARNLIGHT_COLOR_GREEN = 2,
  35 + E_JZ_WARNLIGHT_COLOR_BLUE = 3,
  36 + E_JZ_WARNLIGHT_COLOR_YELLOW = 4,
  37 + E_JZ_WARNLIGHT_COLOR_WHITE = 5,
  38 +}E_JzWarnLightColor;
  39 +
  40 +typedef enum E_JzWarnLightMode{
  41 + E_JZ_WARNLIGHT_MODE_ALTERATING_FAST_FALSHING = 0, //交替快速闪烁
  42 + E_JZ_WARNLIGHT_MODE_ALTERATING_SLOW_FALSHING = 1, //交替慢速闪烁
  43 + E_JZ_WARNLIGHT_MODE_ALTERATING_UNISONG_FALSHING = 2, //交替单色闪烁
  44 + E_JZ_WARNLIGHT_MODE_SIMULTANEOUS_FAST_FALSHING = 3, //同时快速闪烁
  45 + E_JZ_WARNLIGHT_MODE_SIMULTANEOUS_SLOW_FALSHING = 4, //同时慢速闪烁
  46 +}E_JzWarnLightMode;
  47 +
  48 +/* Exported functions --------------------------------------------------------*/
  49 +T_JZsdkReturnCode WarnLight_Set_StatusAndMode(int status, int mode);
  50 +T_JZsdkReturnCode WarnLight_Set_Color(int Color1, int Color2);
  51 +
  52 +T_JZsdkReturnCode WarnLight_Get_Attribute(T_JzWarnLightAttribute *Attribute);
  53 +
  54 +T_JZsdkReturnCode WarnLight_Flush_StatusAndMode();
  55 +T_JZsdkReturnCode WarnLight_Flush_Color();
  56 +
  57 +T_JZsdkReturnCode WarnLight_Obatin_StatusAndMode(int status, int mode);
  58 +T_JZsdkReturnCode WarnLight_Obatin_Color(int Color1, int Color2);
  59 +
  60 +T_JZsdkReturnCode WarnLight_Init(enum JZ_MODULE_CONTROL_WAY Mode);
  61 +
  62 +
  63 +#ifdef __cplusplus
  64 +}
  65 +#endif
  66 +
  67 +#endif