作者 Your Name

Initial commit (clean start)

正在显示 39 个修改的文件 包含 4774 行增加0 行删除

要显示太多修改。

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

  1 +root = true
  2 +
  3 +[*.{c,h}]
  4 +charset = utf-8-bom
  1 +# Compiled class file
  2 +
  3 +ThirdParty
  4 +ModuleLib
  5 +备份
  6 +linux_kernel
  7 +
  8 +project_build/AUTEL_道通PSDK
  9 +project_build/GDU_普宙PSDK
  10 +project_build/DT
  11 +
  12 +# project_build/Only_Serial/*
  13 +# !project_build/Only_Serial/application
  14 +# !project_build/Only_Serial/CMakeLists.txt
  15 +
  16 +
  17 +# project_build/DJI_大疆PSDK/*
  18 +# !project_build/DJI_大疆PSDK/samples
  19 +project_build/DJI_大疆PSDK/samples/sample_c++
  20 +
  21 +# project_build/DJI_大疆PSDK/samples/sample_c/platform/*
  22 +# !project_build/DJI_大疆PSDK/samples/sample_c/platform/linux
  23 +
  24 +
  25 +# project_build/DJI_大疆PSDK/samples/sample_c/platform/linux/all/*
  26 +# !project_build/DJI_大疆PSDK/samples/sample_c/platform/linux/all/application
  27 +# !project_build/DJI_大疆PSDK/samples/sample_c/platform/linux/all/hal
  28 +# !project_build/DJI_大疆PSDK/samples/sample_c/platform/linux/all/CMakeLists.txt
  29 +
  30 +project_build/Psdk312/*
  31 +
  32 +project_build/特殊固件
  33 +project_build/DJI_Test
  34 +project_build/Psdk2257
  35 +project_build/zy_101
  36 +project_build/DJI_311
  37 +
  38 +# project_build/Attention_提示程序
  39 +
  40 +# Prerequisites
  41 +*.d
  42 +
  43 +# Compiled Object files
  44 +*.slo
  45 +*.lo
  46 +*.o
  47 +*.obj
  48 +
  49 +# Precompiled Headers
  50 +*.gch
  51 +*.pch
  52 +
  53 +# Compiled Dynamic libraries
  54 +*.so
  55 +*.dylib
  56 +*.dll
  57 +*.so*
  58 +
  59 +# Fortran module files
  60 +*.mod
  61 +*.smod
  62 +
  63 +# Compiled Static libraries
  64 +*.lai
  65 +*.la
  66 +*.a
  67 +*.lib
  68 +
  69 +# 执行程序
  70 +*.exe
  71 +*.out
  72 +*.app
  73 +build
  74 +
  75 +# 编译文件
  76 +bin/
  77 +obj/
  78 +*.bin
  79 +*.dir
  80 +*.exe
  81 +*.dll
  82 +*.pdb
  83 +Upgrade_Package
  84 +
  85 +# 存档文件
  86 +*.png
  87 +*.jpg
  88 +*.mp4
  89 +*.h264
  90 +*.pdf
  91 +
  92 +## 忽略其他常见临时文件
  93 +*.log
  94 +*.tmp
  95 +*.cache
  96 +Thumbs.db
  97 +EOF
  98 +
  99 +**/.vs/
  100 +*.user
  101 +*.suo
  102 +*.userosscache
  103 +*.sln.docstates
  104 +
  105 +**/.vscode/
  1 +# 编译链的配置
  2 +
  3 +#1、编译链与设备类型的选择
  4 +set(DEVICE_NAME JZ_T40S)
  5 +#上一行为禁止修改行
  6 +
  7 +message("**************************JZSDK构建编译开始***************************\n")
  8 +
  9 +if("${DEVICE_NAME}" STREQUAL "JZ_H1E")
  10 + set(MAKE_COMPILER ARM_CORTEXA9_LINUX)
  11 +elseif("${DEVICE_NAME}" STREQUAL "JZ_H1T")
  12 + set(MAKE_COMPILER ARM_CORTEXA9_LINUX)
  13 +elseif("${DEVICE_NAME}" STREQUAL "JZ_H150S")
  14 + set(MAKE_COMPILER ARM_CORTEXA9_LINUX)
  15 +elseif("${DEVICE_NAME}" STREQUAL "JZ_H150T")
  16 + #set(MAKE_COMPILER ARM_CORTEXA9_LINUX)
  17 + set(MAKE_COMPILER LINARO_ARM_CORTEX_LINUX)
  18 +elseif("${DEVICE_NAME}" STREQUAL "JZ_H10")
  19 + set(MAKE_COMPILER ARM_CORTEXA9_LINUX)
  20 +elseif("${DEVICE_NAME}" STREQUAL "JZ_H10T")
  21 + set(MAKE_COMPILER ARM_CORTEXA9_LINUX)
  22 +elseif("${DEVICE_NAME}" STREQUAL "JZ_U3")
  23 + set(MAKE_COMPILER ARM_CORTEXA9_LINUX)
  24 +elseif("${DEVICE_NAME}" STREQUAL "JZ_U3S")
  25 + # set(MAKE_COMPILER ARM_CORTEXA9_LINUX)
  26 + set(MAKE_COMPILER LINARO_ARM_CORTEX_LINUX)
  27 +elseif("${DEVICE_NAME}" STREQUAL "JZ_U3D")
  28 + set(MAKE_COMPILER ARM_CORTEXA9_LINUX)
  29 +elseif("${DEVICE_NAME}" STREQUAL "JZ_U30")
  30 + set(MAKE_COMPILER ARM_CORTEXA9_LINUX)
  31 +elseif("${DEVICE_NAME}" STREQUAL "TF_A1")
  32 + set(MAKE_COMPILER ARM_CORTEXA9_LINUX)
  33 +elseif("${DEVICE_NAME}" STREQUAL "JZ_C1")
  34 + set(MAKE_COMPILER ARM_X86_64_ARRCH64)
  35 +elseif("${DEVICE_NAME}" STREQUAL "JZ_ST")
  36 + set(MAKE_COMPILER ARM_X86_64_ARRCH64)
  37 +elseif("${DEVICE_NAME}" STREQUAL "JZ_H150A")
  38 + set(MAKE_COMPILER LINARO_ARM_CORTEX_LINUX)
  39 +elseif("${DEVICE_NAME}" STREQUAL "JZ_T40")
  40 + set(MAKE_COMPILER LINARO_ARM_CORTEX_LINUX)
  41 +elseif("${DEVICE_NAME}" STREQUAL "JZ_T40S")
  42 + set(MAKE_COMPILER LINARO_ARM_CORTEX_LINUX)
  43 +endif()
  44 +
  45 +if(${MAKE_COMPILER} STREQUAL "ARM_CORTEXA9_LINUX")
  46 + set(TOOLCHAIN_NAME arm-linux-gnueabihf-gcc)
  47 + set(CMAKE_C_COMPILER "/usr/local/arm/4.9.3/bin/arm-cortexa9-linux-gnueabihf-gcc")
  48 + set(CMAKE_CXX_COMPILER "/usr/local/arm/4.9.3/bin/arm-cortexa9-linux-gnueabihf-g++")
  49 + message("使用ARM_CORTEXA9_LINUX编译链")
  50 +
  51 +elseif(${MAKE_COMPILER} STREQUAL "LINARO_ARM_CORTEX_LINUX")
  52 + set(TOOLCHAIN_NAME arm-linux-gnueabihf-gcc)
  53 + set(CMAKE_C_COMPILER "/usr/local/arm/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc")
  54 + set(CMAKE_CXX_COMPILER "/usr/local/arm/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++")
  55 + message("使用LINARO_ARM_CORTEX_LINUX编译链")
  56 +
  57 +elseif(${MAKE_COMPILER} STREQUAL "ARM_X86_64_ARRCH64")
  58 + # 交叉编译链3
  59 + set(TOOLCHAIN_NAME aarch64-linux-gnu-gcc)
  60 + set(CMAKE_C_COMPILER "/usr/local/arm/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc")
  61 + set(CMAKE_CXX_COMPILER "/usr/local/arm/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-g++")
  62 + message("使用ARM_X86_64_ARRCH64编译链")
  63 +
  64 +elseif(${MAKE_COMPILER} STREQUAL "LOCAL")
  65 + # 本地测试编译链
  66 + set(CMAKE_C_COMPILER "/usr/bin/gcc")
  67 + set(CMAKE_CXX_COMPILER "/usr/bin/g++")
  68 + message("使用LOCAL编译链")
  69 +
  70 +else()
  71 + message(FATAL_ERROR "不支持的编译链")
  72 +endif()
  73 +
  74 +message("\n**************************编译链配置完毕***********************\n")
  1 +# 模组构建文件,用于加载源代码 与 配置代码中的开关
  2 +# ${ROOT_DIRS}为cmakelist文件提供的工程根目录
  3 +
  4 +message("\n*************************开始模块构建***********************\n")
  5 +
  6 +set(IFLAY_TTS_MODULE VERSION_SWITCH_OFF)
  7 +set(ESPEAK_TTS_MODULE VERSION_SWITCH_OFF)
  8 +set(ALSALIB_MODULE VERSION_SWITCH_OFF)
  9 +set(OPUS_MODULE VERSION_SWITCH_OFF)
  10 +set(LIB_RK_MMP VERSION_SWITCH_OFF)
  11 +set(LIB_RK_RGB VERSION_SWITCH_OFF)
  12 +set(LIB_USB VERSION_SWITCH_OFF)
  13 +set(LIB_KT_IRC VERSION_SWITCH_OFF)
  14 +set(LIB_SAT_IRC VERSION_SWITCH_OFF)
  15 +
  16 +add_definitions(-D COMPILE_MODE_MODULE) #设置代码为编译模式
  17 +
  18 +#加载基础库JZSDK库基础代码
  19 +file(GLOB_RECURSE JZSDK_COMMON_SRC ${ROOT_DIRS}JZsdk_Common/*.c)
  20 +list(APPEND ALL_SRC_FILES ${JZSDK_COMMON_SRC})
  21 +list(APPEND ALL_INC_FILES ${ROOT_DIRS}JZsdk_Common)
  22 +
  23 +file(GLOB_RECURSE JZSDK_CONFIG_SRC_baseConfig ${ROOT_DIRS}JZsdk_Config/BaseConfig.c)
  24 +file(GLOB_RECURSE JZSDK_CONFIG_SRC_Paramterpar ${ROOT_DIRS}JZsdk_Config/ParamterParsing.c)
  25 +
  26 +list(APPEND ALL_SRC_FILES ${JZSDK_CONFIG_SRC_baseConfig})
  27 +list(APPEND ALL_SRC_FILES ${JZSDK_CONFIG_SRC_Paramterpar})
  28 +list(APPEND ALL_INC_FILES ${ROOT_DIRS}JZsdk_Config)
  29 +
  30 +file(GLOB_RECURSE JZSDK_HAL_SRC ${ROOT_DIRS}JZsdk_hal/*.c)
  31 +list(APPEND ALL_SRC_FILES ${JZSDK_HAL_SRC})
  32 +list(APPEND ALL_INC_FILES ${ROOT_DIRS}JZsdk_hal)
  33 +
  34 +message("\nJZSDK基础代码加载完毕\n")
  35 +
  36 +#如果要加载设备信息模块,需要加载以下附属内容
  37 +if(${DEVICE_INFO_MODULE} STREQUAL "VERSION_SWITCH_ON")
  38 + message("\n设备信息模块源码加载中")
  39 + file(GLOB_RECURSE DEVICE_MESSAGE_SRC ${ROOT_DIRS}Module/DeviceInfo/*.c)
  40 + list(APPEND ALL_SRC_FILES ${DEVICE_MESSAGE_SRC})
  41 +
  42 +endif()
  43 +
  44 +#如果要加载云台模块,需要加载以下附属内容
  45 +if(${GIMBAL_MODULE} STREQUAL "VERSION_SWITCH_ON")
  46 + message("\n云台模块源码加载中")
  47 + file(GLOB_RECURSE GIMBAL_SRC ${ROOT_DIRS}Module/Gimbal/*.c)
  48 + list(APPEND ALL_SRC_FILES ${GIMBAL_SRC})
  49 +
  50 + #打开云台的代码编译部分
  51 + add_definitions(-DMACRO_GIMBAL_MODULE)
  52 +
  53 +endif()
  54 +
  55 +#如果要加载引脚模块,需要加载以下附属内容
  56 +if(${IRCUT_MODULE} STREQUAL "VERSION_SWITCH_ON")
  57 + message("\n引脚模块源码加载中")
  58 + file(GLOB_RECURSE MODULE_IRCUT_SRC ${ROOT_DIRS}Module/Ircut/*.c)
  59 + list(APPEND ALL_SRC_FILES ${MODULE_IRCUT_SRC})
  60 +
  61 +endif()
  62 +
  63 +#如果要加载探照灯模块,需要加载以下附属内容
  64 +if(${SEARCHLIGHT_MODULE} STREQUAL "VERSION_SWITCH_ON")
  65 + message("\n探照灯模块加载中")
  66 +
  67 + #打开探照灯的代码编译部分
  68 + add_definitions(-DMACRO_SEARCHLIGHT_MODULE)
  69 +
  70 + #将探照灯的源代码加入编译中
  71 + file(GLOB_RECURSE SEARCHLIGHT_SRC ${ROOT_DIRS}Module/SearchLight/*.c)
  72 + list(APPEND ALL_SRC_FILES ${SEARCHLIGHT_SRC})
  73 +
  74 +endif()
  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 +#如果要加载侧面激光模块,需要加载以下附属内容
  90 +if(${SIDE_LASER_MODULE} STREQUAL "VERSION_SWITCH_ON")
  91 + message("\n侧面激光模块加载中")
  92 +
  93 + #打开侧面激光的代码编译部分
  94 + add_definitions(-DMACRO_SIDE_LASER_MODULE)
  95 +
  96 + file(GLOB_RECURSE MODULE_SIDE_LASER_SRC ${ROOT_DIRS}Module/SideLaser/*.c)
  97 + list(APPEND ALL_SRC_FILES ${MODULE_SIDE_LASER_SRC})
  98 +endif()
  99 +
  100 +#如果要加载媒体管理模块,需要加载以下附属内容
  101 +if(${MEDIA_PROC_MODULE} STREQUAL "VERSION_SWITCH_ON")
  102 + message("\n媒体管理模块加载中")
  103 +
  104 + #将媒体管理模块的源代码加入编译中
  105 + add_definitions(-DMACRO_MEDIA_PROC_MODULE)
  106 +
  107 + file(GLOB_RECURSE MEDIA_PROC_SRC ${ROOT_DIRS}Module/MediaProc/*.c)
  108 + file(GLOB_RECURSE MEDIA_PROC_SRC_CPP ${ROOT_DIRS}Module/MediaProc/*.cpp)
  109 + list(APPEND ALL_SRC_FILES ${MEDIA_PROC_SRC})
  110 + list(APPEND ALL_SRC_FILES ${MEDIA_PROC_SRC_CPP})
  111 +
  112 + #如果要加载红外相机模块,额外加载以下附属内容
  113 + if(${IRC_MODULE} STREQUAL "VERSION_SWITCH_ON")
  114 + message("加载红外相机模块")
  115 + add_definitions(-DMACRO_IRC_MODULE)
  116 +
  117 + message("加载RK MMP模块")
  118 + set(LIB_RK_MMP VERSION_SWITCH_ON)
  119 +
  120 + message("加载RK RGA模块")
  121 + set(LIB_RK_RGB VERSION_SWITCH_ON)
  122 +
  123 + message("加载USB模块")
  124 + set(LIB_USB VERSION_SWITCH_ON)
  125 +
  126 + if(${LIB_KT_MODULE} STREQUAL "VERSION_SWITCH_ON")
  127 + message("加载昆腾红外相机模块")
  128 + set(LIB_KT_IRC VERSION_SWITCH_ON)
  129 +
  130 + endif()
  131 +
  132 + if(${LIB_SATIRC_MODULE} STREQUAL "VERSION_SWITCH_ON")
  133 + message("加载飒特红外相机模块")
  134 + set(LIB_SAT_IRC VERSION_SWITCH_ON)
  135 +
  136 + endif()
  137 +
  138 + endif()
  139 +
  140 +endif()
  141 +
  142 +#如果要加载音频库模块,需要加载以下附属内容
  143 +if(${AUDIODEAL_MODULE} STREQUAL "VERSION_SWITCH_ON")
  144 + message("\n音频库模块加载中")
  145 +
  146 + message("加载音频库")
  147 + add_definitions(-DMACRO_AUDIODEAL_MODULE)
  148 + file(GLOB_RECURSE AUDIODEAL_SRC ${ROOT_DIRS}Module/AudioDeal/*.c)
  149 + list(APPEND ALL_SRC_FILES ${AUDIODEAL_SRC})
  150 +
  151 +endif()
  152 +
  153 +#如果要加载喊话器模块,需要加载以下附属内容
  154 +if(${MEGAPHONE_MODULE} STREQUAL "VERSION_SWITCH_ON")
  155 + message("\n喊话器模块加载中")
  156 +
  157 + message("加载喊话器")
  158 + add_definitions(-DMACRO_MEGAPHONE_MODULE) #加载喊话器模块
  159 + file(GLOB_RECURSE MEGAPHONE_SRC ${ROOT_DIRS}Module/Megaphone/*.c)
  160 + list(APPEND ALL_SRC_FILES ${MEGAPHONE_SRC})
  161 +
  162 + #加载tts模块
  163 + if(TTS_MODULE STREQUAL "JZ_TTS_MODULE_1" )
  164 +
  165 + message("加载讯飞一代TTS模块")
  166 + add_definitions(-DMACRO_IFLAY_TTS_1_MODULE)
  167 +
  168 + message("加载espeak模块")
  169 + add_definitions(-DMACRO_ESPEAK_TTS_MODULE)
  170 +
  171 + elseif(TTS_MODULE STREQUAL "JZ_TTS_MODULE_2" )
  172 +
  173 + message("加载讯飞二代TTS模块")
  174 + add_definitions(-DMACRO_IFLAY_TTS_2_MODULE)
  175 + file(GLOB_RECURSE IFLTTEK_2_SRC ${ROOT_DIRS}Module/Megaphone/TTS/iflytek_2/*.cpp)
  176 + list(APPEND ALL_SRC_FILES ${IFLTTEK_2_SRC})
  177 +
  178 + endif()
  179 +
  180 + message("加载alsalib模块")
  181 + set(ALSALIB_MODULE VERSION_SWITCH_ON)
  182 +
  183 + message("加载OPUS模块")
  184 + set(OPUS_MODULE VERSION_SWITCH_ON)
  185 +endif()
  186 +
  187 +
  188 +#如果要加载通用模块,需要加载以下附属内容
  189 +if(${COMMON_MODULE} STREQUAL "VERSION_SWITCH_ON")
  190 +
  191 + message("\n通用模块加载中")
  192 + file(GLOB_RECURSE COMMON_MODULE_SRC ${ROOT_DIRS}Module/CommonMod/*.c)
  193 + list(APPEND ALL_SRC_FILES ${COMMON_MODULE_SRC})
  194 +
  195 +endif()
  196 +
  197 +#如果要加载拓展接口模块,需要加载以下附属内容
  198 +if(${EXTENSION_API_MODULE} STREQUAL "VERSION_SWITCH_ON")
  199 + message("\n拓展接口模块加载中")
  200 +
  201 + file(GLOB_RECURSE EXTENSION_API_MODULE_SRC ${ROOT_DIRS}Module/ExtensionAPI/*.c)
  202 + list(APPEND ALL_SRC_FILES ${EXTENSION_API_MODULE_SRC})
  203 +endif()
  204 +
  205 +
  206 +
  207 +#如果要加载UI模块,需要加载以下附属内容
  208 +if(${UI_CONTROL_MODULE} STREQUAL "VERSION_SWITCH_ON")
  209 + message("\nUI模块源码加载中")
  210 +
  211 + file(GLOB_RECURSE MODULE_UICONTROL_SRC ${ROOT_DIRS}Module/UI_control/*.c)
  212 + list(APPEND ALL_SRC_FILES ${MODULE_UICONTROL_SRC})
  213 +
  214 +endif()
  215 +
  216 +# wiringPi
  217 +if(${WIRINGPI_MODULE} STREQUAL "VERSION_SWITCH_ON")
  218 + message("\nwiringPi模块加载中")
  219 +
  220 + file(GLOB_RECURSE WIRINGPI_SRC ${ROOT_DIRS}ThirdParty/wiringPi/*.c)
  221 + list(APPEND ALL_SRC_FILES ${WIRINGPI_SRC})
  222 + list(APPEND ALL_INC_FILES ${ROOT_DIRS}ThirdParty/wiringPi)
  223 +
  224 + #打开wiringPi的代码编译部分
  225 + add_definitions(-DMACRO_WIRINGPI_MODULE)
  226 +
  227 +endif()
  228 +
  229 +# 如果要加入特殊图像处理模块,需要加载以下附属内容
  230 +if(${IMAGEPROCESSING_MODULE} STREQUAL "VERSION_SWITCH_ON")
  231 + message("\n特殊图像处理模块加载中")
  232 +
  233 + file(GLOB_RECURSE MODULE_IMAGEPROCESSING_SRC ${ROOT_DIRS}Module/ImageProcessing/*.c)
  234 + file(GLOB_RECURSE MODULE_IMAGEPROCESSING_cpp_SRC ${ROOT_DIRS}Module/ImageProcessing/*.cpp)
  235 + list(APPEND ALL_SRC_FILES ${MODULE_IMAGEPROCESSING_SRC})
  236 + list(APPEND ALL_SRC_FILES ${MODULE_IMAGEPROCESSING_cpp_SRC})
  237 +endif()
  238 +
  239 +message("\n模组加载完毕\n")
  240 +
  241 +# 头文件加载,后续再进行优化
  242 +list(APPEND ALL_INC_FILES ${ROOT_DIRS}Module/Megaphone)
  243 +list(APPEND ALL_INC_FILES ${ROOT_DIRS}Module/Ircut)
  244 +list(APPEND ALL_INC_FILES ${ROOT_DIRS}Module/Gimbal)
  245 +list(APPEND ALL_INC_FILES ${ROOT_DIRS}Module/Lighting)
  246 +list(APPEND ALL_INC_FILES ${ROOT_DIRS}Module/UI_control)
  247 +list(APPEND ALL_INC_FILES ${ROOT_DIRS}Module/Camera)
  248 +list(APPEND ALL_INC_FILES ${ROOT_DIRS}Module/COMMONManager)
  249 +list(APPEND ALL_INC_FILES ${ROOT_DIRS}Module/TestAPP)
  250 +list(APPEND ALL_INC_FILES ${ROOT_DIRS}Module/ImageProcessing)
  251 +list(APPEND ALL_INC_FILES ${ROOT_DIRS}Module/SerialManagement)
  252 +list(APPEND ALL_INC_FILES ${ROOT_DIRS}Module/ExtensionAPI)
  253 +list(APPEND ALL_INC_FILES ${ROOT_DIRS}Module)
  254 +
  255 +message("**************************库构建完毕***************************\n")
  1 +# 设备类型的模块配置文件
  2 +# 主要用于根据设备类型
  3 +# 将对应的模块打开
  4 +
  5 +###################### 自己的库 ##############################
  6 +# AudioDeal 音频处理模块
  7 +set(AUDIODEAL_MODULE VERSION_SWITCH_OFF)
  8 +
  9 +# 信息模块
  10 +set(DEVICE_INFO_MODULE VERSION_SWITCH_OFF)
  11 +
  12 +# Gimbal 云台处理模块
  13 +set(GIMBAL_MODULE VERSION_SWITCH_OFF)
  14 +
  15 +# IRCUT 引脚处理模块
  16 +set(IRCUT_MODULE VERSION_SWITCH_OFF)
  17 +
  18 +############### 光源模块 ##########################
  19 +
  20 +# SEARCHLIGHT 探照灯处理模块
  21 +set(SEARCHLIGHT_MODULE VERSION_SWITCH_OFF)
  22 +
  23 +# WARNLIGHT 警示灯处理模块
  24 +set(WARNLIGHT_MODULE VERSION_SWITCH_OFF)
  25 +
  26 +################ 喊话器模块 #######################
  27 +
  28 +# 喊话器模块
  29 +set(MEGAPHONE_MODULE VERSION_SWITCH_OFF)
  30 +
  31 +# TTS模块
  32 +set(TTS_MODULE VERSION_SWITCH_OFF)
  33 +
  34 +##################################################
  35 +
  36 +
  37 +
  38 +# 电源管理模块
  39 +set(COMMON_MODULE VERSION_SWITCH_OFF)
  40 +
  41 +#拓展接口模块
  42 +set(EXTENSION_API_MODULE VERSION_SWITCH_OFF)
  43 +
  44 +# UI管理模块
  45 +set(UI_CONTROL_MODULE VERSION_SWITCH_OFF)
  46 +
  47 +
  48 +# MediaProc 媒体管理模块
  49 +set(MEDIA_PROC_MODULE VERSION_SWITCH_OFF)
  50 +
  51 +# 红外相机模块
  52 +set(IRC_MODULE VERSION_SWITCH_OFF)
  53 +
  54 +# 侧面激光模块
  55 +set(SIDE_LASER_MODULE VERSION_SWITCH_OFF)
  56 +
  57 +###################### 第三方库 ##############################
  58 +
  59 +# FFMPEG及其附属模块
  60 +set(FFMPEG_MODULE VERSION_SWITCH_OFF)
  61 +
  62 +# cedarxLib
  63 +set(CedarxLib VERSION_SWITCH_OFF)
  64 +
  65 +# wiringPi库
  66 +set(WIRINGPI_MODULE VERSION_SWITCH_OFF)
  67 +
  68 +# OpenCV库
  69 +set(IMAGEPROCESSING_MODULE VERSION_SWITCH_OFF)
  70 +
  71 +# 鲲腾库
  72 +set(LIB_KT_MODULE VERSION_SWITCH_OFF)
  73 +
  74 +# 飒特库
  75 +set(LIB_SATIRC_MODULE VERSION_SWITCH_OFF)
  76 +
  77 +# speex库
  78 +set(SPEEX_MODULE VERSION_SWITCH_OFF)
  79 +
  80 +########################## 通用库加载 ###########################################
  81 +
  82 +# 添加信息模块
  83 +set(DEVICE_INFO_MODULE VERSION_SWITCH_ON)
  84 +
  85 +# 添加UI管理模块
  86 +set(UI_CONTROL_MODULE VERSION_SWITCH_ON)
  87 +
  88 +# 添加通用模块
  89 +set(COMMON_MODULE VERSION_SWITCH_ON)
  90 +
  91 +# 添加IRCUT 引脚处理模块
  92 +set(IRCUT_MODULE VERSION_SWITCH_ON)
  93 +
  94 +# 添加拓展接口模块
  95 +set(EXTENSION_API_MODULE VERSION_SWITCH_ON)
  96 +
  97 +
  98 +
  99 +message("通用库加载完成")
  100 +
  101 +########################### 独立库加载 ##########################################
  102 +
  103 +if("${DEVICE_NAME}" STREQUAL "JZ_H1E")
  104 +
  105 + # 添加AudioDeal 音频处理模块
  106 + set(AUDIODEAL_MODULE VERSION_SWITCH_ON)
  107 +
  108 + # 添加Gimbal 云台处理模块
  109 + set(GIMBAL_MODULE VERSION_SWITCH_ON)
  110 +
  111 + # 添加喊话器模块
  112 + set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
  113 +
  114 + # 添加TTS模块
  115 + set(TTS_MODULE JZ_TTS_MODULE_1)
  116 +
  117 + # 添加FFMPEG及其附属模块
  118 + set(FFMPEG_MODULE VERSION_SWITCH_ON)
  119 +
  120 + #设备独立配置源文件
  121 + file(GLOB_RECURSE DEVICE_CONFOG_SRC ${ROOT_DIRS}JZsdk_Config/DeviceSample/JZ_H1_series/JZ_H1E/*.c)
  122 + list(APPEND ALL_SRC_FILES ${DEVICE_CONFOG_SRC})
  123 +
  124 + message("h1e基础配置完毕\n")
  125 +
  126 +elseif("${DEVICE_NAME}" STREQUAL "JZ_H1T")
  127 +
  128 + # 添加AudioDeal 音频处理模块
  129 + set(AUDIODEAL_MODULE VERSION_SWITCH_ON)
  130 +
  131 + # 添加TTS模块
  132 + set(TTS_MODULE JZ_TTS_MODULE_1)
  133 +
  134 + # 添加Gimbal 云台处理模块
  135 + set(GIMBAL_MODULE VERSION_SWITCH_ON)
  136 +
  137 + # 添加SEARCHLIGHT 探照灯处理模块
  138 + set(SEARCHLIGHT_MODULE VERSION_SWITCH_ON)
  139 +
  140 + # 添加WARNLIGHT 警示灯处理模块
  141 + set(WARNLIGHT_MODULE VERSION_SWITCH_ON)
  142 +
  143 + # 添加喊话器模块
  144 + set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
  145 +
  146 + # 添加TTS模块
  147 + set(TTS_MODULE JZ_TTS_MODULE_1)
  148 +
  149 + # 添加FFMPEG及其附属模块
  150 + set(FFMPEG_MODULE VERSION_SWITCH_ON)
  151 +
  152 + #设备独立配置源文件
  153 + file(GLOB_RECURSE DEVICE_CONFOG_SRC ${ROOT_DIRS}JZsdk_Config/DeviceSample/JZ_H1_series/JZ_H1T/*.c)
  154 + list(APPEND ALL_SRC_FILES ${DEVICE_CONFOG_SRC})
  155 +
  156 + message("h1t基础配置完毕\n")
  157 +
  158 +elseif("${DEVICE_NAME}" STREQUAL "JZ_U3")
  159 +
  160 + # 添加AudioDeal 音频处理模块
  161 + set(AUDIODEAL_MODULE VERSION_SWITCH_ON)
  162 +
  163 + # 添加Gimbal 云台处理模块
  164 + set(GIMBAL_MODULE VERSION_SWITCH_ON)
  165 +
  166 + # 添加SEARCHLIGHT 探照灯处理模块
  167 + set(SEARCHLIGHT_MODULE VERSION_SWITCH_ON)
  168 +
  169 + # 添加WARNLIGHT 警示灯处理模块
  170 + set(WARNLIGHT_MODULE VERSION_SWITCH_ON)
  171 +
  172 + # 添加喊话器模块
  173 + set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
  174 +
  175 + # 添加TTS模块
  176 + set(TTS_MODULE JZ_TTS_MODULE_1)
  177 +
  178 + # 添加FFMPEG及其附属模块
  179 + set(FFMPEG_MODULE VERSION_SWITCH_ON)
  180 +
  181 + #设备独立配置源文件
  182 + file(GLOB_RECURSE DEVICE_CONFOG_SRC ${ROOT_DIRS}JZsdk_Config/DeviceSample/JZ_U3_series/JZ_U3/*.c)
  183 + list(APPEND ALL_SRC_FILES ${DEVICE_CONFOG_SRC})
  184 +
  185 + message("u3基础配置完毕\n")
  186 +
  187 +elseif("${DEVICE_NAME}" STREQUAL "JZ_U3S")
  188 +
  189 + # 添加Gimbal 云台处理模块
  190 + set(GIMBAL_MODULE VERSION_SWITCH_ON)
  191 +
  192 + # 添加WARNLIGHT 警示灯处理模块
  193 + set(WARNLIGHT_MODULE VERSION_SWITCH_ON)
  194 +
  195 + # 添加探照灯模块
  196 + set(SEARCHLIGHT_MODULE VERSION_SWITCH_ON)
  197 +
  198 + # 添加激光模块
  199 + set(SIDE_LASER_MODULE VERSION_SWITCH_ON)
  200 +
  201 + # 添加AudioDeal 音频处理模块
  202 + set(AUDIODEAL_MODULE VERSION_SWITCH_ON)
  203 +
  204 + # 添加speex音频处理模块
  205 + # set(SPEEX_MODULE VERSION_SWITCH_ON)
  206 +
  207 + # 添加喊话器模块
  208 + set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
  209 +
  210 + # 添加TTS模块
  211 + set(TTS_MODULE JZ_TTS_MODULE_1)
  212 +
  213 + # 添加FFMPEG及其附属模块
  214 + set(FFMPEG_MODULE VERSION_SWITCH_ON)
  215 +
  216 + #设备独立配置源文件
  217 + file(GLOB_RECURSE DEVICE_CONFOG_SRC ${ROOT_DIRS}JZsdk_Config/DeviceSample/JZ_U3_series/JZ_U3S/*.c)
  218 + list(APPEND ALL_SRC_FILES ${DEVICE_CONFOG_SRC})
  219 +
  220 + message("U3S PZ配置完毕\n")
  221 +
  222 +elseif("${DEVICE_NAME}" STREQUAL "JZ_U3D")
  223 +
  224 + # 添加AudioDeal 音频处理模块
  225 + set(AUDIODEAL_MODULE VERSION_SWITCH_ON)
  226 +
  227 + # 添加Gimbal 云台处理模块
  228 + set(GIMBAL_MODULE VERSION_SWITCH_ON)
  229 +
  230 + # 添加SEARCHLIGHT 探照灯处理模块
  231 + set(SEARCHLIGHT_MODULE VERSION_SWITCH_ON)
  232 +
  233 + # 添加WARNLIGHT 警示灯处理模块
  234 + set(WARNLIGHT_MODULE VERSION_SWITCH_ON)
  235 +
  236 + # 添加喊话器模块
  237 + set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
  238 +
  239 + # 添加TTS模块
  240 + set(TTS_MODULE JZ_TTS_MODULE_1)
  241 +
  242 + # 添加FFMPEG及其附属模块
  243 + set(FFMPEG_MODULE VERSION_SWITCH_ON)
  244 +
  245 + #设备独立配置源文件
  246 + file(GLOB_RECURSE DEVICE_CONFOG_SRC ${ROOT_DIRS}JZsdk_Config/DeviceSample/JZ_U3_series/JZ_U3D/*.c)
  247 + list(APPEND ALL_SRC_FILES ${DEVICE_CONFOG_SRC})
  248 +
  249 + message("u3d基础配置完毕\n")
  250 +
  251 +elseif("${DEVICE_NAME}" STREQUAL "JZ_U30")
  252 +
  253 + # 添加AudioDeal 音频处理模块
  254 + set(AUDIODEAL_MODULE VERSION_SWITCH_ON)
  255 +
  256 + # 添加Gimbal 云台处理模块
  257 + set(GIMBAL_MODULE VERSION_SWITCH_ON)
  258 +
  259 + # 添加SEARCHLIGHT 探照灯处理模块
  260 + set(SEARCHLIGHT_MODULE VERSION_SWITCH_ON)
  261 +
  262 + # 添加WARNLIGHT 警示灯处理模块
  263 + set(WARNLIGHT_MODULE VERSION_SWITCH_ON)
  264 +
  265 + # 添加喊话器模块
  266 + set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
  267 +
  268 + # 添加TTS模块
  269 + set(TTS_MODULE JZ_TTS_MODULE_1)
  270 +
  271 + # 添加FFMPEG及其附属模块
  272 + set(FFMPEG_MODULE VERSION_SWITCH_ON)
  273 +
  274 + #设备独立配置源文件
  275 + file(GLOB_RECURSE DEVICE_CONFOG_SRC ${ROOT_DIRS}JZsdk_Config/DeviceSample/JZ_U3_series/JZ_U30/*.c)
  276 + list(APPEND ALL_SRC_FILES ${DEVICE_CONFOG_SRC})
  277 +
  278 + message("u30基础配置完毕\n")
  279 +
  280 +elseif("${DEVICE_NAME}" STREQUAL "JZ_H10")
  281 + # 添加AudioDeal 音频处理模块
  282 + set(AUDIODEAL_MODULE VERSION_SWITCH_ON)
  283 +
  284 + # 添加Gimbal 云台处理模块
  285 + set(GIMBAL_MODULE VERSION_SWITCH_ON)
  286 +
  287 + # 添加喊话器模块
  288 + set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
  289 +
  290 + # 添加TTS模块
  291 + set(TTS_MODULE JZ_TTS_MODULE_1)
  292 +
  293 + # 添加wringpi
  294 + set(WIRINGPI_MODULE VERSION_SWITCH_ON)
  295 +
  296 + # 添加FFMPEG及其附属模块
  297 + set(FFMPEG_MODULE VERSION_SWITCH_ON)
  298 +
  299 + #设备独立配置源文件
  300 + file(GLOB_RECURSE DEVICE_CONFOG_SRC ${ROOT_DIRS}JZsdk_Config/DeviceSample/JZ_H10_series/JZ_H10/*.c)
  301 + list(APPEND ALL_SRC_FILES ${DEVICE_CONFOG_SRC})
  302 +
  303 + message("h10基础配置完毕\n")
  304 +
  305 +elseif("${DEVICE_NAME}" STREQUAL "JZ_H10T")
  306 +
  307 + # 添加AudioDeal 音频处理模块
  308 + set(AUDIODEAL_MODULE VERSION_SWITCH_ON)
  309 +
  310 + # 添加Gimbal 云台处理模块
  311 + set(GIMBAL_MODULE VERSION_SWITCH_ON)
  312 +
  313 + # 添加喊话器模块
  314 + set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
  315 +
  316 + # 添加TTS模块
  317 + set(TTS_MODULE JZ_TTS_MODULE_1)
  318 +
  319 + # 添加FFMPEG及其附属模块
  320 + set(FFMPEG_MODULE VERSION_SWITCH_ON)
  321 +
  322 + #设备独立配置源文件
  323 + file(GLOB_RECURSE DEVICE_CONFOG_SRC ${ROOT_DIRS}JZsdk_Config/DeviceSample/JZ_H10_series/JZ_H10T/*.c)
  324 + list(APPEND ALL_SRC_FILES ${DEVICE_CONFOG_SRC})
  325 +
  326 + message("h10t基础配置完毕\n")
  327 +
  328 +elseif("${DEVICE_NAME}" STREQUAL "JZ_H150S")
  329 + # 添加AudioDeal 音频处理模块
  330 + set(AUDIODEAL_MODULE VERSION_SWITCH_ON)
  331 +
  332 + # 添加Gimbal 云台处理模块
  333 + set(GIMBAL_MODULE VERSION_SWITCH_ON)
  334 +
  335 + # 添加喊话器模块
  336 + set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
  337 +
  338 + # 添加TTS模块
  339 + set(TTS_MODULE JZ_TTS_MODULE_1)
  340 +
  341 + # 添加MediaProc 媒体管理模块
  342 + set(MEDIA_PROC_MODULE VERSION_SWITCH_ON)
  343 +
  344 + # 添加wringpi
  345 + set(WIRINGPI_MODULE VERSION_SWITCH_ON)
  346 +
  347 + # 添加FFMPEG及其附属模块
  348 + set(FFMPEG_MODULE VERSION_SWITCH_ON)
  349 +
  350 + #设备独立配置源文件
  351 + file(GLOB_RECURSE DEVICE_CONFOG_SRC ${ROOT_DIRS}JZsdk_Config/DeviceSample/JZ_H150S_H150T/*.c)
  352 + list(APPEND ALL_SRC_FILES ${DEVICE_CONFOG_SRC})
  353 +
  354 + message("h150s基础配置完毕\n")
  355 +
  356 +elseif("${DEVICE_NAME}" STREQUAL "JZ_H150T")
  357 +
  358 + # 添加AudioDeal 音频处理模块
  359 + set(AUDIODEAL_MODULE VERSION_SWITCH_ON)
  360 +
  361 + # 添加Gimbal 云台处理模块
  362 + set(GIMBAL_MODULE VERSION_SWITCH_ON)
  363 +
  364 + # 添加喊话器模块
  365 + set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
  366 +
  367 + # 添加TTS模块
  368 + set(TTS_MODULE JZ_TTS_MODULE_1)
  369 +
  370 + # 添加MediaProc 媒体管理模块
  371 + set(MEDIA_PROC_MODULE VERSION_SWITCH_ON)
  372 +
  373 + # 添加wringpi
  374 + set(WIRINGPI_MODULE VERSION_SWITCH_ON)
  375 +
  376 + # 添加FFMPEG及其附属模块
  377 + set(FFMPEG_MODULE VERSION_SWITCH_ON)
  378 +
  379 + #设备独立配置源文件
  380 + file(GLOB_RECURSE DEVICE_CONFOG_SRC ${ROOT_DIRS}JZsdk_Config/DeviceSample/JZ_H150S_H150T/*.c)
  381 + list(APPEND ALL_SRC_FILES ${DEVICE_CONFOG_SRC})
  382 +
  383 + message("h150t基础配置完毕\n")
  384 +
  385 +elseif("${DEVICE_NAME}" STREQUAL "JZ_C1")
  386 +
  387 + # 添加Gimbal 云台处理模块
  388 + set(GIMBAL_MODULE VERSION_SWITCH_ON)
  389 +
  390 + # 添加MediaProc 媒体管理模块
  391 + set(MEDIA_PROC_MODULE VERSION_SWITCH_ON)
  392 +
  393 + # 添加红外相机模块
  394 + set(IRC_MODULE VERSION_SWITCH_ON)
  395 +
  396 + # 添加昆腾模块
  397 + set(LIB_KT_MODULE VERSION_SWITCH_ON)
  398 +
  399 + #设备独立配置源文件
  400 + file(GLOB_RECURSE DEVICE_CONFOG_SRC ${ROOT_DIRS}JZsdk_Config/DeviceSample/JZC1/*.c)
  401 + list(APPEND ALL_SRC_FILES ${DEVICE_CONFOG_SRC})
  402 +
  403 + message("C1基础配置完毕\n")
  404 +
  405 +elseif("${DEVICE_NAME}" STREQUAL "JZ_ST")
  406 +
  407 + # 添加Gimbal 云台处理模块
  408 + set(GIMBAL_MODULE VERSION_SWITCH_ON)
  409 +
  410 + # 添加MediaProc 媒体管理模块
  411 + set(MEDIA_PROC_MODULE VERSION_SWITCH_ON)
  412 +
  413 + # 添加红外相机模块
  414 + set(IRC_MODULE VERSION_SWITCH_ON)
  415 +
  416 + # 添加飒特模块
  417 + set(LIB_SATIRC_MODULE VERSION_SWITCH_ON)
  418 +
  419 + #设备独立配置源文件
  420 + file(GLOB_RECURSE DEVICE_CONFOG_SRC ${ROOT_DIRS}JZsdk_Config/DeviceSample/JZ_ST/*.c)
  421 + list(APPEND ALL_SRC_FILES ${DEVICE_CONFOG_SRC})
  422 +
  423 + message("ST基础配置完毕\n")
  424 +
  425 +elseif("${DEVICE_NAME}" STREQUAL "JZ_H150A")
  426 +
  427 + # 添加WARNLIGHT 警示灯处理模块
  428 + set(WARNLIGHT_MODULE VERSION_SWITCH_ON)
  429 +
  430 + # 添加AudioDeal 音频处理模块
  431 + set(AUDIODEAL_MODULE VERSION_SWITCH_ON)
  432 +
  433 + # 添加喊话器模块
  434 + set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
  435 +
  436 + # 添加TTS模块
  437 + set(TTS_MODULE JZ_TTS_MODULE_2)
  438 +
  439 + # 添加FFMPEG及其附属模块
  440 + set(FFMPEG_MODULE VERSION_SWITCH_ON)
  441 +
  442 + #设备独立配置源文件
  443 + file(GLOB_RECURSE DEVICE_CONFOG_SRC ${ROOT_DIRS}JZsdk_Config/DeviceSample/JZ_H150A/*.c)
  444 + list(APPEND ALL_SRC_FILES ${DEVICE_CONFOG_SRC})
  445 +
  446 + message("JZ_H150A基础配置完毕\n")
  447 +
  448 +elseif("${DEVICE_NAME}" STREQUAL "JZ_T40S")
  449 +
  450 + # 添加Gimbal 云台处理模块
  451 + set(GIMBAL_MODULE VERSION_SWITCH_ON)
  452 +
  453 + # 添加WARNLIGHT 警示灯处理模块
  454 + set(WARNLIGHT_MODULE VERSION_SWITCH_ON)
  455 +
  456 + # 添加探照灯模块
  457 + set(SEARCHLIGHT_MODULE VERSION_SWITCH_ON)
  458 +
  459 + # 添加激光模块
  460 + set(SIDE_LASER_MODULE VERSION_SWITCH_ON)
  461 +
  462 + # 添加AudioDeal 音频处理模块
  463 + set(AUDIODEAL_MODULE VERSION_SWITCH_ON)
  464 +
  465 + # 添加speex音频处理模块
  466 + # set(SPEEX_MODULE VERSION_SWITCH_ON)
  467 +
  468 + # 添加喊话器模块
  469 + set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
  470 +
  471 + # 添加TTS模块
  472 + set(TTS_MODULE JZ_TTS_MODULE_2)
  473 +
  474 + # 添加FFMPEG及其附属模块
  475 + set(FFMPEG_MODULE VERSION_SWITCH_ON)
  476 +
  477 + #设备独立配置源文件
  478 + file(GLOB_RECURSE DEVICE_CONFOG_SRC ${ROOT_DIRS}JZsdk_Config/DeviceSample/JZ_T40_T40S/*.c)
  479 + list(APPEND ALL_SRC_FILES ${DEVICE_CONFOG_SRC})
  480 +
  481 + message("JZ_T40S基础配置完毕\n")
  482 +
  483 +elseif("${DEVICE_NAME}" STREQUAL "JZ_T40")
  484 +
  485 + # 添加Gimbal 云台处理模块
  486 + set(GIMBAL_MODULE VERSION_SWITCH_ON)
  487 +
  488 + # 添加WARNLIGHT 警示灯处理模块
  489 + set(WARNLIGHT_MODULE VERSION_SWITCH_ON)
  490 +
  491 + # 添加探照灯模块
  492 + set(SEARCHLIGHT_MODULE VERSION_SWITCH_ON)
  493 +
  494 + # 添加激光模块
  495 + set(SIDE_LASER_MODULE VERSION_SWITCH_ON)
  496 +
  497 + #设备独立配置源文件
  498 + file(GLOB_RECURSE DEVICE_CONFOG_SRC ${ROOT_DIRS}JZsdk_Config/DeviceSample/JZ_T40_T40S/*.c)
  499 + list(APPEND ALL_SRC_FILES ${DEVICE_CONFOG_SRC})
  500 +
  501 + message("JZ_T40基础配置完毕\n")
  502 +endif()
  503 +
  504 +message("***********************模组模块配置完毕*********************************\n")
  1 +# 第一方/第三方 模块加载文件
  2 +# 主要用于加载动态库给编译使用
  3 +# ${ROOT_DIRS}为cmakelist文件提供的工程根目录
  4 +
  5 +
  6 +if(${TTS_MODULE} STREQUAL "JZ_TTS_MODULE_1")
  7 + set(iFLYTEK_TTS_1_DIRS "${ROOT_DIRS}ThirdParty/iFLYTEK_TTS/lib/arm-cortexa9-linux-gnueabihf")
  8 + include_directories(${ROOT_DIRS}ThirdParty/iFLYTEK_TTS/include)
  9 + target_link_libraries(
  10 + ${PROJECT_NAME}
  11 + ${iFLYTEK_TTS_1_DIRS}/libmsc.so
  12 + )
  13 + message("讯飞一代TTS模块已加载\n")
  14 +endif()
  15 +
  16 +if(${TTS_MODULE} STREQUAL "JZ_TTS_MODULE_1")
  17 + set(ESPEAK_TTS_DIRS "${ROOT_DIRS}ThirdParty/Espeak/lib/arm-cortexa9-linux-gnueabihf")
  18 + include_directories(${ROOT_DIRS}ThirdParty/Espeak/include)
  19 + target_link_libraries(
  20 + ${PROJECT_NAME}
  21 + ${ESPEAK_TTS_DIRS}/libportaudio.so.2
  22 + ${ESPEAK_TTS_DIRS}/libTTS_Player.so
  23 + )
  24 + message("Espeak模块已加载\n")
  25 +endif()
  26 +
  27 +if(${TTS_MODULE} STREQUAL "JZ_TTS_MODULE_2")
  28 + set(iFLYTEK_TTS_2_DIRS "${ROOT_DIRS}ThirdParty/iFLYTEK_TTS_2/lib/arm-cortexa9-linux-gnueabihf")
  29 + include_directories(${ROOT_DIRS}ThirdParty/iFLYTEK_TTS_2/include)
  30 +
  31 + target_link_libraries(
  32 + ${PROJECT_NAME}
  33 + aikit
  34 + rt
  35 + )
  36 + message("讯飞二代TTS模块已加载\n")
  37 +endif()
  38 +
  39 +if(${ALSALIB_MODULE} STREQUAL "VERSION_SWITCH_ON")
  40 + set(ALSALIB_DIRS "${ROOT_DIRS}ThirdParty/AlsaLib/lib/arm-cortexa9-linux-gnueabihf")
  41 + include_directories(${ROOT_DIRS}ThirdParty/AlsaLib/include)
  42 + target_link_libraries(
  43 + ${PROJECT_NAME}
  44 + ${ALSALIB_DIRS}/libasound.so.2.0.0
  45 + )
  46 + message("alsalib已加载\n")
  47 +endif()
  48 +
  49 +if(${OPUS_MODULE} STREQUAL "VERSION_SWITCH_ON")
  50 + set(OPUS_DIRS "${ROOT_DIRS}ThirdParty/opus/lib/arm-cortexa9-linux-gnueabihf")
  51 + include_directories(${ROOT_DIRS}ThirdParty/opus/include)
  52 + target_link_libraries(
  53 + ${PROJECT_NAME}
  54 + ${OPUS_DIRS}/libopus.so
  55 + )
  56 + message("OPUS模块已加载\n")
  57 +endif()
  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 +
  72 +# if(${CedarxLib} STREQUAL "VERSION_SWITCH_ON")
  73 +# message("\nCedarX已加载\n")
  74 +# target_link_libraries(${PROJECT_NAME}
  75 +# ${ROOT_DIRS}ModuleLib/Camera/CedarX/libawh264.so
  76 +# ${ROOT_DIRS}ModuleLib/Camera/CedarX/libMemAdapter.so
  77 +# ${ROOT_DIRS}ModuleLib/Camera/CedarX/libVE.so
  78 +# ${ROOT_DIRS}ModuleLib/Camera/CedarX/libvencoder.so
  79 +# ${ROOT_DIRS}ModuleLib/Camera/CedarX/libvideoengine.so
  80 +# ${ROOT_DIRS}ModuleLib/Camera/CedarX/libvdecoder.so
  81 +# )
  82 +
  83 +# message("\n OpenCV已加载\n")
  84 +# target_link_libraries(${PROJECT_NAME}
  85 +# ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_calib3d.so
  86 +# ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_core.so
  87 +# ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_dnn.so
  88 +# ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_features2d.so
  89 +# ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_flann.so
  90 +# ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_highgui.so
  91 +# ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_imgcodecs.so
  92 +# ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_imgproc.so
  93 +# ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_ml.so
  94 +# ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_objdetect.so
  95 +# ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_photo.so
  96 +# ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_shape.so
  97 +# ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_stitching.so
  98 +# ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_superres.so
  99 +# ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_videoio.so
  100 +# ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_video.so
  101 +# ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_videostab.so
  102 +# )
  103 +
  104 +# message("\n ffmpeg已加载\n")
  105 +# target_link_libraries(${PROJECT_NAME}
  106 +# ${ROOT_DIRS}ModuleLib/ffmpeg/libavcodec.so
  107 +# ${ROOT_DIRS}ModuleLib/ffmpeg/libavdevice.so
  108 +# ${ROOT_DIRS}ModuleLib/ffmpeg/libavfilter.so
  109 +# ${ROOT_DIRS}ModuleLib/ffmpeg/libavformat.so
  110 +# ${ROOT_DIRS}ModuleLib/ffmpeg/libavutil.so
  111 +# ${ROOT_DIRS}ModuleLib/ffmpeg/libswresample.so
  112 +# ${ROOT_DIRS}ModuleLib/ffmpeg/libswscale.so
  113 +# )
  114 +
  115 +# message("\n SearchLightCenter已加载\n")
  116 +# target_link_libraries(${PROJECT_NAME}
  117 +# ${ROOT_DIRS}ModuleLib/SearchLightCenter/libcenter.so
  118 +# )
  119 +
  120 +# endif()
  121 +
  122 +# ffmpeg库加载
  123 +if(${FFMPEG_MODULE} STREQUAL "VERSION_SWITCH_ON")
  124 + message("\nffmpeg模块加载\n")
  125 +
  126 +#根据编译链进行加载
  127 +if(${MAKE_COMPILER} STREQUAL "ARM_CORTEXA9_LINUX")
  128 + message("ARM_CORTEXA9_LINUX\n")
  129 + set(FFMPEG_6_0_DIRS "${ROOT_DIRS}ThirdParty/ffmpeg_6_0/lib/arm-cortexa9-linux-gnueabihf")
  130 + include_directories(${ROOT_DIRS}ThirdParty/ffmpeg_6_0/include)
  131 + target_link_libraries(
  132 + ${PROJECT_NAME}
  133 + ${FFMPEG_6_0_DIRS}/libavcodec.so.60
  134 + ${FFMPEG_6_0_DIRS}/libavdevice.so.60
  135 + ${FFMPEG_6_0_DIRS}/libavfilter.so.9
  136 + ${FFMPEG_6_0_DIRS}/libavformat.so.60
  137 + ${FFMPEG_6_0_DIRS}/libavutil.so.58
  138 + ${FFMPEG_6_0_DIRS}/libpostproc.so.57
  139 + ${FFMPEG_6_0_DIRS}/libswresample.so.4
  140 + ${FFMPEG_6_0_DIRS}/libswscale.so.7
  141 + )
  142 +
  143 + message("x264模块已加载\n")
  144 + set(X264_DIRS "${ROOT_DIRS}ThirdParty/x264_2245/lib/arm-cortexa9-linux-gnueabihf")
  145 + include_directories(${ROOT_DIRS}ThirdParty/x264_2245/include)
  146 + target_link_libraries(
  147 + ${PROJECT_NAME}
  148 + ${X264_DIRS}/libx264.so.157
  149 + )
  150 +
  151 + message("FDK_AAC模块已加载\n")
  152 + set(FDK_AAC_DIRS "${ROOT_DIRS}ThirdParty/fdk_aac_2_0_3/lib/arm-cortexa9-linux-gnueabihf")
  153 + include_directories(${ROOT_DIRS}ThirdParty/fdk_aac_2_0_3/include)
  154 + target_link_libraries(
  155 + ${PROJECT_NAME}
  156 + ${FDK_AAC_DIRS}/libfdk-aac.so.2
  157 + )
  158 +endif()
  159 +
  160 +#根据编译链进行加载
  161 +if(${MAKE_COMPILER} STREQUAL "LINARO_ARM_CORTEX_LINUX")
  162 + message("LINARO_ARM_CORTEX_LINUX\n")
  163 + set(FFMPEG_6_0_DIRS "${ROOT_DIRS}ThirdParty/ffmpeg_6_0/lib/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf")
  164 + include_directories(${ROOT_DIRS}ThirdParty/ffmpeg_6_0/include)
  165 + target_link_libraries(
  166 + ${PROJECT_NAME}
  167 + ${FFMPEG_6_0_DIRS}/libavcodec.so.60
  168 + ${FFMPEG_6_0_DIRS}/libavdevice.so.60
  169 + ${FFMPEG_6_0_DIRS}/libavfilter.so.9
  170 + ${FFMPEG_6_0_DIRS}/libavformat.so.60
  171 + ${FFMPEG_6_0_DIRS}/libavutil.so.58
  172 + ${FFMPEG_6_0_DIRS}/libpostproc.so.57
  173 + ${FFMPEG_6_0_DIRS}/libswresample.so.4
  174 + ${FFMPEG_6_0_DIRS}/libswscale.so.7
  175 + )
  176 +
  177 + message("x264模块已加载\n")
  178 + set(X264_DIRS "${ROOT_DIRS}ThirdParty/x264_2245/lib/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf")
  179 + include_directories(${ROOT_DIRS}ThirdParty/x264_2245/include)
  180 + target_link_libraries(
  181 + ${PROJECT_NAME}
  182 + ${X264_DIRS}/libx264.so.157
  183 + )
  184 +
  185 + message("FDK_AAC模块已加载\n")
  186 + set(FDK_AAC_DIRS "${ROOT_DIRS}ThirdParty/fdk_aac_2_0_3/lib/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf")
  187 + include_directories(${ROOT_DIRS}ThirdParty/fdk_aac_2_0_3/include)
  188 + target_link_libraries(
  189 + ${PROJECT_NAME}
  190 + ${FDK_AAC_DIRS}/libfdk-aac.so.2
  191 + )
  192 +endif()
  193 +
  194 +endif()
  195 +
  196 +#RK_mmp库
  197 +if(${LIB_RK_MMP} STREQUAL "VERSION_SWITCH_ON")
  198 + message("RK_MMP库已加载\n")
  199 + add_definitions(-DMACRO_RK_MPP_MODULE) #加载模块
  200 +
  201 + include_directories(${ROOT_DIRS}/ThirdParty/RK_mmp/aarch64-none-linux-gnu/include)
  202 + target_link_libraries(
  203 + ${PROJECT_NAME}
  204 + ${ROOT_DIRS}/ThirdParty/RK_mmp/aarch64-none-linux-gnu/lib/librockchip_mpp.so.0
  205 + ${ROOT_DIRS}/ThirdParty/RK_mmp/aarch64-none-linux-gnu/lib/librockchip_vpu.so.0
  206 + )
  207 +endif()
  208 +
  209 +#RK_rgb库
  210 +if(${LIB_RK_RGB} STREQUAL "VERSION_SWITCH_ON")
  211 + message("RK_RGB库已加载\n")
  212 + add_definitions(-DMACRO_RK_RGA_MODULE) #加载模块
  213 +
  214 + include_directories(${ROOT_DIRS}/ThirdParty/RK_rga/aarch64-none-linux-gnu/include)
  215 + target_link_libraries(
  216 + ${PROJECT_NAME}
  217 + ${ROOT_DIRS}/ThirdParty/RK_rga/aarch64-none-linux-gnu/lib/librga.so
  218 + )
  219 +endif()
  220 +
  221 +#usb库
  222 +if(${LIB_USB} STREQUAL "VERSION_SWITCH_ON")
  223 + add_definitions(-DMACRO_USB_MODULE) #加载usb模块
  224 +
  225 + message("USB库已加载\n")
  226 + include_directories(${ROOT_DIRS}/ThirdParty/libusb/aarch64-none-linux-gnu/include)
  227 + target_link_libraries(
  228 + ${PROJECT_NAME}
  229 + ${ROOT_DIRS}/ThirdParty/libusb/aarch64-none-linux-gnu/lib/libusb-1.0.so.0.4.0
  230 + )
  231 +
  232 + message("udev库已加载\n")
  233 +
  234 + include_directories(${ROOT_DIRS}/ThirdParty/udev/aarch64-none-linux-gnu/include)
  235 + target_link_libraries(
  236 + ${PROJECT_NAME}
  237 + ${ROOT_DIRS}/ThirdParty/udev/aarch64-none-linux-gnu/lib/libudev.so.1.6.3
  238 + )
  239 +endif()
  240 +
  241 +#kt_IRC库
  242 +if(${LIB_KT_IRC} STREQUAL "VERSION_SWITCH_ON")
  243 +
  244 + add_definitions(-DMACRO_KTIRC_MODULE)
  245 +
  246 + message("ktIRC库已加载\n")
  247 + include_directories(${ROOT_DIRS}/ThirdParty/KT_IRC/include)
  248 + target_link_libraries(
  249 + ${PROJECT_NAME}
  250 + ${ROOT_DIRS}/ThirdParty/KT_IRC/aarch64-none-linux-gnu/lib/libm330aarchx64.so
  251 + )
  252 +
  253 +endif()
  254 +
  255 +#飒特 IRC库
  256 +if(${LIB_SAT_IRC} STREQUAL "VERSION_SWITCH_ON")
  257 +
  258 + add_definitions(-DMACRO_SATIRC_MODULE)
  259 +
  260 + message("STIRC库已加载\n")
  261 + include_directories(${ROOT_DIRS}/ThirdParty/SatIrcLib/include)
  262 + target_link_libraries(
  263 + ${PROJECT_NAME}
  264 + ${ROOT_DIRS}/ThirdParty/SatIrcLib/aarch64-none-linux-gnu/lib/libsatir.so
  265 + )
  266 +
  267 +endif()
  268 +
  269 +message("**************************动态库加载完毕***************************\n")
  1 +message("开始库搜索")
  2 +
  3 +if(${TTS_MODULE} STREQUAL "JZ_TTS_MODULE_2")
  4 + link_directories(${ROOT_DIRS}ThirdParty/iFLYTEK_TTS_2/lib/arm-cortexa9-linux-gnueabihf)
  5 +
  6 + message("讯飞二代TTSLib已搜索\n")
  7 +endif()
  1 +{
  2 + "configurations": [
  3 + {
  4 + "inheritEnvironments": [
  5 + "msvc_x86"
  6 + ],
  7 + "name": "x86-Debug",
  8 + "includePath": [
  9 + "${env.INCLUDE}",
  10 + "${workspaceRoot}\\**"
  11 + ],
  12 + "defines": [
  13 + "WIN32",
  14 + "_DEBUG",
  15 + "UNICODE",
  16 + "_UNICODE"
  17 + ],
  18 + "intelliSenseMode": "windows-msvc-x86"
  19 + }
  20 + ]
  21 +}
  1 +#include <stdio.h>
  2 +#include "JZsdkLib.h"
  3 +
  4 +#include "./JZsdk_TaskManagement/TaskManagement.h"
  5 +
  6 +static T_JZsdkReturnCode JZsdk_PrepareSystemEnvironment()
  7 +{
  8 + T_JZsdkReturnCode ret;
  9 +
  10 + ret = JZsdk_OsalInit();
  11 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  12 + {
  13 +
  14 + }
  15 + else
  16 + {
  17 + JZSDK_LOG_INFO("JZSDK_OSAL_INIT_SUCCESS");
  18 + }
  19 +
  20 + return ret;
  21 +}
  22 +
  23 +
  24 +//初始化sdk
  25 +T_JZsdkReturnCode JZsdk_LibInit(int LogFlag)
  26 +{
  27 + //环境初始化
  28 + JZsdk_PrepareSystemEnvironment();
  29 +
  30 + if (LogFlag == JZ_FLAGCODE_ON)
  31 + {
  32 + //1、初始化log
  33 + JZsdk_LoggerInit();
  34 + }
  35 +
  36 + //2、任务管理系统初始化
  37 + TaskManagement_Init();
  38 +
  39 + JZSDK_LOG_INFO("JZSDK_LIB_INIT_SUCCESS");
  40 +}
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdkLib.h
  4 + * JZsdk的头文件
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDKLIB_H
  11 +#define JZSDKLIB_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +#include "JZsdk_Base/JZsdkBase.h"
  22 +#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
  23 +
  24 +#include "JZsdk_CommonFuntion/JZsdkCommonFuntion.h"
  25 +#include "JZsdk_TaskManagement/TaskManagement.h"
  26 +/* Exported types ------------------------------------------------------------*/
  27 +
  28 +/* Exported functions --------------------------------------------------------*/
  29 +T_JZsdkReturnCode JZsdk_LibInit(int LogFlag);
  30 +
  31 +
  32 +#ifdef __cplusplus
  33 +}
  34 +#endif
  35 +
  36 +#endif
  37 +/************************ (C) COPYRIGHT DJI Innovations *******END OF FILE******/
  1 +#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
  2 +#include <string.h>
  3 +#include <pthread.h> // 添加线程互斥锁支持
  4 +#include "JZring.h"
  5 +
  6 +typedef struct T_JZring
  7 +{
  8 + U8_t *buffer; // 缓冲区指针
  9 + U32_t size; // 缓冲区总容量
  10 + U32_t head; // 写入位置(下一个可写位置)
  11 + U32_t tail; // 读取位置(下一个可读位置)
  12 + U32_t count; // 当前数据量
  13 + pthread_mutex_t mutex; // 互斥锁保护共享资源
  14 +} T_JZring;
  15 +
  16 +// 初始化环形缓冲区
  17 +T_JZsdkReturnCode JZring_Init(T_JZringHandle *ring, U8_t *buffer, U32_t size)
  18 +{
  19 + if (!ring || !buffer || size == 0)
  20 + {
  21 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  22 + }
  23 +
  24 + T_JZring *r = (T_JZring*)malloc(sizeof(T_JZring));
  25 + if (!r) {
  26 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  27 + }
  28 +
  29 + // 初始化互斥锁
  30 + if (pthread_mutex_init(&r->mutex, NULL) != 0) {
  31 + free(r);
  32 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  33 + }
  34 +
  35 + r->buffer = buffer;
  36 + r->size = size;
  37 + r->head = 0;
  38 + r->tail = 0;
  39 + r->count = 0;
  40 +
  41 + *ring = (T_JZringHandle)r;
  42 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  43 +}
  44 +
  45 +// 获取缓冲区总容量
  46 +T_JZsdkReturnCode JZring_GetSize(T_JZringHandle ring, U32_t *size)
  47 +{
  48 + if (!ring || !size) {
  49 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  50 + }
  51 +
  52 + T_JZring *r = (T_JZring*)ring;
  53 +
  54 + pthread_mutex_lock(&r->mutex);
  55 + *size = r->size;
  56 + pthread_mutex_unlock(&r->mutex);
  57 +
  58 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  59 +}
  60 +
  61 +// 获取当前数据量
  62 +T_JZsdkReturnCode JZring_GetDataCount(T_JZringHandle ring, U32_t *count)
  63 +{
  64 + if (!ring || !count) {
  65 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  66 + }
  67 +
  68 + T_JZring *r = (T_JZring*)ring;
  69 +
  70 + pthread_mutex_lock(&r->mutex);
  71 + *count = r->count;
  72 + pthread_mutex_unlock(&r->mutex);
  73 +
  74 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  75 +}
  76 +
  77 +// 从环形缓冲区读取数据
  78 +T_JZsdkReturnCode JZring_Read(T_JZringHandle ring, U8_t *data, U32_t size, U32_t *readSize)
  79 +{
  80 + if (!ring || !data || !readSize) {
  81 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  82 + }
  83 +
  84 + T_JZring *r = (T_JZring*)ring;
  85 + *readSize = 0;
  86 +
  87 + pthread_mutex_lock(&r->mutex);
  88 +
  89 + if (r->count == 0 || size == 0) {
  90 + pthread_mutex_unlock(&r->mutex);
  91 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  92 + }
  93 +
  94 + // 计算实际可读数量
  95 + U32_t bytes_to_read = (size > r->count) ? r->count : size;
  96 + *readSize = bytes_to_read;
  97 +
  98 + // 计算连续可读空间(可能被尾部分割)
  99 + U32_t contig = r->size - r->tail;
  100 + if (bytes_to_read <= contig) {
  101 + memcpy(data, r->buffer + r->tail, bytes_to_read);
  102 + } else {
  103 + memcpy(data, r->buffer + r->tail, contig);
  104 + memcpy(data + contig, r->buffer, bytes_to_read - contig);
  105 + }
  106 +
  107 + // 更新读指针和数据计数
  108 + r->tail = (r->tail + bytes_to_read) % r->size;
  109 + r->count -= bytes_to_read;
  110 +
  111 + pthread_mutex_unlock(&r->mutex);
  112 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  113 +}
  114 +
  115 +// 写入数据到环形缓冲区
  116 +T_JZsdkReturnCode JZring_Write(T_JZringHandle ring, const U8_t *data, U32_t size)
  117 +{
  118 + if (!ring || !data) {
  119 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  120 + }
  121 +
  122 + if (size == 0) {
  123 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  124 + }
  125 +
  126 + T_JZring *r = (T_JZring*)ring;
  127 +
  128 + pthread_mutex_lock(&r->mutex);
  129 +
  130 + // 直接检查可用空间
  131 + if (size > (r->size - r->count))
  132 + {
  133 + pthread_mutex_unlock(&r->mutex);
  134 + return JZ_ERROR_SYSTEM_MODULE_CODE_BUFFER_SIZE_NOT_ENOUGH;
  135 + }
  136 +
  137 + // 计算连续可写空间(可能被尾部分割)
  138 + U32_t contig = r->size - r->head;
  139 + if (size <= contig) {
  140 + memcpy(r->buffer + r->head, data, size);
  141 + } else {
  142 + memcpy(r->buffer + r->head, data, contig);
  143 + memcpy(r->buffer, data + contig, size - contig);
  144 + }
  145 +
  146 + // 更新写指针和数据计数
  147 + r->head = (r->head + size) % r->size;
  148 + r->count += size;
  149 +
  150 + pthread_mutex_unlock(&r->mutex);
  151 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  152 +}
  153 +
  154 +// 获取空闲空间
  155 +T_JZsdkReturnCode JZring_GetFreeSpace(T_JZringHandle ring, U32_t *size)
  156 +{
  157 + if (!ring || !size) {
  158 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  159 + }
  160 +
  161 + T_JZring *r = (T_JZring*)ring;
  162 +
  163 + pthread_mutex_lock(&r->mutex);
  164 + *size = r->size - r->count;
  165 + pthread_mutex_unlock(&r->mutex);
  166 +
  167 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  168 +}
  169 +
  170 +// 检查缓冲区是否为空
  171 +T_JZsdkReturnCode JZring_IsEmpty(T_JZringHandle ring, bool *isEmpty)
  172 +{
  173 + if (!ring || !isEmpty) {
  174 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  175 + }
  176 +
  177 + T_JZring *r = (T_JZring*)ring;
  178 +
  179 + pthread_mutex_lock(&r->mutex);
  180 + *isEmpty = (r->count == 0);
  181 + pthread_mutex_unlock(&r->mutex);
  182 +
  183 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  184 +}
  185 +
  186 +// 检查缓冲区是否已满
  187 +T_JZsdkReturnCode JZring_IsFull(T_JZringHandle ring, bool *isFull)
  188 +{
  189 + if (!ring || !isFull) {
  190 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  191 + }
  192 +
  193 + T_JZring *r = (T_JZring*)ring;
  194 +
  195 + pthread_mutex_lock(&r->mutex);
  196 + *isFull = (r->count == r->size);
  197 + pthread_mutex_unlock(&r->mutex);
  198 +
  199 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  200 +}
  201 +
  202 +// 重置环形缓冲区
  203 +T_JZsdkReturnCode JZring_Reset(T_JZringHandle ring)
  204 +{
  205 + if (!ring) {
  206 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  207 + }
  208 +
  209 + T_JZring *r = (T_JZring*)ring;
  210 +
  211 + pthread_mutex_lock(&r->mutex);
  212 + r->head = 0;
  213 + r->tail = 0;
  214 + r->count = 0;
  215 + pthread_mutex_unlock(&r->mutex);
  216 +
  217 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  218 +}
  219 +
  220 +// 反初始化环形缓冲区
  221 +T_JZsdkReturnCode JZring_DeInit(T_JZringHandle ring)
  222 +{
  223 + if (!ring) {
  224 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  225 + }
  226 +
  227 + T_JZring *r = (T_JZring*)ring;
  228 +
  229 + // 销毁互斥锁
  230 + pthread_mutex_destroy(&r->mutex);
  231 +
  232 + // 释放管理结构体
  233 + free(r);
  234 +
  235 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  236 +}
  1 +/**
  2 + ********************************************************************
  3 + * @file JZring.h
  4 + * 环形缓冲区
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZ_RING_H
  11 +#define JZ_RING_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 +typedef void* T_JZringHandle;
  22 +
  23 +/* Exported types ------------------------------------------------------------*/
  24 +
  25 +
  26 +/* Exported functions --------------------------------------------------------*/
  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);
  30 +
  31 +T_JZsdkReturnCode JZring_GetDataCount(T_JZringHandle ring, U32_t *count);
  32 +T_JZsdkReturnCode JZring_Reset(T_JZringHandle ring);
  33 +T_JZsdkReturnCode JZring_DeInit(T_JZringHandle ring);
  34 +
  35 +#ifdef __cplusplus
  36 +}
  37 +#endif
  38 +
  39 +#endif
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdkBase.h
  4 + * JZsdk基础部件的头文件
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDKBASE_H
  11 +#define JZSDKBASE_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +#include "JZsdk_Logger/JZsdk_Logger.h"
  22 +#include "JZsdk_Code/JZsdk_FLagCode.h"
  23 +#include "JZsdk_Osal/JZsdk_Osal.h"
  24 +
  25 +/* Exported types ------------------------------------------------------------*/
  26 +
  27 +
  28 +/* Exported functions --------------------------------------------------------*/
  29 +
  30 +
  31 +#ifdef __cplusplus
  32 +}
  33 +#endif
  34 +
  35 +#endif
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_Code.h
  4 + * 用于记录各类码的表
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_CODE_H
  11 +#define JZSDK_CODE_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +
  22 +#include "./JZsdk_typedef/JZsdk_typedef.h"
  23 +#include "./JZsdk_typedef/JZsdk_AttributeDef.h"
  24 +
  25 +#include "./JZsdk_ReturnCode/JZsdk_ReturnCode.h"
  26 +#include "./JZsdk_Platform/JZsdk_Platform.h"
  27 +
  28 +
  29 +#include "./JZsdk_InsCode.h"
  30 +#include "./JZsdk_FLagCode.h"
  31 +#include "./JZsdk_WidgetCode.h"
  32 +#include "./JZsdk_DeviceCode.h"
  33 +#include "./JZsdk_DefineCode.h"
  34 +
  35 +/* Exported types ------------------------------------------------------------*/
  36 +
  37 +
  38 +/* Exported functions --------------------------------------------------------*/
  39 +
  40 +#ifdef __cplusplus
  41 +}
  42 +#endif
  43 +
  44 +#endif
  1 +#include <stdio.h>
  2 +#include "./JZsdk_DefineCode.h"
  3 +
  4 +unsigned char * JZsdk_DefineCode_GetPortName(int Port)
  5 +{
  6 + switch (Port)
  7 + {
  8 + case UART_4G:
  9 + return "设备4G";
  10 + break;
  11 +
  12 + case UART_DEV_1:
  13 + return "设备UART1";
  14 + break;
  15 +
  16 + case UART_DEV_2:
  17 + return "设备UART2";
  18 + break;
  19 +
  20 + case HAL_DATA_TRANSMISSION:
  21 + return "HAL数据";
  22 + break;
  23 +
  24 + case NET_DEV_1:
  25 + return "设备NET1";
  26 + break;
  27 +
  28 + case NO_SPECIFIED:
  29 + return "无指定设备";
  30 + break;
  31 +
  32 + default:
  33 + return "无指定设备";
  34 + break;
  35 + }
  36 +}
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_DefiningCode.h
  4 + * 用于记录各种定义类型的表
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_DEFININGCODE_H
  11 +#define JZSDK_DEFININGCODE_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C"
  17 +{
  18 +#endif
  19 +
  20 +/* Exported constants --------------------------------------------------------*/
  21 +/* 常亮定义*/
  22 +
  23 +/* Exported types ------------------------------------------------------------*/
  24 +typedef enum JZ_DEVICE_PORT_TYPE
  25 +{
  26 + DEVICE_PSDK = 0x0000, // psdk功能
  27 +
  28 + UART_4G = 0x0010, // 4G功能
  29 + UART_DEV_1 = 0x0011, // 1号设备功能
  30 + UART_DEV_2 = 0x0012, // 2号设备功能
  31 + UART_DEV_3 = 0x0013, // 3号设备功能
  32 + UART_DEV_4 = 0x0014, // 4号设备功能
  33 + UART_DEV_5 = 0x0015, // 5号设备功能
  34 +
  35 + USB_DEV_1 = 0x0020, // usb设备
  36 + USB_DEV_2 = 0x0021, // usb设备
  37 + USB_DEV_3 = 0x0022, // usb设备
  38 + USB_DEV_4 = 0x0023, // usb设备
  39 + USB_DEV_5 = 0x0024, // usb设备
  40 +
  41 + NET_DEV_1 = 0x0030, // 网络设备
  42 + NET_DEV_2 = 0x0031, // 网络设备
  43 + NET_DEV_3 = 0x0032, // 网络设备
  44 +
  45 + HAL_DATA_TRANSMISSION = 0x0040, // hal定制的特殊数据传播
  46 +
  47 + HAL_MAX = 0x0050, // hal最大值
  48 +
  49 + COMBINE_DEVICE = 0x1998, // 组合设备
  50 + NO_SPECIFIED = 0x1999, // 无制定设备
  51 +} JZ_DEVICE_PORT_TYPE;
  52 +
  53 +typedef enum JZ_MODULE_CONTROL_WAY
  54 +{
  55 + JZ_MODULE_CONTROL_WAY_INDEPENDENT = 0x1000, // 独立控制
  56 + JZ_MODULE_CONTROL_WAY_TRANSPARENT = 0x1001, //透传控制
  57 +}JZ_MODULE_CONTROL_WAY; // 模块控制方式
  58 +
  59 +typedef enum JZ_DATA_TRANS_TYPE
  60 +{
  61 + JZ_DATA_TRANS_TYPE_REAL_TIME_MP2 = 0x1000, // 实时mp2数据传输中
  62 + JZ_DATA_TRANS_TYPE_AUDIO_FILE = 0x1001, // 音频文件传输中
  63 + JZ_DATA_TRANS_TYPE_OPUS_FILE = 0x1002, // opus文件传输中
  64 + JZ_DATA_TRANS_TYPE_REAL_TIME_OPUS = 0x1003, // 实时opus传输中
  65 + JZ_DATA_TRANS_TYPE_TTS = 0x1004, //TTS传输模式
  66 +}JZ_DATA_TRANS_TYPE;
  67 +
  68 +/* Exported functions --------------------------------------------------------*/
  69 +unsigned char * JZsdk_DefineCode_GetPortName(int Port);
  70 +
  71 +#ifdef __cplusplus
  72 +}
  73 +#endif
  74 +
  75 +#endif
  1 +#include <stdio.h>
  2 +#include "./JZsdk_DeviceCode.h"
  3 +
  4 +/*************************
  5 + *
  6 + * 获取设备名称
  7 + *
  8 + *
  9 + * ************************/
  10 +unsigned char *JZsdk_GetDeviceName()
  11 +{
  12 +
  13 +}
  14 +
  1 +/* ********************************************************************
  2 +*
  3 +* 用来规范version_choose的参数
  4 +*
  5 +***********************************************/
  6 +#ifndef JZSDK_DEVICE_CODE_H
  7 +#define JZSDK_DEVICE_CODE_H
  8 +
  9 +//特殊版本号
  10 +#define SPECIAL_NORMAL 0x01 //普通版本
  11 +#define SPECIAL_DAOTONG 0x02 //道通版本
  12 +#define SPECIAL_H10_M300 0x03 //h10 m300版本
  13 +
  14 +//软件模式
  15 +#define APP_PSDK 0x01
  16 +#define APP_UART 0x02
  17 +#define APP_TEST 0x03
  18 +#define APP_ATTENTION 0x04
  19 +
  20 +//平台选择
  21 +#define PLATFORM_H3 0x01
  22 +#define PLATFORM_V3S 0x02
  23 +
  24 +//固件属地
  25 +#define OVERSEAS_VERSION 0x01
  26 +#define DOMESTIC_VERSION 0x02
  27 +
  28 +//加载开关
  29 +#define VERSION_SWITCH_ON 0x0001 //加载
  30 +#define VERSION_SWITCH_OFF 0x0000 //不加载
  31 +
  32 +//设备选择
  33 +#define JZ_H1E 0x11
  34 +
  35 +#define JZ_H1T 0x16
  36 +
  37 +#define JZ_U3 0x17
  38 +#define JZ_U3S 0x18
  39 +#define JZ_U3D 0x19
  40 +#define JZ_U30 0x1A
  41 +
  42 +#define JZ_T40S 0x1C
  43 +#define JZ_T40_LEFT_GIMBAL 0x1C11
  44 +#define JZ_T40_RIGHT_GIMBAL 0x1C12
  45 +#define JZ_T40_LEFT_LIGHT 0x1C21
  46 +#define JZ_T40_RIGHT_LIGHT 0x1C22
  47 +#define JZ_T40 0x1D
  48 +
  49 +#define JZ_H150S 0x13
  50 +#define JZ_H150T 0x15
  51 +#define JZ_H150A 0x1E
  52 +
  53 +#define JZ_H10 0x12
  54 +#define JZ_H10T 0x14
  55 +
  56 +
  57 +#define TF_A1 0x1010
  58 +#define JZ_C1 0x1011
  59 +#define JZ_ST 0x1012
  60 +
  61 +
  62 +/***********************************
  63 + *
  64 + * 已退出历史舞台
  65 + *
  66 + * *********************************/
  67 +
  68 +// //音频滤波的方式
  69 +// //目前只有和h10使用带阻滤波
  70 +// #define DIRECTED_STOPBAND_FILTERING 0x10001 //带阻滤波
  71 +// #define HIGH_PASS_FILTERING 0x10002 //高通滤波
  72 +// #define INTERGRATED_FILTERING_1 0x10003 //综合滤波1代
  73 +
  74 +
  75 +#endif
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_FLagCode.h
  4 + * 用于标识码的表
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_FLAGCODE_H
  11 +#define JZSDK_FLAGCODE_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +
  22 +typedef enum JZ_Flag_Code{
  23 + JZ_FLAGCODE_OFF = 0x0000,
  24 + JZ_FLAGCODE_ON = 0x0001,
  25 + JZ_FLAGCODE_GET = 0x0010, //获取指令
  26 + JZ_FLAGCODE_SET = 0x0011, //设置指令
  27 +
  28 + JZ_FLAGCODE_NORMAL = 0x00FF, //默认模式
  29 +} JZ_Flag_Code;
  30 +
  31 +/* Exported types ------------------------------------------------------------*/
  32 +
  33 +
  34 +/* Exported functions --------------------------------------------------------*/
  35 +
  36 +#ifdef __cplusplus
  37 +}
  38 +#endif
  39 +
  40 +#endif
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_InsCode.h
  4 + * 用于错误码的表
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_INSCODE_H
  11 +#define JZSDK_INSCODE_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +
  22 +typedef enum {
  23 +
  24 +//5A类帧
  25 + JZ_INSCODE_5AFRAME_FRAME = 0x10000000, //接收类帧
  26 +
  27 + JZ_INSCODE_5AFRAME_ASKFORCONNECT = 0x10000100, //申请连接
  28 + JZ_INSCODE_5AFRAME_HEARTBEAT = 0x10000101, //心跳帧
  29 + JZ_INSCODE_5AFRAME_TIMESTAMP = 0x10000102, //时间戳帧
  30 + JZ_INSCODE_5AFRAME_ALL_VERSION = 0x10000103, //全版本查询
  31 + JZ_INSCODE_5AFRAME_ALL_SERIAL_NUMBER = 0x10000104, //全序列号查询
  32 + JZ_INSCODE_5AFRAME_LOG_MESSAGE_PRINTF = 0x10000105, //log信息打印
  33 + JZ_INSCODE_5AFRAME_DEVICE_MESSAGE = 0x10000106, //设备信息
  34 +
  35 + JZ_INSCODE_5AFRAME_CHECKSTATUS_DEVICE_TYPE_VERSION = 0x5A5A5059, //查询设备类型版本号
  36 +
  37 + JZ_INSCODE_5AFRAME_FRAME_POWER_STATUS = 0x10000110, //电源状态设置
  38 +
  39 + JZ_INSCODE_5AFRAME_PRESET_TASK = 0x10000120, //预置任务
  40 + JZ_INSCODE_5AFRAME_SYNCHRONIZES_TASK_TIME = 0x10000121, //任务同步时间帧
  41 +
  42 + JZ_INSCODE_5AFRAME_REALTIMEMP2_START = 0x10000200, //开启实时MP2
  43 + JZ_INSCODE_5AFRAME_REALTIMEMP2_UNLIMIT_TRANSMISSION = 0x10000201, //无限制传输实时MP2
  44 + JZ_INSCODE_5AFRAME_REALTIMEMP2_STOP = 0x10000202, //结束实时MP2
  45 + JZ_INSCODE_5AFRAME_REALTIMEMP2_LIMIT_TRANSMISSION = 0x10000203, //有限制传输MP2
  46 +
  47 +
  48 + JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_START = 0x10000300, //打开音频文件上传
  49 + JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_UNLIMIT_TRANSMISSION = 0x10000301, //无限制传输音频文件
  50 + JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_STOP = 0x10000302, //关闭音频文件上传
  51 + JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_LIMIT_TRANSMISSION = 0x10000303, //定长传输音频文件
  52 + JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_LIMIT_TRANSMISSION_2 = 0x5A5A5105, //定长传输音频文件2型
  53 + JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_STOP_AND_CHECK = 0x10000304, //关闭音频文件上传并校验
  54 +
  55 + JZ_INSCODE_5AFRAME_AUDIO_PLAYFILE = 0x10000400, //播放指定音频
  56 + JZ_INSCODE_5AFRAME_AUDIO_CONTINUE = 0x10000401, //音频继续播放
  57 + JZ_INSCODE_5AFRAME_AUDIO_PAUSE = 0x10000402, //音频暂停播放
  58 + JZ_INSCODE_5AFRAME_AUDIO_STOP = 0x10000403, //音频停止播放
  59 +
  60 + JZ_INSCODE_5AFRAME_AUDIO_LASTSONG = 0x10000410, //音频上一曲
  61 + JZ_INSCODE_5AFRAME_AUDIO_NEXTSONG = 0x10000411, //音频下一曲
  62 +
  63 + JZ_INSCODE_5AFRAME_AUDIO_GETMUSICLIST = 0x10000420, //获取音频列表
  64 +
  65 +
  66 + JZ_INSCODE_5AFRAME_AMPLIFIER_STOP = 0x10000500, //强制关闭功放
  67 + JZ_INSCODE_5AFRAME_AMPLIFIER_OPEN = 0x10000501, //强制开启功放
  68 + JZ_INSCODE_5AFRAME_AMPLIFIER_AUTO = 0x10000502, //恢复自动功放
  69 +
  70 + JZ_INSCODE_5AFRAME_VOLUME = 0x10000600, //调节音量
  71 +
  72 + JZ_INSCODE_5AFRAME_CHECKSTATUS_VOLUME = 0x10000620, //查询音量
  73 + JZ_INSCODE_5AFRAME_CHECKSTATUS_PLAY = 0x10000621, //查询播放状态
  74 + JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL = 0x10000622, //查询云台角度
  75 + JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL_FINETUNING = 0x10000623, //查询云台微调角度
  76 +
  77 + JZ_INSCODE_5AFRAME_CHECKSTATUS_PLAYFILENAME = 0x10000624, //查询播放文件名
  78 + JZ_INSCODE_5AFRAME_CHECKSTATUS_SOFTWAREVERSION = 0x10000625, //查询软件版本号
  79 + JZ_INSCODE_5AFRAME_CHECKSTATUS_LOOPPLAY = 0x10000626, //查询是否打开循环
  80 + JZ_INSCODE_5AFRAME_CHECKSTATUS_ADUIO_LOOP_INTERVAL = 0x10000639, //查询音频循环间隔
  81 + JZ_INSCODE_5AFRAME_CHECKSTATUS_CURRENT_PLAYTIME = 0x10000640, //查询当前播放时间回调是否打开
  82 +
  83 +
  84 + JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSTONE = 0x10000627, //查询音色
  85 + JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSSPEED = 0x10000628, //查询语速
  86 + JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LIGHTATTRIBUTE = 0x10000629, //查询探照灯 灯3个属性
  87 + JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LUMEN = 0x10000630, //查询探照灯流明
  88 + JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_FREQUENCY = 0x10000631, //查询探照灯频率
  89 + JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_MODE = 0x10000632, //查询探照灯模式
  90 + JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE = 0x10000633, //查询探照灯温度
  91 +
  92 +
  93 + JZ_INSCODE_5AFRAME_CHECKSTATUS_LASER_STATUS = 0x10000634, //查询激光状态
  94 + JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS = 0x10000635, //查询警灯状态
  95 + JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR = 0x10000636, //查询警灯颜色
  96 + JZ_INSCODE_5AFRAME_CHECKSTATUS_SERIALNUMBER = 0x10000637, //查询序列号
  97 + JZ_INSCODE_5AFRAME_CHECKSTATUS_AUDIO_DETAIL_MESSAGE = 0x10000638, //查询音频详细信息
  98 + JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_CONTROL_2 = 0x10000639, //查询警灯模式2
  99 +
  100 + JZ_INSCODE_5AFRAME_PLAY_LOOP = 0x10000690, //开启关闭循环
  101 + JZ_INSCODE_5AFRAME_ADUIO_PLAY_LOOP_INTERVAL = 0x10000691, //设置音频循环间隔
  102 +
  103 + JZ_INSCODE_5AFRAME_DELETE_AUDIO = 0x10000700, //删除音频
  104 + JZ_INSCODE_5AFRAME_DELETE_VOICE_RECORD = 0x10000710, //删除录音
  105 + JZ_INSCODE_5AFRAME_DELETE_VIDEO_RECORD = 0x10000720, //删除视频
  106 + JZ_INSCODE_5AFRAME_RENAME_AUDIO = 0x10000730, //重命名音频
  107 + JZ_INSCODE_5AFRAME_RENAME_VOICE_RECORD = 0x10000740, //重命名录音
  108 + JZ_INSCODE_5AFRAME_RENAME_VIDEO_RECORD = 0x10000750, //重命名视频
  109 +
  110 +
  111 + JZ_INSCODE_5AFRAME_TTS_SET_TONE = 0x10000801, //TTS设置音色
  112 + JZ_INSCODE_5AFRAME_TTS_SET_SPEED = 0x10000802, //TTS设置语速
  113 + JZ_INSCODE_5AFRAME_TTS_TRANS_START = 0x10000803, //TTS开始发送
  114 + JZ_INSCODE_5AFRAME_TTS_TRANS_UNLIMIT_TRANSMISSION = 0x10000804, //TTS正在无限制接收
  115 + JZ_INSCODE_5AFRAME_TTS_TRANS_STOP = 0x10000805, //TTS发送完毕
  116 + JZ_INSCODE_5AFRAME_TTS_TRANS_LIMIT_TRANSMISSION = 0x10000806, //TTS正在定长接收
  117 +
  118 + JZ_INSCODE_5AFRAME_CURRENT_PLAY_TIME = 0x10004406, //设置播放回传
  119 +
  120 +
  121 + JZ_INSCODE_5AFRAME_OPUS_TRANS_START_1 = 0x10000900, //opus传输开始1型
  122 + JZ_INSCODE_5AFRAME_OPUS_TRANS_START_2 = 0x10000901, //opus传输开始2型
  123 + //JZ_INSCODE_5AFRAME_OPUS_TRAN_UNLIMIT_TRANSMISSION = 0x10000901, //opus 无限制传输中
  124 + JZ_INSCODE_5AFRAME_OPUS_TRANS_LIMIT_TRANSMISSION = 0x10000903, //opus传输中
  125 +
  126 + JZ_INSCODE_5AFRAME_OPUS_TRANS_STOP = 0x10000902, //opus传输结束
  127 + JZ_INSCODE_5AFRAME_OPUS_TRANS_STOP_AND_CHECK = 0x10000904, //opus传输结束并校验
  128 +
  129 +
  130 + JZ_INSCODE_5AFRAME_OPUS_PLAY = 0x10000910, //opus播放
  131 +
  132 + JZ_INSCODE_5AFRAME_PCM_PLAY = 0x10000920, //pcm播放
  133 +
  134 + JZ_INSCODE_5AFRAME_PCM_GETPCMLIST = 0x10000930, //获pcm列表
  135 +
  136 +
  137 + JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_START = 0x10000A00, //开启opus实时语音
  138 + JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_UNLIMIT_TRANSMISSION = 0x10000A01, //无限制传输opus实时语音
  139 + JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_STOP = 0x10000A02, //结束opus实时语音
  140 + JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_LIMIT_TRANSMISSION = 0x10000A03, //定长传输opus实时语音
  141 +
  142 + JZ_INSCODE_5AFRAME_GIMBAL_PITCH_CONTROL = 0x10000B00, //云台俯仰控制
  143 + JZ_INSCODE_5AFRAME_GIMBAL_YAW_CONTROL = 0x10000B01, //云台朝向控制
  144 + JZ_INSCODE_5AFRAME_GIMBAL_ROLL_CONTROL = 0x10000B02, //云台旋转控制
  145 + JZ_INSCODE_5AFRAME_GIMBAL_PITCH_FINETUNING_CONTROL = 0x10000B04, //云台俯仰微调
  146 + JZ_INSCODE_5AFRAME_GIMBAL_YAW_FINETUNING_CONTROL = 0x10000B05, //云台朝向微调
  147 + JZ_INSCODE_5AFRAME_GIMBAL_ROLL_FINETUNING_CONTROL = 0x10000B06, //云台旋转微调
  148 +
  149 + JZ_INSCODE_5AFRAME_GIMBAL_PITCH_COMPENSATE = 0x10000B10, //云台俯仰补偿
  150 +
  151 +
  152 + JZ_INSCODE_5AFRAME_LASER_CONTROL = 0x5A5A6051, //激光控制
  153 + JZ_INSCODE_5AFRAME_LASER_MODE = 0x5A5A6052, //激光模式
  154 + JZ_INSCODE_5AFRAME_LASER_LUMEN = 0x5A5A6053, //激光模式
  155 + JZ_INSCODE_5AFRAME_LASER_COLOR = 0x5A5A6054, //激光模式
  156 + JZ_INSCODE_5AFRAME_LASER_POWER_LIMIT = 0x5A5A6055, //激光功率限制
  157 + JZ_INSCODE_5AFRAME_LASER_CHECKSTATUS = 0x5A5A6F53, //查询激光属性
  158 +
  159 + JZ_INSCODE_5AFRAME_SEARCHLIGHT_CONTROL = 0x10000E00, //探照灯开光
  160 + JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMEN = 0x10000E10, //设置探照灯亮度
  161 + JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMENPOWERLIMIT = 0x10000E11, //设置探照灯亮度功率限制
  162 +
  163 + JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_FREQUENCY = 0x10000E20, //设置把爆闪频率
  164 + JZ_INSCODE_5AFRAME_SEARCHLIGHT_MESSAGE_SUBSCRIPTION_CONTROL = 0x10000E21,//探照灯消息订阅控制
  165 +
  166 + JZ_INSCODE_5AFRAME_WARNINGLIGHT_CONTROL = 0x10000F00, //警示灯模式控制
  167 + JZ_INSCODE_5AFRAME_WARNINGLIGHT_CONTROL_2 = 0x10000F01, //警示灯模式控制2
  168 + JZ_INSCODE_5AFRAME_WARNINGLIGHT_COLOUR = 0x10000F10, //警示灯颜色控制
  169 +
  170 + JZ_INSCODE_5AFRAME_OUTPUTPOWER_CONTROL = 0x10001000, //对外供电开关
  171 + JZ_INSCODE_5AFRAME_CHECKSTATUS_OUTPUTPOWER = 0x10001001, //对外供电查询
  172 +
  173 + JZ_INSCODE_5AFRAME_UPGRADE_PERPARE = 0x10001100, //升级准备
  174 + JZ_INSCODE_5AFRAME_UPGRADE_SEND_CHECKCODE = 0x10001101, //升级发送校验码
  175 + JZ_INSCODE_5AFRAME_UPGRADE_STRAT = 0x10001102, //升级传输开始
  176 + JZ_INSCODE_5AFRAME_UPGRADE_TRANS = 0x10001103, //升级传输数据
  177 + JZ_INSCODE_5AFRAME_UPGRADE_END = 0x10001104, //升级传输结束
  178 +
  179 + JZ_INSCODE_5AFRAME_CHECKSTATUS_UPGRADE_STATUS = 0x5A5AA110, //升级状态查询
  180 +
  181 +
  182 + JZ_INSCODE_5AFRAME_CAMERA_VIDEO_PUSH_INDEX = 0x10001200, //设置视频推送索引
  183 + JZ_INSOCDE_5AFRAME_CAMERA_TAKE_PHOTO = 0x10001201, //拍照
  184 + JZ_INSCODE_5AFRAME_CAMERA_VIDEO_RECORD_START = 0x10001202, //录像开始
  185 + JZ_INSCODE_5AFRAME_CAMERA_VIDEO_RECORD_STOP = 0x10001203, //录像结束
  186 + JZ_INSCODE_5AFRAME_CAMERA_SHUTTER_CONTROL = 0x10001204, //快门控制
  187 + JZ_INSCODE_5AFRAME_CAMERA_FREEZE_CONTROL = 0x10001205, //冻结控制
  188 +
  189 + JZ_INSOCDE_5AFRAME_IRC_CORRECT_WAY = 0x10001300, //红外校准方式
  190 + JZ_INSCODE_5AFRAME_IRC_SPC_PARAM = 0x10001301, //单点参数
  191 + JZ_INSCODE_5AFRAME_IRC_TPC_PARAM = 0x10001302, //两点参数
  192 +
  193 + JZ_INSOCDE_5AFRAME_IRC_OUTPUT_COLOR_MODE = 0x10001400, //红外输出颜色模式
  194 + JZ_INSCODE_5AFRAME_IRC_PSEUDO_COLOR_PARAM = 0x10001401, //红外伪彩色
  195 + JZ_INSCODE_5AFRAME_IRC_GAS_ENHANCE_PARAM = 0x10001402, //红外气体增强
  196 +
  197 +//5B类帧
  198 + JZ_INSCODE_5BFRAME_FRAME = 0x10004000, //发送帧
  199 +
  200 + JZ_INSCODE_5BFRAME_INITIATECONNECT = 0x10004101, //主动连接
  201 + JZ_INSCODE_5BFRAME_HEARTBEAT = 0x10004102, //心跳帧回复
  202 + JZ_INSCODE_5BFRAME_TIMESTAMP = 0x10004103, //时间戳帧
  203 + JZ_INSCODE_5BFRAME_ALL_VERSION = 0x10004104, //全版本查询
  204 + JZ_INSCODE_5BFRAME_ALL_SERIAL_NUMBER = 0x10004105, //全序列号查询
  205 + JZ_INSCODE_5BFRAME_DEVICE_MESSAGE = 0x10004107, //设备信息
  206 +
  207 + JZ_INSCODE_5BFRAME_CHECKSTATUS_DEVICE_TYPE_VERSION = 0x5B5B5059, //查询设备类型版本号;
  208 +
  209 + JZ_INSCODE_5BFRAME_PRESET_TASK = 0x10004120, //预置任务
  210 +
  211 + JZ_INSCODE_5BFRAME_SUCESS = 0x10004200, //操作成功
  212 + JZ_INSCODE_5BFRAME_FILE_CHECK_DEFEAT = 0x10004201, //校验失败
  213 + JZ_INSCODE_5BFRAME_FILE_DECODE_DEFEAT = 0x10004202, //解码失败
  214 + JZ_INSCODE_5BFRAME_DEFEAT = 0x100042FF, //操作失败
  215 +
  216 + JZ_INSCODE_5BFRAME_MUSICLIST_START = 0x10004300, //开启发送音乐列表帧
  217 + JZ_INSCODE_5BFRAME_MUSICLIST_TRANS = 0x10004301, //发送音乐列表帧
  218 + JZ_INSCODE_5BFRAME_MUSICLIST_STOP = 0x10004302, //结束发送音乐列表帧
  219 + JZ_INSCODE_5BFRAME_MUSICLIST_TRANS_2 = 0x10004303, //查询音频详细信息2型
  220 +
  221 +
  222 + JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS = 0x10004310, //音频播放状态返回帧
  223 + JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS_END = 0x10004311, //音频播放状态结束帧
  224 +
  225 + JZ_INSCODE_5BFRAME_VOLUME = 0x10004400, //音量返回帧
  226 + JZ_INSCODE_5BFRAME_AUDIO_PLAYLOOPSTATUS = 0x10004401, //发送音频循环播放状态
  227 + JZ_INSCODE_5BFRAME_TTS_TONE = 0x10004402, //发送tts音色
  228 + JZ_INSCODE_5BFRAME_TTS_SPEED = 0x10004403, //发送tts语速
  229 + JZ_INSCODE_5BFRAME_AUDIO_PLAYFILENAME = 0x10004404, //当前播放的音频名字
  230 + JZ_INSCODE_5BFRAME_CHECKSTATUS_AUDIO_DETAIL_MESSAGE = 0x10004405, //查询音频详细信息
  231 + JZ_INSCODE_5BFRAME_CURRENT_PLAY_TIME = 0x10004406, //当前播放时间
  232 + JZ_INSCODE_5BFRAME_CHECKSTATUS_CURRENT_PLAYTIME = 0x10004407, //查询当前播放时间回调是否打开
  233 +
  234 +
  235 + JZ_INSCODE_5BFRAME_GIMBAL_PITCH = 0x10004500, //云台俯仰角度
  236 + JZ_INSCODE_5BFRAME_GIMBAL_YAW = 0x10004501, //云台航向角度
  237 + JZ_INSCODE_5BFRAME_GIMBAL_ROLL = 0x10004502, //
  238 +
  239 + JZ_INSCODE_5BFRAME_GIMBAL_PITCH_FINETUNING = 0x10004510, //云台俯仰微调值
  240 +
  241 +
  242 + JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE = 0x10004600, //查询探照灯温度
  243 + JZ_INSCODE_5BFRAME_CHECKSTATUS_LASER_STATUS_CONTROL = 0x10004601, //查询激光状态_控制
  244 + JZ_INSCODE_5BFRAME_CHECKSTATUS_LASER_STATUS_MODE = 0x10004602, //查询激光状态_模式
  245 + JZ_INSCODE_5BFRAME_CHECKSTATUS_LASER_STATUS_LUMEN = 0x5B5B6053, //查询激光状态_亮度
  246 + JZ_INSCODE_5BFRAME_CHECKSTATUS_LASER_STATUS_COLOR = 0x5B5B6054, //查询激光状态_颜色
  247 + JZ_INSCODE_5BFRAME_CHECKSTATUS_LASER_STATUS_POWERLIMIT = 0x5B5B6055, //查询激光状态_功率
  248 +
  249 +
  250 + JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_FREQUENCY = 0x10004610, //查询探照灯频率
  251 + JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_MODE = 0x10004611, //查询探照灯模式
  252 + JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_LUMEN = 0x10004612, //查询探照灯流明
  253 +
  254 + JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS = 0x10004700, //警示灯模式控制
  255 + JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR = 0x10004701, //警示灯颜色控制
  256 + JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_CONTROL_2 = 0x10004702, //查询警灯模式2
  257 +
  258 + JZ_INSCODE_5BFRAME_SORTWAREVERSION = 0x10004800, //发送软件版本号
  259 + JZ_INSCODE_5BFRAME_HARDWAREVERSION = 0x10004801, //发送硬件版本号
  260 + JZ_INSCODE_5BFRAME_CHECKSTATUS_SERIALNUMBER = 0x10004802, //回复序列号
  261 +
  262 + JZ_INSCODE_5BFRAME_CHECKSTATUS_OUTPUTPOWER = 0x10004900, //对外供电查询
  263 +
  264 + JZ_INSCODE_5BFRAME_OPUS_DECODE_STATUS = 0x10005000, //opus解码状态
  265 + JZ_INSCODE_5BFRAME_OPUS_TRANS_STOP_AND_CHECK = 0x10005904, //opus传输结束并校验
  266 +
  267 + JZ_INSCODE_5BFRAME_OPUSLIST_START = 0x10005910, //开启发送opus列表帧
  268 + JZ_INSCODE_5BFRAME_OPUSLIST_TRANS = 0x10005911, //传输opus列表帧
  269 + JZ_INSCODE_5BFRAME_OPUSLIST_END = 0x10005912, //传输opus列表帧
  270 +
  271 + JZ_INSCODE_5BFRAME_UPGRADE_PERPARE = 0x10001100, //升级准备
  272 + JZ_INSCODE_5BFRAME_UPGRADE_SEND_CHECKCODE = 0x10001101, //升级发送校验码
  273 + JZ_INSCODE_5BFRAME_UPGRADE_STRAT = 0x10001102, //升级传输开始
  274 + JZ_INSCODE_5BFRAME_UPGRADE_TRANS = 0x10001103, //升级传输数据
  275 + JZ_INSCODE_5BFRAME_UPGRADE_END = 0x10001104, //升级传输结束
  276 + JZ_INSCODE_5BFRAME_UPGRADE_CHECKRESULT = 0x10001105, //升级校验结果
  277 +
  278 + JZ_INSCODE_5BFRAME_CHECKSTATUS_UPGRADE_STATUS = 0x5B5BA110, //升级状态
  279 +
  280 +//6A类
  281 + JZ_INSCODE_6AFRAME_FRAME = 0x10008000, //发送帧
  282 +
  283 + JZ_INSCODE_6AFRAME_DEBUG_INS = 0x10008080, //调试指令
  284 +
  285 + JZ_INSCODE_6AFRAME_SET_GIMBAL_ORIGIN = 0x10008101, //设置坐标0值
  286 + JZ_INSCODE_6AFRAME_SET_GIMBAL_MAXMIN_RANGE = 0x10008102, //设置云台范围最大最小值
  287 + JZ_INSCODE_6AFRAME_SET_LUMEN_MAXMIN_RANGE = 0x10008103, //设置灯光范围最大最小值
  288 + JZ_INSCODE_6AFRAME_SET_SERIALNUMBER = 0x10008104, //设置序列号
  289 + JZ_INSCODE_6AFRAME_SERVO_SELFCHECK = 0x10008105, //舵机自检
  290 + JZ_INSCODE_6AFRAME_GIMBAL_LINKAGE_CONTROL = 0x10008106, //开关云台联动
  291 +
  292 + JZ_INSCODE_6AFRAME_WRITE_APP_NAME = 0x6A6A6940, //写入app名称
  293 + JZ_INSCODE_6AFRAME_WRITE_APP_ID = 0x6A6A6941, //写入app id
  294 + JZ_INSCODE_6AFRAME_WRITE_APP_KEY = 0x6A6A6942, //写入app key
  295 + JZ_INSCODE_6AFRAME_WRITE_APP_LICENSE = 0x6A6A6943, //写入app license
  296 + JZ_INSCODE_6AFRAME_WRITE_DEVELOPER_ACCOUNT = 0x6A6A6944, //写入开发者账号
  297 +
  298 + JZ_INSCODE_6AFREAM_CHECKSTATUS_USERINFO = 0x6A6A694F, //查询用户信息
  299 +
  300 + JZ_INSCODE_6AFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME = 0x10008400, //查询从设备设备名
  301 + JZ_INSCODE_6AFRAME_CHECKSTATUS_GIMBAL_LINKAGE = 0x10008401, //查询云台联动
  302 +
  303 + JZ_INSCODE_6AFRAME_UART_BITRATE_CHANGE = 0x10008500, //串口比特率修改
  304 +
  305 + JZ_INSCODE_6AFRAME_SPECIAL_PARAMETERS = 0x10008510, //设置特殊参数
  306 + JZ_INSCODE_6AFRAME_CHECK_SPECIAL_PARAMETERS = 0x10008511, //查询特殊参数
  307 +
  308 +//6B类
  309 + JZ_INSCODE_6BFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME = 0x1000C400, //回复从设备名
  310 + JZ_INSCODE_6BFRAME_CHECKSTATUS_GIMBAL_LINKAGE = 0x1000C401, //回复云台联动
  311 + JZ_INSCODE_6BFRAME_CHECK_SPECIAL_PARAMETERS = 0x1000C511, //回复特殊参数
  312 +
  313 + JZ_INSCODE_6BFRAME_WRITE_APP_NAME = 0x6B6B6940, //写入app名称
  314 + JZ_INSCODE_6BFRAME_WRITE_APP_ID = 0x6B6B6941, //写入app id
  315 + JZ_INSCODE_6BFRAME_WRITE_APP_KEY = 0x6B6B6942, //写入app key
  316 + JZ_INSCODE_6BFRAME_WRITE_APP_LICENSE = 0x6B6B6943, //写入app license
  317 + JZ_INSCODE_6BFRAME_WRITE_DEVELOPER_ACCOUNT = 0x6B6B6944, //写入开发者账号
  318 +
  319 +} JZ_InsCode;
  320 +
  321 +
  322 +/* Exported types ------------------------------------------------------------*/
  323 +
  324 +
  325 +/* Exported functions --------------------------------------------------------*/
  326 +
  327 +#ifdef __cplusplus
  328 +}
  329 +#endif
  330 +
  331 +#endif
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_Platform.h
  4 + * 用于记录各类码的表
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_PLATFORM_H
  11 +#define JZSDK_PLATFORM_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +#include "../JZsdk_typedef/JZsdk_typedef.h"
  15 +
  16 +#ifdef __cplusplus
  17 +extern "C" {
  18 +#endif
  19 +
  20 +
  21 +/* Exported constants --------------------------------------------------------*/
  22 +/* 常亮定义*/
  23 +
  24 +#define JZSDK_FILE_NAME_SIZE_MAX (128) //文件名最大长度128
  25 +#define JZSDK_FILE_PATH_SIZE_MAX (256) //文件路径最大长度256
  26 +#define JZSDK_CMD_SIZE (256) //cmd指令最大长度
  27 +#define JZSDK_DIR_SIZE (256) //目录名最大长度
  28 +
  29 +typedef struct {
  30 + U16_t year;
  31 + U8_t month;
  32 + U8_t day;
  33 + U8_t hour;
  34 + U8_t minute;
  35 + U8_t second;
  36 +} T_JZsdkTime;
  37 +
  38 +typedef struct T_JZsdkFileInfo{
  39 + U32_t size;
  40 + T_JZsdkTime createTime;
  41 + T_JZsdkTime modifyTime;
  42 + char path[JZSDK_FILE_PATH_SIZE_MAX];
  43 + bool isDir;
  44 +} T_JZsdkFileInfo;
  45 +
  46 +typedef struct T_JZsdkVersionInfo{
  47 + U8_t MajorVersion;
  48 + U8_t MinorVersion;
  49 + U8_t ModifyVersion;
  50 + U8_t DebugVersion;
  51 +}T_JZsdkVersionInfo;
  52 +
  53 +
  54 +/* Exported macro ------------------------------------------------------------*/
  55 +
  56 +
  57 +/* Exported types ------------------------------------------------------------*/
  58 +
  59 +
  60 +/* Exported functions --------------------------------------------------------*/
  61 +
  62 +#ifdef __cplusplus
  63 +}
  64 +#endif
  65 +
  66 +#endif
  67 +
  68 +
  1 +#include "./JZsdk_ReturnCode.h"
  2 +
  3 +//获取返回码的信息
  4 +const char* JZsdk_GetReturnCodeMessage(T_JZsdkReturnCode ReturnCode)
  5 +{
  6 + switch (ReturnCode) {
  7 + case JZ_ERRORCODE_REALTIMEVOICE_HAS_BEEN_ON:
  8 + return "实时语音被开启,该操作失败";
  9 +
  10 + default:
  11 + return "未知错误:Unknown error.";
  12 + }
  13 +}
  1 +
  2 +
  3 +/**
  4 + ********************************************************************
  5 + * @file JZsdk_ReturnCode.h
  6 + * 用于记录各类码的表
  7 + *
  8 + *********************************************************************
  9 + */
  10 +
  11 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  12 +#ifndef JZSDK_RETURNCODE_H
  13 +#define JZSDK_RETURNCODE_H
  14 +
  15 +/* Includes ------------------------------------------------------------------*/
  16 +#include "../JZsdk_typedef/JZsdk_typedef.h"
  17 +
  18 +#ifdef __cplusplus
  19 +extern "C" {
  20 +#endif
  21 +
  22 +/* Exported constants --------------------------------------------------------*/
  23 +/* 常亮定义*/
  24 +
  25 +
  26 +
  27 +
  28 +
  29 +
  30 +
  31 +/* Exported types ------------------------------------------------------------*/
  32 +
  33 +
  34 +/* Exported functions --------------------------------------------------------*/
  35 +const char* JZsdk_GetReturnCodeMessage(T_JZsdkReturnCode ReturnCode);
  36 +
  37 +#ifdef __cplusplus
  38 +}
  39 +#endif
  40 +
  41 +#endif
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_SMT_Code.h
  4 + * 用于序列号管理的表
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_SMT_CODE_H
  11 +#define JZSDK_SMT_CODE_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +
  22 +typedef enum
  23 +{
  24 + // 设备序列号类型
  25 + UNDEFINED_SNM = 0x0000, //未定义类型序列号
  26 + STANDARD_DJI_SNM = 0x0001, // 大疆转接环序列号类型
  27 + STANDARD_JZ_1_SNM = 0x0002, // JZ-1型序列号
  28 + STANDARD_JZ_2_SNM = 0x0003, // JZ-2型序列号 2023.12.14 制定
  29 +} JZSDK_SNM_TPYE;
  30 +
  31 +typedef enum
  32 +{
  33 + // 设备激活码状态 0 未存在序列号 1 旧版序列号 2新版序列号未激活 3新版序列号已激活
  34 + SNM_NOT_EXISTS = 0x0000, // (未存在序列号)
  35 + SNM_HAVE_ACTIVATED = 0x0001, // 已激活
  36 + SNM_NOT_ACTIVATED = 0x0002, // 未激活
  37 + SNM_ERROR_ACTIVATED = 0x0003, //激活错误状态
  38 +} JZSDK_SNM_STATUS;
  39 +
  40 +typedef enum
  41 +{
  42 + STANDARD_DJI_SNM_LENGTH = 14, //dji序列号默认长度14
  43 + STANDARD_JZ_1_SUM_LENGTH = 14, //极至标准1长度太多种拉 喊话器最长是14
  44 + STANDARD_JZ_2_SUM_LENGTH = 16, //极至标准2 16长度
  45 +}JZSDK_SNM_STANDARD_LENGTH;
  46 +
  47 +typedef enum
  48 +{
  49 + STANDARD_JZ_2_CN = 0x0001, //极至标准2通用码
  50 + STANDARD_JZ_2_EN = 0x0002, //极至标准2海外码
  51 +}JZSDK_FIREWARM_CODE;
  52 +
  53 +typedef enum
  54 +{
  55 + STANDARD_JZ_2_F1 = 0x0001, //通用版本固件
  56 +
  57 +}JZSKD_SPECIAL_VERSION;
  58 +
  59 +
  60 +#ifdef __cplusplus
  61 +}
  62 +#endif
  63 +
  64 +#endif
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_WidgetCode.h
  4 + * 用于控件线程的的表
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_WIDGET_CODE_H
  11 +#define JZSDK_WIDGET_CODE_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +typedef enum JZsdk_Widget_Control
  22 +{
  23 + // 控件类
  24 + JZSDK_WIDGET_LASTSONG = 0x0000, // 控件上一曲
  25 + JZSDK_WIDGET_NEXTSONG = 0x0001, // 控件下一曲
  26 + JZSDK_WIDGET_PLAYANDSTOP = 0x0002, // 控件播放暂停
  27 + JZSDK_WIDGET_VOLUME = 0x003, // 控件音量
  28 + JZSDK_WIDGET_TTS_SPEED = 0x0004, // 控件tts速度
  29 + JZSDK_WIDGET_TTS_TONE = 0x0005, // 控件tts音色
  30 + JZSDK_WIDGET_LOOP_PLAY = 0x0010, // 控件循环播放
  31 +
  32 + JZSDK_WIDGET_VIDEOPUSH_INDEX = 0x0021, //切换视频流
  33 + JZSDK_WIDGET_TEMP_MEASUREMENT_MODE = 0x0022, //测温
  34 + JZSDK_WIDGET_SHUTTER_SWITCH = 0x0023, //快门开关
  35 + JZSDK_WIDGET_FREEZE_VIDEO = 0x0024, //冻结视频流
  36 + JZSDK_WIDGET_PSEUDO_MODE = 0x0025, //色彩输出模式
  37 + JZSDK_WIDGET_ZOOM_SIZE = 0x0026, //焦距
  38 + JZSDK_WIDGET_SPC_RESET = 0x0027, //spc重置
  39 + JZSDK_WIDGET_PSEUDO_COLOR = 0x0028, //伪彩颜色
  40 + JZSDK_WIDGET_CAMERA_CORRECT_MODE = 0x0029, //相机纠正模式
  41 + JZSDK_WIDGET_GAS_ENHANCEMENT_COLOR = 0x0030, //气体增强颜色
  42 +
  43 + JZSDK_WIDGET_SPC_MODE = 0x0031, //单点纠正模式
  44 + JZSDK_WIDGET_SPC_AUTO_TIME = 0x0032, //自动单点纠正间隔
  45 +
  46 + JZSDK_WIDGET_TPC_MODE = 0x0033, //tpc模式
  47 +
  48 + JZSDK_WIDGET_BAD_PIXEL_CORRECT_MODE = 0x0034, //坏点纠正模式
  49 + JZSDK_WIDGET_BAD_PIXEL_CORRECT = 0x0035, //开启纠正
  50 +
  51 +
  52 + JZSDK_WIDGET_GAS_ENHANCEMENT_CORRECT = 0x0036, //气体增强纠正
  53 + JZSDK_WIDGET_IRC_MARK_LOW_AND_HIGH_DATA = 0x0037, //红外标记高低数据
  54 +
  55 + JZSDK_WIDGET_GAS_ENHANCEMENT_CORRECT_HIGH_CALIBRATION = 0x0038, //气体增强纠正高温校准
  56 + JZSDK_WIDGET_GAS_ENHANCEMENT_CORRECT_LOW_CALIBRATION = 0x0039, //气体增强纠正低温校准
  57 +
  58 +
  59 + JZSDK_WIDGET_WARNLIGHT_COLOR_1 = 0x0040, //警告灯颜色1
  60 + JZSDK_WIDGET_WARNLIGHT_COLOR_2 = 0x0041, //警告灯颜色2
  61 +
  62 + JZSDK_WIDGET_WARNLIGHT_MODE = 0x0042, //警告灯模式
  63 +
  64 + JZSDK_WIDGET_SIDE_LASER_MODE = 0x0050, //侧射激光模式
  65 + JZSDK_WIDGET_SIDE_LASER_LUMEN = 0x0051, //侧面激光亮度
  66 + JZSDK_WIDGET_SIDE_LASER_COLOR = 0x0052, //侧面激光颜色
  67 +
  68 + JZSDK_WIDGET_PRSET_TASK = 0x0053, //预设任务
  69 +
  70 + JZSDK_WIDGET_GIMBAL_SINGLE_COMPENSATION_LEFT = 0x0060, //左云台单轴补偿
  71 + JZSDK_WIDGET_GIMBAL_SINGLE_COMPENSATION_RIGHT = 0x0061, //右云台单轴补偿
  72 +}JZsdk_Widget_Control;
  73 +
  74 +
  75 +/* Exported types ------------------------------------------------------------*/
  76 +
  77 +
  78 +/* Exported functions --------------------------------------------------------*/
  79 +
  80 +#ifdef __cplusplus
  81 +}
  82 +#endif
  83 +
  84 +#endif
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_AttributeDef.h
  4 + * 用于记录属性的表
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_ATTRIBUTEDEF_H
  11 +#define JZSDK_ATTRIBUTEDEF_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +#include "./JZsdk_typedef.h"
  15 +
  16 +
  17 +#ifdef __cplusplus
  18 +extern "C" {
  19 +#endif
  20 +
  21 +/* Exported constants --------------------------------------------------------*/
  22 +/* 常亮定义*/
  23 +
  24 +
  25 +/* Exported types ------------------------------------------------------------*/
  26 +
  27 +//时间结构体
  28 +typedef struct {
  29 + U16_t year;
  30 + U8_t month;
  31 + U8_t day;
  32 + U8_t hour;
  33 + U8_t minute;
  34 + U8_t second;
  35 +}t_JZdateTime;
  36 +
  37 +
  38 +//GPS时间
  39 +typedef U32_t T_JZsdkAttributeGpsTime;
  40 +
  41 +//GPS日期
  42 +typedef U32_t T_JZsdkAttributeGpsDate;
  43 +
  44 +//gps经度
  45 +typedef T_JZsdkVector3d T_JZsdkAttributeGpsPosition;
  46 +
  47 +/* Exported functions --------------------------------------------------------*/
  48 +
  49 +
  50 +
  51 +#ifdef __cplusplus
  52 +}
  53 +#endif
  54 +
  55 +#endif
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_ErrorCode.h
  4 + * 用于错误码的表
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_ERRORCODE_H
  11 +#define JZSDK_ERRORCODE_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +
  22 +
  23 +/* Exported types ------------------------------------------------------------*/
  24 +typedef enum {
  25 + JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS = 0x0000,
  26 + JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE = 0x0001,
  27 + JZ_ERROR_SYSTEM_MODULE_CODE_HARDLY_FAILURE = 0x0003, //严重错误
  28 + JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER = 0x0002, //文件指针错误
  29 + JZ_ERROR_SYSTEM_MODULE_CODE_MEMORY_ALLOC_FAILED = 0x0004, //内存分配失败
  30 + JZ_ERROR_SYSTEM_MODULE_CODE_IS_BUSY = 0x0005, //忙错误
  31 + JZ_ERROR_SYSTEM_MODULE_CODE_CHECK_CODE_ERROR = 0x0006, //校验码错误
  32 + JZ_ERROR_SYSTEM_MODULE_CODE_BUFFER_SIZE_NOT_ENOUGH = 0x0007, //缓冲区大小不足
  33 +} JZ_SYSTEM_Code;
  34 +
  35 +typedef enum {
  36 + JZ_ERROR_SYSTEM_FRAME_ERROR = 0x0100,
  37 +
  38 +} JZ_Syetem_frame_ErrorCode;
  39 +
  40 +typedef enum {
  41 + JZ_ERRORCODE_MUSIC_NOT_FOUND_IN_LIST = 0x1000
  42 +
  43 +} JZ_Megaphone_music_ErrorCode;
  44 +
  45 +typedef enum {
  46 + JZ_ERRORCODE_REALTIMEVOICE_HAS_BEEN_ON = 0x1201
  47 +
  48 +} JZ_Megaphone_opus_ErrorCode;
  49 +
  50 +typedef enum {
  51 + JZ_ERRORCODE_TTS_INVALID_TONE = 0x1300,
  52 + JZ_ERRORCODE_TTS_INVALID_SPEED = 0x1301,
  53 + JZ_ERRORCODE_TTS_INVALID_ADDTONE = 0x1302,
  54 +
  55 +} JZ_Megaphone_TTS_ErrorCode;
  56 +
  57 +typedef enum {
  58 + JZ_ERRORCODE_GIMBAL_INVALID_PITCH = 0x4000,
  59 + JZ_ERRORCODE_GIMBAL_INVALID_YAW = 0x4001,
  60 + JZ_ERRORCODE_GIMBAL_INVALID_ROLL = 0x4002,
  61 +
  62 +} JZ_Gimbal_ErrorCode;
  63 +
  64 +
  65 +typedef enum {
  66 + JZ_ERROR_CHECKCODE_CHECK_ERROR = 0x5000, //校验码错误
  67 + JZ_ERROR_CHECKCODE_DECODE_ERROR = 0x5001, //解码错误
  68 +
  69 +} JZ_CheckCode; //检查校验码
  70 +
  71 +typedef enum {
  72 + JZ_ERROR_SYSTEM_MODULE_CODE_NO_UPGRADE_FILE = 0x6000, //没有升级文件
  73 +}JZ_Ugrade_ErrorCode;
  74 +
  75 +/* Exported functions --------------------------------------------------------*/
  76 +
  77 +#ifdef __cplusplus
  78 +}
  79 +#endif
  80 +
  81 +#endif
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_FileType.h
  4 + * 用于记录文件类型的表
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_FILE_TYPE_H
  11 +#define JZSDK_FILE_TYPE_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +
  22 +
  23 +/* Exported types ------------------------------------------------------------*/
  24 +typedef enum {
  25 + AUDIO_TYPE_WAV = 0x00000001,
  26 + AUDIO_TYPE_MP3 = 0x00000002,
  27 + AUDIO_TYPE_OPUS = 0x00000003,
  28 + AUDIO_TYPE_PCM = 0x00000004,
  29 +} JZ_AUDIO_FILE_TYPE;
  30 +
  31 +/* Exported functions --------------------------------------------------------*/
  32 +
  33 +#ifdef __cplusplus
  34 +}
  35 +#endif
  36 +
  37 +#endif
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_typedef.h
  4 + * 用于记录各类码的表
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_TYPEDEF_H
  11 +#define JZSDK_TYPEDEF_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +#include <stdint.h>
  15 +#include <stdbool.h>
  16 +#include <stddef.h>
  17 +#include <string.h>
  18 +#include <stdlib.h>
  19 +#include <stdio.h>
  20 +#include <string.h>
  21 +
  22 +#ifdef __cplusplus
  23 +extern "C" {
  24 +#endif
  25 +
  26 +#include "./JZsdk_ErrorCodeDef.h"
  27 +#include "./JZsdk_FileTypeDef.h"
  28 +
  29 +/* Exported constants --------------------------------------------------------*/
  30 +/* 常亮定义*/
  31 +
  32 +
  33 +/* Exported macro ------------------------------------------------------------*/
  34 +//重定义一个返回码
  35 +typedef uint64_t T_JZsdkReturnCode;
  36 +typedef uint8_t U8_t;
  37 +typedef uint16_t U16_t;
  38 +typedef uint32_t U32_t;
  39 +typedef uint64_t U64_t;
  40 +
  41 +#define JZ_U8 U8_t
  42 +#define JZ_U16 U16_t
  43 +#define JZ_U32 U32_t
  44 +#define JZ_U64 U64_t
  45 +
  46 +// typedef unsigned long T_JZsdkReturnCode;
  47 +// typedef unsigned char U8_t;
  48 +// typedef unsigned short U16_t;
  49 +// typedef unsigned int U32_t;
  50 +// typedef unsigned long U64_t;
  51 +
  52 +typedef double F64_t;
  53 +typedef float F32_t;
  54 +
  55 +#define JZ_F64 F64_t
  56 +#define JZ_F32 F32_t
  57 +
  58 +#define JZSDK_SINGLE_THREAD 0 //jz单线程
  59 +#define JZSDK_MULTI_THREAD 1 //jz多线程
  60 +
  61 +//线程权柄
  62 +typedef void *T_JZTaskHandle;
  63 +//互斥锁权柄
  64 +typedef void *T_JZsdkMutexHandle;
  65 +//信号量权柄
  66 +typedef void *T_JZsdkSemaHandle;
  67 +//文件权柄
  68 +typedef void *T_JZsdkFileHandle;
  69 +//目录权柄
  70 +typedef void *T_JZsdkDirHandle;
  71 +
  72 +
  73 +
  74 +typedef struct T_JZsdkVector3d
  75 +{
  76 + int x;
  77 + int y;
  78 + int z;
  79 +}T_JZsdkVector3d;
  80 +
  81 +typedef struct T_JZsdkVector3f
  82 +{
  83 + F32_t x;
  84 + F32_t y;
  85 + F32_t z;
  86 +}T_JZsdkVector3f;
  87 +
  88 +typedef struct {
  89 + int pitch; /*!< Specifies int32 value of pitch for attitude. */
  90 + int roll; /*!< Specifies int32 value of roll for attitude */
  91 + int yaw; /*!< Specifies int32 value of yaw for attitude */
  92 +} T_JZsdkAttitude3d;
  93 +
  94 +typedef struct {
  95 + F32_t pitch; /*!< Specifies float value of pitch for attitude. */
  96 + F32_t roll; /*!< Specifies float value of roll for attitude */
  97 + F32_t yaw; /*!< Specifies float value of yaw for attitude */
  98 +} T_JZsdkAttitude3f;
  99 +
  100 +typedef enum E_JZ_SingleCompensationMode{
  101 + JZ_SINGLE_COMPENSATION_MODE_PITCH_LEFT = 0,
  102 + JZ_SINGLE_COMPENSATION_MODE_PITCH_RIGHT = 1,
  103 +}E_JZ_SingleCompensationMode;
  104 +
  105 +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;
  118 +
  119 +/* Exported types ------------------------------------------------------------*/
  120 +
  121 +
  122 +/* Exported functions --------------------------------------------------------*/
  123 +
  124 +#ifdef __cplusplus
  125 +}
  126 +#endif
  127 +
  128 +#endif
  129 +
  130 +
  1 +#include <stdio.h>
  2 +#include "./JZsdk_FrameComparsion.h"
  3 +#include "../JZsdk_Code/JZsdk_Code.h"
  4 +
  5 +/*************************
  6 + *
  7 + * 获取帧的序列号
  8 + *
  9 + * ***************************/
  10 +int JZsdk_Get_FrameSequence(char *DealBuf)
  11 +{
  12 + return DealBuf[6];
  13 +}
  14 +
  15 +/*************************
  16 + *
  17 + * 获取帧的长度
  18 + *
  19 + * ***************************/
  20 +int JZsdk_Get_FrameLength(char *DealBuf)
  21 +{
  22 + // 转换为 unsigned char 避免符号扩展问题
  23 + unsigned char *buf = (unsigned char *)DealBuf;
  24 +
  25 + // 正确计算:高位字节左移8位 + 低位字节
  26 + return (buf[3] << 8) | buf[4];
  27 +}
  28 +
  29 +/***************************
  30 + * 、
  31 + *
  32 + * 帧校对 获取功能
  33 + *
  34 + *
  35 + * ***********************/
  36 +int JZsdk_FrameComparsion(char *getdata, int len)
  37 +{
  38 + //1、判断是否是5A帧
  39 + if (getdata[0] == 0x5A && getdata[1] == 0x5A && getdata[2] == 0x77)
  40 + {
  41 + //printf("JZsdk_FrameComparsion:5A帧\n");
  42 + return JZsdk_5AFrameComparsion(getdata, len);
  43 + }
  44 +
  45 + //2、判断是否是5B帧
  46 + if (getdata[0] == 0x5b && getdata[1] == 0x5b && getdata[2] == 0x77)
  47 + {
  48 + //printf("JZsdk_FrameComparsion:5B帧\n");
  49 + return JZsdk_5BFrameComparsion(getdata, len);
  50 + }
  51 +
  52 + //3、判断是否是6A帧
  53 + if (getdata[0] == 0x6A && getdata[1] == 0x6A && getdata[2] == 0x77)
  54 + {
  55 + //printf("JZsdk_FrameComparsion:6A帧\n");
  56 + return JZsdk_6AFrameComparsion(getdata, len);
  57 + }
  58 +
  59 + //4、判断是否是6B帧
  60 + if (getdata[0] == 0x6b && getdata[1] == 0x6b && getdata[2] == 0x77)
  61 + {
  62 + //printf("JZsdk_FrameComparsion:6B帧\n");
  63 + return JZsdk_6BFrameComparsion(getdata, len);
  64 + }
  65 +
  66 + printf("接受到的帧,没有帧头或者帧尾,退出recv帧判断函数\n");
  67 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  68 +}
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_FrameComparsion.h
  4 + * 用于帧对比的头文件
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_FRAMECOMPARSION_H
  11 +#define JZSDK_FRAMECOMPARSION_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +#include "JZsdk_FrameComparsion_5Aframe.h"
  22 +#include "JZsdk_FrameComparsion_5Bframe.h"
  23 +#include "JZsdk_FrameComparsion_6Aframe.h"
  24 +#include "JZsdk_FrameComparsion_6Bframe.h"
  25 +#include "JZsdk_GetFrameTemplate.h"
  26 +
  27 +/* Exported types ------------------------------------------------------------*/
  28 +
  29 +
  30 +/* Exported functions --------------------------------------------------------*/
  31 +int JZsdk_Get_FrameSequence(char *DealBuf);
  32 +int JZsdk_Get_FrameLength(char *DealBuf);
  33 +
  34 +int JZsdk_FrameComparsion(char *getdata, int len);
  35 +
  36 +#ifdef __cplusplus
  37 +}
  38 +#endif
  39 +
  40 +#endif
  1 +#include <stdio.h>
  2 +#include "../JZsdk_Code/JZsdk_Code.h"
  3 +
  4 +/******************************************************
  5 +
  6 + 接收一级功能码区
  7 +
  8 +/******************************************************/
  9 +//一级功能码是连接功能
  10 +static int Comparison_5AFRAME_FirstLevelCode_0x50(char *getdata)
  11 +{
  12 + //二级功能位
  13 + switch (getdata[8])
  14 + {
  15 + //开启连接
  16 + case 0x51:
  17 + return JZ_INSCODE_5AFRAME_ASKFORCONNECT;
  18 + break;
  19 +
  20 + //设备电源状态
  21 + case 0x52:
  22 + return JZ_INSCODE_5AFRAME_FRAME_POWER_STATUS;
  23 + break;
  24 +
  25 + //心跳帧
  26 + case 0x53:
  27 + return JZ_INSCODE_5AFRAME_HEARTBEAT;
  28 + break;
  29 +
  30 + //时间戳帧
  31 + case 0x54:
  32 + return JZ_INSCODE_5AFRAME_TIMESTAMP;
  33 + break;
  34 +
  35 + //所有版本号帧
  36 + case 0x55:
  37 + return JZ_INSCODE_5AFRAME_ALL_VERSION;
  38 + break;
  39 +
  40 + //所有序列号帧
  41 + case 0x56:
  42 + return JZ_INSCODE_5AFRAME_ALL_SERIAL_NUMBER;
  43 + break;
  44 +
  45 + //log信息打印
  46 + case 0x57:
  47 + return JZ_INSCODE_5AFRAME_LOG_MESSAGE_PRINTF;
  48 + break;
  49 +
  50 + //获取设备信息帧
  51 + case 0x58:
  52 + return JZ_INSCODE_5AFRAME_DEVICE_MESSAGE;
  53 + break;
  54 +
  55 + //设备类型版本查询
  56 + case 0x59:
  57 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_DEVICE_TYPE_VERSION;
  58 + break;
  59 +
  60 + //预设任务帧
  61 + case 0x60:
  62 + return JZ_INSCODE_5AFRAME_PRESET_TASK;
  63 + break;
  64 +
  65 + default:
  66 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  67 + break;
  68 + }
  69 +}
  70 +//一级功能码是语音 或是 文件功能
  71 +static int Comparison_5AFRAME_FirstLevelCode_0x51(char *getdata)
  72 +{
  73 + //二级功能位
  74 + switch (getdata[8])
  75 + {
  76 + //开启语音
  77 + case 0xb1:
  78 + return JZ_INSCODE_5AFRAME_REALTIMEMP2_START;
  79 + break;
  80 +
  81 + //结束语音
  82 + case 0xb2:
  83 + return JZ_INSCODE_5AFRAME_REALTIMEMP2_STOP;
  84 + break;
  85 +
  86 + //有限制传输mp2语言
  87 + case 0xb3:
  88 + return JZ_INSCODE_5AFRAME_REALTIMEMP2_LIMIT_TRANSMISSION;
  89 + break;
  90 +
  91 + //打开音频文件上传
  92 + case 0x01:
  93 + return JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_START;
  94 + break;
  95 +
  96 + //有限制传输音频文件
  97 + case 0x02:
  98 + return JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_LIMIT_TRANSMISSION;
  99 + break;
  100 +
  101 + //带偏移量的传输音频文件
  102 + case 0x05:
  103 + return JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_LIMIT_TRANSMISSION_2;
  104 + break;
  105 +
  106 + //关闭音频文件上传
  107 + case 0x03:
  108 + return JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_STOP;
  109 + break;
  110 +
  111 + //关闭音频文件上传并校验
  112 + case 0x04:
  113 + return JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_STOP_AND_CHECK;
  114 + break;
  115 +
  116 + default:
  117 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  118 + break;
  119 + }
  120 +}
  121 +//一级功能码是音频/功放/音量调节
  122 +static int Comparison_5AFRAME_FirstLevelCode_0x52(char *getdata)
  123 +{
  124 + //二级功能位
  125 + switch (getdata[8])
  126 + {
  127 + //播放指定音频
  128 + case 0x02:
  129 + return JZ_INSCODE_5AFRAME_AUDIO_PLAYFILE;
  130 + break;
  131 +
  132 + //音频继续播放
  133 + case 0x04:
  134 + return JZ_INSCODE_5AFRAME_AUDIO_CONTINUE;
  135 + break;
  136 +
  137 + //音频暂停播放
  138 + case 0x05:
  139 + return JZ_INSCODE_5AFRAME_AUDIO_PAUSE;
  140 + break;
  141 +
  142 + //音频停止播放
  143 + case 0x06:
  144 + return JZ_INSCODE_5AFRAME_AUDIO_STOP;
  145 + break;
  146 +
  147 + //音频上一曲
  148 + case 0x07:
  149 + return JZ_INSCODE_5AFRAME_AUDIO_LASTSONG;
  150 + break;
  151 +
  152 + //音频下一曲
  153 + case 0x08:
  154 + return JZ_INSCODE_5AFRAME_AUDIO_NEXTSONG;
  155 + break;
  156 +
  157 + //强制关闭功放
  158 + case 0x20:
  159 + return JZ_INSCODE_5AFRAME_AMPLIFIER_STOP;
  160 + break;
  161 +
  162 + //强制开启功放
  163 + case 0x21:
  164 + return JZ_INSCODE_5AFRAME_AMPLIFIER_OPEN;
  165 + break;
  166 +
  167 + //恢复自动功放
  168 + case 0x22:
  169 + return JZ_INSCODE_5AFRAME_AMPLIFIER_AUTO;
  170 + break;
  171 +
  172 + //设置回传时间
  173 + case 0x30:
  174 + return JZ_INSCODE_5AFRAME_CURRENT_PLAY_TIME;
  175 + break;
  176 +
  177 + //调节音量
  178 + case 0x10:
  179 + return JZ_INSCODE_5AFRAME_VOLUME;
  180 + break;
  181 +
  182 + default:
  183 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  184 + break;
  185 + }
  186 +}
  187 +//一级功能码是查询状态
  188 +static int Comparison_5AFRAME_FirstLevelCode_0x53(char *getdata)
  189 +{
  190 + //二级功能位
  191 + switch (getdata[8])
  192 + {
  193 + //查询音量
  194 + case 0x01:
  195 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_VOLUME;
  196 + break;
  197 +
  198 + //查询播放状态
  199 + case 0x02:
  200 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_PLAY;
  201 + break;
  202 +
  203 + //查询云台角度(已舍弃)
  204 + case 0x03:
  205 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL;
  206 + break;
  207 +
  208 + //查询播放文件名
  209 + case 0x04:
  210 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_PLAYFILENAME;
  211 + break;
  212 +
  213 + //查询是否打开循环
  214 + case 0x05:
  215 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_LOOPPLAY;
  216 + break;
  217 +
  218 + //查询音色
  219 + case 0x06:
  220 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSTONE;
  221 + break;
  222 +
  223 + //查询语速
  224 + case 0x07:
  225 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSSPEED;
  226 + break;
  227 +
  228 + //查询是否打开了播放时间回传
  229 + case 0x08:
  230 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_CURRENT_PLAYTIME;
  231 + break;
  232 +
  233 + //查询软件版本号
  234 + case 0xf1:
  235 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_SOFTWAREVERSION;
  236 + break;
  237 +
  238 + default:
  239 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  240 + break;
  241 + }
  242 +
  243 +}
  244 +//一级功能码是删除
  245 +static int Comparison_5AFRAME_FirstLevelCode_0x54(char *getdata)
  246 +{
  247 + //二级功能位
  248 + switch (getdata[8])
  249 + {
  250 + //删除音频
  251 + case 0x02:
  252 + return JZ_INSCODE_5AFRAME_DELETE_AUDIO;
  253 + break;
  254 +
  255 + //删除录音
  256 + case 0x03:
  257 + return JZ_INSCODE_5AFRAME_DELETE_VOICE_RECORD;
  258 + break;
  259 +
  260 + // //删除视频
  261 + // case 0x02:
  262 + // return JZ_INSCODE_DELETE_VIDEO_RECORD;
  263 + // break;
  264 +
  265 + default:
  266 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  267 + break;
  268 + }
  269 +}
  270 +//一级功能码开启关闭循环
  271 +static int Comparison_5AFRAME_FirstLevelCode_0x55(char *getdata)
  272 +{
  273 + //二级功能位
  274 + switch (getdata[8])
  275 + {
  276 + //开启关闭循环
  277 + case 0x00:
  278 + return JZ_INSCODE_5AFRAME_PLAY_LOOP;
  279 + break;
  280 +
  281 + //设置循环播放间隔
  282 + case 0x01:
  283 + return JZ_INSCODE_5AFRAME_ADUIO_PLAY_LOOP_INTERVAL;
  284 + break;
  285 +
  286 + default:
  287 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  288 + break;
  289 + }
  290 +}
  291 +//一级功能码
  292 +static int Comparison_5AFRAME_FirstLevelCode_0x56(char *getdata)
  293 +{
  294 + //二级功能位
  295 + switch (getdata[8])
  296 + {
  297 + default:
  298 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  299 + break;
  300 + }
  301 +}
  302 +//一级功能码是 文本播放
  303 +static int Comparison_5AFRAME_FirstLevelCode_0x57(char *getdata)
  304 +{
  305 + //二级功能位
  306 + switch (getdata[8])
  307 + {
  308 + //设置音色
  309 + case 0x01:
  310 + return JZ_INSCODE_5AFRAME_TTS_SET_TONE;
  311 + break;
  312 +
  313 + //设置语速
  314 + case 0x02:
  315 + return JZ_INSCODE_5AFRAME_TTS_SET_SPEED;
  316 + break;
  317 +
  318 + //开始发送TTS
  319 + case 0x03:
  320 + return JZ_INSCODE_5AFRAME_TTS_TRANS_START;
  321 + break;
  322 +
  323 + case 0x04:
  324 + return JZ_INSCODE_5AFRAME_TTS_TRANS_STOP;
  325 + break;
  326 +
  327 + //定长传输文本
  328 + case 0x05:
  329 + return JZ_INSCODE_5AFRAME_TTS_TRANS_LIMIT_TRANSMISSION;
  330 + break;
  331 +
  332 + default:
  333 + break;
  334 + }
  335 +}
  336 +//一级功能 查询列表
  337 +static int Comparison_5AFRAME_FirstLevelCode_0x58(char *getdata)
  338 +{
  339 + //二级功能位
  340 + switch (getdata[8])
  341 + {
  342 + //获取音乐列表
  343 + case 0x01:
  344 + return JZ_INSCODE_5AFRAME_AUDIO_GETMUSICLIST;
  345 + break;
  346 +
  347 + //查询歌曲类音频详细信息
  348 + case 0x03:
  349 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_AUDIO_DETAIL_MESSAGE;
  350 + break;
  351 +
  352 + //获取pcm列表
  353 + case 0x10:
  354 + return JZ_INSCODE_5AFRAME_PCM_GETPCMLIST;
  355 + break;
  356 +
  357 + default:
  358 + break;
  359 + }
  360 +}
  361 +//一级功能码opus功能
  362 +static int Comparison_5AFRAME_FirstLevelCode_0x59(char *getdata)
  363 +{
  364 + //二级功能位
  365 + switch (getdata[8])
  366 + {
  367 + case 0x10:
  368 + return JZ_INSCODE_5AFRAME_OPUS_PLAY;
  369 + break;
  370 +
  371 + //opus录音传输
  372 + //opus传输开始
  373 + case 0xF1:
  374 + return JZ_INSCODE_5AFRAME_OPUS_TRANS_START_1;
  375 + break;
  376 +
  377 + //opus传输二型
  378 + case 0xF5:
  379 + return JZ_INSCODE_5AFRAME_OPUS_TRANS_START_2;
  380 + break;
  381 +
  382 + //opus传输结束
  383 + case 0xF2:
  384 + return JZ_INSCODE_5AFRAME_OPUS_TRANS_STOP;
  385 + break;
  386 +
  387 + case 0xF4:
  388 + return JZ_INSCODE_5AFRAME_OPUS_TRANS_STOP_AND_CHECK;
  389 + break;
  390 +
  391 + //opus定长传输
  392 + case 0xF3:
  393 + return JZ_INSCODE_5AFRAME_OPUS_TRANS_LIMIT_TRANSMISSION;
  394 + break;
  395 +
  396 + //opus播放
  397 + case 0x01:
  398 + return JZ_INSCODE_5AFRAME_OPUS_PLAY;
  399 + break;
  400 +
  401 + //opus实时语音开始
  402 + case 0xE1:
  403 + return JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_START;
  404 + break;
  405 +
  406 + case 0xE2:
  407 + return JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_STOP;
  408 + break;
  409 +
  410 + //opus定长传输文件
  411 + case 0xE3:
  412 + return JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_LIMIT_TRANSMISSION;
  413 + break;
  414 +
  415 + default:
  416 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  417 + break;
  418 + }
  419 +}
  420 +
  421 +//一级功能码,硬件引脚控制
  422 +static int Comparison_5AFRAME_FirstLevelCode_0x5A(char *getdata)
  423 +{
  424 + //二级功能位
  425 + switch (getdata[8])
  426 + {
  427 + //对外供电开关
  428 + case 0x01:
  429 + return JZ_INSCODE_5AFRAME_OUTPUTPOWER_CONTROL;
  430 + break;
  431 +
  432 + //对外供电查询
  433 + case 0x02:
  434 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_OUTPUTPOWER;
  435 + break;
  436 +
  437 + default:
  438 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  439 + break;
  440 + }
  441 +}
  442 +
  443 +//一级功能码 激光控制
  444 +static int Comparison_5AFRAME_FirstLevelCode_0x60(char *getdata)
  445 +{
  446 + //二级功能位
  447 + switch (getdata[8])
  448 + {
  449 + //激光控制
  450 + case 0x51:
  451 + return JZ_INSCODE_5AFRAME_LASER_CONTROL;
  452 + break;
  453 +
  454 + case 0x52:
  455 + return JZ_INSCODE_5AFRAME_LASER_MODE;
  456 + break;
  457 +
  458 + case 0x53:
  459 + return JZ_INSCODE_5AFRAME_LASER_LUMEN;
  460 + break;
  461 +
  462 + case 0x54:
  463 + return JZ_INSCODE_5AFRAME_LASER_COLOR;
  464 + break;
  465 +
  466 + case 0x55:
  467 + return JZ_INSCODE_5AFRAME_LASER_POWER_LIMIT;
  468 + break;
  469 + default:
  470 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  471 + break;
  472 + }
  473 +}
  474 +
  475 +//一级功能码 爆闪频率
  476 +static int Comparison_5AFRAME_FirstLevelCode_0x61(char *getdata)
  477 +{
  478 + //二级功能位
  479 + switch (getdata[8])
  480 + {
  481 + //爆闪频率
  482 + case 0x51:
  483 + return JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_FREQUENCY;
  484 + break;
  485 +
  486 + default:
  487 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  488 + break;
  489 + }
  490 +}
  491 +
  492 +//一级功能码 灯光控制
  493 +static int Comparison_5AFRAME_FirstLevelCode_0x62(char *getdata)
  494 +{
  495 + //二级功能位
  496 + switch (getdata[8])
  497 + {
  498 + //灯光模式
  499 + case 0x51:
  500 + return JZ_INSCODE_5AFRAME_SEARCHLIGHT_CONTROL;
  501 + break;
  502 +
  503 + default:
  504 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  505 + break;
  506 + }
  507 +}
  508 +
  509 +//一级功能码 灯光亮度
  510 +static int Comparison_5AFRAME_FirstLevelCode_0x63(char *getdata)
  511 +{
  512 + //二级功能位
  513 + switch (getdata[8])
  514 + {
  515 + //灯光亮度
  516 + case 0x51:
  517 + return JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMEN;
  518 + break;
  519 +
  520 + case 0x53:
  521 + return JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMENPOWERLIMIT;
  522 + break;
  523 +
  524 + default:
  525 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  526 + break;
  527 + }
  528 +}
  529 +
  530 +//一级功能码云台功能
  531 +static int Comparison_5AFRAME_FirstLevelCode_0x64(char *getdata)
  532 +{
  533 + //二级功能位
  534 + switch (getdata[8])
  535 + {
  536 + //云台俯仰控制
  537 + case 0x51:
  538 + return JZ_INSCODE_5AFRAME_GIMBAL_PITCH_CONTROL;
  539 + break;
  540 +
  541 + //云台俯仰微调控制
  542 + case 0x52:
  543 + return JZ_INSCODE_5AFRAME_GIMBAL_PITCH_FINETUNING_CONTROL;
  544 + break;
  545 +
  546 + //加减单边云台俯仰微调值(补偿)
  547 + case 0x53:
  548 + return JZ_INSCODE_5AFRAME_GIMBAL_PITCH_COMPENSATE;
  549 + break;
  550 +
  551 + default:
  552 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  553 + break;
  554 + }
  555 +}
  556 +
  557 +//一级功能码 云台航向
  558 +static int Comparison_5AFRAME_FirstLevelCode_0x65(char *getdata)
  559 +{
  560 +
  561 +}
  562 +
  563 +//一级功能码 警灯模式控制
  564 +static int Comparison_5AFRAME_FirstLevelCode_0x66(char *getdata)
  565 +{
  566 + switch (getdata[8])
  567 + {
  568 + //警灯模式控制
  569 + case 0x51:
  570 + return JZ_INSCODE_5AFRAME_WARNINGLIGHT_CONTROL;
  571 + break;
  572 +
  573 + //警灯模式控制2
  574 + case 0x52:
  575 + return JZ_INSCODE_5AFRAME_WARNINGLIGHT_CONTROL_2;
  576 + break;
  577 +
  578 + //警灯模式查询2
  579 + case 0xA2:
  580 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_CONTROL_2;
  581 + break;
  582 +
  583 + default:
  584 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  585 + break;
  586 + }
  587 +}
  588 +
  589 +//一级功能码 警灯眼色选择
  590 +static int Comparison_5AFRAME_FirstLevelCode_0x67(char *getdata)
  591 +{
  592 + switch (getdata[8])
  593 + {
  594 + //警灯颜色选择
  595 + case 0x51:
  596 + return JZ_INSCODE_5AFRAME_WARNINGLIGHT_COLOUR;
  597 + break;
  598 +
  599 + default:
  600 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  601 + break;
  602 + }
  603 +}
  604 +
  605 +//一级功能码 探照灯消息订阅
  606 +static int Comparison_5AFRAME_FirstLevelCode_0x68(char *getdata)
  607 +{
  608 + switch (getdata[8])
  609 + {
  610 + //探照灯消息订阅
  611 + case 0x51:
  612 + return JZ_INSCODE_5AFRAME_SEARCHLIGHT_MESSAGE_SUBSCRIPTION_CONTROL;
  613 + break;
  614 +
  615 + default:
  616 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  617 + break;
  618 + }
  619 +
  620 +}
  621 +
  622 +//一级功能码 私有协议
  623 +static int Comparison_5AFRAME_FirstLevelCode_0x69(char *getdata)
  624 +{
  625 +
  626 +}
  627 +
  628 +//一级功能码 6F查询帧
  629 +static int Comparison_5AFRAME_FirstLevelCode_0x6F(char *getdata)
  630 +{
  631 + //二级功能位
  632 + switch (getdata[8])
  633 + {
  634 + //灯光查询
  635 + case 0x51:
  636 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LIGHTATTRIBUTE;
  637 + break;
  638 +
  639 + //温度查询
  640 + case 0x52:
  641 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE;
  642 + break;
  643 +
  644 + //激光查询
  645 + case 0x53:
  646 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_LASER_STATUS;
  647 + break;
  648 +
  649 + //云台角度查询
  650 + case 0x54:
  651 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL;
  652 + break;
  653 +
  654 + //警灯状态查询
  655 + case 0x55:
  656 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS;
  657 + break;
  658 +
  659 + //警灯颜色查询
  660 + case 0x56:
  661 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR;
  662 + break;
  663 +
  664 + //产品序列号查询
  665 + case 0x57:
  666 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_SERIALNUMBER;
  667 + break;
  668 +
  669 + //云台微调值查询
  670 + case 0x58:
  671 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL_FINETUNING;
  672 + break;
  673 +
  674 + default:
  675 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  676 + break;
  677 + }
  678 +}
  679 +
  680 +
  681 +//一级功能码 升级帧
  682 +static int Comparison_5AFRAME_FirstLevelCode_0xA1(char *getdata)
  683 +{
  684 + //二级功能位
  685 + switch (getdata[8])
  686 + {
  687 + //升级准备
  688 + case 0x01:
  689 + return JZ_INSCODE_5AFRAME_UPGRADE_PERPARE;
  690 + break;
  691 +
  692 + //升级校验码
  693 + case 0x02:
  694 + return JZ_INSCODE_5AFRAME_UPGRADE_SEND_CHECKCODE;
  695 + break;
  696 +
  697 + //升级数据发送开始
  698 + case 0x03:
  699 + return JZ_INSCODE_5AFRAME_UPGRADE_STRAT;
  700 + break;
  701 +
  702 + //升级数据发送结束
  703 + case 0x04:
  704 + return JZ_INSCODE_5AFRAME_UPGRADE_END;
  705 + break;
  706 +
  707 + //升级发送数据
  708 + case 0xF1:
  709 + return JZ_INSCODE_5AFRAME_UPGRADE_TRANS;
  710 + break;
  711 +
  712 + //升级状态查询
  713 + case 0x10:
  714 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_UPGRADE_STATUS;
  715 + break;
  716 +
  717 + default:
  718 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  719 + break;
  720 + }
  721 +}
  722 +
  723 +
  724 +static int Comparison_5AFRAME_FirstLevelCode_0x90(char *getdata)
  725 +{
  726 + switch (getdata[8])
  727 + {
  728 + case 0x00:
  729 + return JZ_INSCODE_5AFRAME_CAMERA_VIDEO_PUSH_INDEX;
  730 + break;
  731 +
  732 + case 0x01:
  733 + return JZ_INSOCDE_5AFRAME_CAMERA_TAKE_PHOTO;
  734 + break;
  735 +
  736 + case 0x02:
  737 + return JZ_INSCODE_5AFRAME_CAMERA_VIDEO_RECORD_START;
  738 + break;
  739 +
  740 + case 0x03:
  741 + return JZ_INSCODE_5AFRAME_CAMERA_VIDEO_RECORD_STOP;
  742 + break;
  743 +
  744 + case 0x04:
  745 + return JZ_INSCODE_5AFRAME_CAMERA_SHUTTER_CONTROL;
  746 + break;
  747 +
  748 + case 0x05:
  749 + return JZ_INSCODE_5AFRAME_CAMERA_FREEZE_CONTROL;
  750 + break;
  751 +
  752 + default:
  753 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  754 + break;
  755 + }
  756 +}
  757 +
  758 +static int Comparison_5AFRAME_FirstLevelCode_0x93(char *getdata)
  759 +{
  760 + switch (getdata[8])
  761 + {
  762 + case 0x00:
  763 + return JZ_INSOCDE_5AFRAME_IRC_CORRECT_WAY;
  764 + break;
  765 +
  766 + case 0x10:
  767 + return JZ_INSCODE_5AFRAME_IRC_SPC_PARAM;
  768 + break;
  769 +
  770 + case 0x11:
  771 + return JZ_INSCODE_5AFRAME_IRC_TPC_PARAM;
  772 + break;
  773 +
  774 + default:
  775 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  776 + break;
  777 + }
  778 +}
  779 +
  780 +static int Comparison_5AFRAME_FirstLevelCode_0x94(char *getdata)
  781 +{
  782 + switch (getdata[8])
  783 + {
  784 + case 0x00:
  785 + return JZ_INSOCDE_5AFRAME_IRC_OUTPUT_COLOR_MODE;
  786 + break;
  787 +
  788 + case 0x10:
  789 + return JZ_INSCODE_5AFRAME_IRC_PSEUDO_COLOR_PARAM;
  790 + break;
  791 +
  792 + case 0x11:
  793 + return JZ_INSCODE_5AFRAME_IRC_GAS_ENHANCE_PARAM;
  794 + break;
  795 +
  796 + default:
  797 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  798 + break;
  799 + }
  800 +}
  801 +
  802 +
  803 +/******************************************************************
  804 +
  805 + 回复帧对比
  806 + 成功返回帧类型 无对比数据返回 JZ_ERROR_SYSTEM_FRAME_ERROR
  807 +
  808 +******************************************************************/
  809 +int JZsdk_5AFrameComparsion(char *getdata, int len)
  810 +{
  811 + //1、判断帧头帧尾
  812 + if (
  813 + ( (getdata[0]!= 0x5a) && (getdata[1] != 0x5a) && (getdata[2]!=0x77) )
  814 + || ( (getdata[len -2]!= 0x00) && (getdata[ len -1] != 0x23) )
  815 + )
  816 + {
  817 + printf("接受到的帧,没有帧头或者帧尾,退出JZsdk_5AFrameComparsion函数\n");
  818 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  819 + }
  820 +
  821 + //一级功能码
  822 + switch (getdata[7])
  823 + {
  824 +/*********************************************************************************************************************************************************
  825 + *
  826 + * 连接请求码
  827 + *
  828 +*********************************************************************************************************************************************************/
  829 + //一级功能码是连接请求
  830 + case 0x50:
  831 + return Comparison_5AFRAME_FirstLevelCode_0x50(getdata);
  832 + break;
  833 +
  834 +/*********************************************************************************************************************************************************
  835 + *
  836 + * 喊话器功能码
  837 + *
  838 +*********************************************************************************************************************************************************/
  839 + //一级功能码 语音 / 音频文件功能
  840 + case 0x51:
  841 + return Comparison_5AFRAME_FirstLevelCode_0x51(getdata);
  842 + break;
  843 +
  844 + //一级功能码 音频/ 功放/ 音量调节
  845 + case 0x52:
  846 + return Comparison_5AFRAME_FirstLevelCode_0x52(getdata);
  847 + break;
  848 +
  849 + //一级功能码 查询状态
  850 + case 0x53:
  851 + return Comparison_5AFRAME_FirstLevelCode_0x53(getdata);
  852 + break;
  853 +
  854 + //一级功能码 删除
  855 + case 0x54:
  856 + return Comparison_5AFRAME_FirstLevelCode_0x54(getdata);
  857 + break;
  858 +
  859 + //一级功能码 开启关闭循环
  860 + case 0x55:
  861 + return Comparison_5AFRAME_FirstLevelCode_0x55(getdata);
  862 + break;
  863 +
  864 + //一级功能码
  865 + case 0x56:
  866 + return Comparison_5AFRAME_FirstLevelCode_0x56(getdata);
  867 + break;
  868 +
  869 + //一级功能码 TTS
  870 + case 0x57:
  871 + return Comparison_5AFRAME_FirstLevelCode_0x57(getdata);
  872 + break;
  873 +
  874 + //一级功能码 查询列表功能
  875 + case 0x58:
  876 + return Comparison_5AFRAME_FirstLevelCode_0x58(getdata);
  877 + break;
  878 +
  879 + //一级功能码 opus
  880 + case 0x59:
  881 + return Comparison_5AFRAME_FirstLevelCode_0x59(getdata);
  882 + break;
  883 +
  884 + //一级功能码,硬件引脚控制
  885 + case 0x5A:
  886 + return Comparison_5AFRAME_FirstLevelCode_0x5A(getdata);
  887 + break;
  888 +
  889 + //一级功能码 激光控制
  890 + case 0x60:
  891 + return Comparison_5AFRAME_FirstLevelCode_0x60(getdata);
  892 + break;
  893 +
  894 + //一级功能码 爆闪控制
  895 + case 0x61:
  896 + return Comparison_5AFRAME_FirstLevelCode_0x61(getdata);
  897 + break;
  898 +
  899 + //一级功能码 灯光控制
  900 + case 0x62:
  901 + return Comparison_5AFRAME_FirstLevelCode_0x62(getdata);
  902 + break;
  903 +
  904 + //一级功能码 灯光亮度
  905 + case 0x63:
  906 + return Comparison_5AFRAME_FirstLevelCode_0x63(getdata);
  907 + break;
  908 +
  909 + //一级功能码 云台俯仰
  910 + case 0x64:
  911 + return Comparison_5AFRAME_FirstLevelCode_0x64(getdata);
  912 + break;
  913 +
  914 + //一级功能码 云台航向
  915 + case 0x65:
  916 + return Comparison_5AFRAME_FirstLevelCode_0x65(getdata);
  917 + break;
  918 +
  919 + //一级功能码 警灯模式控制
  920 + case 0x66:
  921 + return Comparison_5AFRAME_FirstLevelCode_0x66(getdata);
  922 + break;
  923 +
  924 + //一级功能码 警灯眼色选择
  925 + case 0x67:
  926 + return Comparison_5AFRAME_FirstLevelCode_0x67(getdata);
  927 + break;
  928 +
  929 + //一级功能码 探照灯消息订阅
  930 + case 0x68:
  931 + return Comparison_5AFRAME_FirstLevelCode_0x68(getdata);
  932 + break;
  933 +
  934 + //一级功能码 私有协议
  935 + case 0x69:
  936 + return Comparison_5AFRAME_FirstLevelCode_0x69(getdata);
  937 + break;
  938 +
  939 + //一级功能码 6f查询帧
  940 + case 0x6F:
  941 + return Comparison_5AFRAME_FirstLevelCode_0x6F(getdata);
  942 + break;
  943 +
  944 + //一级功能码 90
  945 + case 0x90:
  946 + return Comparison_5AFRAME_FirstLevelCode_0x90(getdata);
  947 + break;
  948 +
  949 + //一级功能码 93
  950 + case 0x93:
  951 + return Comparison_5AFRAME_FirstLevelCode_0x93(getdata);
  952 + break;
  953 +
  954 + //一级功能码 92
  955 + case 0x94:
  956 + return Comparison_5AFRAME_FirstLevelCode_0x94(getdata);
  957 + break;
  958 +
  959 + //一级功能码 升级功能
  960 + case 0xA1:
  961 + return Comparison_5AFRAME_FirstLevelCode_0xA1(getdata);
  962 + break;
  963 +/*********************************************************************************************************************************************************
  964 + *
  965 + *
  966 + *
  967 +*********************************************************************************************************************************************************/
  968 + default:
  969 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  970 + break;
  971 + }
  972 +}
  973 +
  1 +/**********************************************************************
  2 + * @file
  3 + *
  4 + *
  5 + *********************************************************************
  6 + */
  7 +
  8 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  9 +#ifndef JZSDK_FRAMECOMPARSION_5AFRAME_H
  10 +#define JZSDK_FRAMECOMPARSION_5AFRAME_H
  11 +
  12 +/* Includes ------------------------------------------------------------------*/
  13 +
  14 +#ifdef __cplusplus
  15 +extern "C" {
  16 +#endif
  17 +
  18 +/* Exported constants --------------------------------------------------------*/
  19 +/* 常亮定义*/
  20 +
  21 +/* Exported types ------------------------------------------------------------*/
  22 +
  23 +/* Exported functions --------------------------------------------------------*/
  24 +
  25 +int JZsdk_5AFrameComparsion(char *getdata, int len);
  26 +
  27 +#ifdef __cplusplus
  28 +}
  29 +#endif
  30 +
  31 +#endif
  1 +#include <stdio.h>
  2 +#include "../JZsdk_Code/JZsdk_Code.h"
  3 +
  4 +
  5 +/******************************************************
  6 +
  7 + 接收一级功能码区
  8 +
  9 +/******************************************************/
  10 +//一级功能码是连接功能
  11 +static int Comparison_5BFRAME_FirstLevelCode_0x50(char *getdata)
  12 +{
  13 + //二级功能位
  14 + switch (getdata[8])
  15 + {
  16 + //回复连接
  17 + case 0x51:
  18 + return JZ_INSCODE_5BFRAME_INITIATECONNECT;
  19 + break;
  20 +
  21 + //心跳帧回复
  22 + case 0x53:
  23 + return JZ_INSCODE_5BFRAME_HEARTBEAT;
  24 + break;
  25 +
  26 + //时间戳回复
  27 + case 0x54:
  28 + return JZ_INSCODE_5BFRAME_TIMESTAMP;
  29 + break;
  30 +
  31 + //版本号回复
  32 + case 0x55:
  33 + return JZ_INSCODE_5BFRAME_ALL_VERSION;
  34 + break;
  35 +
  36 + //序列号回复
  37 + case 0x56:
  38 + return JZ_INSCODE_5BFRAME_ALL_SERIAL_NUMBER;
  39 + break;
  40 +
  41 + //log信息打印
  42 + case 0x58:
  43 + return JZ_INSCODE_5BFRAME_DEVICE_MESSAGE;
  44 + break;
  45 +
  46 + //设备类型版本号返还
  47 + case 0x59:
  48 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_DEVICE_TYPE_VERSION;
  49 + break;
  50 +
  51 + default:
  52 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  53 + break;
  54 + }
  55 +}
  56 +
  57 +//一级功能码是操作功能
  58 +static int Comparison_5BFRAME_FirstLevelCode_0x51(char *getdata)
  59 +{
  60 + //二级功能位
  61 + switch (getdata[8])
  62 + {
  63 + //回复操作成功
  64 + case 0x01:
  65 + return JZ_INSCODE_5BFRAME_SUCESS;
  66 + break;
  67 +
  68 + //回复操作失败
  69 + case 0xff:
  70 + return JZ_INSCODE_5BFRAME_DEFEAT;
  71 + break;
  72 +
  73 + default:
  74 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  75 + break;
  76 + }
  77 +}
  78 +//一级功能码是音频列表功能
  79 +static int Comparison_5BFRAME_FirstLevelCode_0x53(char *getdata)
  80 +{
  81 + //二级功能位
  82 + switch (getdata[8])
  83 + {
  84 + //音量返回
  85 + case 0x01:
  86 + return JZ_INSCODE_5BFRAME_VOLUME;
  87 + break;
  88 +
  89 + //播放状态返回
  90 + case 0x02:
  91 + return JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS;
  92 + break;
  93 +
  94 + //当前播放文件名返回
  95 + case 0x04:
  96 + return JZ_INSCODE_5BFRAME_AUDIO_PLAYFILENAME;
  97 + break;
  98 +
  99 + //查询是否开启循环
  100 + case 0x05:
  101 + return JZ_INSCODE_5BFRAME_AUDIO_PLAYLOOPSTATUS;
  102 + break;
  103 +
  104 + //查询音色
  105 + case 0x06:
  106 + return JZ_INSCODE_5BFRAME_TTS_TONE;
  107 + break;
  108 +
  109 + //查询语速
  110 + case 0x07:
  111 + return JZ_INSCODE_5BFRAME_TTS_SPEED;
  112 + break;
  113 +
  114 + //版本返回
  115 + case 0xf1:
  116 + return JZ_INSCODE_5BFRAME_SORTWAREVERSION;
  117 + break;
  118 +
  119 + //播放结束(主动返回)
  120 + case 0xff:
  121 + return JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS_END;
  122 + break;
  123 +
  124 + default:
  125 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  126 + break;
  127 + }
  128 +}
  129 +
  130 +//一级功能码是音频列表功能
  131 +static int Comparison_5BFRAME_FirstLevelCode_0x58(char *getdata)
  132 +{
  133 + //二级功能位
  134 + switch (getdata[8])
  135 + {
  136 + //查询列表开始
  137 + case 0x00:
  138 + return JZ_INSCODE_5BFRAME_MUSICLIST_START;
  139 + break;
  140 +
  141 + //文件列表帧
  142 + case 0x02:
  143 + return JZ_INSCODE_5BFRAME_MUSICLIST_TRANS;
  144 + break;
  145 +
  146 + //查询歌曲类音频详细信息
  147 + case 0x03:
  148 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_AUDIO_DETAIL_MESSAGE;
  149 + break;
  150 +
  151 + //结束列表返回
  152 + case 0xff:
  153 + return JZ_INSCODE_5BFRAME_MUSICLIST_STOP;
  154 + break;
  155 +
  156 + default:
  157 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  158 + break;
  159 + }
  160 +}
  161 +
  162 +//一级功能码是opus功能
  163 +static int Comparison_5BFRAME_FirstLevelCode_0x59(char *getdata)
  164 +{
  165 + //二级功能位
  166 + switch (getdata[8])
  167 + {
  168 + //opus解码状态
  169 + case 0xF2:
  170 + return JZ_INSCODE_5BFRAME_OPUS_DECODE_STATUS;
  171 + break;
  172 +
  173 + default:
  174 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  175 + break;
  176 + }
  177 +}
  178 +
  179 +//一级功能码是硬件引脚控制
  180 +static int Comparison_5BFRAME_FirstLevelCode_0x5A(char *getdata)
  181 +{
  182 + //二级功能位
  183 + switch (getdata[8])
  184 + {
  185 + //回复对供电开关状态返回
  186 + case 0x02:
  187 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_OUTPUTPOWER;
  188 + break;
  189 +
  190 + default:
  191 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  192 + break;
  193 + }
  194 +}
  195 +
  196 +//一级功能码是激光
  197 +static int Comparison_5BFRAME_FirstLevelCode_0x60(char *getdata)
  198 +{
  199 + //二级功能位
  200 + switch (getdata[8])
  201 + {
  202 + //回复激光查询
  203 + case 0x51:
  204 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_LASER_STATUS_CONTROL;
  205 + break;
  206 +
  207 + case 0x52:
  208 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_LASER_STATUS_MODE;
  209 + break;
  210 +
  211 + case 0x53:
  212 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_LASER_STATUS_LUMEN;
  213 + break;
  214 +
  215 + case 0x54:
  216 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_LASER_STATUS_COLOR;
  217 + break;
  218 +
  219 + case 0x55:
  220 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_LASER_STATUS_POWERLIMIT;
  221 + break;
  222 +
  223 + default:
  224 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  225 + break;
  226 + }
  227 +}
  228 +
  229 +//一级功能码是回复灯光频率
  230 +static int Comparison_5BFRAME_FirstLevelCode_0x61(char *getdata)
  231 +{
  232 + //二级功能位
  233 + switch (getdata[8])
  234 + {
  235 + //回复灯光频率
  236 + case 0x51:
  237 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_FREQUENCY;
  238 + break;
  239 +
  240 + default:
  241 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  242 + break;
  243 + }
  244 +}
  245 +
  246 +//一级功能码是回复灯光模式
  247 +static int Comparison_5BFRAME_FirstLevelCode_0x62(char *getdata)
  248 +{
  249 + //二级功能位
  250 + switch (getdata[8])
  251 + {
  252 + //回复灯光模式
  253 + case 0x51:
  254 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_MODE;
  255 + break;
  256 +
  257 + default:
  258 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  259 + break;
  260 + }
  261 +}
  262 +
  263 +//一级功能码是回复灯光亮度
  264 +static int Comparison_5BFRAME_FirstLevelCode_0x63(char *getdata)
  265 +{
  266 + //二级功能位
  267 + switch (getdata[8])
  268 + {
  269 + //回复灯光亮度
  270 + case 0x51:
  271 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_LUMEN;
  272 + break;
  273 +
  274 + default:
  275 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  276 + break;
  277 + }
  278 +}
  279 +
  280 +//一级功能码是云台俯仰
  281 +static int Comparison_5BFRAME_FirstLevelCode_0x64(char *getdata)
  282 +{
  283 + //二级功能位
  284 + switch (getdata[8])
  285 + {
  286 + //回复云台俯仰
  287 + case 0x51:
  288 + return JZ_INSCODE_5BFRAME_GIMBAL_PITCH;
  289 + break;
  290 +
  291 + //回复云台俯仰微调值
  292 + case 0x52:
  293 + return JZ_INSCODE_5BFRAME_GIMBAL_PITCH_FINETUNING;
  294 + break;
  295 +
  296 + default:
  297 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  298 + break;
  299 + }
  300 +}
  301 +//一级功能码是云台航向
  302 +static int Comparison_5BFRAME_FirstLevelCode_0x65(char *getdata)
  303 +{
  304 + //二级功能位
  305 + switch (getdata[8])
  306 + {
  307 + //回复云台航向
  308 + case 0x51:
  309 + return JZ_INSCODE_5BFRAME_GIMBAL_YAW;
  310 + break;
  311 +
  312 +
  313 + default:
  314 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  315 + break;
  316 + }
  317 +}
  318 +//一级功能码是回复警灯状态
  319 +static int Comparison_5BFRAME_FirstLevelCode_0x66(char *getdata)
  320 +{
  321 + //二级功能位
  322 + switch (getdata[8])
  323 + {
  324 + //回复警灯状态
  325 + case 0x51:
  326 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS;
  327 + break;
  328 +
  329 + //回复警灯控制2类
  330 + case 0xA2:
  331 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_CONTROL_2;
  332 + break;
  333 +
  334 + default:
  335 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  336 + break;
  337 + }
  338 +}
  339 +
  340 +//一级功能码是回复警灯颜色
  341 +static int Comparison_5BFRAME_FirstLevelCode_0x67(char *getdata)
  342 +{
  343 + //二级功能位
  344 + switch (getdata[8])
  345 + {
  346 + //回复回复警灯颜色
  347 + case 0x51:
  348 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR;
  349 + break;
  350 +
  351 +
  352 + default:
  353 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  354 + break;
  355 + }
  356 +}
  357 +
  358 +//一级功能码是回复温度/序列号查询
  359 +static int Comparison_5BFRAME_FirstLevelCode_0x69(char *getdata)
  360 +{
  361 + //二级功能位
  362 + switch (getdata[8])
  363 + {
  364 + //回复温度查询
  365 + case 0x51:
  366 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE;
  367 + break;
  368 +
  369 + //回复产品序列号
  370 + case 0x54:
  371 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_SERIALNUMBER;
  372 + break;
  373 +
  374 + default:
  375 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  376 + break;
  377 + }
  378 +}
  379 +
  380 +
  381 +//一级功能码 升级帧
  382 +static int Comparison_5AFRAME_FirstLevelCode_0xA1(char *getdata)
  383 +{
  384 + //二级功能位
  385 + switch (getdata[8])
  386 + {
  387 + //升级准备
  388 + case 0x01:
  389 + return JZ_INSCODE_5BFRAME_UPGRADE_PERPARE;
  390 + break;
  391 +
  392 + //升级校验码
  393 + case 0x02:
  394 + return JZ_INSCODE_5BFRAME_UPGRADE_SEND_CHECKCODE;
  395 + break;
  396 +
  397 + //升级数据发送开始
  398 + case 0x03:
  399 + return JZ_INSCODE_5BFRAME_UPGRADE_STRAT;
  400 + break;
  401 +
  402 + //升级数据发送结束
  403 + case 0x04:
  404 + return JZ_INSCODE_5BFRAME_UPGRADE_END;
  405 + break;
  406 +
  407 + //升级数据校验结果
  408 + case 0x05:
  409 + return JZ_INSCODE_5BFRAME_UPGRADE_CHECKRESULT;
  410 + break;
  411 +
  412 + //升级发送数据
  413 + case 0xF1:
  414 + return JZ_INSCODE_5BFRAME_UPGRADE_TRANS;
  415 + break;
  416 +
  417 + default:
  418 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  419 + break;
  420 + }
  421 +}
  422 +
  423 +/******************************************************************
  424 +
  425 + 回复帧对比
  426 + 成功返回帧类型 无对比数据返回 JZ_ERROR_SYSTEM_FRAME_ERROR
  427 +
  428 +******************************************************************/
  429 +int JZsdk_5BFrameComparsion(char *getdata, int len)
  430 +{
  431 + //1、判断帧头帧尾
  432 + if (
  433 + ( (getdata[0]!= 0x5B) && (getdata[1] != 0x5B) && (getdata[2]!=0x77) )
  434 + || ( (getdata[len -2]!= 0x00) && (getdata[ len -1] != 0x23) )
  435 + )
  436 + {
  437 + printf("接受到的帧,没有帧头或者帧尾,退出JZsdk_5BFrameComparsion函数\n");
  438 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  439 + }
  440 +
  441 + //一级功能码
  442 + switch (getdata[7])
  443 + {
  444 + case 0x50:
  445 + return Comparison_5BFRAME_FirstLevelCode_0x50(getdata);
  446 + break;
  447 +
  448 + case 0x51:
  449 + return Comparison_5BFRAME_FirstLevelCode_0x51(getdata);
  450 + break;
  451 +
  452 + case 0x53:
  453 + return Comparison_5BFRAME_FirstLevelCode_0x53(getdata);
  454 + break;
  455 +
  456 + case 0x58:
  457 + return Comparison_5BFRAME_FirstLevelCode_0x58(getdata);
  458 + break;
  459 +
  460 + case 0x59:
  461 + return Comparison_5BFRAME_FirstLevelCode_0x58(getdata);
  462 + break;
  463 +
  464 + case 0x5A:
  465 + return Comparison_5BFRAME_FirstLevelCode_0x5A(getdata);
  466 + break;
  467 +
  468 + case 0x60:
  469 + return Comparison_5BFRAME_FirstLevelCode_0x60(getdata);
  470 + break;
  471 +
  472 + case 0x61:
  473 + return Comparison_5BFRAME_FirstLevelCode_0x61(getdata);
  474 + break;
  475 +
  476 + case 0x62:
  477 + return Comparison_5BFRAME_FirstLevelCode_0x62(getdata);
  478 + break;
  479 +
  480 + case 0x63:
  481 + return Comparison_5BFRAME_FirstLevelCode_0x63(getdata);
  482 + break;
  483 +
  484 + case 0x64:
  485 + return Comparison_5BFRAME_FirstLevelCode_0x64(getdata);
  486 + break;
  487 +
  488 + case 0x65:
  489 + return Comparison_5BFRAME_FirstLevelCode_0x65(getdata);
  490 + break;
  491 +
  492 + case 0x66:
  493 + return Comparison_5BFRAME_FirstLevelCode_0x66(getdata);
  494 + break;
  495 +
  496 + case 0x67:
  497 + return Comparison_5BFRAME_FirstLevelCode_0x67(getdata);
  498 + break;
  499 +
  500 + case 0x69:
  501 + return Comparison_5BFRAME_FirstLevelCode_0x69(getdata);
  502 + break;
  503 +
  504 + case 0xA1:
  505 + return Comparison_5AFRAME_FirstLevelCode_0xA1(getdata);
  506 + break;
  507 +
  508 + default:
  509 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  510 + break;
  511 + }
  512 +}
  1 +/**
  2 + ********************************************************************
  3 + * @file
  4 + *
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_FRAMECOMPARSION_5BFRAME_H
  11 +#define JZSDK_FRAMECOMPARSION_5BFRAME_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +
  22 +/* Exported types ------------------------------------------------------------*/
  23 +
  24 +/* Exported functions --------------------------------------------------------*/
  25 +int JZsdk_5BFrameComparsion(char *getdata, int len);
  26 +
  27 +
  28 +#ifdef __cplusplus
  29 +}
  30 +#endif
  31 +
  32 +#endif
  1 +#include <stdio.h>
  2 +#include "../JZsdk_Code/JZsdk_Code.h"
  3 +
  4 +
  5 +//一级功能码是私有协议
  6 +static int Comparison_6AFRAME_FirstLevelCode_0x10(char *getdata)
  7 +{
  8 + //二级功能位
  9 + switch (getdata[8])
  10 + {
  11 + //调试指令
  12 + case 0x00:
  13 + return JZ_INSCODE_6AFRAME_DEBUG_INS;
  14 + break;
  15 +
  16 + default:
  17 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  18 + break;
  19 + }
  20 +}
  21 +
  22 +
  23 +//一级功能码是私有协议
  24 +static int Comparison_6AFRAME_FirstLevelCode_0x69(char *getdata)
  25 +{
  26 + //二级功能位
  27 + switch (getdata[8])
  28 + {
  29 + //写入APP NAME
  30 + case 0x40:
  31 + return JZ_INSCODE_6AFRAME_WRITE_APP_NAME;
  32 + break;
  33 +
  34 + //写入APP ID
  35 + case 0x41:
  36 + return JZ_INSCODE_6AFRAME_WRITE_APP_ID;
  37 + break;
  38 +
  39 + //写入APP KEY
  40 + case 0x42:
  41 + return JZ_INSCODE_6AFRAME_WRITE_APP_KEY;
  42 + break;
  43 +
  44 + //写入写入APP LICENSE
  45 + case 0x43:
  46 + return JZ_INSCODE_6AFRAME_WRITE_APP_LICENSE;
  47 + break;
  48 +
  49 + //写入账号
  50 + case 0x44:
  51 + return JZ_INSCODE_6AFRAME_WRITE_DEVELOPER_ACCOUNT;
  52 + break;
  53 +
  54 + //读取用户信息
  55 + case 0x4F:
  56 + return JZ_INSCODE_6AFREAM_CHECKSTATUS_USERINFO;
  57 + break;
  58 +
  59 + //设置当前为云台零值
  60 + case 0x51:
  61 + return JZ_INSCODE_6AFRAME_SET_GIMBAL_ORIGIN;
  62 + break;
  63 +
  64 + //设置云台当前为最大最小值
  65 + case 0x52:
  66 + return JZ_INSCODE_6AFRAME_SET_GIMBAL_MAXMIN_RANGE;
  67 + break;
  68 +
  69 + //设置灯光当前亮度为最大最小值
  70 + case 0x53:
  71 + return JZ_INSCODE_6AFRAME_SET_LUMEN_MAXMIN_RANGE;
  72 + break;
  73 +
  74 + //设置产品序列号
  75 + case 0x54:
  76 + return JZ_INSCODE_6AFRAME_SET_SERIALNUMBER;
  77 + break;
  78 +
  79 + //舵机自检
  80 + case 0x55:
  81 + return JZ_INSCODE_6AFRAME_SERVO_SELFCHECK;
  82 + break;
  83 +
  84 + //开启关闭云台联动
  85 + case 0x56:
  86 + return JZ_INSCODE_6AFRAME_GIMBAL_LINKAGE_CONTROL;
  87 + break;
  88 +
  89 +
  90 +
  91 + default:
  92 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  93 + break;
  94 + }
  95 +}
  96 +
  97 +
  98 +
  99 +//一级功能码是私有协议
  100 +static int Comparison_6AFRAME_FirstLevelCode_0x6F(char *getdata)
  101 +{
  102 + //二级功能位
  103 + switch (getdata[8])
  104 + {
  105 + //设置当前为云台零值
  106 + case 0x50:
  107 + return JZ_INSCODE_6AFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME;
  108 + break;
  109 +
  110 + //设置当前为云台零值
  111 + case 0x51:
  112 + return JZ_INSCODE_6AFRAME_CHECKSTATUS_GIMBAL_LINKAGE;
  113 + break;
  114 +
  115 + //串口比特率修改
  116 + case 0x52:
  117 + return JZ_INSCODE_6AFRAME_UART_BITRATE_CHANGE;
  118 + break;
  119 +
  120 + //设置特殊变量
  121 + case 0x53:
  122 + return JZ_INSCODE_6AFRAME_SPECIAL_PARAMETERS;
  123 + break;
  124 +
  125 + //查询特殊变量
  126 + case 0x54:
  127 + return JZ_INSCODE_6AFRAME_CHECK_SPECIAL_PARAMETERS;
  128 + break;
  129 +
  130 + default:
  131 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  132 + break;
  133 + }
  134 +}
  135 +
  136 +/******************************************************************
  137 +
  138 + 回复帧对比
  139 + 成功返回帧类型 无对比数据返回 JZ_ERROR_SYSTEM_FRAME_ERROR
  140 +
  141 +******************************************************************/
  142 +int JZsdk_6AFrameComparsion(char *getdata, int len)
  143 +{
  144 + //1、判断帧头帧尾
  145 + if (
  146 + ( (getdata[0]!= 0x6A) && (getdata[1] != 0x6A) && (getdata[2]!=0x77) )
  147 + || ( (getdata[len -2]!= 0x00) && (getdata[ len -1] != 0x23) )
  148 + )
  149 + {
  150 + printf("接受到的帧,没有帧头或者帧尾,退出JZsdk_6AFrameComparsion函数\n");
  151 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  152 + }
  153 +
  154 + //一级功能码
  155 + switch (getdata[7])
  156 + {
  157 + case 0x10:
  158 + return Comparison_6AFRAME_FirstLevelCode_0x10(getdata);
  159 + break;
  160 +
  161 + case 0x69:
  162 + return Comparison_6AFRAME_FirstLevelCode_0x69(getdata);
  163 + break;
  164 +
  165 + case 0x6F:
  166 + return Comparison_6AFRAME_FirstLevelCode_0x6F(getdata);
  167 + break;
  168 +
  169 +
  170 + default:
  171 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  172 + break;
  173 + }
  174 +}
  1 +/**
  2 + ********************************************************************
  3 + * @file
  4 + *
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_FRAMECOMPARSION_6AFRAME_H
  11 +#define JZSDK_FRAMECOMPARSION_6AFRAME_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +
  22 +/* Exported types ------------------------------------------------------------*/
  23 +
  24 +/* Exported functions --------------------------------------------------------*/
  25 +int JZsdk_6AFrameComparsion(char *getdata, int len);
  26 +
  27 +
  28 +#ifdef __cplusplus
  29 +}
  30 +#endif
  31 +
  32 +#endif
  33 +
  1 +#include <stdio.h>
  2 +#include "../JZsdk_Code/JZsdk_Code.h"
  3 +
  4 +
  5 +//一级功能码是私有协议
  6 +static int Comparison_6BFRAME_FirstLevelCode_0x6F(char *getdata)
  7 +{
  8 + //二级功能位
  9 + switch (getdata[8])
  10 + {
  11 + //从设备名返回
  12 + case 0x50:
  13 + return JZ_INSCODE_6BFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME;
  14 + break;
  15 +
  16 + //查询云台联动返回
  17 + case 0x51:
  18 + return JZ_INSCODE_6BFRAME_CHECKSTATUS_GIMBAL_LINKAGE;
  19 + break;
  20 +
  21 + //查询特殊变量
  22 + case 0x54:
  23 + return JZ_INSCODE_6BFRAME_CHECK_SPECIAL_PARAMETERS;
  24 + break;
  25 +
  26 + default:
  27 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  28 + break;
  29 + }
  30 +}
  31 +
  32 +/******************************************************************
  33 +
  34 + 回复帧对比
  35 + 成功返回帧类型 无对比数据返回 JZ_ERROR_SYSTEM_FRAME_ERROR
  36 +
  37 +******************************************************************/
  38 +int JZsdk_6BFrameComparsion(char *getdata, int len)
  39 +{
  40 + //1、判断帧头帧尾
  41 + if (
  42 + ( (getdata[0]!= 0x6B) && (getdata[1] != 0x6B) && (getdata[2]!=0x77) )
  43 + || ( (getdata[len -2]!= 0x00) && (getdata[ len -1] != 0x23) )
  44 + )
  45 + {
  46 + printf("接受到的帧,没有帧头或者帧尾,退出JZsdk_6BFrameComparsion函数\n");
  47 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  48 + }
  49 +
  50 + //一级功能码
  51 + switch (getdata[7])
  52 + {
  53 + case 0x6F:
  54 + return Comparison_6BFRAME_FirstLevelCode_0x6F(getdata);
  55 + break;
  56 +
  57 +
  58 + default:
  59 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  60 + break;
  61 + }
  62 +}
  1 +/**
  2 + ********************************************************************
  3 + * @file
  4 + *
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +
  11 +
  12 +#ifndef JZSDK_FRAMECOMPARSION_6BFRAME_H
  13 +#define JZSDK_FRAMECOMPARSION_6BFRAME_H
  14 +
  15 +/* Includes ------------------------------------------------------------------*/
  16 +
  17 +#ifdef __cplusplus
  18 +extern "C" {
  19 +#endif
  20 +
  21 +/* Exported constants --------------------------------------------------------*/
  22 +/* 常亮定义*/
  23 +
  24 +/* Exported types ------------------------------------------------------------*/
  25 +
  26 +/* Exported functions --------------------------------------------------------*/
  27 +int JZsdk_6BFrameComparsion(char *getdata, int len);
  28 +
  29 +
  30 +#ifdef __cplusplus
  31 +}
  32 +#endif
  33 +
  34 +#endif
  35 +