作者 潘浩彬

合并分支 'dev' 到 'master'

Dev



查看合并请求 !16
正在显示 35 个修改的文件 包含 2580 行增加523 行删除

要显示太多修改。

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

@@ -106,7 +106,23 @@ @@ -106,7 +106,23 @@
106 "jzsdk_semaphore.h": "c", 106 "jzsdk_semaphore.h": "c",
107 "jzsdk_filesystm.h": "c", 107 "jzsdk_filesystm.h": "c",
108 "jzsdk_memoryadapter.h": "c", 108 "jzsdk_memoryadapter.h": "c",
109 - "jzsdk_errorcodedef.h": "c" 109 + "jzsdk_errorcodedef.h": "c",
  110 + "jzsdk_timer.h": "c",
  111 + "jzsdk_framecomparsion_6aframe.h": "c",
  112 + "jzsdk_uart.h": "c",
  113 + "audiomange.h": "c",
  114 + "pcmaudiofile.h": "c",
  115 + "megaphone_playback.h": "c",
  116 + "audiomange_param.h": "c",
  117 + "jzsdk_platform.h": "c",
  118 + "presettask.h": "c",
  119 + "volumelimit.h": "c",
  120 + "megaphone_realtimemp2.h": "c",
  121 + "jzirc_lib.h": "c",
  122 + "hardwareinfo.h": "c",
  123 + "jzsdk_attributedef.h": "c",
  124 + "msp_types.h": "c",
  125 + "attribute.h": "c"
