正在显示
37 个修改的文件
包含
4270 行增加
和
0 行删除
CmakeConfig/Compiler.cmake
0 → 100644
1 | +# 编译链的配置 | ||
2 | + | ||
3 | +#1、编译链与设备类型的选择 | ||
4 | +set(DEVICE_NAME JZ_H1T) | ||
5 | +#上一行为禁止修改行 | ||
6 | + | ||
7 | +if("${DEVICE_NAME}" STREQUAL "JZ_H1E") | ||
8 | + set(MAKE_COMPILER ARM_CORTEXA9_LINUX) | ||
9 | + set(DEVICE_TYPE MEGAPHONE) | ||
10 | +elseif("${DEVICE_NAME}" STREQUAL "JZ_H1T") | ||
11 | + set(MAKE_COMPILER ARM_CORTEXA9_LINUX) | ||
12 | + set(DEVICE_TYPE MEGAPHONE) | ||
13 | +elseif("${DEVICE_NAME}" STREQUAL "JZ_H150S") | ||
14 | + set(MAKE_COMPILER ARM_CORTEXA9_LINUX) | ||
15 | + set(DEVICE_TYPE MEGAPHONE) | ||
16 | +elseif("${DEVICE_NAME}" STREQUAL "JZ_H150T") | ||
17 | + set(MAKE_COMPILER ARM_CORTEXA9_LINUX) | ||
18 | + set(DEVICE_TYPE MEGAPHONE) | ||
19 | +elseif("${DEVICE_NAME}" STREQUAL "JZ_H10") | ||
20 | + set(MAKE_COMPILER ARM_CORTEXA9_LINUX) | ||
21 | + set(DEVICE_TYPE MEGAPHONE) | ||
22 | +elseif("${DEVICE_NAME}" STREQUAL "JZ_H10T") | ||
23 | + set(MAKE_COMPILER ARM_CORTEXA9_LINUX) | ||
24 | + set(DEVICE_TYPE MEGAPHONE) | ||
25 | +elseif("${DEVICE_NAME}" STREQUAL "JZ_U3") | ||
26 | + set(MAKE_COMPILER ARM_CORTEXA9_LINUX) | ||
27 | + set(DEVICE_TYPE MEGAPHONE) | ||
28 | +elseif("${DEVICE_NAME}" STREQUAL "JZ_U3S") | ||
29 | + set(MAKE_COMPILER ARM_CORTEXA9_LINUX) | ||
30 | + set(DEVICE_TYPE MEGAPHONE) | ||
31 | +elseif("${DEVICE_NAME}" STREQUAL "TF_A1") | ||
32 | + set(MAKE_COMPILER ARM_CORTEXA9_LINUX) | ||
33 | + set(DEVICE_TYPE MEGAPHONE) | ||
34 | +elseif("${DEVICE_NAME}" STREQUAL "JZ_C1") | ||
35 | + set(MAKE_COMPILER ARM_X86_64_ARRCH64) | ||
36 | +endif() | ||
37 | + | ||
38 | +if(${MAKE_COMPILER} STREQUAL "ARM_CORTEXA9_LINUX") | ||
39 | + set(TOOLCHAIN_NAME arm-linux-gnueabihf-gcc) | ||
40 | + set(CMAKE_C_COMPILER "/usr/local/arm/4.9.3/bin/arm-cortexa9-linux-gnueabihf-gcc") | ||
41 | + set(CMAKE_CXX_COMPILER "/usr/local/arm/4.9.3/bin/arm-cortexa9-linux-gnueabihf-g++") | ||
42 | + message("使用ARM_CORTEXA9_LINUX编译链") | ||
43 | + | ||
44 | +elseif(${MAKE_COMPILER} STREQUAL "ARM_CORTEX_LINUX") | ||
45 | + set(TOOLCHAIN_NAME arm-linux-gnueabihf-gcc) | ||
46 | + set(CMAKE_C_COMPILER "/opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc") | ||
47 | + set(CMAKE_CXX_COMPILER "/opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++") | ||
48 | + message("使用ARM_CORTEX_LINUX编译链") | ||
49 | + | ||
50 | +elseif(${MAKE_COMPILER} STREQUAL "ARM_X86_64_ARRCH64") | ||
51 | + # 交叉编译链3 | ||
52 | + set(TOOLCHAIN_NAME aarch64-linux-gnu-gcc) | ||
53 | + set(CMAKE_C_COMPILER "/opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc") | ||
54 | + set(CMAKE_CXX_COMPILER "/opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-g++") | ||
55 | + message("使用ARM_X86_64_ARRCH64编译链") | ||
56 | + | ||
57 | +elseif(${MAKE_COMPILER} STREQUAL "LOCAL") | ||
58 | + # 本地测试编译链 | ||
59 | + set(CMAKE_C_COMPILER "/usr/bin/gcc") | ||
60 | + set(CMAKE_CXX_COMPILER "/usr/bin/g++") | ||
61 | + message("使用LOCAL编译链") | ||
62 | + | ||
63 | +else() | ||
64 | + message(FATAL_ERROR "不支持的编译链") | ||
65 | +endif() | ||
66 | + | ||
67 | +message("编译链配置完毕\n") |
CmakeConfig/ModuleConfig.cmake
0 → 100644
1 | +# ModuleConfig.cmake 模组模块的配置文件 | ||
2 | + | ||
3 | +###################### 自己的库 ############################## | ||
4 | +# AudioDeal 音频处理模块 | ||
5 | +set(AUDIODEAL_MODULE VERSION_SWITCH_OFF) | ||
6 | + | ||
7 | +# 信息模块 | ||
8 | +set(DEVICE_INFO_MODULE VERSION_SWITCH_OFF) | ||
9 | + | ||
10 | +# Gimbal 云台处理模块 | ||
11 | +set(GIMBAL_MODULE VERSION_SWITCH_OFF) | ||
12 | + | ||
13 | +# IRCUT 引脚处理模块 | ||
14 | +set(IRCUT_MODULE VERSION_SWITCH_OFF) | ||
15 | + | ||
16 | +# LIGHTING 光源处理模块 | ||
17 | +set(LIGHTING_MODULE VERSION_SWITCH_OFF) | ||
18 | + | ||
19 | +# MediaProc 媒体管理模块 | ||
20 | +set(MEDIA_PROC_MODULE VERSION_SWITCH_OFF) | ||
21 | + | ||
22 | +# 喊话器模块 | ||
23 | +set(MEGAPHONE_MODULE VERSION_SWITCH_OFF) | ||
24 | + | ||
25 | +# 电源管理模块 | ||
26 | +set(POWER_MANAGER_MODULE VERSION_SWITCH_OFF) | ||
27 | + | ||
28 | +# UI管理模块 | ||
29 | +set(UI_CONTROL_MODULE VERSION_SWITCH_OFF) | ||
30 | + | ||
31 | +# 红外相机模块 | ||
32 | +set(IRC_MODULE VERSION_SWITCH_OFF) | ||
33 | + | ||
34 | +# 侧面激光模块 | ||
35 | +set(SIDE_LASER_MODULE VERSION_SWITCH_OFF) | ||
36 | + | ||
37 | +###################### 第三方库 ############################## | ||
38 | + | ||
39 | +# FFMPEG及其附属模块 | ||
40 | +set(FFMPEG_MODULE VERSION_SWITCH_OFF) | ||
41 | + | ||
42 | +# cedarxLib | ||
43 | +set(CedarxLib VERSION_SWITCH_OFF) | ||
44 | + | ||
45 | +########################## 通用库 ########################################### | ||
46 | + | ||
47 | +# 添加信息模块 | ||
48 | +set(DEVICE_INFO_MODULE VERSION_SWITCH_ON) | ||
49 | + | ||
50 | +# 添加UI管理模块 | ||
51 | +set(UI_CONTROL_MODULE VERSION_SWITCH_ON) | ||
52 | + | ||
53 | +##################################################################### | ||
54 | + | ||
55 | +if("${DEVICE_NAME}" STREQUAL "JZ_H1E") | ||
56 | + | ||
57 | +elseif("${DEVICE_NAME}" STREQUAL "JZ_H1T") | ||
58 | + | ||
59 | + # 添加AudioDeal 音频处理模块 | ||
60 | + set(AUDIODEAL_MODULE VERSION_SWITCH_ON) | ||
61 | + | ||
62 | + # 添加Gimbal 云台处理模块 | ||
63 | + set(GIMBAL_MODULE VERSION_SWITCH_ON) | ||
64 | + | ||
65 | + # 添加IRCUT 引脚处理模块 | ||
66 | + set(IRCUT_MODULE VERSION_SWITCH_ON) | ||
67 | + | ||
68 | + # 添加LIGHTING 光源处理模块 | ||
69 | + set(LIGHTING_MODULE VERSION_SWITCH_ON) | ||
70 | + | ||
71 | + # 添加喊话器模块 | ||
72 | + set(MEGAPHONE_MODULE VERSION_SWITCH_ON) | ||
73 | + | ||
74 | + # 添加电源管理模块 | ||
75 | + set(POWER_MANAGER_MODULE VERSION_SWITCH_ON) | ||
76 | + | ||
77 | + # 添加FFMPEG及其附属模块 | ||
78 | + set(FFMPEG_MODULE VERSION_SWITCH_ON) | ||
79 | + | ||
80 | +elseif("${DEVICE_NAME}" STREQUAL "JZ_U3S") | ||
81 | + | ||
82 | + # 添加AudioDeal 音频处理模块 | ||
83 | + set(AUDIODEAL_MODULE VERSION_SWITCH_ON) | ||
84 | + | ||
85 | + # 添加Gimbal 云台处理模块 | ||
86 | + set(GIMBAL_MODULE VERSION_SWITCH_ON) | ||
87 | + | ||
88 | + # 添加IRCUT 引脚处理模块 | ||
89 | + set(IRCUT_MODULE VERSION_SWITCH_ON) | ||
90 | + | ||
91 | + # 添加LIGHTING 光源处理模块 | ||
92 | + set(LIGHTING_MODULE VERSION_SWITCH_ON) | ||
93 | + | ||
94 | + # 添加喊话器模块 | ||
95 | + set(MEGAPHONE_MODULE VERSION_SWITCH_ON) | ||
96 | + | ||
97 | + # 添加电源管理模块 | ||
98 | + set(POWER_MANAGER_MODULE VERSION_SWITCH_ON) | ||
99 | + | ||
100 | + # 添加FFMPEG及其附属模块 | ||
101 | + set(FFMPEG_MODULE VERSION_SWITCH_ON) | ||
102 | + | ||
103 | + # 添加激光模块 | ||
104 | + set(SIDE_LASER_MODULE VERSION_SWITCH_ON) | ||
105 | + | ||
106 | +elseif("${DEVICE_NAME}" STREQUAL "JZ_C1") | ||
107 | + | ||
108 | + # 添加Gimbal 云台处理模块 | ||
109 | + set(GIMBAL_MODULE VERSION_SWITCH_ON) | ||
110 | + | ||
111 | + # 添加IRCUT 引脚处理模块 | ||
112 | + set(IRCUT_MODULE VERSION_SWITCH_ON) | ||
113 | + | ||
114 | + # 添加LIGHTING 光源处理模块 | ||
115 | + set(LIGHTING_MODULE VERSION_SWITCH_ON) | ||
116 | + | ||
117 | + # 添加MediaProc 媒体管理模块 | ||
118 | + set(MEDIA_PROC_MODULE VERSION_SWITCH_ON) | ||
119 | + | ||
120 | + # 添加电源管理模块 | ||
121 | + set(POWER_MANAGER_MODULE VERSION_SWITCH_ON) | ||
122 | + | ||
123 | + # 添加红外相机模块 | ||
124 | + set(IRC_MODULE VERSION_SWITCH_ON) | ||
125 | +endif() | ||
126 | + | ||
127 | +message("模组模块已加载\n") |
CmakeConfig/ModuleLoading.cmake
0 → 100644
1 | + | ||
2 | +# ModuleLoading.cmake 模块加载文件 | ||
3 | + | ||
4 | + | ||
5 | +if(${IFLAY_TTS_MODULE} STREQUAL "VERSION_SWITCH_ON") | ||
6 | + set(iFLYTEK_TTS_DIRS "${ROOT_DIRS}ThirdParty/iFLYTEK_TTS/lib/arm-cortexa9-linux-gnueabihf") | ||
7 | + include_directories(${ROOT_DIRS}ThirdParty/iFLYTEK_TTS/include) | ||
8 | + target_link_libraries( | ||
9 | + ${PROJECT_NAME} | ||
10 | + ${iFLYTEK_TTS_DIRS}/libmsc.so | ||
11 | + ) | ||
12 | + message("讯飞TTS模块已加载\n") | ||
13 | +endif() | ||
14 | + | ||
15 | +if(${ESPEAK_TTS_MODULE} STREQUAL "VERSION_SWITCH_ON") | ||
16 | + set(ESPEAK_TTS_DIRS "${ROOT_DIRS}ThirdParty/Espeak/lib/arm-cortexa9-linux-gnueabihf") | ||
17 | + include_directories(${ROOT_DIRS}ThirdParty/Espeak/include) | ||
18 | + target_link_libraries( | ||
19 | + ${PROJECT_NAME} | ||
20 | + ${ESPEAK_TTS_DIRS}/libportaudio.so.2 | ||
21 | + ${ESPEAK_TTS_DIRS}/libTTS_Player.so | ||
22 | + ) | ||
23 | + message("Espeak模块已加载\n") | ||
24 | +endif() | ||
25 | + | ||
26 | +if(${ALSALIB_MODULE} STREQUAL "VERSION_SWITCH_ON") | ||
27 | + set(ALSALIB_DIRS "${ROOT_DIRS}ThirdParty/AlsaLib/lib/arm-cortexa9-linux-gnueabihf") | ||
28 | + include_directories(${ROOT_DIRS}ThirdParty/AlsaLib/include) | ||
29 | + target_link_libraries( | ||
30 | + ${PROJECT_NAME} | ||
31 | + ${ALSALIB_DIRS}/libasound.so.2.0.0 | ||
32 | + ) | ||
33 | + message("alsalib已加载\n") | ||
34 | +endif() | ||
35 | + | ||
36 | +if(${OPUS_MODULE} STREQUAL "VERSION_SWITCH_ON") | ||
37 | + set(OPUS_DIRS "${ROOT_DIRS}ThirdParty/opus/lib/arm-cortexa9-linux-gnueabihf") | ||
38 | + include_directories(${ROOT_DIRS}ThirdParty/opus/include) | ||
39 | + target_link_libraries( | ||
40 | + ${PROJECT_NAME} | ||
41 | + ${OPUS_DIRS}/libopus.so | ||
42 | + ) | ||
43 | + message("OPUS模块已加载\n") | ||
44 | +endif() | ||
45 | + | ||
46 | +if(${CedarxLib} STREQUAL "VERSION_SWITCH_ON") | ||
47 | + message("\nCedarX已加载\n") | ||
48 | + target_link_libraries(${PROJECT_NAME} | ||
49 | + ${ROOT_DIRS}ModuleLib/Camera/CedarX/libawh264.so | ||
50 | + ${ROOT_DIRS}ModuleLib/Camera/CedarX/libMemAdapter.so | ||
51 | + ${ROOT_DIRS}ModuleLib/Camera/CedarX/libVE.so | ||
52 | + ${ROOT_DIRS}ModuleLib/Camera/CedarX/libvencoder.so | ||
53 | + ${ROOT_DIRS}ModuleLib/Camera/CedarX/libvideoengine.so | ||
54 | + ${ROOT_DIRS}ModuleLib/Camera/CedarX/libvdecoder.so | ||
55 | + ) | ||
56 | + | ||
57 | + message("\n OpenCV已加载\n") | ||
58 | + target_link_libraries(${PROJECT_NAME} | ||
59 | + ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_calib3d.so | ||
60 | + ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_core.so | ||
61 | + ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_dnn.so | ||
62 | + ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_features2d.so | ||
63 | + ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_flann.so | ||
64 | + ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_highgui.so | ||
65 | + ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_imgcodecs.so | ||
66 | + ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_imgproc.so | ||
67 | + ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_ml.so | ||
68 | + ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_objdetect.so | ||
69 | + ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_photo.so | ||
70 | + ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_shape.so | ||
71 | + ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_stitching.so | ||
72 | + ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_superres.so | ||
73 | + ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_videoio.so | ||
74 | + ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_video.so | ||
75 | + ${ROOT_DIRS}ModuleLib/OpenCV/libopencv_videostab.so | ||
76 | + ) | ||
77 | + | ||
78 | + message("\n ffmpeg已加载\n") | ||
79 | + target_link_libraries(${PROJECT_NAME} | ||
80 | + ${ROOT_DIRS}ModuleLib/ffmpeg/libavcodec.so | ||
81 | + ${ROOT_DIRS}ModuleLib/ffmpeg/libavdevice.so | ||
82 | + ${ROOT_DIRS}ModuleLib/ffmpeg/libavfilter.so | ||
83 | + ${ROOT_DIRS}ModuleLib/ffmpeg/libavformat.so | ||
84 | + ${ROOT_DIRS}ModuleLib/ffmpeg/libavutil.so | ||
85 | + ${ROOT_DIRS}ModuleLib/ffmpeg/libswresample.so | ||
86 | + ${ROOT_DIRS}ModuleLib/ffmpeg/libswscale.so | ||
87 | + ) | ||
88 | + | ||
89 | + message("\n SearchLightCenter已加载\n") | ||
90 | + target_link_libraries(${PROJECT_NAME} | ||
91 | + ${ROOT_DIRS}ModuleLib/SearchLightCenter/libcenter.so | ||
92 | + ) | ||
93 | + | ||
94 | +endif() | ||
95 | + | ||
96 | + | ||
97 | +if(${FFMPEG_MODULE} STREQUAL "VERSION_SWITCH_ON") | ||
98 | + message("\nffmpeg模块加载\n") | ||
99 | + set(FFMPEG_6_0_DIRS "${ROOT_DIRS}ThirdParty/ffmpeg_6_0/lib/arm-cortexa9-linux-gnueabihf") | ||
100 | + include_directories(${ROOT_DIRS}ThirdParty/ffmpeg_6_0/include) | ||
101 | + target_link_libraries( | ||
102 | + ${PROJECT_NAME} | ||
103 | + ${FFMPEG_6_0_DIRS}/libavcodec.so.60 | ||
104 | + ${FFMPEG_6_0_DIRS}/libavdevice.so.60 | ||
105 | + ${FFMPEG_6_0_DIRS}/libavfilter.so.9 | ||
106 | + ${FFMPEG_6_0_DIRS}/libavformat.so.60 | ||
107 | + ${FFMPEG_6_0_DIRS}/libavutil.so.58 | ||
108 | + ${FFMPEG_6_0_DIRS}/libpostproc.so.57 | ||
109 | + ${FFMPEG_6_0_DIRS}/libswresample.so.4 | ||
110 | + ${FFMPEG_6_0_DIRS}/libswscale.so.7 | ||
111 | + ) | ||
112 | + | ||
113 | + message("x264模块已加载\n") | ||
114 | + set(X264_DIRS "${ROOT_DIRS}ThirdParty/x264_2245/lib/arm-cortexa9-linux-gnueabihf") | ||
115 | + include_directories(${ROOT_DIRS}ThirdParty/x264_2245/include) | ||
116 | + target_link_libraries( | ||
117 | + ${PROJECT_NAME} | ||
118 | + ${X264_DIRS}/libx264.so.157 | ||
119 | + ) | ||
120 | + | ||
121 | + message("FDK_AAC模块已加载\n") | ||
122 | + set(FDK_AAC_DIRS "${ROOT_DIRS}ThirdParty/fdk_aac_2_0_3/lib/arm-cortexa9-linux-gnueabihf") | ||
123 | + include_directories(${ROOT_DIRS}ThirdParty/fdk_aac_2_0_3/include) | ||
124 | + target_link_libraries( | ||
125 | + ${PROJECT_NAME} | ||
126 | + ${FDK_AAC_DIRS}/libfdk-aac.so.2 | ||
127 | + ) | ||
128 | + | ||
129 | +endif() | ||
130 | + | ||
131 | + | ||
132 | +#rtk_mmp库 | ||
133 | +if(${LIB_RTK_MMP} STREQUAL "VERSION_SWITCH_ON") | ||
134 | + message("RTK_MMP库已加载\n") | ||
135 | + add_definitions(-DMACRO_RTK_MPP_MODULE) #加载usb模块 | ||
136 | + | ||
137 | + include_directories(${ROOT_DIRS}/ThirdParty/RTK_mmp/aarch64-none-linux-gnu/include) | ||
138 | + target_link_libraries( | ||
139 | + ${PROJECT_NAME} | ||
140 | + ${ROOT_DIRS}/ThirdParty/RTK_mmp/aarch64-none-linux-gnu/lib/librockchip_mpp.so.0 | ||
141 | + ${ROOT_DIRS}/ThirdParty/RTK_mmp/aarch64-none-linux-gnu/lib/librockchip_vpu.so.0 | ||
142 | + ) | ||
143 | +endif() | ||
144 | + | ||
145 | +#usb库 | ||
146 | +if(${LIB_USB} STREQUAL "VERSION_SWITCH_ON") | ||
147 | + add_definitions(-DMACRO_USB_MODULE) #加载usb模块 | ||
148 | + | ||
149 | + message("USB库已加载\n") | ||
150 | + include_directories(${ROOT_DIRS}/ThirdParty/libusb/aarch64-none-linux-gnu/include) | ||
151 | + target_link_libraries( | ||
152 | + ${PROJECT_NAME} | ||
153 | + ${ROOT_DIRS}/ThirdParty/libusb/aarch64-none-linux-gnu/lib/libusb-1.0.so.0.4.0 | ||
154 | + ) | ||
155 | + | ||
156 | + message("udev库已加载\n") | ||
157 | + | ||
158 | + include_directories(${ROOT_DIRS}/ThirdParty/udev/aarch64-none-linux-gnu/include) | ||
159 | + target_link_libraries( | ||
160 | + ${PROJECT_NAME} | ||
161 | + ${ROOT_DIRS}/ThirdParty/udev/aarch64-none-linux-gnu/lib/libudev.so.1.6.3 | ||
162 | + ) | ||
163 | +endif() |
CmakeConfig/SubsidiaryThirdPartyConfig.cmake
0 → 100644
1 | +# SubsidiaryThirdPartyConfig.cmake 附属第三方库配置文件 | ||
2 | + | ||
3 | +set(IFLAY_TTS_MODULE VERSION_SWITCH_OFF) | ||
4 | +set(ESPEAK_TTS_MODULE VERSION_SWITCH_OFF) | ||
5 | +set(ALSALIB_MODULE VERSION_SWITCH_OFF) | ||
6 | +set(OPUS_MODULE VERSION_SWITCH_OFF) | ||
7 | +set(LIB_RTK_MMP VERSION_SWITCH_OFF) | ||
8 | +set(LIB_USB VERSION_SWITCH_OFF) | ||
9 | + | ||
10 | +add_definitions(-D COMPILE_MODE_MODULE) #设置代码为编译模式 | ||
11 | + | ||
12 | +if(${MEGAPHONE_MODULE} STREQUAL "VERSION_SWITCH_ON") | ||
13 | + message("\n喊话器模块已加载") | ||
14 | + add_definitions(-DMACRO_MEGAPHONE_MODULE) #加载喊话器模块 | ||
15 | + | ||
16 | + message("加载讯飞TTS模块") | ||
17 | + set(IFLAY_TTS_MODULE VERSION_SWITCH_ON) | ||
18 | + | ||
19 | + message("加载espeak模块") | ||
20 | + set(ESPEAK_TTS_MODULE VERSION_SWITCH_ON) | ||
21 | + | ||
22 | + message("加载alsalib模块") | ||
23 | + set(ALSALIB_MODULE VERSION_SWITCH_ON) | ||
24 | + | ||
25 | + message("加载OPUS模块") | ||
26 | + set(OPUS_MODULE VERSION_SWITCH_ON) | ||
27 | +endif() | ||
28 | + | ||
29 | +if(${IRC_MODULE} STREQUAL "VERSION_SWITCH_ON") | ||
30 | + message("\n红外相机模块已加载") | ||
31 | + add_definitions(-DMACRO_IRC_MODULE) | ||
32 | + | ||
33 | + message("加载RTK模块") | ||
34 | + set(LIB_RTK_MMP VERSION_SWITCH_ON) | ||
35 | + | ||
36 | + message("加载USB模块") | ||
37 | + set(LIB_USB VERSION_SWITCH_ON) | ||
38 | + | ||
39 | + message("\n媒体管理模块已加载") | ||
40 | + add_definitions(-DMACRO_MEDIA_PROC_MODULE) | ||
41 | + | ||
42 | +endif() | ||
43 | + | ||
44 | +if(${SIDE_LASER_MODULE} STREQUAL "VERSION_SWITCH_ON") | ||
45 | + message("加载侧面激光模块") | ||
46 | + add_definitions(-DMACRO_SIDE_LASER_MODULE) | ||
47 | +endif() | ||
48 | + | ||
49 | + | ||
50 | +message("附属库已加载\n") |
JZsdk_Common/JZsdkLib.c
0 → 100644
JZsdk_Common/JZsdkLib.h
0 → 100644
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 | +/* Exported types ------------------------------------------------------------*/ | ||
26 | + | ||
27 | +/* Exported functions --------------------------------------------------------*/ | ||
28 | +T_JZsdkReturnCode JZsdk_LibInit(); | ||
29 | + | ||
30 | + | ||
31 | +#ifdef __cplusplus | ||
32 | +} | ||
33 | +#endif | ||
34 | + | ||
35 | +#endif | ||
36 | +/************************ (C) COPYRIGHT DJI Innovations *******END OF FILE******/ |
JZsdk_Common/JZsdk_Base/JZsdkBase.h
0 → 100644
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_Osal/JZsdk_FileSystm.h" | ||
23 | +#include "JZsdk_Delay/JZsdk_Delay.h" | ||
24 | +#include "JZsdk_Code/JZsdk_FLagCode.h" | ||
25 | +#include "JZsdk_Osal/JZsdk_MemoryAdapter.h" | ||
26 | + | ||
27 | +/* Exported types ------------------------------------------------------------*/ | ||
28 | + | ||
29 | + | ||
30 | +/* Exported functions --------------------------------------------------------*/ | ||
31 | + | ||
32 | + | ||
33 | +#ifdef __cplusplus | ||
34 | +} | ||
35 | +#endif | ||
36 | + | ||
37 | +#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_InsCode.h" | ||
23 | +#include "./JZsdk_FLagCode.h" | ||
24 | +#include "./JZsdk_ReturnCode.h" | ||
25 | +#include "./JZsdk_FileType.h" | ||
26 | + | ||
27 | +/* Exported types ------------------------------------------------------------*/ | ||
28 | + | ||
29 | + | ||
30 | +/* Exported functions --------------------------------------------------------*/ | ||
31 | + | ||
32 | +#ifdef __cplusplus | ||
33 | +} | ||
34 | +#endif | ||
35 | + | ||
36 | +#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_INVALID_PARAMETER = 0x0002, //文件指针错误 | ||
28 | +} JZ_SYSTEM_Code; | ||
29 | + | ||
30 | +typedef enum { | ||
31 | + JZ_ERROR_SYSTEM_FRAME_ERROR = 0x0100, | ||
32 | + | ||
33 | +} JZ_Syetem_frame_ErrorCode; | ||
34 | + | ||
35 | +typedef enum { | ||
36 | + JZ_ERRORCODE_MUSIC_NOT_FOUND_IN_LIST = 0x1000 | ||
37 | + | ||
38 | +} JZ_Megaphone_music_ErrorCode; | ||
39 | + | ||
40 | +typedef enum { | ||
41 | + JZ_ERRORCODE_REALTIMEVOICE_HAS_BEEN_ON = 0x1201 | ||
42 | + | ||
43 | +} JZ_Megaphone_opus_ErrorCode; | ||
44 | + | ||
45 | +typedef enum { | ||
46 | + JZ_ERRORCODE_TTS_INVALID_TONE = 0x1300, | ||
47 | + JZ_ERRORCODE_TTS_INVALID_SPEED = 0x1301, | ||
48 | + JZ_ERRORCODE_TTS_INVALID_ADDTONE = 0x1302, | ||
49 | + | ||
50 | +} JZ_Megaphone_TTS_ErrorCode; | ||
51 | + | ||
52 | +typedef enum { | ||
53 | + JZ_ERRORCODE_GIMBAL_INVALID_PITCH = 0x4000, | ||
54 | + JZ_ERRORCODE_GIMBAL_INVALID_YAW = 0x4001, | ||
55 | + JZ_ERRORCODE_GIMBAL_INVALID_ROLL = 0x4002, | ||
56 | + | ||
57 | +} JZ_Gimbal_ErrorCode; | ||
58 | +/* Exported functions --------------------------------------------------------*/ | ||
59 | + | ||
60 | +#ifdef __cplusplus | ||
61 | +} | ||
62 | +#endif | ||
63 | + | ||
64 | +#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_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_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_FRAME_POWER_STATUS = 0x10000110, //电源状态设置 | ||
36 | + | ||
37 | + JZ_INSCODE_5AFRAME_REALTIMEMP2_START = 0x10000200, //开启实时MP2 | ||
38 | + JZ_INSCODE_5AFRAME_REALTIMEMP2_UNLIMIT_TRANSMISSION = 0x10000201, //无限制传输实时MP2 | ||
39 | + JZ_INSCODE_5AFRAME_REALTIMEMP2_STOP = 0x10000202, //结束实时MP2 | ||
40 | + JZ_INSCODE_5AFRAME_REALTIMEMP2_LIMIT_TRANSMISSION = 0x10000203, //有限制传输MP2 | ||
41 | + | ||
42 | + JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_START = 0x10000300, //打开音频文件上传 | ||
43 | + JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_UNLIMIT_TRANSMISSION = 0x10000301, //无限制传输音频文件 | ||
44 | + JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_STOP = 0x10000302, //关闭音频文件上传 | ||
45 | + JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_LIMIT_TRANSMISSION = 0x10000303, //定长传输音频文件 | ||
46 | + | ||
47 | + JZ_INSCODE_5AFRAME_AUDIO_PLAYFILE = 0x10000400, //播放指定音频 | ||
48 | + JZ_INSCODE_5AFRAME_AUDIO_CONTINUE = 0x10000401, //音频继续播放 | ||
49 | + JZ_INSCODE_5AFRAME_AUDIO_PAUSE = 0x10000402, //音频暂停播放 | ||
50 | + JZ_INSCODE_5AFRAME_AUDIO_STOP = 0x10000403, //音频停止播放 | ||
51 | + | ||
52 | + JZ_INSCODE_5AFRAME_AUDIO_LASTSONG = 0x10000410, //音频上一曲 | ||
53 | + JZ_INSCODE_5AFRAME_AUDIO_NEXTSONG = 0x10000411, //音频下一曲 | ||
54 | + | ||
55 | + JZ_INSCODE_5AFRAME_AUDIO_GETMUSICLIST = 0x10000420, //获取音频列表 | ||
56 | + | ||
57 | + | ||
58 | + JZ_INSCODE_5AFRAME_AMPLIFIER_STOP = 0x10000500, //强制关闭功放 | ||
59 | + JZ_INSCODE_5AFRAME_AMPLIFIER_OPEN = 0x10000501, //强制开启功放 | ||
60 | + JZ_INSCODE_5AFRAME_AMPLIFIER_AUTO = 0x10000502, //恢复自动功放 | ||
61 | + | ||
62 | + JZ_INSCODE_5AFRAME_VOLUME = 0x10000600, //调节音量 | ||
63 | + | ||
64 | + JZ_INSCODE_5AFRAME_CHECKSTATUS_VOLUME = 0x10000620, //查询音量 | ||
65 | + JZ_INSCODE_5AFRAME_CHECKSTATUS_PLAY = 0x10000621, //查询播放状态 | ||
66 | + JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL = 0x10000622, //查询云台角度 | ||
67 | + JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL_FINETUNING = 0x10000623, //查询云台微调角度 | ||
68 | + | ||
69 | + JZ_INSCODE_5AFRAME_CHECKSTATUS_PLAYFILENAME = 0x10000624, //查询播放文件名 | ||
70 | + JZ_INSCODE_5AFRAME_CHECKSTATUS_SOFTWAREVERSION = 0x10000625, //查询软件版本号 | ||
71 | + JZ_INSCODE_5AFRAME_CHECKSTATUS_LOOPPLAY = 0x10000626, //查询是否打开循环 | ||
72 | + JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSTONE = 0x10000627, //查询音色 | ||
73 | + JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSSPEED = 0x10000628, //查询语速 | ||
74 | + JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LIGHTATTRIBUTE = 0x10000629, //查询探照灯 灯3个属性 | ||
75 | + JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LUMEN = 0x10000630, //查询探照灯流明 | ||
76 | + JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_FREQUENCY = 0x10000631, //查询探照灯频率 | ||
77 | + JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_MODE = 0x10000632, //查询探照灯模式 | ||
78 | + JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE = 0x10000633, //查询探照灯温度 | ||
79 | + | ||
80 | + JZ_INSCODE_5AFRAME_CHECKSTATUS_LASER_STATUS = 0x10000634, //查询激光状态 | ||
81 | + JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS = 0x10000635, //查询警灯状态 | ||
82 | + JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR = 0x10000636, //查询警灯颜色 | ||
83 | + JZ_INSCODE_5AFRAME_CHECKSTATUS_SERIALNUMBER = 0x10000637, //查询序列号 | ||
84 | + | ||
85 | + | ||
86 | + JZ_INSCODE_5AFRAME_PLAY_LOOP = 0x10000690, //开启关闭循环 | ||
87 | + | ||
88 | + JZ_INSCODE_5AFRAME_DELETE_AUDIO = 0x10000700, //删除音频 | ||
89 | + JZ_INSCODE_5AFRAME_DELETE_VOICE_RECORD = 0x10000710, //删除录音 | ||
90 | + JZ_INSCODE_5AFRAME_DELETE_VIDEO_RECORD = 0x10000720, //删除视频 | ||
91 | + | ||
92 | + | ||
93 | + JZ_INSCODE_5AFRAME_TTS_SET_TONE = 0x10000801, //TTS设置音色 | ||
94 | + JZ_INSCODE_5AFRAME_TTS_SET_SPEED = 0x10000802, //TTS设置语速 | ||
95 | + JZ_INSCODE_5AFRAME_TTS_TRANS_START = 0x10000803, //TTS开始发送 | ||
96 | + JZ_INSCODE_5AFRAME_TTS_TRANS_UNLIMIT_TRANSMISSION = 0x10000804, //TTS正在无限制接收 | ||
97 | + JZ_INSCODE_5AFRAME_TTS_TRANS_STOP = 0x10000805, //TTS发送完毕 | ||
98 | + JZ_INSCODE_5AFRAME_TTS_TRANS_LIMIT_TRANSMISSION = 0x10000806, //TTS正在定长接收 | ||
99 | + | ||
100 | + JZ_INSCODE_5AFRAME_OPUS_TRANS_START = 0x10000900, //opus传输开始 | ||
101 | + JZ_INSCODE_5AFRAME_OPUS_TRAN_UNLIMIT_TRANSMISSION = 0x10000901, //opus 无限制传输中 | ||
102 | + JZ_INSCODE_5AFRAME_OPUS_TRANS_LIMIT_TRANSMISSION = 0x10000903, //opus传输中 | ||
103 | + | ||
104 | + JZ_INSCODE_5AFRAME_OPUS_TRANS_STOP = 0x10000902, //opus传输结束 | ||
105 | + | ||
106 | + JZ_INSCODE_5AFRAME_OPUS_PLAY = 0x10000910, //opus播放 | ||
107 | + | ||
108 | + JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_START = 0x10000A00, //开启opus实时语音 | ||
109 | + JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_UNLIMIT_TRANSMISSION = 0x10000A01, //无限制传输opus实时语音 | ||
110 | + JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_STOP = 0x10000A02, //结束opus实时语音 | ||
111 | + JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_LIMIT_TRANSMISSION = 0x10000A03, //定长传输opus实时语音 | ||
112 | + | ||
113 | + JZ_INSCODE_5AFRAME_GIMBAL_PITCH_CONTROL = 0x10000B00, //云台俯仰控制 | ||
114 | + JZ_INSCODE_5AFRAME_GIMBAL_YAW_CONTROL = 0x10000B01, //云台朝向控制 | ||
115 | + JZ_INSCODE_5AFRAME_GIMBAL_ROLL_CONTROL = 0x10000B02, //云台旋转控制 | ||
116 | + JZ_INSCODE_5AFRAME_GIMBAL_PITCH_FINETUNING_CONTROL = 0x10000B04, //云台俯仰微调 | ||
117 | + JZ_INSCODE_5AFRAME_GIMBAL_YAW_FINETUNING_CONTROL = 0x10000B05, //云台朝向微调 | ||
118 | + JZ_INSCODE_5AFRAME_GIMBAL_ROLL_FINETUNING_CONTROL = 0x10000B06, //云台旋转微调 | ||
119 | + | ||
120 | + | ||
121 | + JZ_INSCODE_5AFRAME_LASER_CONTROL = 0x10000C00, //激光控制 | ||
122 | + | ||
123 | + JZ_INSCODE_5AFRAME_SEARCHLIGHT_CONTROL = 0x10000E00, //探照灯开光 | ||
124 | + JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMEN = 0x10000E10, //设置探照灯亮度 | ||
125 | + JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_FREQUENCY = 0x10000E20, //设置把爆闪频率 | ||
126 | + JZ_INSCODE_5AFRAME_SEARCHLIGHT_MESSAGE_SUBSCRIPTION_CONTROL = 0x10000E21,//探照灯消息订阅控制 | ||
127 | + | ||
128 | + JZ_INSCODE_5AFRAME_WARNINGLIGHT_CONTROL = 0x10000F00, //警示灯模式控制 | ||
129 | + JZ_INSCODE_5AFRAME_WARNINGLIGHT_COLOUR = 0x10000F10, //警示灯颜色控制 | ||
130 | + | ||
131 | + JZ_INSCODE_5AFRAME_OUTPUTPOWER_CONTROL = 0x10001000, //对外供电开关 | ||
132 | + JZ_INSCODE_5AFRAME_CHECKSTATUS_OUTPUTPOWER = 0x10001001, //对外供电查询 | ||
133 | + | ||
134 | +//5B类帧 | ||
135 | + JZ_INSCODE_5BFRAME_FRAME = 0x10004000, //发送帧 | ||
136 | + | ||
137 | + JZ_INSCODE_5BFRAME_INITIATECONNECT = 0x10004101, //主动连接 | ||
138 | + JZ_INSCODE_5BFRAME_HEARTBEAT = 0x10004102, //心跳帧回复 | ||
139 | + JZ_INSCODE_5BFRAME_TIMESTAMP = 0x10004103, //时间戳帧 | ||
140 | + JZ_INSCODE_5BFRAME_ALL_VERSION = 0x10004104, //全版本查询 | ||
141 | + JZ_INSCODE_5BFRAME_ALL_SERIAL_NUMBER = 0x10004105, //全序列号查询 | ||
142 | + JZ_INSCODE_5BFRAME_DEVICE_MESSAGE = 0x10004107, //设备信息 | ||
143 | + | ||
144 | + JZ_INSCODE_5BFRAME_SUCESS = 0x10004200, //操作成功 | ||
145 | + JZ_INSCODE_5BFRAME_DEFEAT = 0x10004201, //操作失败 | ||
146 | + | ||
147 | + JZ_INSCODE_5BFRAME_MUSICLIST_START = 0x10004300, //开启发送音乐列表帧 | ||
148 | + JZ_INSCODE_5BFRAME_MUSICLIST_TRANS = 0x10004301, //发送音乐列表帧 | ||
149 | + JZ_INSCODE_5BFRAME_MUSICLIST_STOP = 0x10004302, //结束发送音乐列表帧 | ||
150 | + | ||
151 | + JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS = 0x10004310, //音频播放状态返回帧 | ||
152 | + JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS_END = 0x10004311, //音频播放状态结束帧 | ||
153 | + | ||
154 | + JZ_INSCODE_5BFRAME_VOLUME = 0x10004400, //音量返回帧 | ||
155 | + JZ_INSCODE_5BFRAME_AUDIO_PLAYLOOPSTATUS = 0x10004401, //发送音频循环播放状态 | ||
156 | + JZ_INSCODE_5BFRAME_TTS_TONE = 0x10004402, //发送tts音色 | ||
157 | + JZ_INSCODE_5BFRAME_TTS_SPEED = 0x10004403, //发送tts语速 | ||
158 | + JZ_INSCODE_5BFRAME_AUDIO_PLAYFILENAME = 0x10004404, //当前播放的音频名字 | ||
159 | + | ||
160 | + | ||
161 | + JZ_INSCODE_5BFRAME_GIMBAL_PITCH = 0x10004500, //云台俯仰角度 | ||
162 | + JZ_INSCODE_5BFRAME_GIMBAL_YAW = 0x10004501, //云台航向角度 | ||
163 | + JZ_INSCODE_5BFRAME_GIMBAL_ROLL = 0x10004502, // | ||
164 | + | ||
165 | + JZ_INSCODE_5BFRAME_GIMBAL_PITCH_FINETUNING = 0x10004510, //云台俯仰微调值 | ||
166 | + | ||
167 | + | ||
168 | + JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE = 0x10004600, //查询探照灯温度 | ||
169 | + JZ_INSCODE_5BFRAME_CHECKSTATUS_LASER_STATUS = 0x10004601, //查询激光状态 | ||
170 | + JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_FREQUENCY = 0x10004602, //查询探照灯频率 | ||
171 | + JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_MODE = 0x10004603, //查询探照灯模式 | ||
172 | + JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_LUMEN = 0x10004604, //查询探照灯流明 | ||
173 | + | ||
174 | + JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS = 0x10004700, //警示灯模式控制 | ||
175 | + JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR = 0x10004701, //警示灯颜色控制 | ||
176 | + | ||
177 | + | ||
178 | + JZ_INSCODE_5BFRAME_SORTWAREVERSION = 0x10004800, //发送软件版本号 | ||
179 | + JZ_INSCODE_5BFRAME_HARDWAREVERSION = 0x10004801, //发送硬件版本号 | ||
180 | + JZ_INSCODE_5BFRAME_CHECKSTATUS_SERIALNUMBER = 0x10004802, //回复序列号 | ||
181 | + | ||
182 | + JZ_INSCODE_5BFRAME_CHECKSTATUS_OUTPUTPOWER = 0x10004900, //对外供电查询 | ||
183 | + | ||
184 | + JZ_INSCODE_5BFRAME_OPUS_DECODE_STATUS = 0x10005000, //opus解码状态 | ||
185 | + | ||
186 | + | ||
187 | +//6A类 | ||
188 | + JZ_INSCODE_6AFRAME_FRAME = 0x10008000, //发送帧 | ||
189 | + | ||
190 | + JZ_INSCODE_6AFRAME_SET_GIMBAL_ORIGIN = 0x10008101, //设置坐标0值 | ||
191 | + JZ_INSCODE_6AFRAME_SET_GIMBAL_MAXMIN_RANGE = 0x10008102, //设置云台范围最大最小值 | ||
192 | + JZ_INSCODE_6AFRAME_SET_LUMEN_MAXMIN_RANGE = 0x10008103, //设置灯光范围最大最小值 | ||
193 | + JZ_INSCODE_6AFRAME_SET_SERIALNUMBER = 0x10008104, //设置序列号 | ||
194 | + JZ_INSCODE_6AFRAME_SERVO_SELFCHECK = 0x10008105, //舵机自检 | ||
195 | + JZ_INSCODE_6AFRAME_GIMBAL_LINKAGE_CONTROL = 0x10008106, //开关云台联动 | ||
196 | + | ||
197 | + JZ_INSCODE_6AFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME = 0x10008400, //查询从设备设备名 | ||
198 | + JZ_INSCODE_6AFRAME_CHECKSTATUS_GIMBAL_LINKAGE = 0x10008401, //查询云台联动 | ||
199 | + | ||
200 | + JZ_INSCODE_6AFRAME_UART_BITRATE_CHANGE = 0x10008500, //串口比特率修改 | ||
201 | + | ||
202 | + JZ_INSCODE_6AFRAME_SPECIAL_PARAMETERS = 0x10008510, //设置特殊参数 | ||
203 | + JZ_INSCODE_6AFRAME_CHECK_SPECIAL_PARAMETERS = 0x10008511, //查询特殊参数 | ||
204 | + | ||
205 | +//6B类 | ||
206 | + JZ_INSCODE_6BFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME = 0x1000C400, //回复从设备名 | ||
207 | + JZ_INSCODE_6BFRAME_CHECKSTATUS_GIMBAL_LINKAGE = 0x1000C401, //回复云台联动 | ||
208 | + JZ_INSCODE_6BFRAME_CHECK_SPECIAL_PARAMETERS = 0x1000C511, //回复特殊参数 | ||
209 | + | ||
210 | +} JZ_InsCode; | ||
211 | + | ||
212 | + | ||
213 | +/* Exported types ------------------------------------------------------------*/ | ||
214 | + | ||
215 | + | ||
216 | +/* Exported functions --------------------------------------------------------*/ | ||
217 | + | ||
218 | +#ifdef __cplusplus | ||
219 | +} | ||
220 | +#endif | ||
221 | + | ||
222 | +#endif |
1 | +#include <stdint.h> | ||
2 | +#include <stdbool.h> | ||
3 | +#include <stddef.h> | ||
4 | +#include <string.h> | ||
5 | +#include <stdlib.h> | ||
6 | +#include <stdio.h> | ||
7 | +#include <string.h> | ||
8 | + | ||
9 | +#include "./JZsdk_Code.h" | ||
10 | + | ||
11 | + | ||
12 | + | ||
13 | +//获取返回码的信息 | ||
14 | +const char* JZsdk_GetReturnCodeMessage(T_JZsdkReturnCode ReturnCode) | ||
15 | +{ | ||
16 | + switch (ReturnCode) { | ||
17 | + case JZ_ERRORCODE_REALTIMEVOICE_HAS_BEEN_ON: | ||
18 | + return "实时语音被开启,该操作失败"; | ||
19 | + | ||
20 | + default: | ||
21 | + return "未知错误:Unknown error."; | ||
22 | + } | ||
23 | +} |
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 <stdint.h> | ||
17 | +#include "JZsdk_ErrorCode.h" | ||
18 | + | ||
19 | +#ifdef __cplusplus | ||
20 | +extern "C" { | ||
21 | +#endif | ||
22 | + | ||
23 | +/* Exported constants --------------------------------------------------------*/ | ||
24 | +/* 常亮定义*/ | ||
25 | + | ||
26 | + | ||
27 | + | ||
28 | + | ||
29 | + | ||
30 | + | ||
31 | + | ||
32 | +/* Exported types ------------------------------------------------------------*/ | ||
33 | +//重定义一个返回码 | ||
34 | +typedef uint64_t T_JZsdkReturnCode; | ||
35 | +typedef uint8_t U8_t; | ||
36 | +typedef uint16_t U16_t; | ||
37 | +typedef uint32_t U32_t; | ||
38 | +typedef uint64_t U64_t; | ||
39 | + | ||
40 | +// typedef unsigned long T_JZsdkReturnCode; | ||
41 | +// typedef unsigned char U8_t; | ||
42 | +// typedef unsigned short U16_t; | ||
43 | +// typedef unsigned int U32_t; | ||
44 | +// typedef unsigned long U64_t; | ||
45 | + | ||
46 | +typedef double F64_t; | ||
47 | +typedef float F32_t; | ||
48 | + | ||
49 | +/* Exported functions --------------------------------------------------------*/ | ||
50 | +const char* JZsdk_GetReturnCodeMessage(T_JZsdkReturnCode ReturnCode); | ||
51 | + | ||
52 | +#ifdef __cplusplus | ||
53 | +} | ||
54 | +#endif | ||
55 | + | ||
56 | +#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 | +#include <stdio.h> | ||
2 | +#include "JZsdk_Delay.h" | ||
3 | +#include <unistd.h> | ||
4 | + | ||
5 | +/* | ||
6 | +* 用于延时(粗略) | ||
7 | +* 需要优化 | ||
8 | +*/ | ||
9 | +int delayUs(unsigned long msec) | ||
10 | +{ | ||
11 | + usleep(msec); | ||
12 | +} | ||
13 | + | ||
14 | +/* | ||
15 | +* 用于延时(粗略) | ||
16 | +* 需要优化 | ||
17 | +*/ | ||
18 | +int delayMs(unsigned long msec) | ||
19 | +{ | ||
20 | + usleep(msec * 1000); | ||
21 | +} | ||
22 | + | ||
23 | +/* | ||
24 | +* 用于延时(粗略) | ||
25 | +* 需要优化 | ||
26 | +*/ | ||
27 | +int delayS(unsigned long sec) | ||
28 | +{ | ||
29 | + delayMs(sec * 1000); | ||
30 | +} |
1 | +/** | ||
2 | + ******************************************************************** | ||
3 | + * @file JZsdk_FileSystem.h | ||
4 | + * 用于文件系统操作 | ||
5 | + * | ||
6 | + ********************************************************************* | ||
7 | + */ | ||
8 | + | ||
9 | +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | ||
10 | +#ifndef JZSDK_DELAY_H | ||
11 | +#define JZSDK_DELAY_H | ||
12 | + | ||
13 | +/* Includes ------------------------------------------------------------------*/ | ||
14 | + | ||
15 | +#ifdef __cplusplus | ||
16 | +extern "C" { | ||
17 | +#endif | ||
18 | + | ||
19 | +/* Exported constants --------------------------------------------------------*/ | ||
20 | +/* 常亮定义*/ | ||
21 | + | ||
22 | + | ||
23 | +/* Exported types ------------------------------------------------------------*/ | ||
24 | + | ||
25 | + | ||
26 | +/* Exported functions --------------------------------------------------------*/ | ||
27 | +int delayMs(unsigned long msec); | ||
28 | +int delayS(unsigned long sec); | ||
29 | +int delayUs(unsigned long msec); | ||
30 | + | ||
31 | +#ifdef __cplusplus | ||
32 | +} | ||
33 | +#endif | ||
34 | + | ||
35 | +#endif | ||
36 | +/************************ (C) COPYRIGHT DJI Innovations *******END OF FILE******/ |
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 | + * | ||
21 | + * ***********************/ | ||
22 | +int JZsdk_FrameComparsion(char *getdata, int len) | ||
23 | +{ | ||
24 | + //1、判断是否是5A帧 | ||
25 | + if (getdata[0] == 0x5A && getdata[1] == 0x5A && getdata[2] == 0x77) | ||
26 | + { | ||
27 | + printf("JZsdk_FrameComparsion:5A帧\n"); | ||
28 | + return JZsdk_5AFrameComparsion(getdata, len); | ||
29 | + } | ||
30 | + | ||
31 | + //2、判断是否是5B帧 | ||
32 | + if (getdata[0] == 0x5b && getdata[1] == 0x5b && getdata[2] == 0x77) | ||
33 | + { | ||
34 | + printf("JZsdk_FrameComparsion:5B帧\n"); | ||
35 | + return JZsdk_5BFrameComparsion(getdata, len); | ||
36 | + } | ||
37 | + | ||
38 | + //3、判断是否是6A帧 | ||
39 | + if (getdata[0] == 0x6A && getdata[1] == 0x6A && getdata[2] == 0x77) | ||
40 | + { | ||
41 | + printf("JZsdk_FrameComparsion:6A帧\n"); | ||
42 | + return JZsdk_6AFrameComparsion(getdata, len); | ||
43 | + } | ||
44 | + | ||
45 | + //4、判断是否是6B帧 | ||
46 | + if (getdata[0] == 0x6b && getdata[1] == 0x6b && getdata[2] == 0x77) | ||
47 | + { | ||
48 | + printf("JZsdk_FrameComparsion:6B帧\n"); | ||
49 | + return JZsdk_6BFrameComparsion(getdata, len); | ||
50 | + } | ||
51 | + | ||
52 | + printf("接受到的帧,没有帧头或者帧尾,退出recv帧判断函数\n"); | ||
53 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
54 | +} |
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_FrameComparsion(char *getdata, int len); | ||
33 | + | ||
34 | +#ifdef __cplusplus | ||
35 | +} | ||
36 | +#endif | ||
37 | + | ||
38 | +#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 | + default: | ||
56 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
57 | + break; | ||
58 | + } | ||
59 | +} | ||
60 | +//一级功能码是语音 或是 文件功能 | ||
61 | +static int Comparison_5AFRAME_FirstLevelCode_0x51(char *getdata) | ||
62 | +{ | ||
63 | + //二级功能位 | ||
64 | + switch (getdata[8]) | ||
65 | + { | ||
66 | + //开启语音 | ||
67 | + case 0xb1: | ||
68 | + return JZ_INSCODE_5AFRAME_REALTIMEMP2_START; | ||
69 | + break; | ||
70 | + | ||
71 | + //结束语音 | ||
72 | + case 0xb2: | ||
73 | + return JZ_INSCODE_5AFRAME_REALTIMEMP2_STOP; | ||
74 | + break; | ||
75 | + | ||
76 | + //有限制传输mp2语言 | ||
77 | + case 0xb3: | ||
78 | + return JZ_INSCODE_5AFRAME_REALTIMEMP2_LIMIT_TRANSMISSION; | ||
79 | + break; | ||
80 | + | ||
81 | + //打开音频文件上传 | ||
82 | + case 0x01: | ||
83 | + return JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_START; | ||
84 | + break; | ||
85 | + | ||
86 | + //有限制传输音频文件 | ||
87 | + case 0x02: | ||
88 | + return JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_LIMIT_TRANSMISSION; | ||
89 | + break; | ||
90 | + | ||
91 | + //关闭音频文件上传 | ||
92 | + case 0x03: | ||
93 | + return JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_STOP; | ||
94 | + break; | ||
95 | + | ||
96 | + default: | ||
97 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
98 | + break; | ||
99 | + } | ||
100 | +} | ||
101 | +//一级功能码是音频/功放/音量调节 | ||
102 | +static int Comparison_5AFRAME_FirstLevelCode_0x52(char *getdata) | ||
103 | +{ | ||
104 | + //二级功能位 | ||
105 | + switch (getdata[8]) | ||
106 | + { | ||
107 | + //播放指定音频 | ||
108 | + case 0x02: | ||
109 | + return JZ_INSCODE_5AFRAME_AUDIO_PLAYFILE; | ||
110 | + break; | ||
111 | + | ||
112 | + //音频继续播放 | ||
113 | + case 0x04: | ||
114 | + return JZ_INSCODE_5AFRAME_AUDIO_CONTINUE; | ||
115 | + break; | ||
116 | + | ||
117 | + //音频暂停播放 | ||
118 | + case 0x05: | ||
119 | + return JZ_INSCODE_5AFRAME_AUDIO_PAUSE; | ||
120 | + break; | ||
121 | + | ||
122 | + //音频停止播放 | ||
123 | + case 0x06: | ||
124 | + return JZ_INSCODE_5AFRAME_AUDIO_STOP; | ||
125 | + break; | ||
126 | + | ||
127 | + //音频上一曲 | ||
128 | + case 0x07: | ||
129 | + return JZ_INSCODE_5AFRAME_AUDIO_LASTSONG; | ||
130 | + break; | ||
131 | + | ||
132 | + //音频下一曲 | ||
133 | + case 0x08: | ||
134 | + return JZ_INSCODE_5AFRAME_AUDIO_NEXTSONG; | ||
135 | + break; | ||
136 | + | ||
137 | + //强制关闭功放 | ||
138 | + case 0x20: | ||
139 | + return JZ_INSCODE_5AFRAME_AMPLIFIER_STOP; | ||
140 | + break; | ||
141 | + | ||
142 | + //强制开启功放 | ||
143 | + case 0x21: | ||
144 | + return JZ_INSCODE_5AFRAME_AMPLIFIER_OPEN; | ||
145 | + break; | ||
146 | + | ||
147 | + //恢复自动功放 | ||
148 | + case 0x22: | ||
149 | + return JZ_INSCODE_5AFRAME_AMPLIFIER_AUTO; | ||
150 | + break; | ||
151 | + | ||
152 | + //调节音量 | ||
153 | + case 0x10: | ||
154 | + return JZ_INSCODE_5AFRAME_VOLUME; | ||
155 | + break; | ||
156 | + | ||
157 | + default: | ||
158 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
159 | + break; | ||
160 | + } | ||
161 | +} | ||
162 | +//一级功能码是查询状态 | ||
163 | +static int Comparison_5AFRAME_FirstLevelCode_0x53(char *getdata) | ||
164 | +{ | ||
165 | + //二级功能位 | ||
166 | + switch (getdata[8]) | ||
167 | + { | ||
168 | + //查询音量 | ||
169 | + case 0x01: | ||
170 | + return JZ_INSCODE_5AFRAME_CHECKSTATUS_VOLUME; | ||
171 | + break; | ||
172 | + | ||
173 | + //查询播放状态 | ||
174 | + case 0x02: | ||
175 | + return JZ_INSCODE_5AFRAME_CHECKSTATUS_PLAY; | ||
176 | + break; | ||
177 | + | ||
178 | + //查询云台角度(已舍弃) | ||
179 | + case 0x03: | ||
180 | + return JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL; | ||
181 | + break; | ||
182 | + | ||
183 | + //查询播放文件名 | ||
184 | + case 0x04: | ||
185 | + return JZ_INSCODE_5AFRAME_CHECKSTATUS_PLAYFILENAME; | ||
186 | + break; | ||
187 | + | ||
188 | + //查询是否打开循环 | ||
189 | + case 0x05: | ||
190 | + return JZ_INSCODE_5AFRAME_CHECKSTATUS_LOOPPLAY; | ||
191 | + break; | ||
192 | + | ||
193 | + //查询音色 | ||
194 | + case 0x06: | ||
195 | + return JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSTONE; | ||
196 | + break; | ||
197 | + | ||
198 | + //查询语速 | ||
199 | + case 0x07: | ||
200 | + return JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSSPEED; | ||
201 | + break; | ||
202 | + | ||
203 | + //查询软件版本号 | ||
204 | + case 0xf1: | ||
205 | + return JZ_INSCODE_5AFRAME_CHECKSTATUS_SOFTWAREVERSION; | ||
206 | + break; | ||
207 | + | ||
208 | + default: | ||
209 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
210 | + break; | ||
211 | + } | ||
212 | + | ||
213 | +} | ||
214 | +//一级功能码是删除 | ||
215 | +static int Comparison_5AFRAME_FirstLevelCode_0x54(char *getdata) | ||
216 | +{ | ||
217 | + //二级功能位 | ||
218 | + switch (getdata[8]) | ||
219 | + { | ||
220 | + //删除音频 | ||
221 | + case 0x02: | ||
222 | + return JZ_INSCODE_5AFRAME_DELETE_AUDIO; | ||
223 | + break; | ||
224 | + | ||
225 | + //删除录音 | ||
226 | + case 0x03: | ||
227 | + return JZ_INSCODE_5AFRAME_DELETE_VOICE_RECORD; | ||
228 | + break; | ||
229 | + | ||
230 | + // //删除视频 | ||
231 | + // case 0x02: | ||
232 | + // return JZ_INSCODE_DELETE_VIDEO_RECORD; | ||
233 | + // break; | ||
234 | + | ||
235 | + default: | ||
236 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
237 | + break; | ||
238 | + } | ||
239 | +} | ||
240 | +//一级功能码开启关闭循环 | ||
241 | +static int Comparison_5AFRAME_FirstLevelCode_0x55(char *getdata) | ||
242 | +{ | ||
243 | + //二级功能位 | ||
244 | + switch (getdata[8]) | ||
245 | + { | ||
246 | + //开启关闭循环 | ||
247 | + case 0x00: | ||
248 | + return JZ_INSCODE_5AFRAME_PLAY_LOOP; | ||
249 | + break; | ||
250 | + | ||
251 | + default: | ||
252 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
253 | + break; | ||
254 | + } | ||
255 | +} | ||
256 | +//一级功能码 | ||
257 | +static int Comparison_5AFRAME_FirstLevelCode_0x56(char *getdata) | ||
258 | +{ | ||
259 | + //二级功能位 | ||
260 | + switch (getdata[8]) | ||
261 | + { | ||
262 | + default: | ||
263 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
264 | + break; | ||
265 | + } | ||
266 | +} | ||
267 | +//一级功能码是 文本播放 | ||
268 | +static int Comparison_5AFRAME_FirstLevelCode_0x57(char *getdata) | ||
269 | +{ | ||
270 | + //二级功能位 | ||
271 | + switch (getdata[8]) | ||
272 | + { | ||
273 | + //设置音色 | ||
274 | + case 0x01: | ||
275 | + return JZ_INSCODE_5AFRAME_TTS_SET_TONE; | ||
276 | + break; | ||
277 | + | ||
278 | + //设置语速 | ||
279 | + case 0x02: | ||
280 | + return JZ_INSCODE_5AFRAME_TTS_SET_SPEED; | ||
281 | + break; | ||
282 | + | ||
283 | + //开始发送TTS | ||
284 | + case 0x03: | ||
285 | + return JZ_INSCODE_5AFRAME_TTS_TRANS_START; | ||
286 | + break; | ||
287 | + | ||
288 | + case 0x04: | ||
289 | + return JZ_INSCODE_5AFRAME_TTS_TRANS_STOP; | ||
290 | + break; | ||
291 | + | ||
292 | + //定长传输文本 | ||
293 | + case 0x05: | ||
294 | + return JZ_INSCODE_5AFRAME_TTS_TRANS_LIMIT_TRANSMISSION; | ||
295 | + break; | ||
296 | + | ||
297 | + default: | ||
298 | + break; | ||
299 | + } | ||
300 | +} | ||
301 | +//一级功能 查询列表 | ||
302 | +static int Comparison_5AFRAME_FirstLevelCode_0x58(char *getdata) | ||
303 | +{ | ||
304 | + //二级功能位 | ||
305 | + switch (getdata[8]) | ||
306 | + { | ||
307 | + //设置音色 | ||
308 | + case 0x01: | ||
309 | + return JZ_INSCODE_5AFRAME_AUDIO_GETMUSICLIST; | ||
310 | + break; | ||
311 | + | ||
312 | + default: | ||
313 | + break; | ||
314 | + } | ||
315 | +} | ||
316 | +//一级功能码opus功能 | ||
317 | +static int Comparison_5AFRAME_FirstLevelCode_0x59(char *getdata) | ||
318 | +{ | ||
319 | + //二级功能位 | ||
320 | + switch (getdata[8]) | ||
321 | + { | ||
322 | + //opus录音传输 | ||
323 | + //opus传输开始 | ||
324 | + case 0xF1: | ||
325 | + return JZ_INSCODE_5AFRAME_OPUS_TRANS_START; | ||
326 | + break; | ||
327 | + | ||
328 | + //opus传输结束 | ||
329 | + case 0xF2: | ||
330 | + return JZ_INSCODE_5AFRAME_OPUS_TRANS_STOP; | ||
331 | + break; | ||
332 | + | ||
333 | + //opus定长传输 | ||
334 | + case 0xF3: | ||
335 | + return JZ_INSCODE_5AFRAME_OPUS_TRANS_LIMIT_TRANSMISSION; | ||
336 | + break; | ||
337 | + | ||
338 | + //opus播放 | ||
339 | + case 0x01: | ||
340 | + return JZ_INSCODE_5AFRAME_OPUS_PLAY; | ||
341 | + break; | ||
342 | + | ||
343 | + //opus实时语音开始 | ||
344 | + case 0xE1: | ||
345 | + return JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_START; | ||
346 | + break; | ||
347 | + | ||
348 | + case 0xE2: | ||
349 | + return JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_STOP; | ||
350 | + break; | ||
351 | + | ||
352 | + //opus定长传输文件 | ||
353 | + case 0xE3: | ||
354 | + return JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_LIMIT_TRANSMISSION; | ||
355 | + break; | ||
356 | + | ||
357 | + default: | ||
358 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
359 | + break; | ||
360 | + } | ||
361 | +} | ||
362 | + | ||
363 | +//一级功能码,硬件引脚控制 | ||
364 | +static int Comparison_5AFRAME_FirstLevelCode_0x5A(char *getdata) | ||
365 | +{ | ||
366 | + //二级功能位 | ||
367 | + switch (getdata[8]) | ||
368 | + { | ||
369 | + //对外供电开关 | ||
370 | + case 0x01: | ||
371 | + return JZ_INSCODE_5AFRAME_OUTPUTPOWER_CONTROL; | ||
372 | + break; | ||
373 | + | ||
374 | + //对外供电查询 | ||
375 | + case 0x02: | ||
376 | + return JZ_INSCODE_5AFRAME_CHECKSTATUS_OUTPUTPOWER; | ||
377 | + break; | ||
378 | + | ||
379 | + default: | ||
380 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
381 | + break; | ||
382 | + } | ||
383 | +} | ||
384 | + | ||
385 | +//一级功能码 激光控制 | ||
386 | +static int Comparison_5AFRAME_FirstLevelCode_0x60(char *getdata) | ||
387 | +{ | ||
388 | + //二级功能位 | ||
389 | + switch (getdata[8]) | ||
390 | + { | ||
391 | + //激光控制 | ||
392 | + case 0x51: | ||
393 | + return JZ_INSCODE_5AFRAME_LASER_CONTROL; | ||
394 | + break; | ||
395 | + | ||
396 | + default: | ||
397 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
398 | + break; | ||
399 | + } | ||
400 | +} | ||
401 | + | ||
402 | +//一级功能码 爆闪频率 | ||
403 | +static int Comparison_5AFRAME_FirstLevelCode_0x61(char *getdata) | ||
404 | +{ | ||
405 | + //二级功能位 | ||
406 | + switch (getdata[8]) | ||
407 | + { | ||
408 | + //爆闪频率 | ||
409 | + case 0x51: | ||
410 | + return JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_FREQUENCY; | ||
411 | + break; | ||
412 | + | ||
413 | + default: | ||
414 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
415 | + break; | ||
416 | + } | ||
417 | +} | ||
418 | + | ||
419 | +//一级功能码 灯光控制 | ||
420 | +static int Comparison_5AFRAME_FirstLevelCode_0x62(char *getdata) | ||
421 | +{ | ||
422 | + //二级功能位 | ||
423 | + switch (getdata[8]) | ||
424 | + { | ||
425 | + //灯光模式 | ||
426 | + case 0x51: | ||
427 | + return JZ_INSCODE_5AFRAME_SEARCHLIGHT_CONTROL; | ||
428 | + break; | ||
429 | + | ||
430 | + default: | ||
431 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
432 | + break; | ||
433 | + } | ||
434 | +} | ||
435 | + | ||
436 | +//一级功能码 灯光亮度 | ||
437 | +static int Comparison_5AFRAME_FirstLevelCode_0x63(char *getdata) | ||
438 | +{ | ||
439 | + //二级功能位 | ||
440 | + switch (getdata[8]) | ||
441 | + { | ||
442 | + //灯光亮度 | ||
443 | + case 0x51: | ||
444 | + return JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMEN; | ||
445 | + break; | ||
446 | + | ||
447 | + default: | ||
448 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
449 | + break; | ||
450 | + } | ||
451 | +} | ||
452 | + | ||
453 | +//一级功能码云台功能 | ||
454 | +static int Comparison_5AFRAME_FirstLevelCode_0x64(char *getdata) | ||
455 | +{ | ||
456 | + //二级功能位 | ||
457 | + switch (getdata[8]) | ||
458 | + { | ||
459 | + //云台俯仰控制 | ||
460 | + case 0x51: | ||
461 | + return JZ_INSCODE_5AFRAME_GIMBAL_PITCH_CONTROL; | ||
462 | + break; | ||
463 | + | ||
464 | + //云台俯仰微调控制 | ||
465 | + case 0x52: | ||
466 | + return JZ_INSCODE_5AFRAME_GIMBAL_PITCH_FINETUNING_CONTROL; | ||
467 | + break; | ||
468 | + | ||
469 | + default: | ||
470 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
471 | + break; | ||
472 | + } | ||
473 | +} | ||
474 | + | ||
475 | +//一级功能码 云台航向 | ||
476 | +static int Comparison_5AFRAME_FirstLevelCode_0x65(char *getdata) | ||
477 | +{ | ||
478 | + | ||
479 | +} | ||
480 | + | ||
481 | +//一级功能码 警灯模式控制 | ||
482 | +static int Comparison_5AFRAME_FirstLevelCode_0x66(char *getdata) | ||
483 | +{ | ||
484 | + switch (getdata[8]) | ||
485 | + { | ||
486 | + //警灯模式控制 | ||
487 | + case 0x51: | ||
488 | + return JZ_INSCODE_5AFRAME_WARNINGLIGHT_CONTROL; | ||
489 | + break; | ||
490 | + | ||
491 | + default: | ||
492 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
493 | + break; | ||
494 | + } | ||
495 | +} | ||
496 | + | ||
497 | +//一级功能码 警灯眼色选择 | ||
498 | +static int Comparison_5AFRAME_FirstLevelCode_0x67(char *getdata) | ||
499 | +{ | ||
500 | + switch (getdata[8]) | ||
501 | + { | ||
502 | + //警灯颜色选择 | ||
503 | + case 0x51: | ||
504 | + return JZ_INSCODE_5AFRAME_WARNINGLIGHT_COLOUR; | ||
505 | + break; | ||
506 | + | ||
507 | + default: | ||
508 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
509 | + break; | ||
510 | + } | ||
511 | +} | ||
512 | + | ||
513 | +//一级功能码 探照灯消息订阅 | ||
514 | +static int Comparison_5AFRAME_FirstLevelCode_0x68(char *getdata) | ||
515 | +{ | ||
516 | + switch (getdata[8]) | ||
517 | + { | ||
518 | + //探照灯消息订阅 | ||
519 | + case 0x51: | ||
520 | + return JZ_INSCODE_5AFRAME_SEARCHLIGHT_MESSAGE_SUBSCRIPTION_CONTROL; | ||
521 | + break; | ||
522 | + | ||
523 | + default: | ||
524 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
525 | + break; | ||
526 | + } | ||
527 | + | ||
528 | +} | ||
529 | + | ||
530 | +//一级功能码 私有协议 | ||
531 | +static int Comparison_5AFRAME_FirstLevelCode_0x69(char *getdata) | ||
532 | +{ | ||
533 | + | ||
534 | +} | ||
535 | + | ||
536 | +//一级功能码 6F查询帧 | ||
537 | +static int Comparison_5AFRAME_FirstLevelCode_0x6F(char *getdata) | ||
538 | +{ | ||
539 | + //二级功能位 | ||
540 | + switch (getdata[8]) | ||
541 | + { | ||
542 | + //灯光查询 | ||
543 | + case 0x51: | ||
544 | + return JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LIGHTATTRIBUTE; | ||
545 | + break; | ||
546 | + | ||
547 | + //温度查询 | ||
548 | + case 0x52: | ||
549 | + return JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE; | ||
550 | + break; | ||
551 | + | ||
552 | + //激光查询 | ||
553 | + case 0x53: | ||
554 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
555 | + break; | ||
556 | + | ||
557 | + //云台角度查询 | ||
558 | + case 0x54: | ||
559 | + return JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL; | ||
560 | + break; | ||
561 | + | ||
562 | + //警灯状态查询 | ||
563 | + case 0x55: | ||
564 | + return JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS; | ||
565 | + break; | ||
566 | + | ||
567 | + //警灯颜色查询 | ||
568 | + case 0x56: | ||
569 | + return JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR; | ||
570 | + break; | ||
571 | + | ||
572 | + //产品序列号查询 | ||
573 | + case 0x57: | ||
574 | + return JZ_INSCODE_5AFRAME_CHECKSTATUS_SERIALNUMBER; | ||
575 | + break; | ||
576 | + | ||
577 | + //云台微调值查询 | ||
578 | + case 0x58: | ||
579 | + return JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL_FINETUNING; | ||
580 | + break; | ||
581 | + | ||
582 | + default: | ||
583 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
584 | + break; | ||
585 | + } | ||
586 | +} | ||
587 | + | ||
588 | +/****************************************************************** | ||
589 | + | ||
590 | + 回复帧对比 | ||
591 | + 成功返回帧类型 无对比数据返回 JZ_ERROR_SYSTEM_FRAME_ERROR | ||
592 | + | ||
593 | +******************************************************************/ | ||
594 | +int JZsdk_5AFrameComparsion(char *getdata, int len) | ||
595 | +{ | ||
596 | + //1、判断帧头帧尾 | ||
597 | + if ( | ||
598 | + ( (getdata[0]!= 0x5a) && (getdata[1] != 0x5a) && (getdata[2]!=0x77) ) | ||
599 | + || ( (getdata[len -2]!= 0x00) && (getdata[ len -1] != 0x23) ) | ||
600 | + ) | ||
601 | + { | ||
602 | + printf("接受到的帧,没有帧头或者帧尾,退出JZsdk_5AFrameComparsion函数\n"); | ||
603 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
604 | + } | ||
605 | + | ||
606 | + //一级功能码 | ||
607 | + switch (getdata[7]) | ||
608 | + { | ||
609 | +/********************************************************************************************************************************************************* | ||
610 | + * | ||
611 | + * 连接请求码 | ||
612 | + * | ||
613 | +*********************************************************************************************************************************************************/ | ||
614 | + //一级功能码是连接请求 | ||
615 | + case 0x50: | ||
616 | + return Comparison_5AFRAME_FirstLevelCode_0x50(getdata); | ||
617 | + break; | ||
618 | + | ||
619 | +/********************************************************************************************************************************************************* | ||
620 | + * | ||
621 | + * 喊话器功能码 | ||
622 | + * | ||
623 | +*********************************************************************************************************************************************************/ | ||
624 | + //一级功能码 语音 / 音频文件功能 | ||
625 | + case 0x51: | ||
626 | + return Comparison_5AFRAME_FirstLevelCode_0x51(getdata); | ||
627 | + break; | ||
628 | + | ||
629 | + //一级功能码 音频/ 功放/ 音量调节 | ||
630 | + case 0x52: | ||
631 | + return Comparison_5AFRAME_FirstLevelCode_0x52(getdata); | ||
632 | + break; | ||
633 | + | ||
634 | + //一级功能码 查询状态 | ||
635 | + case 0x53: | ||
636 | + return Comparison_5AFRAME_FirstLevelCode_0x53(getdata); | ||
637 | + break; | ||
638 | + | ||
639 | + //一级功能码 删除 | ||
640 | + case 0x54: | ||
641 | + return Comparison_5AFRAME_FirstLevelCode_0x54(getdata); | ||
642 | + break; | ||
643 | + | ||
644 | + //一级功能码 开启关闭循环 | ||
645 | + case 0x55: | ||
646 | + return Comparison_5AFRAME_FirstLevelCode_0x55(getdata); | ||
647 | + break; | ||
648 | + | ||
649 | + //一级功能码 | ||
650 | + case 0x56: | ||
651 | + return Comparison_5AFRAME_FirstLevelCode_0x56(getdata); | ||
652 | + break; | ||
653 | + | ||
654 | + //一级功能码 TTS | ||
655 | + case 0x57: | ||
656 | + return Comparison_5AFRAME_FirstLevelCode_0x57(getdata); | ||
657 | + break; | ||
658 | + | ||
659 | + //一级功能码 查询列表功能 | ||
660 | + case 0x58: | ||
661 | + return Comparison_5AFRAME_FirstLevelCode_0x58(getdata); | ||
662 | + break; | ||
663 | + | ||
664 | + //一级功能码 opus | ||
665 | + case 0x59: | ||
666 | + return Comparison_5AFRAME_FirstLevelCode_0x59(getdata); | ||
667 | + break; | ||
668 | + | ||
669 | + //一级功能码,硬件引脚控制 | ||
670 | + case 0x5A: | ||
671 | + return Comparison_5AFRAME_FirstLevelCode_0x5A(getdata); | ||
672 | + break; | ||
673 | + | ||
674 | + //一级功能码 激光控制 | ||
675 | + case 0x60: | ||
676 | + return Comparison_5AFRAME_FirstLevelCode_0x60(getdata); | ||
677 | + break; | ||
678 | + | ||
679 | + //一级功能码 爆闪控制 | ||
680 | + case 0x61: | ||
681 | + return Comparison_5AFRAME_FirstLevelCode_0x61(getdata); | ||
682 | + break; | ||
683 | + | ||
684 | + //一级功能码 灯光控制 | ||
685 | + case 0x62: | ||
686 | + return Comparison_5AFRAME_FirstLevelCode_0x62(getdata); | ||
687 | + break; | ||
688 | + | ||
689 | + //一级功能码 灯光亮度 | ||
690 | + case 0x63: | ||
691 | + return Comparison_5AFRAME_FirstLevelCode_0x63(getdata); | ||
692 | + break; | ||
693 | + | ||
694 | + //一级功能码 云台俯仰 | ||
695 | + case 0x64: | ||
696 | + return Comparison_5AFRAME_FirstLevelCode_0x64(getdata); | ||
697 | + break; | ||
698 | + | ||
699 | + //一级功能码 云台航向 | ||
700 | + case 0x65: | ||
701 | + return Comparison_5AFRAME_FirstLevelCode_0x65(getdata); | ||
702 | + break; | ||
703 | + | ||
704 | + //一级功能码 警灯模式控制 | ||
705 | + case 0x66: | ||
706 | + return Comparison_5AFRAME_FirstLevelCode_0x66(getdata); | ||
707 | + break; | ||
708 | + | ||
709 | + //一级功能码 警灯眼色选择 | ||
710 | + case 0x67: | ||
711 | + return Comparison_5AFRAME_FirstLevelCode_0x67(getdata); | ||
712 | + break; | ||
713 | + | ||
714 | + //一级功能码 探照灯消息订阅 | ||
715 | + case 0x68: | ||
716 | + return Comparison_5AFRAME_FirstLevelCode_0x68(getdata); | ||
717 | + break; | ||
718 | + | ||
719 | + //一级功能码 私有协议 | ||
720 | + case 0x69: | ||
721 | + return Comparison_5AFRAME_FirstLevelCode_0x69(getdata); | ||
722 | + break; | ||
723 | + | ||
724 | + //一级功能码 6f查询帧 | ||
725 | + case 0x6F: | ||
726 | + return Comparison_5AFRAME_FirstLevelCode_0x6F(getdata); | ||
727 | + break; | ||
728 | + | ||
729 | + | ||
730 | + break; | ||
731 | + | ||
732 | + //一级功能码 | ||
733 | + | ||
734 | +/********************************************************************************************************************************************************* | ||
735 | + * | ||
736 | + * | ||
737 | + * | ||
738 | +*********************************************************************************************************************************************************/ | ||
739 | + default: | ||
740 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
741 | + break; | ||
742 | + } | ||
743 | +} | ||
744 | + |
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 | + default: | ||
47 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
48 | + break; | ||
49 | + } | ||
50 | +} | ||
51 | + | ||
52 | +//一级功能码是操作功能 | ||
53 | +static int Comparison_5BFRAME_FirstLevelCode_0x51(char *getdata) | ||
54 | +{ | ||
55 | + //二级功能位 | ||
56 | + switch (getdata[8]) | ||
57 | + { | ||
58 | + //回复操作成功 | ||
59 | + case 0x01: | ||
60 | + return JZ_INSCODE_5BFRAME_SUCESS; | ||
61 | + break; | ||
62 | + | ||
63 | + //回复操作失败 | ||
64 | + case 0xff: | ||
65 | + return JZ_INSCODE_5BFRAME_DEFEAT; | ||
66 | + break; | ||
67 | + | ||
68 | + default: | ||
69 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
70 | + break; | ||
71 | + } | ||
72 | +} | ||
73 | +//一级功能码是音频列表功能 | ||
74 | +static int Comparison_5BFRAME_FirstLevelCode_0x53(char *getdata) | ||
75 | +{ | ||
76 | + //二级功能位 | ||
77 | + switch (getdata[8]) | ||
78 | + { | ||
79 | + //音量返回 | ||
80 | + case 0x01: | ||
81 | + return JZ_INSCODE_5BFRAME_VOLUME; | ||
82 | + break; | ||
83 | + | ||
84 | + //播放状态返回 | ||
85 | + case 0x02: | ||
86 | + return JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS; | ||
87 | + break; | ||
88 | + | ||
89 | + //当前播放文件名返回 | ||
90 | + case 0x04: | ||
91 | + return JZ_INSCODE_5BFRAME_AUDIO_PLAYFILENAME; | ||
92 | + break; | ||
93 | + | ||
94 | + //查询是否开启循环 | ||
95 | + case 0x05: | ||
96 | + return JZ_INSCODE_5BFRAME_AUDIO_PLAYLOOPSTATUS; | ||
97 | + break; | ||
98 | + | ||
99 | + //查询音色 | ||
100 | + case 0x06: | ||
101 | + return JZ_INSCODE_5BFRAME_TTS_TONE; | ||
102 | + break; | ||
103 | + | ||
104 | + //查询语速 | ||
105 | + case 0x07: | ||
106 | + return JZ_INSCODE_5BFRAME_TTS_SPEED; | ||
107 | + break; | ||
108 | + | ||
109 | + //版本返回 | ||
110 | + case 0xf1: | ||
111 | + return JZ_INSCODE_5BFRAME_SORTWAREVERSION; | ||
112 | + break; | ||
113 | + | ||
114 | + //播放结束(主动返回) | ||
115 | + case 0xff: | ||
116 | + return JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS_END; | ||
117 | + break; | ||
118 | + | ||
119 | + default: | ||
120 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
121 | + break; | ||
122 | + } | ||
123 | +} | ||
124 | + | ||
125 | +//一级功能码是音频列表功能 | ||
126 | +static int Comparison_5BFRAME_FirstLevelCode_0x58(char *getdata) | ||
127 | +{ | ||
128 | + //二级功能位 | ||
129 | + switch (getdata[8]) | ||
130 | + { | ||
131 | + //查询列表开始 | ||
132 | + case 0x00: | ||
133 | + return JZ_INSCODE_5BFRAME_MUSICLIST_START; | ||
134 | + break; | ||
135 | + | ||
136 | + //文件列表帧 | ||
137 | + case 0x02: | ||
138 | + return JZ_INSCODE_5BFRAME_MUSICLIST_TRANS; | ||
139 | + break; | ||
140 | + | ||
141 | + //结束列表返回 | ||
142 | + case 0xff: | ||
143 | + return JZ_INSCODE_5BFRAME_MUSICLIST_STOP; | ||
144 | + break; | ||
145 | + | ||
146 | + default: | ||
147 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
148 | + break; | ||
149 | + } | ||
150 | +} | ||
151 | + | ||
152 | +//一级功能码是opus功能 | ||
153 | +static int Comparison_5BFRAME_FirstLevelCode_0x59(char *getdata) | ||
154 | +{ | ||
155 | + //二级功能位 | ||
156 | + switch (getdata[8]) | ||
157 | + { | ||
158 | + //opus解码状态 | ||
159 | + case 0xF2: | ||
160 | + return JZ_INSCODE_5BFRAME_OPUS_DECODE_STATUS; | ||
161 | + break; | ||
162 | + | ||
163 | + default: | ||
164 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
165 | + break; | ||
166 | + } | ||
167 | +} | ||
168 | + | ||
169 | +//一级功能码是硬件引脚控制 | ||
170 | +static int Comparison_5BFRAME_FirstLevelCode_0x5A(char *getdata) | ||
171 | +{ | ||
172 | + //二级功能位 | ||
173 | + switch (getdata[8]) | ||
174 | + { | ||
175 | + //回复对供电开关状态返回 | ||
176 | + case 0x02: | ||
177 | + return JZ_INSCODE_5BFRAME_CHECKSTATUS_OUTPUTPOWER; | ||
178 | + break; | ||
179 | + | ||
180 | + default: | ||
181 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
182 | + break; | ||
183 | + } | ||
184 | +} | ||
185 | + | ||
186 | +//一级功能码是激光 | ||
187 | +static int Comparison_5BFRAME_FirstLevelCode_0x60(char *getdata) | ||
188 | +{ | ||
189 | + //二级功能位 | ||
190 | + switch (getdata[8]) | ||
191 | + { | ||
192 | + //回复激光查询 | ||
193 | + case 0x51: | ||
194 | + return JZ_INSCODE_5BFRAME_CHECKSTATUS_LASER_STATUS; | ||
195 | + break; | ||
196 | + | ||
197 | + default: | ||
198 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
199 | + break; | ||
200 | + } | ||
201 | +} | ||
202 | + | ||
203 | +//一级功能码是回复灯光频率 | ||
204 | +static int Comparison_5BFRAME_FirstLevelCode_0x61(char *getdata) | ||
205 | +{ | ||
206 | + //二级功能位 | ||
207 | + switch (getdata[8]) | ||
208 | + { | ||
209 | + //回复灯光频率 | ||
210 | + case 0x51: | ||
211 | + return JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_FREQUENCY; | ||
212 | + break; | ||
213 | + | ||
214 | + default: | ||
215 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
216 | + break; | ||
217 | + } | ||
218 | +} | ||
219 | + | ||
220 | +//一级功能码是回复灯光模式 | ||
221 | +static int Comparison_5BFRAME_FirstLevelCode_0x62(char *getdata) | ||
222 | +{ | ||
223 | + //二级功能位 | ||
224 | + switch (getdata[8]) | ||
225 | + { | ||
226 | + //回复灯光模式 | ||
227 | + case 0x51: | ||
228 | + return JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_MODE; | ||
229 | + break; | ||
230 | + | ||
231 | + default: | ||
232 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
233 | + break; | ||
234 | + } | ||
235 | +} | ||
236 | + | ||
237 | +//一级功能码是回复灯光亮度 | ||
238 | +static int Comparison_5BFRAME_FirstLevelCode_0x63(char *getdata) | ||
239 | +{ | ||
240 | + //二级功能位 | ||
241 | + switch (getdata[8]) | ||
242 | + { | ||
243 | + //回复灯光亮度 | ||
244 | + case 0x51: | ||
245 | + return JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_LUMEN; | ||
246 | + break; | ||
247 | + | ||
248 | + default: | ||
249 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
250 | + break; | ||
251 | + } | ||
252 | +} | ||
253 | + | ||
254 | +//一级功能码是云台俯仰 | ||
255 | +static int Comparison_5BFRAME_FirstLevelCode_0x64(char *getdata) | ||
256 | +{ | ||
257 | + //二级功能位 | ||
258 | + switch (getdata[8]) | ||
259 | + { | ||
260 | + //回复云台俯仰 | ||
261 | + case 0x51: | ||
262 | + return JZ_INSCODE_5BFRAME_GIMBAL_PITCH; | ||
263 | + break; | ||
264 | + | ||
265 | + //回复云台俯仰微调值 | ||
266 | + case 0x52: | ||
267 | + return JZ_INSCODE_5BFRAME_GIMBAL_PITCH_FINETUNING; | ||
268 | + break; | ||
269 | + | ||
270 | + default: | ||
271 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
272 | + break; | ||
273 | + } | ||
274 | +} | ||
275 | +//一级功能码是云台航向 | ||
276 | +static int Comparison_5BFRAME_FirstLevelCode_0x65(char *getdata) | ||
277 | +{ | ||
278 | + //二级功能位 | ||
279 | + switch (getdata[8]) | ||
280 | + { | ||
281 | + //回复云台航向 | ||
282 | + case 0x51: | ||
283 | + return JZ_INSCODE_5BFRAME_GIMBAL_YAW; | ||
284 | + break; | ||
285 | + | ||
286 | + | ||
287 | + default: | ||
288 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
289 | + break; | ||
290 | + } | ||
291 | +} | ||
292 | +//一级功能码是回复警灯状态 | ||
293 | +static int Comparison_5BFRAME_FirstLevelCode_0x66(char *getdata) | ||
294 | +{ | ||
295 | + //二级功能位 | ||
296 | + switch (getdata[8]) | ||
297 | + { | ||
298 | + //回复警灯状态 | ||
299 | + case 0x51: | ||
300 | + return JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS; | ||
301 | + break; | ||
302 | + | ||
303 | + | ||
304 | + default: | ||
305 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
306 | + break; | ||
307 | + } | ||
308 | +}//一级功能码是回复警灯颜色 | ||
309 | +static int Comparison_5BFRAME_FirstLevelCode_0x67(char *getdata) | ||
310 | +{ | ||
311 | + //二级功能位 | ||
312 | + switch (getdata[8]) | ||
313 | + { | ||
314 | + //回复回复警灯颜色 | ||
315 | + case 0x51: | ||
316 | + return JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR; | ||
317 | + break; | ||
318 | + | ||
319 | + | ||
320 | + default: | ||
321 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
322 | + break; | ||
323 | + } | ||
324 | +}//一级功能码是回复温度/序列号查询 | ||
325 | +static int Comparison_5BFRAME_FirstLevelCode_0x69(char *getdata) | ||
326 | +{ | ||
327 | + //二级功能位 | ||
328 | + switch (getdata[8]) | ||
329 | + { | ||
330 | + //回复温度查询 | ||
331 | + case 0x51: | ||
332 | + return JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE; | ||
333 | + break; | ||
334 | + | ||
335 | + //回复产品序列号 | ||
336 | + case 0x54: | ||
337 | + return JZ_INSCODE_5BFRAME_CHECKSTATUS_SERIALNUMBER; | ||
338 | + break; | ||
339 | + | ||
340 | + default: | ||
341 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
342 | + break; | ||
343 | + } | ||
344 | +} | ||
345 | +/****************************************************************** | ||
346 | + | ||
347 | + 回复帧对比 | ||
348 | + 成功返回帧类型 无对比数据返回 JZ_ERROR_SYSTEM_FRAME_ERROR | ||
349 | + | ||
350 | +******************************************************************/ | ||
351 | +int JZsdk_5BFrameComparsion(char *getdata, int len) | ||
352 | +{ | ||
353 | + //1、判断帧头帧尾 | ||
354 | + if ( | ||
355 | + ( (getdata[0]!= 0x5B) && (getdata[1] != 0x5B) && (getdata[2]!=0x77) ) | ||
356 | + || ( (getdata[len -2]!= 0x00) && (getdata[ len -1] != 0x23) ) | ||
357 | + ) | ||
358 | + { | ||
359 | + printf("接受到的帧,没有帧头或者帧尾,退出JZsdk_5BFrameComparsion函数\n"); | ||
360 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
361 | + } | ||
362 | + | ||
363 | + //一级功能码 | ||
364 | + switch (getdata[7]) | ||
365 | + { | ||
366 | + case 0x50: | ||
367 | + return Comparison_5BFRAME_FirstLevelCode_0x50(getdata); | ||
368 | + break; | ||
369 | + | ||
370 | + case 0x51: | ||
371 | + return Comparison_5BFRAME_FirstLevelCode_0x51(getdata); | ||
372 | + break; | ||
373 | + | ||
374 | + case 0x53: | ||
375 | + return Comparison_5BFRAME_FirstLevelCode_0x53(getdata); | ||
376 | + break; | ||
377 | + | ||
378 | + case 0x58: | ||
379 | + return Comparison_5BFRAME_FirstLevelCode_0x58(getdata); | ||
380 | + break; | ||
381 | + | ||
382 | + case 0x59: | ||
383 | + return Comparison_5BFRAME_FirstLevelCode_0x58(getdata); | ||
384 | + break; | ||
385 | + | ||
386 | + case 0x5A: | ||
387 | + return Comparison_5BFRAME_FirstLevelCode_0x5A(getdata); | ||
388 | + break; | ||
389 | + | ||
390 | + case 0x60: | ||
391 | + return Comparison_5BFRAME_FirstLevelCode_0x60(getdata); | ||
392 | + break; | ||
393 | + | ||
394 | + case 0x61: | ||
395 | + return Comparison_5BFRAME_FirstLevelCode_0x61(getdata); | ||
396 | + break; | ||
397 | + | ||
398 | + case 0x62: | ||
399 | + return Comparison_5BFRAME_FirstLevelCode_0x62(getdata); | ||
400 | + break; | ||
401 | + | ||
402 | + case 0x63: | ||
403 | + return Comparison_5BFRAME_FirstLevelCode_0x63(getdata); | ||
404 | + break; | ||
405 | + | ||
406 | + case 0x64: | ||
407 | + return Comparison_5BFRAME_FirstLevelCode_0x64(getdata); | ||
408 | + break; | ||
409 | + | ||
410 | + case 0x65: | ||
411 | + return Comparison_5BFRAME_FirstLevelCode_0x65(getdata); | ||
412 | + break; | ||
413 | + | ||
414 | + case 0x66: | ||
415 | + return Comparison_5BFRAME_FirstLevelCode_0x66(getdata); | ||
416 | + break; | ||
417 | + | ||
418 | + case 0x67: | ||
419 | + return Comparison_5BFRAME_FirstLevelCode_0x67(getdata); | ||
420 | + break; | ||
421 | + | ||
422 | + case 0x69: | ||
423 | + return Comparison_5BFRAME_FirstLevelCode_0x69(getdata); | ||
424 | + break; | ||
425 | + | ||
426 | + | ||
427 | + default: | ||
428 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
429 | + break; | ||
430 | + } | ||
431 | +} |
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_0x69(char *getdata) | ||
7 | +{ | ||
8 | + //二级功能位 | ||
9 | + switch (getdata[8]) | ||
10 | + { | ||
11 | + //设置当前为云台零值 | ||
12 | + case 0x51: | ||
13 | + return JZ_INSCODE_6AFRAME_SET_GIMBAL_ORIGIN; | ||
14 | + break; | ||
15 | + | ||
16 | + //设置云台当前为最大最小值 | ||
17 | + case 0x52: | ||
18 | + return JZ_INSCODE_6AFRAME_SET_GIMBAL_MAXMIN_RANGE; | ||
19 | + break; | ||
20 | + | ||
21 | + //设置灯光当前亮度为最大最小值 | ||
22 | + case 0x53: | ||
23 | + return JZ_INSCODE_6AFRAME_SET_LUMEN_MAXMIN_RANGE; | ||
24 | + break; | ||
25 | + | ||
26 | + //设置产品序列号 | ||
27 | + case 0x54: | ||
28 | + return JZ_INSCODE_6AFRAME_SET_SERIALNUMBER; | ||
29 | + break; | ||
30 | + | ||
31 | + //舵机自检 | ||
32 | + case 0x55: | ||
33 | + return JZ_INSCODE_6AFRAME_SERVO_SELFCHECK; | ||
34 | + break; | ||
35 | + | ||
36 | + //开启关闭云台联动 | ||
37 | + case 0x56: | ||
38 | + return JZ_INSCODE_6AFRAME_GIMBAL_LINKAGE_CONTROL; | ||
39 | + break; | ||
40 | + | ||
41 | + default: | ||
42 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
43 | + break; | ||
44 | + } | ||
45 | +} | ||
46 | + | ||
47 | + | ||
48 | + | ||
49 | +//一级功能码是私有协议 | ||
50 | +static int Comparison_6AFRAME_FirstLevelCode_0x6F(char *getdata) | ||
51 | +{ | ||
52 | + //二级功能位 | ||
53 | + switch (getdata[8]) | ||
54 | + { | ||
55 | + //设置当前为云台零值 | ||
56 | + case 0x50: | ||
57 | + return JZ_INSCODE_6AFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME; | ||
58 | + break; | ||
59 | + | ||
60 | + //设置当前为云台零值 | ||
61 | + case 0x51: | ||
62 | + return JZ_INSCODE_6AFRAME_CHECKSTATUS_GIMBAL_LINKAGE; | ||
63 | + break; | ||
64 | + | ||
65 | + //串口比特率修改 | ||
66 | + case 0x52: | ||
67 | + return JZ_INSCODE_6AFRAME_UART_BITRATE_CHANGE; | ||
68 | + break; | ||
69 | + | ||
70 | + //设置特殊变量 | ||
71 | + case 0x53: | ||
72 | + return JZ_INSCODE_6AFRAME_SPECIAL_PARAMETERS; | ||
73 | + break; | ||
74 | + | ||
75 | + //查询特殊变量 | ||
76 | + case 0x54: | ||
77 | + return JZ_INSCODE_6AFRAME_CHECK_SPECIAL_PARAMETERS; | ||
78 | + break; | ||
79 | + | ||
80 | + default: | ||
81 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
82 | + break; | ||
83 | + } | ||
84 | +} | ||
85 | + | ||
86 | +/****************************************************************** | ||
87 | + | ||
88 | + 回复帧对比 | ||
89 | + 成功返回帧类型 无对比数据返回 JZ_ERROR_SYSTEM_FRAME_ERROR | ||
90 | + | ||
91 | +******************************************************************/ | ||
92 | +int JZsdk_6AFrameComparsion(char *getdata, int len) | ||
93 | +{ | ||
94 | + //1、判断帧头帧尾 | ||
95 | + if ( | ||
96 | + ( (getdata[0]!= 0x6A) && (getdata[1] != 0x6A) && (getdata[2]!=0x77) ) | ||
97 | + || ( (getdata[len -2]!= 0x00) && (getdata[ len -1] != 0x23) ) | ||
98 | + ) | ||
99 | + { | ||
100 | + printf("接受到的帧,没有帧头或者帧尾,退出JZsdk_6AFrameComparsion函数\n"); | ||
101 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
102 | + } | ||
103 | + | ||
104 | + //一级功能码 | ||
105 | + switch (getdata[7]) | ||
106 | + { | ||
107 | + case 0x69: | ||
108 | + return Comparison_6AFRAME_FirstLevelCode_0x69(getdata); | ||
109 | + break; | ||
110 | + | ||
111 | + case 0x6F: | ||
112 | + return Comparison_6AFRAME_FirstLevelCode_0x6F(getdata); | ||
113 | + break; | ||
114 | + | ||
115 | + | ||
116 | + default: | ||
117 | + return JZ_ERROR_SYSTEM_FRAME_ERROR; | ||
118 | + break; | ||
119 | + } | ||
120 | +} |
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_CHECKSTATUS_SECONDARY_DEVICE_NAME; | ||
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 | + |
1 | +#include <stdio.h> | ||
2 | +#include <string.h> | ||
3 | +#include "../JZsdk_Code/JZsdk_Code.h" | ||
4 | + | ||
5 | +/****************************************************** | ||
6 | + | ||
7 | + 用于获取帧模板 | ||
8 | + | ||
9 | +/******************************************************/ | ||
10 | +int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len) | ||
11 | +{ | ||
12 | + //printf("JZsdk_GetFrameTemplate:获取0x%x帧模板\n",InsCode); //该打印可能会对 要求快速控制的地方变慢,请不要随意开启 | ||
13 | + switch (InsCode) | ||
14 | + { | ||
15 | +/******************************************************************************************************************************************************** | ||
16 | + * | ||
17 | + * 5A帧 | ||
18 | + * | ||
19 | +********************************************************************************************************************************************************/ | ||
20 | + case JZ_INSCODE_5AFRAME_ASKFORCONNECT: | ||
21 | + { | ||
22 | + char sendbuf[12] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0C ,0x00 ,0x00 ,0x50 ,0x51 ,0x00 ,0x00 ,0x23}; | ||
23 | + memcpy(str, sendbuf, 12); | ||
24 | + *str_len = 12; | ||
25 | + } | ||
26 | + break; | ||
27 | + | ||
28 | + case JZ_INSCODE_5AFRAME_FRAME_POWER_STATUS: | ||
29 | + { | ||
30 | + unsigned char sendbuf[12] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0C ,0x00 ,0x00 ,0x50 ,0x52 ,0x00 ,0x00 ,0x23}; | ||
31 | + memcpy(str, sendbuf, 12); | ||
32 | + *str_len = 12; | ||
33 | + } | ||
34 | + break; | ||
35 | + | ||
36 | + case JZ_INSCODE_5AFRAME_HEARTBEAT: | ||
37 | + { | ||
38 | + unsigned char sendbuf[12] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0C ,0x00 ,0x00 ,0x50 ,0x53 ,0x00 ,0x00 ,0x23}; | ||
39 | + memcpy(str, sendbuf, 12); | ||
40 | + *str_len = 12; | ||
41 | + } | ||
42 | + break; | ||
43 | + | ||
44 | + case JZ_INSCODE_5AFRAME_TIMESTAMP: | ||
45 | + { | ||
46 | + unsigned char sendbuf[12] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0C ,0x00 ,0x00 ,0x50 ,0x54 ,0x00 ,0x00 ,0x23}; | ||
47 | + memcpy(str, sendbuf, 12); | ||
48 | + *str_len = 12; | ||
49 | + } | ||
50 | + break; | ||
51 | + case JZ_INSCODE_5AFRAME_AUDIO_STOP: | ||
52 | + { | ||
53 | + char sendbuf[12] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0C ,0x00 ,0x00 ,0x52 ,0x06 ,0x00 ,0x00 ,0x23}; | ||
54 | + memcpy(str, sendbuf, 12); | ||
55 | + *str_len = 12; | ||
56 | + } | ||
57 | + break; | ||
58 | + | ||
59 | + case JZ_INSCODE_5AFRAME_AUDIO_LASTSONG: | ||
60 | + { | ||
61 | + char sendbuf[12] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0C ,0x00 ,0x00 ,0x52 ,0x07 ,0x00 ,0x00 ,0x23}; | ||
62 | + memcpy(str, sendbuf, 12); | ||
63 | + *str_len = 12; | ||
64 | + } | ||
65 | + break; | ||
66 | + | ||
67 | + case JZ_INSCODE_5AFRAME_AUDIO_NEXTSONG: | ||
68 | + { | ||
69 | + char sendbuf[12] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0C ,0x00 ,0x00 ,0x52 ,0x08 ,0x00 ,0x00 ,0x23}; | ||
70 | + memcpy(str, sendbuf, 12); | ||
71 | + *str_len = 12; | ||
72 | + } | ||
73 | + break; | ||
74 | + | ||
75 | + case JZ_INSCODE_5AFRAME_VOLUME: | ||
76 | + { | ||
77 | + char sendbuf[12] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0C ,0x00 ,0x00 ,0x52 ,0x10 ,0x00 ,0x00 ,0x23}; | ||
78 | + memcpy(str, sendbuf, 12); | ||
79 | + *str_len = 12; | ||
80 | + } | ||
81 | + break; | ||
82 | + | ||
83 | + case JZ_INSCODE_5AFRAME_PLAY_LOOP: | ||
84 | + { | ||
85 | + char sendbuf[12] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0C ,0x00 ,0x00 ,0x55 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
86 | + memcpy(str, sendbuf, 12); | ||
87 | + *str_len = 12; | ||
88 | + } | ||
89 | + break; | ||
90 | + | ||
91 | + case JZ_INSCODE_5AFRAME_TTS_SET_TONE: | ||
92 | + { | ||
93 | + char sendbuf[12] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0C ,0x00 ,0x00 ,0x57 ,0x01 ,0x00 ,0x00 ,0x23}; | ||
94 | + memcpy(str, sendbuf, 12); | ||
95 | + *str_len = 12; | ||
96 | + } | ||
97 | + break; | ||
98 | + | ||
99 | + case JZ_INSCODE_5AFRAME_TTS_TRANS_START: | ||
100 | + { | ||
101 | + char sendbuf[12] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0C ,0x00 ,0x00 ,0x57 ,0x03 ,0x00 ,0x00 ,0x23}; | ||
102 | + memcpy(str, sendbuf, 12); | ||
103 | + *str_len = 12; | ||
104 | + } | ||
105 | + break; | ||
106 | + | ||
107 | + case JZ_INSCODE_5AFRAME_TTS_TRANS_STOP: | ||
108 | + { | ||
109 | + char sendbuf[12] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0C ,0x00 ,0x00 ,0x57 ,0x04 ,0x00 ,0x00 ,0x23}; | ||
110 | + memcpy(str, sendbuf, 12); | ||
111 | + *str_len = 12; | ||
112 | + } | ||
113 | + break; | ||
114 | + | ||
115 | + case JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_FREQUENCY: | ||
116 | + { | ||
117 | + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x61 ,0x51 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
118 | + memcpy(str, sendbuf, 13); | ||
119 | + *str_len = 13; | ||
120 | + } | ||
121 | + break; | ||
122 | + | ||
123 | + case JZ_INSCODE_5AFRAME_SEARCHLIGHT_CONTROL: | ||
124 | + { | ||
125 | + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x62 ,0x51 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
126 | + memcpy(str, sendbuf, 13); | ||
127 | + *str_len = 13; | ||
128 | + } | ||
129 | + break; | ||
130 | + | ||
131 | + case JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMEN: | ||
132 | + { | ||
133 | + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x63 ,0x51 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
134 | + memcpy(str, sendbuf, 13); | ||
135 | + *str_len = 13; | ||
136 | + } | ||
137 | + break; | ||
138 | + | ||
139 | + case JZ_INSCODE_5AFRAME_GIMBAL_PITCH_CONTROL: | ||
140 | + { | ||
141 | + char sendbuf[14] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0E ,0x00 ,0x00 ,0x64 ,0x51 ,0x00 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
142 | + memcpy(str, sendbuf, 14); | ||
143 | + *str_len = 14; | ||
144 | + } | ||
145 | + break; | ||
146 | + | ||
147 | + case JZ_INSCODE_5AFRAME_GIMBAL_PITCH_FINETUNING_CONTROL: | ||
148 | + { | ||
149 | + char sendbuf[14] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0E ,0x00 ,0x00 ,0x64 ,0x52 ,0x00 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
150 | + memcpy(str, sendbuf, 14); | ||
151 | + *str_len = 14; | ||
152 | + } | ||
153 | + break; | ||
154 | + | ||
155 | + case JZ_INSCODE_5AFRAME_WARNINGLIGHT_CONTROL: | ||
156 | + { | ||
157 | + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x66 ,0x51 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
158 | + memcpy(str, sendbuf, 13); | ||
159 | + *str_len = 13; | ||
160 | + } | ||
161 | + break; | ||
162 | + | ||
163 | + case JZ_INSCODE_5AFRAME_WARNINGLIGHT_COLOUR: | ||
164 | + { | ||
165 | + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x67 ,0x51 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
166 | + memcpy(str, sendbuf, 13); | ||
167 | + *str_len = 13; | ||
168 | + } | ||
169 | + break; | ||
170 | + | ||
171 | + case JZ_INSCODE_5AFRAME_SEARCHLIGHT_MESSAGE_SUBSCRIPTION_CONTROL: | ||
172 | + { | ||
173 | + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x68 ,0x51 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
174 | + memcpy(str, sendbuf, 13); | ||
175 | + *str_len = 13; | ||
176 | + } | ||
177 | + break; | ||
178 | + | ||
179 | + case JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LIGHTATTRIBUTE: | ||
180 | + { | ||
181 | + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x51 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
182 | + memcpy(str, sendbuf, 13); | ||
183 | + *str_len = 13; | ||
184 | + } | ||
185 | + break; | ||
186 | + | ||
187 | + case JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE: | ||
188 | + { | ||
189 | + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x52 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
190 | + memcpy(str, sendbuf, 13); | ||
191 | + *str_len = 13; | ||
192 | + } | ||
193 | + break; | ||
194 | + | ||
195 | + case JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL: | ||
196 | + { | ||
197 | + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x54 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
198 | + memcpy(str, sendbuf, 13); | ||
199 | + *str_len = 13; | ||
200 | + } | ||
201 | + break; | ||
202 | + | ||
203 | + case JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS: | ||
204 | + { | ||
205 | + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x55 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
206 | + memcpy(str, sendbuf, 13); | ||
207 | + *str_len = 13; | ||
208 | + } | ||
209 | + break; | ||
210 | + | ||
211 | + case JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR: | ||
212 | + { | ||
213 | + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x56 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
214 | + memcpy(str, sendbuf, 13); | ||
215 | + *str_len = 13; | ||
216 | + } | ||
217 | + break; | ||
218 | + | ||
219 | + case JZ_INSCODE_5AFRAME_CHECKSTATUS_SERIALNUMBER: | ||
220 | + { | ||
221 | + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x57 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
222 | + memcpy(str, sendbuf, 13); | ||
223 | + *str_len = 13; | ||
224 | + } | ||
225 | + break; | ||
226 | + | ||
227 | + case JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL_FINETUNING: | ||
228 | + { | ||
229 | + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x58 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
230 | + memcpy(str, sendbuf, 13); | ||
231 | + *str_len = 13; | ||
232 | + } | ||
233 | + break; | ||
234 | +/******************************************************************************************************************************************************** | ||
235 | + * | ||
236 | + * 5B帧 | ||
237 | + * | ||
238 | +********************************************************************************************************************************************************/ | ||
239 | + case JZ_INSCODE_5BFRAME_INITIATECONNECT: | ||
240 | + { | ||
241 | + char sendbuf[12] = {0x5B ,0x5B ,0x77 ,0x00 ,0x0c ,0x00 ,0x00 ,0x50 ,0x51 ,0x00 ,0x00 ,0x23}; | ||
242 | + memcpy(str, sendbuf, 12); | ||
243 | + *str_len = 12; | ||
244 | + } | ||
245 | + break; | ||
246 | + | ||
247 | + case JZ_INSCODE_5BFRAME_HEARTBEAT: | ||
248 | + { | ||
249 | + char sendbuf[12] = {0x5B ,0x5B ,0x77 ,0x00 ,0x0c ,0x00 ,0x00 ,0x50 ,0x53 ,0x00 ,0x00 ,0x23}; | ||
250 | + memcpy(str, sendbuf, 12); | ||
251 | + *str_len = 12; | ||
252 | + } | ||
253 | + break; | ||
254 | + | ||
255 | + case JZ_INSCODE_5BFRAME_ALL_VERSION: | ||
256 | + { | ||
257 | + unsigned char sendbuf[16] = {0x5B ,0x5B ,0x77 ,0x00 ,0x10 ,0x00 ,0x00 ,0x50 ,0x55, 0x00, 0x00, 0x00, 0x00 ,0x00 ,0x00 ,0x23}; | ||
258 | + memcpy(str, sendbuf, 16); | ||
259 | + *str_len = 16; | ||
260 | + } | ||
261 | + break; | ||
262 | + | ||
263 | + case JZ_INSCODE_5BFRAME_ALL_SERIAL_NUMBER: | ||
264 | + { | ||
265 | + unsigned char sendbuf[13] = {0x5B ,0x5B ,0x77 ,0x00 ,0x10 ,0x00 ,0x00 ,0x50 ,0x56, 0x00, 0x00 , 0x00 ,0x23}; | ||
266 | + memcpy(str, sendbuf, 13); | ||
267 | + *str_len = 13; | ||
268 | + } | ||
269 | + break; | ||
270 | + | ||
271 | + case JZ_INSCODE_5BFRAME_DEVICE_MESSAGE: | ||
272 | + { | ||
273 | + unsigned char sendbuf[12] = {0x5B ,0x5B ,0x77 ,0x00 ,0x0c ,0x00 ,0x00 ,0x50 ,0x58, 0x00 , 0x00 ,0x23}; | ||
274 | + memcpy(str, sendbuf, 12); | ||
275 | + *str_len = 12; | ||
276 | + } | ||
277 | + break; | ||
278 | + | ||
279 | + case JZ_INSCODE_5BFRAME_SUCESS: | ||
280 | + { | ||
281 | + char sendbuf[12] = {0x5B, 0x5B, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0x23}; | ||
282 | + memcpy(str, sendbuf, 12); | ||
283 | + *str_len = 12; | ||
284 | + } | ||
285 | + break; | ||
286 | + | ||
287 | + case JZ_INSCODE_5BFRAME_DEFEAT: | ||
288 | + { | ||
289 | + char sendbuf[12] = {0x5B, 0x5B, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x51, 0xff, 0x00, 0x00, 0x23}; | ||
290 | + memcpy(str, sendbuf, 12); | ||
291 | + *str_len = 12; | ||
292 | + } | ||
293 | + break; | ||
294 | + | ||
295 | + | ||
296 | + case JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS_END: | ||
297 | + { | ||
298 | + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0xff, 0x00, 0x00, 0x23}; | ||
299 | + memcpy(str, sendbuf, 12); | ||
300 | + *str_len = 12; | ||
301 | + } | ||
302 | + break; | ||
303 | + | ||
304 | + case JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS: | ||
305 | + { | ||
306 | + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0x02, 0x00, 0x00, 0x23}; | ||
307 | + memcpy(str, sendbuf, 12); | ||
308 | + *str_len = 12; | ||
309 | + } | ||
310 | + break; | ||
311 | + | ||
312 | + case JZ_INSCODE_5BFRAME_AUDIO_PLAYFILENAME: | ||
313 | + { | ||
314 | + char sendbuf[12] = {0x5B, 0x5B, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0x04, 0x00, 0x00, 0x23}; | ||
315 | + memcpy(str, sendbuf, 12); | ||
316 | + *str_len = 12; | ||
317 | + } | ||
318 | + break; | ||
319 | + | ||
320 | + case JZ_INSCODE_5BFRAME_VOLUME: | ||
321 | + { | ||
322 | + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0x01, 0x00, 0x00, 0x23}; | ||
323 | + memcpy(str, sendbuf, 12); | ||
324 | + *str_len = 12; | ||
325 | + } | ||
326 | + break; | ||
327 | + | ||
328 | + | ||
329 | + | ||
330 | + case JZ_INSCODE_5BFRAME_SORTWAREVERSION: | ||
331 | + { | ||
332 | + char sendbuf[15] = { 0x5b, 0x5b, 0x77, 0x00, 0x0f, 0x00, 0x00, 0x53, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23}; | ||
333 | + memcpy(str, sendbuf, 15); | ||
334 | + *str_len = 15; | ||
335 | + } | ||
336 | + break; | ||
337 | + | ||
338 | + case JZ_INSCODE_5BFRAME_AUDIO_PLAYLOOPSTATUS: | ||
339 | + { | ||
340 | + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0x05, 0x00, 0x00, 0x23}; | ||
341 | + memcpy(str, sendbuf, 12); | ||
342 | + *str_len = 12; | ||
343 | + } | ||
344 | + break; | ||
345 | + | ||
346 | + case JZ_INSCODE_5BFRAME_TTS_TONE: | ||
347 | + { | ||
348 | + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0x06, 0x00, 0x00, 0x23}; | ||
349 | + memcpy(str, sendbuf, 12); | ||
350 | + *str_len = 12; | ||
351 | + } | ||
352 | + break; | ||
353 | + | ||
354 | + case JZ_INSCODE_5BFRAME_TTS_SPEED: | ||
355 | + { | ||
356 | + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0x07, 0x00, 0x00, 0x23}; | ||
357 | + memcpy(str, sendbuf, 12); | ||
358 | + *str_len = 12; | ||
359 | + } | ||
360 | + break; | ||
361 | + | ||
362 | + case JZ_INSCODE_5BFRAME_MUSICLIST_START: | ||
363 | + { | ||
364 | + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x23}; | ||
365 | + memcpy(str, sendbuf, 12); | ||
366 | + *str_len = 12; | ||
367 | + } | ||
368 | + break; | ||
369 | + | ||
370 | + case JZ_INSCODE_5BFRAME_MUSICLIST_TRANS: | ||
371 | + { | ||
372 | + char sendbuf[12] = {0x5B, 0x5B, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0x02, 0x00, 0x00, 0x23}; | ||
373 | + memcpy(str, sendbuf, 12); | ||
374 | + *str_len = 12; | ||
375 | + } | ||
376 | + break; | ||
377 | + | ||
378 | + case JZ_INSCODE_5BFRAME_MUSICLIST_STOP: | ||
379 | + { | ||
380 | + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0xff, 0x00, 0x00, 0x23}; | ||
381 | + memcpy(str, sendbuf, 12); | ||
382 | + *str_len = 12; | ||
383 | + } | ||
384 | + break; | ||
385 | + | ||
386 | + case JZ_INSCODE_5BFRAME_OPUS_DECODE_STATUS: | ||
387 | + { | ||
388 | + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x59, 0xf2, 0x00, 0x00, 0x23}; | ||
389 | + memcpy(str, sendbuf, 12); | ||
390 | + *str_len = 12; | ||
391 | + } | ||
392 | + break; | ||
393 | + | ||
394 | + case JZ_INSCODE_5BFRAME_CHECKSTATUS_OUTPUTPOWER: | ||
395 | + { | ||
396 | + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0C, 0x00, 0x00, 0x5A, 0x02, 0x00, 0x00, 0x23}; | ||
397 | + memcpy(str, sendbuf, 12); | ||
398 | + *str_len = 12; | ||
399 | + } | ||
400 | + break; | ||
401 | + | ||
402 | + case JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_FREQUENCY: | ||
403 | + { | ||
404 | + char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x61, 0x51, 0x00, 0x00, 0x00, 0x23}; | ||
405 | + memcpy(str, sendbuf, 13); | ||
406 | + *str_len = 13; | ||
407 | + } | ||
408 | + break; | ||
409 | + | ||
410 | + case JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_MODE: | ||
411 | + { | ||
412 | + char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x62, 0x51, 0x00, 0x00, 0x00, 0x23}; | ||
413 | + memcpy(str, sendbuf, 13); | ||
414 | + *str_len = 13; | ||
415 | + } | ||
416 | + break; | ||
417 | + | ||
418 | + case JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_LUMEN: | ||
419 | + { | ||
420 | + char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x63, 0x51, 0x00, 0x00, 0x00, 0x23}; | ||
421 | + memcpy(str, sendbuf, 13); | ||
422 | + *str_len = 13; | ||
423 | + } | ||
424 | + break; | ||
425 | + | ||
426 | + case JZ_INSCODE_5BFRAME_GIMBAL_PITCH: | ||
427 | + { | ||
428 | + char sendbuf[14] = { 0x5b, 0x5b, 0x77, 0x00, 0x0e, 0x00, 0x00, 0x64, 0x51, 0x00, 0x00, 0x00, 0x00, 0x23}; | ||
429 | + memcpy(str, sendbuf, 14); | ||
430 | + *str_len = 14; | ||
431 | + } | ||
432 | + break; | ||
433 | + | ||
434 | + case JZ_INSCODE_5BFRAME_GIMBAL_PITCH_FINETUNING: | ||
435 | + { | ||
436 | + char sendbuf[14] = { 0x5b, 0x5b, 0x77, 0x00, 0x0e, 0x00, 0x00, 0x64, 0x52, 0x00, 0x00, 0x00, 0x00, 0x23}; | ||
437 | + memcpy(str, sendbuf, 14); | ||
438 | + *str_len = 14; | ||
439 | + } | ||
440 | + break; | ||
441 | + | ||
442 | + case JZ_INSCODE_5BFRAME_GIMBAL_YAW: | ||
443 | + { | ||
444 | + char sendbuf[14] = { 0x5b, 0x5b, 0x77, 0x00, 0x0e, 0x00, 0x00, 0x65, 0x51, 0x00, 0x00, 0x00, 0x00, 0x23}; | ||
445 | + memcpy(str, sendbuf, 14); | ||
446 | + *str_len = 14; | ||
447 | + } | ||
448 | + break; | ||
449 | + | ||
450 | + case JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS: | ||
451 | + { | ||
452 | + char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x66, 0x51, 0x00, 0x00, 0x00, 0x23}; | ||
453 | + memcpy(str, sendbuf, 13); | ||
454 | + *str_len = 13; | ||
455 | + } | ||
456 | + break; | ||
457 | + | ||
458 | + case JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR: | ||
459 | + { | ||
460 | + char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x67, 0x51, 0x00, 0x00, 0x00, 0x23}; | ||
461 | + memcpy(str, sendbuf, 13); | ||
462 | + *str_len = 13; | ||
463 | + } | ||
464 | + break; | ||
465 | + | ||
466 | + case JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE: | ||
467 | + { | ||
468 | + char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x69, 0x51, 0x00, 0x00, 0x00, 0x23}; | ||
469 | + memcpy(str, sendbuf, 13); | ||
470 | + *str_len = 13; | ||
471 | + } | ||
472 | + break; | ||
473 | + | ||
474 | + case JZ_INSCODE_5BFRAME_CHECKSTATUS_SERIALNUMBER: | ||
475 | + { | ||
476 | + char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x6F, 0x57, 0x00, 0x00, 0x00, 0x23}; | ||
477 | + memcpy(str, sendbuf, 13); | ||
478 | + *str_len = 13; | ||
479 | + } | ||
480 | + break; | ||
481 | + | ||
482 | + | ||
483 | + | ||
484 | +/******************************************************************************************************************************************************** | ||
485 | + * | ||
486 | + * 6A帧 | ||
487 | + * | ||
488 | +********************************************************************************************************************************************************/ | ||
489 | + | ||
490 | + case JZ_INSCODE_6AFRAME_SET_GIMBAL_MAXMIN_RANGE: | ||
491 | + { | ||
492 | + char sendbuf[13] = {0x6A ,0x6A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x69 ,0x52 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
493 | + memcpy(str, sendbuf, 13); | ||
494 | + *str_len = 13; | ||
495 | + } | ||
496 | + break; | ||
497 | + | ||
498 | + case JZ_INSCODE_6AFRAME_GIMBAL_LINKAGE_CONTROL: | ||
499 | + { | ||
500 | + char sendbuf[13] = {0x6A ,0x6A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x69 ,0x56 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
501 | + memcpy(str, sendbuf, 13); | ||
502 | + *str_len = 13; | ||
503 | + } | ||
504 | + break; | ||
505 | + | ||
506 | + case JZ_INSCODE_6AFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME: | ||
507 | + { | ||
508 | + char sendbuf[13] = {0x6A ,0x6A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x50 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
509 | + memcpy(str, sendbuf, 13); | ||
510 | + *str_len = 13; | ||
511 | + } | ||
512 | + break; | ||
513 | + | ||
514 | + case JZ_INSCODE_6AFRAME_CHECKSTATUS_GIMBAL_LINKAGE: | ||
515 | + { | ||
516 | + char sendbuf[13] = {0x6A ,0x6A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x51 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
517 | + memcpy(str, sendbuf, 13); | ||
518 | + *str_len = 13; | ||
519 | + } | ||
520 | + break; | ||
521 | + | ||
522 | + | ||
523 | +/******************************************************************************************************************************************************** | ||
524 | + * | ||
525 | + * 6B帧 | ||
526 | + * | ||
527 | +********************************************************************************************************************************************************/ | ||
528 | + case JZ_INSCODE_6BFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME: | ||
529 | + { | ||
530 | + char sendbuf[13] = {0x6B ,0x6B ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x50 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
531 | + memcpy(str, sendbuf, 13); | ||
532 | + *str_len = 13; | ||
533 | + } | ||
534 | + break; | ||
535 | + | ||
536 | + case JZ_INSCODE_6BFRAME_CHECKSTATUS_GIMBAL_LINKAGE: | ||
537 | + { | ||
538 | + char sendbuf[13] = {0x6B ,0x6B ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x51 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
539 | + memcpy(str, sendbuf, 13); | ||
540 | + *str_len = 13; | ||
541 | + } | ||
542 | + break; | ||
543 | + | ||
544 | + case JZ_INSCODE_6BFRAME_CHECK_SPECIAL_PARAMETERS: | ||
545 | + { | ||
546 | + char sendbuf[13] = {0x6B ,0x6B ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x54 ,0x00 ,0x00 ,0x00 ,0x23}; | ||
547 | + memcpy(str, sendbuf, 13); | ||
548 | + *str_len = 13; | ||
549 | + } | ||
550 | + break; | ||
551 | + | ||
552 | + default: | ||
553 | + printf("JZsdk_GetFrameTemplate:没有对应的帧模板\n"); | ||
554 | + break; | ||
555 | + } | ||
556 | +} |
1 | +/** | ||
2 | + ******************************************************************** | ||
3 | + * @file | ||
4 | + * | ||
5 | + * | ||
6 | + ********************************************************************* | ||
7 | + */ | ||
8 | + | ||
9 | +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | ||
10 | +#ifndef JZSDK_GET_FRAME_TEMPLATE_H | ||
11 | +#define JZSDK_GET_FRAME_TEMPLATE_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_GetFrameTemplate(int InsCode ,char *str, int *str_len); | ||
26 | + | ||
27 | + | ||
28 | +#ifdef __cplusplus | ||
29 | +} | ||
30 | +#endif | ||
31 | + | ||
32 | +#endif |
1 | +/* 头文件 ------------------------------------------------------------------*/ | ||
2 | +#include <stdio.h> | ||
3 | +#include <stdlib.h> | ||
4 | +#include <string.h> | ||
5 | +#include <stdarg.h> | ||
6 | +#include <stdio.h> | ||
7 | + | ||
8 | +#include "JZsdk_Logger.h" | ||
9 | +#include <time.h> | ||
10 | +#include "JZsdkLib.h" | ||
11 | +#include <pthread.h> | ||
12 | +#include <sys/time.h> | ||
13 | +#include <sys/resource.h> | ||
14 | +#include <unistd.h> | ||
15 | +#include <sys/types.h> | ||
16 | + | ||
17 | + | ||
18 | +#define LOG_GRADE JZSDK_LOGGER_CONSOLE_LOG_LEVEL_INFO | ||
19 | + | ||
20 | +// 定义全局互斥锁 | ||
21 | +static pthread_mutex_t LogWriteMutex = PTHREAD_MUTEX_INITIALIZER; | ||
22 | + | ||
23 | +/* 全局变量 ------------------------------------------------------------------*/ | ||
24 | +static struct timeval g_start_time; | ||
25 | +static FILE *logFile = NULL; | ||
26 | +static char LogFileName[JZSDK_FILENAME_SIZE]; | ||
27 | +static int Logger_init_flag = JZ_FLAGCODE_OFF; | ||
28 | + | ||
29 | +/* 函数声明 ------------------------------------------------------------------*/ | ||
30 | + | ||
31 | +long long get_total_ram() { | ||
32 | + FILE *file; | ||
33 | + char line[128]; | ||
34 | + long long total_ram = 0; | ||
35 | + | ||
36 | + file = fopen("/proc/meminfo", "r"); | ||
37 | + if (!file) { | ||
38 | + perror("Error opening /proc/meminfo"); | ||
39 | + return 0; | ||
40 | + } | ||
41 | + | ||
42 | + while (fgets(line, sizeof(line), file)) { | ||
43 | + if (strncmp(line, "MemTotal:", 9) == 0) { | ||
44 | + sscanf(line, "MemTotal: %lld kB", &total_ram); | ||
45 | + break; | ||
46 | + } | ||
47 | + } | ||
48 | + | ||
49 | + fclose(file); | ||
50 | + return total_ram; | ||
51 | +} | ||
52 | + | ||
53 | +long long get_current_rss(pid_t pid) { | ||
54 | + FILE *file; | ||
55 | + char line[128]; | ||
56 | + long long vmrss = 0; | ||
57 | + | ||
58 | + char path[64]; | ||
59 | + snprintf(path, sizeof(path), "/proc/%d/status", pid); | ||
60 | + | ||
61 | + file = fopen(path, "r"); | ||
62 | + if (!file) { | ||
63 | + perror("Error opening /proc/[pid]/status"); | ||
64 | + return 0; | ||
65 | + } | ||
66 | + | ||
67 | + while (fgets(line, sizeof(line), file)) { | ||
68 | + if (strncmp(line, "VmRSS:", 6) == 0) { | ||
69 | + sscanf(line, "VmRSS: %lld kB", &vmrss); | ||
70 | + break; | ||
71 | + } | ||
72 | + } | ||
73 | + | ||
74 | + fclose(file); | ||
75 | + return vmrss; | ||
76 | +} | ||
77 | + | ||
78 | +static void *MonitorTask(void *arg) | ||
79 | +{ | ||
80 | + //获取程序的pid号 | ||
81 | + pid_t pid = getpid(); // 获取当前进程的 PID | ||
82 | + long long total_ram; //最大ram内存 | ||
83 | + long long current_rss; //RSS内存 | ||
84 | + double memory_percentage; //内存百分比 | ||
85 | + | ||
86 | + // 获取系统总 RAM | ||
87 | + total_ram = get_total_ram(); | ||
88 | + | ||
89 | + while (1) | ||
90 | + { | ||
91 | + printf("当前进程pid号%d\n",pid); | ||
92 | + | ||
93 | + // 获取当前进程的内存使用量 | ||
94 | + current_rss = get_current_rss(pid); | ||
95 | + | ||
96 | + // 计算内存百分比 | ||
97 | + if (total_ram > 0) | ||
98 | + { | ||
99 | + memory_percentage = (double)current_rss / total_ram * 100; | ||
100 | + } else { | ||
101 | + memory_percentage = 0; | ||
102 | + } | ||
103 | + | ||
104 | + // 打印结果 | ||
105 | + printf("Program current memory usage: %lld KB\n", current_rss); | ||
106 | + JZSDK_LOG_INFO("Monitor:(%.2f%% of total RAM)", memory_percentage); | ||
107 | + | ||
108 | + delayS(10); | ||
109 | + } | ||
110 | +} | ||
111 | + | ||
112 | + | ||
113 | + | ||
114 | +static int Log_Monitor() | ||
115 | +{ | ||
116 | + pthread_t work_mode_task; | ||
117 | + pthread_attr_t task_attribute; //线程属性 | ||
118 | + pthread_attr_init(&task_attribute); //初始化线程属性 | ||
119 | + pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程属性 | ||
120 | + int timer = pthread_create(&work_mode_task,&task_attribute,MonitorTask,NULL); //线程 | ||
121 | + if(timer != 0) | ||
122 | + { | ||
123 | + printf("创建计时线程失败!\n"); | ||
124 | + } | ||
125 | +} | ||
126 | + | ||
127 | +T_JZsdkReturnCode createJZLOGFolder() | ||
128 | +{ | ||
129 | + const char *path = "/root/sdcard/JZLOG"; | ||
130 | + | ||
131 | + // 使用系统命令检测路径是否存在 | ||
132 | + if(JZsdk_check_directory_exists_posix(path) == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
133 | + { | ||
134 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
135 | + } | ||
136 | + else | ||
137 | + { | ||
138 | + JZsdk_Osal_Mkdir(path); | ||
139 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
140 | + } | ||
141 | +} | ||
142 | + | ||
143 | +int ReadLogNumFromFile() | ||
144 | +{ | ||
145 | + const char *path = "/root/sdcard/JZLOG/thelast"; | ||
146 | + int logNum = 0; | ||
147 | + | ||
148 | + FILE *file = fopen(path, "r"); | ||
149 | + if (file == NULL) | ||
150 | + { | ||
151 | + // 如果文件不存在,则创建并设置LogNum为0 | ||
152 | + file = fopen(path, "w"); | ||
153 | + fprintf(file, "%d", logNum); | ||
154 | + } | ||
155 | + else | ||
156 | + { | ||
157 | + // 从文件中读取LogNum,并自增1 | ||
158 | + fscanf(file, "%d", &logNum); | ||
159 | + logNum++; | ||
160 | + fclose(file); | ||
161 | + | ||
162 | + // 将新的LogNum写回文件中 | ||
163 | + file = fopen(path, "w"); | ||
164 | + fprintf(file, "%d", logNum); | ||
165 | + } | ||
166 | + fclose(file); | ||
167 | + | ||
168 | + return logNum; | ||
169 | +} | ||
170 | + | ||
171 | +T_JZsdkReturnCode JZsdk_LoggerInit() | ||
172 | +{ | ||
173 | + //1、记录启动时间 | ||
174 | + gettimeofday(&g_start_time, 0); | ||
175 | + | ||
176 | + //2、检查是否存在log文件,不在则创建 | ||
177 | + createJZLOGFolder(); | ||
178 | + | ||
179 | + //3、获取本地log个数 | ||
180 | + int LogNum = ReadLogNumFromFile(); | ||
181 | + | ||
182 | + //4、获取本地时间,拼接出log文件名 | ||
183 | + time_t current_time; | ||
184 | + struct tm *info; | ||
185 | + char timeString[80]; | ||
186 | + time(¤t_time); | ||
187 | + info = localtime(¤t_time); | ||
188 | + strftime(timeString, sizeof(timeString), "%Y%m%d_%H-%M-%S", info); | ||
189 | + snprintf(LogFileName, sizeof(LogFileName), "/root/sdcard/JZLOG/%d_%s", LogNum, timeString); | ||
190 | + | ||
191 | + printf("LogFileName:%s\n",LogFileName); | ||
192 | + | ||
193 | + // 在主函数或初始化阶段初始化互斥锁 | ||
194 | + pthread_mutex_init(&LogWriteMutex, NULL); | ||
195 | + | ||
196 | + //5、打开记录文件 | ||
197 | + logFile = fopen(LogFileName, "w"); | ||
198 | + if (logFile == NULL) { | ||
199 | + // 文件打开失败,输出错误消息 | ||
200 | + printf("Failed to open file: %s", LogFileName); | ||
201 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
202 | + } | ||
203 | + | ||
204 | + //6、写入开始时间 | ||
205 | + char logMessage[256]; | ||
206 | + snprintf(logMessage,256,"LOG_FILE:%s\n",LogFileName); | ||
207 | + fprintf(logFile, "%s", logMessage); | ||
208 | + | ||
209 | + //dfclose(logFile); | ||
210 | + | ||
211 | + //打开初始化完成的flag | ||
212 | + Logger_init_flag = JZ_FLAGCODE_ON; | ||
213 | + | ||
214 | + //设立监控 | ||
215 | + Log_Monitor(); | ||
216 | + | ||
217 | + JZSDK_LOG_INFO("log初始化完成"); | ||
218 | +} | ||
219 | + | ||
220 | +T_JZsdkReturnCode JZsdk_LoggerDeInit() | ||
221 | +{ | ||
222 | + if (logFile != NULL) | ||
223 | + { | ||
224 | + fclose(logFile); | ||
225 | + } | ||
226 | +} | ||
227 | + | ||
228 | +T_JZsdkReturnCode writeToLogFile(const char *data) | ||
229 | +{ | ||
230 | + // 加锁 | ||
231 | + pthread_mutex_lock(&LogWriteMutex); | ||
232 | + | ||
233 | + //logFile = fopen(LogFileName, "a"); // 使用"a"模式打开文件,以在末尾追加数据 | ||
234 | + | ||
235 | + // if (logFile == NULL) { | ||
236 | + // // 文件打开失败,输出错误消息 | ||
237 | + // printf("Failed to open file: %s", LogFileName); | ||
238 | + // pthread_mutex_unlock(&LogWriteMutex); | ||
239 | + | ||
240 | + // return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
241 | + // } | ||
242 | + | ||
243 | + if (logFile == NULL) | ||
244 | + { | ||
245 | + printf("Failed to open file: %s", LogFileName); | ||
246 | + pthread_mutex_unlock(&LogWriteMutex); | ||
247 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
248 | + } | ||
249 | + | ||
250 | + fprintf(logFile, "%s", data); // 写入新的数据 | ||
251 | + | ||
252 | + //fclose(logFile); | ||
253 | + | ||
254 | + // 解锁 | ||
255 | + pthread_mutex_unlock(&LogWriteMutex); | ||
256 | + | ||
257 | +} | ||
258 | + | ||
259 | +T_JZsdkReturnCode HexToLogFile(const char *data) | ||
260 | +{ | ||
261 | + // 加锁 | ||
262 | + pthread_mutex_lock(&LogWriteMutex); | ||
263 | + | ||
264 | + // logFile = fopen(LogFileName, "a"); // 使用"a"模式打开文件,以在末尾追加数据 | ||
265 | + | ||
266 | + // if (logFile == NULL) { | ||
267 | + // // 文件打开失败,输出错误消息 | ||
268 | + // printf("Failed to open file: %s", LogFileName); | ||
269 | + // pthread_mutex_unlock(&LogWriteMutex); | ||
270 | + | ||
271 | + // return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
272 | + // } | ||
273 | + | ||
274 | + if (logFile == NULL) | ||
275 | + { | ||
276 | + printf("Failed to open file: %s", LogFileName); | ||
277 | + pthread_mutex_unlock(&LogWriteMutex); | ||
278 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
279 | + } | ||
280 | + | ||
281 | + fprintf(logFile, "%x ", data[0]); // 写入新的数据 | ||
282 | + | ||
283 | + //fclose(logFile); | ||
284 | + | ||
285 | + // 解锁 | ||
286 | + pthread_mutex_unlock(&LogWriteMutex); | ||
287 | +} | ||
288 | + | ||
289 | + | ||
290 | +void JZsdk_UserLogOutput(E_JZsdkConsoleLogLevel level, const char *fmt, ...) | ||
291 | +{ | ||
292 | + // 将日志级别转换为相应的字符串 | ||
293 | + const char *JZSDK_LOGGER_CONSOLE_LOG_LEVEL = ""; | ||
294 | + switch (level) { | ||
295 | + case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_DEBUG: | ||
296 | + JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "DEBUG"; | ||
297 | + break; | ||
298 | + case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_INFO: | ||
299 | + JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "INFO"; | ||
300 | + break; | ||
301 | + case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_WARN: | ||
302 | + JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "WARNING"; | ||
303 | + break; | ||
304 | + case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_ERROR: | ||
305 | + JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "ERROR"; | ||
306 | + break; | ||
307 | + default: | ||
308 | + break; | ||
309 | + } | ||
310 | + // 使用可变参数处理传入的格式化字符串和可变参数 | ||
311 | + va_list args; | ||
312 | + va_start(args, fmt); | ||
313 | + | ||
314 | + //格式化日志消息 | ||
315 | + char logMessage[512]; | ||
316 | + memset(logMessage, 0, sizeof(logMessage)); | ||
317 | + vsnprintf(logMessage, sizeof(logMessage), fmt, args); | ||
318 | + | ||
319 | + va_end(args); | ||
320 | + | ||
321 | + struct timeval current_time; | ||
322 | + gettimeofday(¤t_time, 0); | ||
323 | + | ||
324 | + long seconds = current_time.tv_sec - g_start_time.tv_sec; | ||
325 | + long microseconds = current_time.tv_usec - g_start_time.tv_usec; | ||
326 | + double elapsed = seconds + microseconds*1e-6; | ||
327 | + | ||
328 | + // 执行具体的日志输出操作 | ||
329 | + char finalLogMessage[612]; | ||
330 | + memset(finalLogMessage, 0, sizeof(finalLogMessage)); | ||
331 | + snprintf(finalLogMessage, 612, "[%s][%.4f]%s\n", JZSDK_LOGGER_CONSOLE_LOG_LEVEL, elapsed, logMessage); | ||
332 | + | ||
333 | + printf("%s",finalLogMessage); | ||
334 | + | ||
335 | + //写入日志 | ||
336 | + if (Logger_init_flag == JZ_FLAGCODE_ON && level <= LOG_GRADE) | ||
337 | + { | ||
338 | + writeToLogFile(finalLogMessage); | ||
339 | + } | ||
340 | +} | ||
341 | + | ||
342 | + | ||
343 | + | ||
344 | +void JZsdk_User_OutputHex(E_JZsdkConsoleLogLevel level, const char *fmt, ...) | ||
345 | +{ | ||
346 | + // 将日志级别转换为相应的字符串 | ||
347 | + const char *JZSDK_LOGGER_CONSOLE_LOG_LEVEL = ""; | ||
348 | + switch (level) { | ||
349 | + case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_DEBUG: | ||
350 | + JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "DEBUG"; | ||
351 | + break; | ||
352 | + case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_INFO: | ||
353 | + JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "INFO"; | ||
354 | + break; | ||
355 | + case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_WARN: | ||
356 | + JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "WARNING"; | ||
357 | + break; | ||
358 | + case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_ERROR: | ||
359 | + JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "ERROR"; | ||
360 | + break; | ||
361 | + default: | ||
362 | + break; | ||
363 | + } | ||
364 | + // 使用可变参数处理传入的格式化字符串和可变参数 | ||
365 | + va_list args; | ||
366 | + va_start(args, fmt); | ||
367 | + | ||
368 | + //格式化日志消息 | ||
369 | + char logMessage[10]; | ||
370 | + memset(logMessage, 0, sizeof(logMessage)); | ||
371 | + vsnprintf(logMessage, sizeof(logMessage), fmt, args); | ||
372 | + | ||
373 | + va_end(args); | ||
374 | + | ||
375 | + // 执行具体的日志输出操作 | ||
376 | + char finalLogMessage[512]; | ||
377 | + memset(finalLogMessage, 0, sizeof(finalLogMessage)); | ||
378 | + snprintf(finalLogMessage, 612, "%s", logMessage); | ||
379 | + | ||
380 | + | ||
381 | + printf("%x ",finalLogMessage[0]); | ||
382 | + | ||
383 | + //写入日志 | ||
384 | + HexToLogFile(finalLogMessage); | ||
385 | +} |
1 | +/** | ||
2 | + ******************************************************************** | ||
3 | + * @file JZsdk_Logger.h | ||
4 | + * 用于给h150s logger显示文件 | ||
5 | + * | ||
6 | + ********************************************************************* | ||
7 | + */ | ||
8 | + | ||
9 | +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | ||
10 | +#ifndef JZSDK_LOGGER_H | ||
11 | +#define JZSDK_LOGGER_H | ||
12 | + | ||
13 | +/* Includes ------------------------------------------------------------------*/ | ||
14 | +#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | ||
15 | + | ||
16 | +#ifdef __cplusplus | ||
17 | +extern "C" { | ||
18 | +#endif | ||
19 | + | ||
20 | +/* Exported constants --------------------------------------------------------*/ | ||
21 | +/* 常亮定义*/ | ||
22 | + | ||
23 | + | ||
24 | +typedef enum { | ||
25 | + JZSDK_LOGGER_CONSOLE_LOG_LEVEL_ERROR = 0, /*!< Logger console error level. The method and level of the console are | ||
26 | + associated with each other. If the level of the registered console | ||
27 | + method is lower than this level, the level interface will not be | ||
28 | + printed successfully. */ | ||
29 | + JZSDK_LOGGER_CONSOLE_LOG_LEVEL_WARN = 1, /*!< Logger console warning level.The method and level of the console are | ||
30 | + associated with each other. If the level of the registered console | ||
31 | + method is lower than this level, the level interface will not be | ||
32 | + printed successfully. */ | ||
33 | + JZSDK_LOGGER_CONSOLE_LOG_LEVEL_INFO = 2, /*!< Logger console info level. The method and level of the console are | ||
34 | + associated with each other. If the level of the registered console | ||
35 | + method is lower than this level, the level interface will not be | ||
36 | + printed successfully. */ | ||
37 | + JZSDK_LOGGER_CONSOLE_LOG_LEVEL_DEBUG = 3, /*!< Logger console debug level. The method and level of the console are | ||
38 | + associated with each other. If the level of the registered console | ||
39 | + method is lower than this level, the level interface will not be | ||
40 | + printed successfully. */ | ||
41 | +} E_JZsdkConsoleLogLevel; | ||
42 | +/* Exported types ------------------------------------------------------------*/ | ||
43 | + | ||
44 | + | ||
45 | +/* Exported functions --------------------------------------------------------*/ | ||
46 | +void JZsdk_UserLogOutput(E_JZsdkConsoleLogLevel level, const char *fmt, ...); | ||
47 | +T_JZsdkReturnCode JZsdk_LoggerInit(); | ||
48 | +void JZsdk_User_OutputHex(E_JZsdkConsoleLogLevel level, const char *fmt, ...); | ||
49 | + | ||
50 | +/* Exported constants --------------------------------------------------------*/ | ||
51 | +#define JZSDK_LOG_DEBUG(fmt, ...) \ | ||
52 | + JZsdk_UserLogOutput(JZSDK_LOGGER_CONSOLE_LOG_LEVEL_DEBUG, "[%s:%d) " fmt, __FUNCTION__, __LINE__ , ##__VA_ARGS__) | ||
53 | +#define JZSDK_LOG_INFO(fmt, ...) \ | ||
54 | + JZsdk_UserLogOutput(JZSDK_LOGGER_CONSOLE_LOG_LEVEL_INFO, "[%s:%d) " fmt, __FUNCTION__, __LINE__ , ##__VA_ARGS__) | ||
55 | +#define JZSDK_LOG_WARN(fmt, ...) \ | ||
56 | + JZsdk_UserLogOutput(JZSDK_LOGGER_CONSOLE_LOG_LEVEL_WARN, "[%s:%d) " fmt, __FUNCTION__, __LINE__ , ##__VA_ARGS__) | ||
57 | +#define JZSDK_LOG_ERROR(fmt, ...) \ | ||
58 | + JZsdk_UserLogOutput(JZSDK_LOGGER_CONSOLE_LOG_LEVEL_ERROR, "[%s:%d) " fmt, __FUNCTION__, __LINE__ , ##__VA_ARGS__) | ||
59 | +#define JZSDK_LOG_OUTPUTHEX(fmt, ...) \ | ||
60 | + JZsdk_User_OutputHex(JZSDK_LOGGER_CONSOLE_LOG_LEVEL_INFO, "" fmt , ##__VA_ARGS__) | ||
61 | + | ||
62 | + | ||
63 | +#ifdef __cplusplus | ||
64 | +} | ||
65 | +#endif | ||
66 | + | ||
67 | +#endif | ||
68 | +/************************ (C) COPYRIGHT JZSDK Innovations *******END OF FILE******/ |
1 | +/** | ||
2 | + ******************************************************************** | ||
3 | + * @file JZsdk_FS_Standards.h | ||
4 | + * 用于规范文件名及长度 | ||
5 | + * | ||
6 | + ********************************************************************* | ||
7 | + */ | ||
8 | + | ||
9 | +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | ||
10 | +#ifndef JZSDK_FS_STANDARDS_H | ||
11 | +#define JZSDK_FS_STANDARDS_H | ||
12 | + | ||
13 | +#define JZSDK_FILENAME_SIZE (128) //文件名最大长度128 | ||
14 | +#define JZSDK_CMD_SIZE (256) //cmd指令最大长度 | ||
15 | + | ||
16 | + | ||
17 | +#endif |
1 | +#include <stdio.h> | ||
2 | +#include "JZsdk_FileSystm.h" | ||
3 | +#include <stdlib.h> | ||
4 | +#include <stdbool.h> | ||
5 | +#include <string.h> | ||
6 | +#include <unistd.h> | ||
7 | +#include <sys/types.h> | ||
8 | +#include <sys/stat.h> | ||
9 | +#include "JZsdkLib.h" | ||
10 | +#include <dirent.h> | ||
11 | +#include <errno.h> | ||
12 | + | ||
13 | +/* | ||
14 | +* 用于运行指令 | ||
15 | +* | ||
16 | +*/ | ||
17 | +T_JZsdkReturnCode JZsdk_RunSystemCmd(char *systemCmd) | ||
18 | +{ | ||
19 | + //FILE *fp; | ||
20 | + | ||
21 | + //printf("JZsdk_RunSystemCmd:%s\n",systemCmd); | ||
22 | + | ||
23 | + // fp = popen(systemCmd, "r"); | ||
24 | + // if (fp == NULL) { | ||
25 | + // return -1; | ||
26 | + // } | ||
27 | + | ||
28 | + int status = system(systemCmd); | ||
29 | + if (status == -1 || WIFEXITED(status) == false) { | ||
30 | + printf("Call %s error, status = %d\n", systemCmd, status); | ||
31 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
32 | + } | ||
33 | + | ||
34 | + if (WEXITSTATUS(status) == 0) { | ||
35 | + JZSDK_LOG_DEBUG("指令执行成功%s\n",systemCmd); | ||
36 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
37 | + } | ||
38 | + else { | ||
39 | + JZSDK_LOG_ERROR("指令执行失败Exit status is = %d", WEXITSTATUS(status)); | ||
40 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
41 | + } | ||
42 | + //pclose(fp); | ||
43 | + | ||
44 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
45 | +} | ||
46 | + | ||
47 | +/* | ||
48 | + | ||
49 | + 运行命令 并读取返回值 | ||
50 | + | ||
51 | +*/ | ||
52 | +// FILE* JZsdk_RunSystemCmd_ReturnFilePointer(char *systemCmd) | ||
53 | +// { | ||
54 | +// FILE *fp; | ||
55 | + | ||
56 | +// fp = popen(systemCmd, "r"); | ||
57 | + | ||
58 | +// pclose(fp); | ||
59 | + | ||
60 | +// return fp; | ||
61 | +// } | ||
62 | + | ||
63 | + | ||
64 | +/********************************** | ||
65 | + * | ||
66 | + * 创建一个文件夹 | ||
67 | + 函数名:JZsdk_check_file_exists | ||
68 | + 参数:文件路径 | ||
69 | + 返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示文件存在, | ||
70 | + JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示文件不存在 | ||
71 | + * *******************************/ | ||
72 | +T_JZsdkReturnCode JZsdk_Osal_Mkdir(const char *filePath) | ||
73 | +{ | ||
74 | + int32_t ret; | ||
75 | + | ||
76 | + if (filePath == NULL) { | ||
77 | + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | ||
78 | + } | ||
79 | + | ||
80 | + ret = mkdir(filePath, S_IRWXU); | ||
81 | + if (ret < 0) { | ||
82 | + switch (errno) { | ||
83 | + case EACCES: | ||
84 | + JZSDK_LOG_ERROR("Permission denied\n"); | ||
85 | + break; | ||
86 | + case EEXIST: | ||
87 | + JZSDK_LOG_ERROR("Directory already exists\n"); | ||
88 | + break; | ||
89 | + case ENOENT: | ||
90 | + JZSDK_LOG_ERROR("A component of the path does not exist or is a dangling symbolic link\n"); | ||
91 | + break; | ||
92 | + case ENOMEM: | ||
93 | + JZSDK_LOG_ERROR("Not enough memory\n"); | ||
94 | + break; | ||
95 | + case ENOTDIR: | ||
96 | + JZSDK_LOG_ERROR("A component of the path prefix is not a directory\n"); | ||
97 | + break; | ||
98 | + case EROFS: | ||
99 | + JZSDK_LOG_ERROR("The named file resides on a read-only file system\n"); | ||
100 | + break; | ||
101 | + default: | ||
102 | + JZSDK_LOG_ERROR("Unknown error %d\n", errno); | ||
103 | + } | ||
104 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
105 | + } | ||
106 | + | ||
107 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
108 | +} | ||
109 | + | ||
110 | + | ||
111 | +/********************************** | ||
112 | + * | ||
113 | + * 文件是否存在判断函数 | ||
114 | +* 判断文件是否存在 | ||
115 | + 函数名:JZsdk_check_file_exists | ||
116 | + 参数:文件路径 | ||
117 | + 返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示文件存在, | ||
118 | + JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示文件不存在 | ||
119 | + * *******************************/ | ||
120 | +T_JZsdkReturnCode JZsdk_check_file_exists(const char* file_path) | ||
121 | +{ | ||
122 | + if (access(file_path, F_OK) == 0) | ||
123 | + { | ||
124 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
125 | + } | ||
126 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
127 | +} | ||
128 | + | ||
129 | +/********************************** | ||
130 | + * | ||
131 | + * 文件夹是否存在判断函数 | ||
132 | +* 判断文件是否存在 | ||
133 | + 函数名:JZsdk_check_file_exists | ||
134 | + 参数:文件路径 | ||
135 | + 返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示文件存在, | ||
136 | + JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示文件不存在 | ||
137 | + * *******************************/ | ||
138 | +T_JZsdkReturnCode JZsdk_check_directory_exists_posix(const char* directory_path) | ||
139 | +{ | ||
140 | + struct stat st; | ||
141 | + if (stat(directory_path, &st) == 0 && S_ISDIR(st.st_mode)) | ||
142 | + { | ||
143 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
144 | + } | ||
145 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
146 | +} | ||
147 | + | ||
148 | +/********************************** | ||
149 | + * | ||
150 | + * 创建新的文件 | ||
151 | + 函数名:JZsdk_check_file_exists | ||
152 | + 参数:文件路径 | ||
153 | + 返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示文件存在, | ||
154 | + JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示文件不存在 | ||
155 | + * *******************************/ | ||
156 | +T_JZsdkReturnCode JZsdk_create_file(const char* file_path) | ||
157 | +{ | ||
158 | + FILE* file = fopen(file_path, "w"); | ||
159 | + if (file != NULL) | ||
160 | + { | ||
161 | + fclose(file); | ||
162 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
163 | + } | ||
164 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
165 | +} | ||
166 | + | ||
167 | +/********************************** | ||
168 | + * | ||
169 | + * 删除文件 | ||
170 | + 函数名:JZsdk_delete_file | ||
171 | + 参数:文件路径 | ||
172 | + 返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示文件已经不存在 | ||
173 | + JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示文件仍然存在 | ||
174 | + * *******************************/ | ||
175 | +T_JZsdkReturnCode JZsdk_delete_file(const char* file_path) | ||
176 | +{ | ||
177 | + int remove_result = remove(file_path); | ||
178 | + if (remove_result != 0) { | ||
179 | + // 删除失败,返回错误 | ||
180 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
181 | + } | ||
182 | + | ||
183 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; // 删除成功 | ||
184 | +} | ||
185 | + | ||
186 | +/********************************** | ||
187 | + * | ||
188 | + * 复制文件 | ||
189 | + 函数名:JZsdk_copy_file | ||
190 | + 参数:文件路径 | ||
191 | + 返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示文件已经不存在 | ||
192 | + JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示文件仍然存在 | ||
193 | + * *******************************/ | ||
194 | +T_JZsdkReturnCode JZsdk_copy_file_byC(const char* source_path, const char* dest_path) | ||
195 | +{ | ||
196 | + FILE *source_file = fopen(source_path, "rb"); // 以二进制读模式打开源文件 | ||
197 | + if (source_file == NULL) { | ||
198 | + // 无法打开源文件 | ||
199 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
200 | + } | ||
201 | + | ||
202 | + FILE *dest_file = fopen(dest_path, "wb"); // 以二进制写模式打开目标文件 | ||
203 | + if (dest_file == NULL) { | ||
204 | + // 无法创建或打开目标文件 | ||
205 | + fclose(source_file); // 关闭已打开的源文件 | ||
206 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
207 | + } | ||
208 | + | ||
209 | + // 分配缓冲区用于读取和写入文件 | ||
210 | + char buffer[4096]; // 缓冲区大小可以根据需要调整 | ||
211 | + size_t bytes_read; | ||
212 | + | ||
213 | + // 复制文件内容 | ||
214 | + while ((bytes_read = fread(buffer, 1, sizeof(buffer), source_file)) > 0) { | ||
215 | + if (fwrite(buffer, 1, bytes_read, dest_file) != bytes_read) { | ||
216 | + // 写入目标文件失败 | ||
217 | + fclose(source_file); // 关闭已打开的源文件 | ||
218 | + fclose(dest_file); // 关闭已打开的目标文件 | ||
219 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
220 | + } | ||
221 | + } | ||
222 | + | ||
223 | + // 关闭文件 | ||
224 | + fclose(source_file); | ||
225 | + fclose(dest_file); | ||
226 | + | ||
227 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; // 复制成功 | ||
228 | +} | ||
229 | + | ||
230 | + | ||
231 | +// 删除指定路径下的所有文件(不包括子文件夹) | ||
232 | +// 注意:这个函数不会删除子文件夹,如果您需要删除子文件夹,请添加递归逻辑。 | ||
233 | +T_JZsdkReturnCode JZsdk_delete_files_in_directory(const char* directory_path) | ||
234 | +{ | ||
235 | + DIR* dir; | ||
236 | + struct dirent* ent; | ||
237 | + char file_path[1024]; // 假设文件路径不会超过这个长度 | ||
238 | + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
239 | + | ||
240 | + if ((dir = opendir(directory_path)) != NULL) { | ||
241 | + while ((ent = readdir(dir)) != NULL) { | ||
242 | + // 跳过目录条目 '.' 和 '..' | ||
243 | + if (strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0) { | ||
244 | + continue; | ||
245 | + } | ||
246 | + | ||
247 | + // 构建文件的完整路径 | ||
248 | + snprintf(file_path, sizeof(file_path), "%s/%s", directory_path, ent->d_name); | ||
249 | + | ||
250 | + // 如果是文件,则删除它 | ||
251 | + if (remove(file_path) != 0) { | ||
252 | + perror("remove"); // 打印错误信息 | ||
253 | + ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
254 | + break; // 或者您可以继续并尝试删除其他文件 | ||
255 | + } | ||
256 | + } | ||
257 | + closedir(dir); | ||
258 | + } else { | ||
259 | + perror("opendir"); // 打印错误信息 | ||
260 | + ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
261 | + } | ||
262 | + | ||
263 | + return ret; | ||
264 | +} | ||
265 | + | ||
266 | +/********************************** | ||
267 | + * | ||
268 | + * 创建硬链接的函数 | ||
269 | + 函数名:JZsdk_create_hardlink | ||
270 | + 参数:文件路径 链接路径 | ||
271 | + 返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示成功 | ||
272 | + JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示失败 | ||
273 | + * *******************************/ | ||
274 | +T_JZsdkReturnCode JZsdk_create_hardlink(const char* target_path, const char* link_path) | ||
275 | +{ | ||
276 | + int result = link(target_path, link_path); | ||
277 | + if (result == -1) { | ||
278 | + JZSDK_LOG_ERROR("hardlink"); // 打印错误信息 | ||
279 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; // 返回错误代码 | ||
280 | + } | ||
281 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; // 返回成功代码 | ||
282 | +} | ||
283 | + | ||
284 | + | ||
285 | +/********************************** | ||
286 | + * | ||
287 | + * 字符串后缀对比 | ||
288 | + 函数名:JZsdk_strings_suffix_comparison | ||
289 | + 参数:字符串,后缀名 | ||
290 | + 返回值: | ||
291 | + JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示后缀正确 | ||
292 | + JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示后缀错误,或是长度不对 | ||
293 | + * *******************************/ | ||
294 | +T_JZsdkReturnCode JZsdk_strings_suffix_comparison_onlyStr(const unsigned char* Strings, const unsigned char *suffix) | ||
295 | +{ | ||
296 | + if (Strings == NULL || suffix == NULL) | ||
297 | + { | ||
298 | + JZSDK_LOG_ERROR("字符串后缀对比输入错误"); | ||
299 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; // 如果指针为NULL,返回失败 | ||
300 | + } | ||
301 | + | ||
302 | + int suffix_len = (int)strlen((const char*)suffix); // 强制转换为const char*以确保兼容性 | ||
303 | + int Strings_len = (int)strlen((const char*)Strings); // 强制转换为const char*以确保兼容性 | ||
304 | + | ||
305 | + if (Strings_len <= suffix_len) | ||
306 | + { | ||
307 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; // 如果字符串长度小于后缀长度,返回失败 | ||
308 | + } | ||
309 | + | ||
310 | + // 确保不会越界,并且字符串是以空字符结尾的 | ||
311 | + if (memcmp(Strings + Strings_len - suffix_len, suffix, suffix_len) == 0) | ||
312 | + { | ||
313 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
314 | + } | ||
315 | + else | ||
316 | + { | ||
317 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
318 | + } | ||
319 | +} | ||
320 | + | ||
321 | + | ||
322 | +/********************************** | ||
323 | + * | ||
324 | + * 字符串后缀对比 | ||
325 | + 函数名:JZsdk_strings_suffix_comparison | ||
326 | + 参数:字符串, 字符串长度,后缀名 | ||
327 | + 返回值: | ||
328 | + JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示后缀正确 | ||
329 | + JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示后缀错误,或是长度不对 | ||
330 | + * *******************************/ | ||
331 | +T_JZsdkReturnCode JZsdk_strings_suffix_comparison_withLen(const unsigned char* Strings, int Strings_len, const unsigned char *suffix) | ||
332 | +{ | ||
333 | + if (Strings == NULL || suffix == NULL) | ||
334 | + { | ||
335 | + JZSDK_LOG_ERROR("字符串后缀对比输入错误"); | ||
336 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; // 如果指针为NULL,返回失败 | ||
337 | + } | ||
338 | + | ||
339 | + int suffix_len = (int)strlen((const char*)suffix); // 强制转换为const char*以确保兼容性 | ||
340 | + | ||
341 | + if (Strings_len <= suffix_len) | ||
342 | + { | ||
343 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; // 如果字符串长度小于后缀长度,返回失败 | ||
344 | + } | ||
345 | + | ||
346 | + // 确保不会越界,并且字符串是以空字符结尾的 | ||
347 | + if (memcmp(Strings + Strings_len - suffix_len, suffix, suffix_len) == 0) | ||
348 | + { | ||
349 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
350 | + } | ||
351 | + else | ||
352 | + { | ||
353 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
354 | + } | ||
355 | +} | ||
356 | + | ||
357 | + | ||
358 | + | ||
359 | +/********************************** | ||
360 | + * | ||
361 | + * 读取文件大小 | ||
362 | + 函数名:JZsdk_Fs_ReadFileSize | ||
363 | + 参数:字符串, 字符串长度,后缀名 | ||
364 | + 返回值: | ||
365 | + JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS读取正确 | ||
366 | + JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE读取错误 | ||
367 | + * *******************************/ | ||
368 | +T_JZsdkReturnCode JZsdk_Fs_ReadFileSize(const unsigned char* FilePath, int *FileSize) | ||
369 | +{ | ||
370 | + struct stat statbuf; | ||
371 | + int result = stat(FilePath, &statbuf); | ||
372 | + | ||
373 | + if (result == -1) { | ||
374 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
375 | + } | ||
376 | + | ||
377 | + *FileSize = statbuf.st_size; | ||
378 | + | ||
379 | + if (*FileSize == 0) | ||
380 | + { | ||
381 | + // 文件大小为0,可能是空文件 | ||
382 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
383 | + } | ||
384 | + | ||
385 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
386 | +} |
1 | +/** | ||
2 | + ******************************************************************** | ||
3 | + * @file JZsdk_FileSystem.h | ||
4 | + * 用于文件系统操作 | ||
5 | + * | ||
6 | + ********************************************************************* | ||
7 | + */ | ||
8 | + | ||
9 | +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | ||
10 | +#ifndef JZSDK_FILESYSTEM_H | ||
11 | +#define JZSDK_FILESYSTEM_H | ||
12 | + | ||
13 | +/* Includes ------------------------------------------------------------------*/ | ||
14 | +#include "../JZsdk_Code/JZsdk_Code.h" | ||
15 | +#include "./JZsdk_FS_Standards.h" | ||
16 | + | ||
17 | +#ifdef __cplusplus | ||
18 | +extern "C" { | ||
19 | +#endif | ||
20 | + | ||
21 | +/* Exported constants --------------------------------------------------------*/ | ||
22 | +/* 常亮定义*/ | ||
23 | + | ||
24 | +/* Exported types ------------------------------------------------------------*/ | ||
25 | + | ||
26 | + | ||
27 | +/* Exported functions --------------------------------------------------------*/ | ||
28 | +T_JZsdkReturnCode JZsdk_RunSystemCmd(char *systemCmd); | ||
29 | +T_JZsdkReturnCode JZsdk_check_file_exists(const char* file_path) ; | ||
30 | +T_JZsdkReturnCode JZsdk_create_file(const char* file_path) ; | ||
31 | +T_JZsdkReturnCode JZsdk_delete_file(const char* file_path) ; | ||
32 | +T_JZsdkReturnCode JZsdk_strings_suffix_comparison_onlyStr(const unsigned char* Strings, const unsigned char *suffix) ; | ||
33 | +T_JZsdkReturnCode JZsdk_strings_suffix_comparison_withLen(const unsigned char* Strings, int Strings_len, const unsigned char *suffix) ; | ||
34 | +T_JZsdkReturnCode JZsdk_Osal_Mkdir(const char *filePath); | ||
35 | +T_JZsdkReturnCode JZsdk_delete_files_in_directory(const char* directory_path); | ||
36 | +T_JZsdkReturnCode JZsdk_create_hardlink(const char* target_path, const char* link_path); | ||
37 | +T_JZsdkReturnCode JZsdk_check_directory_exists_posix(const char* directory_path); | ||
38 | +T_JZsdkReturnCode JZsdk_Fs_ReadFileSize(const unsigned char* FilePath, int *FileSize); | ||
39 | +T_JZsdkReturnCode JZsdk_copy_file_byC(const char* source_path, const char* dest_path); | ||
40 | + | ||
41 | +#ifdef __cplusplus | ||
42 | +} | ||
43 | +#endif | ||
44 | + | ||
45 | +#endif | ||
46 | +/************************ (C) COPYRIGHT DJI Innovations *******END OF FILE******/ |
1 | +#include <stdio.h> | ||
2 | +#include <stdlib.h> | ||
3 | +#include <stdbool.h> | ||
4 | +#include <string.h> | ||
5 | + | ||
6 | +#include "JZsdkLib.h" | ||
7 | + | ||
8 | + | ||
9 | + | ||
10 | +/********************************** | ||
11 | + * | ||
12 | + * 注册内存 | ||
13 | + 函数名:JZsdk_Malloc | ||
14 | + 参数:指针,注册大小 | ||
15 | + 返回值: | ||
16 | + JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS正确 | ||
17 | + JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER 错误 | ||
18 | + * *******************************/ | ||
19 | +T_JZsdkReturnCode JZsdk_Malloc(void **ptr, unsigned int size) | ||
20 | +{ | ||
21 | + if (size == 0) | ||
22 | + { | ||
23 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
24 | + } | ||
25 | + | ||
26 | + *ptr = malloc(size); | ||
27 | + | ||
28 | + if (*ptr == NULL) | ||
29 | + { | ||
30 | + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | ||
31 | + } | ||
32 | + | ||
33 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
34 | +} | ||
35 | + | ||
36 | + | ||
37 | +/********************************** | ||
38 | + * | ||
39 | + * 释放内存 | ||
40 | + 函数名:JZsdk_Free | ||
41 | + 参数:指针,注册大小 | ||
42 | + 返回值: | ||
43 | + JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS正确 | ||
44 | + JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER 错误 | ||
45 | + * *******************************/ | ||
46 | +T_JZsdkReturnCode JZsdk_Free(void *ptr) | ||
47 | +{ | ||
48 | + if (ptr == NULL) | ||
49 | + { | ||
50 | + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | ||
51 | + } | ||
52 | + | ||
53 | + free(ptr); | ||
54 | + ptr = NULL; | ||
55 | + | ||
56 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
57 | +} |
1 | +/** | ||
2 | + ******************************************************************** | ||
3 | + * @file JZsdk_MemoryAdapter.h | ||
4 | + * 用于内存管理 | ||
5 | + * | ||
6 | + ********************************************************************* | ||
7 | + */ | ||
8 | + | ||
9 | +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | ||
10 | +#ifndef JZSDK_MEMORY_ADAPTER_H | ||
11 | +#define JZSDK_MEMORY_ADAPTER_H | ||
12 | + | ||
13 | +/* Includes ------------------------------------------------------------------*/ | ||
14 | +#include "../JZsdk_Code/JZsdk_Code.h" | ||
15 | + | ||
16 | +#ifdef __cplusplus | ||
17 | +extern "C" { | ||
18 | +#endif | ||
19 | + | ||
20 | +/* Exported constants --------------------------------------------------------*/ | ||
21 | +/* 常亮定义*/ | ||
22 | + | ||
23 | +/* Exported types ------------------------------------------------------------*/ | ||
24 | + | ||
25 | + | ||
26 | +/* Exported functions --------------------------------------------------------*/ | ||
27 | +T_JZsdkReturnCode JZsdk_Malloc(void **ptr, unsigned int size); | ||
28 | +T_JZsdkReturnCode JZsdk_Free(void *ptr); | ||
29 | + | ||
30 | +#ifdef __cplusplus | ||
31 | +} | ||
32 | +#endif | ||
33 | + | ||
34 | +#endif | ||
35 | +/************************ (C) COPYRIGHT DJI Innovations *******END OF FILE******/ |
-
请 注册 或 登录 后发表评论