110 }, 126 },
111 "Codegeex.GenerationPreference": "automatic", 127 "Codegeex.GenerationPreference": "automatic",
112 "C_Cpp.dimInactiveRegions": false 128 "C_Cpp.dimInactiveRegions": false
1 # 编译链的配置 1 # 编译链的配置
2 2
3 #1、编译链与设备类型的选择 3 #1、编译链与设备类型的选择
4 -set(DEVICE_NAME JZ_H10) 4 +set(DEVICE_NAME JZ_H1T)
5 #上一行为禁止修改行 5 #上一行为禁止修改行
6 6
7 message("**************************JZSDK构建编译开始***************************\n") 7 message("**************************JZSDK构建编译开始***************************\n")
@@ -20,7 +20,10 @@ extern "C" { @@ -20,7 +20,10 @@ extern "C" {
20 /* 常亮定义*/ 20 /* 常亮定义*/
21 21
22 #include "./JZsdk_typedef/JZsdk_typedef.h" 22 #include "./JZsdk_typedef/JZsdk_typedef.h"
  23 +#include "./JZsdk_typedef/JZsdk_AttributeDef.h"
  24 +
23 #include "./JZsdk_ReturnCode/JZsdk_ReturnCode.h" 25 #include "./JZsdk_ReturnCode/JZsdk_ReturnCode.h"
  26 +#include "./JZsdk_Platform/JZsdk_Platform.h"
24 27
25 28
26 #include "./JZsdk_InsCode.h" 29 #include "./JZsdk_InsCode.h"
@@ -23,21 +23,28 @@ extern "C" @@ -23,21 +23,28 @@ extern "C"
23 /* Exported types ------------------------------------------------------------*/ 23 /* Exported types ------------------------------------------------------------*/
24 typedef enum JZ_DEVICE_PORT_TYPE 24 typedef enum JZ_DEVICE_PORT_TYPE
25 { 25 {
26 - DEVICE_PSDK = 0x1000, // psdk功能  
27 - UART_4G = 0x1001, // 4G功能  
28 - UART_DEV_1 = 0x1002, // 1号设备功能  
29 - UART_DEV_2 = 0x1003, // 2号设备功能  
30 - UART_DEV_3 = 0x1004, // 3号设备功能  
31 - UART_DEV_4 = 0x1005, // 4号设备功能  
32 - UART_DEV_5 = 0x1006, // 5号设备功能  
33 -  
34 - UART_USB_1 = 0x1100, // usb设备  
35 - UART_USB_2 = 0x1101, // usb设备  
36 - UART_USB_3 = 0x1102, // usb设备  
37 - UART_USB_4 = 0x1103, // usb设备  
38 - UART_USB_5 = 0x1104, // usb设备  
39 -  
40 - HAL_DATA_TRANSMISSION = 0x1200, // hal定制的特殊数据传播 26 + DEVICE_PSDK = 0x0000, // psdk功能
  27 +
  28 + UART_4G = 0x0010, // 4G功能
  29 + UART_DEV_1 = 0x0011, // 1号设备功能
  30 + UART_DEV_2 = 0x0012, // 2号设备功能
  31 + UART_DEV_3 = 0x0013, // 3号设备功能
  32 + UART_DEV_4 = 0x0014, // 4号设备功能
  33 + UART_DEV_5 = 0x0015, // 5号设备功能
  34 +
  35 + USB_DEV_1 = 0x0020, // usb设备
  36 + USB_DEV_2 = 0x0021, // usb设备
  37 + USB_DEV_3 = 0x0022, // usb设备
  38 + USB_DEV_4 = 0x0023, // usb设备
  39 + USB_DEV_5 = 0x0024, // usb设备
  40 +
  41 + NET_DEV_1 = 0x0030, // 网络设备
  42 + NET_DEV_2 = 0x0031, // 网络设备
  43 + NET_DEV_3 = 0x0032, // 网络设备
  44 +
  45 + HAL_DATA_TRANSMISSION = 0x0040, // hal定制的特殊数据传播
  46 +
  47 + HAL_MAX = 0x0050, // hal最大值
41 48
42 COMBINE_DEVICE = 0x1998, // 组合设备 49 COMBINE_DEVICE = 0x1998, // 组合设备
43 NO_SPECIFIED = 0x1999, // 无制定设备 50 NO_SPECIFIED = 0x1999, // 无制定设备
@@ -34,6 +34,8 @@ typedef enum { @@ -34,6 +34,8 @@ typedef enum {
34 34
35 JZ_INSCODE_5AFRAME_FRAME_POWER_STATUS = 0x10000110, //电源状态设置 35 JZ_INSCODE_5AFRAME_FRAME_POWER_STATUS = 0x10000110, //电源状态设置
36 36
  37 + JZ_INSCODE_5AFRAME_PRESET_TASK = 0x10000120, //预置任务
  38 +
37 JZ_INSCODE_5AFRAME_REALTIMEMP2_START = 0x10000200, //开启实时MP2 39 JZ_INSCODE_5AFRAME_REALTIMEMP2_START = 0x10000200, //开启实时MP2
38 JZ_INSCODE_5AFRAME_REALTIMEMP2_UNLIMIT_TRANSMISSION = 0x10000201, //无限制传输实时MP2 40 JZ_INSCODE_5AFRAME_REALTIMEMP2_UNLIMIT_TRANSMISSION = 0x10000201, //无限制传输实时MP2
39 JZ_INSCODE_5AFRAME_REALTIMEMP2_STOP = 0x10000202, //结束实时MP2 41 JZ_INSCODE_5AFRAME_REALTIMEMP2_STOP = 0x10000202, //结束实时MP2
@@ -72,6 +74,8 @@ typedef enum { @@ -72,6 +74,8 @@ typedef enum {
72 JZ_INSCODE_5AFRAME_CHECKSTATUS_SOFTWAREVERSION = 0x10000625, //查询软件版本号 74 JZ_INSCODE_5AFRAME_CHECKSTATUS_SOFTWAREVERSION = 0x10000625, //查询软件版本号
73 JZ_INSCODE_5AFRAME_CHECKSTATUS_LOOPPLAY = 0x10000626, //查询是否打开循环 75 JZ_INSCODE_5AFRAME_CHECKSTATUS_LOOPPLAY = 0x10000626, //查询是否打开循环
74 JZ_INSCODE_5AFRAME_CHECKSTATUS_ADUIO_LOOP_INTERVAL = 0x10000639, //查询音频循环间隔 76 JZ_INSCODE_5AFRAME_CHECKSTATUS_ADUIO_LOOP_INTERVAL = 0x10000639, //查询音频循环间隔
  77 + JZ_INSCODE_5AFRAME_CHECKSTATUS_CURRENT_PLAYTIME = 0x10000640, //查询当前播放时间回调是否打开
  78 +
75 79
76 JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSTONE = 0x10000627, //查询音色 80 JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSTONE = 0x10000627, //查询音色
77 JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSSPEED = 0x10000628, //查询语速 81 JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSSPEED = 0x10000628, //查询语速
@@ -94,6 +98,9 @@ typedef enum { @@ -94,6 +98,9 @@ typedef enum {
94 JZ_INSCODE_5AFRAME_DELETE_AUDIO = 0x10000700, //删除音频 98 JZ_INSCODE_5AFRAME_DELETE_AUDIO = 0x10000700, //删除音频
95 JZ_INSCODE_5AFRAME_DELETE_VOICE_RECORD = 0x10000710, //删除录音 99 JZ_INSCODE_5AFRAME_DELETE_VOICE_RECORD = 0x10000710, //删除录音
96 JZ_INSCODE_5AFRAME_DELETE_VIDEO_RECORD = 0x10000720, //删除视频 100 JZ_INSCODE_5AFRAME_DELETE_VIDEO_RECORD = 0x10000720, //删除视频
  101 + JZ_INSCODE_5AFRAME_RENAME_AUDIO = 0x10000730, //重命名音频
  102 + JZ_INSCODE_5AFRAME_RENAME_VOICE_RECORD = 0x10000740, //重命名录音
  103 + JZ_INSCODE_5AFRAME_RENAME_VIDEO_RECORD = 0x10000750, //重命名视频
97 104
98 105
99 JZ_INSCODE_5AFRAME_TTS_SET_TONE = 0x10000801, //TTS设置音色 106 JZ_INSCODE_5AFRAME_TTS_SET_TONE = 0x10000801, //TTS设置音色
@@ -103,15 +110,25 @@ typedef enum { @@ -103,15 +110,25 @@ typedef enum {
103 JZ_INSCODE_5AFRAME_TTS_TRANS_STOP = 0x10000805, //TTS发送完毕 110 JZ_INSCODE_5AFRAME_TTS_TRANS_STOP = 0x10000805, //TTS发送完毕
104 JZ_INSCODE_5AFRAME_TTS_TRANS_LIMIT_TRANSMISSION = 0x10000806, //TTS正在定长接收 111 JZ_INSCODE_5AFRAME_TTS_TRANS_LIMIT_TRANSMISSION = 0x10000806, //TTS正在定长接收
105 112
106 - JZ_INSCODE_5AFRAME_OPUS_TRANS_START = 0x10000900, //opus传输开始  
107 - JZ_INSCODE_5AFRAME_OPUS_TRAN_UNLIMIT_TRANSMISSION = 0x10000901, //opus 无限制传输中 113 + JZ_INSCODE_5AFRAME_CURRENT_PLAY_TIME = 0x10004406, //设置播放回传
  114 +
  115 +
  116 + JZ_INSCODE_5AFRAME_OPUS_TRANS_START_1 = 0x10000900, //opus传输开始1型
  117 + JZ_INSCODE_5AFRAME_OPUS_TRANS_START_2 = 0x10000901, //opus传输开始2型
  118 + //JZ_INSCODE_5AFRAME_OPUS_TRAN_UNLIMIT_TRANSMISSION = 0x10000901, //opus 无限制传输中
108 JZ_INSCODE_5AFRAME_OPUS_TRANS_LIMIT_TRANSMISSION = 0x10000903, //opus传输中 119 JZ_INSCODE_5AFRAME_OPUS_TRANS_LIMIT_TRANSMISSION = 0x10000903, //opus传输中
109 120
110 JZ_INSCODE_5AFRAME_OPUS_TRANS_STOP = 0x10000902, //opus传输结束 121 JZ_INSCODE_5AFRAME_OPUS_TRANS_STOP = 0x10000902, //opus传输结束
111 JZ_INSCODE_5AFRAME_OPUS_TRANS_STOP_AND_CHECK = 0x10000904, //opus传输结束并校验 122 JZ_INSCODE_5AFRAME_OPUS_TRANS_STOP_AND_CHECK = 0x10000904, //opus传输结束并校验
112 123
  124 +
113 JZ_INSCODE_5AFRAME_OPUS_PLAY = 0x10000910, //opus播放 125 JZ_INSCODE_5AFRAME_OPUS_PLAY = 0x10000910, //opus播放
114 126
  127 + JZ_INSCODE_5AFRAME_PCM_PLAY = 0x10000920, //pcm播放
  128 +
  129 + JZ_INSCODE_5AFRAME_PCM_GETPCMLIST = 0x10000930, //获pcm列表
  130 +
  131 +
115 JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_START = 0x10000A00, //开启opus实时语音 132 JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_START = 0x10000A00, //开启opus实时语音
116 JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_UNLIMIT_TRANSMISSION = 0x10000A01, //无限制传输opus实时语音 133 JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_UNLIMIT_TRANSMISSION = 0x10000A01, //无限制传输opus实时语音
117 JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_STOP = 0x10000A02, //结束opus实时语音 134 JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_STOP = 0x10000A02, //结束opus实时语音
@@ -138,6 +155,12 @@ typedef enum { @@ -138,6 +155,12 @@ typedef enum {
138 JZ_INSCODE_5AFRAME_OUTPUTPOWER_CONTROL = 0x10001000, //对外供电开关 155 JZ_INSCODE_5AFRAME_OUTPUTPOWER_CONTROL = 0x10001000, //对外供电开关
139 JZ_INSCODE_5AFRAME_CHECKSTATUS_OUTPUTPOWER = 0x10001001, //对外供电查询 156 JZ_INSCODE_5AFRAME_CHECKSTATUS_OUTPUTPOWER = 0x10001001, //对外供电查询
140 157
  158 + JZ_INSCODE_5AFRAME_UPGRADE_PERPARE = 0x10001100, //升级准备
  159 + JZ_INSCODE_5AFRAME_UPGRADE_SEND_CHECKCODE = 0x10001101, //升级发送校验码
  160 + JZ_INSCODE_5AFRAME_UPGRADE_STRAT = 0x10001102, //升级传输开始
  161 + JZ_INSCODE_5AFRAME_UPGRADE_TRANS = 0x10001103, //升级传输数据
  162 + JZ_INSCODE_5AFRAME_UPGRADE_END = 0x10001104, //升级传输结束
  163 +
141 //5B类帧 164 //5B类帧
142 JZ_INSCODE_5BFRAME_FRAME = 0x10004000, //发送帧 165 JZ_INSCODE_5BFRAME_FRAME = 0x10004000, //发送帧
143 166
@@ -148,6 +171,8 @@ typedef enum { @@ -148,6 +171,8 @@ typedef enum {
148 JZ_INSCODE_5BFRAME_ALL_SERIAL_NUMBER = 0x10004105, //全序列号查询 171 JZ_INSCODE_5BFRAME_ALL_SERIAL_NUMBER = 0x10004105, //全序列号查询
149 JZ_INSCODE_5BFRAME_DEVICE_MESSAGE = 0x10004107, //设备信息 172 JZ_INSCODE_5BFRAME_DEVICE_MESSAGE = 0x10004107, //设备信息
150 173
  174 + JZ_INSCODE_5BFRAME_PRESET_TASK = 0x10004120, //预置任务
  175 +
151 JZ_INSCODE_5BFRAME_SUCESS = 0x10004200, //操作成功 176 JZ_INSCODE_5BFRAME_SUCESS = 0x10004200, //操作成功
152 JZ_INSCODE_5BFRAME_FILE_CHECK_DEFEAT = 0x10004201, //校验失败 177 JZ_INSCODE_5BFRAME_FILE_CHECK_DEFEAT = 0x10004201, //校验失败
153 JZ_INSCODE_5BFRAME_FILE_DECODE_DEFEAT = 0x10004202, //解码失败 178 JZ_INSCODE_5BFRAME_FILE_DECODE_DEFEAT = 0x10004202, //解码失败
@@ -168,7 +193,8 @@ typedef enum { @@ -168,7 +193,8 @@ typedef enum {
168 JZ_INSCODE_5BFRAME_TTS_SPEED = 0x10004403, //发送tts语速 193 JZ_INSCODE_5BFRAME_TTS_SPEED = 0x10004403, //发送tts语速
169 JZ_INSCODE_5BFRAME_AUDIO_PLAYFILENAME = 0x10004404, //当前播放的音频名字 194 JZ_INSCODE_5BFRAME_AUDIO_PLAYFILENAME = 0x10004404, //当前播放的音频名字
170 JZ_INSCODE_5BFRAME_CHECKSTATUS_AUDIO_DETAIL_MESSAGE = 0x10004405, //查询音频详细信息 195 JZ_INSCODE_5BFRAME_CHECKSTATUS_AUDIO_DETAIL_MESSAGE = 0x10004405, //查询音频详细信息
171 - 196 + JZ_INSCODE_5BFRAME_CURRENT_PLAY_TIME = 0x10004406, //当前播放时间
  197 + JZ_INSCODE_5BFRAME_CHECKSTATUS_CURRENT_PLAYTIME = 0x10004407, //查询当前播放时间回调是否打开
172 198
173 199
174 JZ_INSCODE_5BFRAME_GIMBAL_PITCH = 0x10004500, //云台俯仰角度 200 JZ_INSCODE_5BFRAME_GIMBAL_PITCH = 0x10004500, //云台俯仰角度
@@ -195,8 +221,18 @@ typedef enum { @@ -195,8 +221,18 @@ typedef enum {
195 JZ_INSCODE_5BFRAME_CHECKSTATUS_OUTPUTPOWER = 0x10004900, //对外供电查询 221 JZ_INSCODE_5BFRAME_CHECKSTATUS_OUTPUTPOWER = 0x10004900, //对外供电查询
196 222
197 JZ_INSCODE_5BFRAME_OPUS_DECODE_STATUS = 0x10005000, //opus解码状态 223 JZ_INSCODE_5BFRAME_OPUS_DECODE_STATUS = 0x10005000, //opus解码状态
198 - JZ_INSCODE_5BFRAME_OPUS_TRANS_STOP_AND_CHECK = 0x10000904, //opus传输结束并校验  
199 - 224 + JZ_INSCODE_5BFRAME_OPUS_TRANS_STOP_AND_CHECK = 0x10005904, //opus传输结束并校验
  225 +
  226 + JZ_INSCODE_5BFRAME_OPUSLIST_START = 0x10005910, //开启发送opus列表帧
  227 + JZ_INSCODE_5BFRAME_OPUSLIST_TRANS = 0x10005911, //传输opus列表帧
  228 + JZ_INSCODE_5BFRAME_OPUSLIST_END = 0x10005912, //传输opus列表帧
  229 +
  230 + JZ_INSCODE_5BFRAME_UPGRADE_PERPARE = 0x10001100, //升级准备
  231 + JZ_INSCODE_5BFRAME_UPGRADE_SEND_CHECKCODE = 0x10001101, //升级发送校验码
  232 + JZ_INSCODE_5BFRAME_UPGRADE_STRAT = 0x10001102, //升级传输开始
  233 + JZ_INSCODE_5BFRAME_UPGRADE_TRANS = 0x10001103, //升级传输数据
  234 + JZ_INSCODE_5BFRAME_UPGRADE_END = 0x10001104, //升级传输结束
  235 + JZ_INSCODE_5BFRAME_UPGRADE_CHECKRESULT = 0x10001105, //升级校验结果
200 236
201 //6A类 237 //6A类
202 JZ_INSCODE_6AFRAME_FRAME = 0x10008000, //发送帧 238 JZ_INSCODE_6AFRAME_FRAME = 0x10008000, //发送帧
1 /** 1 /**
2 ******************************************************************** 2 ********************************************************************
3 - * @file JZsdk_typedef.h 3 + * @file JZsdk_Platform.h
4 * 用于记录各类码的表 4 * 用于记录各类码的表
5 * 5 *
6 ********************************************************************* 6 *********************************************************************
7 */ 7 */
8 8
9 /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ 9 /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
10 -#ifndef JZSDK_TYPEDEF_H  
11 -#define JZSDK_TYPEDEF_H 10 +#ifndef JZSDK_PLATFORM_H
  11 +#define JZSDK_PLATFORM_H
12 12
13 /* Includes ------------------------------------------------------------------*/ 13 /* Includes ------------------------------------------------------------------*/
14 #include "../JZsdk_typedef/JZsdk_typedef.h" 14 #include "../JZsdk_typedef/JZsdk_typedef.h"
@@ -21,6 +21,29 @@ extern "C" { @@ -21,6 +21,29 @@ extern "C" {
21 /* Exported constants --------------------------------------------------------*/ 21 /* Exported constants --------------------------------------------------------*/
22 /* 常亮定义*/ 22 /* 常亮定义*/
23 23
  24 +#define JZSDK_FILE_NAME_SIZE_MAX (128) //文件名最大长度128
  25 +#define JZSDK_FILE_PATH_SIZE_MAX (256) //文件路径最大长度256
  26 +#define JZSDK_CMD_SIZE (256) //cmd指令最大长度
  27 +#define JZSDK_DIR_SIZE (256) //目录名最大长度
  28 +
  29 +typedef struct {
  30 + U16_t year;
  31 + U8_t month;
  32 + U8_t day;
  33 + U8_t hour;
  34 + U8_t minute;
  35 + U8_t second;
  36 +} T_JZsdkTime;
  37 +
  38 +typedef struct T_JZsdkFileInfo{
  39 + U32_t size;
  40 + T_JZsdkTime createTime;
  41 + T_JZsdkTime modifyTime;
  42 + char path[JZSDK_FILE_PATH_SIZE_MAX];
  43 + bool isDir;
  44 +} T_JZsdkFileInfo;
  45 +
  46 +
24 /* Exported macro ------------------------------------------------------------*/ 47 /* Exported macro ------------------------------------------------------------*/
25 48
26 49
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_AttributeDef.h
  4 + * 用于记录属性的表
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_ATTRIBUTEDEF_H
  11 +#define JZSDK_ATTRIBUTEDEF_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +#include "./JZsdk_typedef.h"
  15 +
  16 +
  17 +#ifdef __cplusplus
  18 +extern "C" {
  19 +#endif
  20 +
  21 +/* Exported constants --------------------------------------------------------*/
  22 +/* 常亮定义*/
  23 +
  24 +
  25 +/* Exported types ------------------------------------------------------------*/
  26 +
  27 +
  28 +
  29 +//GPS时间
  30 +typedef U32_t T_JZsdkAttributeGpsTime;
  31 +
  32 +//GPS日期
  33 +typedef U32_t T_JZsdkAttributeGpsDate;
  34 +
  35 +//gps经度
  36 +typedef T_JZsdkVector3d T_JZsdkAttributeGpsPosition;
  37 +
  38 +/* Exported functions --------------------------------------------------------*/
  39 +
  40 +
  41 +
  42 +#ifdef __cplusplus
  43 +}
  44 +#endif
  45 +
  46 +#endif
@@ -27,6 +27,8 @@ typedef enum { @@ -27,6 +27,8 @@ typedef enum {
27 JZ_ERROR_SYSTEM_MODULE_CODE_HARDLY_FAILURE = 0x0003, //严重错误 27 JZ_ERROR_SYSTEM_MODULE_CODE_HARDLY_FAILURE = 0x0003, //严重错误
28 JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER = 0x0002, //文件指针错误 28 JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER = 0x0002, //文件指针错误
29 JZ_ERROR_SYSTEM_MODULE_CODE_MEMORY_ALLOC_FAILED = 0x0004, //内存分配失败 29 JZ_ERROR_SYSTEM_MODULE_CODE_MEMORY_ALLOC_FAILED = 0x0004, //内存分配失败
  30 + JZ_ERROR_SYSTEM_MODULE_CODE_IS_BUSY = 0x0005, //忙错误
  31 + JZ_ERROR_SYSTEM_MODULE_CODE_CHECK_CODE_ERROR = 0x0006, //校验码错误
30 } JZ_SYSTEM_Code; 32 } JZ_SYSTEM_Code;
31 33
32 typedef enum { 34 typedef enum {
@@ -54,6 +54,38 @@ typedef void *T_JZTaskHandle; @@ -54,6 +54,38 @@ typedef void *T_JZTaskHandle;
54 typedef void *T_JZsdkMutexHandle; 54 typedef void *T_JZsdkMutexHandle;
55 //信号量权柄 55 //信号量权柄
56 typedef void *T_JZsdkSemaHandle; 56 typedef void *T_JZsdkSemaHandle;
  57 +//文件权柄
  58 +typedef void *T_JZsdkFileHandle;
  59 +//目录权柄
  60 +typedef void *T_JZsdkDirHandle;
  61 +
  62 +
  63 +
  64 +typedef struct T_JZsdkVector3d
  65 +{
  66 + int x;
  67 + int y;
  68 + int z;
  69 +}T_JZsdkVector3d;
  70 +
  71 +typedef struct T_JZsdkVector3f
  72 +{
  73 + F32_t x;
  74 + F32_t y;
  75 + F32_t z;
  76 +}T_JZsdkVector3f;
  77 +
  78 +typedef struct {
  79 + int pitch; /*!< Specifies int32 value of pitch for attitude. */
  80 + int roll; /*!< Specifies int32 value of roll for attitude */
  81 + int yaw; /*!< Specifies int32 value of yaw for attitude */
  82 +} T_JZsdkAttitude3d;
  83 +
  84 +typedef struct {
  85 + F32_t pitch; /*!< Specifies float value of pitch for attitude. */
  86 + F32_t roll; /*!< Specifies float value of roll for attitude */
  87 + F32_t yaw; /*!< Specifies float value of yaw for attitude */
  88 +} T_JZsdkAttitude3f;
57 89
58 /* Exported types ------------------------------------------------------------*/ 90 /* Exported types ------------------------------------------------------------*/
59 91
@@ -12,6 +12,16 @@ int JZsdk_Get_FrameSequence(char *DealBuf) @@ -12,6 +12,16 @@ int JZsdk_Get_FrameSequence(char *DealBuf)
12 return DealBuf[6]; 12 return DealBuf[6];
13 } 13 }
14 14
  15 +/*************************
  16 + *
  17 + * 获取帧的长度
  18 + *
  19 + * ***************************/
  20 +int JZsdk_Get_FrameLength(char *DealBuf)
  21 +{
  22 + return ((int)DealBuf[3]) << 8 + DealBuf[4];
  23 +}
  24 +
15 /*************************** 25 /***************************
16 * 、 26 * 、
17 * 27 *
@@ -29,6 +29,8 @@ extern "C" { @@ -29,6 +29,8 @@ extern "C" {
29 29
30 /* Exported functions --------------------------------------------------------*/ 30 /* Exported functions --------------------------------------------------------*/
31 int JZsdk_Get_FrameSequence(char *DealBuf); 31 int JZsdk_Get_FrameSequence(char *DealBuf);
  32 +int JZsdk_Get_FrameLength(char *DealBuf);
  33 +
32 int JZsdk_FrameComparsion(char *getdata, int len); 34 int JZsdk_FrameComparsion(char *getdata, int len);
33 35
34 #ifdef __cplusplus 36 #ifdef __cplusplus
@@ -52,6 +52,11 @@ static int Comparison_5AFRAME_FirstLevelCode_0x50(char *getdata) @@ -52,6 +52,11 @@ static int Comparison_5AFRAME_FirstLevelCode_0x50(char *getdata)
52 return JZ_INSCODE_5AFRAME_DEVICE_MESSAGE; 52 return JZ_INSCODE_5AFRAME_DEVICE_MESSAGE;
53 break; 53 break;
54 54
  55 + //预设任务帧
  56 + case 0x60:
  57 + return JZ_INSCODE_5AFRAME_PRESET_TASK;
  58 + break;
  59 +
55 default: 60 default:
56 return JZ_ERROR_SYSTEM_FRAME_ERROR; 61 return JZ_ERROR_SYSTEM_FRAME_ERROR;
57 break; 62 break;
@@ -153,6 +158,11 @@ static int Comparison_5AFRAME_FirstLevelCode_0x52(char *getdata) @@ -153,6 +158,11 @@ static int Comparison_5AFRAME_FirstLevelCode_0x52(char *getdata)
153 case 0x22: 158 case 0x22:
154 return JZ_INSCODE_5AFRAME_AMPLIFIER_AUTO; 159 return JZ_INSCODE_5AFRAME_AMPLIFIER_AUTO;
155 break; 160 break;
  161 +
  162 + //设置回传时间
  163 + case 0x30:
  164 + return JZ_INSCODE_5AFRAME_CURRENT_PLAY_TIME;
  165 + break;
156 166
157 //调节音量 167 //调节音量
158 case 0x10: 168 case 0x10:
@@ -205,6 +215,11 @@ static int Comparison_5AFRAME_FirstLevelCode_0x53(char *getdata) @@ -205,6 +215,11 @@ static int Comparison_5AFRAME_FirstLevelCode_0x53(char *getdata)
205 return JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSSPEED; 215 return JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSSPEED;
206 break; 216 break;
207 217
  218 + //查询是否打开了播放时间回传
  219 + case 0x08:
  220 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_CURRENT_PLAYTIME;
  221 + break;
  222 +
208 //查询软件版本号 223 //查询软件版本号
209 case 0xf1: 224 case 0xf1:
210 return JZ_INSCODE_5AFRAME_CHECKSTATUS_SOFTWAREVERSION; 225 return JZ_INSCODE_5AFRAME_CHECKSTATUS_SOFTWAREVERSION;
@@ -314,7 +329,7 @@ static int Comparison_5AFRAME_FirstLevelCode_0x58(char *getdata) @@ -314,7 +329,7 @@ static int Comparison_5AFRAME_FirstLevelCode_0x58(char *getdata)
314 //二级功能位 329 //二级功能位
315 switch (getdata[8]) 330 switch (getdata[8])
316 { 331 {
317 - //设置音色 332 + //获取音乐列表
318 case 0x01: 333 case 0x01:
319 return JZ_INSCODE_5AFRAME_AUDIO_GETMUSICLIST; 334 return JZ_INSCODE_5AFRAME_AUDIO_GETMUSICLIST;
320 break; 335 break;
@@ -323,6 +338,11 @@ static int Comparison_5AFRAME_FirstLevelCode_0x58(char *getdata) @@ -323,6 +338,11 @@ static int Comparison_5AFRAME_FirstLevelCode_0x58(char *getdata)
323 case 0x03: 338 case 0x03:
324 return JZ_INSCODE_5AFRAME_CHECKSTATUS_AUDIO_DETAIL_MESSAGE; 339 return JZ_INSCODE_5AFRAME_CHECKSTATUS_AUDIO_DETAIL_MESSAGE;
325 break; 340 break;
  341 +
  342 + //获取pcm列表
  343 + case 0x10:
  344 + return JZ_INSCODE_5AFRAME_PCM_GETPCMLIST;
  345 + break;
326 346
327 default: 347 default:
328 break; 348 break;
@@ -334,10 +354,19 @@ static int Comparison_5AFRAME_FirstLevelCode_0x59(char *getdata) @@ -334,10 +354,19 @@ static int Comparison_5AFRAME_FirstLevelCode_0x59(char *getdata)
334 //二级功能位 354 //二级功能位
335 switch (getdata[8]) 355 switch (getdata[8])
336 { 356 {
  357 + case 0x10:
  358 + return JZ_INSCODE_5AFRAME_OPUS_PLAY;
  359 + break;
  360 +
337 //opus录音传输 361 //opus录音传输
338 //opus传输开始 362 //opus传输开始
339 case 0xF1: 363 case 0xF1:
340 - return JZ_INSCODE_5AFRAME_OPUS_TRANS_START; 364 + return JZ_INSCODE_5AFRAME_OPUS_TRANS_START_1;
  365 + break;
  366 +
  367 + //opus传输二型
  368 + case 0xF5:
  369 + return JZ_INSCODE_5AFRAME_OPUS_TRANS_START_2;
341 break; 370 break;
342 371
343 //opus传输结束 372 //opus传输结束
@@ -604,6 +633,45 @@ static int Comparison_5AFRAME_FirstLevelCode_0x6F(char *getdata) @@ -604,6 +633,45 @@ static int Comparison_5AFRAME_FirstLevelCode_0x6F(char *getdata)
604 } 633 }
605 } 634 }
606 635
  636 +
  637 +//一级功能码 升级帧
  638 +static int Comparison_5AFRAME_FirstLevelCode_0xA1(char *getdata)
  639 +{
  640 + //二级功能位
  641 + switch (getdata[8])
  642 + {
  643 + //升级准备
  644 + case 0x01:
  645 + return JZ_INSCODE_5AFRAME_UPGRADE_PERPARE;
  646 + break;
  647 +
  648 + //升级校验码
  649 + case 0x02:
  650 + return JZ_INSCODE_5AFRAME_UPGRADE_SEND_CHECKCODE;
  651 + break;
  652 +
  653 + //升级数据发送开始
  654 + case 0x03:
  655 + return JZ_INSCODE_5AFRAME_UPGRADE_STRAT;
  656 + break;
  657 +
  658 + //升级数据发送结束
  659 + case 0x04:
  660 + return JZ_INSCODE_5AFRAME_UPGRADE_END;
  661 + break;
  662 +
  663 + //升级发送数据
  664 + case 0xF1:
  665 + return JZ_INSCODE_5AFRAME_UPGRADE_TRANS;
  666 + break;
  667 +
  668 + default:
  669 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  670 + break;
  671 + }
  672 +}
  673 +
  674 +
607 /****************************************************************** 675 /******************************************************************
608 676
609 回复帧对比 677 回复帧对比
@@ -745,7 +813,9 @@ int JZsdk_5AFrameComparsion(char *getdata, int len) @@ -745,7 +813,9 @@ int JZsdk_5AFrameComparsion(char *getdata, int len)
745 return Comparison_5AFRAME_FirstLevelCode_0x6F(getdata); 813 return Comparison_5AFRAME_FirstLevelCode_0x6F(getdata);
746 break; 814 break;
747 815
748 - 816 + //一级功能码 升级功能
  817 + case 0xA1:
  818 + return Comparison_5AFRAME_FirstLevelCode_0xA1(getdata);
749 break; 819 break;
750 820
751 //一级功能码 821 //一级功能码
@@ -310,7 +310,9 @@ static int Comparison_5BFRAME_FirstLevelCode_0x66(char *getdata) @@ -310,7 +310,9 @@ static int Comparison_5BFRAME_FirstLevelCode_0x66(char *getdata)
310 return JZ_ERROR_SYSTEM_FRAME_ERROR; 310 return JZ_ERROR_SYSTEM_FRAME_ERROR;
311 break; 311 break;
312 } 312 }
313 -}//一级功能码是回复警灯颜色 313 +}
  314 +
  315 +//一级功能码是回复警灯颜色
314 static int Comparison_5BFRAME_FirstLevelCode_0x67(char *getdata) 316 static int Comparison_5BFRAME_FirstLevelCode_0x67(char *getdata)
315 { 317 {
316 //二级功能位 318 //二级功能位
@@ -326,7 +328,9 @@ static int Comparison_5BFRAME_FirstLevelCode_0x67(char *getdata) @@ -326,7 +328,9 @@ static int Comparison_5BFRAME_FirstLevelCode_0x67(char *getdata)
326 return JZ_ERROR_SYSTEM_FRAME_ERROR; 328 return JZ_ERROR_SYSTEM_FRAME_ERROR;
327 break; 329 break;
328 } 330 }
329 -}//一级功能码是回复温度/序列号查询 331 +}
  332 +
  333 +//一级功能码是回复温度/序列号查询
330 static int Comparison_5BFRAME_FirstLevelCode_0x69(char *getdata) 334 static int Comparison_5BFRAME_FirstLevelCode_0x69(char *getdata)
331 { 335 {
332 //二级功能位 336 //二级功能位
@@ -347,6 +351,50 @@ static int Comparison_5BFRAME_FirstLevelCode_0x69(char *getdata) @@ -347,6 +351,50 @@ static int Comparison_5BFRAME_FirstLevelCode_0x69(char *getdata)
347 break; 351 break;
348 } 352 }
349 } 353 }
  354 +
  355 +
  356 +//一级功能码 升级帧
  357 +static int Comparison_5AFRAME_FirstLevelCode_0xA1(char *getdata)
  358 +{
  359 + //二级功能位
  360 + switch (getdata[8])
  361 + {
  362 + //升级准备
  363 + case 0x01:
  364 + return JZ_INSCODE_5BFRAME_UPGRADE_PERPARE;
  365 + break;
  366 +
  367 + //升级校验码
  368 + case 0x02:
  369 + return JZ_INSCODE_5BFRAME_UPGRADE_SEND_CHECKCODE;
  370 + break;
  371 +
  372 + //升级数据发送开始
  373 + case 0x03:
  374 + return JZ_INSCODE_5BFRAME_UPGRADE_STRAT;
  375 + break;
  376 +
  377 + //升级数据发送结束
  378 + case 0x04:
  379 + return JZ_INSCODE_5BFRAME_UPGRADE_END;
  380 + break;
  381 +
  382 + //升级数据校验结果
  383 + case 0x05:
  384 + return JZ_INSCODE_5BFRAME_UPGRADE_CHECKRESULT;
  385 + break;
  386 +
  387 + //升级发送数据
  388 + case 0xF1:
  389 + return JZ_INSCODE_5BFRAME_UPGRADE_TRANS;
  390 + break;
  391 +
  392 + default:
  393 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  394 + break;
  395 + }
  396 +}
  397 +
350 /****************************************************************** 398 /******************************************************************
351 399
352 回复帧对比 400 回复帧对比
@@ -428,6 +476,9 @@ int JZsdk_5BFrameComparsion(char *getdata, int len) @@ -428,6 +476,9 @@ int JZsdk_5BFrameComparsion(char *getdata, int len)
428 return Comparison_5BFRAME_FirstLevelCode_0x69(getdata); 476 return Comparison_5BFRAME_FirstLevelCode_0x69(getdata);
429 break; 477 break;
430 478
  479 + case 0xA1:
  480 + return Comparison_5AFRAME_FirstLevelCode_0xA1(getdata);
  481 + break;
431 482
432 default: 483 default:
433 return JZ_ERROR_SYSTEM_FRAME_ERROR; 484 return JZ_ERROR_SYSTEM_FRAME_ERROR;
@@ -20,7 +20,7 @@ static int Comparison_6BFRAME_FirstLevelCode_0x6F(char *getdata) @@ -20,7 +20,7 @@ static int Comparison_6BFRAME_FirstLevelCode_0x6F(char *getdata)
20 20
21 //查询特殊变量 21 //查询特殊变量
22 case 0x54: 22 case 0x54:
23 - return JZ_INSCODE_6BFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME; 23 + return JZ_INSCODE_6BFRAME_CHECK_SPECIAL_PARAMETERS;
24 break; 24 break;
25 25
26 default: 26 default:
@@ -48,6 +48,15 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len) @@ -48,6 +48,15 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len)
48 *str_len = 12; 48 *str_len = 12;
49 } 49 }
50 break; 50 break;
  51 +
  52 + case JZ_INSCODE_5AFRAME_PRESET_TASK:
  53 + {
  54 + unsigned char sendbuf[12] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0C ,0x00 ,0x00 ,0x50 ,0x60 ,0x00 ,0x00 ,0x23};
  55 + memcpy(str, sendbuf, 12);
  56 + *str_len = 12;
  57 + }
  58 + break;
  59 +
51 case JZ_INSCODE_5AFRAME_AUDIO_STOP: 60 case JZ_INSCODE_5AFRAME_AUDIO_STOP:
52 { 61 {
53 char sendbuf[12] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0C ,0x00 ,0x00 ,0x52 ,0x06 ,0x00 ,0x00 ,0x23}; 62 char sendbuf[12] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0C ,0x00 ,0x00 ,0x52 ,0x06 ,0x00 ,0x00 ,0x23};
@@ -276,6 +285,14 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len) @@ -276,6 +285,14 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len)
276 } 285 }
277 break; 286 break;
278 287
  288 + case JZ_INSCODE_5BFRAME_PRESET_TASK:
  289 + {
  290 + unsigned char sendbuf[12] = {0x5B ,0x5B ,0x77 ,0x00 ,0x0C ,0x00 ,0x00 ,0x50 ,0x60 ,0x00 ,0x00 ,0x23};
  291 + memcpy(str, sendbuf, 12);
  292 + *str_len = 12;
  293 + }
  294 + break;
  295 +
279 case JZ_INSCODE_5BFRAME_SUCESS: 296 case JZ_INSCODE_5BFRAME_SUCESS:
280 { 297 {
281 char sendbuf[12] = {0x5B, 0x5B, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0x23}; 298 char sendbuf[12] = {0x5B, 0x5B, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0x23};
@@ -308,6 +325,12 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len) @@ -308,6 +325,12 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len)
308 } 325 }
309 break; 326 break;
310 327
  328 + case JZ_INSCODE_5BFRAME_CURRENT_PLAY_TIME:
  329 + {
  330 + char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0d, 0x00, 0x00, 0x52, 0x30, 0x00, 0x00, 0x23};
  331 + memcpy(str, sendbuf, 12);
  332 + *str_len = 13;
  333 + }
311 334
312 case JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS_END: 335 case JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS_END:
313 { 336 {
@@ -375,6 +398,15 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len) @@ -375,6 +398,15 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len)
375 } 398 }
376 break; 399 break;
377 400
  401 + case JZ_INSCODE_5BFRAME_CHECKSTATUS_CURRENT_PLAYTIME:
  402 + {
  403 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0x08, 0x00, 0x00, 0x23};
  404 + memcpy(str, sendbuf, 12);
  405 + *str_len = 12;
  406 + }
  407 + break;
  408 +
  409 +
378 case JZ_INSCODE_5BFRAME_MUSICLIST_START: 410 case JZ_INSCODE_5BFRAME_MUSICLIST_START:
379 { 411 {
380 char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x23}; 412 char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x23};
@@ -416,6 +448,28 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len) @@ -416,6 +448,28 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len)
416 } 448 }
417 break; 449 break;
418 450
  451 + case JZ_INSCODE_5BFRAME_OPUSLIST_START:
  452 + {
  453 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0x11, 0x00, 0x00, 0x23};
  454 + memcpy(str, sendbuf, 12);
  455 + *str_len = 12;
  456 + }
  457 + break;
  458 +
  459 + case JZ_INSCODE_5BFRAME_OPUSLIST_TRANS:
  460 + {
  461 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0x12, 0x00, 0x00, 0x23};
  462 + memcpy(str, sendbuf, 12);
  463 + *str_len = 12;
  464 + }
  465 + break;
  466 +
  467 + case JZ_INSCODE_5BFRAME_OPUSLIST_END:
  468 + {
  469 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x23};
  470 + memcpy(str, sendbuf, 12);
  471 + *str_len = 12;
  472 + }
419 break; 473 break;
420 474
421 case JZ_INSCODE_5BFRAME_OPUS_DECODE_STATUS: 475 case JZ_INSCODE_5BFRAME_OPUS_DECODE_STATUS:
@@ -514,7 +568,45 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len) @@ -514,7 +568,45 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len)
514 } 568 }
515 break; 569 break;
516 570
  571 + case JZ_INSCODE_5BFRAME_UPGRADE_PERPARE:
  572 + {
  573 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0xA1, 0x01, 0x00, 0x00, 0x23};
  574 + memcpy(str, sendbuf, 12);
  575 + *str_len = 12;
  576 + }
  577 + break;
  578 +
  579 + case JZ_INSCODE_5BFRAME_UPGRADE_SEND_CHECKCODE:
  580 + {
  581 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0xA1, 0x02, 0x00, 0x00, 0x23};
  582 + memcpy(str, sendbuf, 12);
  583 + *str_len = 12;
  584 + }
  585 + break;
  586 +
  587 + case JZ_INSCODE_5BFRAME_UPGRADE_STRAT:
  588 + {
  589 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0xA1, 0x03, 0x00, 0x00, 0x23};
  590 + memcpy(str, sendbuf, 12);
  591 + *str_len = 12;
  592 + }
  593 + break;
  594 +
  595 + case JZ_INSCODE_5BFRAME_UPGRADE_END:
  596 + {
  597 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0xA1, 0x04, 0x00, 0x00, 0x23};
  598 + memcpy(str, sendbuf, 12);
  599 + *str_len = 12;
  600 + }
  601 + break;
517 602
  603 + case JZ_INSCODE_5BFRAME_UPGRADE_CHECKRESULT:
  604 + {
  605 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0xA1, 0x05, 0x00, 0x00, 0x23};
  606 + memcpy(str, sendbuf, 12);
  607 + *str_len = 12;
  608 + }
  609 + break;
518 610
519 /******************************************************************************************************************************************************** 611 /********************************************************************************************************************************************************
520 * 612 *
@@ -14,16 +14,18 @@ @@ -14,16 +14,18 @@
14 #include <unistd.h> 14 #include <unistd.h>
15 #include <sys/types.h> 15 #include <sys/types.h>
16 16
  17 +#define JZSDK_LOG_NAME "JZLOG"
  18 +#define JZSDK_LOG_INDEX_FILE_NAME "/root/sdcard/JZLOG/thelast"
  19 +#define JZSDK_LOG_PATH "/root/sdcard/JZLOG/"
  20 +#define JZSDK_LOG_MAX_COUNT 20
  21 +static char logFilePath[128];
17 22
18 #define LOG_GRADE JZSDK_LOGGER_CONSOLE_LOG_LEVEL_INFO 23 #define LOG_GRADE JZSDK_LOGGER_CONSOLE_LOG_LEVEL_INFO
19 24
20 -// 定义全局互斥锁  
21 -static pthread_mutex_t LogWriteMutex = PTHREAD_MUTEX_INITIALIZER;  
22 -  
23 /* 全局变量 ------------------------------------------------------------------*/ 25 /* 全局变量 ------------------------------------------------------------------*/
24 static struct timeval g_start_time; 26 static struct timeval g_start_time;
25 static FILE *logFile = NULL; 27 static FILE *logFile = NULL;
26 -static char LogFileName[JZSDK_FILENAME_SIZE]; 28 +static FILE *logFileCnt = NULL;
27 static int Logger_init_flag = JZ_FLAGCODE_OFF; 29 static int Logger_init_flag = JZ_FLAGCODE_OFF;
28 30
29 /* 函数声明 ------------------------------------------------------------------*/ 31 /* 函数声明 ------------------------------------------------------------------*/
@@ -142,7 +144,7 @@ T_JZsdkReturnCode createJZLOGFolder() @@ -142,7 +144,7 @@ T_JZsdkReturnCode createJZLOGFolder()
142 144
143 int ReadLogNumFromFile() 145 int ReadLogNumFromFile()
144 { 146 {
145 - const char *path = "/root/sdcard/JZLOG/thelast"; 147 + const char *path = JZSDK_LOG_INDEX_FILE_NAME;
146 int logNum = 0; 148 int logNum = 0;
147 149
148 FILE *file = fopen(path, "r"); 150 FILE *file = fopen(path, "r");
@@ -170,44 +172,102 @@ int ReadLogNumFromFile() @@ -170,44 +172,102 @@ int ReadLogNumFromFile()
170 172
171 T_JZsdkReturnCode JZsdk_LoggerInit() 173 T_JZsdkReturnCode JZsdk_LoggerInit()
172 { 174 {
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(&current_time);  
187 - info = localtime(&current_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); 175 + int ret;
  176 + unsigned int logFileIndex = 0;
  177 + unsigned int currentLogFileIndex;
  178 +
  179 + JZsdk_Osal_Mkdir(JZSDK_LOG_PATH);
  180 +
  181 + char systemCmd[64]; // 用于存储系统命令
  182 +
  183 + char folderName[JZSDK_FILE_NAME_SIZE_MAX];
  184 +
  185 + time_t currentTime = time(NULL);
  186 + struct tm *localTime = localtime(&currentTime);
  187 +
  188 + if (localTime == NULL) {
  189 + printf("Get local time error.\r\n");
201 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 190 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
202 } 191 }
203 192
204 - //6、写入开始时间  
205 - char logMessage[256];  
206 - snprintf(logMessage,256,"LOG_FILE:%s\n",LogFileName);  
207 - fprintf(logFile, "%s", logMessage);  
208 - fflush(logFile); 193 + if (access(JZSDK_LOG_NAME, F_OK) != 0) {
  194 + sprintf(folderName, "mkdir %s", JZSDK_LOG_NAME);
  195 + ret = system(folderName);
  196 + if (ret != 0) {
  197 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  198 + }
  199 + }
  200 +
  201 + logFileCnt = fopen(JZSDK_LOG_INDEX_FILE_NAME, "rb+");
  202 + if (logFileCnt == NULL)
  203 + {
  204 + logFileCnt = fopen(JZSDK_LOG_INDEX_FILE_NAME, "wb+");
  205 + if (logFileCnt == NULL)
  206 + {
  207 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  208 + }
  209 + }
  210 + else
  211 + {
  212 + ret = fseek(logFileCnt, 0, SEEK_SET);
  213 + if (ret != 0)
  214 + {
  215 + printf("Seek log count file error, ret: %d\r\n", ret);
  216 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  217 + }
  218 +
  219 + ret = fread((uint16_t *) &logFileIndex, 1, sizeof(uint16_t), logFileCnt);
  220 + if (ret != sizeof(uint16_t))
  221 + {
  222 + printf("Read log file index error.\r\n");
  223 + }
  224 + }
  225 +
  226 + currentLogFileIndex = logFileIndex;
  227 + logFileIndex++;
  228 +
  229 + ret = fseek(logFileCnt, 0, SEEK_SET);
  230 + if (ret != 0)
  231 + {
  232 + printf("Seek log file error, ret: %d\r\n", ret);
  233 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  234 + }
  235 +
  236 + ret = fwrite((unsigned int *) &logFileIndex, 1, sizeof(unsigned int), logFileCnt);
  237 + if (ret != sizeof(unsigned int))
  238 + {
  239 + printf("Write log file index error.\r\n");
  240 + fclose(logFileCnt);
  241 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  242 + }
  243 +
  244 + fclose(logFileCnt);
  245 +
  246 + //filePath : /root/sdcard/Logs/_%04d_%04d%02d%02d_%02d-%02d-%02d.log
  247 + sprintf(logFilePath, "%s%04d_%04d%02d%02d_%02d-%02d-%02d.log", JZSDK_LOG_PATH, currentLogFileIndex,
  248 + localTime->tm_year + 1900, localTime->tm_mon + 1, localTime->tm_mday,
  249 + localTime->tm_hour, localTime->tm_min, localTime->tm_sec);
  250 +
  251 + logFile = fopen(logFilePath, "wb+");
  252 + if (logFile == NULL)
  253 + {
  254 + printf("Open filepath time error.");
  255 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  256 + }
  257 +
  258 + if (logFileIndex >= JZSDK_LOG_MAX_COUNT)
  259 + {
  260 + sprintf(systemCmd, "rm -rf %s_%04d*.log", JZSDK_LOG_PATH, currentLogFileIndex - JZSDK_LOG_MAX_COUNT);
  261 + ret = system(systemCmd);
  262 + if (ret != 0) {
  263 + printf("Remove file error, ret:%d.\r\n", ret);
  264 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  265 + }
  266 + }
  267 +
  268 + sprintf(systemCmd, "ln -sfrv %s " JZSDK_LOG_NAME "/latest.log", logFilePath);
  269 + system(systemCmd);
209 270
210 - //dfclose(logFile);  
211 271
212 //打开初始化完成的flag 272 //打开初始化完成的flag
213 Logger_init_flag = JZ_FLAGCODE_ON; 273 Logger_init_flag = JZ_FLAGCODE_ON;
@@ -215,7 +275,11 @@ T_JZsdkReturnCode JZsdk_LoggerInit() @@ -215,7 +275,11 @@ T_JZsdkReturnCode JZsdk_LoggerInit()
215 //设立监控 275 //设立监控
216 Log_Monitor(); 276 Log_Monitor();
217 277
  278 + JZSDK_LOG_INFO("%s", logFilePath);
  279 +
218 JZSDK_LOG_INFO("log初始化完成"); 280 JZSDK_LOG_INFO("log初始化完成");
  281 +
  282 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
219 } 283 }
220 284
221 T_JZsdkReturnCode JZsdk_LoggerDeInit() 285 T_JZsdkReturnCode JZsdk_LoggerDeInit()
@@ -228,64 +292,24 @@ T_JZsdkReturnCode JZsdk_LoggerDeInit() @@ -228,64 +292,24 @@ T_JZsdkReturnCode JZsdk_LoggerDeInit()
228 292
229 T_JZsdkReturnCode writeToLogFile(const char *data) 293 T_JZsdkReturnCode writeToLogFile(const char *data)
230 { 294 {
231 - // 加锁  
232 - pthread_mutex_lock(&LogWriteMutex);  
233 -  
234 - //logFile = fopen(LogFileName, "a"); // 使用"a"模式打开文件,以在末尾追加数据  
235 -  
236 - // if (logFile == NULL) {  
237 - // // 文件打开失败,输出错误消息  
238 - // printf("Failed to open file: %s", LogFileName);  
239 - // pthread_mutex_unlock(&LogWriteMutex);  
240 -  
241 - // return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
242 - // }  
243 -  
244 if (logFile == NULL) 295 if (logFile == NULL)
245 { 296 {
246 - printf("Failed to open file: %s", LogFileName);  
247 - pthread_mutex_unlock(&LogWriteMutex);  
248 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 297 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
249 } 298 }
250 299
251 fprintf(logFile, "%s", data); // 写入新的数据 300 fprintf(logFile, "%s", data); // 写入新的数据
252 fflush(logFile); 301 fflush(logFile);
253 - //fclose(logFile);  
254 -  
255 - // 解锁  
256 - pthread_mutex_unlock(&LogWriteMutex);  
257 -  
258 } 302 }
259 303
260 T_JZsdkReturnCode HexToLogFile(const char *data) 304 T_JZsdkReturnCode HexToLogFile(const char *data)
261 { 305 {
262 - // 加锁  
263 - pthread_mutex_lock(&LogWriteMutex);  
264 -  
265 - // logFile = fopen(LogFileName, "a"); // 使用"a"模式打开文件,以在末尾追加数据  
266 -  
267 - // if (logFile == NULL) {  
268 - // // 文件打开失败,输出错误消息  
269 - // printf("Failed to open file: %s", LogFileName);  
270 - // pthread_mutex_unlock(&LogWriteMutex);  
271 -  
272 - // return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
273 - // }  
274 -  
275 if (logFile == NULL) 306 if (logFile == NULL)
276 { 307 {
277 - printf("Failed to open file: %s", LogFileName);  
278 - pthread_mutex_unlock(&LogWriteMutex);  
279 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 308 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
280 } 309 }
281 310
282 fprintf(logFile, "%x ", data[0]); // 写入新的数据 311 fprintf(logFile, "%x ", data[0]); // 写入新的数据
283 fflush(logFile); 312 fflush(logFile);
284 -  
285 - //fclose(logFile);  
286 -  
287 - // 解锁  
288 - pthread_mutex_unlock(&LogWriteMutex);  
289 } 313 }
290 314
291 315
@@ -55,7 +55,7 @@ static T_JZsdkReturnCode JZsdk_Check_Src32(unsigned char *DIR, unsigned char *ch @@ -55,7 +55,7 @@ static T_JZsdkReturnCode JZsdk_Check_Src32(unsigned char *DIR, unsigned char *ch
55 if (SRC_CheckSum != LocalCheckSum) 55 if (SRC_CheckSum != LocalCheckSum)
56 { 56 {
57 JZSDK_LOG_ERROR("checksum error local:%x src:%x", LocalCheckSum, SRC_CheckSum); 57 JZSDK_LOG_ERROR("checksum error local:%x src:%x", LocalCheckSum, SRC_CheckSum);
58 - ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 58 + ret = JZ_ERROR_SYSTEM_MODULE_CODE_CHECK_CODE_ERROR;
59 } 59 }
60 else 60 else
61 { 61 {
@@ -83,7 +83,7 @@ static T_JZsdkReturnCode JZsdk_Check_Md5(unsigned char *DIR, unsigned char *chec @@ -83,7 +83,7 @@ static T_JZsdkReturnCode JZsdk_Check_Md5(unsigned char *DIR, unsigned char *chec
83 if (memcmp(md5, checksum, 21) != 0) 83 if (memcmp(md5, checksum, 21) != 0)
84 { 84 {
85 JZSDK_LOG_ERROR("checksum error\n"); 85 JZSDK_LOG_ERROR("checksum error\n");
86 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 86 + return JZ_ERROR_SYSTEM_MODULE_CODE_CHECK_CODE_ERROR;
87 } 87 }
88 88
89 return ret; 89 return ret;
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 -#define JZSDK_DIR_SIZE (256) //目录名最大长度  
16 -  
17 -  
18 -#endif  
@@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
10 #include "JZsdkLib.h" 10 #include "JZsdkLib.h"
11 #include <dirent.h> 11 #include <dirent.h>
12 #include <errno.h> 12 #include <errno.h>
  13 +#include <time.h>
13 14
14 /* 15 /*
15 * 用于运行指令 16 * 用于运行指令
@@ -105,6 +106,203 @@ T_JZsdkReturnCode JZsdk_RunSystemCmd_ReturnResult_Str(char *systemCmd, unsigned @@ -105,6 +106,203 @@ T_JZsdkReturnCode JZsdk_RunSystemCmd_ReturnResult_Str(char *systemCmd, unsigned
105 106
106 /********************************** 107 /**********************************
107 * 108 *
  109 + * 打开一个文件
  110 + 函数名:JZsdk_Osal_FileOpen
  111 + 参数:文件名,文件打开模式,文件句柄
  112 + 返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示打开成功,
  113 + JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示打开失败
  114 + * *******************************/
  115 +T_JZsdkReturnCode JZsdk_Osal_FileOpen(const char *fileName, const char *fileMode, T_JZsdkFileHandle *fileObj)
  116 +{
  117 + if (fileName == NULL || fileMode == NULL || fileObj == NULL) {
  118 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  119 + }
  120 +
  121 + *fileObj = fopen(fileName, fileMode);
  122 + if (*fileObj == NULL)
  123 + {
  124 + goto out;
  125 + }
  126 +
  127 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  128 +
  129 +out:
  130 + free(*fileObj);
  131 +
  132 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  133 +}
  134 +
  135 +
  136 +/**********************************
  137 + *
  138 + * 关闭一个文件
  139 + 函数名:JZsdk_Osal_FileClose
  140 + 参数:文件句柄
  141 + 返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示关闭成功,
  142 + JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示关闭失败
  143 + * *******************************/
  144 +T_JZsdkReturnCode JZsdk_Osal_FileClose(T_JZsdkFileHandle fileObj)
  145 +{
  146 + int32_t ret;
  147 +
  148 + if (fileObj == NULL) {
  149 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  150 + }
  151 +
  152 + ret = fclose(fileObj);
  153 + if (ret < 0) {
  154 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  155 + }
  156 +
  157 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  158 +}
  159 +
  160 +
  161 +/***********************************
  162 + *
  163 + * 写入一个文件
  164 + 函数名:JZsdk_Osal_FileWrite
  165 + 参数:文件句柄,写入数据,写入长度,实际写入长度
  166 + 返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示写入成功,
  167 + JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示写入失败
  168 + * *******************************/
  169 +T_JZsdkReturnCode JZsdk_Osal_FileWrite_U8(T_JZsdkFileHandle fileObj, const U8_t *buf, U32_t len, U32_t *realLen)
  170 +{
  171 + int32_t ret;
  172 +
  173 + if (fileObj == NULL || buf == NULL || len == 0 || realLen == NULL) {
  174 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  175 + }
  176 +
  177 + ret = fwrite(buf, 1, len, fileObj);
  178 + if (ret >= 0) {
  179 + *realLen = ret;
  180 + } else {
  181 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  182 + }
  183 +
  184 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  185 +}
  186 +
  187 +/***********************************
  188 + *
  189 + * 读取一个文件
  190 + 函数名:JZsdk_Osal_FileRead
  191 + 参数:文件句柄,读取数据,读取长度,实际读取长度
  192 + 返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示读取成功,
  193 + JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示读取失败
  194 + * *******************************/
  195 +T_JZsdkReturnCode JZsdk_Osal_FileRead_U8(T_JZsdkFileHandle fileObj, U8_t *buf, U32_t len, U32_t *realLen)
  196 +{
  197 + int32_t ret;
  198 +
  199 + if (fileObj == NULL || buf == NULL || len == 0 || realLen == NULL) {
  200 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  201 + }
  202 +
  203 + ret = fread(buf, 1, len, fileObj);
  204 + if (ret >= 0) {
  205 + *realLen = ret;
  206 + } else {
  207 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  208 + }
  209 +
  210 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  211 +}
  212 +
  213 +/***********************************
  214 + *
  215 + * 文件定位
  216 + 函数名:JZsdk_Osal_FileSeek
  217 + 参数:文件句柄,偏移量
  218 + 返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示定位成功,
  219 + JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示定位失败
  220 + * *******************************/
  221 +T_JZsdkReturnCode JZsdk_Osal_FileSeek(T_JZsdkFileHandle fileObj, U32_t offset)
  222 +{
  223 + int32_t ret;
  224 +
  225 + if (fileObj == NULL) {
  226 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  227 + }
  228 +
  229 + ret = fseek(fileObj, offset, SEEK_SET);
  230 + if (ret < 0) {
  231 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  232 + }
  233 +
  234 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  235 +}
  236 +
  237 +/***********************************
  238 + *
  239 + * 文件同步
  240 + 函数名:JZsdk_Osal_FileSync
  241 + 参数:文件句柄
  242 + 返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示同步成功,
  243 + JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示同步失败
  244 + * *******************************/
  245 +T_JZsdkReturnCode JZsdk_Osal_FileSync(T_JZsdkFileHandle fileObj)
  246 +{
  247 + int32_t ret;
  248 +
  249 + if (fileObj == NULL) {
  250 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  251 + }
  252 +
  253 + ret = fflush(fileObj);
  254 + if (ret < 0) {
  255 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  256 + }
  257 +
  258 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  259 +}
  260 +
  261 +
  262 +/**********************************
  263 + *
  264 + * 获取文件信息
  265 + 函数名:JZsdk_Osal_FileStat
  266 + 参数:文件路径,文件信息
  267 + 返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示获取成功,
  268 + JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示获取失败
  269 + * *******************************/
  270 +T_JZsdkReturnCode JZsdk_Osal_Stat(const char *filePath, T_JZsdkFileInfo *fileInfo)
  271 +{
  272 + struct stat st;
  273 + int32_t ret;
  274 + struct tm *fileTm;
  275 +
  276 + if (filePath == NULL || fileInfo == NULL) {
  277 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  278 + }
  279 +
  280 + ret = stat(filePath, &st);
  281 + if (ret < 0) {
  282 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  283 + }
  284 +
  285 + fileTm = localtime((const time_t *) &(st.st_mtim));
  286 + if (fileTm == NULL) {
  287 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  288 + }
  289 +
  290 + fileInfo->size = st.st_size;
  291 +
  292 + fileInfo->createTime.year = fileTm->tm_year + 1900 - 1980;
  293 + fileInfo->createTime.month = fileTm->tm_mon + 1;
  294 + fileInfo->createTime.day = fileTm->tm_mday;
  295 + fileInfo->createTime.hour = fileTm->tm_hour;
  296 + fileInfo->createTime.minute = fileTm->tm_min;
  297 + fileInfo->createTime.second = fileTm->tm_sec;
  298 +
  299 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  300 +}
  301 +
  302 +
  303 +
  304 +/**********************************
  305 + *
108 * 创建一个文件夹 306 * 创建一个文件夹
109 函数名:JZsdk_check_file_exists 307 函数名:JZsdk_check_file_exists
110 参数:文件路径 308 参数:文件路径
@@ -208,13 +406,37 @@ T_JZsdkReturnCode JZsdk_create_file(const char* file_path) @@ -208,13 +406,37 @@ T_JZsdkReturnCode JZsdk_create_file(const char* file_path)
208 406
209 /********************************** 407 /**********************************
210 * 408 *
  409 + * 重命名文件
  410 + 函数名:JZsdk_check_file_exists
  411 + 参数:文件路径
  412 + 返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示文件存在,
  413 + JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示文件不存在
  414 + * *******************************/
  415 +T_JZsdkReturnCode JZsdk_Osal_Rename(const char *oldFilePath, const char *newFilePath)
  416 +{
  417 + int32_t ret;
  418 +
  419 + if (oldFilePath == NULL || newFilePath == NULL) {
  420 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  421 + }
  422 +
  423 + ret = rename(oldFilePath, newFilePath);
  424 + if (ret < 0) {
  425 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  426 + }
  427 +
  428 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  429 +}
  430 +
  431 +/**********************************
  432 + *
211 * 删除文件 433 * 删除文件
212 - 函数名:JZsdk_delete_file 434 + 函数名:JZsdk_Osal_delete
213 参数:文件路径 435 参数:文件路径
214 返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示文件已经不存在 436 返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示文件已经不存在
215 JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示文件仍然存在 437 JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示文件仍然存在
216 * *******************************/ 438 * *******************************/
217 -T_JZsdkReturnCode JZsdk_delete_file(const char* file_path) 439 +T_JZsdkReturnCode JZsdk_Osal_delete(const char* file_path)
218 { 440 {
219 int remove_result = remove(file_path); 441 int remove_result = remove(file_path);
220 if (remove_result != 0) { 442 if (remove_result != 0) {
@@ -458,4 +680,81 @@ T_JZsdkReturnCode JZsdk_Sync() @@ -458,4 +680,81 @@ T_JZsdkReturnCode JZsdk_Sync()
458 { 680 {
459 sync(); 681 sync();
460 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 682 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  683 +}
  684 +
  685 +T_JZsdkReturnCode JZsdk_Osal_DirOpen(const char *filePath, T_JZsdkDirHandle *dirObj)
  686 +{
  687 + if (filePath == NULL) {
  688 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  689 + }
  690 +
  691 + *dirObj = opendir(filePath);
  692 + if (*dirObj == NULL) {
  693 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  694 + }
  695 +
  696 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  697 +}
  698 +
  699 +T_JZsdkReturnCode JZsdk_Osal_DirClose(T_JZsdkDirHandle dirObj)
  700 +{
  701 + int32_t ret;
  702 +
  703 + if (dirObj == NULL) {
  704 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  705 + }
  706 +
  707 + ret = closedir((DIR *) dirObj);
  708 + if (ret < 0) {
  709 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  710 + }
  711 +
  712 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  713 +}
  714 +
  715 +T_JZsdkReturnCode JZsdk_Osal_DirRead(T_JZsdkDirHandle dirObj, T_JZsdkFileInfo *fileInfo)
  716 +{
  717 + struct dirent *dirent;
  718 +
  719 + if (dirObj == NULL || fileInfo == NULL) {
  720 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  721 + }
  722 +
  723 + dirent = readdir((DIR *) dirObj);
  724 + if (!dirent) {
  725 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  726 + }
  727 +
  728 + if (dirent->d_type == DT_DIR) {
  729 + fileInfo->isDir = true;
  730 + } else {
  731 + fileInfo->isDir = false;
  732 + }
  733 + strcpy(fileInfo->path, dirent->d_name);
  734 +
  735 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  736 +}
  737 +
  738 +
  739 +T_JZsdkReturnCode JZsdk_Osal_Unlink(const char *filePath)
  740 +{
  741 + int32_t ret;
  742 +
  743 + if (filePath == NULL) {
  744 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  745 + }
  746 +
  747 + if (filePath[strlen(filePath) - 1] == '/') {
  748 + ret = rmdir(filePath);
  749 + if (ret < 0) {
  750 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  751 + }
  752 + } else {
  753 + ret = unlink(filePath);
  754 + if (ret < 0) {
  755 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  756 + }
  757 + }
  758 +
  759 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
461 } 760 }
@@ -12,7 +12,8 @@ @@ -12,7 +12,8 @@
12 12
13 /* Includes ------------------------------------------------------------------*/ 13 /* Includes ------------------------------------------------------------------*/
14 #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" 14 #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
15 -#include "./JZsdk_FS_Standards.h" 15 +#include "JZsdk_Base/JZsdk_Code/JZsdk_Platform/JZsdk_Platform.h"
  16 +#include "JZsdk_Base/JZsdk_Code/JZsdk_typedef/JZsdk_typedef.h"
16 17
17 #ifdef __cplusplus 18 #ifdef __cplusplus
18 extern "C" { 19 extern "C" {
@@ -21,6 +22,59 @@ extern "C" { @@ -21,6 +22,59 @@ extern "C" {
21 /* Exported constants --------------------------------------------------------*/ 22 /* Exported constants --------------------------------------------------------*/
22 /* 常亮定义*/ 23 /* 常亮定义*/
23 24
  25 +/*
  26 + 用途:用于读取文件内容。
  27 + 权限:只允许读取文件,不允许写入或修改文件内容。
  28 + 文件存在性:如果文件不存在,打开操作会失败,并返回一个错误。
  29 + 文件指针位置:文件打开后,文件指针位于文件的开头。
  30 +*/
  31 +#define FS_ONLY_READ "rb"
  32 +
  33 +/*
  34 + 用途:用于读取和写入文件内容。
  35 + 权限:允许读取和写入文件内容。
  36 + 文件存在性:如果文件不存在,打开操作会失败,并返回一个错误。
  37 + 文件指针位置:文件打开后,文件指针位于文件的开头。
  38 + 注意事项:在写入文件时,会覆盖文件中对应位置的内容,但不会删除文件的其他内容。
  39 +*/
  40 +#define FS_READ_AND_WRITE "r+b"
  41 +
  42 +/*
  43 + 用途:用于写入文件内容。
  44 + 权限:只允许写入文件内容,不允许读取。
  45 + 文件存在性:如果文件存在,其内容会被清空;如果文件不存在,会创建一个新文件。
  46 + 文件指针位置:文件打开后,文件指针位于文件的开头,准备写入新内容。
  47 + 注意事项:使用w模式打开文件时,会丢失文件中的原有内容。
  48 +*/
  49 +#define FS_ONLT_WRITE "wb"
  50 +
  51 +/*
  52 + 用途:用于读取和写入文件内容,但会先清空文件。
  53 + 权限:允许读取和写入文件内容。
  54 + 文件存在性:如果文件存在,其内容会被清空;如果文件不存在,会创建一个新文件。
  55 + 文件指针位置:文件打开后,文件指针位于文件的开头,准备写入新内容。
  56 + 注意事项:使用w+模式打开文件时,会丢失文件中的原有内容。但在写入新内容后,仍然可以读取文件内容。
  57 +*/
  58 +#define FS_READ_AND_WRITE_CLEAR "w+b"
  59 +
  60 +/*
  61 + 用途:用于在文件末尾追加内容。
  62 + 权限:只允许写入文件内容,不允许读取。
  63 + 文件存在性:如果文件存在,写入操作会追加到文件末尾;如果文件不存在,会创建一个新文件。
  64 + 文件指针位置:文件打开后,文件指针位于文件末尾,准备追加新内容。
  65 +*/
  66 +#define FS_APPEND "ab"
  67 +
  68 +/*
  69 + 用途:用于读取和写入文件内容,但写入操作会追加到文件末尾。
  70 + 权限:允许读取和写入文件内容。
  71 + 文件存在性:如果文件存在,写入操作会追加到文件末尾;如果文件不存在,会创建一个新文件。
  72 + 文件指针位置:文件打开后,文件指针位于文件末尾,但可以通过fseek等函数移动到文件的其他位置进行读取或写入。
  73 +*/
  74 +#define FS_READ_AND_APPEND "a+b"
  75 +
  76 +
  77 +
24 /* Exported types ------------------------------------------------------------*/ 78 /* Exported types ------------------------------------------------------------*/
25 79
26 80
@@ -28,7 +82,7 @@ extern "C" { @@ -28,7 +82,7 @@ extern "C" {
28 T_JZsdkReturnCode JZsdk_RunSystemCmd(char *systemCmd); 82 T_JZsdkReturnCode JZsdk_RunSystemCmd(char *systemCmd);
29 T_JZsdkReturnCode JZsdk_check_file_exists(const char* file_path) ; 83 T_JZsdkReturnCode JZsdk_check_file_exists(const char* file_path) ;
30 T_JZsdkReturnCode JZsdk_create_file(const char* file_path) ; 84 T_JZsdkReturnCode JZsdk_create_file(const char* file_path) ;
31 -T_JZsdkReturnCode JZsdk_delete_file(const char* file_path) ; 85 +T_JZsdkReturnCode JZsdk_Osal_delete(const char* file_path);
32 T_JZsdkReturnCode JZsdk_strings_suffix_comparison_onlyStr(const unsigned char* Strings, const unsigned char *suffix) ; 86 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) ; 87 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); 88 T_JZsdkReturnCode JZsdk_Osal_Mkdir(const char *filePath);
@@ -40,6 +94,23 @@ T_JZsdkReturnCode JZsdk_copy_file_byC(const char* source_path, const char* dest_ @@ -40,6 +94,23 @@ T_JZsdkReturnCode JZsdk_copy_file_byC(const char* source_path, const char* dest_
40 T_JZsdkReturnCode JZsdk_RunSystemCmd_ReturnResult(char *systemCmd, unsigned int *result); 94 T_JZsdkReturnCode JZsdk_RunSystemCmd_ReturnResult(char *systemCmd, unsigned int *result);
41 T_JZsdkReturnCode JZsdk_RunSystemCmd_ReturnResult_Str(char *systemCmd, unsigned char *str); 95 T_JZsdkReturnCode JZsdk_RunSystemCmd_ReturnResult_Str(char *systemCmd, unsigned char *str);
42 T_JZsdkReturnCode JZsdk_Sync(); 96 T_JZsdkReturnCode JZsdk_Sync();
  97 +T_JZsdkReturnCode JZsdk_Osal_Stat(const char *filePath, T_JZsdkFileInfo *fileInfo);
  98 +T_JZsdkReturnCode JZsdk_Osal_Rename(const char *oldFilePath, const char *newFilePath);
  99 +
  100 +
  101 +T_JZsdkReturnCode JZsdk_Osal_FileOpen(const char *fileName, const char *fileMode, T_JZsdkFileHandle *fileObj);
  102 +T_JZsdkReturnCode JZsdk_Osal_FileClose(T_JZsdkFileHandle fileObj);
  103 +T_JZsdkReturnCode JZsdk_Osal_FileWrite_U8(T_JZsdkFileHandle fileObj, const U8_t *buf, U32_t len, U32_t *realLen);
  104 +T_JZsdkReturnCode JZsdk_Osal_FileRead_U8(T_JZsdkFileHandle fileObj, U8_t *buf, U32_t len, U32_t *realLen);
  105 +T_JZsdkReturnCode JZsdk_Osal_FileSeek(T_JZsdkFileHandle fileObj, U32_t offset);
  106 +T_JZsdkReturnCode JZsdk_Osal_FileSync(T_JZsdkFileHandle fileObj);
  107 +
  108 +
  109 +T_JZsdkReturnCode JZsdk_Osal_DirOpen(const char *filePath, T_JZsdkDirHandle *dirObj);
  110 +T_JZsdkReturnCode JZsdk_Osal_DirClose(T_JZsdkDirHandle dirObj);
  111 +T_JZsdkReturnCode JZsdk_Osal_DirRead(T_JZsdkDirHandle dirObj, T_JZsdkFileInfo *fileInfo);
  112 +T_JZsdkReturnCode JZsdk_Osal_Unlink(const char *filePath);
  113 +
43 114
44 #ifdef __cplusplus 115 #ifdef __cplusplus
45 } 116 }
@@ -4,11 +4,17 @@ @@ -4,11 +4,17 @@
4 4
5 5
6 6
7 -static T_JZsdkOsalHandler* g_osalHandler = NULL; 7 +static T_JZsdkOsalHandler *g_osalHandler = NULL;
  8 +static T_JZsdkFSHandler *g_FsHandler = NULL;
8 9
9 static T_JZsdkReturnCode JZsdk_Platform_RegOsalHandler(const T_JZsdkOsalHandler *osalHandler) 10 static T_JZsdkReturnCode JZsdk_Platform_RegOsalHandler(const T_JZsdkOsalHandler *osalHandler)
10 { 11 {
11 - g_osalHandler = (T_JZsdkOsalHandler*)osalHandler; // 存储传入的 OSAL 处理器 12 + g_osalHandler = malloc(sizeof(T_JZsdkOsalHandler));
  13 + if (osalHandler == NULL) {
  14 + return JZ_ERROR_SYSTEM_MODULE_CODE_MEMORY_ALLOC_FAILED; // 处理内存分配失败的情况
  15 + }
  16 +
  17 + memcpy(g_osalHandler, osalHandler, sizeof(T_JZsdkOsalHandler));
12 18
13 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 19 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
14 } 20 }
@@ -18,6 +24,25 @@ T_JZsdkOsalHandler *JZsdk_Platform_GetOsalHandler(void) @@ -18,6 +24,25 @@ T_JZsdkOsalHandler *JZsdk_Platform_GetOsalHandler(void)
18 return g_osalHandler; // 返回已注册的 OSAL 处理器 24 return g_osalHandler; // 返回已注册的 OSAL 处理器
19 } 25 }
20 26
  27 +
  28 +static T_JZsdkReturnCode JZsdk_RegFsHandler(const T_JZsdkFSHandler *FsHandler)
  29 +{
  30 + g_FsHandler = malloc(sizeof(T_JZsdkFSHandler));
  31 + if (g_FsHandler == NULL) {
  32 + return JZ_ERROR_SYSTEM_MODULE_CODE_MEMORY_ALLOC_FAILED; // 处理内存分配失败的情况
  33 + }
  34 +
  35 + memcpy(g_FsHandler, FsHandler, sizeof(T_JZsdkFSHandler));
  36 +
  37 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  38 +}
  39 +
  40 +T_JZsdkFSHandler *JZsdk_GetFsHandler(void)
  41 +{
  42 + return g_FsHandler; // 返回已注册的 FS 处理器
  43 +}
  44 +
  45 +
21 T_JZsdkReturnCode JZsdk_OsalInit() 46 T_JZsdkReturnCode JZsdk_OsalInit()
22 { 47 {
23 T_JZsdkOsalHandler osalHandler = { 48 T_JZsdkOsalHandler osalHandler = {
@@ -40,7 +65,27 @@ T_JZsdkReturnCode JZsdk_OsalInit() @@ -40,7 +65,27 @@ T_JZsdkReturnCode JZsdk_OsalInit()
40 .GetRandomNum = JZsdk_Osal_GetRandomNum, 65 .GetRandomNum = JZsdk_Osal_GetRandomNum,
41 }; 66 };
42 67
  68 + T_JZsdkFSHandler fileSystemHandler = {
  69 + .FileOpen = JZsdk_Osal_FileOpen,
  70 + .FileClose = JZsdk_Osal_FileClose,
  71 + .FileWrite_U8 = JZsdk_Osal_FileWrite_U8,
  72 + .FileRead_U8 = JZsdk_Osal_FileRead_U8,
  73 + .FileSync = JZsdk_Osal_FileSync,
  74 + .FileSeek = JZsdk_Osal_FileSeek,
  75 + .DirOpen = JZsdk_Osal_DirOpen,
  76 + .DirClose = JZsdk_Osal_DirClose,
  77 + .DirRead = JZsdk_Osal_DirRead,
  78 + .Mkdir = JZsdk_Osal_Mkdir,
  79 + .Unlink = JZsdk_Osal_Unlink,
  80 + .Rename = JZsdk_Osal_Rename,
  81 + .Stat = JZsdk_Osal_Stat,
  82 + };
  83 +
43 JZsdk_Platform_RegOsalHandler(&osalHandler); 84 JZsdk_Platform_RegOsalHandler(&osalHandler);
  85 + printf("JZsdk Osal handler registered\n");
  86 +
  87 + JZsdk_RegFsHandler(&fileSystemHandler);
  88 + printf("JZsdk File system handler registered\n");
44 89
45 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 90 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
46 } 91 }
@@ -35,6 +35,7 @@ extern "C" { @@ -35,6 +35,7 @@ extern "C" {
35 * 35 *
36 * ******************/ 36 * ******************/
37 typedef struct { 37 typedef struct {
  38 + //任务名 任务函数 任务栈大小 任务参数 任务句柄
38 T_JZsdkReturnCode (*TaskCreate)(const char *name, void *(*taskFunc)(void *), 39 T_JZsdkReturnCode (*TaskCreate)(const char *name, void *(*taskFunc)(void *),
39 unsigned int stackSize, void *arg, T_JZTaskHandle *task); 40 unsigned int stackSize, void *arg, T_JZTaskHandle *task);
40 41
@@ -72,6 +73,40 @@ typedef struct { @@ -72,6 +73,40 @@ typedef struct {
72 } T_JZsdkOsalHandler; 73 } T_JZsdkOsalHandler;
73 74
74 75
  76 +/****************
  77 + *
  78 + * filesysterm 文件系统权柄
  79 + *
  80 + *
  81 + * ******************/
  82 +typedef struct {
  83 + T_JZsdkReturnCode (*FileOpen)(const char *fileName, const char *fileMode, T_JZsdkFileHandle *fileObj);
  84 +
  85 + T_JZsdkReturnCode (*FileClose)(T_JZsdkFileHandle fileObj);
  86 +
  87 + T_JZsdkReturnCode (*FileWrite_U8)(T_JZsdkFileHandle fileObj, const U8_t *buf, U32_t len, U32_t *realLen);
  88 +
  89 + T_JZsdkReturnCode (*FileRead_U8)(T_JZsdkFileHandle fileObj, U8_t *buf, U32_t len, U32_t *realLen);
  90 +
  91 + T_JZsdkReturnCode (*FileSeek)(T_JZsdkFileHandle fileObj, U32_t offset);
  92 +
  93 + T_JZsdkReturnCode (*FileSync)(T_JZsdkFileHandle fileObj);
  94 +
  95 + T_JZsdkReturnCode (*DirOpen)(const char *filePath, T_JZsdkDirHandle *dirObj);
  96 +
  97 + T_JZsdkReturnCode (*DirClose)(T_JZsdkDirHandle dirObj);
  98 +
  99 + T_JZsdkReturnCode (*DirRead)(T_JZsdkDirHandle dirObj, T_JZsdkFileInfo *fileInfo);
  100 +
  101 + T_JZsdkReturnCode (*Mkdir)(const char *filePath);
  102 +
  103 + T_JZsdkReturnCode (*Unlink)(const char *filePath);
  104 +
  105 + T_JZsdkReturnCode (*Rename)(const char *oldFilePath, const char *newFilePath);
  106 +
  107 + T_JZsdkReturnCode (*Stat)(const char *filePath, T_JZsdkFileInfo *fileInfo);
  108 +} T_JZsdkFSHandler;
  109 +
75 110
76 /* Exported macro ------------------------------------------------------------*/ 111 /* Exported macro ------------------------------------------------------------*/
77 112
@@ -82,6 +117,7 @@ typedef struct { @@ -82,6 +117,7 @@ typedef struct {
82 /* Exported functions --------------------------------------------------------*/ 117 /* Exported functions --------------------------------------------------------*/
83 T_JZsdkReturnCode JZsdk_OsalInit(); 118 T_JZsdkReturnCode JZsdk_OsalInit();
84 T_JZsdkOsalHandler *JZsdk_Platform_GetOsalHandler(void); 119 T_JZsdkOsalHandler *JZsdk_Platform_GetOsalHandler(void);
  120 +T_JZsdkFSHandler *JZsdk_GetFsHandler(void);
85 121
86 122
87 #ifdef __cplusplus 123 #ifdef __cplusplus
1 #include <stdio.h> 1 #include <stdio.h>
2 #include <stdlib.h> 2 #include <stdlib.h>
3 #include <pthread.h> 3 #include <pthread.h>
  4 +#include <string.h> // Include this for strncpy
4 5
5 #include "./JZsdk_Task.h" 6 #include "./JZsdk_Task.h"
6 7
@@ -12,13 +13,15 @@ T_JZsdkReturnCode JZsdk_Osal_TaskCreate(const char *name, void *(*taskFunc)(void @@ -12,13 +13,15 @@ T_JZsdkReturnCode JZsdk_Osal_TaskCreate(const char *name, void *(*taskFunc)(void
12 13
13 //为任务句柄分配内存空间,大小为sizeof(pthread_t)。如果内存分配失败,则返回一个错误代码 14 //为任务句柄分配内存空间,大小为sizeof(pthread_t)。如果内存分配失败,则返回一个错误代码
14 *task = malloc(sizeof(pthread_t)); 15 *task = malloc(sizeof(pthread_t));
15 - if (*task == NULL) { 16 + if (*task == NULL)
  17 + {
16 return JZ_ERROR_SYSTEM_MODULE_CODE_MEMORY_ALLOC_FAILED; 18 return JZ_ERROR_SYSTEM_MODULE_CODE_MEMORY_ALLOC_FAILED;
17 } 19 }
18 20
19 //使用pthread_create函数创建一个新的线程,传递给它任务函数指针taskFunc和参数arg。如果创建线程失败,则返回一个错误代码 21 //使用pthread_create函数创建一个新的线程,传递给它任务函数指针taskFunc和参数arg。如果创建线程失败,则返回一个错误代码
20 result = pthread_create(*task, NULL, taskFunc, arg); 22 result = pthread_create(*task, NULL, taskFunc, arg);
21 - if (result != 0) { 23 + if (result != 0)
  24 + {
22 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 25 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
23 } 26 }
24 27
@@ -28,8 +31,9 @@ T_JZsdkReturnCode JZsdk_Osal_TaskCreate(const char *name, void *(*taskFunc)(void @@ -28,8 +31,9 @@ T_JZsdkReturnCode JZsdk_Osal_TaskCreate(const char *name, void *(*taskFunc)(void
28 strncpy(nameDealed, name, sizeof(nameDealed) - 1); 31 strncpy(nameDealed, name, sizeof(nameDealed) - 1);
29 32
30 //使用pthread_setname_np函数将任务线程的名称设置为nameDealed。如果设置线程名称失败,则返回一个错误代码 33 //使用pthread_setname_np函数将任务线程的名称设置为nameDealed。如果设置线程名称失败,则返回一个错误代码
31 - result = pthread_setname_np(*(pthread_t *) *task, nameDealed);  
32 - if (result != 0) { 34 + result = pthread_setname_np( *(pthread_t *) *task, nameDealed);
  35 + if (result != 0)
  36 + {
33 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 37 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
34 } 38 }
35 39
1 #include <sys/time.h> // 为了使用 gettimeofday 函数 1 #include <sys/time.h> // 为了使用 gettimeofday 函数
2 #include <time.h> // 为了使用 time 函数 2 #include <time.h> // 为了使用 time 函数
  3 +#include <unistd.h>
3 4
4 #include "./JZsdk_TimeR.h" 5 #include "./JZsdk_TimeR.h"
5 6
@@ -91,6 +91,9 @@ T_JZsdkReturnCode TaskManagement_SubmitTask(void (*task_function)(void*), void* @@ -91,6 +91,9 @@ T_JZsdkReturnCode TaskManagement_SubmitTask(void (*task_function)(void*), void*
91 static void* TaskManagement_ThreadFunction(void* arg) 91 static void* TaskManagement_ThreadFunction(void* arg)
92 { 92 {
93 t_ThreadPool* pool = (t_ThreadPool*)arg; 93 t_ThreadPool* pool = (t_ThreadPool*)arg;
  94 +
  95 + JZSDK_LOG_DEBUG("TaskManagement_Thread Have Create");
  96 +
94 while (1) 97 while (1)
95 { 98 {
96 pthread_mutex_lock(&pool->lock); 99 pthread_mutex_lock(&pool->lock);
@@ -21,6 +21,7 @@ @@ -21,6 +21,7 @@
21 #include "MediaProc/MediaProc.h" 21 #include "MediaProc/MediaProc.h"
22 #include "UI_control/WidegMgmt/JZsdk_Widget.h" 22 #include "UI_control/WidegMgmt/JZsdk_Widget.h"
23 #include "DeviceConfig/DeviceConfig.h" 23 #include "DeviceConfig/DeviceConfig.h"
  24 +#include "CommonMod/CommonMod.h"
24 25
25 #include "JZsdk_Hal.h" 26 #include "JZsdk_Hal.h"
26 27
@@ -50,7 +51,9 @@ static int WorkMode = JZ_FLAGCODE_OFF; @@ -50,7 +51,9 @@ static int WorkMode = JZ_FLAGCODE_OFF;
50 static int g_All_filter_Mode = JZ_FLAGCODE_OFF; //用于m30的滤波开关 51 static int g_All_filter_Mode = JZ_FLAGCODE_OFF; //用于m30的滤波开关
51 static int StartupPriorityNum = JZ_FLAGCODE_OFF; //优先启动项值 52 static int StartupPriorityNum = JZ_FLAGCODE_OFF; //优先启动项值
52 53
53 - 54 +static int g_device_InitFlag = JZ_FLAGCODE_OFF; //基础配置初始化标志位,该标志位用于判断设备是否已经完成准备就绪,目前主要影响的是预设任务
  55 +static int g_baseconfig_InitFlag = JZ_FLAGCODE_OFF; //基础配置初始化标志位,该标志位用于判断设备是否已经完成baseconfig 目前用处影响g_device_InitFlag
  56 +static int g_Main_WorkMode_InitFlag = JZ_FLAGCODE_OFF; //基础配置初始化标志位,该标志位用于判断设备是否已经完成连接与启动播放 目前用处影响g_device_InitFlag
54 57
55 /******************* 58 /*******************
56 * 59 *
@@ -135,11 +138,19 @@ int Main_Device_Wheather_Use() @@ -135,11 +138,19 @@ int Main_Device_Wheather_Use()
135 138
136 T_JZsdkReturnCode Main_APP_Psdk() 139 T_JZsdkReturnCode Main_APP_Psdk()
137 { 140 {
  141 + int value[5] = {0, 0, 0, 0, 0};
  142 +
138 //sdklib加载 143 //sdklib加载
139 JZsdk_LibInit(); 144 JZsdk_LibInit();
140 145
  146 + //hal加载
  147 + JZsdk_Hal_Init();
  148 +
141 JZSDK_LOG_INFO("%x,PsdkVersion%x.%x.%x.%x\n",DEVICE_VERSION,MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION); 149 JZSDK_LOG_INFO("%x,PsdkVersion%x.%x.%x.%x\n",DEVICE_VERSION,MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION);
142 150
  151 + //通用模块初始化
  152 + CommonMod_Init();
  153 +
143 //引脚初始化 154 //引脚初始化
144 Ircut_Init(); 155 Ircut_Init();
145 156
@@ -155,18 +166,20 @@ T_JZsdkReturnCode Main_APP_Psdk() @@ -155,18 +166,20 @@ T_JZsdkReturnCode Main_APP_Psdk()
155 //喊话器功能被打开时 166 //喊话器功能被打开时
156 #ifdef MEGAPHONE_CONFIG_STATUS_ON 167 #ifdef MEGAPHONE_CONFIG_STATUS_ON
157 168
158 - //音频库初始化  
159 - AudioDeal_Init(); 169 + //音频库初始化
  170 + AudioDeal_Init();
160 171
161 #endif 172 #endif
162 173
163 if (DEVICE_VERSION == TF_A1) 174 if (DEVICE_VERSION == TF_A1)
164 { 175 {
165 //串口设备1初始化 176 //串口设备1初始化
166 - //JZsdk_HalPort_Init_WithDefault(UART_DEV_1); 177 + //value[0] = UART_DEV1_BITRATE;
  178 + //JZsdk_HalPort_Init(UART_DEV_1, value);
167 179
168 //串口设备2初始化 180 //串口设备2初始化
169 - JZsdk_HalPort_Init_WithDefault(UART_DEV_2); 181 + value[0] = UART_DEV2_BITRATE;
  182 + JZsdk_HalPort_Init(UART_DEV_2, value);
170 183
171 //喊话器初始化 184 //喊话器初始化
172 Megaphone_Init(); 185 Megaphone_Init();
@@ -186,19 +199,22 @@ T_JZsdkReturnCode Main_APP_Psdk() @@ -186,19 +199,22 @@ T_JZsdkReturnCode Main_APP_Psdk()
186 else if (DEVICE_VERSION == JZ_H1E) 199 else if (DEVICE_VERSION == JZ_H1E)
187 { 200 {
188 //串口设备1初始化 201 //串口设备1初始化
189 - //JZsdk_HalPort_Init_WithDefault(UART_DEV_1); 202 + //value[0] = UART_DEV1_BITRATE;
  203 + //JZsdk_HalPort_Init(UART_DEV_1, value);
190 204
191 //喊话器初始化 205 //喊话器初始化
192 - Megaphone_Init(JZ_MODULE_CONTROL_WAY_INDEPENDENT); 206 + Megaphone_Init();
193 } 207 }
194 208
195 else if (DEVICE_VERSION == JZ_H1T) 209 else if (DEVICE_VERSION == JZ_H1T)
196 { 210 {
197 //串口设备1初始化 211 //串口设备1初始化
198 - //JZsdk_HalPort_Init_WithDefault(UART_DEV_1); 212 + //value[0] = UART_DEV1_BITRATE;
  213 + //JZsdk_HalPort_Init(UART_DEV_1, value);
199 214
200 //4g设备初始化 215 //4g设备初始化
201 - JZsdk_HalPort_Init_WithDefault(UART_4G); 216 + value[0] = COMM_4G_UART_BITRATE;
  217 + JZsdk_HalPort_Init(UART_4G, value);
202 218
203 //喊话器初始化 219 //喊话器初始化
204 Megaphone_Init(); 220 Megaphone_Init();
@@ -210,12 +226,14 @@ T_JZsdkReturnCode Main_APP_Psdk() @@ -210,12 +226,14 @@ T_JZsdkReturnCode Main_APP_Psdk()
210 else if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) 226 else if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T)
211 { 227 {
212 //串口设备1初始化 228 //串口设备1初始化
213 - // JZsdk_HalPort_Init_WithDefault(UART_DEV_1); 229 + //value[0] = UART_DEV1_BITRATE;
  230 + //JZsdk_HalPort_Init(UART_DEV_1, value);
214 231
215 if (DEVICE_VERSION == JZ_H150T) 232 if (DEVICE_VERSION == JZ_H150T)
216 { 233 {
217 //4g设备初始化 234 //4g设备初始化
218 - JZsdk_HalPort_Init_WithDefault(UART_4G); 235 + value[0] = COMM_4G_UART_BITRATE;
  236 + JZsdk_HalPort_Init(UART_4G, value);
219 } 237 }
220 238
221 //喊话器初始化 239 //喊话器初始化
@@ -231,7 +249,8 @@ T_JZsdkReturnCode Main_APP_Psdk() @@ -231,7 +249,8 @@ T_JZsdkReturnCode Main_APP_Psdk()
231 else if (DEVICE_VERSION == JZ_H10) 249 else if (DEVICE_VERSION == JZ_H10)
232 { 250 {
233 //串口设备1初始化 251 //串口设备1初始化
234 - // JZsdk_HalPort_Init_WithDefault(UART_DEV_1); 252 + //value[0] = UART_DEV1_BITRATE;
  253 + //JZsdk_HalPort_Init(UART_DEV_1, value);
235 254
236 //喊话器初始化 255 //喊话器初始化
237 Megaphone_Init(); 256 Megaphone_Init();
@@ -243,10 +262,12 @@ T_JZsdkReturnCode Main_APP_Psdk() @@ -243,10 +262,12 @@ T_JZsdkReturnCode Main_APP_Psdk()
243 else if (DEVICE_VERSION == JZ_H10T) 262 else if (DEVICE_VERSION == JZ_H10T)
244 { 263 {
245 //串口设备1初始化 264 //串口设备1初始化
246 - //JZsdk_HalPort_Init_WithDefault(UART_DEV_1); 265 + //value[0] = UART_DEV1_BITRATE;
  266 + //JZsdk_HalPort_Init(UART_DEV_1, value);
247 267
248 //4g设备初始化 268 //4g设备初始化
249 - JZsdk_HalPort_Init_WithDefault(UART_4G); 269 + value[0] = COMM_4G_UART_BITRATE;
  270 + JZsdk_HalPort_Init(UART_4G, value);
250 271
251 //喊话器初始化 272 //喊话器初始化
252 Megaphone_Init(); 273 Megaphone_Init();
@@ -258,10 +279,12 @@ T_JZsdkReturnCode Main_APP_Psdk() @@ -258,10 +279,12 @@ T_JZsdkReturnCode Main_APP_Psdk()
258 else if (DEVICE_VERSION == JZ_U3) 279 else if (DEVICE_VERSION == JZ_U3)
259 { 280 {
260 //串口设备1初始化 281 //串口设备1初始化
261 - //JZsdk_HalPort_Init_WithDefault(UART_DEV_1); 282 + //value[0] = UART_DEV1_BITRATE;
  283 + //JZsdk_HalPort_Init(UART_DEV_1, value);
262 284
263 //串口设备2初始化 285 //串口设备2初始化
264 - JZsdk_HalPort_Init_WithDefault(UART_DEV_2); 286 + value[0] = UART_DEV2_BITRATE;
  287 + JZsdk_HalPort_Init(UART_DEV_2, value);
265 288
266 //喊话器初始化 289 //喊话器初始化
267 Megaphone_Init(); 290 Megaphone_Init();
@@ -281,10 +304,12 @@ T_JZsdkReturnCode Main_APP_Psdk() @@ -281,10 +304,12 @@ T_JZsdkReturnCode Main_APP_Psdk()
281 else if (DEVICE_VERSION == JZ_U3S) 304 else if (DEVICE_VERSION == JZ_U3S)
282 { 305 {
283 //串口设备1初始化 306 //串口设备1初始化
284 - //JZsdk_HalPort_Init_WithDefault(UART_DEV_1); 307 + //value[0] = UART_DEV1_BITRATE;
  308 + //JZsdk_HalPort_Init(UART_DEV_1, value);
285 309
286 //串口设备2初始化 310 //串口设备2初始化
287 - JZsdk_HalPort_Init_WithDefault(UART_DEV_2); 311 + value[0] = UART_DEV2_BITRATE;
  312 + JZsdk_HalPort_Init(UART_DEV_2, value);
288 313
289 //喊话器初始化 314 //喊话器初始化
290 Megaphone_Init(); 315 Megaphone_Init();
@@ -307,10 +332,12 @@ T_JZsdkReturnCode Main_APP_Psdk() @@ -307,10 +332,12 @@ T_JZsdkReturnCode Main_APP_Psdk()
307 else if (DEVICE_VERSION == JZ_U3D) 332 else if (DEVICE_VERSION == JZ_U3D)
308 { 333 {
309 //串口设备1初始化 334 //串口设备1初始化
310 - //JZsdk_HalPort_Init_WithDefault(UART_DEV_1); 335 + //value[0] = UART_DEV1_BITRATE;
  336 + //JZsdk_HalPort_Init(UART_DEV_1, value);
311 337
312 //串口设备2初始化 338 //串口设备2初始化
313 - JZsdk_HalPort_Init_WithDefault(UART_DEV_2); 339 + value[0] = UART_DEV2_BITRATE;
  340 + JZsdk_HalPort_Init(UART_DEV_2, value);
314 341
315 //喊话器初始化 342 //喊话器初始化
316 Megaphone_Init(); 343 Megaphone_Init();
@@ -330,10 +357,12 @@ T_JZsdkReturnCode Main_APP_Psdk() @@ -330,10 +357,12 @@ T_JZsdkReturnCode Main_APP_Psdk()
330 else if (DEVICE_VERSION == JZ_U30) 357 else if (DEVICE_VERSION == JZ_U30)
331 { 358 {
332 //串口设备1初始化 359 //串口设备1初始化
333 - //JZsdk_HalPort_Init_WithDefault(UART_DEV_1); 360 + //value[0] = UART_DEV1_BITRATE;
  361 + //JZsdk_HalPort_Init(UART_DEV_1, value);
334 362
335 //串口设备2初始化 363 //串口设备2初始化
336 - JZsdk_HalPort_Init_WithDefault(UART_DEV_2); 364 + value[0] = UART_DEV2_BITRATE;
  365 + JZsdk_HalPort_Init(UART_DEV_2, value);
337 366
338 //喊话器初始化 367 //喊话器初始化
339 Megaphone_Init(); 368 Megaphone_Init();
@@ -361,21 +390,29 @@ T_JZsdkReturnCode Main_APP_Psdk() @@ -361,21 +390,29 @@ T_JZsdkReturnCode Main_APP_Psdk()
361 JZSDK_WidgetMgMT_Init(); 390 JZSDK_WidgetMgMT_Init();
362 391
363 //初始化app模式 392 //初始化app模式
364 - JZsdk_Set_Psdk_UIcontrol_UseFlag(1); 393 + JZsdk_HalPort_SetUseFlag(DEVICE_PSDK ,JZ_FLAGCODE_ON);
365 394
366 Main_WorkModeSet(JZ_FLAGCODE_ON); 395 Main_WorkModeSet(JZ_FLAGCODE_ON);
367 - 396 +
  397 + g_baseconfig_InitFlag = JZ_FLAGCODE_ON;
368 } 398 }
369 399
370 400
371 401
372 int Main_APP_Uart() 402 int Main_APP_Uart()
373 { 403 {
  404 + int value[5] = {0, 0, 0, 0, 0};
  405 +
374 //lib库初始化 406 //lib库初始化
375 JZsdk_LibInit(); 407 JZsdk_LibInit();
  408 +
  409 + JZsdk_Hal_Init();
376 410
377 JZSDK_LOG_INFO("0x%x,UartVersion%x.%x.%x.%x\n",DEVICE_VERSION,MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION); 411 JZSDK_LOG_INFO("0x%x,UartVersion%x.%x.%x.%x\n",DEVICE_VERSION,MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION);
378 412
  413 + //通用模块
  414 + CommonMod_Init();
  415 +
379 //引脚初始化 416 //引脚初始化
380 Ircut_Init(); 417 Ircut_Init();
381 418
@@ -394,7 +431,8 @@ int Main_APP_Uart() @@ -394,7 +431,8 @@ int Main_APP_Uart()
394 if (DEVICE_VERSION == JZ_H1E) 431 if (DEVICE_VERSION == JZ_H1E)
395 { 432 {
396 //串口设备1初始化 433 //串口设备1初始化
397 - JZsdk_HalPort_Init_WithDefault(UART_DEV_1); 434 + value[0] = UART_DEV1_BITRATE;
  435 + JZsdk_HalPort_Init(UART_DEV_1, value);
398 436
399 //喊话器初始化 437 //喊话器初始化
400 Megaphone_Init(); 438 Megaphone_Init();
@@ -403,10 +441,12 @@ int Main_APP_Uart() @@ -403,10 +441,12 @@ int Main_APP_Uart()
403 if (DEVICE_VERSION == JZ_H1T) 441 if (DEVICE_VERSION == JZ_H1T)
404 { 442 {
405 //串口设备1初始化 443 //串口设备1初始化
406 - JZsdk_HalPort_Init_WithDefault(UART_DEV_1); 444 + value[0] = UART_DEV1_BITRATE;
  445 + JZsdk_HalPort_Init(UART_DEV_1, value);
407 446
408 //4g设备初始化 447 //4g设备初始化
409 - JZsdk_HalPort_Init_WithDefault(UART_4G); 448 + value[0] = COMM_4G_UART_BITRATE;
  449 + JZsdk_HalPort_Init(UART_4G, value);
410 450
411 //喊话器初始化 451 //喊话器初始化
412 Megaphone_Init(); 452 Megaphone_Init();
@@ -425,7 +465,8 @@ int Main_APP_Uart() @@ -425,7 +465,8 @@ int Main_APP_Uart()
425 if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) 465 if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T)
426 { 466 {
427 //串口设备1初始化 467 //串口设备1初始化
428 - JZsdk_HalPort_Init_WithDefault(UART_DEV_1); 468 + value[0] = UART_DEV1_BITRATE;
  469 + JZsdk_HalPort_Init(UART_DEV_1, value);
429 470
430 //网口初始化 471 //网口初始化
431 JZsdk_NetWork_Init(); 472 JZsdk_NetWork_Init();
@@ -433,7 +474,8 @@ int Main_APP_Uart() @@ -433,7 +474,8 @@ int Main_APP_Uart()
433 if (DEVICE_VERSION == JZ_H150T) 474 if (DEVICE_VERSION == JZ_H150T)
434 { 475 {
435 //4g设备初始化 476 //4g设备初始化
436 - JZsdk_HalPort_Init_WithDefault(UART_4G); 477 + value[0] = COMM_4G_UART_BITRATE;
  478 + JZsdk_HalPort_Init(UART_4G, value);
437 } 479 }
438 480
439 //云台初始化 481 //云台初始化
@@ -449,7 +491,8 @@ int Main_APP_Uart() @@ -449,7 +491,8 @@ int Main_APP_Uart()
449 if (DEVICE_VERSION == JZ_H10) 491 if (DEVICE_VERSION == JZ_H10)
450 { 492 {
451 //串口设备1初始化 493 //串口设备1初始化
452 - JZsdk_HalPort_Init_WithDefault(UART_DEV_1); 494 + value[0] = UART_DEV1_BITRATE;
  495 + JZsdk_HalPort_Init(UART_DEV_1, value);
453 496
454 //H10和10t固定打开滤波 497 //H10和10t固定打开滤波
455 int filter_mode = JZ_FLAGCODE_ON; 498 int filter_mode = JZ_FLAGCODE_ON;
@@ -465,10 +508,12 @@ int Main_APP_Uart() @@ -465,10 +508,12 @@ int Main_APP_Uart()
465 if (DEVICE_VERSION == JZ_H10T) 508 if (DEVICE_VERSION == JZ_H10T)
466 { 509 {
467 //串口设备1初始化 510 //串口设备1初始化
468 - JZsdk_HalPort_Init_WithDefault(UART_DEV_1); 511 + value[0] = UART_DEV1_BITRATE;
  512 + JZsdk_HalPort_Init(UART_DEV_1, value);
469 513
470 //4g设备初始化 514 //4g设备初始化
471 - JZsdk_HalPort_Init_WithDefault(UART_4G); 515 + value[0] = COMM_4G_UART_BITRATE;
  516 + JZsdk_HalPort_Init(UART_4G, value);
472 517
473 //H10和10t固定打开滤波 518 //H10和10t固定打开滤波
474 int filter_mode = JZ_FLAGCODE_ON; 519 int filter_mode = JZ_FLAGCODE_ON;
@@ -484,10 +529,12 @@ int Main_APP_Uart() @@ -484,10 +529,12 @@ int Main_APP_Uart()
484 if (DEVICE_VERSION == JZ_U3) 529 if (DEVICE_VERSION == JZ_U3)
485 { 530 {
486 //串口设备1初始化 531 //串口设备1初始化
487 - JZsdk_HalPort_Init_WithDefault(UART_DEV_1); 532 + value[0] = UART_DEV1_BITRATE;
  533 + JZsdk_HalPort_Init(UART_DEV_1, value);
488 534
489 //串口设备2初始化 535 //串口设备2初始化
490 - JZsdk_HalPort_Init_WithDefault(UART_DEV_2); 536 + value[0] = UART_DEV2_BITRATE;
  537 + JZsdk_HalPort_Init(UART_DEV_2, value);
491 538
492 //喊话器初始化 539 //喊话器初始化
493 Megaphone_Init(); 540 Megaphone_Init();
@@ -501,7 +548,7 @@ int Main_APP_Uart() @@ -501,7 +548,7 @@ int Main_APP_Uart()
501 delayMs(1000); 548 delayMs(1000);
502 549
503 //消息订阅初始化 550 //消息订阅初始化
504 - HalSend_type1Send_MessageSubcription_Control(UART_DEV_2, JZ_FLAGCODE_ON); 551 + HalSend_type1Send_MessageSubcription_Control(UART_DEV_2, JZ_FLAGCODE_OFF);
505 552
506 // //测试需要开启亮度 553 // //测试需要开启亮度
507 // JZsdk_Uart_SearchLight_Control(UART_DEV_1, 1); 554 // JZsdk_Uart_SearchLight_Control(UART_DEV_1, 1);
@@ -512,10 +559,12 @@ int Main_APP_Uart() @@ -512,10 +559,12 @@ int Main_APP_Uart()
512 else if (DEVICE_VERSION == JZ_U3S) 559 else if (DEVICE_VERSION == JZ_U3S)
513 { 560 {
514 //串口设备1初始化 561 //串口设备1初始化
515 - JZsdk_HalPort_Init_WithDefault(UART_DEV_1); 562 + value[0] = UART_DEV1_BITRATE;
  563 + JZsdk_HalPort_Init(UART_DEV_1, value);
516 564
517 //串口设备2初始化 565 //串口设备2初始化
518 - JZsdk_HalPort_Init_WithDefault(UART_DEV_2); 566 + value[0] = UART_DEV2_BITRATE;
  567 + JZsdk_HalPort_Init(UART_DEV_2, value);
519 568
520 //喊话器初始化 569 //喊话器初始化
521 Megaphone_Init(); 570 Megaphone_Init();
@@ -538,10 +587,12 @@ int Main_APP_Uart() @@ -538,10 +587,12 @@ int Main_APP_Uart()
538 else if (DEVICE_VERSION == JZ_U3D) 587 else if (DEVICE_VERSION == JZ_U3D)
539 { 588 {
540 //串口设备1初始化 589 //串口设备1初始化
541 - JZsdk_HalPort_Init_WithDefault(UART_DEV_1); 590 + value[0] = UART_DEV1_BITRATE;
  591 + JZsdk_HalPort_Init(UART_DEV_1, value);
542 592
543 //串口设备2初始化 593 //串口设备2初始化
544 - JZsdk_HalPort_Init_WithDefault(UART_DEV_2); 594 + value[0] = UART_DEV2_BITRATE;
  595 + JZsdk_HalPort_Init(UART_DEV_2, value);
545 596
546 //喊话器初始化 597 //喊话器初始化
547 Megaphone_Init(); 598 Megaphone_Init();
@@ -570,10 +621,12 @@ int Main_APP_Uart() @@ -570,10 +621,12 @@ int Main_APP_Uart()
570 else if (DEVICE_VERSION == JZ_U30) 621 else if (DEVICE_VERSION == JZ_U30)
571 { 622 {
572 //串口设备1初始化 623 //串口设备1初始化
573 - JZsdk_HalPort_Init_WithDefault(UART_DEV_1); 624 + value[0] = UART_DEV1_BITRATE;
  625 + JZsdk_HalPort_Init(UART_DEV_1, value);
574 626
575 //串口设备2初始化 627 //串口设备2初始化
576 - JZsdk_HalPort_Init_WithDefault(UART_DEV_2); 628 + value[0] = UART_DEV2_BITRATE;
  629 + JZsdk_HalPort_Init(UART_DEV_2, value);
577 630
578 //喊话器初始化 631 //喊话器初始化
579 Megaphone_Init(); 632 Megaphone_Init();
@@ -593,10 +646,12 @@ int Main_APP_Uart() @@ -593,10 +646,12 @@ int Main_APP_Uart()
593 if (DEVICE_VERSION == TF_A1) 646 if (DEVICE_VERSION == TF_A1)
594 { 647 {
595 //串口设备1初始化 648 //串口设备1初始化
596 - JZsdk_HalPort_Init_WithDefault(UART_DEV_1); 649 + value[0] = UART_DEV1_BITRATE;
  650 + JZsdk_HalPort_Init(UART_DEV_1, value);
597 651
598 //串口设备2初始化 652 //串口设备2初始化
599 - JZsdk_HalPort_Init_WithDefault(UART_DEV_2); 653 + value[0] = UART_DEV2_BITRATE;
  654 + JZsdk_HalPort_Init(UART_DEV_2, value);
600 655
601 //喊话器初始化 656 //喊话器初始化
602 Megaphone_Init(); 657 Megaphone_Init();
@@ -607,13 +662,25 @@ int Main_APP_Uart() @@ -607,13 +662,25 @@ int Main_APP_Uart()
607 //消息订阅初始化 662 //消息订阅初始化
608 HalSend_type1Send_MessageSubcription_Control(UART_DEV_2, JZ_FLAGCODE_ON); 663 HalSend_type1Send_MessageSubcription_Control(UART_DEV_2, JZ_FLAGCODE_ON);
609 } 664 }
610 - 665 +
  666 + g_baseconfig_InitFlag = JZ_FLAGCODE_ON;
  667 +
  668 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
611 } 669 }
612 670
613 int Main_TestAPP() 671 int Main_TestAPP()
614 { 672 {
  673 + int value[5] = {0, 0, 0, 0, 0};
  674 +
  675 + JZsdk_LibInit();
  676 +
  677 + JZsdk_Hal_Init();
  678 +
  679 + CommonMod_Init();
  680 +
615 //串口设备1初始化 681 //串口设备1初始化
616 - JZsdk_HalPort_Init_WithDefault(UART_DEV_1); 682 + value[0] = UART_DEV1_BITRATE;
  683 + JZsdk_HalPort_Init(UART_DEV_1, value);
617 } 684 }
618 685
619 //JZ_FLAGCODE_GET为返回工作值,其他值为设置 686 //JZ_FLAGCODE_GET为返回工作值,其他值为设置
@@ -673,6 +740,13 @@ T_JZsdkReturnCode Main_StartupPriority(int *choose) @@ -673,6 +740,13 @@ T_JZsdkReturnCode Main_StartupPriority(int *choose)
673 //1、设置本地的版本号 740 //1、设置本地的版本号
674 if (*choose == 0x00) 741 if (*choose == 0x00)
675 { 742 {
  743 + //检查是否已存在串口连接标志
  744 + if(JZsdk_check_file_exists("/root/Uart_connected") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  745 + {
  746 + JZSDK_LOG_INFO("已设置为优先启动Uart模式");
  747 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  748 + }
  749 +
676 //增加uart连接标志 750 //增加uart连接标志
677 if(JZsdk_create_file("/root/Uart_connected") != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) 751 if(JZsdk_create_file("/root/Uart_connected") != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
678 { 752 {
@@ -684,7 +758,7 @@ T_JZsdkReturnCode Main_StartupPriority(int *choose) @@ -684,7 +758,7 @@ T_JZsdkReturnCode Main_StartupPriority(int *choose)
684 else if (*choose == 0x01) 758 else if (*choose == 0x01)
685 { 759 {
686 //连接后清除串口标志 760 //连接后清除串口标志
687 - if(JZsdk_delete_file("/root/Uart_connected") != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) 761 + if(JZsdk_Osal_delete("/root/Uart_connected") != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
688 { 762 {
689 JZSDK_LOG_ERROR("优先启动psdk模式失败"); 763 JZSDK_LOG_ERROR("优先启动psdk模式失败");
690 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 764 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
@@ -777,5 +851,32 @@ static void *Main_WorkModeTask(void *arg) @@ -777,5 +851,32 @@ static void *Main_WorkModeTask(void *arg)
777 delayMs(100); 851 delayMs(100);
778 } 852 }
779 #endif 853 #endif
  854 +
  855 + g_Main_WorkMode_InitFlag = JZ_FLAGCODE_ON;
780 } 856 }
781 857
  858 +
  859 +/**********************************
  860 + *
  861 + * 获取设备初始化标志
  862 + * on之后,设备已经初始化完成 并处于空闲状态
  863 + *
  864 + * *****************************/
  865 +int BaseConfig_GetDeviceInitFlag()
  866 +{
  867 + //1、先判断baseconfig是否初始化完成
  868 + if (g_baseconfig_InitFlag == JZ_FLAGCODE_OFF)
  869 + {
  870 + return JZ_FLAGCODE_OFF;
  871 + }
  872 +
  873 + //如果是主菜单模式也完成
  874 + if (g_Main_WorkMode_InitFlag == JZ_FLAGCODE_OFF)
  875 + {
  876 + return JZ_FLAGCODE_OFF;
  877 + }
  878 +
  879 + g_device_InitFlag = JZ_FLAGCODE_ON;
  880 +
  881 + return g_device_InitFlag;
  882 +}
@@ -242,6 +242,7 @@ int Main_Device_Wheather_Use(); @@ -242,6 +242,7 @@ int Main_Device_Wheather_Use();
242 T_JZsdkReturnCode Main_M30_all_filter_mode(int *mode); 242 T_JZsdkReturnCode Main_M30_all_filter_mode(int *mode);
243 T_JZsdkReturnCode Main_StartupPriority(int *choose); 243 T_JZsdkReturnCode Main_StartupPriority(int *choose);
244 T_JZsdkReturnCode Main_SetDeviceName(unsigned int Port, int g_DeviceID); 244 T_JZsdkReturnCode Main_SetDeviceName(unsigned int Port, int g_DeviceID);
  245 +int BaseConfig_GetDeviceInitFlag();
245 246
246 #ifdef __cplusplus 247 #ifdef __cplusplus
247 } 248 }
@@ -77,7 +77,7 @@ T_JZsdkReturnCode JZsdk_ParamterParsing(int argc, char *argv[], unsigned int *mo @@ -77,7 +77,7 @@ T_JZsdkReturnCode JZsdk_ParamterParsing(int argc, char *argv[], unsigned int *mo
77 int insCode = 0; //指令码 77 int insCode = 0; //指令码
78 78
79 //获取短选项 79 //获取短选项
80 - static char *opt_storage = "t:f:"; 80 + static char *opt_storage = "t:f:d:b";
81 81
82 //解析参数 82 //解析参数
83 while (1) 83 while (1)
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
7 #define VERSION_CHOOSE_H 7 #define VERSION_CHOOSE_H
8 #include "JZsdk_Base/JZsdk_Code/JZsdk_DeviceCode.h" 8 #include "JZsdk_Base/JZsdk_Code/JZsdk_DeviceCode.h"
9 //1~10行 除了D可以修改版本选择 禁止动任何东西 9 //1~10行 除了D可以修改版本选择 禁止动任何东西
10 -#define DEVICE_VERSION JZ_H10 10 +#define DEVICE_VERSION JZ_H1T
11 11
12 //禁止修改行 选择是串口程序 还是 psdk程序 12 //禁止修改行 选择是串口程序 还是 psdk程序
13 #define APP_VERSION APP_UART 13 #define APP_VERSION APP_UART
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 #define MAJOR_VERSION 0x00 19 #define MAJOR_VERSION 0x00
20 #define MINOR_VERSION 0x00 20 #define MINOR_VERSION 0x00
21 #define MODIFY_VERSION 0x02 21 #define MODIFY_VERSION 0x02
22 -#define DEBUG_VERSION 0x12 22 +#define DEBUG_VERSION 0x13
23 23
24 //禁止修改行 滤波方式 24 //禁止修改行 滤波方式
25 #define FILTERING_TYPE HIGH_PASS_FILTERING 25 #define FILTERING_TYPE HIGH_PASS_FILTERING
@@ -37,7 +37,7 @@ @@ -37,7 +37,7 @@
37 * 帧尾两位 0x00 0x23 | 祖册了实际的帧尾 37 * 帧尾两位 0x00 0x23 | 祖册了实际的帧尾
38 * 38 *
39 * ********************/ 39 * ********************/
40 -int HalRecv_type1_PreliminaryScreeningOfData(unsigned char *Data, unsigned int DataLen, int Port) 40 +int HalRecv_type1_PreliminaryScreeningOfData(unsigned char *Data, int DataLen, int Port)
41 { 41 {
42 int ResidualLength = 0; // 剩余数据长度 42 int ResidualLength = 0; // 剩余数据长度
43 43
@@ -135,6 +135,7 @@ int HalRecv_type1_PreliminaryScreeningOfData(unsigned char *Data, unsigned int D @@ -135,6 +135,7 @@ int HalRecv_type1_PreliminaryScreeningOfData(unsigned char *Data, unsigned int D
135 { 135 {
136 FrameFlag = 0x00; 136 FrameFlag = 0x00;
137 } 137 }
  138 + break;
138 } 139 }
139 140
140 default: 141 default:
@@ -23,7 +23,7 @@ extern "C" { @@ -23,7 +23,7 @@ extern "C" {
23 23
24 /* Exported functions --------------------------------------------------------*/ 24 /* Exported functions --------------------------------------------------------*/
25 25
26 -int HalRecv_type1_PreliminaryScreeningOfData(unsigned char *Data, unsigned int DataLen, int Port); 26 +int HalRecv_type1_PreliminaryScreeningOfData(unsigned char *Data, int DataLen, int Port);
27 27
28 28
29 #ifdef __cplusplus 29 #ifdef __cplusplus
@@ -14,6 +14,8 @@ @@ -14,6 +14,8 @@
14 #include "Megaphone/Megaphone.h" 14 #include "Megaphone/Megaphone.h"
15 #include "DeviceInfo/DeviceInfo.h" 15 #include "DeviceInfo/DeviceInfo.h"
16 16
  17 +#include "CommonMod/CommonMod.h"
  18 +
17 #include "Hal_Send/HalSend_type1/HalSend_type1.h" 19 #include "Hal_Send/HalSend_type1/HalSend_type1.h"
18 #include "Hal_Send/HalSend.h" 20 #include "Hal_Send/HalSend.h"
19 #include "JZsdk_Hal.h" 21 #include "JZsdk_Hal.h"
@@ -21,9 +23,12 @@ @@ -21,9 +23,12 @@
21 #ifdef MEGAPHONE_CONFIG_STATUS_ON 23 #ifdef MEGAPHONE_CONFIG_STATUS_ON
22 #include "Megaphone/Megaphone.h" 24 #include "Megaphone/Megaphone.h"
23 #include "Megaphone/Music/AudioFile/Megaphone_AudioFile.h" 25 #include "Megaphone/Music/AudioFile/Megaphone_AudioFile.h"
  26 + #include "Megaphone/Opus/Megaphone_Opus.h"
  27 + #include "Megaphone/PcmAudio/PcmAudioFile.h"
  28 +
24 #endif 29 #endif
25 30
26 -static int HalRecvMode = JZ_FLAGCODE_OFF; 31 +static int HalRecvMode = JZ_FLAGCODE_OFF; //接收模式,主要是为了限制不同设备同时要求hal层做出 同一个数据接收相关功能 ,目前做法是只限定一个hal设备使用一种数据接收模式
27 static int HalRecvDataLen = 0; //用于计算接收数据长度 32 static int HalRecvDataLen = 0; //用于计算接收数据长度
28 33
29 static int SecondaryDeviceName = 0x00; // 从设备名,用于多设备相连时通知控制端 从机设备名 34 static int SecondaryDeviceName = 0x00; // 从设备名,用于多设备相连时通知控制端 从机设备名
@@ -33,7 +38,7 @@ static int TTS_RecvBufferLen = 0; @@ -33,7 +38,7 @@ static int TTS_RecvBufferLen = 0;
33 38
34 static T_JZsdkReturnCode HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(int Port, int value); 39 static T_JZsdkReturnCode HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(int Port, int value);
35 static T_JZsdkReturnCode HalRecv_tpye1_RecvDeal_UartTransmodeDecide(); 40 static T_JZsdkReturnCode HalRecv_tpye1_RecvDeal_UartTransmodeDecide();
36 - 41 +static T_JZsdkMutexHandle GetMusicList_MutexHandle = NULL;
37 42
38 /******************************************************************************************************** 43 /********************************************************************************************************
39 ********* ********| 44 ********* ********|
@@ -74,6 +79,10 @@ static T_JZsdkReturnCode RecvDeal_AskForConnect(int Port, char *getbuf) @@ -74,6 +79,10 @@ static T_JZsdkReturnCode RecvDeal_AskForConnect(int Port, char *getbuf)
74 Main_WorkModeSet(JZ_FLAGCODE_ON); 79 Main_WorkModeSet(JZ_FLAGCODE_ON);
75 } 80 }
76 81
  82 + //5、打开连接状态
  83 + s_JZsdk_Hal_Info *HalInfo = JZsdk_Hal_GetHalInfo();
  84 + HalInfo->HalPort[Port].ConnectStatus = JZ_FLAGCODE_ON;
  85 +
77 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 86 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
78 } 87 }
79 88
@@ -90,10 +99,28 @@ static T_JZsdkReturnCode RecvDeal_HeartBeat(int Port, char *getbuf) @@ -90,10 +99,28 @@ static T_JZsdkReturnCode RecvDeal_HeartBeat(int Port, char *getbuf)
90 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 99 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
91 100
92 //1、获取连接情况 101 //1、获取连接情况
93 - int status = Main_WorkModeSet(JZ_FLAGCODE_GET); 102 + s_JZsdk_Hal_Info *halInfo = JZsdk_Hal_GetHalInfo();
  103 +
  104 + //分析模式
  105 + int mode = getbuf[9];
  106 + if (mode == 0x00)
  107 + {
  108 + //2、回复心跳帧
  109 + HalSend_type1Send_Send_HeartBeatStatus(Port, FrameSequence, halInfo->HalPort[Port].ConnectStatus);
  110 + }
  111 + else if (mode == 0x01 || mode == 0x02)
  112 + {
  113 + if(mode == 0x01)
  114 + {
  115 + halInfo->HalPort[Port].HeartBeatStatusSend = JZ_FLAGCODE_ON;
  116 + }
  117 + else if (mode == 0x02)
  118 + {
  119 + halInfo->HalPort[Port].HeartBeatStatusSend = JZ_FLAGCODE_OFF;
  120 + }
94 121
95 - //2、回复心跳帧  
96 - HalSend_type1Send_Send_HeartBeatStatus(Port, FrameSequence, status); 122 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  123 + }
97 124
98 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 125 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
99 } 126 }
@@ -105,43 +132,50 @@ static T_JZsdkReturnCode RecvDeal_HeartBeat(int Port, char *getbuf) @@ -105,43 +132,50 @@ static T_JZsdkReturnCode RecvDeal_HeartBeat(int Port, char *getbuf)
105 **********/ 132 **********/
106 static T_JZsdkReturnCode RecvDeal_GetAllVersion(int Port, unsigned char *getbuf) 133 static T_JZsdkReturnCode RecvDeal_GetAllVersion(int Port, unsigned char *getbuf)
107 { 134 {
108 - JZSDK_LOG_INFO("获取所有版本号,获取指令为%x", getbuf[9]); 135 + JZSDK_LOG_INFO("获取所有版本号 %s", JZsdk_DefineCode_GetPortName(Port));
109 136
110 //获取帧的序列号 137 //获取帧的序列号
111 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 138 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
112 139
113 - //获取所有设备名  
114 - unsigned int DeviceNum = 0;  
115 - unsigned int DeviceID[10][2];  
116 - DeviceInfo_GetAllDeviceName(&DeviceNum, DeviceID);  
117 140
118 - //获取所有设备号 141 + //获取设备数量
  142 + int DeviceNum = 0;
  143 + DeviceNum = DeviceInfo_GetDeviceInfoNum();
  144 +
  145 + //获取设备信息
  146 + T_DeviceInfo DeviceInfo;
  147 +
119 if (getbuf[9] == 0x01) 148 if (getbuf[9] == 0x01)
120 { 149 {
121 - for (int i = 0; i < DeviceNum ; i++) 150 + for (int i = 0; i < DeviceNum; i++)
122 { 151 {
123 - unsigned int MajorVersion;  
124 - unsigned int MinjorVersion;  
125 - unsigned int ModifyVersion;  
126 - unsigned int DebugVersion;  
127 - DeviceInfo_GetAllVerision(DeviceID[i][1], &MajorVersion, &MinjorVersion, &ModifyVersion, &DebugVersion);  
128 - HalSend_type1Send_SendAllVersion(Port, FrameSequence, DeviceID[i][1] ,MajorVersion, MinjorVersion, ModifyVersion, DebugVersion); 152 + DeviceInfo_GetDeviceInfo(i, &DeviceInfo);
  153 + HalSend_type1Send_SendAllVersion(Port, FrameSequence,
  154 + DeviceInfo.DeviceID,
  155 + DeviceInfo.MajorVersion,
  156 + DeviceInfo.MinjorVersion,
  157 + DeviceInfo.ModifyVersion,
  158 + DeviceInfo.DebugVersion);
129 } 159 }
130 } 160 }
  161 +
131 //获取所有设备号 162 //获取所有设备号
132 else if (getbuf[9] == 0x00) 163 else if (getbuf[9] == 0x00)
133 { 164 {
134 - unsigned int MajorVersion;  
135 - unsigned int MinjorVersion;  
136 - unsigned int ModifyVersion;  
137 - unsigned int DebugVersion;  
138 - DeviceInfo_GetAllVerision(DEVICE_PSDK, &MajorVersion, &MinjorVersion, &ModifyVersion, &DebugVersion);  
139 - HalSend_type1Send_SendAllVersion(Port, FrameSequence, DEVICE_PSDK ,MajorVersion, MinjorVersion, ModifyVersion, DebugVersion); 165 + DeviceInfo_GetDeviceInfo(0, &DeviceInfo);
  166 + HalSend_type1Send_SendAllVersion(Port, FrameSequence,
  167 + DeviceInfo.DeviceID,
  168 + DeviceInfo.MajorVersion,
  169 + DeviceInfo.MinjorVersion,
  170 + DeviceInfo.ModifyVersion,
  171 + DeviceInfo.DebugVersion);
140 } 172 }
141 173
  174 +
142 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 175 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
143 } 176 }
144 177
  178 +
145 /********* 179 /*********
146 * 180 *
147 * 获取所有序列号 181 * 获取所有序列号
@@ -154,35 +188,38 @@ static T_JZsdkReturnCode RecvDeal_GetAllSerialNumber(int Port, unsigned char *ge @@ -154,35 +188,38 @@ static T_JZsdkReturnCode RecvDeal_GetAllSerialNumber(int Port, unsigned char *ge
154 //获取帧的序列号 188 //获取帧的序列号
155 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 189 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
156 190
157 - //获取所有设备名  
158 - unsigned int DeviceNum = 0;  
159 - unsigned int DeviceID[10][2];  
160 - DeviceInfo_GetAllDeviceName(&DeviceNum, DeviceID); 191 + //获取设备数量
  192 + int DeviceNum = 0;
  193 + DeviceNum = DeviceInfo_GetDeviceInfoNum();
  194 +
  195 + //获取设备信息
  196 + T_DeviceInfo DeviceInfo;
161 197
162 //获取所有设备号 198 //获取所有设备号
163 if (getbuf[9] == 0x01) 199 if (getbuf[9] == 0x01)
164 { 200 {
165 - for (int i = 0; i < DeviceNum ; i++) 201 + for (int i = 0; i < DeviceNum; i++)
166 { 202 {
167 - unsigned char SerialNumber[40];  
168 - int SerialNumberLen = 0;  
169 - DeviceInfo_GetAllSerialNumber(DeviceID[i][1], SerialNumber, &SerialNumberLen);  
170 - HalSend_type1Send_SendAllSerialNumber(Port, FrameSequence, DeviceID[i][1], SerialNumber, SerialNumberLen); 203 + DeviceInfo_GetDeviceInfo(i, &DeviceInfo);
  204 + HalSend_type1Send_SendAllSerialNumber(Port, FrameSequence,
  205 + DeviceInfo.DeviceID,
  206 + DeviceInfo.SerialNumber,
  207 + strlen(DeviceInfo.SerialNumber));
171 } 208 }
172 } 209 }
173 //获取所有设备号 210 //获取所有设备号
174 else if (getbuf[9] == 0x00) 211 else if (getbuf[9] == 0x00)
175 { 212 {
176 - unsigned char SerialNumber[40];  
177 - int SerialNumberLen = 0;  
178 - DeviceInfo_GetAllSerialNumber(DEVICE_PSDK, SerialNumber, &SerialNumberLen);  
179 - HalSend_type1Send_SendAllSerialNumber(Port, FrameSequence, DEVICE_PSDK, SerialNumber, SerialNumberLen); 213 + DeviceInfo_GetDeviceInfo(0, &DeviceInfo);
  214 + HalSend_type1Send_SendAllSerialNumber(Port, FrameSequence,
  215 + DeviceInfo.DeviceID,
  216 + DeviceInfo.SerialNumber,
  217 + strlen(DeviceInfo.SerialNumber));
180 } 218 }
181 219
182 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 220 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
183 } 221 }
184 222
185 -  
186 /********* 223 /*********
187 * 224 *
188 * log信息打印 225 * log信息打印
@@ -213,6 +250,52 @@ static T_JZsdkReturnCode RecvDeal_LogMessagePrintf(int Port, unsigned char *getb @@ -213,6 +250,52 @@ static T_JZsdkReturnCode RecvDeal_LogMessagePrintf(int Port, unsigned char *getb
213 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 250 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
214 } 251 }
215 252
  253 +/*********
  254 + *
  255 + * 预设任务
  256 + *
  257 +**********/
  258 +static T_JZsdkReturnCode RecvDeal_PresetTask(int Port, unsigned char *getbuf)
  259 +{
  260 +
  261 + JZSDK_LOG_INFO("%s,预设任务 :%d",JZsdk_DefineCode_GetPortName(Port), getbuf[9]);
  262 +
  263 + //获取帧序列号
  264 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  265 +
  266 + //获取任务内容
  267 + int Mode = getbuf[9];
  268 +
  269 + if (Mode == 0)
  270 + {
  271 + JZSDK_LOG_INFO("关闭预设任务");
  272 +
  273 + PrsetTask_SetPrsetTaskFlag(JZ_FLAGCODE_OFF);
  274 + PrsetTask_SetPrsetTaskSaveContentFlag(JZ_FLAGCODE_OFF);
  275 + }
  276 + else if (Mode == 1)
  277 + {
  278 + JZSDK_LOG_INFO("开启预设任务");
  279 +
  280 + PrsetTask_SetPrsetTaskFlag(JZ_FLAGCODE_ON);
  281 + PrsetTask_SetPrsetTaskSaveContentFlag(JZ_FLAGCODE_ON);
  282 + }
  283 + else if (Mode == 0x10)
  284 + {
  285 + JZSDK_LOG_INFO("获取预设任务状态");
  286 + }
  287 + else
  288 + {
  289 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  290 + }
  291 +
  292 + int Flag = PrsetTask_GetPrsetTaskFlag();
  293 +
  294 + //回复预设任务
  295 + HalSend_type1Send_PresetTaskStatus(Port, FrameSequence, Flag);
  296 +
  297 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  298 +}
216 299
217 /********* 300 /*********
218 * 301 *
@@ -449,20 +532,13 @@ static T_JZsdkReturnCode RecvDeal_RealTimeMP2_stop(int Port, char *getbuf) @@ -449,20 +532,13 @@ static T_JZsdkReturnCode RecvDeal_RealTimeMP2_stop(int Port, char *getbuf)
449 **********/ 532 **********/
450 static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_start(int Port, char *getbuf, int len) 533 static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_start(int Port, char *getbuf, int len)
451 { 534 {
  535 + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  536 +
452 JZSDK_LOG_INFO("%s,开始传输的音频文件保存",JZsdk_DefineCode_GetPortName(Port)); 537 JZSDK_LOG_INFO("%s,开始传输的音频文件保存",JZsdk_DefineCode_GetPortName(Port));
453 538
454 //获取帧的序列号 539 //获取帧的序列号
455 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 540 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
456 541
457 - T_JZsdkReturnCode ret = HalRecv_tpye1_RecvDeal_UartTransmodeDecide();  
458 - if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)  
459 - {  
460 - //回复操作失败  
461 - HalSend_type1Send_Reply_Failure(Port, FrameSequence);  
462 - JZSDK_LOG_ERROR("开始传输的音频文件保存失败");  
463 - return ret;  
464 - }  
465 -  
466 //1、处理帧长度,获取文件名长度 542 //1、处理帧长度,获取文件名长度
467 int FileNameLen = ((int)getbuf[3] << 8) + (int)getbuf[4] - 2 - 9; 543 int FileNameLen = ((int)getbuf[3] << 8) + (int)getbuf[4] - 2 - 9;
468 544
@@ -475,21 +551,16 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_start(int Port, char *getbu @@ -475,21 +551,16 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_start(int Port, char *getbu
475 #ifdef MEGAPHONE_CONFIG_STATUS_ON 551 #ifdef MEGAPHONE_CONFIG_STATUS_ON
476 552
477 ret = Megaphone_SaveAudioFileStart(FileName); 553 ret = Megaphone_SaveAudioFileStart(FileName);
478 - if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) 554 +
  555 +#endif
  556 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  557 + {
  558 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  559 + }
  560 + else
479 { 561 {
480 HalSend_type1Send_Reply_Failure(Port, FrameSequence); 562 HalSend_type1Send_Reply_Failure(Port, FrameSequence);
481 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
482 } 563 }
483 -  
484 - //3、调整接收模式为音频文件传输  
485 - HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(Port, JZ_DATA_TRANS_TYPE_AUDIO_FILE);  
486 - HalRecvDataLen = 0;  
487 -  
488 - //4、回复操作成功  
489 - HalSend_type1Send_Reply_Success(Port, FrameSequence);  
490 -#else  
491 - HalSend_type1Send_Reply_Failure(Port, FrameSequence);  
492 -#endif  
493 564
494 return ret; 565 return ret;
495 } 566 }
@@ -502,7 +573,7 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_start(int Port, char *getbu @@ -502,7 +573,7 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_start(int Port, char *getbu
502 **********/ 573 **********/
503 static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_LimitTransmission(int Port, char *getbuf, int len) 574 static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_LimitTransmission(int Port, char *getbuf, int len)
504 { 575 {
505 - T_JZsdkReturnCode ret; 576 + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
506 577
507 //获取帧的序列号 578 //获取帧的序列号
508 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 579 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
@@ -515,21 +586,21 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_LimitTransmission(int Port, @@ -515,21 +586,21 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_LimitTransmission(int Port,
515 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 586 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
516 } 587 }
517 588
518 - if (HalRecvMode != JZ_DATA_TRANS_TYPE_AUDIO_FILE)  
519 - {  
520 - JZSDK_LOG_ERROR("%s, 传输mp2文件未开始,无法传输", JZsdk_DefineCode_GetPortName(Port));  
521 - HalSend_type1Send_Reply_Failure(Port, FrameSequence);  
522 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
523 - }  
524 -  
525 - HalRecvDataLen += DataLen;  
526 - //JZSDK_LOG_DEBUG("%s,传输定长音频文件中 ,一共传输了%d字节",JZsdk_DefineCode_GetPortName(Port), HalRecvDataLen);  
527 -  
528 //传输数据接口 589 //传输数据接口
529 #ifdef MEGAPHONE_CONFIG_STATUS_ON 590 #ifdef MEGAPHONE_CONFIG_STATUS_ON
530 - Megaphone_SaveAudioFileTrans(getbuf+9, DataLen); 591 + ret = Megaphone_SaveAudioFileTrans(getbuf+9, DataLen);
531 #endif 592 #endif
532 593
  594 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  595 + {
  596 + //无操作
  597 + }
  598 + else
  599 + {
  600 + //回复操作失败
  601 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  602 + }
  603 +
533 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 604 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
534 } 605 }
535 606
@@ -541,31 +612,28 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_LimitTransmission(int Port, @@ -541,31 +612,28 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_LimitTransmission(int Port,
541 **********/ 612 **********/
542 static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_stop(int Port, char *getbuf) 613 static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_stop(int Port, char *getbuf)
543 { 614 {
  615 + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  616 +
544 JZSDK_LOG_INFO("%s,传输的音频文件保存",JZsdk_DefineCode_GetPortName(Port)); 617 JZSDK_LOG_INFO("%s,传输的音频文件保存",JZsdk_DefineCode_GetPortName(Port));
545 618
546 //获取帧的序列号 619 //获取帧的序列号
547 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 620 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
548 621
549 - if (HalRecvMode != JZ_DATA_TRANS_TYPE_AUDIO_FILE)  
550 - {  
551 - //回复操作失败  
552 - HalSend_type1Send_Reply_Failure(Port, FrameSequence);  
553 - JZSDK_LOG_ERROR("关闭音频文件上传失败,音频文件上传未开始,无法关闭");  
554 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
555 - }  
556 -  
557 //1、保存音频数据 622 //1、保存音频数据
558 #ifdef MEGAPHONE_CONFIG_STATUS_ON 623 #ifdef MEGAPHONE_CONFIG_STATUS_ON
559 - Megaphone_SaveAudioFileStop(JZ_FLAGCODE_OFF, NULL); 624 + ret = Megaphone_SaveAudioFileStop(JZ_FLAGCODE_OFF, NULL);
560 #endif 625 #endif
561 626
562 - //3、调整接收模式为音频文件传输  
563 - HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(Port, JZ_FLAGCODE_OFF);  
564 - JZSDK_LOG_INFO("一共传输了%d字节", HalRecvDataLen);  
565 - HalRecvDataLen = 0;  
566 -  
567 - //2、回复操作成功  
568 - HalSend_type1Send_Reply_Success(Port, FrameSequence); 627 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  628 + {
  629 + //4、回复操作成功
  630 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  631 + }
  632 + else
  633 + {
  634 + //4、回复操作失败
  635 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  636 + }
569 637
570 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 638 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
571 } 639 }
@@ -585,14 +653,6 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_stop_and_check(int Port, ch @@ -585,14 +653,6 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_stop_and_check(int Port, ch
585 //获取帧的序列号 653 //获取帧的序列号
586 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 654 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
587 655
588 - if (HalRecvMode != JZ_DATA_TRANS_TYPE_AUDIO_FILE)  
589 - {  
590 - //回复操作失败  
591 - HalSend_type1Send_Reply_Failure(Port, FrameSequence);  
592 - JZSDK_LOG_ERROR("关闭音频文件上传失败,音频文件上传未开始,无法关闭");  
593 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
594 - }  
595 -  
596 unsigned char checkCode[128]; 656 unsigned char checkCode[128];
597 int frameLenth = ((int)getbuf[3]) << 8 | (int)getbuf[4]; 657 int frameLenth = ((int)getbuf[3]) << 8 | (int)getbuf[4];
598 int CodeLenth = frameLenth - 10 - 2; 658 int CodeLenth = frameLenth - 10 - 2;
@@ -649,11 +709,6 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_stop_and_check(int Port, ch @@ -649,11 +709,6 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_stop_and_check(int Port, ch
649 } 709 }
650 #endif 710 #endif
651 711
652 - //调整接收模式为音频文件传输  
653 - HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(Port, JZ_FLAGCODE_OFF);  
654 - JZSDK_LOG_INFO("一共传输了%d字节", HalRecvDataLen);  
655 - HalRecvDataLen = 0;  
656 -  
657 return ret; 712 return ret;
658 } 713 }
659 714
@@ -708,15 +763,24 @@ static T_JZsdkReturnCode RecvDeal_audio_PlayFile(int Port, char *getbuf) @@ -708,15 +763,24 @@ static T_JZsdkReturnCode RecvDeal_audio_PlayFile(int Port, char *getbuf)
708 **********/ 763 **********/
709 static T_JZsdkReturnCode RecvDeal_audio_PlayContinue(int Port, char *getbuf) 764 static T_JZsdkReturnCode RecvDeal_audio_PlayContinue(int Port, char *getbuf)
710 { 765 {
  766 + T_JZsdkReturnCode ret;
  767 +
711 JZSDK_LOG_INFO("%s,音频继续播放",JZsdk_DefineCode_GetPortName(Port)); 768 JZSDK_LOG_INFO("%s,音频继续播放",JZsdk_DefineCode_GetPortName(Port));
712 769
713 //获取帧的序列号 770 //获取帧的序列号
714 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 771 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
715 772
716 - UIcontrol_ContinuePlayAudio(Port);  
717 -  
718 - //回复操作成功  
719 - HalSend_type1Send_Reply_Success(Port, FrameSequence); 773 + ret = UIcontrol_ContinuePlayAudio(Port);
  774 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  775 + {
  776 + //回复操作成功
  777 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  778 + }
  779 + else
  780 + {
  781 + //回复操作失败
  782 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  783 + }
720 784
721 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 785 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
722 } 786 }
@@ -814,6 +878,13 @@ static T_JZsdkReturnCode RecvDeal_audio_NextSong(int Port, char *getbuf) @@ -814,6 +878,13 @@ static T_JZsdkReturnCode RecvDeal_audio_NextSong(int Port, char *getbuf)
814 static T_JZsdkReturnCode RecvDeal_audio_GetMusicList(int Port, char *getbuf) 878 static T_JZsdkReturnCode RecvDeal_audio_GetMusicList(int Port, char *getbuf)
815 { 879 {
816 T_JZsdkReturnCode ret; 880 T_JZsdkReturnCode ret;
  881 + T_JZsdkOsalHandler *OsalHandler = JZsdk_Platform_GetOsalHandler();
  882 + if (GetMusicList_MutexHandle == NULL)
  883 + {
  884 + OsalHandler->MutexCreate(&GetMusicList_MutexHandle);
  885 + }
  886 +
  887 + OsalHandler->MutexLock(GetMusicList_MutexHandle);
817 888
818 JZSDK_LOG_INFO("%s,获取音乐列表",JZsdk_DefineCode_GetPortName(Port)); 889 JZSDK_LOG_INFO("%s,获取音乐列表",JZsdk_DefineCode_GetPortName(Port));
819 int music_sum = 0; 890 int music_sum = 0;
@@ -824,7 +895,12 @@ static T_JZsdkReturnCode RecvDeal_audio_GetMusicList(int Port, char *getbuf) @@ -824,7 +895,12 @@ static T_JZsdkReturnCode RecvDeal_audio_GetMusicList(int Port, char *getbuf)
824 #ifdef MEGAPHONE_CONFIG_STATUS_ON 895 #ifdef MEGAPHONE_CONFIG_STATUS_ON
825 896
826 //刷新歌曲列表 897 //刷新歌曲列表
827 - Megaphone_Flush_MusicList(); 898 + ret = Megaphone_Flush_MusicList();
  899 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  900 + {
  901 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  902 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  903 + }
828 904
829 //解析获取的类型 905 //解析获取的类型
830 int type = getbuf[9]; 906 int type = getbuf[9];
@@ -945,6 +1021,8 @@ static T_JZsdkReturnCode RecvDeal_audio_GetMusicList(int Port, char *getbuf) @@ -945,6 +1021,8 @@ static T_JZsdkReturnCode RecvDeal_audio_GetMusicList(int Port, char *getbuf)
945 1021
946 #endif 1022 #endif
947 1023
  1024 + OsalHandler->MutexUnlock(GetMusicList_MutexHandle);
  1025 +
948 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 1026 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
949 } 1027 }
950 1028
@@ -1347,19 +1425,19 @@ static T_JZsdkReturnCode RecvDeal_CheckStatus_SoftwareVersion(int Port, char *ge @@ -1347,19 +1425,19 @@ static T_JZsdkReturnCode RecvDeal_CheckStatus_SoftwareVersion(int Port, char *ge
1347 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 1425 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
1348 1426
1349 char majorVersion; 1427 char majorVersion;
1350 - char minorVersion; 1428 + char MinjorVersion;
1351 char modifyVersion; 1429 char modifyVersion;
1352 char debugVersion; 1430 char debugVersion;
1353 1431
1354 //1、获取版本号 1432 //1、获取版本号
1355 majorVersion = MAJOR_VERSION; 1433 majorVersion = MAJOR_VERSION;
1356 - minorVersion = MINOR_VERSION; 1434 + MinjorVersion = MINOR_VERSION;
1357 modifyVersion = MODIFY_VERSION; 1435 modifyVersion = MODIFY_VERSION;
1358 debugVersion = DEBUG_VERSION; 1436 debugVersion = DEBUG_VERSION;
1359 - JZSDK_LOG_INFO("当前的软件版本号为:%2x, %2x, %2x, %2x",majorVersion, minorVersion, modifyVersion, debugVersion); 1437 + JZSDK_LOG_INFO("当前的软件版本号为:%2x, %2x, %2x, %2x",majorVersion, MinjorVersion, modifyVersion, debugVersion);
1360 1438
1361 //2、发送版本号 1439 //2、发送版本号
1362 - HalSend_type1Send_Reply_SoftVersion(Port, majorVersion, minorVersion, modifyVersion, debugVersion); 1440 + HalSend_type1Send_Reply_SoftVersion(Port, majorVersion, MinjorVersion, modifyVersion, debugVersion);
1363 1441
1364 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 1442 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
1365 } 1443 }
@@ -1563,10 +1641,13 @@ static T_JZsdkReturnCode RecvDeal_Delete_Audio(int Port, char *getbuf) @@ -1563,10 +1641,13 @@ static T_JZsdkReturnCode RecvDeal_Delete_Audio(int Port, char *getbuf)
1563 FileName[FileName_Length] = '\0'; // 确保文件名以null结尾 1641 FileName[FileName_Length] = '\0'; // 确保文件名以null结尾
1564 1642
1565 //3、拼接指令 1643 //3、拼接指令
1566 - char cmd[512];  
1567 - snprintf(cmd, 512 ,"rm /root/sdcard/audio/%s", FileName); 1644 + char FilePath[512];
  1645 + snprintf(FilePath, 512 ,"/root/sdcard/audio/%s", FileName);
1568 1646
1569 - JZsdk_RunSystemCmd(cmd); 1647 + //4、删除文件
  1648 + JZsdk_Osal_delete(FilePath);
  1649 +
  1650 + JZsdk_Sync();
1570 1651
1571 //4、刷新歌曲列表 1652 //4、刷新歌曲列表
1572 #ifdef MEGAPHONE_CONFIG_STATUS_ON 1653 #ifdef MEGAPHONE_CONFIG_STATUS_ON
@@ -1581,13 +1662,13 @@ static T_JZsdkReturnCode RecvDeal_Delete_Audio(int Port, char *getbuf) @@ -1581,13 +1662,13 @@ static T_JZsdkReturnCode RecvDeal_Delete_Audio(int Port, char *getbuf)
1581 1662
1582 /********* 1663 /*********
1583 * 1664 *
1584 - * 删除录音 1665 + * 删除pcm文件
1585 * 1666 *
1586 * 1667 *
1587 **********/ 1668 **********/
1588 static T_JZsdkReturnCode RecvDeal_Delete_VoiceRecord(int Port, char *getbuf) 1669 static T_JZsdkReturnCode RecvDeal_Delete_VoiceRecord(int Port, char *getbuf)
1589 { 1670 {
1590 - JZSDK_LOG_INFO("%s,删除录音操作",JZsdk_DefineCode_GetPortName(Port)); 1671 + JZSDK_LOG_INFO("%s,删除pcm文件操作",JZsdk_DefineCode_GetPortName(Port));
1591 1672
1592 //获取帧的序列号 1673 //获取帧的序列号
1593 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 1674 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
@@ -1597,19 +1678,22 @@ static T_JZsdkReturnCode RecvDeal_Delete_VoiceRecord(int Port, char *getbuf) @@ -1597,19 +1678,22 @@ static T_JZsdkReturnCode RecvDeal_Delete_VoiceRecord(int Port, char *getbuf)
1597 FileName_Length = ((int)getbuf[3] << 8) + (int)getbuf[4] - 2 - 9; 1678 FileName_Length = ((int)getbuf[3] << 8) + (int)getbuf[4] - 2 - 9;
1598 1679
1599 //2、获取名字 1680 //2、获取名字
1600 - char FileName[256]; 1681 + char FileName[JZSDK_FILE_NAME_SIZE_MAX];
1601 memcpy(FileName, &getbuf[9], FileName_Length); 1682 memcpy(FileName, &getbuf[9], FileName_Length);
1602 FileName[FileName_Length] = '\0'; // 确保文件名以null结尾 1683 FileName[FileName_Length] = '\0'; // 确保文件名以null结尾
1603 1684
1604 //3、拼接指令 1685 //3、拼接指令
1605 - char cmd[512];  
1606 - snprintf(cmd, 512 ,"rm /root/sdcard/audio/%s", FileName); 1686 + char FilePath[512];
  1687 + snprintf(FilePath, 512 ,"/root/sdcard/pcm/%s", FileName);
1607 1688
1608 - JZsdk_RunSystemCmd(cmd); 1689 + //4、删除文件
  1690 + JZsdk_Osal_delete(FilePath);
  1691 +
  1692 + JZsdk_Sync();
1609 1693
1610 //4、刷新歌曲列表 1694 //4、刷新歌曲列表
1611 #ifdef MEGAPHONE_CONFIG_STATUS_ON 1695 #ifdef MEGAPHONE_CONFIG_STATUS_ON
1612 - Megaphone_Flush_MusicList(); 1696 + PcmFile_FlushList();
1613 #endif 1697 #endif
1614 1698
1615 //回复操作成功 1699 //回复操作成功
@@ -1629,6 +1713,128 @@ static T_JZsdkReturnCode RecvDeal_Delete_VideoRecord() @@ -1629,6 +1713,128 @@ static T_JZsdkReturnCode RecvDeal_Delete_VideoRecord()
1629 1713
1630 } 1714 }
1631 1715
  1716 +
  1717 +
  1718 +/*********
  1719 + *
  1720 + * 音频重命名
  1721 + *
  1722 + *
  1723 +**********/
  1724 +static T_JZsdkReturnCode RecvDeal_Rename_Audio(int Port, char *getbuf)
  1725 +{
  1726 + JZSDK_LOG_INFO("%s,音频重命名",JZsdk_DefineCode_GetPortName(Port));
  1727 +
  1728 + //获取帧的序列号
  1729 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  1730 +
  1731 + //获取总帧长度
  1732 + int FrameLength = JZsdk_Get_FrameLength(getbuf);
  1733 +
  1734 + //获取原文件长度
  1735 + int OldFileName_Length = getbuf[9];
  1736 +
  1737 + //获取新文件长度
  1738 + int NewFileName_Length = getbuf[10 + OldFileName_Length];
  1739 +
  1740 + //获取原文件名字
  1741 + unsigned char OldFileName[128];
  1742 + memcpy(OldFileName, &getbuf[9], OldFileName_Length);
  1743 + OldFileName[OldFileName_Length] = '\0'; // 确保文件名以null结尾
  1744 +
  1745 + //获取新文件名字
  1746 + unsigned char NewFileName[128];
  1747 + memcpy(NewFileName, &getbuf[10 + OldFileName_Length], NewFileName_Length);
  1748 + NewFileName[NewFileName_Length] = '\0'; // 确保文件名以null结尾
  1749 +
  1750 + //3、拼接出地址
  1751 + char OldFilePath[JZSDK_FILE_PATH_SIZE_MAX];
  1752 + snprintf(OldFilePath, JZSDK_FILE_PATH_SIZE_MAX ,"/root/sdcard/audio/%s", OldFileName);
  1753 +
  1754 + char NewFilePath[JZSDK_FILE_PATH_SIZE_MAX];
  1755 + snprintf(NewFilePath, JZSDK_FILE_PATH_SIZE_MAX ,"/root/sdcard/audio/%s", NewFileName);
  1756 +
  1757 + JZsdk_Osal_Rename(OldFilePath, NewFilePath);
  1758 +
  1759 + JZsdk_Sync();
  1760 +
  1761 + //4、刷新歌曲列表
  1762 +#ifdef MEGAPHONE_CONFIG_STATUS_ON
  1763 + Megaphone_Flush_MusicList();
  1764 +#endif
  1765 +
  1766 + //回复操作成功
  1767 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  1768 +
  1769 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  1770 +}
  1771 +
  1772 +/*********
  1773 + *
  1774 + * 录音重命名
  1775 + *
  1776 + *
  1777 +**********/
  1778 +static T_JZsdkReturnCode RecvDeal_Rename_VoiceRecord(int Port, char *getbuf)
  1779 +{
  1780 + JZSDK_LOG_INFO("%s,音频重命名",JZsdk_DefineCode_GetPortName(Port));
  1781 +
  1782 + //获取帧的序列号
  1783 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  1784 +
  1785 + //获取总帧长度
  1786 + int FrameLength = JZsdk_Get_FrameLength(getbuf);
  1787 +
  1788 + //获取原文件长度
  1789 + int OldFileName_Length = getbuf[9];
  1790 +
  1791 + //获取新文件长度
  1792 + int NewFileName_Length = getbuf[10 + OldFileName_Length];
  1793 +
  1794 + //获取原文件名字
  1795 + unsigned char OldFileName[128];
  1796 + memcpy(OldFileName, &getbuf[9], OldFileName_Length);
  1797 + OldFileName[OldFileName_Length] = '\0'; // 确保文件名以null结尾
  1798 +
  1799 + //获取新文件名字
  1800 + unsigned char NewFileName[128];
  1801 + memcpy(NewFileName, &getbuf[10 + OldFileName_Length], NewFileName_Length);
  1802 + NewFileName[NewFileName_Length] = '\0'; // 确保文件名以null结尾
  1803 +
  1804 + //3、拼接出地址
  1805 + char OldFilePath[JZSDK_FILE_PATH_SIZE_MAX];
  1806 + snprintf(OldFilePath, JZSDK_FILE_PATH_SIZE_MAX ,"/root/sdcard/pcm/%s", OldFileName);
  1807 +
  1808 + char NewFilePath[JZSDK_FILE_PATH_SIZE_MAX];
  1809 + snprintf(NewFilePath, JZSDK_FILE_PATH_SIZE_MAX ,"/root/sdcard/pcm/%s", NewFileName);
  1810 +
  1811 + JZsdk_Osal_Rename(OldFilePath, NewFilePath);
  1812 +
  1813 + JZsdk_Sync();
  1814 +
  1815 + //4、刷新歌曲列表
  1816 +#ifdef MEGAPHONE_CONFIG_STATUS_ON
  1817 + PcmFile_FlushList();
  1818 +#endif
  1819 +
  1820 + //回复操作成功
  1821 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  1822 +
  1823 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  1824 +}
  1825 +
  1826 +/*********
  1827 + *
  1828 + * 删除视频
  1829 + *
  1830 + *
  1831 +**********/
  1832 +static T_JZsdkReturnCode RecvDeal_Rename_VideoRecord()
  1833 +{
  1834 +
  1835 +}
  1836 +
  1837 +
1632 /********* 1838 /*********
1633 * 1839 *
1634 * tts设置音色 1840 * tts设置音色
@@ -1840,50 +2046,244 @@ static T_JZsdkReturnCode RecvDeal_TTS_Trans_stop(int Port, char *getbuf) @@ -1840,50 +2046,244 @@ static T_JZsdkReturnCode RecvDeal_TTS_Trans_stop(int Port, char *getbuf)
1840 } 2046 }
1841 2047
1842 2048
  2049 +
1843 /********* 2050 /*********
1844 * 2051 *
1845 - * 打开opus传输 2052 + * 播放时间回传
1846 * 2053 *
1847 * 2054 *
1848 **********/ 2055 **********/
1849 -static T_JZsdkReturnCode RecvDeal_OpusTrans_start(int Port, char *getbuf) 2056 +static T_JZsdkReturnCode RecvDeal_Current_Play_Time(int Port, char *getbuf)
1850 { 2057 {
1851 - JZSDK_LOG_INFO("%s,打开opus传输",JZsdk_DefineCode_GetPortName(Port)); 2058 + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2059 +
  2060 + JZSDK_LOG_INFO("%s,设置播放时间回传",JZsdk_DefineCode_GetPortName(Port));
1852 2061
1853 //获取帧的序列号 2062 //获取帧的序列号
1854 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 2063 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
1855 2064
1856 - T_JZsdkReturnCode ret = HalRecv_tpye1_RecvDeal_UartTransmodeDecide();  
1857 - if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) 2065 + //获取帧操作
  2066 + int Mode = getbuf[9];
  2067 +
  2068 + JZSDK_LOG_INFO("设置播放回传模式:%d", Mode);
  2069 +
  2070 +#ifdef MEGAPHONE_CONFIG_STATUS_ON
  2071 +
  2072 + //如果是0 或者 1 是关闭或打开回传模式
  2073 + if (Mode == JZ_FLAGCODE_OFF || Mode == JZ_FLAGCODE_ON)
1858 { 2074 {
1859 - //回复操作失败  
1860 - HalSend_type1Send_Reply_Failure(Port, FrameSequence);  
1861 - JZSDK_LOG_ERROR("打开opus传输失败, 已开启其他传输模式");  
1862 - return ret; 2075 + ret = Megaphone_PlayBackSet(Port, Mode);
  2076 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  2077 + {
  2078 + //回复操作成功
  2079 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  2080 +
  2081 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  2082 + }
  2083 + else
  2084 + {
  2085 + //回复操作失败
  2086 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2087 +
  2088 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2089 + }
1863 } 2090 }
1864 2091
1865 - //1、获取解码比特率  
1866 - int decode_rate = getbuf[9] * 8000;  
1867 - if(decode_rate == 0) 2092 + //如果是2,则主动索取
  2093 + if (Mode == 2)
1868 { 2094 {
1869 - decode_rate = 16000; 2095 + ret = Megaphone_PlayBackTimeGet(Port);
1870 } 2096 }
1871 -  
1872 - //2、创建存储文件  
1873 -#ifdef MEGAPHONE_CONFIG_STATUS_ON  
1874 - Megaphone_SaveOpusStart(decode_rate); 2097 +
1875 #endif 2098 #endif
1876 2099
1877 - //3、修改接收模式为传输opus  
1878 - HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(Port, JZ_DATA_TRANS_TYPE_OPUS_FILE);  
1879 - HalRecvDataLen = 0; 2100 + return ret;
  2101 +}
1880 2102
1881 - //回复操作成功  
1882 - HalSend_type1Send_Reply_Success(Port, FrameSequence);  
1883 2103
1884 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 2104 +/*********
  2105 + *
  2106 + * 获取播放时间回传模式
  2107 + *
  2108 + *
  2109 +**********/
  2110 +static T_JZsdkReturnCode RecvDeal_CheckStatus_CurrentPlayTime(int Port, char *getbuf)
  2111 +{
  2112 + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2113 +
  2114 + JZSDK_LOG_INFO("%s,获取播放时间回传模式",JZsdk_DefineCode_GetPortName(Port));
  2115 +
  2116 + //获取帧的序列号
  2117 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  2118 +
  2119 +#ifdef MEGAPHONE_CONFIG_STATUS_ON
  2120 +
  2121 + int mode = Megaphone_PlayBackGetMode(Port);
  2122 + HalSend_type1Send_Reply_CurrentPlayTimeStatus(Port, mode);
  2123 +
  2124 +#endif
  2125 +
  2126 + return ret;
  2127 +}
  2128 +
  2129 +/*********
  2130 + *
  2131 + * 打开opus传输
  2132 + *
  2133 + *
  2134 +**********/
  2135 +static T_JZsdkReturnCode RecvDeal_OpusTrans_start(int Port, char *getbuf)
  2136 +{
  2137 + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2138 +
  2139 + JZSDK_LOG_INFO("%s,打开opus传输1型",JZsdk_DefineCode_GetPortName(Port));
  2140 +
  2141 + //获取帧的序列号
  2142 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  2143 +
  2144 + //1、获取解码比特率
  2145 + int decode_rate = getbuf[9] * 8000;
  2146 + if(decode_rate == 0)
  2147 + {
  2148 + decode_rate = 16000;
  2149 + }
  2150 +
  2151 + //2、创建存储文件
  2152 +#ifdef MEGAPHONE_CONFIG_STATUS_ON
  2153 + ret = Megaphone_SaveOpusStart(NULL, decode_rate, 16000, 1);
  2154 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  2155 + {
  2156 + //回复操作成功
  2157 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  2158 +
  2159 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  2160 + }
  2161 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_IS_BUSY)
  2162 + {
  2163 + JZSDK_LOG_ERROR("opus忙碌中");
  2164 + }
  2165 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE)
  2166 + {
  2167 + JZSDK_LOG_ERROR("opus创建失败");
  2168 + }
  2169 +
  2170 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2171 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2172 +
  2173 +#else
  2174 + JZSDK_LOG_ERROR("非喊话器不支持opus传输");
  2175 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2176 +
  2177 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2178 +#endif
  2179 +}
  2180 +
  2181 +
  2182 +
  2183 +/*********
  2184 + *
  2185 + * 打开opus传输Ⅱ型
  2186 + *
  2187 + *
  2188 +**********/
  2189 +static T_JZsdkReturnCode RecvDeal_OpusTrans_start_2(int Port, char *getbuf)
  2190 +{
  2191 + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2192 +
  2193 + JZSDK_LOG_INFO("%s,打开opus传输1型",JZsdk_DefineCode_GetPortName(Port));
  2194 +
  2195 + //获取帧的序列号
  2196 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  2197 +
  2198 + //获取帧的长度
  2199 + int FrameLen = JZsdk_Get_FrameLength(getbuf);
  2200 +
  2201 + //获取存储模式
  2202 + int SaveMode = getbuf[9];
  2203 +
  2204 + //获取比特率
  2205 + int BitChoose = getbuf[10];
  2206 + int decode_rate = 16000;
  2207 + // if (BitChoose == 0)
  2208 + // {
  2209 + // decode_rate = 16000;
  2210 + // }
  2211 +
  2212 + //获取采样率
  2213 + int SampleChoose = getbuf[11];
  2214 + int SampleRate = 16000;
  2215 + // if (SampleChoose == 0)
  2216 + // {
  2217 + // SampleRate = 16000;
  2218 + // }
  2219 +
  2220 + //获取频道数
  2221 + int ChannelChoose = getbuf[12];
  2222 + int ChannelNum = 1;
  2223 + // if (ChannelChoose == 0)
  2224 + // {
  2225 + // ChannelNum = 1;
  2226 + // }
  2227 +
  2228 + //获取文件名长度
  2229 + int FileNameLen = getbuf[13];
  2230 + if(FileNameLen != FrameLen - 14 - 2)
  2231 + {
  2232 + JZSDK_LOG_ERROR("文件名长度错误");
  2233 + FileNameLen = FrameLen - 14 - 2;
  2234 + }
  2235 +
  2236 + if (FileNameLen > 128)
  2237 + {
  2238 + JZSDK_LOG_ERROR("文件名长度过长");
  2239 + FileNameLen = 128;
  2240 + }
  2241 +
  2242 + //获取文件名
  2243 + unsigned char FileName[128] = {0};
  2244 + memcpy(FileName, getbuf + 14, FileNameLen);
  2245 +
  2246 + //2、创建存储文件
  2247 +#ifdef MEGAPHONE_CONFIG_STATUS_ON
  2248 +
  2249 + if (SaveMode == JZ_FLAGCODE_OFF)
  2250 + {
  2251 + ret = Megaphone_SaveOpusStart(NULL, decode_rate, SampleRate, ChannelNum);
  2252 + }
  2253 + else
  2254 + {
  2255 + ret = Megaphone_SaveOpusStart(FileName, decode_rate, SampleRate, ChannelNum);
  2256 + }
  2257 +
  2258 +
  2259 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  2260 + {
  2261 + //回复操作成功
  2262 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  2263 +
  2264 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  2265 + }
  2266 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_IS_BUSY)
  2267 + {
  2268 + JZSDK_LOG_ERROR("opus忙碌中");
  2269 + }
  2270 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE)
  2271 + {
  2272 + JZSDK_LOG_ERROR("opus创建失败");
  2273 + }
  2274 +
  2275 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2276 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2277 +
  2278 +#else
  2279 + JZSDK_LOG_ERROR("非喊话器不支持opus传输");
  2280 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2281 +
  2282 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2283 +#endif
1885 } 2284 }
1886 2285
  2286 +
1887 /********* 2287 /*********
1888 * 2288 *
1889 * opus定长传输文件 2289 * opus定长传输文件
@@ -1897,13 +2297,6 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_LimitTransmission(int Port, char *ge @@ -1897,13 +2297,6 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_LimitTransmission(int Port, char *ge
1897 //获取帧的序列号 2297 //获取帧的序列号
1898 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 2298 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
1899 2299
1900 - if (HalRecvMode != JZ_DATA_TRANS_TYPE_OPUS_FILE)  
1901 - {  
1902 - JZSDK_LOG_ERROR("%s,不处于opus传输模式,无法接收opus定长音频文件",JZsdk_DefineCode_GetPortName(Port));  
1903 - HalSend_type1Send_Reply_Failure(Port, FrameSequence);  
1904 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
1905 - }  
1906 -  
1907 //提取出数据 2300 //提取出数据
1908 int DataLen = ((int)getbuf[3] << 8 ) + (int)getbuf[4] - 2 - 9; 2301 int DataLen = ((int)getbuf[3] << 8 ) + (int)getbuf[4] - 2 - 9;
1909 if (DataLen > 1024) 2302 if (DataLen > 1024)
@@ -1911,13 +2304,21 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_LimitTransmission(int Port, char *ge @@ -1911,13 +2304,21 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_LimitTransmission(int Port, char *ge
1911 JZSDK_LOG_ERROR("%s, 传输得到的opus定长音频文件帧长度超出1024上限",JZsdk_DefineCode_GetPortName(Port)); 2304 JZSDK_LOG_ERROR("%s, 传输得到的opus定长音频文件帧长度超出1024上限",JZsdk_DefineCode_GetPortName(Port));
1912 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 2305 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
1913 } 2306 }
1914 -  
1915 - HalRecvDataLen += DataLen;  
1916 - JZSDK_LOG_DEBUG("%s,传输opus定长音频文件中 一共传输了%d字节",JZsdk_DefineCode_GetPortName(Port),HalRecvDataLen);  
1917 2307
1918 //传输数据接口 2308 //传输数据接口
1919 #ifdef MEGAPHONE_CONFIG_STATUS_ON 2309 #ifdef MEGAPHONE_CONFIG_STATUS_ON
1920 - Megaphone_SaveOpusTrans(getbuf+9, DataLen); 2310 + ret = Megaphone_SaveOpusTrans(getbuf+9, DataLen);
  2311 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  2312 + {
  2313 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2314 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2315 + }
  2316 +
  2317 +#else
  2318 + JZSDK_LOG_ERROR("非喊话器不支持opus传输");
  2319 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2320 +
  2321 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
1921 #endif 2322 #endif
1922 2323
1923 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 2324 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
@@ -1932,30 +2333,35 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_LimitTransmission(int Port, char *ge @@ -1932,30 +2333,35 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_LimitTransmission(int Port, char *ge
1932 **********/ 2333 **********/
1933 static T_JZsdkReturnCode RecvDeal_OpusTrans_stop(int Port, char *getbuf) 2334 static T_JZsdkReturnCode RecvDeal_OpusTrans_stop(int Port, char *getbuf)
1934 { 2335 {
  2336 + T_JZsdkReturnCode ret;
  2337 +
1935 JZSDK_LOG_INFO("%s,结束opus传输",JZsdk_DefineCode_GetPortName(Port)); 2338 JZSDK_LOG_INFO("%s,结束opus传输",JZsdk_DefineCode_GetPortName(Port));
1936 2339
1937 //获取帧的序列号 2340 //获取帧的序列号
1938 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 2341 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
1939 2342
1940 - if (HalRecvMode != JZ_DATA_TRANS_TYPE_OPUS_FILE) 2343 +#ifdef MEGAPHONE_CONFIG_STATUS_ON
  2344 + ret = Megaphone_SaveOpusStop(JZ_FLAGCODE_OFF, NULL);
  2345 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
1941 { 2346 {
1942 - //回复操作失败  
1943 HalSend_type1Send_Reply_Failure(Port, FrameSequence); 2347 HalSend_type1Send_Reply_Failure(Port, FrameSequence);
1944 - JZSDK_LOG_ERROR("关闭opus结束传输失败,opus结束传输未开始,无法关闭"); 2348 +
1945 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 2349 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
1946 } 2350 }
  2351 + else
  2352 + {
  2353 + //回复操作成功
  2354 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
1947 2355
  2356 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  2357 + }
1948 2358
1949 -#ifdef MEGAPHONE_CONFIG_STATUS_ON  
1950 - Megaphone_SaveOpusStop(JZ_FLAGCODE_OFF, NULL);  
1951 -#endif  
1952 -  
1953 - HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(Port, JZ_FLAGCODE_OFF);  
1954 - JZSDK_LOG_INFO("一共传输了 %d字节\n",HalRecvDataLen);  
1955 - HalRecvDataLen = 0; 2359 +#else
  2360 + JZSDK_LOG_ERROR("非喊话器不支持opus传输");
  2361 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
1956 2362
1957 - //回复操作成功  
1958 - HalSend_type1Send_Reply_Success(Port, FrameSequence); 2363 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2364 +#endif
1959 2365
1960 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 2366 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
1961 } 2367 }
@@ -1976,13 +2382,6 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_stop_and_check(int Port, char *getbu @@ -1976,13 +2382,6 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_stop_and_check(int Port, char *getbu
1976 //获取帧的序列号 2382 //获取帧的序列号
1977 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 2383 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
1978 2384
1979 - if (HalRecvMode != JZ_DATA_TRANS_TYPE_OPUS_FILE)  
1980 - {  
1981 - //回复操作失败  
1982 - HalSend_type1Send_Reply_Failure(Port, FrameSequence);  
1983 - JZSDK_LOG_ERROR("关闭音频文件上传失败,音频文件上传未开始,无法关闭");  
1984 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
1985 - }  
1986 2385
1987 unsigned char checkCode[128]; 2386 unsigned char checkCode[128];
1988 int frameLenth = ((int)getbuf[3]) << 8 | (int)getbuf[4]; 2387 int frameLenth = ((int)getbuf[3]) << 8 | (int)getbuf[4];
@@ -2035,18 +2434,16 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_stop_and_check(int Port, char *getbu @@ -2035,18 +2434,16 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_stop_and_check(int Port, char *getbu
2035 //回复操作失败 2434 //回复操作失败
2036 HalSend_type1Send_Reply_Failure(Port, FrameSequence); 2435 HalSend_type1Send_Reply_Failure(Port, FrameSequence);
2037 } 2436 }
2038 -  
2039 -#endif  
2040 2437
2041 - //3、调整接收模式为音频文件传输  
2042 - HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(Port, JZ_FLAGCODE_OFF);  
2043 - JZSDK_LOG_INFO("一共传输了 %d字节\n",HalRecvDataLen);  
2044 - HalRecvDataLen = 0; 2438 +#else
  2439 + ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2440 + JZSDK_LOG_ERROR("非喊话器不支持opus传输");
  2441 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2442 +#endif
2045 2443
2046 return ret; 2444 return ret;
2047 } 2445 }
2048 2446
2049 -  
2050 /********* 2447 /*********
2051 * 2448 *
2052 * opus播放 2449 * opus播放
@@ -2055,30 +2452,36 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_stop_and_check(int Port, char *getbu @@ -2055,30 +2452,36 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_stop_and_check(int Port, char *getbu
2055 **********/ 2452 **********/
2056 static T_JZsdkReturnCode RecvDeal_OpusPlay(int Port, char *getbuf) 2453 static T_JZsdkReturnCode RecvDeal_OpusPlay(int Port, char *getbuf)
2057 { 2454 {
  2455 + T_JZsdkReturnCode ret;
  2456 +
2058 JZSDK_LOG_INFO("%s,opus播放",JZsdk_DefineCode_GetPortName(Port)); 2457 JZSDK_LOG_INFO("%s,opus播放",JZsdk_DefineCode_GetPortName(Port));
2059 2458
2060 //获取帧的序列号 2459 //获取帧的序列号
2061 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 2460 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
2062 2461
2063 - T_JZsdkReturnCode ret = HalRecv_tpye1_RecvDeal_UartTransmodeDecide();  
2064 - if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) 2462 +
  2463 +#ifdef MEGAPHONE_CONFIG_STATUS_ON
  2464 +
  2465 + //获取是否处于opus传输中的模式
  2466 + if (OpusFile_GetSaveFlag() == JZ_FLAGCODE_ON)
2065 { 2467 {
  2468 + JZSDK_LOG_ERROR("禁止播放opus,当前正处于录入中");
2066 //回复操作失败 2469 //回复操作失败
2067 HalSend_type1Send_Reply_Failure(Port, FrameSequence); 2470 HalSend_type1Send_Reply_Failure(Port, FrameSequence);
2068 - JZSDK_LOG_ERROR("opus播放失败,存在传输模式打开中");  
2069 - return ret; 2471 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
2070 } 2472 }
2071 2473
2072 UIcontrol_Opus_PlayFixedFile(Port); 2474 UIcontrol_Opus_PlayFixedFile(Port);
2073 2475
  2476 +#endif
  2477 +
2074 //回复操作成功 2478 //回复操作成功
2075 HalSend_type1Send_Reply_Success(Port, FrameSequence); 2479 HalSend_type1Send_Reply_Success(Port, FrameSequence);
2076 2480
  2481 +
2077 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 2482 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
2078 } 2483 }
2079 2484
2080 -  
2081 -  
2082 /********* 2485 /*********
2083 * 2486 *
2084 * 开启opus实时喊话 功能 2487 * 开启opus实时喊话 功能
@@ -2087,24 +2490,13 @@ static T_JZsdkReturnCode RecvDeal_OpusPlay(int Port, char *getbuf) @@ -2087,24 +2490,13 @@ static T_JZsdkReturnCode RecvDeal_OpusPlay(int Port, char *getbuf)
2087 **********/ 2490 **********/
2088 static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_start(int Port, char *getbuf) 2491 static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_start(int Port, char *getbuf)
2089 { 2492 {
  2493 + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2494 +
2090 JZSDK_LOG_INFO("%s,开启opus实时喊话功能",JZsdk_DefineCode_GetPortName(Port)); 2495 JZSDK_LOG_INFO("%s,开启opus实时喊话功能",JZsdk_DefineCode_GetPortName(Port));
2091 2496
2092 //获取帧的序列号 2497 //获取帧的序列号
2093 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 2498 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
2094 2499
2095 - T_JZsdkReturnCode ret = HalRecv_tpye1_RecvDeal_UartTransmodeDecide();  
2096 - if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)  
2097 - {  
2098 - //回复操作失败  
2099 - HalSend_type1Send_Reply_Failure(Port, FrameSequence);  
2100 - JZSDK_LOG_ERROR("开启opus实时喊话失败");  
2101 - return ret;  
2102 - }  
2103 -  
2104 - //1、修改接收模式  
2105 - HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(Port, JZ_DATA_TRANS_TYPE_REAL_TIME_OPUS);  
2106 - HalRecvDataLen = 0;  
2107 -  
2108 //2、获取码率倍率 默认8k*1倍 2500 //2、获取码率倍率 默认8k*1倍
2109 int RateMagnification = (int)getbuf[9]; 2501 int RateMagnification = (int)getbuf[9];
2110 int Rate; 2502 int Rate;
@@ -2120,11 +2512,17 @@ static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_start(int Port, char *getbu @@ -2120,11 +2512,17 @@ static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_start(int Port, char *getbu
2120 2512
2121 //3、打开实时语音模式 2513 //3、打开实时语音模式
2122 #ifdef MEGAPHONE_CONFIG_STATUS_ON 2514 #ifdef MEGAPHONE_CONFIG_STATUS_ON
2123 - Megaphone_RealTimeVoice_Start(Rate); 2515 + ret = Megaphone_RealTimeVoice_Start(Rate);
2124 #endif 2516 #endif
2125 2517
2126 - //4、通知成功打开语音发送模式  
2127 - HalSend_type1Send_Reply_Success(Port, FrameSequence); 2518 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  2519 + {
  2520 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  2521 + }
  2522 + else
  2523 + {
  2524 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2525 + }
2128 2526
2129 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 2527 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
2130 } 2528 }
@@ -2138,7 +2536,7 @@ static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_start(int Port, char *getbu @@ -2138,7 +2536,7 @@ static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_start(int Port, char *getbu
2138 static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_LimitTransmission(int Port, char *getbuf, int len) 2536 static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_LimitTransmission(int Port, char *getbuf, int len)
2139 { 2537 {
2140 2538
2141 - T_JZsdkReturnCode ret; 2539 + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
2142 2540
2143 //获取帧的序列号 2541 //获取帧的序列号
2144 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 2542 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
@@ -2152,73 +2550,227 @@ static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_LimitTransmission(int Port, @@ -2152,73 +2550,227 @@ static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_LimitTransmission(int Port,
2152 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 2550 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
2153 } 2551 }
2154 2552
2155 - //判断是否是opus实时语音传输模式  
2156 - if (HalRecvMode != JZ_DATA_TRANS_TYPE_REAL_TIME_OPUS) 2553 + JZSDK_LOG_DEBUG("%s,传输opus定长语音传输中 长度:%d",JZsdk_DefineCode_GetPortName(Port), DataLen);
  2554 +
  2555 + //传输数据接口
  2556 +#ifdef MEGAPHONE_CONFIG_STATUS_ON
  2557 + ret = Megaphone_RealTimeVoice_Trans(getbuf+9, DataLen);
  2558 +#endif
  2559 +
  2560 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
2157 { 2561 {
2158 - //回复操作失败  
2159 - JZSDK_LOG_ERROR("%s,opus实时语音定长传输失败,未开启实时opus传输模式", JZsdk_DefineCode_GetPortName(Port));  
2160 HalSend_type1Send_Reply_Failure(Port, FrameSequence); 2562 HalSend_type1Send_Reply_Failure(Port, FrameSequence);
2161 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
2162 } 2563 }
2163 2564
2164 - HalRecvDataLen += DataLen;  
2165 - JZSDK_LOG_DEBUG("%s,传输opus定长语音传输中 长度:%d,总长度:%d",JZsdk_DefineCode_GetPortName(Port), DataLen, HalRecvDataLen);  
2166 -  
2167 - //传输数据接口 2565 + return ret;
  2566 +}
  2567 +
  2568 +
  2569 +/*********
  2570 + *
  2571 + * 关闭opus实时语音发送功能
  2572 + *
  2573 + *
  2574 +**********/
  2575 +static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_stop(int Port, char *getbuf)
  2576 +{
  2577 + JZSDK_LOG_INFO("%s,关闭opus实时喊话功能",JZsdk_DefineCode_GetPortName(Port));
  2578 +
  2579 + T_JZsdkReturnCode ret;
  2580 +
  2581 + //获取帧的序列号
  2582 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  2583 +
  2584 + //2、关闭实时语音模式
2168 #ifdef MEGAPHONE_CONFIG_STATUS_ON 2585 #ifdef MEGAPHONE_CONFIG_STATUS_ON
2169 - ret = Megaphone_RealTimeVoice_Trans(getbuf+9, DataLen); 2586 + ret = Megaphone_RealTimeVoice_Close();
2170 #endif 2587 #endif
  2588 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  2589 + {
  2590 + //4、回复操作成功
  2591 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  2592 + }
  2593 + else
  2594 + {
  2595 + //4、回复操作失败
  2596 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2597 + }
2171 2598
2172 return ret; 2599 return ret;
2173 } 2600 }
2174 2601
2175 2602
2176 -/*********  
2177 - *  
2178 - * 关闭opus实时语音发送功能  
2179 - *  
2180 - *  
2181 -**********/  
2182 -static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_stop(int Port, char *getbuf)  
2183 -{  
2184 - JZSDK_LOG_INFO("%s,关闭opus实时喊话功能",JZsdk_DefineCode_GetPortName(Port));  
2185 2603
2186 - T_JZsdkReturnCode ret; 2604 +/*******************************************************************************************************************************
  2605 + *
  2606 + * pcm部分
  2607 + *
  2608 + * *******************************************************************************************************************************/
  2609 +
  2610 +/*********************************
  2611 + *
  2612 + * PCM播放
  2613 + *
  2614 + *
  2615 + * **********************************/
  2616 +static T_JZsdkReturnCode RecvDeal_PCM_Play(int Port, char *getbuf)
  2617 +{
  2618 + T_JZsdkReturnCode ret;
  2619 +
  2620 + JZSDK_LOG_INFO("%s, PCM播放",JZsdk_DefineCode_GetPortName(Port));
  2621 +
  2622 + //获取帧的序列号
  2623 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  2624 +
  2625 + //分析pcm文件名
  2626 + unsigned char PcmName[128];
  2627 + unsigned int PcmNameLen = JZsdk_Get_FrameLength(getbuf) - 9 - 2;
  2628 + if (PcmNameLen > 128)
  2629 + {
  2630 + //回复操作失败
  2631 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2632 +
  2633 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2634 + }
  2635 +
  2636 + memset(PcmName, 0, sizeof(PcmName));
  2637 + memcpy(PcmName, &getbuf[10], PcmNameLen);
  2638 +
  2639 + ret = UIcontrol_Pcm_PlayListFile(Port, PcmName, PcmNameLen);
  2640 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  2641 + {
  2642 + //回复操作成功
  2643 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  2644 + }
  2645 + else
  2646 + {
  2647 + //回复操作失败
  2648 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2649 +
  2650 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2651 + }
  2652 +
  2653 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  2654 +}
  2655 +
  2656 +
  2657 +
  2658 +
  2659 +/**********************************
  2660 + *
  2661 + * pcm列表查询
  2662 + *
  2663 + *
  2664 + * **********************************/
  2665 +static T_JZsdkReturnCode RecvDeal_Get_PcmList(int Port, char *getbuf)
  2666 +{
  2667 + T_JZsdkReturnCode ret;
  2668 +
  2669 + JZSDK_LOG_INFO("%s,pcm列表查询",JZsdk_DefineCode_GetPortName(Port));
  2670 +
  2671 + //获取帧的序列号
  2672 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  2673 +
  2674 +#ifdef MEGAPHONE_CONFIG_STATUS_ON
  2675 +
  2676 + //刷新pcm列表
  2677 + PcmFile_FlushList();
  2678 +
  2679 + //获取opus总数
  2680 + int PcmFileCount = PcmFile_GetListNum();
  2681 +
  2682 + //注册一个opus数组
  2683 + unsigned char **MusicName = (unsigned char **)malloc(PcmFileCount * sizeof(unsigned char*));
  2684 + if (MusicName == NULL)
  2685 + {
  2686 + //回复操作失败
  2687 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2688 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2689 + }
  2690 +
  2691 + //注册一个歌曲名字长度的数组
  2692 + int *MusicNameLength = (int *)malloc(PcmFileCount * sizeof(int));
  2693 + if (MusicNameLength == NULL)
  2694 + {
  2695 + free(MusicName);
  2696 + //回复操作失败
  2697 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2698 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2699 + }
  2700 +
  2701 + //为每一首opus分配内存
  2702 + for (int i = 0; i < PcmFileCount; i++)
  2703 + {
  2704 + MusicName[i] = (unsigned char*)malloc(128 * sizeof(unsigned char));
  2705 + if (MusicName[i] == NULL)
  2706 + {
  2707 + // 内存分配失败,需要释放之前分配的内存
  2708 + for (int j = 0; j < i; j++)
  2709 + {
  2710 + free(MusicName[j]);
  2711 + }
  2712 + free(MusicNameLength);
  2713 + free(MusicName);
  2714 +
  2715 + //回复操作失败
  2716 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2717 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2718 + }
  2719 +
  2720 + memset(MusicName[i], 0, 128 * sizeof(unsigned char));
  2721 +
  2722 + //如果成功分配内存,则写入名字
  2723 + Megaphone_PcmFile_GetAudioNameByIndex(i, MusicName[i], &MusicNameLength[i]);
  2724 + }
  2725 +
  2726 + JZSDK_LOG_DEBUG("pcm列表取出完成");
2187 2727
2188 - //获取帧的序列号  
2189 - int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 2728 + //发送开始帧
  2729 + ret = HalSend_type1Send_Send_OpusList_Start(Port, FrameSequence, PcmFileCount);
2190 2730
2191 - if (HalRecvMode != JZ_DATA_TRANS_TYPE_REAL_TIME_OPUS) 2731 + for (int i = 0; i < PcmFileCount; i++)
2192 { 2732 {
2193 - //回复操作失败  
2194 - HalSend_type1Send_Reply_Failure(Port, FrameSequence);  
2195 - JZSDK_LOG_ERROR("关闭opus实时语音发送功能失败,opus实时语音发送功能未开始,无法关闭");  
2196 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
2197 - } 2733 + //获取歌曲详细信息
  2734 + struct AudioMange_audio_struct AudioDetailMessage;
  2735 + memset(&AudioDetailMessage, 0, sizeof(struct AudioMange_audio_struct));
  2736 + ret = PcmFile_GetAudioInfo(MusicName[i], MusicNameLength[i],&AudioDetailMessage);
  2737 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  2738 + {
  2739 + //回复操作失败
  2740 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
2198 2741
2199 - //1、修改接收模式  
2200 - HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(Port, JZ_FLAGCODE_OFF);  
2201 - JZSDK_LOG_INFO("一共播放了:%d的内容", HalRecvDataLen);  
2202 - HalRecvDataLen = 0; 2742 + continue;
  2743 + }
2203 2744
2204 - //2、关闭实时语音模式  
2205 -#ifdef MEGAPHONE_CONFIG_STATUS_ON  
2206 - ret = Megaphone_RealTimeVoice_Close();  
2207 -#endif  
2208 - if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)  
2209 - {  
2210 - //4、回复操作成功  
2211 - HalSend_type1Send_Reply_Success(Port, FrameSequence); 2745 + //发送opus列表
  2746 + ret = HalSend_type1Send_Send_OpusList_Trans(Port, FrameSequence, AudioDetailMessage.FileName, AudioDetailMessage.FileNameLen, AudioDetailMessage.FileSize, AudioDetailMessage.Time);
  2747 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  2748 + {
  2749 + //回复操作失败
  2750 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2751 +
  2752 + continue;
  2753 + }
2212 } 2754 }
2213 - else 2755 +
  2756 + //释放存储的数据
  2757 + for (int i = 0; i < PcmFileCount; i++)
2214 { 2758 {
2215 - //4、回复操作失败  
2216 - HalSend_type1Send_Reply_Failure(Port, FrameSequence); 2759 + free(MusicName[i]);
2217 } 2760 }
  2761 +
  2762 + free(MusicNameLength);
  2763 + free(MusicName);
2218 2764
2219 - return ret;  
2220 -} 2765 + //发送结束帧
  2766 + ret = HalSend_type1Send_Send_OpusList_Stop(Port, FrameSequence);
2221 2767
  2768 +#else
  2769 + JZSDK_LOG_ERROR("非喊话器不支持pcm列表");
  2770 + //回复操作失败
  2771 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2772 +#endif
  2773 +}
2222 2774
2223 2775
2224 /******************************************************************************************************************************* 2776 /*******************************************************************************************************************************
@@ -2604,6 +3156,185 @@ static T_JZsdkReturnCode RecvDeal_Checkstatus_OutPutPower(int Port, char *getbuf @@ -2604,6 +3156,185 @@ static T_JZsdkReturnCode RecvDeal_Checkstatus_OutPutPower(int Port, char *getbuf
2604 return ret; 3156 return ret;
2605 } 3157 }
2606 3158
  3159 +
  3160 +
  3161 +
  3162 +
  3163 +
  3164 +
  3165 +
  3166 +
  3167 +/*******************************************************************************************************************************
  3168 + *
  3169 + * 升级部分
  3170 + *
  3171 + * *******************************************************************************************************************************/
  3172 +
  3173 +/*********
  3174 + *
  3175 + * 准备升级
  3176 + *
  3177 +**********/
  3178 +static T_JZsdkReturnCode RecvDeal_Upgrade_Prepare(int Port, char *getbuf)
  3179 +{
  3180 + T_JZsdkReturnCode ret;
  3181 +
  3182 + JZSDK_LOG_INFO("%s,准备升级",JZsdk_DefineCode_GetPortName(Port));
  3183 +
  3184 + //获取帧的序列号
  3185 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  3186 +
  3187 + int status = 0;
  3188 + Upgrade_GetStatus(&status);
  3189 +
  3190 + //回复升级的准备状态
  3191 + HalSend_type1Send_Reply_ReadyForUpdate(Port, FrameSequence);
  3192 +
  3193 + return ret;
  3194 +}
  3195 +
  3196 +
  3197 +/*********
  3198 + *
  3199 + * 升级校验码
  3200 + *
  3201 +**********/
  3202 +static T_JZsdkReturnCode RecvDeal_Upgrade_SendCheckCode(int Port, char *getbuf)
  3203 +{
  3204 + T_JZsdkReturnCode ret;
  3205 +
  3206 + JZSDK_LOG_INFO("%s,升级校验码",JZsdk_DefineCode_GetPortName(Port));
  3207 +
  3208 + //获取帧的序列号
  3209 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  3210 +
  3211 + //解析出校验码
  3212 + unsigned char CheckCode[32];
  3213 + memcpy(CheckCode, getbuf + 9, 32);
  3214 +
  3215 + //将校验码放置到升级模块
  3216 + ret = Upgrade_PackageCheckCodeSave(CheckCode, JZSDK_CHECK_SUM_TYPE_MD5, 32);
  3217 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  3218 + {
  3219 + //回复校验码已收到
  3220 + HalSend_type1Send_Reply_UpgradeHaveRecvCheckCode(Port, 1);
  3221 + }
  3222 + else
  3223 + {
  3224 + //回复校验码已收到
  3225 + HalSend_type1Send_Reply_UpgradeHaveRecvCheckCode(Port, 0);
  3226 + }
  3227 +
  3228 + return ret;
  3229 +}
  3230 +
  3231 +
  3232 +/*********
  3233 + *
  3234 + * 数据传输开始
  3235 + *
  3236 +**********/
  3237 +static T_JZsdkReturnCode RecvDeal_Upgrade_Start(int Port, char *getbuf)
  3238 +{
  3239 + T_JZsdkReturnCode ret;
  3240 +
  3241 + JZSDK_LOG_INFO("%s,数据传输开始",JZsdk_DefineCode_GetPortName(Port));
  3242 +
  3243 + //获取帧的序列号
  3244 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  3245 +
  3246 + ret = Upgrade_PackageDownload_Start();
  3247 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  3248 + {
  3249 + //回复开始文件发送
  3250 + HalSend_type1Send_Reply_UpgradeStart(Port);
  3251 + }
  3252 + else
  3253 + {
  3254 + //回复开始文件发送失败
  3255 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  3256 + }
  3257 +
  3258 + return ret;
  3259 +}
  3260 +
  3261 +
  3262 +/*********
  3263 + *
  3264 + * 数据传输中
  3265 + *
  3266 +**********/
  3267 +static T_JZsdkReturnCode RecvDeal_Upgrade_Trans(int Port, char *getbuf)
  3268 +{
  3269 + T_JZsdkReturnCode ret;
  3270 +
  3271 + JZSDK_LOG_INFO("%s,数据传输中",JZsdk_DefineCode_GetPortName(Port));
  3272 +
  3273 + //获取帧的序列号
  3274 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  3275 +
  3276 + //解析数据长度
  3277 + int FrameLength = JZsdk_Get_FrameLength(getbuf);
  3278 + int BufLen = FrameLength - 8 -2;
  3279 +
  3280 + ret = Upgrade_PackageDownload_Trans(&getbuf[9], BufLen);
  3281 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  3282 + {
  3283 + //回复数据传输失败
  3284 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  3285 + }
  3286 +
  3287 + return ret;
  3288 +}
  3289 +
  3290 +
  3291 +/*********
  3292 + *
  3293 + * 数据传输结束
  3294 + *
  3295 +**********/
  3296 +static T_JZsdkReturnCode RecvDeal_Upgrade_End(int Port, char *getbuf)
  3297 +{
  3298 + T_JZsdkReturnCode ret;
  3299 +
  3300 + JZSDK_LOG_INFO("%s,数据传输结束",JZsdk_DefineCode_GetPortName(Port));
  3301 +
  3302 + //获取帧的序列号
  3303 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  3304 +
  3305 + ret = Upgrade_PackageDownload_Stop();
  3306 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  3307 + {
  3308 + //回复数据传输失败
  3309 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  3310 + return ret;
  3311 + }
  3312 + else
  3313 + {
  3314 + //回复结束文件传输
  3315 + HalSend_type1Send_Reply_UpgradeEnd(Port);
  3316 + }
  3317 +
  3318 + //回复完成后,开始校验
  3319 + ret = Upgrade_PackageCheck();
  3320 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  3321 + {
  3322 + HalSend_type1Send_Reply_UpgradeCheckResult(Port, 1);
  3323 + return ret;
  3324 + }
  3325 +
  3326 + //回复校验成功
  3327 + HalSend_type1Send_Reply_UpgradeCheckResult(Port, 0);
  3328 +
  3329 + //开始升级
  3330 + Upgrade_PackageUpgrade();
  3331 +
  3332 + return ret;
  3333 +}
  3334 +
  3335 +
  3336 +
  3337 +
2607 /******************************************************************************************************************************* 3338 /*******************************************************************************************************************************
2608 * 3339 *
2609 * 警灯部分 3340 * 警灯部分
@@ -2802,9 +3533,9 @@ static T_JZsdkReturnCode RecvDeal_ObtainTimeStamp(int Port, unsigned char *getbu @@ -2802,9 +3533,9 @@ static T_JZsdkReturnCode RecvDeal_ObtainTimeStamp(int Port, unsigned char *getbu
2802 } 3533 }
2803 3534
2804 // 提取年、月、日 3535 // 提取年、月、日
2805 - int year = tm_info->tm_year + 1900; // 注意:tm_year是从1900年开始的 3536 + int year = tm_info->tm_year + 1980; // 注意:tm_year是从1980年开始的
2806 int month = tm_info->tm_mon + 1; // 注意:tm_mon是从0开始的(0=1月,11=12月) 3537 int month = tm_info->tm_mon + 1; // 注意:tm_mon是从0开始的(0=1月,11=12月)
2807 - int day = tm_info->tm_mday; 3538 + int day = tm_info->tm_mday + 6;
2808 3539
2809 JZSDK_LOG_INFO("获得年份: %d, 月份: %d, 日期: %d", year, month, day); 3540 JZSDK_LOG_INFO("获得年份: %d, 月份: %d, 日期: %d", year, month, day);
2810 3541
@@ -2817,6 +3548,9 @@ static T_JZsdkReturnCode RecvDeal_ObtainTimeStamp(int Port, unsigned char *getbu @@ -2817,6 +3548,9 @@ static T_JZsdkReturnCode RecvDeal_ObtainTimeStamp(int Port, unsigned char *getbu
2817 JZSDK_LOG_ERROR("设置系统时间失败"); 3548 JZSDK_LOG_ERROR("设置系统时间失败");
2818 } 3549 }
2819 3550
  3551 + //设置gps时间
  3552 + Attribute_SetGpsTime((T_JZsdkAttributeGpsTime)TimeStamp);
  3553 +
2820 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 3554 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
2821 } 3555 }
2822 3556
@@ -2836,13 +3570,25 @@ static T_JZsdkReturnCode RecvDeal_ObtainAllVersion(int Port, unsigned char *getb @@ -2836,13 +3570,25 @@ static T_JZsdkReturnCode RecvDeal_ObtainAllVersion(int Port, unsigned char *getb
2836 JZSDK_LOG_INFO("不处理本地版本信息"); 3570 JZSDK_LOG_INFO("不处理本地版本信息");
2837 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 3571 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
2838 } 3572 }
2839 - 3573 +
  3574 + //查看设备id是否已存在到本地
  3575 + if(DeviceInfo_IsExist(DeviceId) != JZ_FLAGCODE_ON)
  3576 + {
  3577 + DeviceInfo_IncreaseDeviceId(DeviceId);
  3578 + }
  3579 +
2840 //设置到本地 3580 //设置到本地
2841 - DeviceInfo_SetAllVerision(DeviceId, MajorVersion, MinjorVersion, ModifyVersion, DebugVersion); 3581 + DeviceInfo_IncreaseVersion(DeviceId, MajorVersion, MinjorVersion, ModifyVersion, DebugVersion);
2842 3582
2843 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 3583 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
2844 } 3584 }
2845 3585
  3586 +/********************
  3587 + *
  3588 + * 接收到序列号
  3589 + *
  3590 + *
  3591 + * **********************/
2846 static T_JZsdkReturnCode RecvDeal_ObtainAllSerialNumber(int Port, unsigned char *getbuf) 3592 static T_JZsdkReturnCode RecvDeal_ObtainAllSerialNumber(int Port, unsigned char *getbuf)
2847 { 3593 {
2848 int DeviceId = getbuf[9]; 3594 int DeviceId = getbuf[9];
@@ -2856,14 +3602,14 @@ static T_JZsdkReturnCode RecvDeal_ObtainAllSerialNumber(int Port, unsigned char @@ -2856,14 +3602,14 @@ static T_JZsdkReturnCode RecvDeal_ObtainAllSerialNumber(int Port, unsigned char
2856 3602
2857 JZSDK_LOG_INFO("获得到全部序列号帧, 设备0x%x, %s",DeviceId, SerialNumber); 3603 JZSDK_LOG_INFO("获得到全部序列号帧, 设备0x%x, %s",DeviceId, SerialNumber);
2858 3604
2859 - if (DeviceId == DEVICE_VERSION) 3605 + //查看设备id是否已存在到本地
  3606 + if(DeviceInfo_IsExist(DeviceId) != JZ_FLAGCODE_ON)
2860 { 3607 {
2861 - JZSDK_LOG_INFO("不处理本地版本信息");  
2862 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 3608 + DeviceInfo_IncreaseDeviceId(DeviceId);
2863 } 3609 }
2864 3610
2865 //设置到本地 3611 //设置到本地
2866 - DeviceInfo_SetAllSerialNumber(DeviceId, SerialNumber, SerialNumberLen); 3612 + DeviceInfo_IncreaseSerialNumber(DeviceId, SerialNumber, SerialNumberLen);
2867 3613
2868 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 3614 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
2869 } 3615 }
@@ -3157,6 +3903,7 @@ static T_JZsdkReturnCode RecvDeal_QuerySecondaryDeviceName(int Port, char *getbu @@ -3157,6 +3903,7 @@ static T_JZsdkReturnCode RecvDeal_QuerySecondaryDeviceName(int Port, char *getbu
3157 3903
3158 //2、获取当前从设备名 3904 //2、获取当前从设备名
3159 int SecondaryName = SecondaryDeviceName; 3905 int SecondaryName = SecondaryDeviceName;
  3906 + JZSDK_LOG_INFO("当前从设备为:%d", SecondaryName);
3160 3907
3161 //3、回复当前从设备名 3908 //3、回复当前从设备名
3162 HalSend_type1Send_Reply_SecondaryDeviceName(Port ,SecondaryName, FrameSequence); 3909 HalSend_type1Send_Reply_SecondaryDeviceName(Port ,SecondaryName, FrameSequence);
@@ -3311,8 +4058,31 @@ static T_JZsdkReturnCode RecvDeal_Checkstatus_GimbalLinkage(int Port, char *getb @@ -3311,8 +4058,31 @@ static T_JZsdkReturnCode RecvDeal_Checkstatus_GimbalLinkage(int Port, char *getb
3311 return ret; 4058 return ret;
3312 } 4059 }
3313 4060
  4061 +
  4062 +static T_JZTaskHandle g_UartReinit_task = NULL;
  4063 +
  4064 +static void *UartReinit_thread(void *arg)
  4065 +{
  4066 + int *arg_value = (int *)arg;
  4067 +
  4068 + int Port = arg_value[0];
  4069 +
  4070 + int Value[1];
  4071 + Value[0]= arg_value[1];
  4072 +
  4073 +
  4074 + JZsdk_HalPort_ReInit(Port, Value);
  4075 +
  4076 + JZSDK_LOG_INFO("串口重置完毕");
  4077 +
  4078 + free(arg);
  4079 +}
  4080 +
  4081 +
3314 static T_JZsdkReturnCode RecvDeal_UartBitrateChange(int Port, char *getbuf) 4082 static T_JZsdkReturnCode RecvDeal_UartBitrateChange(int Port, char *getbuf)
3315 { 4083 {
  4084 + T_JZsdkOsalHandler *osalHandler = JZsdk_Platform_GetOsalHandler();
  4085 +
3316 JZSDK_LOG_INFO("%s,收到串口比特率修改",JZsdk_DefineCode_GetPortName(Port)); 4086 JZSDK_LOG_INFO("%s,收到串口比特率修改",JZsdk_DefineCode_GetPortName(Port));
3317 4087
3318 //获取帧的序列号 4088 //获取帧的序列号
@@ -3349,8 +4119,14 @@ static T_JZsdkReturnCode RecvDeal_UartBitrateChange(int Port, char *getbuf) @@ -3349,8 +4119,14 @@ static T_JZsdkReturnCode RecvDeal_UartBitrateChange(int Port, char *getbuf)
3349 break; 4119 break;
3350 } 4120 }
3351 4121
3352 - int Value[1] = {BitRate};  
3353 - JZsdk_HalPort_ReInit(Port, Value); 4122 + int *arg = (int *)malloc(sizeof(int) * 2);
  4123 + arg[0] = Port;
  4124 + arg[1] = BitRate;
  4125 +
  4126 + //使用一个线程用于修改比特率
  4127 + osalHandler->TaskCreate("UartReinit_task", UartReinit_thread, 8192, arg, &g_UartReinit_task);
  4128 +
  4129 + JZSDK_LOG_INFO("已创建串口重置线程");
3354 4130
3355 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 4131 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
3356 } 4132 }
@@ -3505,8 +4281,7 @@ static T_JZsdkReturnCode RecvDeal_ObtainSecondaryDeviceName(int Port, char *getb @@ -3505,8 +4281,7 @@ static T_JZsdkReturnCode RecvDeal_ObtainSecondaryDeviceName(int Port, char *getb
3505 printf("设置本地从设备名%x\n", value1); 4281 printf("设置本地从设备名%x\n", value1);
3506 SecondaryDeviceName = value1; 4282 SecondaryDeviceName = value1;
3507 4283
3508 - //设置本地从设备名  
3509 - DeviceInfo_SetDeviceName(Port, value1); 4284 + DeviceInfo_IncreaseDeviceId(value1);
3510 4285
3511 //广播从设备名 4286 //广播从设备名
3512 UIcontrol_Broadcast_SecondaryDeviceName(value1); 4287 UIcontrol_Broadcast_SecondaryDeviceName(value1);
@@ -3514,6 +4289,7 @@ static T_JZsdkReturnCode RecvDeal_ObtainSecondaryDeviceName(int Port, char *getb @@ -3514,6 +4289,7 @@ static T_JZsdkReturnCode RecvDeal_ObtainSecondaryDeviceName(int Port, char *getb
3514 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 4289 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
3515 } 4290 }
3516 4291
  4292 +
3517 /******************************************************************************************************************************* 4293 /*******************************************************************************************************************************
3518 * 4294 *
3519 * 云台相关 4295 * 云台相关
@@ -3650,6 +4426,12 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi @@ -3650,6 +4426,12 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi
3650 return 0; 4426 return 0;
3651 break; 4427 break;
3652 4428
  4429 + //预设任务帧
  4430 + case JZ_INSCODE_5AFRAME_PRESET_TASK:
  4431 + RecvDeal_PresetTask(Port,getbuf);
  4432 + return 0;
  4433 + break;
  4434 +
3653 //获取设备信息 4435 //获取设备信息
3654 case JZ_INSCODE_5AFRAME_DEVICE_MESSAGE: 4436 case JZ_INSCODE_5AFRAME_DEVICE_MESSAGE:
3655 RecvDeal_GetDeviceMessage(Port,getbuf); 4437 RecvDeal_GetDeviceMessage(Port,getbuf);
@@ -3832,13 +4614,37 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi @@ -3832,13 +4614,37 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi
3832 return 0; 4614 return 0;
3833 break; 4615 break;
3834 4616
  4617 + //音频重命名
  4618 + case JZ_INSCODE_5AFRAME_RENAME_AUDIO:
  4619 + RecvDeal_Rename_Audio(Port,getbuf);
  4620 + return 0;
  4621 + break;
  4622 +
  4623 + //录音重命名
  4624 + case JZ_INSCODE_5AFRAME_RENAME_VOICE_RECORD:
  4625 + RecvDeal_Rename_VoiceRecord(Port,getbuf);
  4626 + return 0;
  4627 + break;
  4628 +
  4629 + //视频重命名
  4630 + case JZ_INSCODE_5AFRAME_RENAME_VIDEO_RECORD:
  4631 + RecvDeal_Rename_VideoRecord(Port,getbuf);
  4632 + return 0;
  4633 + break;
3835 4634
3836 //打开opus传输 4635 //打开opus传输
3837 - case JZ_INSCODE_5AFRAME_OPUS_TRANS_START: 4636 + case JZ_INSCODE_5AFRAME_OPUS_TRANS_START_1:
3838 RecvDeal_OpusTrans_start(Port,getbuf); 4637 RecvDeal_OpusTrans_start(Port,getbuf);
3839 return 0; 4638 return 0;
3840 break; 4639 break;
3841 4640
  4641 +
  4642 + //传输opus文件数据2型
  4643 + case JZ_INSCODE_5AFRAME_OPUS_TRANS_START_2:
  4644 + RecvDeal_OpusTrans_start_2(Port,getbuf);
  4645 + return 0;
  4646 + break;
  4647 +
3842 //传输定长opus文件数据 4648 //传输定长opus文件数据
3843 case JZ_INSCODE_5AFRAME_OPUS_TRANS_LIMIT_TRANSMISSION: 4649 case JZ_INSCODE_5AFRAME_OPUS_TRANS_LIMIT_TRANSMISSION:
3844 RecvDeal_OpusTrans_LimitTransmission(Port,getbuf, len); 4650 RecvDeal_OpusTrans_LimitTransmission(Port,getbuf, len);
@@ -3863,7 +4669,6 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi @@ -3863,7 +4669,6 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi
3863 return 0; 4669 return 0;
3864 break; 4670 break;
3865 4671
3866 -  
3867 //开启opus实时喊话 4672 //开启opus实时喊话
3868 case JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_START: 4673 case JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_START:
3869 RecvDeal_Opus_RealTimeVoice_start(Port,getbuf); 4674 RecvDeal_Opus_RealTimeVoice_start(Port,getbuf);
@@ -3882,6 +4687,18 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi @@ -3882,6 +4687,18 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi
3882 return 0; 4687 return 0;
3883 break; 4688 break;
3884 4689
  4690 + //PCM播放
  4691 + case JZ_INSCODE_5AFRAME_PCM_PLAY:
  4692 + RecvDeal_PCM_Play(Port,getbuf);
  4693 + return 0;
  4694 + break;
  4695 +
  4696 + //获取Pcm列表
  4697 + case JZ_INSCODE_5AFRAME_PCM_GETPCMLIST:
  4698 + RecvDeal_Get_PcmList(Port,getbuf);
  4699 + return 0;
  4700 + break;
  4701 +
3885 //云台控制 4702 //云台控制
3886 case JZ_INSCODE_5AFRAME_GIMBAL_PITCH_CONTROL: 4703 case JZ_INSCODE_5AFRAME_GIMBAL_PITCH_CONTROL:
3887 RecvDeal_Gimbal_PitchControl(Port,getbuf); 4704 RecvDeal_Gimbal_PitchControl(Port,getbuf);
@@ -3922,6 +4739,17 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi @@ -3922,6 +4739,17 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi
3922 return 0; 4739 return 0;
3923 break; 4740 break;
3924 4741
  4742 + //开关播放时间回传
  4743 + case JZ_INSCODE_5AFRAME_CURRENT_PLAY_TIME:
  4744 + RecvDeal_Current_Play_Time(Port,getbuf);
  4745 + return 0;
  4746 + break;
  4747 +
  4748 + //检查是否开启播放时间回传
  4749 + case JZ_INSCODE_5AFRAME_CHECKSTATUS_CURRENT_PLAYTIME:
  4750 + RecvDeal_CheckStatus_CurrentPlayTime(Port,getbuf);
  4751 + return 0;
  4752 + break;
3925 4753
3926 //音频列表获取 4754 //音频列表获取
3927 case JZ_INSCODE_5AFRAME_AUDIO_GETMUSICLIST: 4755 case JZ_INSCODE_5AFRAME_AUDIO_GETMUSICLIST:
@@ -3998,6 +4826,34 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi @@ -3998,6 +4826,34 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi
3998 4826
3999 4827
4000 4828
  4829 + //升级部分
  4830 +
  4831 + //准备升级
  4832 + case JZ_INSCODE_5AFRAME_UPGRADE_PERPARE:
  4833 + RecvDeal_Upgrade_Prepare(Port,getbuf);
  4834 + break;
  4835 +
  4836 + //升级校验码
  4837 + case JZ_INSCODE_5AFRAME_UPGRADE_SEND_CHECKCODE:
  4838 + RecvDeal_Upgrade_SendCheckCode(Port,getbuf);
  4839 + break;
  4840 +
  4841 + //数据传输开始
  4842 + case JZ_INSCODE_5AFRAME_UPGRADE_STRAT:
  4843 + RecvDeal_Upgrade_Start(Port,getbuf);
  4844 + break;
  4845 +
  4846 + //数据传输中
  4847 + case JZ_INSCODE_5AFRAME_UPGRADE_TRANS:
  4848 + RecvDeal_Upgrade_Trans(Port,getbuf);
  4849 + break;
  4850 +
  4851 + //数据传输结束
  4852 + case JZ_INSCODE_5AFRAME_UPGRADE_END:
  4853 + RecvDeal_Upgrade_End(Port,getbuf);
  4854 + break;
  4855 +
  4856 +
4001 /******************************************************************************************************************************* 4857 /*******************************************************************************************************************************
4002 * 4858 *
4003 * 5B类部分 4859 * 5B类部分
@@ -4293,9 +5149,6 @@ static T_JZsdkReturnCode HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(int Port, in @@ -4293,9 +5149,6 @@ static T_JZsdkReturnCode HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(int Port, in
4293 static T_JZsdkReturnCode HalRecv_tpye1_RecvDeal_UartTransmodeDecide() 5149 static T_JZsdkReturnCode HalRecv_tpye1_RecvDeal_UartTransmodeDecide()
4294 { 5150 {
4295 if ((HalRecvMode == JZ_DATA_TRANS_TYPE_REAL_TIME_MP2 ) //mp2实时语音传输模式 5151 if ((HalRecvMode == JZ_DATA_TRANS_TYPE_REAL_TIME_MP2 ) //mp2实时语音传输模式
4296 - || (HalRecvMode == JZ_DATA_TRANS_TYPE_AUDIO_FILE) //音频文件传输模式  
4297 - || (HalRecvMode == JZ_DATA_TRANS_TYPE_OPUS_FILE) //opus无限制传输模式  
4298 - || (HalRecvMode == JZ_DATA_TRANS_TYPE_REAL_TIME_OPUS) //opus实时语音无限制传输模式  
4299 || (HalRecvMode == JZ_DATA_TRANS_TYPE_TTS)) //TTS无限制传输模式) 5152 || (HalRecvMode == JZ_DATA_TRANS_TYPE_TTS)) //TTS无限制传输模式)
4300 { 5153 {
4301 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 5154 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
@@ -3,9 +3,8 @@ @@ -3,9 +3,8 @@
3 3
4 #include "JZsdk_uart/JZsdk_Uart_UartDeal.h" 4 #include "JZsdk_uart/JZsdk_Uart_UartDeal.h"
5 5
  6 +#include "Hal_Send/HalSend.h"
6 7
7 -#define SINGLE_THREAD_SEND 0  
8 -#define MULTI_THREAD_SEND 1  
9 8
10 /***************************** 9 /*****************************
11 * 10 *
@@ -33,11 +32,11 @@ T_JZsdkReturnCode HalSend_SendData(unsigned int Port, unsigned char *Data, unsig @@ -33,11 +32,11 @@ T_JZsdkReturnCode HalSend_SendData(unsigned int Port, unsigned char *Data, unsig
33 case UART_DEV_3: 32 case UART_DEV_3:
34 case UART_DEV_4: 33 case UART_DEV_4:
35 case UART_DEV_5: 34 case UART_DEV_5:
36 - if (SendType == SINGLE_THREAD_SEND) 35 + if (SendType == MULTI_THREAD_SEND)
37 { 36 {
38 JZsdk_Uart_UartSend(Port, Data, DataLen); 37 JZsdk_Uart_UartSend(Port, Data, DataLen);
39 } 38 }
40 - else if (SendType == MULTI_THREAD_SEND) 39 + else if (SendType == SINGLE_THREAD_SEND)
41 { 40 {
42 JZsdk_Uart_UartSend_NotTask(Port, Data, DataLen); 41 JZsdk_Uart_UartSend_NotTask(Port, Data, DataLen);
43 } 42 }
@@ -20,11 +20,13 @@ extern "C" { @@ -20,11 +20,13 @@ extern "C" {
20 20
21 /* Exported constants --------------------------------------------------------*/ 21 /* Exported constants --------------------------------------------------------*/
22 /* 常亮定义*/ 22 /* 常亮定义*/
23 - 23 +#define SINGLE_THREAD_SEND 0
  24 +#define MULTI_THREAD_SEND 1
24 25
25 /* Exported types ------------------------------------------------------------*/ 26 /* Exported types ------------------------------------------------------------*/
26 27
27 /* Exported functions --------------------------------------------------------*/ 28 /* Exported functions --------------------------------------------------------*/
  29 +
28 T_JZsdkReturnCode HalSend_SendData(unsigned int Port, unsigned char *Data, unsigned int DataLen, unsigned int SendType); 30 T_JZsdkReturnCode HalSend_SendData(unsigned int Port, unsigned char *Data, unsigned int DataLen, unsigned int SendType);
29 31
30 32
@@ -41,7 +41,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_Connect(int Uartport , int FrameSequenc @@ -41,7 +41,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_Connect(int Uartport , int FrameSequenc
41 sendbuf[6] = FrameSequence; //帧序列 41 sendbuf[6] = FrameSequence; //帧序列
42 42
43 //3、发送帧 43 //3、发送帧
44 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 44 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
45 45
46 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 46 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
47 } 47 }
@@ -62,7 +62,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_HeartBeatStatus(int Uartport , int Fram @@ -62,7 +62,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_HeartBeatStatus(int Uartport , int Fram
62 sendbuf[6] = FrameSequence; //帧序列 62 sendbuf[6] = FrameSequence; //帧序列
63 63
64 //3、发送帧 64 //3、发送帧
65 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 65 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
66 66
67 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 67 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
68 } 68 }
@@ -82,27 +82,27 @@ T_JZsdkReturnCode HalSend_type1Send_Set_PowerStatus(int Uartport, int FrameSeque @@ -82,27 +82,27 @@ T_JZsdkReturnCode HalSend_type1Send_Set_PowerStatus(int Uartport, int FrameSeque
82 sendbuf[6] = FrameSequence; //帧序列 82 sendbuf[6] = FrameSequence; //帧序列
83 83
84 //2、发送帧 84 //2、发送帧
85 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 85 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
86 86
87 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 87 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
88 } 88 }
89 89
90 -//请求心跳帧  
91 -T_JZsdkReturnCode HalSend_type1Send_Ask_HeartBeatStatus(int Uartport , int FrameSequence,int HeartBeatStatus) 90 +//发送心跳帧
  91 +T_JZsdkReturnCode HalSend_type1Send_HeartBeatStatus(int Uartport , int FrameSequence,int HeartBeatStatus)
92 { 92 {
93 - printf("发送请求心跳帧\n"); 93 + printf("发送心跳帧\n");
94 94
95 unsigned char sendbuf[256]; 95 unsigned char sendbuf[256];
96 int send_buf_len; 96 int send_buf_len;
97 97
98 //1、获取帧样板 98 //1、获取帧样板
99 - JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_HEARTBEAT, sendbuf, &send_buf_len); 99 + JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_HEARTBEAT, sendbuf, &send_buf_len);
100 100
101 sendbuf[9] = HeartBeatStatus; 101 sendbuf[9] = HeartBeatStatus;
102 sendbuf[6] = FrameSequence; //帧序列 102 sendbuf[6] = FrameSequence; //帧序列
103 103
104 //2、发送帧 104 //2、发送帧
105 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 105 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
106 106
107 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 107 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
108 } 108 }
@@ -121,7 +121,7 @@ T_JZsdkReturnCode HalSend_type1Send_Ask_TimeStamp(int Uartport , int FrameSequen @@ -121,7 +121,7 @@ T_JZsdkReturnCode HalSend_type1Send_Ask_TimeStamp(int Uartport , int FrameSequen
121 sendbuf[6] = FrameSequence; //帧序列 121 sendbuf[6] = FrameSequence; //帧序列
122 122
123 //2、发送帧 123 //2、发送帧
124 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 124 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
125 125
126 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 126 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
127 } 127 }
@@ -145,7 +145,7 @@ T_JZsdkReturnCode HalSend_type1Send_SendAllVersion(int Uartport, int FrameSequen @@ -145,7 +145,7 @@ T_JZsdkReturnCode HalSend_type1Send_SendAllVersion(int Uartport, int FrameSequen
145 sendbuf[13] = DebugVersion; 145 sendbuf[13] = DebugVersion;
146 146
147 //2、发送帧 147 //2、发送帧
148 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 148 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
149 149
150 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 150 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
151 } 151 }
@@ -172,7 +172,7 @@ T_JZsdkReturnCode HalSend_type1Send_SendAllSerialNumber(int Uartport, int FrameS @@ -172,7 +172,7 @@ T_JZsdkReturnCode HalSend_type1Send_SendAllSerialNumber(int Uartport, int FrameS
172 sendbuf[4] = (send_buf_len & 0xff); 172 sendbuf[4] = (send_buf_len & 0xff);
173 173
174 //2、发送帧 174 //2、发送帧
175 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 175 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
176 176
177 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 177 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
178 } 178 }
@@ -190,7 +190,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_Success(int Uartport ,int FrameSequenc @@ -190,7 +190,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_Success(int Uartport ,int FrameSequenc
190 sendbuf[6] = FrameSequence; //帧序列 190 sendbuf[6] = FrameSequence; //帧序列
191 191
192 //3、发送帧 192 //3、发送帧
193 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 193 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
194 194
195 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 195 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
196 } 196 }
@@ -208,7 +208,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_Failure(int Uartport ,int FrameSequenc @@ -208,7 +208,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_Failure(int Uartport ,int FrameSequenc
208 sendbuf[6] = FrameSequence; //帧序列 208 sendbuf[6] = FrameSequence; //帧序列
209 209
210 //3、发送帧 210 //3、发送帧
211 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 211 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
212 } 212 }
213 213
214 //发送校验失败帧 214 //发送校验失败帧
@@ -224,7 +224,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_CheckError(int Uartport ,int FrameSequ @@ -224,7 +224,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_CheckError(int Uartport ,int FrameSequ
224 sendbuf[6] = FrameSequence; //帧序列 224 sendbuf[6] = FrameSequence; //帧序列
225 225
226 //3、发送帧 226 //3、发送帧
227 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 227 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
228 } 228 }
229 229
230 //发送解码失败帧 230 //发送解码失败帧
@@ -240,7 +240,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_DecodeError(int Uartport ,int FrameSeq @@ -240,7 +240,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_DecodeError(int Uartport ,int FrameSeq
240 sendbuf[6] = FrameSequence; //帧序列 240 sendbuf[6] = FrameSequence; //帧序列
241 241
242 //3、发送帧 242 //3、发送帧
243 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 243 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
244 } 244 }
245 245
246 //发送当前从设备名 246 //发送当前从设备名
@@ -257,7 +257,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_SecondaryDeviceName(int Uartport , int @@ -257,7 +257,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_SecondaryDeviceName(int Uartport , int
257 sendbuf[10] = device_name; 257 sendbuf[10] = device_name;
258 258
259 //3、发送帧 259 //3、发送帧
260 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 260 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
261 } 261 }
262 262
263 263
@@ -274,7 +274,7 @@ T_JZsdkReturnCode HalSend_type1Send_QuerySecondaryDeviceName(int Uartport ,int F @@ -274,7 +274,7 @@ T_JZsdkReturnCode HalSend_type1Send_QuerySecondaryDeviceName(int Uartport ,int F
274 sendbuf[6] = FrameSequence; //帧序列 274 sendbuf[6] = FrameSequence; //帧序列
275 275
276 //3、发送帧 276 //3、发送帧
277 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 277 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
278 } 278 }
279 279
280 //发送当前设备序列号 280 //发送当前设备序列号
@@ -301,7 +301,7 @@ T_JZsdkReturnCode HalSend_type1Send_SerialNumber(int UartPort, int FrameSequence @@ -301,7 +301,7 @@ T_JZsdkReturnCode HalSend_type1Send_SerialNumber(int UartPort, int FrameSequence
301 sendbuf[4] = send_buf_len; 301 sendbuf[4] = send_buf_len;
302 302
303 //3、发送帧 303 //3、发送帧
304 - HalSend_SendData(UartPort ,sendbuf, send_buf_len, 1); 304 + HalSend_SendData(UartPort ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
305 } 305 }
306 306
307 /********* 307 /*********
@@ -326,7 +326,28 @@ T_JZsdkReturnCode HalSend_type1Send_DeviceMessage(int UartPort, int FrameSequenc @@ -326,7 +326,28 @@ T_JZsdkReturnCode HalSend_type1Send_DeviceMessage(int UartPort, int FrameSequenc
326 sendbuf[9+messageLen + 1] = 0x23; 326 sendbuf[9+messageLen + 1] = 0x23;
327 327
328 //3、发送帧 328 //3、发送帧
329 - HalSend_SendData(UartPort ,sendbuf, send_buf_len, 1); 329 + HalSend_SendData(UartPort ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
  330 +}
  331 +
  332 +/***********************************
  333 + *
  334 + * 发送预设任务状态
  335 + *
  336 + * ************************/
  337 +T_JZsdkReturnCode HalSend_type1Send_PresetTaskStatus(int UartPort, int FrameSequence, int staus)
  338 +{
  339 + unsigned char sendbuf[256];
  340 + memset(sendbuf,0,sizeof(sendbuf));
  341 + unsigned int send_buf_len = 0;
  342 +
  343 + //获取帧样板
  344 + JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_PRESET_TASK , sendbuf, &send_buf_len);
  345 +
  346 + sendbuf[6] = FrameSequence; //帧序列
  347 + sendbuf[9] = staus;
  348 +
  349 + //3、发送帧
  350 + HalSend_SendData(UartPort ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
330 } 351 }
331 352
332 353
@@ -457,7 +478,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_AudioList_Start(int Uartport, int Frame @@ -457,7 +478,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_AudioList_Start(int Uartport, int Frame
457 sendbuf[9] = music_sum; 478 sendbuf[9] = music_sum;
458 479
459 //发送帧 480 //发送帧
460 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 0); 481 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
461 482
462 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 483 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
463 } 484 }
@@ -476,7 +497,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_AudioList_Stop(int Uartport, int FrameS @@ -476,7 +497,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_AudioList_Stop(int Uartport, int FrameS
476 //写入数据 497 //写入数据
477 sendbuf[6] = FrameSequence; //帧序列 498 sendbuf[6] = FrameSequence; //帧序列
478 499
479 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 0); 500 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
480 } 501 }
481 502
482 //发送歌曲列表Ⅱ型 503 //发送歌曲列表Ⅱ型
@@ -514,7 +535,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_AudioList_2(int Uartport, int FrameSequ @@ -514,7 +535,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_AudioList_2(int Uartport, int FrameSequ
514 sendbuf[send_buf_len-1] = 0x23; 535 sendbuf[send_buf_len-1] = 0x23;
515 536
516 //3、发送帧 537 //3、发送帧
517 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 0); 538 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
518 539
519 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 540 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
520 } 541 }
@@ -542,7 +563,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_AudioDetailMessage(int Uartport, int Fr @@ -542,7 +563,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_AudioDetailMessage(int Uartport, int Fr
542 sendbuf[send_buf_len-1] = 0x23; 563 sendbuf[send_buf_len-1] = 0x23;
543 564
544 //3、发送帧 565 //3、发送帧
545 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 566 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
546 567
547 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 568 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
548 } 569 }
@@ -560,7 +581,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_PlayStatus_end(int Uartport) @@ -560,7 +581,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_PlayStatus_end(int Uartport)
560 //2、写入数据 581 //2、写入数据
561 582
562 //3、发送帧 583 //3、发送帧
563 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 584 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
564 } 585 }
565 586
566 //发送播放状态帧 587 //发送播放状态帧
@@ -593,7 +614,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_PlayStatus(int Uartport ,int num) @@ -593,7 +614,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_PlayStatus(int Uartport ,int num)
593 sendbuf[9] = (char)num; 614 sendbuf[9] = (char)num;
594 615
595 //3、发送帧 616 //3、发送帧
596 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 617 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
597 } 618 }
598 619
599 //回复当前播放的歌曲名字 620 //回复当前播放的歌曲名字
@@ -634,7 +655,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_Volume(int Uartport ,int num) @@ -634,7 +655,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_Volume(int Uartport ,int num)
634 sendbuf[9] = (char)num; 655 sendbuf[9] = (char)num;
635 656
636 //3、发送帧 657 //3、发送帧
637 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 658 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
638 659
639 } 660 }
640 661
@@ -657,7 +678,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_SoftVersion(int Uartport ,char majorVe @@ -657,7 +678,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_SoftVersion(int Uartport ,char majorVe
657 sendbuf[12] = debugVersion; 678 sendbuf[12] = debugVersion;
658 679
659 //3、发送帧 680 //3、发送帧
660 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 681 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
661 } 682 }
662 683
663 //发送循环状态 684 //发送循环状态
@@ -675,7 +696,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_LoopPlayStatus(int Uartport ,int statu @@ -675,7 +696,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_LoopPlayStatus(int Uartport ,int statu
675 sendbuf[9] = status; 696 sendbuf[9] = status;
676 697
677 //3、发送帧 698 //3、发送帧
678 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 699 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
679 700
680 } 701 }
681 702
@@ -694,13 +715,13 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_TTS_tone(int Uartport ,int tone) @@ -694,13 +715,13 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_TTS_tone(int Uartport ,int tone)
694 sendbuf[9] = tone; 715 sendbuf[9] = tone;
695 716
696 //3、发送帧 717 //3、发送帧
697 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 718 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
698 } 719 }
699 720
700 //发送语速 721 //发送语速
701 T_JZsdkReturnCode HalSend_type1Send_Reply_TTS_speed(int Uartport ,int speed) 722 T_JZsdkReturnCode HalSend_type1Send_Reply_TTS_speed(int Uartport ,int speed)
702 { 723 {
703 - printf("发送音色\n"); 724 + printf("发送语速\n");
704 725
705 unsigned char sendbuf[256]; 726 unsigned char sendbuf[256];
706 int send_buf_len; 727 int send_buf_len;
@@ -712,7 +733,44 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_TTS_speed(int Uartport ,int speed) @@ -712,7 +733,44 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_TTS_speed(int Uartport ,int speed)
712 sendbuf[9] = speed; 733 sendbuf[9] = speed;
713 734
714 //3、发送帧 735 //3、发送帧
715 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 736 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
  737 +}
  738 +
  739 +//发送当前播放时间状态
  740 +T_JZsdkReturnCode HalSend_type1Send_Reply_CurrentPlayTimeStatus(int Uartport ,int mode)
  741 +{
  742 + printf("发送当前播放时间状态帧\n");
  743 +
  744 + unsigned char sendbuf[256];
  745 + int send_buf_len;
  746 +
  747 + //1、获取帧样板
  748 + JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_CHECKSTATUS_CURRENT_PLAYTIME, sendbuf, &send_buf_len);
  749 +
  750 + //2、写入数据
  751 + sendbuf[9] = mode;
  752 +
  753 + //3、发送帧
  754 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
  755 +}
  756 +
  757 +//发送当前播放时间
  758 +T_JZsdkReturnCode HalSend_type1Send_Reply_CurrentPlayTime(int Uartport ,int time)
  759 +{
  760 + printf("发送当前播放时间\n");
  761 +
  762 + unsigned char sendbuf[256];
  763 + int send_buf_len;
  764 +
  765 + //1、获取帧样板
  766 + JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_CURRENT_PLAY_TIME, sendbuf, &send_buf_len);
  767 +
  768 + //2、写入数据
  769 + sendbuf[9] = time >> 8;
  770 + sendbuf[10] = time & 0xff;
  771 +
  772 + //3、发送帧
  773 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
716 } 774 }
717 775
718 /************* 776 /*************
@@ -734,7 +792,87 @@ T_JZsdkReturnCode HalSend_type1Send_OpusDecodeStatus(int Uartport,int value) @@ -734,7 +792,87 @@ T_JZsdkReturnCode HalSend_type1Send_OpusDecodeStatus(int Uartport,int value)
734 sendbuf[9] = value; 792 sendbuf[9] = value;
735 793
736 //3、发送帧 794 //3、发送帧
737 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 795 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
  796 +}
  797 +
  798 +
  799 +//发送opus列表开始帧
  800 +T_JZsdkReturnCode HalSend_type1Send_Send_OpusList_Start(int Uartport, int FrameSequence, int music_sum)
  801 +{
  802 + printf("发送opus开始列表帧\n");
  803 +
  804 + unsigned char sendbuf[128];
  805 + int send_buf_len;
  806 +
  807 + //获取帧样板
  808 + memset(sendbuf,0,sizeof(sendbuf));
  809 + JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_OPUSLIST_START , sendbuf, &send_buf_len);
  810 + //写入数据
  811 + sendbuf[6] = FrameSequence; //帧序列
  812 + sendbuf[9] = music_sum;
  813 +
  814 + //发送帧
  815 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
  816 +
  817 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  818 +}
  819 +
  820 +
  821 +//发送opus列表
  822 +T_JZsdkReturnCode HalSend_type1Send_Send_OpusList_Trans(int Uartport, int FrameSequence, unsigned char *name, unsigned int namelen, unsigned int Filesize, unsigned int Time)
  823 +{
  824 + printf("发送opus列表 %s %d %d %d\n",name, namelen, Filesize, Time);
  825 + unsigned char sendbuf[400];
  826 + int send_buf_len;
  827 +
  828 + //1、获取帧样板
  829 + JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_OPUSLIST_TRANS , sendbuf, &send_buf_len);
  830 +
  831 + //写入文件名
  832 + sendbuf[9] = namelen;
  833 + memcpy(&sendbuf[10], name, namelen);
  834 +
  835 + //文件大小
  836 + sendbuf[10+namelen] = (Filesize >> 24) & 0xFF;
  837 + sendbuf[10+namelen+1] = (Filesize >> 16) & 0xFF;
  838 + sendbuf[10+namelen+2] = (Filesize >> 8) & 0xFF;
  839 + sendbuf[10+namelen+3] = Filesize & 0xFF;
  840 +
  841 + //播放时间
  842 + sendbuf[10+namelen+4] = (Time >> 8) & 0xFF;
  843 + sendbuf[10+namelen+5] = Time & 0xFF;
  844 +
  845 + //2、写入数据
  846 + send_buf_len = 9 + 1 + namelen + 4 + 2 + 2;
  847 +
  848 + sendbuf[3] = (unsigned char)( (send_buf_len >> 8) & 0xFF); //帧长度
  849 + sendbuf[4] = (unsigned char)(send_buf_len & 0xFF); //帧长度
  850 + sendbuf[6] = FrameSequence; //帧序列
  851 +
  852 + sendbuf[send_buf_len-2] = 0x00;
  853 + sendbuf[send_buf_len-1] = 0x23;
  854 +
  855 + //3、发送帧
  856 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
  857 +
  858 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  859 +}
  860 +
  861 +//发送opus列表结束帧
  862 +T_JZsdkReturnCode HalSend_type1Send_Send_OpusList_Stop(int Uartport, int FrameSequence)
  863 +{
  864 + printf("发送opus结束列表帧\n");
  865 +
  866 + unsigned char sendbuf[128];
  867 + int send_buf_len;
  868 +
  869 + //获取帧样板
  870 + memset(sendbuf,0,sizeof(sendbuf));
  871 + JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_OPUSLIST_END , sendbuf, &send_buf_len);
  872 + //写入数据
  873 + sendbuf[6] = FrameSequence; //帧序列
  874 +
  875 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
738 } 876 }
739 877
740 /**************************************************************************************************************************************************** 878 /****************************************************************************************************************************************************
@@ -766,7 +904,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalPitchAngle(int Uartport ,int ang @@ -766,7 +904,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalPitchAngle(int Uartport ,int ang
766 sendbuf[11] = (char)(angle & 255); 904 sendbuf[11] = (char)(angle & 255);
767 905
768 //3、发送帧 906 //3、发送帧
769 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 907 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
770 } 908 }
771 909
772 //设置当前云台角度 910 //设置当前云台角度
@@ -794,7 +932,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_GimbalPitchAngle(int Uartport ,int angle @@ -794,7 +932,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_GimbalPitchAngle(int Uartport ,int angle
794 sendbuf[11] = (angle & 0xff); 932 sendbuf[11] = (angle & 0xff);
795 933
796 //3、发送帧 934 //3、发送帧
797 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 935 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
798 } 936 }
799 937
800 //查询云台角度 938 //查询云台角度
@@ -811,7 +949,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalAngle(int Uartport ,int Fr @@ -811,7 +949,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalAngle(int Uartport ,int Fr
811 sendbuf[6] = FrameSequence; 949 sendbuf[6] = FrameSequence;
812 950
813 //3、发送帧 951 //3、发送帧
814 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 952 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
815 } 953 }
816 954
817 //微调云台pitch 955 //微调云台pitch
@@ -839,7 +977,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_GimbalFineTuningPitch(int Uartport, int @@ -839,7 +977,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_GimbalFineTuningPitch(int Uartport, int
839 sendbuf[11] = (PitchFineTuning & 0xff); 977 sendbuf[11] = (PitchFineTuning & 0xff);
840 978
841 //3、发送帧 979 //3、发送帧
842 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 980 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
843 } 981 }
844 982
845 //查询云台角度微调值 983 //查询云台角度微调值
@@ -856,7 +994,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalFineTuningPitch(int Uartpo @@ -856,7 +994,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalFineTuningPitch(int Uartpo
856 sendbuf[6] = FrameSequence; //帧序列 994 sendbuf[6] = FrameSequence; //帧序列
857 995
858 //3、发送帧 996 //3、发送帧
859 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 997 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
860 } 998 }
861 999
862 //回复云台pitch微调值 1000 //回复云台pitch微调值
@@ -884,7 +1022,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalFineTuningPitch(int Uartport, in @@ -884,7 +1022,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalFineTuningPitch(int Uartport, in
884 sendbuf[11] = (FineTunigPitch & 0xff); 1022 sendbuf[11] = (FineTunigPitch & 0xff);
885 1023
886 //3、发送帧 1024 //3、发送帧
887 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1025 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
888 } 1026 }
889 1027
890 //设置云台联动 1028 //设置云台联动
@@ -902,7 +1040,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_GimbalLinkageControl(int Uartport,int Fr @@ -902,7 +1040,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_GimbalLinkageControl(int Uartport,int Fr
902 sendbuf[10] = value; 1040 sendbuf[10] = value;
903 1041
904 //3、发送帧 1042 //3、发送帧
905 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1043 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
906 } 1044 }
907 1045
908 //查询云台联动值 1046 //查询云台联动值
@@ -919,7 +1057,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalLinkage(int Uartport,int F @@ -919,7 +1057,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalLinkage(int Uartport,int F
919 sendbuf[6] = FrameSequence; //帧序列 1057 sendbuf[6] = FrameSequence; //帧序列
920 1058
921 //3、发送帧 1059 //3、发送帧
922 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1060 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
923 } 1061 }
924 1062
925 //发送云台联动值 1063 //发送云台联动值
@@ -937,7 +1075,7 @@ T_JZsdkReturnCode HalSend_type1Send_GimbalLinkageControl(int Uartport,int FrameS @@ -937,7 +1075,7 @@ T_JZsdkReturnCode HalSend_type1Send_GimbalLinkageControl(int Uartport,int FrameS
937 sendbuf[10] = value; 1075 sendbuf[10] = value;
938 1076
939 //3、发送帧 1077 //3、发送帧
940 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1078 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
941 } 1079 }
942 1080
943 //发送云台最大最小值帧 1081 //发送云台最大最小值帧
@@ -955,7 +1093,7 @@ T_JZsdkReturnCode HalSend_type1Send_SetGimbalRange(int Uartport,int FrameSequenc @@ -955,7 +1093,7 @@ T_JZsdkReturnCode HalSend_type1Send_SetGimbalRange(int Uartport,int FrameSequenc
955 sendbuf[10] = value; 1093 sendbuf[10] = value;
956 1094
957 //3、发送帧 1095 //3、发送帧
958 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1096 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
959 } 1097 }
960 1098
961 /**************************************************************************************************************************************************** 1099 /****************************************************************************************************************************************************
@@ -979,7 +1117,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_SearchLightFrequency(int Uartport ,int F @@ -979,7 +1117,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_SearchLightFrequency(int Uartport ,int F
979 sendbuf[10] = Frequency; 1117 sendbuf[10] = Frequency;
980 1118
981 //3、发送帧 1119 //3、发送帧
982 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1120 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
983 } 1121 }
984 1122
985 //设置探照灯控制 1123 //设置探照灯控制
@@ -997,7 +1135,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Control(int Uartport,int mode) @@ -997,7 +1135,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Control(int Uartport,int mode)
997 sendbuf[10] = mode; 1135 sendbuf[10] = mode;
998 1136
999 //3、发送帧 1137 //3、发送帧
1000 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1138 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1001 } 1139 }
1002 1140
1003 //设置探照灯亮度 1141 //设置探照灯亮度
@@ -1016,7 +1154,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetLumen(int Uartport, int Left @@ -1016,7 +1154,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetLumen(int Uartport, int Left
1016 sendbuf[10] = RightLumen; 1154 sendbuf[10] = RightLumen;
1017 1155
1018 //3、发送帧 1156 //3、发送帧
1019 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1157 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1020 } 1158 }
1021 1159
1022 //发送 1160 //发送
@@ -1033,7 +1171,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Frequency(int Uartpo @@ -1033,7 +1171,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Frequency(int Uartpo
1033 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_FREQUENCY, sendbuf, &send_buf_len); 1171 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_FREQUENCY, sendbuf, &send_buf_len);
1034 1172
1035 //2、发送帧 1173 //2、发送帧
1036 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1174 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1037 } 1175 }
1038 1176
1039 //查询探照灯亮度 1177 //查询探照灯亮度
@@ -1048,7 +1186,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Lumen(int Uartport) @@ -1048,7 +1186,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Lumen(int Uartport)
1048 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LUMEN, sendbuf, &send_buf_len); 1186 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LUMEN, sendbuf, &send_buf_len);
1049 1187
1050 //2、发送帧 1188 //2、发送帧
1051 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1189 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1052 } 1190 }
1053 1191
1054 //查询探照灯模式 1192 //查询探照灯模式
@@ -1063,7 +1201,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Mode(int Uartport) @@ -1063,7 +1201,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Mode(int Uartport)
1063 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_MODE, sendbuf, &send_buf_len); 1201 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_MODE, sendbuf, &send_buf_len);
1064 1202
1065 //2、发送帧 1203 //2、发送帧
1066 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1204 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1067 } 1205 }
1068 1206
1069 //查询探照灯属性 1207 //查询探照灯属性
@@ -1078,7 +1216,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Attribute(int Uartpo @@ -1078,7 +1216,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Attribute(int Uartpo
1078 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LIGHTATTRIBUTE, sendbuf, &send_buf_len); 1216 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LIGHTATTRIBUTE, sendbuf, &send_buf_len);
1079 1217
1080 //2、发送帧 1218 //2、发送帧
1081 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1219 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1082 } 1220 }
1083 1221
1084 //查询探照灯温度 1222 //查询探照灯温度
@@ -1093,7 +1231,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Temperture(int Uartp @@ -1093,7 +1231,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Temperture(int Uartp
1093 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE, sendbuf, &send_buf_len); 1231 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE, sendbuf, &send_buf_len);
1094 1232
1095 //2、发送帧 1233 //2、发送帧
1096 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1234 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1097 } 1235 }
1098 1236
1099 //开启消息订阅 1237 //开启消息订阅
@@ -1111,7 +1249,114 @@ T_JZsdkReturnCode HalSend_type1Send_MessageSubcription_Control(int Uartport, int @@ -1111,7 +1249,114 @@ T_JZsdkReturnCode HalSend_type1Send_MessageSubcription_Control(int Uartport, int
1111 sendbuf[10] = value; 1249 sendbuf[10] = value;
1112 1250
1113 //3、发送帧 1251 //3、发送帧
1114 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1252 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
  1253 +}
  1254 +
  1255 +/************************************************************************************************************************************************************
  1256 + *
  1257 + * 升级部分
  1258 + *
  1259 + *
  1260 +*******************************************************************************************************************/
  1261 +/*************
  1262 + *
  1263 + * 回复准备升级
  1264 + *
  1265 + * **************/
  1266 +T_JZsdkReturnCode HalSend_type1Send_Reply_ReadyForUpdate(int Uartport, int Mode)
  1267 +{
  1268 + printf("发送回复准备升级\n");
  1269 +
  1270 + unsigned char sendbuf[256];
  1271 + int send_buf_len;
  1272 +
  1273 + //1、获取帧样板
  1274 + JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_UPGRADE_PERPARE, sendbuf, &send_buf_len);
  1275 +
  1276 + sendbuf[9] = Mode;
  1277 +
  1278 + //2、发送帧
  1279 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
  1280 +}
  1281 +
  1282 +/*************
  1283 + *
  1284 + * 回复校验激活码已收到
  1285 + *
  1286 + * **************/
  1287 +T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeHaveRecvCheckCode(int Uartport, int Mode)
  1288 +{
  1289 + printf("回复校验激活码已收到\n");
  1290 +
  1291 + unsigned char sendbuf[256];
  1292 + int send_buf_len;
  1293 +
  1294 + //1、获取帧样板
  1295 + JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_UPGRADE_SEND_CHECKCODE, sendbuf, &send_buf_len);
  1296 +
  1297 + sendbuf[9] = Mode;
  1298 +
  1299 + //2、发送帧
  1300 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
  1301 +}
  1302 +
  1303 +/*************
  1304 + *
  1305 + * 回复升级传输已开启
  1306 + *
  1307 + * **************/
  1308 +T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeStart(int Uartport)
  1309 +{
  1310 + printf("回复升级传输已开启\n");
  1311 +
  1312 + unsigned char sendbuf[256];
  1313 + int send_buf_len;
  1314 +
  1315 + //1、获取帧样板
  1316 + JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_UPGRADE_STRAT, sendbuf, &send_buf_len);
  1317 +
  1318 + //2、发送帧
  1319 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
  1320 +}
  1321 +
  1322 +/*************
  1323 + *
  1324 + * 回复升级传输已结束
  1325 + *
  1326 + * **************/
  1327 +T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeEnd(int Uartport)
  1328 +{
  1329 + printf("回复升级传输已结束\n");
  1330 +
  1331 + unsigned char sendbuf[256];
  1332 + int send_buf_len;
  1333 +
  1334 + //1、获取帧样板
  1335 + JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_UPGRADE_END, sendbuf, &send_buf_len);
  1336 +
  1337 + //2、发送帧
  1338 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
  1339 +}
  1340 +
  1341 +/*************
  1342 + *
  1343 + * 回复升级校验结果
  1344 + *
  1345 + * **************/
  1346 +T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeCheckResult(int Uartport, int status)
  1347 +{
  1348 + printf("回复升级校验结果\n");
  1349 +
  1350 + unsigned char sendbuf[256];
  1351 + int send_buf_len;
  1352 +
  1353 + //1、获取帧样板
  1354 + JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_UPGRADE_CHECKRESULT, sendbuf, &send_buf_len);
  1355 +
  1356 + sendbuf[9] = status;
  1357 +
  1358 + //2、发送帧
  1359 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
1115 } 1360 }
1116 1361
1117 /**************************************************************************************************************************************************** 1362 /****************************************************************************************************************************************************
@@ -1139,7 +1384,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Status(int Uartport,int sta @@ -1139,7 +1384,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Status(int Uartport,int sta
1139 sendbuf[10] = mode; 1384 sendbuf[10] = mode;
1140 1385
1141 //3、发送帧 1386 //3、发送帧
1142 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1387 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1143 } 1388 }
1144 1389
1145 /************* 1390 /*************
@@ -1162,7 +1407,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Color(int Uartport,int colo @@ -1162,7 +1407,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Color(int Uartport,int colo
1162 sendbuf[10] = color2; 1407 sendbuf[10] = color2;
1163 1408
1164 //3、发送帧 1409 //3、发送帧
1165 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1410 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1166 } 1411 }
1167 1412
1168 //查询警灯状态 1413 //查询警灯状态
@@ -1177,7 +1422,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_WarningLightStatus(int Uartport) @@ -1177,7 +1422,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_WarningLightStatus(int Uartport)
1177 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS, sendbuf, &send_buf_len); 1422 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS, sendbuf, &send_buf_len);
1178 1423
1179 //2、发送帧 1424 //2、发送帧
1180 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1425 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1181 } 1426 }
1182 1427
1183 //查询警灯颜色 1428 //查询警灯颜色
@@ -1192,7 +1437,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_WarningLightColor(int Uartport) @@ -1192,7 +1437,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_WarningLightColor(int Uartport)
1192 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR, sendbuf, &send_buf_len); 1437 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR, sendbuf, &send_buf_len);
1193 1438
1194 //2、发送帧 1439 //2、发送帧
1195 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1440 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1196 } 1441 }
1197 1442
1198 /**************************************************************************************************************************************************** 1443 /****************************************************************************************************************************************************
@@ -1220,7 +1465,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Frequency(int Uartport, int Freq @@ -1220,7 +1465,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Frequency(int Uartport, int Freq
1220 sendbuf[10] = Frequency; 1465 sendbuf[10] = Frequency;
1221 1466
1222 //3、发送帧 1467 //3、发送帧
1223 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1468 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1224 } 1469 }
1225 1470
1226 /************* 1471 /*************
@@ -1242,7 +1487,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Mode(int Uartport, int mode) @@ -1242,7 +1487,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Mode(int Uartport, int mode)
1242 sendbuf[10] = mode; 1487 sendbuf[10] = mode;
1243 1488
1244 //3、发送帧 1489 //3、发送帧
1245 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1490 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1246 } 1491 }
1247 1492
1248 /************* 1493 /*************
@@ -1265,7 +1510,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Lumen(int Uartport,int LeftLumen @@ -1265,7 +1510,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Lumen(int Uartport,int LeftLumen
1265 sendbuf[10] = RightLumen; 1510 sendbuf[10] = RightLumen;
1266 1511
1267 //3、发送帧 1512 //3、发送帧
1268 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1513 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1269 } 1514 }
1270 1515
1271 /************* 1516 /*************
@@ -1288,7 +1533,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Temperature(int Uartport, int Le @@ -1288,7 +1533,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Temperature(int Uartport, int Le
1288 sendbuf[10] = RightTemperature; 1533 sendbuf[10] = RightTemperature;
1289 1534
1290 //3、发送帧 1535 //3、发送帧
1291 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1536 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1292 } 1537 }
1293 1538
1294 1539
@@ -1312,7 +1557,7 @@ T_JZsdkReturnCode HalSend_type1Send_WarningLight_Status(int Uartport, int status @@ -1312,7 +1557,7 @@ T_JZsdkReturnCode HalSend_type1Send_WarningLight_Status(int Uartport, int status
1312 sendbuf[10] = mode; 1557 sendbuf[10] = mode;
1313 1558
1314 //3、发送帧 1559 //3、发送帧
1315 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);} 1560 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);}
1316 1561
1317 /************* 1562 /*************
1318 * 1563 *
@@ -1334,7 +1579,7 @@ T_JZsdkReturnCode HalSend_type1Send_WarningLight_Color(int Uartport, int color1, @@ -1334,7 +1579,7 @@ T_JZsdkReturnCode HalSend_type1Send_WarningLight_Color(int Uartport, int color1,
1334 sendbuf[10] = color2; 1579 sendbuf[10] = color2;
1335 1580
1336 //3、发送帧 1581 //3、发送帧
1337 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1582 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1338 } 1583 }
1339 1584
1340 /************* 1585 /*************
@@ -1356,7 +1601,7 @@ T_JZsdkReturnCode HalSend_type1Send_OutputPowerStatus(int Uartport, int FrameSeq @@ -1356,7 +1601,7 @@ T_JZsdkReturnCode HalSend_type1Send_OutputPowerStatus(int Uartport, int FrameSeq
1356 sendbuf[9] = status; 1601 sendbuf[9] = status;
1357 1602
1358 //3、发送帧 1603 //3、发送帧
1359 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1604 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1360 } 1605 }
1361 1606
1362 /**************************************************************************************************************************************************** 1607 /****************************************************************************************************************************************************
@@ -1380,5 +1625,5 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_CheckSpecialParameters(int Uartport,in @@ -1380,5 +1625,5 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_CheckSpecialParameters(int Uartport,in
1380 sendbuf[10] = value; 1625 sendbuf[10] = value;
1381 1626
1382 //3、发送帧 1627 //3、发送帧
1383 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1628 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1384 } 1629 }