作者 ookk303

uart底层优化,opus优化,心跳帧优化,升级模块增加

osal层增加,hal层增加,日志层修改逻辑
正在显示 61 个修改的文件 包含 3113 行增加1291 行删除
@@ -106,7 +106,10 @@ @@ -106,7 +106,10 @@
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"
110 }, 113 },
111 "Codegeex.GenerationPreference": "automatic", 114 "Codegeex.GenerationPreference": "automatic",
112 "C_Cpp.dimInactiveRegions": false 115 "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")
@@ -21,7 +21,7 @@ extern "C" { @@ -21,7 +21,7 @@ extern "C" {
21 21
22 #include "./JZsdk_typedef/JZsdk_typedef.h" 22 #include "./JZsdk_typedef/JZsdk_typedef.h"
23 #include "./JZsdk_ReturnCode/JZsdk_ReturnCode.h" 23 #include "./JZsdk_ReturnCode/JZsdk_ReturnCode.h"
24 - 24 +#include "./JZsdk_Platform/JZsdk_Platform.h"
25 25
26 #include "./JZsdk_InsCode.h" 26 #include "./JZsdk_InsCode.h"
27 #include "./JZsdk_FLagCode.h" 27 #include "./JZsdk_FLagCode.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, // 无制定设备
@@ -72,6 +72,8 @@ typedef enum { @@ -72,6 +72,8 @@ typedef enum {
72 JZ_INSCODE_5AFRAME_CHECKSTATUS_SOFTWAREVERSION = 0x10000625, //查询软件版本号 72 JZ_INSCODE_5AFRAME_CHECKSTATUS_SOFTWAREVERSION = 0x10000625, //查询软件版本号
73 JZ_INSCODE_5AFRAME_CHECKSTATUS_LOOPPLAY = 0x10000626, //查询是否打开循环 73 JZ_INSCODE_5AFRAME_CHECKSTATUS_LOOPPLAY = 0x10000626, //查询是否打开循环
74 JZ_INSCODE_5AFRAME_CHECKSTATUS_ADUIO_LOOP_INTERVAL = 0x10000639, //查询音频循环间隔 74 JZ_INSCODE_5AFRAME_CHECKSTATUS_ADUIO_LOOP_INTERVAL = 0x10000639, //查询音频循环间隔
  75 + JZ_INSCODE_5AFRAME_CHECKSTATUS_CURRENT_PLAYTIME = 0x10000640, //查询当前播放时间回调是否打开
  76 +
75 77
76 JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSTONE = 0x10000627, //查询音色 78 JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSTONE = 0x10000627, //查询音色
77 JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSSPEED = 0x10000628, //查询语速 79 JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSSPEED = 0x10000628, //查询语速
@@ -94,6 +96,9 @@ typedef enum { @@ -94,6 +96,9 @@ typedef enum {
94 JZ_INSCODE_5AFRAME_DELETE_AUDIO = 0x10000700, //删除音频 96 JZ_INSCODE_5AFRAME_DELETE_AUDIO = 0x10000700, //删除音频
95 JZ_INSCODE_5AFRAME_DELETE_VOICE_RECORD = 0x10000710, //删除录音 97 JZ_INSCODE_5AFRAME_DELETE_VOICE_RECORD = 0x10000710, //删除录音
96 JZ_INSCODE_5AFRAME_DELETE_VIDEO_RECORD = 0x10000720, //删除视频 98 JZ_INSCODE_5AFRAME_DELETE_VIDEO_RECORD = 0x10000720, //删除视频
  99 + JZ_INSCODE_5AFRAME_RENAME_AUDIO = 0x10000730, //重命名音频
  100 + JZ_INSCODE_5AFRAME_RENAME_VOICE_RECORD = 0x10000740, //重命名录音
  101 + JZ_INSCODE_5AFRAME_RENAME_VIDEO_RECORD = 0x10000750, //重命名视频
97 102
98 103
99 JZ_INSCODE_5AFRAME_TTS_SET_TONE = 0x10000801, //TTS设置音色 104 JZ_INSCODE_5AFRAME_TTS_SET_TONE = 0x10000801, //TTS设置音色
@@ -103,15 +108,22 @@ typedef enum { @@ -103,15 +108,22 @@ typedef enum {
103 JZ_INSCODE_5AFRAME_TTS_TRANS_STOP = 0x10000805, //TTS发送完毕 108 JZ_INSCODE_5AFRAME_TTS_TRANS_STOP = 0x10000805, //TTS发送完毕
104 JZ_INSCODE_5AFRAME_TTS_TRANS_LIMIT_TRANSMISSION = 0x10000806, //TTS正在定长接收 109 JZ_INSCODE_5AFRAME_TTS_TRANS_LIMIT_TRANSMISSION = 0x10000806, //TTS正在定长接收
105 110
106 - JZ_INSCODE_5AFRAME_OPUS_TRANS_START = 0x10000900, //opus传输开始  
107 - JZ_INSCODE_5AFRAME_OPUS_TRAN_UNLIMIT_TRANSMISSION = 0x10000901, //opus 无限制传输中 111 + JZ_INSCODE_5AFRAME_CURRENT_PLAY_TIME = 0x10004406, //设置播放回传
  112 +
  113 +
  114 + JZ_INSCODE_5AFRAME_OPUS_TRANS_START_1 = 0x10000900, //opus传输开始1型
  115 + JZ_INSCODE_5AFRAME_OPUS_TRANS_START_2 = 0x10000901, //opus传输开始2型
  116 + //JZ_INSCODE_5AFRAME_OPUS_TRAN_UNLIMIT_TRANSMISSION = 0x10000901, //opus 无限制传输中
108 JZ_INSCODE_5AFRAME_OPUS_TRANS_LIMIT_TRANSMISSION = 0x10000903, //opus传输中 117 JZ_INSCODE_5AFRAME_OPUS_TRANS_LIMIT_TRANSMISSION = 0x10000903, //opus传输中
109 118
110 JZ_INSCODE_5AFRAME_OPUS_TRANS_STOP = 0x10000902, //opus传输结束 119 JZ_INSCODE_5AFRAME_OPUS_TRANS_STOP = 0x10000902, //opus传输结束
111 JZ_INSCODE_5AFRAME_OPUS_TRANS_STOP_AND_CHECK = 0x10000904, //opus传输结束并校验 120 JZ_INSCODE_5AFRAME_OPUS_TRANS_STOP_AND_CHECK = 0x10000904, //opus传输结束并校验
112 121
  122 +
113 JZ_INSCODE_5AFRAME_OPUS_PLAY = 0x10000910, //opus播放 123 JZ_INSCODE_5AFRAME_OPUS_PLAY = 0x10000910, //opus播放
114 124
  125 + JZ_INSCODE_5AFRAME_OPUS_GETOPUSLIST = 0x10000911, //获取opus列表
  126 +
115 JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_START = 0x10000A00, //开启opus实时语音 127 JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_START = 0x10000A00, //开启opus实时语音
116 JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_UNLIMIT_TRANSMISSION = 0x10000A01, //无限制传输opus实时语音 128 JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_UNLIMIT_TRANSMISSION = 0x10000A01, //无限制传输opus实时语音
117 JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_STOP = 0x10000A02, //结束opus实时语音 129 JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_STOP = 0x10000A02, //结束opus实时语音
@@ -138,6 +150,12 @@ typedef enum { @@ -138,6 +150,12 @@ typedef enum {
138 JZ_INSCODE_5AFRAME_OUTPUTPOWER_CONTROL = 0x10001000, //对外供电开关 150 JZ_INSCODE_5AFRAME_OUTPUTPOWER_CONTROL = 0x10001000, //对外供电开关
139 JZ_INSCODE_5AFRAME_CHECKSTATUS_OUTPUTPOWER = 0x10001001, //对外供电查询 151 JZ_INSCODE_5AFRAME_CHECKSTATUS_OUTPUTPOWER = 0x10001001, //对外供电查询
140 152
  153 + JZ_INSCODE_5AFRAME_UPGRADE_PERPARE = 0x10001100, //升级准备
  154 + JZ_INSCODE_5AFRAME_UPGRADE_SEND_CHECKCODE = 0x10001101, //升级发送校验码
  155 + JZ_INSCODE_5AFRAME_UPGRADE_STRAT = 0x10001102, //升级传输开始
  156 + JZ_INSCODE_5AFRAME_UPGRADE_TRANS = 0x10001103, //升级传输数据
  157 + JZ_INSCODE_5AFRAME_UPGRADE_END = 0x10001104, //升级传输结束
  158 +
141 //5B类帧 159 //5B类帧
142 JZ_INSCODE_5BFRAME_FRAME = 0x10004000, //发送帧 160 JZ_INSCODE_5BFRAME_FRAME = 0x10004000, //发送帧
143 161
@@ -168,7 +186,8 @@ typedef enum { @@ -168,7 +186,8 @@ typedef enum {
168 JZ_INSCODE_5BFRAME_TTS_SPEED = 0x10004403, //发送tts语速 186 JZ_INSCODE_5BFRAME_TTS_SPEED = 0x10004403, //发送tts语速
169 JZ_INSCODE_5BFRAME_AUDIO_PLAYFILENAME = 0x10004404, //当前播放的音频名字 187 JZ_INSCODE_5BFRAME_AUDIO_PLAYFILENAME = 0x10004404, //当前播放的音频名字
170 JZ_INSCODE_5BFRAME_CHECKSTATUS_AUDIO_DETAIL_MESSAGE = 0x10004405, //查询音频详细信息 188 JZ_INSCODE_5BFRAME_CHECKSTATUS_AUDIO_DETAIL_MESSAGE = 0x10004405, //查询音频详细信息
171 - 189 + JZ_INSCODE_5BFRAME_CURRENT_PLAY_TIME = 0x10004406, //当前播放时间
  190 + JZ_INSCODE_5BFRAME_CHECKSTATUS_CURRENT_PLAYTIME = 0x10004407, //查询当前播放时间回调是否打开
172 191
173 192
174 JZ_INSCODE_5BFRAME_GIMBAL_PITCH = 0x10004500, //云台俯仰角度 193 JZ_INSCODE_5BFRAME_GIMBAL_PITCH = 0x10004500, //云台俯仰角度
@@ -195,8 +214,18 @@ typedef enum { @@ -195,8 +214,18 @@ typedef enum {
195 JZ_INSCODE_5BFRAME_CHECKSTATUS_OUTPUTPOWER = 0x10004900, //对外供电查询 214 JZ_INSCODE_5BFRAME_CHECKSTATUS_OUTPUTPOWER = 0x10004900, //对外供电查询
196 215
197 JZ_INSCODE_5BFRAME_OPUS_DECODE_STATUS = 0x10005000, //opus解码状态 216 JZ_INSCODE_5BFRAME_OPUS_DECODE_STATUS = 0x10005000, //opus解码状态
198 - JZ_INSCODE_5BFRAME_OPUS_TRANS_STOP_AND_CHECK = 0x10000904, //opus传输结束并校验  
199 - 217 + JZ_INSCODE_5BFRAME_OPUS_TRANS_STOP_AND_CHECK = 0x10005904, //opus传输结束并校验
  218 +
  219 + JZ_INSCODE_5BFRAME_OPUSLIST_START = 0x10005910, //开启发送opus列表帧
  220 + JZ_INSCODE_5BFRAME_OPUSLIST_TRANS = 0x10005911, //传输opus列表帧
  221 + JZ_INSCODE_5BFRAME_OPUSLIST_END = 0x10005912, //传输opus列表帧
  222 +
  223 + JZ_INSCODE_5BFRAME_UPGRADE_PERPARE = 0x10001100, //升级准备
  224 + JZ_INSCODE_5BFRAME_UPGRADE_SEND_CHECKCODE = 0x10001101, //升级发送校验码
  225 + JZ_INSCODE_5BFRAME_UPGRADE_STRAT = 0x10001102, //升级传输开始
  226 + JZ_INSCODE_5BFRAME_UPGRADE_TRANS = 0x10001103, //升级传输数据
  227 + JZ_INSCODE_5BFRAME_UPGRADE_END = 0x10001104, //升级传输结束
  228 + JZ_INSCODE_5BFRAME_UPGRADE_CHECKRESULT = 0x10001105, //升级校验结果
200 229
201 //6A类 230 //6A类
202 JZ_INSCODE_6AFRAME_FRAME = 0x10008000, //发送帧 231 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
@@ -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,9 @@ typedef void *T_JZTaskHandle; @@ -54,6 +54,9 @@ 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 +
57 60
58 /* Exported types ------------------------------------------------------------*/ 61 /* Exported types ------------------------------------------------------------*/
59 62
@@ -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
@@ -205,6 +205,11 @@ static int Comparison_5AFRAME_FirstLevelCode_0x53(char *getdata) @@ -205,6 +205,11 @@ static int Comparison_5AFRAME_FirstLevelCode_0x53(char *getdata)
205 return JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSSPEED; 205 return JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSSPEED;
206 break; 206 break;
207 207
  208 + //查询是否打开了播放时间回传
  209 + case 0x08:
  210 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_CURRENT_PLAYTIME;
  211 + break;
  212 +
208 //查询软件版本号 213 //查询软件版本号
209 case 0xf1: 214 case 0xf1:
210 return JZ_INSCODE_5AFRAME_CHECKSTATUS_SOFTWAREVERSION; 215 return JZ_INSCODE_5AFRAME_CHECKSTATUS_SOFTWAREVERSION;
@@ -304,6 +309,10 @@ static int Comparison_5AFRAME_FirstLevelCode_0x57(char *getdata) @@ -304,6 +309,10 @@ static int Comparison_5AFRAME_FirstLevelCode_0x57(char *getdata)
304 return JZ_INSCODE_5AFRAME_TTS_TRANS_LIMIT_TRANSMISSION; 309 return JZ_INSCODE_5AFRAME_TTS_TRANS_LIMIT_TRANSMISSION;
305 break; 310 break;
306 311
  312 + case 0x07:
  313 + return JZ_INSCODE_5AFRAME_CURRENT_PLAY_TIME;
  314 + break;
  315 +
307 default: 316 default:
308 break; 317 break;
309 } 318 }
@@ -314,7 +323,7 @@ static int Comparison_5AFRAME_FirstLevelCode_0x58(char *getdata) @@ -314,7 +323,7 @@ static int Comparison_5AFRAME_FirstLevelCode_0x58(char *getdata)
314 //二级功能位 323 //二级功能位
315 switch (getdata[8]) 324 switch (getdata[8])
316 { 325 {
317 - //设置音色 326 + //获取音乐列表
318 case 0x01: 327 case 0x01:
319 return JZ_INSCODE_5AFRAME_AUDIO_GETMUSICLIST; 328 return JZ_INSCODE_5AFRAME_AUDIO_GETMUSICLIST;
320 break; 329 break;
@@ -323,6 +332,11 @@ static int Comparison_5AFRAME_FirstLevelCode_0x58(char *getdata) @@ -323,6 +332,11 @@ static int Comparison_5AFRAME_FirstLevelCode_0x58(char *getdata)
323 case 0x03: 332 case 0x03:
324 return JZ_INSCODE_5AFRAME_CHECKSTATUS_AUDIO_DETAIL_MESSAGE; 333 return JZ_INSCODE_5AFRAME_CHECKSTATUS_AUDIO_DETAIL_MESSAGE;
325 break; 334 break;
  335 +
  336 + //获取opus列表
  337 + case 0x10:
  338 + return JZ_INSCODE_5AFRAME_OPUS_GETOPUSLIST;
  339 + break;
326 340
327 default: 341 default:
328 break; 342 break;
@@ -337,7 +351,12 @@ static int Comparison_5AFRAME_FirstLevelCode_0x59(char *getdata) @@ -337,7 +351,12 @@ static int Comparison_5AFRAME_FirstLevelCode_0x59(char *getdata)
337 //opus录音传输 351 //opus录音传输
338 //opus传输开始 352 //opus传输开始
339 case 0xF1: 353 case 0xF1:
340 - return JZ_INSCODE_5AFRAME_OPUS_TRANS_START; 354 + return JZ_INSCODE_5AFRAME_OPUS_TRANS_START_1;
  355 + break;
  356 +
  357 + //opus传输二型
  358 + case 0xF5:
  359 + return JZ_INSCODE_5AFRAME_OPUS_TRANS_START_2;
341 break; 360 break;
342 361
343 //opus传输结束 362 //opus传输结束
@@ -604,6 +623,45 @@ static int Comparison_5AFRAME_FirstLevelCode_0x6F(char *getdata) @@ -604,6 +623,45 @@ static int Comparison_5AFRAME_FirstLevelCode_0x6F(char *getdata)
604 } 623 }
605 } 624 }
606 625
  626 +
  627 +//一级功能码 升级帧
  628 +static int Comparison_5AFRAME_FirstLevelCode_0xA1(char *getdata)
  629 +{
  630 + //二级功能位
  631 + switch (getdata[8])
  632 + {
  633 + //升级准备
  634 + case 0x01:
  635 + return JZ_INSCODE_5AFRAME_UPGRADE_PERPARE;
  636 + break;
  637 +
  638 + //升级校验码
  639 + case 0x02:
  640 + return JZ_INSCODE_5AFRAME_UPGRADE_SEND_CHECKCODE;
  641 + break;
  642 +
  643 + //升级数据发送开始
  644 + case 0x03:
  645 + return JZ_INSCODE_5AFRAME_UPGRADE_STRAT;
  646 + break;
  647 +
  648 + //升级数据发送结束
  649 + case 0x04:
  650 + return JZ_INSCODE_5AFRAME_UPGRADE_END;
  651 + break;
  652 +
  653 + //升级发送数据
  654 + case 0xF1:
  655 + return JZ_INSCODE_5AFRAME_UPGRADE_TRANS;
  656 + break;
  657 +
  658 + default:
  659 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  660 + break;
  661 + }
  662 +}
  663 +
  664 +
607 /****************************************************************** 665 /******************************************************************
608 666
609 回复帧对比 667 回复帧对比
@@ -745,7 +803,9 @@ int JZsdk_5AFrameComparsion(char *getdata, int len) @@ -745,7 +803,9 @@ int JZsdk_5AFrameComparsion(char *getdata, int len)
745 return Comparison_5AFRAME_FirstLevelCode_0x6F(getdata); 803 return Comparison_5AFRAME_FirstLevelCode_0x6F(getdata);
746 break; 804 break;
747 805
748 - 806 + //一级功能码 升级功能
  807 + case 0xA1:
  808 + return Comparison_5AFRAME_FirstLevelCode_0xA1(getdata);
749 break; 809 break;
750 810
751 //一级功能码 811 //一级功能码
@@ -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;
@@ -375,6 +375,22 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len) @@ -375,6 +375,22 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len)
375 } 375 }
376 break; 376 break;
377 377
  378 + case JZ_INSCODE_5BFRAME_CHECKSTATUS_CURRENT_PLAYTIME:
  379 + {
  380 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0x08, 0x00, 0x00, 0x23};
  381 + memcpy(str, sendbuf, 12);
  382 + *str_len = 12;
  383 + }
  384 + break;
  385 +
  386 +
  387 + case JZ_INSCODE_5BFRAME_CURRENT_PLAY_TIME:
  388 + {
  389 + char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0d, 0x00, 0x00, 0x57, 0x07, 0x00, 0x00, 0x23};
  390 + memcpy(str, sendbuf, 12);
  391 + *str_len = 13;
  392 + }
  393 +
378 case JZ_INSCODE_5BFRAME_MUSICLIST_START: 394 case JZ_INSCODE_5BFRAME_MUSICLIST_START:
379 { 395 {
380 char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x23}; 396 char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x23};
@@ -416,6 +432,28 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len) @@ -416,6 +432,28 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len)
416 } 432 }
417 break; 433 break;
418 434
  435 + case JZ_INSCODE_5BFRAME_OPUSLIST_START:
  436 + {
  437 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0x11, 0x00, 0x00, 0x23};
  438 + memcpy(str, sendbuf, 12);
  439 + *str_len = 12;
  440 + }
  441 + break;
  442 +
  443 + case JZ_INSCODE_5BFRAME_OPUSLIST_TRANS:
  444 + {
  445 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0x12, 0x00, 0x00, 0x23};
  446 + memcpy(str, sendbuf, 12);
  447 + *str_len = 12;
  448 + }
  449 + break;
  450 +
  451 + case JZ_INSCODE_5BFRAME_OPUSLIST_END:
  452 + {
  453 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x23};
  454 + memcpy(str, sendbuf, 12);
  455 + *str_len = 12;
  456 + }
419 break; 457 break;
420 458
421 case JZ_INSCODE_5BFRAME_OPUS_DECODE_STATUS: 459 case JZ_INSCODE_5BFRAME_OPUS_DECODE_STATUS:
@@ -514,7 +552,45 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len) @@ -514,7 +552,45 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len)
514 } 552 }
515 break; 553 break;
516 554
  555 + case JZ_INSCODE_5BFRAME_UPGRADE_PERPARE:
  556 + {
  557 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0xA1, 0x01, 0x00, 0x00, 0x23};
  558 + memcpy(str, sendbuf, 12);
  559 + *str_len = 12;
  560 + }
  561 + break;
  562 +
  563 + case JZ_INSCODE_5BFRAME_UPGRADE_SEND_CHECKCODE:
  564 + {
  565 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0xA1, 0x02, 0x00, 0x00, 0x23};
  566 + memcpy(str, sendbuf, 12);
  567 + *str_len = 12;
  568 + }
  569 + break;
  570 +
  571 + case JZ_INSCODE_5BFRAME_UPGRADE_STRAT:
  572 + {
  573 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0xA1, 0x03, 0x00, 0x00, 0x23};
  574 + memcpy(str, sendbuf, 12);
  575 + *str_len = 12;
  576 + }
  577 + break;
  578 +
  579 + case JZ_INSCODE_5BFRAME_UPGRADE_END:
  580 + {
  581 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0xA1, 0x04, 0x00, 0x00, 0x23};
  582 + memcpy(str, sendbuf, 12);
  583 + *str_len = 12;
  584 + }
  585 + break;
517 586
  587 + case JZ_INSCODE_5BFRAME_UPGRADE_CHECKRESULT:
  588 + {
  589 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0xA1, 0x05, 0x00, 0x00, 0x23};
  590 + memcpy(str, sendbuf, 12);
  591 + *str_len = 12;
  592 + }
  593 + break;
518 594
519 /******************************************************************************************************************************************************** 595 /********************************************************************************************************************************************************
520 * 596 *
@@ -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(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(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) {
@@ -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" {
@@ -28,7 +29,7 @@ extern "C" { @@ -28,7 +29,7 @@ extern "C" {
28 T_JZsdkReturnCode JZsdk_RunSystemCmd(char *systemCmd); 29 T_JZsdkReturnCode JZsdk_RunSystemCmd(char *systemCmd);
29 T_JZsdkReturnCode JZsdk_check_file_exists(const char* file_path) ; 30 T_JZsdkReturnCode JZsdk_check_file_exists(const char* file_path) ;
30 T_JZsdkReturnCode JZsdk_create_file(const char* file_path) ; 31 T_JZsdkReturnCode JZsdk_create_file(const char* file_path) ;
31 -T_JZsdkReturnCode JZsdk_delete_file(const char* file_path) ; 32 +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) ; 33 T_JZsdkReturnCode JZsdk_strings_suffix_comparison_onlyStr(const unsigned char* Strings, const unsigned char *suffix) ;
33 T_JZsdkReturnCode JZsdk_strings_suffix_comparison_withLen(const unsigned char* Strings, int Strings_len, const unsigned char *suffix) ; 34 T_JZsdkReturnCode JZsdk_strings_suffix_comparison_withLen(const unsigned char* Strings, int Strings_len, const unsigned char *suffix) ;
34 T_JZsdkReturnCode JZsdk_Osal_Mkdir(const char *filePath); 35 T_JZsdkReturnCode JZsdk_Osal_Mkdir(const char *filePath);
@@ -40,6 +41,17 @@ T_JZsdkReturnCode JZsdk_copy_file_byC(const char* source_path, const char* dest_ @@ -40,6 +41,17 @@ T_JZsdkReturnCode JZsdk_copy_file_byC(const char* source_path, const char* dest_
40 T_JZsdkReturnCode JZsdk_RunSystemCmd_ReturnResult(char *systemCmd, unsigned int *result); 41 T_JZsdkReturnCode JZsdk_RunSystemCmd_ReturnResult(char *systemCmd, unsigned int *result);
41 T_JZsdkReturnCode JZsdk_RunSystemCmd_ReturnResult_Str(char *systemCmd, unsigned char *str); 42 T_JZsdkReturnCode JZsdk_RunSystemCmd_ReturnResult_Str(char *systemCmd, unsigned char *str);
42 T_JZsdkReturnCode JZsdk_Sync(); 43 T_JZsdkReturnCode JZsdk_Sync();
  44 +T_JZsdkReturnCode JZsdk_Osal_Stat(const char *filePath, T_JZsdkFileInfo *fileInfo);
  45 +T_JZsdkReturnCode JZsdk_Osal_Rename(const char *oldFilePath, const char *newFilePath);
  46 +
  47 +
  48 +T_JZsdkReturnCode JZsdk_Osal_FileOpen(const char *fileName, const char *fileMode, T_JZsdkFileHandle *fileObj);
  49 +T_JZsdkReturnCode JZsdk_Osal_FileClose(T_JZsdkFileHandle fileObj);
  50 +T_JZsdkReturnCode JZsdk_Osal_FileWrite(T_JZsdkFileHandle fileObj, const U8_t *buf, U32_t len, U32_t *realLen);
  51 +T_JZsdkReturnCode JZsdk_Osal_FileRead(T_JZsdkFileHandle fileObj, U8_t *buf, U32_t len, U32_t *realLen);
  52 +T_JZsdkReturnCode JZsdk_Osal_FileSeek(T_JZsdkFileHandle fileObj, U32_t offset);
  53 +T_JZsdkReturnCode JZsdk_Osal_FileSync(T_JZsdkFileHandle fileObj);
  54 +
43 55
44 #ifdef __cplusplus 56 #ifdef __cplusplus
45 } 57 }
@@ -8,7 +8,12 @@ static T_JZsdkOsalHandler* g_osalHandler = NULL; @@ -8,7 +8,12 @@ static T_JZsdkOsalHandler* g_osalHandler = NULL;
8 8
9 static T_JZsdkReturnCode JZsdk_Platform_RegOsalHandler(const T_JZsdkOsalHandler *osalHandler) 9 static T_JZsdkReturnCode JZsdk_Platform_RegOsalHandler(const T_JZsdkOsalHandler *osalHandler)
10 { 10 {
11 - g_osalHandler = (T_JZsdkOsalHandler*)osalHandler; // 存储传入的 OSAL 处理器 11 + g_osalHandler = malloc(sizeof(T_JZsdkOsalHandler));
  12 + if (osalHandler == NULL) {
  13 + return JZ_ERROR_SYSTEM_MODULE_CODE_MEMORY_ALLOC_FAILED; // 处理内存分配失败的情况
  14 + }
  15 +
  16 + memcpy(g_osalHandler, osalHandler, sizeof(T_JZsdkOsalHandler));
12 17
13 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 18 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
14 } 19 }
@@ -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
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);
@@ -543,7 +543,7 @@ int Main_APP_Uart() @@ -543,7 +543,7 @@ int Main_APP_Uart()
543 delayMs(1000); 543 delayMs(1000);
544 544
545 //消息订阅初始化 545 //消息订阅初始化
546 - HalSend_type1Send_MessageSubcription_Control(UART_DEV_2, JZ_FLAGCODE_ON); 546 + HalSend_type1Send_MessageSubcription_Control(UART_DEV_2, JZ_FLAGCODE_OFF);
547 547
548 // //测试需要开启亮度 548 // //测试需要开启亮度
549 // JZsdk_Uart_SearchLight_Control(UART_DEV_1, 1); 549 // JZsdk_Uart_SearchLight_Control(UART_DEV_1, 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_H1E 10 +#define DEVICE_VERSION JZ_H1T
11 11
12 //禁止修改行 选择是串口程序 还是 psdk程序 12 //禁止修改行 选择是串口程序 还是 psdk程序
13 #define APP_VERSION APP_UART 13 #define APP_VERSION APP_UART
@@ -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
@@ -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,10 @@ @@ -21,9 +23,10 @@
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"
24 #endif 27 #endif
25 28
26 -static int HalRecvMode = JZ_FLAGCODE_OFF; 29 +static int HalRecvMode = JZ_FLAGCODE_OFF; //接收模式,主要是为了限制不同设备同时要求hal层做出 同一个数据接收相关功能 ,目前做法是只限定一个hal设备使用一种数据接收模式
27 static int HalRecvDataLen = 0; //用于计算接收数据长度 30 static int HalRecvDataLen = 0; //用于计算接收数据长度
28 31
29 static int SecondaryDeviceName = 0x00; // 从设备名,用于多设备相连时通知控制端 从机设备名 32 static int SecondaryDeviceName = 0x00; // 从设备名,用于多设备相连时通知控制端 从机设备名
@@ -74,6 +77,10 @@ static T_JZsdkReturnCode RecvDeal_AskForConnect(int Port, char *getbuf) @@ -74,6 +77,10 @@ static T_JZsdkReturnCode RecvDeal_AskForConnect(int Port, char *getbuf)
74 Main_WorkModeSet(JZ_FLAGCODE_ON); 77 Main_WorkModeSet(JZ_FLAGCODE_ON);
75 } 78 }
76 79
  80 + //5、打开连接状态
  81 + s_JZsdk_Hal_Info *halInfo = JZsdk_Hal_GetHalInfo();
  82 + halInfo->HalPort[Port].ConnectStatus = JZ_FLAGCODE_ON;
  83 +
77 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 84 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
78 } 85 }
79 86
@@ -90,10 +97,28 @@ static T_JZsdkReturnCode RecvDeal_HeartBeat(int Port, char *getbuf) @@ -90,10 +97,28 @@ static T_JZsdkReturnCode RecvDeal_HeartBeat(int Port, char *getbuf)
90 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 97 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
91 98
92 //1、获取连接情况 99 //1、获取连接情况
93 - int status = Main_WorkModeSet(JZ_FLAGCODE_GET); 100 + s_JZsdk_Hal_Info *halInfo = JZsdk_Hal_GetHalInfo();
  101 +
  102 + //分析模式
  103 + int mode = getbuf[9];
  104 + if (mode == 0x00)
  105 + {
  106 + //2、回复心跳帧
  107 + HalSend_type1Send_Send_HeartBeatStatus(Port, FrameSequence, halInfo->HalPort[Port].ConnectStatus);
  108 + }
  109 + else if (mode == 0x01 || mode == 0x02)
  110 + {
  111 + if(mode == 0x01)
  112 + {
  113 + halInfo->HalPort[Port].HeartBeatStatusSend = JZ_FLAGCODE_ON;
  114 + }
  115 + else if (mode == 0x02)
  116 + {
  117 + halInfo->HalPort[Port].HeartBeatStatusSend = JZ_FLAGCODE_OFF;
  118 + }
94 119
95 - //2、回复心跳帧  
96 - HalSend_type1Send_Send_HeartBeatStatus(Port, FrameSequence, status); 120 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  121 + }
97 122
98 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 123 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
99 } 124 }
@@ -449,20 +474,13 @@ static T_JZsdkReturnCode RecvDeal_RealTimeMP2_stop(int Port, char *getbuf) @@ -449,20 +474,13 @@ static T_JZsdkReturnCode RecvDeal_RealTimeMP2_stop(int Port, char *getbuf)
449 **********/ 474 **********/
450 static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_start(int Port, char *getbuf, int len) 475 static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_start(int Port, char *getbuf, int len)
451 { 476 {
  477 + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  478 +
452 JZSDK_LOG_INFO("%s,开始传输的音频文件保存",JZsdk_DefineCode_GetPortName(Port)); 479 JZSDK_LOG_INFO("%s,开始传输的音频文件保存",JZsdk_DefineCode_GetPortName(Port));
453 480
454 //获取帧的序列号 481 //获取帧的序列号
455 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 482 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
456 483
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、处理帧长度,获取文件名长度 484 //1、处理帧长度,获取文件名长度
467 int FileNameLen = ((int)getbuf[3] << 8) + (int)getbuf[4] - 2 - 9; 485 int FileNameLen = ((int)getbuf[3] << 8) + (int)getbuf[4] - 2 - 9;
468 486
@@ -475,21 +493,16 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_start(int Port, char *getbu @@ -475,21 +493,16 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_start(int Port, char *getbu
475 #ifdef MEGAPHONE_CONFIG_STATUS_ON 493 #ifdef MEGAPHONE_CONFIG_STATUS_ON
476 494
477 ret = Megaphone_SaveAudioFileStart(FileName); 495 ret = Megaphone_SaveAudioFileStart(FileName);
478 - if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) 496 +
  497 +#endif
  498 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  499 + {
  500 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  501 + }
  502 + else
479 { 503 {
480 HalSend_type1Send_Reply_Failure(Port, FrameSequence); 504 HalSend_type1Send_Reply_Failure(Port, FrameSequence);
481 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
482 } 505 }
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 506
494 return ret; 507 return ret;
495 } 508 }
@@ -502,7 +515,7 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_start(int Port, char *getbu @@ -502,7 +515,7 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_start(int Port, char *getbu
502 **********/ 515 **********/
503 static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_LimitTransmission(int Port, char *getbuf, int len) 516 static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_LimitTransmission(int Port, char *getbuf, int len)
504 { 517 {
505 - T_JZsdkReturnCode ret; 518 + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
506 519
507 //获取帧的序列号 520 //获取帧的序列号
508 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 521 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
@@ -515,21 +528,21 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_LimitTransmission(int Port, @@ -515,21 +528,21 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_LimitTransmission(int Port,
515 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 528 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
516 } 529 }
517 530
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 //传输数据接口 531 //传输数据接口
529 #ifdef MEGAPHONE_CONFIG_STATUS_ON 532 #ifdef MEGAPHONE_CONFIG_STATUS_ON
530 - Megaphone_SaveAudioFileTrans(getbuf+9, DataLen); 533 + ret = Megaphone_SaveAudioFileTrans(getbuf+9, DataLen);
531 #endif 534 #endif
532 535
  536 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  537 + {
  538 + //无操作
  539 + }
  540 + else
  541 + {
  542 + //回复操作失败
  543 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  544 + }
  545 +
533 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 546 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
534 } 547 }
535 548
@@ -541,31 +554,28 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_LimitTransmission(int Port, @@ -541,31 +554,28 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_LimitTransmission(int Port,
541 **********/ 554 **********/
542 static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_stop(int Port, char *getbuf) 555 static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_stop(int Port, char *getbuf)
543 { 556 {
  557 + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  558 +
544 JZSDK_LOG_INFO("%s,传输的音频文件保存",JZsdk_DefineCode_GetPortName(Port)); 559 JZSDK_LOG_INFO("%s,传输的音频文件保存",JZsdk_DefineCode_GetPortName(Port));
545 560
546 //获取帧的序列号 561 //获取帧的序列号
547 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 562 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
548 563
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、保存音频数据 564 //1、保存音频数据
558 #ifdef MEGAPHONE_CONFIG_STATUS_ON 565 #ifdef MEGAPHONE_CONFIG_STATUS_ON
559 - Megaphone_SaveAudioFileStop(JZ_FLAGCODE_OFF, NULL); 566 + ret = Megaphone_SaveAudioFileStop(JZ_FLAGCODE_OFF, NULL);
560 #endif 567 #endif
561 568
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); 569 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  570 + {
  571 + //4、回复操作成功
  572 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  573 + }
  574 + else
  575 + {
  576 + //4、回复操作失败
  577 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  578 + }
569 579
570 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 580 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
571 } 581 }
@@ -585,14 +595,6 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_stop_and_check(int Port, ch @@ -585,14 +595,6 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_stop_and_check(int Port, ch
585 //获取帧的序列号 595 //获取帧的序列号
586 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 596 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
587 597
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]; 598 unsigned char checkCode[128];
597 int frameLenth = ((int)getbuf[3]) << 8 | (int)getbuf[4]; 599 int frameLenth = ((int)getbuf[3]) << 8 | (int)getbuf[4];
598 int CodeLenth = frameLenth - 10 - 2; 600 int CodeLenth = frameLenth - 10 - 2;
@@ -649,11 +651,6 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_stop_and_check(int Port, ch @@ -649,11 +651,6 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_stop_and_check(int Port, ch
649 } 651 }
650 #endif 652 #endif
651 653
652 - //调整接收模式为音频文件传输  
653 - HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(Port, JZ_FLAGCODE_OFF);  
654 - JZSDK_LOG_INFO("一共传输了%d字节", HalRecvDataLen);  
655 - HalRecvDataLen = 0;  
656 -  
657 return ret; 654 return ret;
658 } 655 }
659 656
@@ -1563,10 +1560,13 @@ static T_JZsdkReturnCode RecvDeal_Delete_Audio(int Port, char *getbuf) @@ -1563,10 +1560,13 @@ static T_JZsdkReturnCode RecvDeal_Delete_Audio(int Port, char *getbuf)
1563 FileName[FileName_Length] = '\0'; // 确保文件名以null结尾 1560 FileName[FileName_Length] = '\0'; // 确保文件名以null结尾
1564 1561
1565 //3、拼接指令 1562 //3、拼接指令
1566 - char cmd[512];  
1567 - snprintf(cmd, 512 ,"rm /root/sdcard/audio/%s", FileName); 1563 + char FilePath[512];
  1564 + snprintf(FilePath, 512 ,"/root/sdcard/audio/%s", FileName);
  1565 +
  1566 + //4、删除文件
  1567 + JZsdk_Osal_delete(FilePath);
1568 1568
1569 - JZsdk_RunSystemCmd(cmd); 1569 + JZsdk_Sync();
1570 1570
1571 //4、刷新歌曲列表 1571 //4、刷新歌曲列表
1572 #ifdef MEGAPHONE_CONFIG_STATUS_ON 1572 #ifdef MEGAPHONE_CONFIG_STATUS_ON
@@ -1587,7 +1587,7 @@ static T_JZsdkReturnCode RecvDeal_Delete_Audio(int Port, char *getbuf) @@ -1587,7 +1587,7 @@ static T_JZsdkReturnCode RecvDeal_Delete_Audio(int Port, char *getbuf)
1587 **********/ 1587 **********/
1588 static T_JZsdkReturnCode RecvDeal_Delete_VoiceRecord(int Port, char *getbuf) 1588 static T_JZsdkReturnCode RecvDeal_Delete_VoiceRecord(int Port, char *getbuf)
1589 { 1589 {
1590 - JZSDK_LOG_INFO("%s,删除录音操作",JZsdk_DefineCode_GetPortName(Port)); 1590 + JZSDK_LOG_INFO("%s,删除opus录音操作",JZsdk_DefineCode_GetPortName(Port));
1591 1591
1592 //获取帧的序列号 1592 //获取帧的序列号
1593 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 1593 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
@@ -1597,19 +1597,22 @@ static T_JZsdkReturnCode RecvDeal_Delete_VoiceRecord(int Port, char *getbuf) @@ -1597,19 +1597,22 @@ static T_JZsdkReturnCode RecvDeal_Delete_VoiceRecord(int Port, char *getbuf)
1597 FileName_Length = ((int)getbuf[3] << 8) + (int)getbuf[4] - 2 - 9; 1597 FileName_Length = ((int)getbuf[3] << 8) + (int)getbuf[4] - 2 - 9;
1598 1598
1599 //2、获取名字 1599 //2、获取名字
1600 - char FileName[256]; 1600 + char FileName[JZSDK_FILE_NAME_SIZE_MAX];
1601 memcpy(FileName, &getbuf[9], FileName_Length); 1601 memcpy(FileName, &getbuf[9], FileName_Length);
1602 FileName[FileName_Length] = '\0'; // 确保文件名以null结尾 1602 FileName[FileName_Length] = '\0'; // 确保文件名以null结尾
1603 1603
1604 //3、拼接指令 1604 //3、拼接指令
1605 - char cmd[512];  
1606 - snprintf(cmd, 512 ,"rm /root/sdcard/audio/%s", FileName); 1605 + char FilePath[512];
  1606 + snprintf(FilePath, 512 ,"/root/sdcard/opus/%s", FileName);
1607 1607
1608 - JZsdk_RunSystemCmd(cmd); 1608 + //4、删除文件
  1609 + JZsdk_Osal_delete(FilePath);
  1610 +
  1611 + JZsdk_Sync();
1609 1612
1610 //4、刷新歌曲列表 1613 //4、刷新歌曲列表
1611 #ifdef MEGAPHONE_CONFIG_STATUS_ON 1614 #ifdef MEGAPHONE_CONFIG_STATUS_ON
1612 - Megaphone_Flush_MusicList(); 1615 + OpusFile_FlushList();
1613 #endif 1616 #endif
1614 1617
1615 //回复操作成功 1618 //回复操作成功
@@ -1629,6 +1632,128 @@ static T_JZsdkReturnCode RecvDeal_Delete_VideoRecord() @@ -1629,6 +1632,128 @@ static T_JZsdkReturnCode RecvDeal_Delete_VideoRecord()
1629 1632
1630 } 1633 }
1631 1634
  1635 +
  1636 +
  1637 +/*********
  1638 + *
  1639 + * 音频重命名
  1640 + *
  1641 + *
  1642 +**********/
  1643 +static T_JZsdkReturnCode RecvDeal_Rename_Audio(int Port, char *getbuf)
  1644 +{
  1645 + JZSDK_LOG_INFO("%s,音频重命名",JZsdk_DefineCode_GetPortName(Port));
  1646 +
  1647 + //获取帧的序列号
  1648 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  1649 +
  1650 + //获取总帧长度
  1651 + int FrameLength = JZsdk_Get_FrameLength(getbuf);
  1652 +
  1653 + //获取原文件长度
  1654 + int OldFileName_Length = getbuf[9];
  1655 +
  1656 + //获取新文件长度
  1657 + int NewFileName_Length = getbuf[10 + OldFileName_Length];
  1658 +
  1659 + //获取原文件名字
  1660 + unsigned char OldFileName[128];
  1661 + memcpy(OldFileName, &getbuf[9], OldFileName_Length);
  1662 + OldFileName[OldFileName_Length] = '\0'; // 确保文件名以null结尾
  1663 +
  1664 + //获取新文件名字
  1665 + unsigned char NewFileName[128];
  1666 + memcpy(NewFileName, &getbuf[10 + OldFileName_Length], NewFileName_Length);
  1667 + NewFileName[NewFileName_Length] = '\0'; // 确保文件名以null结尾
  1668 +
  1669 + //3、拼接出地址
  1670 + char OldFilePath[JZSDK_FILE_PATH_SIZE_MAX];
  1671 + snprintf(OldFilePath, JZSDK_FILE_PATH_SIZE_MAX ,"/root/sdcard/audio/%s", OldFileName);
  1672 +
  1673 + char NewFilePath[JZSDK_FILE_PATH_SIZE_MAX];
  1674 + snprintf(NewFilePath, JZSDK_FILE_PATH_SIZE_MAX ,"/root/sdcard/audio/%s", NewFileName);
  1675 +
  1676 + JZsdk_Osal_Rename(OldFilePath, NewFilePath);
  1677 +
  1678 + JZsdk_Sync();
  1679 +
  1680 + //4、刷新歌曲列表
  1681 +#ifdef MEGAPHONE_CONFIG_STATUS_ON
  1682 + Megaphone_Flush_MusicList();
  1683 +#endif
  1684 +
  1685 + //回复操作成功
  1686 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  1687 +
  1688 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  1689 +}
  1690 +
  1691 +/*********
  1692 + *
  1693 + * 录音重命名
  1694 + *
  1695 + *
  1696 +**********/
  1697 +static T_JZsdkReturnCode RecvDeal_Rename_VoiceRecord(int Port, char *getbuf)
  1698 +{
  1699 + JZSDK_LOG_INFO("%s,音频重命名",JZsdk_DefineCode_GetPortName(Port));
  1700 +
  1701 + //获取帧的序列号
  1702 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  1703 +
  1704 + //获取总帧长度
  1705 + int FrameLength = JZsdk_Get_FrameLength(getbuf);
  1706 +
  1707 + //获取原文件长度
  1708 + int OldFileName_Length = getbuf[9];
  1709 +
  1710 + //获取新文件长度
  1711 + int NewFileName_Length = getbuf[10 + OldFileName_Length];
  1712 +
  1713 + //获取原文件名字
  1714 + unsigned char OldFileName[128];
  1715 + memcpy(OldFileName, &getbuf[9], OldFileName_Length);
  1716 + OldFileName[OldFileName_Length] = '\0'; // 确保文件名以null结尾
  1717 +
  1718 + //获取新文件名字
  1719 + unsigned char NewFileName[128];
  1720 + memcpy(NewFileName, &getbuf[10 + OldFileName_Length], NewFileName_Length);
  1721 + NewFileName[NewFileName_Length] = '\0'; // 确保文件名以null结尾
  1722 +
  1723 + //3、拼接出地址
  1724 + char OldFilePath[JZSDK_FILE_PATH_SIZE_MAX];
  1725 + snprintf(OldFilePath, JZSDK_FILE_PATH_SIZE_MAX ,"/root/sdcard/opus/%s", OldFileName);
  1726 +
  1727 + char NewFilePath[JZSDK_FILE_PATH_SIZE_MAX];
  1728 + snprintf(NewFilePath, JZSDK_FILE_PATH_SIZE_MAX ,"/root/sdcard/opus/%s", NewFileName);
  1729 +
  1730 + JZsdk_Osal_Rename(OldFilePath, NewFilePath);
  1731 +
  1732 + JZsdk_Sync();
  1733 +
  1734 + //4、刷新歌曲列表
  1735 +#ifdef MEGAPHONE_CONFIG_STATUS_ON
  1736 + OpusFile_FlushList();
  1737 +#endif
  1738 +
  1739 + //回复操作成功
  1740 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  1741 +
  1742 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  1743 +}
  1744 +
  1745 +/*********
  1746 + *
  1747 + * 删除视频
  1748 + *
  1749 + *
  1750 +**********/
  1751 +static T_JZsdkReturnCode RecvDeal_Rename_VideoRecord()
  1752 +{
  1753 +
  1754 +}
  1755 +
  1756 +
1632 /********* 1757 /*********
1633 * 1758 *
1634 * tts设置音色 1759 * tts设置音色
@@ -1840,27 +1965,100 @@ static T_JZsdkReturnCode RecvDeal_TTS_Trans_stop(int Port, char *getbuf) @@ -1840,27 +1965,100 @@ static T_JZsdkReturnCode RecvDeal_TTS_Trans_stop(int Port, char *getbuf)
1840 } 1965 }
1841 1966
1842 1967
  1968 +
1843 /********* 1969 /*********
1844 * 1970 *
1845 - * 打开opus传输 1971 + * 播放时间回传
1846 * 1972 *
1847 * 1973 *
1848 **********/ 1974 **********/
1849 -static T_JZsdkReturnCode RecvDeal_OpusTrans_start(int Port, char *getbuf) 1975 +static T_JZsdkReturnCode RecvDeal_Current_Play_Time(int Port, char *getbuf)
1850 { 1976 {
1851 - JZSDK_LOG_INFO("%s,打开opus传输",JZsdk_DefineCode_GetPortName(Port)); 1977 + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  1978 +
  1979 + JZSDK_LOG_INFO("%s,设置播放时间回传",JZsdk_DefineCode_GetPortName(Port));
1852 1980
1853 //获取帧的序列号 1981 //获取帧的序列号
1854 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 1982 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
1855 1983
1856 - T_JZsdkReturnCode ret = HalRecv_tpye1_RecvDeal_UartTransmodeDecide();  
1857 - if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) 1984 + //获取帧操作
  1985 + int Mode = getbuf[9];
  1986 +
  1987 + JZSDK_LOG_INFO("设置播放回传模式:%d", Mode);
  1988 +
  1989 +#ifdef MEGAPHONE_CONFIG_STATUS_ON
  1990 +
  1991 + //如果是0 或者 1 是关闭或打开回传模式
  1992 + if (Mode == JZ_FLAGCODE_OFF || Mode == JZ_FLAGCODE_ON)
1858 { 1993 {
1859 - //回复操作失败  
1860 - HalSend_type1Send_Reply_Failure(Port, FrameSequence);  
1861 - JZSDK_LOG_ERROR("打开opus传输失败, 已开启其他传输模式");  
1862 - return ret; 1994 + ret = Megaphone_PlayBackSet(Port, Mode);
  1995 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  1996 + {
  1997 + //回复操作成功
  1998 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  1999 +
  2000 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  2001 + }
  2002 + else
  2003 + {
  2004 + //回复操作失败
  2005 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2006 +
  2007 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2008 + }
  2009 + }
  2010 +
  2011 + //如果是2,则主动索取
  2012 + if (Mode == 2)
  2013 + {
  2014 + ret = Megaphone_PlayBackTimeGet(Port);
1863 } 2015 }
  2016 +
  2017 +#endif
  2018 +
  2019 + return ret;
  2020 +}
  2021 +
  2022 +
  2023 +/*********
  2024 + *
  2025 + * 获取播放时间回传模式
  2026 + *
  2027 + *
  2028 +**********/
  2029 +static T_JZsdkReturnCode RecvDeal_CheckStatus_CurrentPlayTime(int Port, char *getbuf)
  2030 +{
  2031 + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2032 +
  2033 + JZSDK_LOG_INFO("%s,获取播放时间回传模式",JZsdk_DefineCode_GetPortName(Port));
  2034 +
  2035 + //获取帧的序列号
  2036 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  2037 +
  2038 +#ifdef MEGAPHONE_CONFIG_STATUS_ON
  2039 +
  2040 + int mode = Megaphone_PlayBackGetMode(Port);
  2041 + HalSend_type1Send_Reply_CurrentPlayTimeStatus(Port, mode);
  2042 +
  2043 +#endif
  2044 +
  2045 + return ret;
  2046 +}
  2047 +
  2048 +/*********
  2049 + *
  2050 + * 打开opus传输
  2051 + *
  2052 + *
  2053 +**********/
  2054 +static T_JZsdkReturnCode RecvDeal_OpusTrans_start(int Port, char *getbuf)
  2055 +{
  2056 + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2057 +
  2058 + JZSDK_LOG_INFO("%s,打开opus传输1型",JZsdk_DefineCode_GetPortName(Port));
  2059 +
  2060 + //获取帧的序列号
  2061 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
1864 2062
1865 //1、获取解码比特率 2063 //1、获取解码比特率
1866 int decode_rate = getbuf[9] * 8000; 2064 int decode_rate = getbuf[9] * 8000;
@@ -1871,19 +2069,140 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_start(int Port, char *getbuf) @@ -1871,19 +2069,140 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_start(int Port, char *getbuf)
1871 2069
1872 //2、创建存储文件 2070 //2、创建存储文件
1873 #ifdef MEGAPHONE_CONFIG_STATUS_ON 2071 #ifdef MEGAPHONE_CONFIG_STATUS_ON
1874 - Megaphone_SaveOpusStart(decode_rate); 2072 + ret = Megaphone_SaveOpusStart(NULL, decode_rate, 16000, 1);
  2073 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  2074 + {
  2075 + //回复操作成功
  2076 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  2077 +
  2078 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  2079 + }
  2080 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_IS_BUSY)
  2081 + {
  2082 + JZSDK_LOG_ERROR("opus忙碌中");
  2083 + }
  2084 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE)
  2085 + {
  2086 + JZSDK_LOG_ERROR("opus创建失败");
  2087 + }
  2088 +
  2089 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2090 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2091 +
  2092 +#else
  2093 + JZSDK_LOG_ERROR("非喊话器不支持opus传输");
  2094 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2095 +
  2096 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
1875 #endif 2097 #endif
  2098 +}
1876 2099
1877 - //3、修改接收模式为传输opus  
1878 - HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(Port, JZ_DATA_TRANS_TYPE_OPUS_FILE);  
1879 - HalRecvDataLen = 0;  
1880 2100
1881 - //回复操作成功  
1882 - HalSend_type1Send_Reply_Success(Port, FrameSequence);  
1883 2101
1884 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 2102 +/*********
  2103 + *
  2104 + * 打开opus传输Ⅱ型
  2105 + *
  2106 + *
  2107 +**********/
  2108 +static T_JZsdkReturnCode RecvDeal_OpusTrans_start_2(int Port, char *getbuf)
  2109 +{
  2110 + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2111 +
  2112 + JZSDK_LOG_INFO("%s,打开opus传输1型",JZsdk_DefineCode_GetPortName(Port));
  2113 +
  2114 + //获取帧的序列号
  2115 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  2116 +
  2117 + //获取帧的长度
  2118 + int FrameLen = JZsdk_Get_FrameLength(getbuf);
  2119 +
  2120 + //获取存储模式
  2121 + int SaveMode = getbuf[9];
  2122 +
  2123 + //获取比特率
  2124 + int BitChoose = getbuf[10];
  2125 + int decode_rate = 16000;
  2126 + // if (BitChoose == 0)
  2127 + // {
  2128 + // decode_rate = 16000;
  2129 + // }
  2130 +
  2131 + //获取采样率
  2132 + int SampleChoose = getbuf[11];
  2133 + int SampleRate = 16000;
  2134 + // if (SampleChoose == 0)
  2135 + // {
  2136 + // SampleRate = 16000;
  2137 + // }
  2138 +
  2139 + //获取频道数
  2140 + int ChannelChoose = getbuf[12];
  2141 + int ChannelNum = 1;
  2142 + // if (ChannelChoose == 0)
  2143 + // {
  2144 + // ChannelNum = 1;
  2145 + // }
  2146 +
  2147 + //获取文件名长度
  2148 + int FileNameLen = getbuf[13];
  2149 + if(FileNameLen != FrameLen - 14 - 2)
  2150 + {
  2151 + JZSDK_LOG_ERROR("文件名长度错误");
  2152 + FileNameLen = FrameLen - 14 - 2;
  2153 + }
  2154 +
  2155 + if (FileNameLen > 128)
  2156 + {
  2157 + JZSDK_LOG_ERROR("文件名长度过长");
  2158 + FileNameLen = 128;
  2159 + }
  2160 +
  2161 + //获取文件名
  2162 + unsigned char FileName[128] = {0};
  2163 + memcpy(FileName, getbuf + 14, FileNameLen);
  2164 +
  2165 + //2、创建存储文件
  2166 +#ifdef MEGAPHONE_CONFIG_STATUS_ON
  2167 +
  2168 + if (SaveMode == JZ_FLAGCODE_OFF)
  2169 + {
  2170 + ret = Megaphone_SaveOpusStart(NULL, decode_rate, SampleRate, ChannelNum);
  2171 + }
  2172 + else
  2173 + {
  2174 + ret = Megaphone_SaveOpusStart(FileName, decode_rate, SampleRate, ChannelNum);
  2175 + }
  2176 +
  2177 +
  2178 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  2179 + {
  2180 + //回复操作成功
  2181 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  2182 +
  2183 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  2184 + }
  2185 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_IS_BUSY)
  2186 + {
  2187 + JZSDK_LOG_ERROR("opus忙碌中");
  2188 + }
  2189 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE)
  2190 + {
  2191 + JZSDK_LOG_ERROR("opus创建失败");
  2192 + }
  2193 +
  2194 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2195 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2196 +
  2197 +#else
  2198 + JZSDK_LOG_ERROR("非喊话器不支持opus传输");
  2199 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2200 +
  2201 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2202 +#endif
1885 } 2203 }
1886 2204
  2205 +
1887 /********* 2206 /*********
1888 * 2207 *
1889 * opus定长传输文件 2208 * opus定长传输文件
@@ -1897,13 +2216,6 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_LimitTransmission(int Port, char *ge @@ -1897,13 +2216,6 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_LimitTransmission(int Port, char *ge
1897 //获取帧的序列号 2216 //获取帧的序列号
1898 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 2217 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
1899 2218
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 //提取出数据 2219 //提取出数据
1908 int DataLen = ((int)getbuf[3] << 8 ) + (int)getbuf[4] - 2 - 9; 2220 int DataLen = ((int)getbuf[3] << 8 ) + (int)getbuf[4] - 2 - 9;
1909 if (DataLen > 1024) 2221 if (DataLen > 1024)
@@ -1911,13 +2223,21 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_LimitTransmission(int Port, char *ge @@ -1911,13 +2223,21 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_LimitTransmission(int Port, char *ge
1911 JZSDK_LOG_ERROR("%s, 传输得到的opus定长音频文件帧长度超出1024上限",JZsdk_DefineCode_GetPortName(Port)); 2223 JZSDK_LOG_ERROR("%s, 传输得到的opus定长音频文件帧长度超出1024上限",JZsdk_DefineCode_GetPortName(Port));
1912 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 2224 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
1913 } 2225 }
1914 -  
1915 - HalRecvDataLen += DataLen;  
1916 - JZSDK_LOG_DEBUG("%s,传输opus定长音频文件中 一共传输了%d字节",JZsdk_DefineCode_GetPortName(Port),HalRecvDataLen);  
1917 2226
1918 //传输数据接口 2227 //传输数据接口
1919 #ifdef MEGAPHONE_CONFIG_STATUS_ON 2228 #ifdef MEGAPHONE_CONFIG_STATUS_ON
1920 - Megaphone_SaveOpusTrans(getbuf+9, DataLen); 2229 + ret = Megaphone_SaveOpusTrans(getbuf+9, DataLen);
  2230 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  2231 + {
  2232 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2233 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2234 + }
  2235 +
  2236 +#else
  2237 + JZSDK_LOG_ERROR("非喊话器不支持opus传输");
  2238 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2239 +
  2240 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
1921 #endif 2241 #endif
1922 2242
1923 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 2243 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
@@ -1932,30 +2252,35 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_LimitTransmission(int Port, char *ge @@ -1932,30 +2252,35 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_LimitTransmission(int Port, char *ge
1932 **********/ 2252 **********/
1933 static T_JZsdkReturnCode RecvDeal_OpusTrans_stop(int Port, char *getbuf) 2253 static T_JZsdkReturnCode RecvDeal_OpusTrans_stop(int Port, char *getbuf)
1934 { 2254 {
  2255 + T_JZsdkReturnCode ret;
  2256 +
1935 JZSDK_LOG_INFO("%s,结束opus传输",JZsdk_DefineCode_GetPortName(Port)); 2257 JZSDK_LOG_INFO("%s,结束opus传输",JZsdk_DefineCode_GetPortName(Port));
1936 2258
1937 //获取帧的序列号 2259 //获取帧的序列号
1938 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 2260 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
1939 2261
1940 - if (HalRecvMode != JZ_DATA_TRANS_TYPE_OPUS_FILE) 2262 +#ifdef MEGAPHONE_CONFIG_STATUS_ON
  2263 + ret = Megaphone_SaveOpusStop(JZ_FLAGCODE_OFF, NULL);
  2264 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
1941 { 2265 {
1942 - //回复操作失败  
1943 HalSend_type1Send_Reply_Failure(Port, FrameSequence); 2266 HalSend_type1Send_Reply_Failure(Port, FrameSequence);
1944 - JZSDK_LOG_ERROR("关闭opus结束传输失败,opus结束传输未开始,无法关闭"); 2267 +
1945 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 2268 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
1946 } 2269 }
  2270 + else
  2271 + {
  2272 + //回复操作成功
  2273 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
1947 2274
  2275 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  2276 + }
1948 2277
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; 2278 +#else
  2279 + JZSDK_LOG_ERROR("非喊话器不支持opus传输");
  2280 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
1956 2281
1957 - //回复操作成功  
1958 - HalSend_type1Send_Reply_Success(Port, FrameSequence); 2282 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2283 +#endif
1959 2284
1960 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 2285 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
1961 } 2286 }
@@ -1976,13 +2301,6 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_stop_and_check(int Port, char *getbu @@ -1976,13 +2301,6 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_stop_and_check(int Port, char *getbu
1976 //获取帧的序列号 2301 //获取帧的序列号
1977 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 2302 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
1978 2303
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 2304
1987 unsigned char checkCode[128]; 2305 unsigned char checkCode[128];
1988 int frameLenth = ((int)getbuf[3]) << 8 | (int)getbuf[4]; 2306 int frameLenth = ((int)getbuf[3]) << 8 | (int)getbuf[4];
@@ -2035,18 +2353,16 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_stop_and_check(int Port, char *getbu @@ -2035,18 +2353,16 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_stop_and_check(int Port, char *getbu
2035 //回复操作失败 2353 //回复操作失败
2036 HalSend_type1Send_Reply_Failure(Port, FrameSequence); 2354 HalSend_type1Send_Reply_Failure(Port, FrameSequence);
2037 } 2355 }
2038 -  
2039 -#endif  
2040 2356
2041 - //3、调整接收模式为音频文件传输  
2042 - HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(Port, JZ_FLAGCODE_OFF);  
2043 - JZSDK_LOG_INFO("一共传输了 %d字节\n",HalRecvDataLen);  
2044 - HalRecvDataLen = 0; 2357 +#else
  2358 + ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2359 + JZSDK_LOG_ERROR("非喊话器不支持opus传输");
  2360 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2361 +#endif
2045 2362
2046 return ret; 2363 return ret;
2047 } 2364 }
2048 2365
2049 -  
2050 /********* 2366 /*********
2051 * 2367 *
2052 * opus播放 2368 * opus播放
@@ -2057,27 +2373,150 @@ static T_JZsdkReturnCode RecvDeal_OpusPlay(int Port, char *getbuf) @@ -2057,27 +2373,150 @@ static T_JZsdkReturnCode RecvDeal_OpusPlay(int Port, char *getbuf)
2057 { 2373 {
2058 JZSDK_LOG_INFO("%s,opus播放",JZsdk_DefineCode_GetPortName(Port)); 2374 JZSDK_LOG_INFO("%s,opus播放",JZsdk_DefineCode_GetPortName(Port));
2059 2375
2060 - //获取帧的序列号  
2061 - int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 2376 + //获取帧的序列号
  2377 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  2378 +
  2379 + //获取是否处于opus传输中的模式
  2380 + if (OpusFile_GetSaveFlag() == JZ_FLAGCODE_ON)
  2381 + {
  2382 + JZSDK_LOG_ERROR("禁止播放opus,当前正处于录入中");
  2383 + //回复操作失败
  2384 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2385 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2386 + }
  2387 +
  2388 + //获取命令
  2389 + int Mode = getbuf[9];
  2390 + if (Mode == 0)
  2391 + {
  2392 + UIcontrol_Opus_PlayFixedFile(Port);
  2393 +
  2394 + //回复操作成功
  2395 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  2396 + }
  2397 + else if (Mode == 1)
  2398 + {
  2399 +
  2400 + }
  2401 +
  2402 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  2403 +}
  2404 +
  2405 +/**********************************
  2406 + *
  2407 + * opus列表查询
  2408 + *
  2409 + *
  2410 + * **********************************/
  2411 +static T_JZsdkReturnCode RecvDeal_Get_OpusList(int Port, char *getbuf)
  2412 +{
  2413 + T_JZsdkReturnCode ret;
  2414 +
  2415 + JZSDK_LOG_INFO("%s,opus列表查询",JZsdk_DefineCode_GetPortName(Port));
  2416 +
  2417 + //获取帧的序列号
  2418 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  2419 +
  2420 +#ifdef MEGAPHONE_CONFIG_STATUS_ON
  2421 +
  2422 + //刷新opus列表
  2423 + OpusFile_FlushList();
  2424 +
  2425 + //获取opus总数
  2426 + int OpusFileCount = OpusFile_GetListNum();
  2427 +
  2428 + //注册一个opus数组
  2429 + unsigned char **MusicName = (unsigned char **)malloc(OpusFileCount * sizeof(unsigned char*));
  2430 + if (MusicName == NULL)
  2431 + {
  2432 + //回复操作失败
  2433 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2434 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2435 + }
  2436 +
  2437 + //注册一个歌曲名字长度的数组
  2438 + int *MusicNameLength = (int *)malloc(OpusFileCount * sizeof(int));
  2439 + if (MusicNameLength == NULL)
  2440 + {
  2441 + free(MusicName);
  2442 + //回复操作失败
  2443 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2444 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2445 + }
  2446 +
  2447 + //为每一首opus分配内存
  2448 + for (int i = 0; i < OpusFileCount; i++)
  2449 + {
  2450 + MusicName[i] = (unsigned char*)malloc(128 * sizeof(unsigned char));
  2451 + if (MusicName[i] == NULL)
  2452 + {
  2453 + // 内存分配失败,需要释放之前分配的内存
  2454 + for (int j = 0; j < i; j++)
  2455 + {
  2456 + free(MusicName[j]);
  2457 + }
  2458 + free(MusicNameLength);
  2459 + free(MusicName);
  2460 +
  2461 + //回复操作失败
  2462 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2463 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2464 + }
  2465 +
  2466 + memset(MusicName[i], 0, 128 * sizeof(unsigned char));
  2467 +
  2468 + //如果成功分配内存,则写入名字
  2469 + Megaphone_OpusFile_GetAudioNameByIndex(i, MusicName[i], &MusicNameLength[i]);
  2470 + }
  2471 +
  2472 + JZSDK_LOG_DEBUG("opus列表取出完成");
  2473 +
  2474 + //发送开始帧
  2475 + ret = HalSend_type1Send_Send_OpusList_Start(Port, FrameSequence, OpusFileCount);
2062 2476
2063 - T_JZsdkReturnCode ret = HalRecv_tpye1_RecvDeal_UartTransmodeDecide();  
2064 - if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) 2477 + for (int i = 0; i < OpusFileCount; i++)
2065 { 2478 {
2066 - //回复操作失败  
2067 - HalSend_type1Send_Reply_Failure(Port, FrameSequence);  
2068 - JZSDK_LOG_ERROR("opus播放失败,存在传输模式打开中");  
2069 - return ret;  
2070 - } 2479 + //获取歌曲详细信息
  2480 + struct AudioMange_audio_struct AudioDetailMessage;
  2481 + memset(&AudioDetailMessage, 0, sizeof(struct AudioMange_audio_struct));
  2482 + ret = OpusFile_GetAudioInfo(MusicName[i], MusicNameLength[i],&AudioDetailMessage);
  2483 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  2484 + {
  2485 + //回复操作失败
  2486 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
2071 2487
2072 - UIcontrol_Opus_PlayFixedFile(Port); 2488 + continue;
  2489 + }
2073 2490
2074 - //回复操作成功  
2075 - HalSend_type1Send_Reply_Success(Port, FrameSequence); 2491 + //发送opus列表
  2492 + ret = HalSend_type1Send_Send_OpusList_Trans(Port, FrameSequence, AudioDetailMessage.FileName, AudioDetailMessage.FileNameLen, AudioDetailMessage.FileSize, AudioDetailMessage.Time);
  2493 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  2494 + {
  2495 + //回复操作失败
  2496 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
2076 2497
2077 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
2078 -} 2498 + continue;
  2499 + }
  2500 + }
2079 2501
  2502 + //释放存储的数据
  2503 + for (int i = 0; i < OpusFileCount; i++)
  2504 + {
  2505 + free(MusicName[i]);
  2506 + }
  2507 +
  2508 + free(MusicNameLength);
  2509 + free(MusicName);
  2510 +
  2511 + //发送结束帧
  2512 + ret = HalSend_type1Send_Send_OpusList_Stop(Port, FrameSequence);
2080 2513
  2514 +#else
  2515 + JZSDK_LOG_ERROR("非喊话器不支持opus列表");
  2516 + //回复操作失败
  2517 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2518 +#endif
  2519 +}
2081 2520
2082 /********* 2521 /*********
2083 * 2522 *
@@ -2087,24 +2526,13 @@ static T_JZsdkReturnCode RecvDeal_OpusPlay(int Port, char *getbuf) @@ -2087,24 +2526,13 @@ static T_JZsdkReturnCode RecvDeal_OpusPlay(int Port, char *getbuf)
2087 **********/ 2526 **********/
2088 static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_start(int Port, char *getbuf) 2527 static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_start(int Port, char *getbuf)
2089 { 2528 {
  2529 + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  2530 +
2090 JZSDK_LOG_INFO("%s,开启opus实时喊话功能",JZsdk_DefineCode_GetPortName(Port)); 2531 JZSDK_LOG_INFO("%s,开启opus实时喊话功能",JZsdk_DefineCode_GetPortName(Port));
2091 2532
2092 //获取帧的序列号 2533 //获取帧的序列号
2093 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 2534 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
2094 2535
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倍 2536 //2、获取码率倍率 默认8k*1倍
2109 int RateMagnification = (int)getbuf[9]; 2537 int RateMagnification = (int)getbuf[9];
2110 int Rate; 2538 int Rate;
@@ -2120,11 +2548,17 @@ static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_start(int Port, char *getbu @@ -2120,11 +2548,17 @@ static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_start(int Port, char *getbu
2120 2548
2121 //3、打开实时语音模式 2549 //3、打开实时语音模式
2122 #ifdef MEGAPHONE_CONFIG_STATUS_ON 2550 #ifdef MEGAPHONE_CONFIG_STATUS_ON
2123 - Megaphone_RealTimeVoice_Start(Rate); 2551 + ret = Megaphone_RealTimeVoice_Start(Rate);
2124 #endif 2552 #endif
2125 2553
2126 - //4、通知成功打开语音发送模式  
2127 - HalSend_type1Send_Reply_Success(Port, FrameSequence); 2554 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  2555 + {
  2556 + HalSend_type1Send_Reply_Success(Port, FrameSequence);
  2557 + }
  2558 + else
  2559 + {
  2560 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2561 + }
2128 2562
2129 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 2563 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
2130 } 2564 }
@@ -2138,7 +2572,7 @@ static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_start(int Port, char *getbu @@ -2138,7 +2572,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) 2572 static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_LimitTransmission(int Port, char *getbuf, int len)
2139 { 2573 {
2140 2574
2141 - T_JZsdkReturnCode ret; 2575 + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
2142 2576
2143 //获取帧的序列号 2577 //获取帧的序列号
2144 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 2578 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
@@ -2152,23 +2586,18 @@ static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_LimitTransmission(int Port, @@ -2152,23 +2586,18 @@ static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_LimitTransmission(int Port,
2152 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 2586 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
2153 } 2587 }
2154 2588
2155 - //判断是否是opus实时语音传输模式  
2156 - if (HalRecvMode != JZ_DATA_TRANS_TYPE_REAL_TIME_OPUS)  
2157 - {  
2158 - //回复操作失败  
2159 - JZSDK_LOG_ERROR("%s,opus实时语音定长传输失败,未开启实时opus传输模式", JZsdk_DefineCode_GetPortName(Port));  
2160 - HalSend_type1Send_Reply_Failure(Port, FrameSequence);  
2161 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
2162 - }  
2163 -  
2164 - HalRecvDataLen += DataLen;  
2165 - JZSDK_LOG_DEBUG("%s,传输opus定长语音传输中 长度:%d,总长度:%d",JZsdk_DefineCode_GetPortName(Port), DataLen, HalRecvDataLen); 2589 + JZSDK_LOG_DEBUG("%s,传输opus定长语音传输中 长度:%d",JZsdk_DefineCode_GetPortName(Port), DataLen);
2166 2590
2167 //传输数据接口 2591 //传输数据接口
2168 #ifdef MEGAPHONE_CONFIG_STATUS_ON 2592 #ifdef MEGAPHONE_CONFIG_STATUS_ON
2169 ret = Megaphone_RealTimeVoice_Trans(getbuf+9, DataLen); 2593 ret = Megaphone_RealTimeVoice_Trans(getbuf+9, DataLen);
2170 #endif 2594 #endif
2171 2595
  2596 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  2597 + {
  2598 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  2599 + }
  2600 +
2172 return ret; 2601 return ret;
2173 } 2602 }
2174 2603
@@ -2188,19 +2617,6 @@ static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_stop(int Port, char *getbuf @@ -2188,19 +2617,6 @@ static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_stop(int Port, char *getbuf
2188 //获取帧的序列号 2617 //获取帧的序列号
2189 int FrameSequence = JZsdk_Get_FrameSequence(getbuf); 2618 int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
2190 2619
2191 - if (HalRecvMode != JZ_DATA_TRANS_TYPE_REAL_TIME_OPUS)  
2192 - {  
2193 - //回复操作失败  
2194 - HalSend_type1Send_Reply_Failure(Port, FrameSequence);  
2195 - JZSDK_LOG_ERROR("关闭opus实时语音发送功能失败,opus实时语音发送功能未开始,无法关闭");  
2196 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
2197 - }  
2198 -  
2199 - //1、修改接收模式  
2200 - HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(Port, JZ_FLAGCODE_OFF);  
2201 - JZSDK_LOG_INFO("一共播放了:%d的内容", HalRecvDataLen);  
2202 - HalRecvDataLen = 0;  
2203 -  
2204 //2、关闭实时语音模式 2620 //2、关闭实时语音模式
2205 #ifdef MEGAPHONE_CONFIG_STATUS_ON 2621 #ifdef MEGAPHONE_CONFIG_STATUS_ON
2206 ret = Megaphone_RealTimeVoice_Close(); 2622 ret = Megaphone_RealTimeVoice_Close();
@@ -2604,6 +3020,185 @@ static T_JZsdkReturnCode RecvDeal_Checkstatus_OutPutPower(int Port, char *getbuf @@ -2604,6 +3020,185 @@ static T_JZsdkReturnCode RecvDeal_Checkstatus_OutPutPower(int Port, char *getbuf
2604 return ret; 3020 return ret;
2605 } 3021 }
2606 3022
  3023 +
  3024 +
  3025 +
  3026 +
  3027 +
  3028 +
  3029 +
  3030 +
  3031 +/*******************************************************************************************************************************
  3032 + *
  3033 + * 升级部分
  3034 + *
  3035 + * *******************************************************************************************************************************/
  3036 +
  3037 +/*********
  3038 + *
  3039 + * 准备升级
  3040 + *
  3041 +**********/
  3042 +static T_JZsdkReturnCode RecvDeal_Upgrade_Prepare(int Port, char *getbuf)
  3043 +{
  3044 + T_JZsdkReturnCode ret;
  3045 +
  3046 + JZSDK_LOG_INFO("%s,准备升级",JZsdk_DefineCode_GetPortName(Port));
  3047 +
  3048 + //获取帧的序列号
  3049 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  3050 +
  3051 + int status = 0;
  3052 + Upgrade_GetStatus(&status);
  3053 +
  3054 + //回复升级的准备状态
  3055 + HalSend_type1Send_Reply_ReadyForUpdate(Port, FrameSequence);
  3056 +
  3057 + return ret;
  3058 +}
  3059 +
  3060 +
  3061 +/*********
  3062 + *
  3063 + * 升级校验码
  3064 + *
  3065 +**********/
  3066 +static T_JZsdkReturnCode RecvDeal_Upgrade_SendCheckCode(int Port, char *getbuf)
  3067 +{
  3068 + T_JZsdkReturnCode ret;
  3069 +
  3070 + JZSDK_LOG_INFO("%s,升级校验码",JZsdk_DefineCode_GetPortName(Port));
  3071 +
  3072 + //获取帧的序列号
  3073 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  3074 +
  3075 + //解析出校验码
  3076 + unsigned char CheckCode[32];
  3077 + memcpy(CheckCode, getbuf + 9, 32);
  3078 +
  3079 + //将校验码放置到升级模块
  3080 + ret = Upgrade_PackageCheckCodeSave(CheckCode, JZSDK_CHECK_SUM_TYPE_MD5, 32);
  3081 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  3082 + {
  3083 + //回复校验码已收到
  3084 + HalSend_type1Send_Reply_UpgradeHaveRecvCheckCode(Port, 1);
  3085 + }
  3086 + else
  3087 + {
  3088 + //回复校验码已收到
  3089 + HalSend_type1Send_Reply_UpgradeHaveRecvCheckCode(Port, 0);
  3090 + }
  3091 +
  3092 + return ret;
  3093 +}
  3094 +
  3095 +
  3096 +/*********
  3097 + *
  3098 + * 数据传输开始
  3099 + *
  3100 +**********/
  3101 +static T_JZsdkReturnCode RecvDeal_Upgrade_Start(int Port, char *getbuf)
  3102 +{
  3103 + T_JZsdkReturnCode ret;
  3104 +
  3105 + JZSDK_LOG_INFO("%s,数据传输开始",JZsdk_DefineCode_GetPortName(Port));
  3106 +
  3107 + //获取帧的序列号
  3108 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  3109 +
  3110 + ret = Upgrade_PackageDownload_Start();
  3111 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  3112 + {
  3113 + //回复开始文件发送
  3114 + HalSend_type1Send_Reply_UpgradeStart(Port);
  3115 + }
  3116 + else
  3117 + {
  3118 + //回复开始文件发送失败
  3119 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  3120 + }
  3121 +
  3122 + return ret;
  3123 +}
  3124 +
  3125 +
  3126 +/*********
  3127 + *
  3128 + * 数据传输中
  3129 + *
  3130 +**********/
  3131 +static T_JZsdkReturnCode RecvDeal_Upgrade_Trans(int Port, char *getbuf)
  3132 +{
  3133 + T_JZsdkReturnCode ret;
  3134 +
  3135 + JZSDK_LOG_INFO("%s,数据传输中",JZsdk_DefineCode_GetPortName(Port));
  3136 +
  3137 + //获取帧的序列号
  3138 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  3139 +
  3140 + //解析数据长度
  3141 + int FrameLength = JZsdk_Get_FrameLength(getbuf);
  3142 + int BufLen = FrameLength - 8 -2;
  3143 +
  3144 + ret = Upgrade_PackageDownload_Trans(&getbuf[9], BufLen);
  3145 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  3146 + {
  3147 + //回复数据传输失败
  3148 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  3149 + }
  3150 +
  3151 + return ret;
  3152 +}
  3153 +
  3154 +
  3155 +/*********
  3156 + *
  3157 + * 数据传输结束
  3158 + *
  3159 +**********/
  3160 +static T_JZsdkReturnCode RecvDeal_Upgrade_End(int Port, char *getbuf)
  3161 +{
  3162 + T_JZsdkReturnCode ret;
  3163 +
  3164 + JZSDK_LOG_INFO("%s,数据传输结束",JZsdk_DefineCode_GetPortName(Port));
  3165 +
  3166 + //获取帧的序列号
  3167 + int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
  3168 +
  3169 + ret = Upgrade_PackageDownload_Stop();
  3170 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  3171 + {
  3172 + //回复数据传输失败
  3173 + HalSend_type1Send_Reply_Failure(Port, FrameSequence);
  3174 + return ret;
  3175 + }
  3176 + else
  3177 + {
  3178 + //回复结束文件传输
  3179 + HalSend_type1Send_Reply_UpgradeEnd(Port);
  3180 + }
  3181 +
  3182 + //回复完成后,开始校验
  3183 + ret = Upgrade_PackageCheck();
  3184 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  3185 + {
  3186 + HalSend_type1Send_Reply_UpgradeCheckResult(Port, 1);
  3187 + return ret;
  3188 + }
  3189 +
  3190 + //回复校验成功
  3191 + HalSend_type1Send_Reply_UpgradeCheckResult(Port, 0);
  3192 +
  3193 + //开始升级
  3194 + Upgrade_PackageUpgrade();
  3195 +
  3196 + return ret;
  3197 +}
  3198 +
  3199 +
  3200 +
  3201 +
2607 /******************************************************************************************************************************* 3202 /*******************************************************************************************************************************
2608 * 3203 *
2609 * 警灯部分 3204 * 警灯部分
@@ -3311,8 +3906,31 @@ static T_JZsdkReturnCode RecvDeal_Checkstatus_GimbalLinkage(int Port, char *getb @@ -3311,8 +3906,31 @@ static T_JZsdkReturnCode RecvDeal_Checkstatus_GimbalLinkage(int Port, char *getb
3311 return ret; 3906 return ret;
3312 } 3907 }
3313 3908
  3909 +
  3910 +static T_JZTaskHandle g_UartReinit_task = NULL;
  3911 +
  3912 +static void *UartReinit_thread(void *arg)
  3913 +{
  3914 + int *arg_value = (int *)arg;
  3915 +
  3916 + int Port = arg_value[0];
  3917 +
  3918 + int Value[1];
  3919 + Value[0]= arg_value[1];
  3920 +
  3921 +
  3922 + JZsdk_HalPort_ReInit(Port, Value);
  3923 +
  3924 + JZSDK_LOG_INFO("串口重置完毕");
  3925 +
  3926 + free(arg);
  3927 +}
  3928 +
  3929 +
3314 static T_JZsdkReturnCode RecvDeal_UartBitrateChange(int Port, char *getbuf) 3930 static T_JZsdkReturnCode RecvDeal_UartBitrateChange(int Port, char *getbuf)
3315 { 3931 {
  3932 + T_JZsdkOsalHandler *osalHandler = JZsdk_Platform_GetOsalHandler();
  3933 +
3316 JZSDK_LOG_INFO("%s,收到串口比特率修改",JZsdk_DefineCode_GetPortName(Port)); 3934 JZSDK_LOG_INFO("%s,收到串口比特率修改",JZsdk_DefineCode_GetPortName(Port));
3317 3935
3318 //获取帧的序列号 3936 //获取帧的序列号
@@ -3349,8 +3967,14 @@ static T_JZsdkReturnCode RecvDeal_UartBitrateChange(int Port, char *getbuf) @@ -3349,8 +3967,14 @@ static T_JZsdkReturnCode RecvDeal_UartBitrateChange(int Port, char *getbuf)
3349 break; 3967 break;
3350 } 3968 }
3351 3969
3352 - int Value[1] = {BitRate};  
3353 - JZsdk_HalPort_ReInit(Port, Value); 3970 + int *arg = (int *)malloc(sizeof(int) * 2);
  3971 + arg[0] = Port;
  3972 + arg[1] = BitRate;
  3973 +
  3974 + //使用一个线程用于修改比特率
  3975 + osalHandler->TaskCreate("UartReinit_task", UartReinit_thread, 8192, arg, &g_UartReinit_task);
  3976 +
  3977 + JZSDK_LOG_INFO("已创建串口重置线程");
3354 3978
3355 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 3979 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
3356 } 3980 }
@@ -3832,13 +4456,37 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi @@ -3832,13 +4456,37 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi
3832 return 0; 4456 return 0;
3833 break; 4457 break;
3834 4458
  4459 + //音频重命名
  4460 + case JZ_INSCODE_5AFRAME_RENAME_AUDIO:
  4461 + RecvDeal_Rename_Audio(Port,getbuf);
  4462 + return 0;
  4463 + break;
  4464 +
  4465 + //录音重命名
  4466 + case JZ_INSCODE_5AFRAME_RENAME_VOICE_RECORD:
  4467 + RecvDeal_Rename_VoiceRecord(Port,getbuf);
  4468 + return 0;
  4469 + break;
  4470 +
  4471 + //视频重命名
  4472 + case JZ_INSCODE_5AFRAME_RENAME_VIDEO_RECORD:
  4473 + RecvDeal_Rename_VideoRecord(Port,getbuf);
  4474 + return 0;
  4475 + break;
3835 4476
3836 //打开opus传输 4477 //打开opus传输
3837 - case JZ_INSCODE_5AFRAME_OPUS_TRANS_START: 4478 + case JZ_INSCODE_5AFRAME_OPUS_TRANS_START_1:
3838 RecvDeal_OpusTrans_start(Port,getbuf); 4479 RecvDeal_OpusTrans_start(Port,getbuf);
3839 return 0; 4480 return 0;
3840 break; 4481 break;
3841 4482
  4483 +
  4484 + //传输opus文件数据2型
  4485 + case JZ_INSCODE_5AFRAME_OPUS_TRANS_START_2:
  4486 + RecvDeal_OpusTrans_start_2(Port,getbuf);
  4487 + return 0;
  4488 + break;
  4489 +
3842 //传输定长opus文件数据 4490 //传输定长opus文件数据
3843 case JZ_INSCODE_5AFRAME_OPUS_TRANS_LIMIT_TRANSMISSION: 4491 case JZ_INSCODE_5AFRAME_OPUS_TRANS_LIMIT_TRANSMISSION:
3844 RecvDeal_OpusTrans_LimitTransmission(Port,getbuf, len); 4492 RecvDeal_OpusTrans_LimitTransmission(Port,getbuf, len);
@@ -3863,6 +4511,11 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi @@ -3863,6 +4511,11 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi
3863 return 0; 4511 return 0;
3864 break; 4512 break;
3865 4513
  4514 + //获取opus列表
  4515 + case JZ_INSCODE_5AFRAME_OPUS_GETOPUSLIST:
  4516 + RecvDeal_Get_OpusList(Port,getbuf);
  4517 + return 0;
  4518 + break;
3866 4519
3867 //开启opus实时喊话 4520 //开启opus实时喊话
3868 case JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_START: 4521 case JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_START:
@@ -3922,6 +4575,17 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi @@ -3922,6 +4575,17 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi
3922 return 0; 4575 return 0;
3923 break; 4576 break;
3924 4577
  4578 + //开关播放时间回传
  4579 + case JZ_INSCODE_5AFRAME_CURRENT_PLAY_TIME:
  4580 + RecvDeal_Current_Play_Time(Port,getbuf);
  4581 + return 0;
  4582 + break;
  4583 +
  4584 + //检查是否开启播放时间回传
  4585 + case JZ_INSCODE_5AFRAME_CHECKSTATUS_CURRENT_PLAYTIME:
  4586 + RecvDeal_CheckStatus_CurrentPlayTime(Port,getbuf);
  4587 + return 0;
  4588 + break;
3925 4589
3926 //音频列表获取 4590 //音频列表获取
3927 case JZ_INSCODE_5AFRAME_AUDIO_GETMUSICLIST: 4591 case JZ_INSCODE_5AFRAME_AUDIO_GETMUSICLIST:
@@ -3998,6 +4662,34 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi @@ -3998,6 +4662,34 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi
3998 4662
3999 4663
4000 4664
  4665 + //升级部分
  4666 +
  4667 + //准备升级
  4668 + case JZ_INSCODE_5AFRAME_UPGRADE_PERPARE:
  4669 + RecvDeal_Upgrade_Prepare(Port,getbuf);
  4670 + break;
  4671 +
  4672 + //升级校验码
  4673 + case JZ_INSCODE_5AFRAME_UPGRADE_SEND_CHECKCODE:
  4674 + RecvDeal_Upgrade_SendCheckCode(Port,getbuf);
  4675 + break;
  4676 +
  4677 + //数据传输开始
  4678 + case JZ_INSCODE_5AFRAME_UPGRADE_STRAT:
  4679 + RecvDeal_Upgrade_Start(Port,getbuf);
  4680 + break;
  4681 +
  4682 + //数据传输中
  4683 + case JZ_INSCODE_5AFRAME_UPGRADE_TRANS:
  4684 + RecvDeal_Upgrade_Trans(Port,getbuf);
  4685 + break;
  4686 +
  4687 + //数据传输结束
  4688 + case JZ_INSCODE_5AFRAME_UPGRADE_END:
  4689 + RecvDeal_Upgrade_End(Port,getbuf);
  4690 + break;
  4691 +
  4692 +
4001 /******************************************************************************************************************************* 4693 /*******************************************************************************************************************************
4002 * 4694 *
4003 * 5B类部分 4695 * 5B类部分
@@ -4293,9 +4985,6 @@ static T_JZsdkReturnCode HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(int Port, in @@ -4293,9 +4985,6 @@ static T_JZsdkReturnCode HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(int Port, in
4293 static T_JZsdkReturnCode HalRecv_tpye1_RecvDeal_UartTransmodeDecide() 4985 static T_JZsdkReturnCode HalRecv_tpye1_RecvDeal_UartTransmodeDecide()
4294 { 4986 {
4295 if ((HalRecvMode == JZ_DATA_TRANS_TYPE_REAL_TIME_MP2 ) //mp2实时语音传输模式 4987 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无限制传输模式) 4988 || (HalRecvMode == JZ_DATA_TRANS_TYPE_TTS)) //TTS无限制传输模式)
4300 { 4989 {
4301 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 4990 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,7 +82,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_PowerStatus(int Uartport, int FrameSeque @@ -82,7 +82,7 @@ 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 }
@@ -102,7 +102,7 @@ T_JZsdkReturnCode HalSend_type1Send_Ask_HeartBeatStatus(int Uartport , int Frame @@ -102,7 +102,7 @@ T_JZsdkReturnCode HalSend_type1Send_Ask_HeartBeatStatus(int Uartport , int Frame
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,7 @@ T_JZsdkReturnCode HalSend_type1Send_DeviceMessage(int UartPort, int FrameSequenc @@ -326,7 +326,7 @@ 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 } 330 }
331 331
332 332
@@ -457,7 +457,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_AudioList_Start(int Uartport, int Frame @@ -457,7 +457,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_AudioList_Start(int Uartport, int Frame
457 sendbuf[9] = music_sum; 457 sendbuf[9] = music_sum;
458 458
459 //发送帧 459 //发送帧
460 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 0); 460 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
461 461
462 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 462 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
463 } 463 }
@@ -476,7 +476,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_AudioList_Stop(int Uartport, int FrameS @@ -476,7 +476,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_AudioList_Stop(int Uartport, int FrameS
476 //写入数据 476 //写入数据
477 sendbuf[6] = FrameSequence; //帧序列 477 sendbuf[6] = FrameSequence; //帧序列
478 478
479 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 0); 479 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
480 } 480 }
481 481
482 //发送歌曲列表Ⅱ型 482 //发送歌曲列表Ⅱ型
@@ -514,7 +514,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_AudioList_2(int Uartport, int FrameSequ @@ -514,7 +514,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_AudioList_2(int Uartport, int FrameSequ
514 sendbuf[send_buf_len-1] = 0x23; 514 sendbuf[send_buf_len-1] = 0x23;
515 515
516 //3、发送帧 516 //3、发送帧
517 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 0); 517 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
518 518
519 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 519 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
520 } 520 }
@@ -542,7 +542,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_AudioDetailMessage(int Uartport, int Fr @@ -542,7 +542,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_AudioDetailMessage(int Uartport, int Fr
542 sendbuf[send_buf_len-1] = 0x23; 542 sendbuf[send_buf_len-1] = 0x23;
543 543
544 //3、发送帧 544 //3、发送帧
545 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 545 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
546 546
547 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 547 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
548 } 548 }
@@ -560,7 +560,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_PlayStatus_end(int Uartport) @@ -560,7 +560,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_PlayStatus_end(int Uartport)
560 //2、写入数据 560 //2、写入数据
561 561
562 //3、发送帧 562 //3、发送帧
563 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 563 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
564 } 564 }
565 565
566 //发送播放状态帧 566 //发送播放状态帧
@@ -593,7 +593,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_PlayStatus(int Uartport ,int num) @@ -593,7 +593,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_PlayStatus(int Uartport ,int num)
593 sendbuf[9] = (char)num; 593 sendbuf[9] = (char)num;
594 594
595 //3、发送帧 595 //3、发送帧
596 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 596 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
597 } 597 }
598 598
599 //回复当前播放的歌曲名字 599 //回复当前播放的歌曲名字
@@ -634,7 +634,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_Volume(int Uartport ,int num) @@ -634,7 +634,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_Volume(int Uartport ,int num)
634 sendbuf[9] = (char)num; 634 sendbuf[9] = (char)num;
635 635
636 //3、发送帧 636 //3、发送帧
637 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 637 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
638 638
639 } 639 }
640 640
@@ -657,7 +657,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_SoftVersion(int Uartport ,char majorVe @@ -657,7 +657,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_SoftVersion(int Uartport ,char majorVe
657 sendbuf[12] = debugVersion; 657 sendbuf[12] = debugVersion;
658 658
659 //3、发送帧 659 //3、发送帧
660 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 660 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
661 } 661 }
662 662
663 //发送循环状态 663 //发送循环状态
@@ -675,7 +675,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_LoopPlayStatus(int Uartport ,int statu @@ -675,7 +675,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_LoopPlayStatus(int Uartport ,int statu
675 sendbuf[9] = status; 675 sendbuf[9] = status;
676 676
677 //3、发送帧 677 //3、发送帧
678 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 678 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
679 679
680 } 680 }
681 681
@@ -694,7 +694,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_TTS_tone(int Uartport ,int tone) @@ -694,7 +694,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_TTS_tone(int Uartport ,int tone)
694 sendbuf[9] = tone; 694 sendbuf[9] = tone;
695 695
696 //3、发送帧 696 //3、发送帧
697 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 697 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
698 } 698 }
699 699
700 //发送语速 700 //发送语速
@@ -712,7 +712,44 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_TTS_speed(int Uartport ,int speed) @@ -712,7 +712,44 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_TTS_speed(int Uartport ,int speed)
712 sendbuf[9] = speed; 712 sendbuf[9] = speed;
713 713
714 //3、发送帧 714 //3、发送帧
715 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 715 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
  716 +}
  717 +
  718 +//发送当前播放时间状态
  719 +T_JZsdkReturnCode HalSend_type1Send_Reply_CurrentPlayTimeStatus(int Uartport ,int mode)
  720 +{
  721 + printf("发送当前播放时间状态帧\n");
  722 +
  723 + unsigned char sendbuf[256];
  724 + int send_buf_len;
  725 +
  726 + //1、获取帧样板
  727 + JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_CHECKSTATUS_CURRENT_PLAYTIME, sendbuf, &send_buf_len);
  728 +
  729 + //2、写入数据
  730 + sendbuf[9] = mode;
  731 +
  732 + //3、发送帧
  733 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
  734 +}
  735 +
  736 +//发送当前播放时间
  737 +T_JZsdkReturnCode HalSend_type1Send_Reply_CurrentPlayTime(int Uartport ,int time)
  738 +{
  739 + printf("发送当前播放时间\n");
  740 +
  741 + unsigned char sendbuf[256];
  742 + int send_buf_len;
  743 +
  744 + //1、获取帧样板
  745 + JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_CURRENT_PLAY_TIME, sendbuf, &send_buf_len);
  746 +
  747 + //2、写入数据
  748 + sendbuf[9] = time >> 8;
  749 + sendbuf[10] = time & 0xff;
  750 +
  751 + //3、发送帧
  752 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
716 } 753 }
717 754
718 /************* 755 /*************
@@ -734,7 +771,87 @@ T_JZsdkReturnCode HalSend_type1Send_OpusDecodeStatus(int Uartport,int value) @@ -734,7 +771,87 @@ T_JZsdkReturnCode HalSend_type1Send_OpusDecodeStatus(int Uartport,int value)
734 sendbuf[9] = value; 771 sendbuf[9] = value;
735 772
736 //3、发送帧 773 //3、发送帧
737 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 774 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
  775 +}
  776 +
  777 +
  778 +//发送opus列表开始帧
  779 +T_JZsdkReturnCode HalSend_type1Send_Send_OpusList_Start(int Uartport, int FrameSequence, int music_sum)
  780 +{
  781 + printf("发送opus开始列表帧\n");
  782 +
  783 + unsigned char sendbuf[128];
  784 + int send_buf_len;
  785 +
  786 + //获取帧样板
  787 + memset(sendbuf,0,sizeof(sendbuf));
  788 + JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_OPUSLIST_START , sendbuf, &send_buf_len);
  789 + //写入数据
  790 + sendbuf[6] = FrameSequence; //帧序列
  791 + sendbuf[9] = music_sum;
  792 +
  793 + //发送帧
  794 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
  795 +
  796 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  797 +}
  798 +
  799 +
  800 +//发送opus列表
  801 +T_JZsdkReturnCode HalSend_type1Send_Send_OpusList_Trans(int Uartport, int FrameSequence, unsigned char *name, unsigned int namelen, unsigned int Filesize, unsigned int Time)
  802 +{
  803 + printf("发送opus列表 %s %d %d %d\n",name, namelen, Filesize, Time);
  804 + unsigned char sendbuf[400];
  805 + int send_buf_len;
  806 +
  807 + //1、获取帧样板
  808 + JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_OPUSLIST_TRANS , sendbuf, &send_buf_len);
  809 +
  810 + //写入文件名
  811 + sendbuf[9] = namelen;
  812 + memcpy(&sendbuf[10], name, namelen);
  813 +
  814 + //文件大小
  815 + sendbuf[10+namelen] = (Filesize >> 24) & 0xFF;
  816 + sendbuf[10+namelen+1] = (Filesize >> 16) & 0xFF;
  817 + sendbuf[10+namelen+2] = (Filesize >> 8) & 0xFF;
  818 + sendbuf[10+namelen+3] = Filesize & 0xFF;
  819 +
  820 + //播放时间
  821 + sendbuf[10+namelen+4] = (Time >> 8) & 0xFF;
  822 + sendbuf[10+namelen+5] = Time & 0xFF;
  823 +
  824 + //2、写入数据
  825 + send_buf_len = 9 + 1 + namelen + 4 + 2 + 2;
  826 +
  827 + sendbuf[3] = (unsigned char)( (send_buf_len >> 8) & 0xFF); //帧长度
  828 + sendbuf[4] = (unsigned char)(send_buf_len & 0xFF); //帧长度
  829 + sendbuf[6] = FrameSequence; //帧序列
  830 +
  831 + sendbuf[send_buf_len-2] = 0x00;
  832 + sendbuf[send_buf_len-1] = 0x23;
  833 +
  834 + //3、发送帧
  835 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
  836 +
  837 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  838 +}
  839 +
  840 +//发送opus列表结束帧
  841 +T_JZsdkReturnCode HalSend_type1Send_Send_OpusList_Stop(int Uartport, int FrameSequence)
  842 +{
  843 + printf("发送opus结束列表帧\n");
  844 +
  845 + unsigned char sendbuf[128];
  846 + int send_buf_len;
  847 +
  848 + //获取帧样板
  849 + memset(sendbuf,0,sizeof(sendbuf));
  850 + JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_OPUSLIST_END , sendbuf, &send_buf_len);
  851 + //写入数据
  852 + sendbuf[6] = FrameSequence; //帧序列
  853 +
  854 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
738 } 855 }
739 856
740 /**************************************************************************************************************************************************** 857 /****************************************************************************************************************************************************
@@ -766,7 +883,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalPitchAngle(int Uartport ,int ang @@ -766,7 +883,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalPitchAngle(int Uartport ,int ang
766 sendbuf[11] = (char)(angle & 255); 883 sendbuf[11] = (char)(angle & 255);
767 884
768 //3、发送帧 885 //3、发送帧
769 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 886 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
770 } 887 }
771 888
772 //设置当前云台角度 889 //设置当前云台角度
@@ -794,7 +911,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_GimbalPitchAngle(int Uartport ,int angle @@ -794,7 +911,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_GimbalPitchAngle(int Uartport ,int angle
794 sendbuf[11] = (angle & 0xff); 911 sendbuf[11] = (angle & 0xff);
795 912
796 //3、发送帧 913 //3、发送帧
797 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 914 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
798 } 915 }
799 916
800 //查询云台角度 917 //查询云台角度
@@ -811,7 +928,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalAngle(int Uartport ,int Fr @@ -811,7 +928,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalAngle(int Uartport ,int Fr
811 sendbuf[6] = FrameSequence; 928 sendbuf[6] = FrameSequence;
812 929
813 //3、发送帧 930 //3、发送帧
814 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 931 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
815 } 932 }
816 933
817 //微调云台pitch 934 //微调云台pitch
@@ -839,7 +956,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_GimbalFineTuningPitch(int Uartport, int @@ -839,7 +956,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_GimbalFineTuningPitch(int Uartport, int
839 sendbuf[11] = (PitchFineTuning & 0xff); 956 sendbuf[11] = (PitchFineTuning & 0xff);
840 957
841 //3、发送帧 958 //3、发送帧
842 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 959 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
843 } 960 }
844 961
845 //查询云台角度微调值 962 //查询云台角度微调值
@@ -856,7 +973,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalFineTuningPitch(int Uartpo @@ -856,7 +973,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalFineTuningPitch(int Uartpo
856 sendbuf[6] = FrameSequence; //帧序列 973 sendbuf[6] = FrameSequence; //帧序列
857 974
858 //3、发送帧 975 //3、发送帧
859 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 976 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
860 } 977 }
861 978
862 //回复云台pitch微调值 979 //回复云台pitch微调值
@@ -884,7 +1001,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalFineTuningPitch(int Uartport, in @@ -884,7 +1001,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalFineTuningPitch(int Uartport, in
884 sendbuf[11] = (FineTunigPitch & 0xff); 1001 sendbuf[11] = (FineTunigPitch & 0xff);
885 1002
886 //3、发送帧 1003 //3、发送帧
887 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1004 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
888 } 1005 }
889 1006
890 //设置云台联动 1007 //设置云台联动
@@ -902,7 +1019,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_GimbalLinkageControl(int Uartport,int Fr @@ -902,7 +1019,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_GimbalLinkageControl(int Uartport,int Fr
902 sendbuf[10] = value; 1019 sendbuf[10] = value;
903 1020
904 //3、发送帧 1021 //3、发送帧
905 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1022 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
906 } 1023 }
907 1024
908 //查询云台联动值 1025 //查询云台联动值
@@ -919,7 +1036,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalLinkage(int Uartport,int F @@ -919,7 +1036,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalLinkage(int Uartport,int F
919 sendbuf[6] = FrameSequence; //帧序列 1036 sendbuf[6] = FrameSequence; //帧序列
920 1037
921 //3、发送帧 1038 //3、发送帧
922 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1039 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
923 } 1040 }
924 1041
925 //发送云台联动值 1042 //发送云台联动值
@@ -937,7 +1054,7 @@ T_JZsdkReturnCode HalSend_type1Send_GimbalLinkageControl(int Uartport,int FrameS @@ -937,7 +1054,7 @@ T_JZsdkReturnCode HalSend_type1Send_GimbalLinkageControl(int Uartport,int FrameS
937 sendbuf[10] = value; 1054 sendbuf[10] = value;
938 1055
939 //3、发送帧 1056 //3、发送帧
940 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1057 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
941 } 1058 }
942 1059
943 //发送云台最大最小值帧 1060 //发送云台最大最小值帧
@@ -955,7 +1072,7 @@ T_JZsdkReturnCode HalSend_type1Send_SetGimbalRange(int Uartport,int FrameSequenc @@ -955,7 +1072,7 @@ T_JZsdkReturnCode HalSend_type1Send_SetGimbalRange(int Uartport,int FrameSequenc
955 sendbuf[10] = value; 1072 sendbuf[10] = value;
956 1073
957 //3、发送帧 1074 //3、发送帧
958 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1075 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
959 } 1076 }
960 1077
961 /**************************************************************************************************************************************************** 1078 /****************************************************************************************************************************************************
@@ -979,7 +1096,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_SearchLightFrequency(int Uartport ,int F @@ -979,7 +1096,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_SearchLightFrequency(int Uartport ,int F
979 sendbuf[10] = Frequency; 1096 sendbuf[10] = Frequency;
980 1097
981 //3、发送帧 1098 //3、发送帧
982 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1099 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
983 } 1100 }
984 1101
985 //设置探照灯控制 1102 //设置探照灯控制
@@ -997,7 +1114,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Control(int Uartport,int mode) @@ -997,7 +1114,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Control(int Uartport,int mode)
997 sendbuf[10] = mode; 1114 sendbuf[10] = mode;
998 1115
999 //3、发送帧 1116 //3、发送帧
1000 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1117 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1001 } 1118 }
1002 1119
1003 //设置探照灯亮度 1120 //设置探照灯亮度
@@ -1016,7 +1133,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetLumen(int Uartport, int Left @@ -1016,7 +1133,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetLumen(int Uartport, int Left
1016 sendbuf[10] = RightLumen; 1133 sendbuf[10] = RightLumen;
1017 1134
1018 //3、发送帧 1135 //3、发送帧
1019 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1136 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1020 } 1137 }
1021 1138
1022 //发送 1139 //发送
@@ -1033,7 +1150,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Frequency(int Uartpo @@ -1033,7 +1150,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Frequency(int Uartpo
1033 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_FREQUENCY, sendbuf, &send_buf_len); 1150 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_FREQUENCY, sendbuf, &send_buf_len);
1034 1151
1035 //2、发送帧 1152 //2、发送帧
1036 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1153 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1037 } 1154 }
1038 1155
1039 //查询探照灯亮度 1156 //查询探照灯亮度
@@ -1048,7 +1165,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Lumen(int Uartport) @@ -1048,7 +1165,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Lumen(int Uartport)
1048 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LUMEN, sendbuf, &send_buf_len); 1165 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LUMEN, sendbuf, &send_buf_len);
1049 1166
1050 //2、发送帧 1167 //2、发送帧
1051 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1168 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1052 } 1169 }
1053 1170
1054 //查询探照灯模式 1171 //查询探照灯模式
@@ -1063,7 +1180,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Mode(int Uartport) @@ -1063,7 +1180,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Mode(int Uartport)
1063 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_MODE, sendbuf, &send_buf_len); 1180 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_MODE, sendbuf, &send_buf_len);
1064 1181
1065 //2、发送帧 1182 //2、发送帧
1066 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1183 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1067 } 1184 }
1068 1185
1069 //查询探照灯属性 1186 //查询探照灯属性
@@ -1078,7 +1195,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Attribute(int Uartpo @@ -1078,7 +1195,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Attribute(int Uartpo
1078 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LIGHTATTRIBUTE, sendbuf, &send_buf_len); 1195 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LIGHTATTRIBUTE, sendbuf, &send_buf_len);
1079 1196
1080 //2、发送帧 1197 //2、发送帧
1081 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1198 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1082 } 1199 }
1083 1200
1084 //查询探照灯温度 1201 //查询探照灯温度
@@ -1093,7 +1210,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Temperture(int Uartp @@ -1093,7 +1210,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Temperture(int Uartp
1093 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE, sendbuf, &send_buf_len); 1210 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE, sendbuf, &send_buf_len);
1094 1211
1095 //2、发送帧 1212 //2、发送帧
1096 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1213 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1097 } 1214 }
1098 1215
1099 //开启消息订阅 1216 //开启消息订阅
@@ -1111,7 +1228,114 @@ T_JZsdkReturnCode HalSend_type1Send_MessageSubcription_Control(int Uartport, int @@ -1111,7 +1228,114 @@ T_JZsdkReturnCode HalSend_type1Send_MessageSubcription_Control(int Uartport, int
1111 sendbuf[10] = value; 1228 sendbuf[10] = value;
1112 1229
1113 //3、发送帧 1230 //3、发送帧
1114 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1231 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
  1232 +}
  1233 +
  1234 +/************************************************************************************************************************************************************
  1235 + *
  1236 + * 升级部分
  1237 + *
  1238 + *
  1239 +*******************************************************************************************************************/
  1240 +/*************
  1241 + *
  1242 + * 回复准备升级
  1243 + *
  1244 + * **************/
  1245 +T_JZsdkReturnCode HalSend_type1Send_Reply_ReadyForUpdate(int Uartport, int Mode)
  1246 +{
  1247 + printf("发送回复准备升级\n");
  1248 +
  1249 + unsigned char sendbuf[256];
  1250 + int send_buf_len;
  1251 +
  1252 + //1、获取帧样板
  1253 + JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_UPGRADE_PERPARE, sendbuf, &send_buf_len);
  1254 +
  1255 + sendbuf[9] = Mode;
  1256 +
  1257 + //2、发送帧
  1258 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
  1259 +}
  1260 +
  1261 +/*************
  1262 + *
  1263 + * 回复校验激活码已收到
  1264 + *
  1265 + * **************/
  1266 +T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeHaveRecvCheckCode(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_SEND_CHECKCODE, 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_UpgradeStart(int Uartport)
  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_STRAT, sendbuf, &send_buf_len);
  1296 +
  1297 + //2、发送帧
  1298 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
  1299 +}
  1300 +
  1301 +/*************
  1302 + *
  1303 + * 回复升级传输已结束
  1304 + *
  1305 + * **************/
  1306 +T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeEnd(int Uartport)
  1307 +{
  1308 + printf("回复升级传输已结束\n");
  1309 +
  1310 + unsigned char sendbuf[256];
  1311 + int send_buf_len;
  1312 +
  1313 + //1、获取帧样板
  1314 + JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_UPGRADE_END, sendbuf, &send_buf_len);
  1315 +
  1316 + //2、发送帧
  1317 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
  1318 +}
  1319 +
  1320 +/*************
  1321 + *
  1322 + * 回复升级校验结果
  1323 + *
  1324 + * **************/
  1325 +T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeCheckResult(int Uartport, int status)
  1326 +{
  1327 + printf("回复升级校验结果\n");
  1328 +
  1329 + unsigned char sendbuf[256];
  1330 + int send_buf_len;
  1331 +
  1332 + //1、获取帧样板
  1333 + JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_UPGRADE_CHECKRESULT, sendbuf, &send_buf_len);
  1334 +
  1335 + sendbuf[9] = status;
  1336 +
  1337 + //2、发送帧
  1338 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
1115 } 1339 }
1116 1340
1117 /**************************************************************************************************************************************************** 1341 /****************************************************************************************************************************************************
@@ -1139,7 +1363,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Status(int Uartport,int sta @@ -1139,7 +1363,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Status(int Uartport,int sta
1139 sendbuf[10] = mode; 1363 sendbuf[10] = mode;
1140 1364
1141 //3、发送帧 1365 //3、发送帧
1142 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1366 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1143 } 1367 }
1144 1368
1145 /************* 1369 /*************
@@ -1162,7 +1386,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Color(int Uartport,int colo @@ -1162,7 +1386,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Color(int Uartport,int colo
1162 sendbuf[10] = color2; 1386 sendbuf[10] = color2;
1163 1387
1164 //3、发送帧 1388 //3、发送帧
1165 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1389 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1166 } 1390 }
1167 1391
1168 //查询警灯状态 1392 //查询警灯状态
@@ -1177,7 +1401,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_WarningLightStatus(int Uartport) @@ -1177,7 +1401,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_WarningLightStatus(int Uartport)
1177 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS, sendbuf, &send_buf_len); 1401 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS, sendbuf, &send_buf_len);
1178 1402
1179 //2、发送帧 1403 //2、发送帧
1180 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1404 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1181 } 1405 }
1182 1406
1183 //查询警灯颜色 1407 //查询警灯颜色
@@ -1192,7 +1416,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_WarningLightColor(int Uartport) @@ -1192,7 +1416,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_WarningLightColor(int Uartport)
1192 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR, sendbuf, &send_buf_len); 1416 JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR, sendbuf, &send_buf_len);
1193 1417
1194 //2、发送帧 1418 //2、发送帧
1195 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1419 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1196 } 1420 }
1197 1421
1198 /**************************************************************************************************************************************************** 1422 /****************************************************************************************************************************************************
@@ -1220,7 +1444,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Frequency(int Uartport, int Freq @@ -1220,7 +1444,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Frequency(int Uartport, int Freq
1220 sendbuf[10] = Frequency; 1444 sendbuf[10] = Frequency;
1221 1445
1222 //3、发送帧 1446 //3、发送帧
1223 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1447 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1224 } 1448 }
1225 1449
1226 /************* 1450 /*************
@@ -1242,7 +1466,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Mode(int Uartport, int mode) @@ -1242,7 +1466,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Mode(int Uartport, int mode)
1242 sendbuf[10] = mode; 1466 sendbuf[10] = mode;
1243 1467
1244 //3、发送帧 1468 //3、发送帧
1245 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1469 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1246 } 1470 }
1247 1471
1248 /************* 1472 /*************
@@ -1265,7 +1489,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Lumen(int Uartport,int LeftLumen @@ -1265,7 +1489,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Lumen(int Uartport,int LeftLumen
1265 sendbuf[10] = RightLumen; 1489 sendbuf[10] = RightLumen;
1266 1490
1267 //3、发送帧 1491 //3、发送帧
1268 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1492 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1269 } 1493 }
1270 1494
1271 /************* 1495 /*************
@@ -1288,7 +1512,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Temperature(int Uartport, int Le @@ -1288,7 +1512,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Temperature(int Uartport, int Le
1288 sendbuf[10] = RightTemperature; 1512 sendbuf[10] = RightTemperature;
1289 1513
1290 //3、发送帧 1514 //3、发送帧
1291 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1515 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1292 } 1516 }
1293 1517
1294 1518
@@ -1312,7 +1536,7 @@ T_JZsdkReturnCode HalSend_type1Send_WarningLight_Status(int Uartport, int status @@ -1312,7 +1536,7 @@ T_JZsdkReturnCode HalSend_type1Send_WarningLight_Status(int Uartport, int status
1312 sendbuf[10] = mode; 1536 sendbuf[10] = mode;
1313 1537
1314 //3、发送帧 1538 //3、发送帧
1315 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);} 1539 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);}
1316 1540
1317 /************* 1541 /*************
1318 * 1542 *
@@ -1334,7 +1558,7 @@ T_JZsdkReturnCode HalSend_type1Send_WarningLight_Color(int Uartport, int color1, @@ -1334,7 +1558,7 @@ T_JZsdkReturnCode HalSend_type1Send_WarningLight_Color(int Uartport, int color1,
1334 sendbuf[10] = color2; 1558 sendbuf[10] = color2;
1335 1559
1336 //3、发送帧 1560 //3、发送帧
1337 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1561 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1338 } 1562 }
1339 1563
1340 /************* 1564 /*************
@@ -1356,7 +1580,7 @@ T_JZsdkReturnCode HalSend_type1Send_OutputPowerStatus(int Uartport, int FrameSeq @@ -1356,7 +1580,7 @@ T_JZsdkReturnCode HalSend_type1Send_OutputPowerStatus(int Uartport, int FrameSeq
1356 sendbuf[9] = status; 1580 sendbuf[9] = status;
1357 1581
1358 //3、发送帧 1582 //3、发送帧
1359 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1583 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1360 } 1584 }
1361 1585
1362 /**************************************************************************************************************************************************** 1586 /****************************************************************************************************************************************************
@@ -1380,5 +1604,5 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_CheckSpecialParameters(int Uartport,in @@ -1380,5 +1604,5 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_CheckSpecialParameters(int Uartport,in
1380 sendbuf[10] = value; 1604 sendbuf[10] = value;
1381 1605
1382 //3、发送帧 1606 //3、发送帧
1383 - HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1); 1607 + HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
1384 } 1608 }
@@ -60,6 +60,11 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_MusicName(int Uartport ,char *music_na @@ -60,6 +60,11 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_MusicName(int Uartport ,char *music_na
60 T_JZsdkReturnCode HalSend_type1Send_Reply_Volume(int Uartport ,int num); 60 T_JZsdkReturnCode HalSend_type1Send_Reply_Volume(int Uartport ,int num);
61 T_JZsdkReturnCode HalSend_type1Send_OpusDecodeStatus(int Uartport,int value); 61 T_JZsdkReturnCode HalSend_type1Send_OpusDecodeStatus(int Uartport,int value);
62 62
  63 +T_JZsdkReturnCode HalSend_type1Send_Send_OpusList_Start(int Uartport, int FrameSequence, int music_sum);
  64 +T_JZsdkReturnCode HalSend_type1Send_Send_OpusList_Trans(int Uartport, int FrameSequence, unsigned char *name, unsigned int namelen, unsigned int Filesize, unsigned int Time);
  65 +T_JZsdkReturnCode HalSend_type1Send_Send_OpusList_Stop(int Uartport, int FrameSequence);
  66 +
  67 +
63 T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalPitchAngle(int Uartport ,int angle); 68 T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalPitchAngle(int Uartport ,int angle);
64 T_JZsdkReturnCode HalSend_type1Send_Set_GimbalPitchAngle(int Uartport ,int angle); 69 T_JZsdkReturnCode HalSend_type1Send_Set_GimbalPitchAngle(int Uartport ,int angle);
65 T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalFineTuningPitch(int Uartport, int FrameSequence, int FineTunigPitch); 70 T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalFineTuningPitch(int Uartport, int FrameSequence, int FineTunigPitch);
@@ -76,6 +81,9 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_SoftVersion(int Uartport ,char majorVe @@ -76,6 +81,9 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_SoftVersion(int Uartport ,char majorVe
76 T_JZsdkReturnCode HalSend_type1Send_Reply_LoopPlayStatus(int Uartport ,int status); 81 T_JZsdkReturnCode HalSend_type1Send_Reply_LoopPlayStatus(int Uartport ,int status);
77 T_JZsdkReturnCode HalSend_type1Send_Reply_TTS_tone(int Uartport ,int tone); 82 T_JZsdkReturnCode HalSend_type1Send_Reply_TTS_tone(int Uartport ,int tone);
78 T_JZsdkReturnCode HalSend_type1Send_Reply_TTS_speed(int Uartport ,int speed); 83 T_JZsdkReturnCode HalSend_type1Send_Reply_TTS_speed(int Uartport ,int speed);
  84 +T_JZsdkReturnCode HalSend_type1Send_Reply_CurrentPlayTime(int Uartport ,int time);
  85 +T_JZsdkReturnCode HalSend_type1Send_Reply_CurrentPlayTimeStatus(int Uartport ,int mode);
  86 +
79 87
80 T_JZsdkReturnCode HalSend_type1Send_Set_SearchLightFrequency(int Uartport ,int Frequency); 88 T_JZsdkReturnCode HalSend_type1Send_Set_SearchLightFrequency(int Uartport ,int Frequency);
81 T_JZsdkReturnCode HalSend_type1Send_SearchLight_Control(int Uartport,int mode); 89 T_JZsdkReturnCode HalSend_type1Send_SearchLight_Control(int Uartport,int mode);
@@ -115,6 +123,15 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_WarningLightColor(int Uartport); @@ -115,6 +123,15 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_WarningLightColor(int Uartport);
115 T_JZsdkReturnCode HalSend_type1Send_OutputPowerStatus(int Uartport, int FrameSequence, int status); 123 T_JZsdkReturnCode HalSend_type1Send_OutputPowerStatus(int Uartport, int FrameSequence, int status);
116 124
117 125
  126 +T_JZsdkReturnCode HalSend_type1Send_Reply_ReadyForUpdate(int Uartport, int Mode);
  127 +T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeHaveRecvCheckCode(int Uartport, int Mode);
  128 +T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeStart(int Uartport);
  129 +T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeEnd(int Uartport);
  130 +T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeCheckResult(int Uartport, int status);
  131 +
  132 +
  133 +
  134 +
118 /* Exported functions --------------------------------------------------------*/ 135 /* Exported functions --------------------------------------------------------*/
119 136
120 #ifdef __cplusplus 137 #ifdef __cplusplus
@@ -8,148 +8,218 @@ @@ -8,148 +8,218 @@
8 8
9 #include "JZsdk_uart/JZsdk_Uart.h" 9 #include "JZsdk_uart/JZsdk_Uart.h"
10 10
11 -/******************  
12 - *  
13 - * 用来记录端口使用情况的结构体  
14 - * JZ_FLAGCODE_OFF 关闭  
15 - * JZ_FLAGCODE_ON 开启  
16 - * ********************/  
17 -typedef struct s_JZsdk_Hal_PortUseFlag  
18 -{  
19 - int UartDev_DEV1 ;  
20 - int UartDev_DEV2 ;  
21 - int UartDev_DEV3 ;  
22 - int UartDev_DEV4 ;  
23 - int UartDev_4G ;  
24 - int Data_Dransmisson;  
25 -}s_JZsdk_Hal_PortUseFlag; 11 +static s_JZsdk_Hal_Info *g_HalInfo = NULL;
26 12
27 -static s_JZsdk_Hal_PortUseFlag g_PortUseFlag = {JZ_FLAGCODE_OFF}; 13 +s_JZsdk_Hal_Info *JZsdk_Hal_GetHalInfo()
  14 +{
  15 + return g_HalInfo;
  16 +}
28 17
29 -/**************  
30 - *  
31 - * jzsdk hal的端口使用标志位  
32 - *  
33 - *  
34 - * *********************/  
35 -int JZsdk_HalPort_UseFlag(int PortName) 18 +T_JZsdkReturnCode JZsdk_Hal_Init()
36 { 19 {
37 - if (PortName == UART_DEV_1)  
38 - {  
39 - return g_PortUseFlag.UartDev_DEV1;  
40 - }  
41 - else if (PortName == UART_DEV_2) 20 + T_JZsdkOsalHandler *pOsalHandler = JZsdk_Platform_GetOsalHandler();
  21 +
  22 + if (g_HalInfo == NULL)
42 { 23 {
43 - return g_PortUseFlag.UartDev_DEV2; 24 + g_HalInfo = pOsalHandler->Malloc(sizeof(s_JZsdk_Hal_Info));
44 } 25 }
45 - else if (PortName == UART_DEV_3) 26 +
  27 + //PSDK系列初始化
  28 + for (int i = DEVICE_PSDK; i < UART_4G; i++)
46 { 29 {
47 - return g_PortUseFlag.UartDev_DEV3; 30 + g_HalInfo->HalPort[i].UseFlag = JZ_FLAGCODE_OFF;
  31 + g_HalInfo->HalPort[i].ConnectStatus = JZ_FLAGCODE_OFF;
  32 + g_HalInfo->HalPort[i].HeartBeatStatusSend = JZ_FLAGCODE_OFF;
  33 + g_HalInfo->HalPort[i].PortType = PORT_TYPE_PSDK;
48 } 34 }
49 - else if (PortName == UART_DEV_4) 35 +
  36 + //UART系列初始化
  37 + for (int i = UART_4G; i < USB_DEV_1; i++)
50 { 38 {
51 - return g_PortUseFlag.UartDev_DEV4; 39 + g_HalInfo->HalPort[i].UseFlag = JZ_FLAGCODE_OFF;
  40 + g_HalInfo->HalPort[i].ConnectStatus = JZ_FLAGCODE_OFF;
  41 + g_HalInfo->HalPort[i].HeartBeatStatusSend = JZ_FLAGCODE_OFF;
  42 + g_HalInfo->HalPort[i].PortType = PORT_TYPE_UART;
52 } 43 }
53 - else if (PortName == UART_4G) 44 +
  45 + //USB系列初始化
  46 + for (int i = USB_DEV_1; i < NET_DEV_1; i++)
54 { 47 {
55 - return g_PortUseFlag.UartDev_4G; 48 + g_HalInfo->HalPort[i].UseFlag = JZ_FLAGCODE_OFF;
  49 + g_HalInfo->HalPort[i].ConnectStatus = JZ_FLAGCODE_OFF;
  50 + g_HalInfo->HalPort[i].HeartBeatStatusSend = JZ_FLAGCODE_OFF;
  51 + g_HalInfo->HalPort[i].PortType = PORT_TYPE_USB;
56 } 52 }
57 - else if (PortName == HAL_DATA_TRANSMISSION) 53 +
  54 + //网口系列初始化
  55 + for (int i = NET_DEV_1; i < HAL_DATA_TRANSMISSION; i++)
  56 + {
  57 + g_HalInfo->HalPort[i].UseFlag = JZ_FLAGCODE_OFF;
  58 + g_HalInfo->HalPort[i].ConnectStatus = JZ_FLAGCODE_OFF;
  59 + g_HalInfo->HalPort[i].HeartBeatStatusSend = JZ_FLAGCODE_OFF;
  60 + g_HalInfo->HalPort[i].PortType = PORT_TYPE_NET;
  61 + }
  62 +
  63 + //特殊数据层
  64 + for (int i = HAL_DATA_TRANSMISSION; i < HAL_MAX; i++)
58 { 65 {
59 - return g_PortUseFlag.Data_Dransmisson; 66 + g_HalInfo->HalPort[i].UseFlag = JZ_FLAGCODE_OFF;
  67 + g_HalInfo->HalPort[i].ConnectStatus = JZ_FLAGCODE_OFF;
  68 + g_HalInfo->HalPort[i].HeartBeatStatusSend = JZ_FLAGCODE_OFF;
  69 + g_HalInfo->HalPort[i].PortType = PORT_TYPE_TRANS_DATA;
60 } 70 }
  71 +
  72 + JZSDK_LOG_INFO("JZsdk_Hal_Init Success");
  73 +
  74 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
61 } 75 }
62 76
  77 +
  78 +/**************
  79 + *
  80 + * jzsdk 获取hal的端口使用标志位
  81 + *
  82 + * *********************/
  83 +int JZsdk_HalPort_UseFlag(int PortName)
  84 +{
  85 + return g_HalInfo->HalPort[PortName].UseFlag;
  86 +}
  87 +
  88 +
63 T_JZsdkReturnCode JZsdk_HalPort_SetUseFlag(int PortName,int UseFlag) 89 T_JZsdkReturnCode JZsdk_HalPort_SetUseFlag(int PortName,int UseFlag)
64 { 90 {
65 - if (PortName == UART_DEV_1)  
66 - {  
67 - g_PortUseFlag.UartDev_DEV1 = UseFlag;  
68 - }  
69 - else if (PortName == UART_DEV_2)  
70 - {  
71 - g_PortUseFlag.UartDev_DEV2 = UseFlag;  
72 - }  
73 - else if (PortName == UART_DEV_3)  
74 - {  
75 - g_PortUseFlag.UartDev_DEV3 = UseFlag;  
76 - }  
77 - else if (PortName == UART_DEV_4)  
78 - {  
79 - g_PortUseFlag.UartDev_DEV4 = UseFlag;  
80 - }  
81 - else if (PortName == UART_4G)  
82 - {  
83 - g_PortUseFlag.UartDev_4G = UseFlag;  
84 - }  
85 - else if (PortName == HAL_DATA_TRANSMISSION)  
86 - {  
87 - g_PortUseFlag.Data_Dransmisson = UseFlag; 91 + g_HalInfo->HalPort[PortName].UseFlag = UseFlag;
  92 +
  93 + //将端口添加到已使用端口列表中 或从端口中移除
  94 +
  95 + //如果是要添加进列表中
  96 + if (UseFlag == JZ_FLAGCODE_ON)
  97 + {
  98 + //先检查列表中是否已经存在
  99 + for (int i = 0; i < g_HalInfo->HaveUsePortNum; i++)
  100 + {
  101 + if (g_HalInfo->HaveUsePort[i] == PortName)
  102 + {
  103 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  104 + }
  105 + }
  106 +
  107 + //如果不存在,则添加
  108 + g_HalInfo->HaveUsePort[g_HalInfo->HaveUsePortNum] = PortName;
  109 + g_HalInfo->HaveUsePortNum++;
  110 + g_HalInfo->HalPort[PortName].UseFlag = JZ_FLAGCODE_ON;
88 } 111 }
89 - else  
90 - {  
91 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 112 +
  113 + //如果是要从列表中移除
  114 + else if (UseFlag == JZ_FLAGCODE_OFF)
  115 + {
  116 + //先检查列表中是否已经存在
  117 + for (int i = 0; i < g_HalInfo->HaveUsePortNum; i++)
  118 + {
  119 + if (g_HalInfo->HaveUsePort[i] == PortName)
  120 + {
  121 + g_HalInfo->HaveUsePort[i] = g_HalInfo->HaveUsePort[g_HalInfo->HaveUsePortNum - 1];
  122 + g_HalInfo->HaveUsePortNum--;
  123 + g_HalInfo->HalPort[PortName].UseFlag = JZ_FLAGCODE_OFF;
  124 + g_HalInfo->HalPort[PortName].ConnectStatus = JZ_FLAGCODE_OFF;
  125 + g_HalInfo->HalPort[PortName].HeartBeatStatusSend = JZ_FLAGCODE_OFF;
  126 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  127 + }
  128 + }
  129 +
  130 + //如果本来就不存在,则直接返回
  131 + JZSDK_LOG_INFO("hal口:%s,本来就未使用,无需移除", JZsdk_DefineCode_GetPortName(PortName));
  132 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
92 } 133 }
93 134
94 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 135 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
95 } 136 }
96 137
97 -/**********************  
98 - *  
99 - * hal端口 重初始化函数  
100 - *  
101 - *  
102 - * ******************/  
103 -T_JZsdkReturnCode JZsdk_HalPort_ReInit(int PortName, int Value[]) 138 +//用于给初始化函数调用
  139 +static T_JZsdkReturnCode JZsdK_HalPort_Init_Info(int PortName, int UseFlag
  140 + , int ConnectStatus, int HeartBeatStatusSend, int PortType)
104 { 141 {
105 - switch (PortName)  
106 - {  
107 - case UART_DEV_1:  
108 - JZsdk_Uart_ReInit(PortName, Value[0]);  
109 - break;  
110 -  
111 - case UART_DEV_2:  
112 - JZsdk_Uart_ReInit(PortName, Value[0]);  
113 - break;  
114 -  
115 - case UART_DEV_3:  
116 - JZsdk_Uart_ReInit(PortName, Value[0]);  
117 - break;  
118 -  
119 - case UART_DEV_4:  
120 - JZsdk_Uart_ReInit(PortName, Value[0]);  
121 - break;  
122 -  
123 - case UART_4G:  
124 - JZsdk_Uart_ReInit(PortName, Value[0]);  
125 - break;  
126 -  
127 - default:  
128 - break;  
129 - } 142 + g_HalInfo->HalPort[PortName].UseFlag = UseFlag;
  143 + g_HalInfo->HalPort[PortName].ConnectStatus = ConnectStatus;
  144 + g_HalInfo->HalPort[PortName].HeartBeatStatusSend = HeartBeatStatusSend;
  145 + g_HalInfo->HalPort[PortName].PortType = PortType;
  146 +
  147 + //记录端口
  148 + JZsdk_HalPort_SetUseFlag(PortName, JZ_FLAGCODE_ON);
  149 +
  150 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
130 } 151 }
131 152
132 /********************** 153 /**********************
133 * 154 *
134 - * hal端口 使用默认参数初始化函数 155 + * hal端口 初始化函数
  156 + * psdk初始化 value为NULL
  157 + * uart初始化 value[0]为波特率
135 * 158 *
136 * ******************/ 159 * ******************/
137 -T_JZsdkReturnCode JZsdk_HalPort_Init_WithDefault(int PortName) 160 +T_JZsdkReturnCode JZsdk_HalPort_Init(int PortName, int Value[])
138 { 161 {
139 - int value[5] = {0, 0, 0, 0, 0}; 162 + T_JZsdkReturnCode ret;
140 163
141 - if (PortName == UART_DEV_1) 164 + //psdk初始化
  165 + if (PortName >= DEVICE_PSDK && PortName < UART_4G)
142 { 166 {
143 - value[0] = UART_DEV1_BITRATE; 167 + JZsdK_HalPort_Init_Info(PortName, JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, JZ_FLAGCODE_OFF, PORT_TYPE_PSDK);
  168 +
  169 + JZSDK_LOG_INFO("hal%s 初始化",JZsdk_DefineCode_GetPortName(PortName));
  170 +
  171 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  172 + }
  173 +
  174 + //uart初始化
  175 + if (PortName >= UART_4G && PortName < USB_DEV_1)
  176 + {
  177 + JZSDK_LOG_INFO("hal%s 初始化",JZsdk_DefineCode_GetPortName(PortName));
  178 +
  179 + ret = JZsdk_Uart_ReInit(PortName, Value[0]);
  180 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  181 + {
  182 + JZSDK_LOG_ERROR("hal%s 初始化失败",JZsdk_DefineCode_GetPortName(PortName));
  183 + return ret;
  184 + }
  185 +
  186 + JZsdK_HalPort_Init_Info(PortName, JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, JZ_FLAGCODE_OFF, PORT_TYPE_UART);
  187 +
  188 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
144 } 189 }
145 - else if (PortName == UART_DEV_2) 190 +
  191 + //usb初始化
  192 + if (PortName >= USB_DEV_1 && PortName < NET_DEV_1)
146 { 193 {
147 - value[0] = UART_DEV2_BITRATE; 194 + //还没做
148 } 195 }
149 - else if (PortName == UART_4G) 196 +
  197 + //net初始化
  198 + if (PortName >= NET_DEV_1 && PortName < HAL_DATA_TRANSMISSION)
150 { 199 {
151 - value[0] = COMM_4G_UART_BITRATE; 200 + //还没做
152 } 201 }
153 202
154 - return JZsdk_HalPort_ReInit(PortName, value); 203 + //数据传输初始化
  204 + if (PortName == HAL_DATA_TRANSMISSION)
  205 + {
  206 + JZsdK_HalPort_Init_Info(PortName, JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, JZ_FLAGCODE_OFF, PORT_TYPE_TRANS_DATA);
  207 +
  208 + JZSDK_LOG_INFO("hal%s 初始化",JZsdk_DefineCode_GetPortName(PortName));
  209 + }
  210 +
  211 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  212 +}
  213 +
  214 +
  215 +/************************
  216 + *
  217 + * HalRort Reinit
  218 + * 专门用于已经初始化完毕端口
  219 + * 与init的区别是, Reinit 是要调用多线程来重初始化的
  220 + *
  221 + * ***************************/
  222 +T_JZsdkReturnCode JZsdk_HalPort_ReInit(int PortName, int Value[])
  223 +{
  224 + return JZsdk_HalPort_Init(PortName, Value);
155 } 225 }
@@ -25,14 +25,52 @@ extern "C" { @@ -25,14 +25,52 @@ extern "C" {
25 /* Exported constants --------------------------------------------------------*/ 25 /* Exported constants --------------------------------------------------------*/
26 /* 常亮定义*/ 26 /* 常亮定义*/
27 27
  28 +typedef enum E_HAL_PORT_TYPE
  29 +{
  30 + PORT_TYPE_PSDK = 0,
  31 + PORT_TYPE_UART = 1,
  32 + PORT_TYPE_USB = 2,
  33 + PORT_TYPE_NET = 3,
  34 +
  35 + PORT_TYPE_TRANS_DATA = 4,
  36 +}E_HAL_PORT_TYPE;
  37 +
  38 +/******************
  39 + *
  40 + * hal使用状态
  41 + *
  42 + *
  43 + *
  44 + * ********/
  45 +typedef struct s_JZsdk_HalStatus
  46 +{
  47 + int UseFlag; //hal使用标志位 //初始化时开关关闭
  48 + int ConnectStatus; //接收过连接帧后打开
  49 + int HeartBeatStatusSend; //心跳帧的发送开关
  50 + int PortType;
  51 +
  52 +}s_JZsdk_HalStatus;
  53 +
  54 +typedef struct s_JZsdk_Hal_Info
  55 +{
  56 + s_JZsdk_HalStatus HalPort[255]; //记录hal使用的端口状态
  57 + int HaveUsePort[255]; //记录已经使用的端口
  58 + int HaveUsePortNum; //记录已经使用的端口数量
  59 +
  60 +}s_JZsdk_Hal_Info;
  61 +
28 /* Exported types ------------------------------------------------------------*/ 62 /* Exported types ------------------------------------------------------------*/
29 63
30 /* Exported functions --------------------------------------------------------*/ 64 /* Exported functions --------------------------------------------------------*/
31 int JZsdk_HalPort_UseFlag(int PortName); 65 int JZsdk_HalPort_UseFlag(int PortName);
32 T_JZsdkReturnCode JZsdk_HalPort_SetUseFlag(int PortName,int UseFlag); 66 T_JZsdkReturnCode JZsdk_HalPort_SetUseFlag(int PortName,int UseFlag);
  67 +
  68 +T_JZsdkReturnCode JZsdk_HalPort_Init(int PortName, int Value[]);
33 T_JZsdkReturnCode JZsdk_HalPort_ReInit(int PortName, int Value[]); 69 T_JZsdkReturnCode JZsdk_HalPort_ReInit(int PortName, int Value[]);
34 -T_JZsdkReturnCode JZsdk_HalPort_Init_WithDefault(int PortName);  
35 70
  71 +T_JZsdkReturnCode JZsdk_Hal_Init();
  72 +
  73 +s_JZsdk_Hal_Info *JZsdk_Hal_GetHalInfo();
36 74
37 #ifdef __cplusplus 75 #ifdef __cplusplus
38 } 76 }
@@ -13,6 +13,28 @@ @@ -13,6 +13,28 @@
13 #include "JZsdk_uart/JZsdk_Uart_UartDeal.h" 13 #include "JZsdk_uart/JZsdk_Uart_UartDeal.h"
14 #include "JZsdk_Hal.h" 14 #include "JZsdk_Hal.h"
15 15
  16 +static unsigned char *Get_UartDevPath(int UartDev)
  17 +{
  18 + switch (UartDev)
  19 + {
  20 + case UART_4G:
  21 + return COMM_4G_UART_NUM;
  22 + break;
  23 +
  24 + case UART_DEV_1:
  25 + return UART_DEV1_NUM;
  26 + break;
  27 +
  28 + case UART_DEV_2:
  29 + return UART_DEV2_NUM;
  30 + break;
  31 +
  32 + default:
  33 + return NULL;
  34 + break;
  35 + }
  36 +}
  37 +
16 /******************** 38 /********************
17 * 39 *
18 * 40 *
@@ -110,12 +132,8 @@ T_JZsdkReturnCode JZsdk_Uart_UartEnabled(unsigned char *UartDev, unsigned int Bi @@ -110,12 +132,8 @@ T_JZsdkReturnCode JZsdk_Uart_UartEnabled(unsigned char *UartDev, unsigned int Bi
110 132
111 /**************** 133 /****************
112 * 134 *
113 - *  
114 - *  
115 * 串口重初始化 135 * 串口重初始化
116 - *  
117 - *  
118 - * 136 + * 该函数仅能被JZsdk_HalPort_Init调用,请勿直接使用
119 * 137 *
120 * ************************/ 138 * ************************/
121 T_JZsdkReturnCode JZsdk_Uart_ReInit(int UART_DEV_NAME, int BitRate) 139 T_JZsdkReturnCode JZsdk_Uart_ReInit(int UART_DEV_NAME, int BitRate)
@@ -123,88 +141,30 @@ T_JZsdkReturnCode JZsdk_Uart_ReInit(int UART_DEV_NAME, int BitRate) @@ -123,88 +141,30 @@ T_JZsdkReturnCode JZsdk_Uart_ReInit(int UART_DEV_NAME, int BitRate)
123 T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 141 T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
124 int UartFd = 0; 142 int UartFd = 0;
125 143
126 - JZSDK_LOG_INFO("初始化串口 0x%x", UART_DEV_NAME); 144 + //JZSDK_LOG_INFO("初始化串口 0x%x", UART_DEV_NAME);
127 145
128 - //初始化的是一号设备  
129 - if (UART_DEV_NAME == UART_DEV_1) 146 + //检查是否已经初始化
  147 + if(JZsdk_HalPort_UseFlag(UART_DEV_NAME) == JZ_FLAGCODE_ON)
130 { 148 {
131 - //1、检查串口是否已经初始化  
132 - if(JZsdk_HalPort_UseFlag(UART_DEV_1) == JZ_FLAGCODE_ON)  
133 - {  
134 - //先注释掉原来的串口  
135 - JZsdk_HalPort_SetUseFlag(UART_DEV_1, JZ_FLAGCODE_OFF);  
136 -  
137 - //然后关闭串口 注:该函数有延时  
138 - JZsdk_Uart_CloseUartThead(UART_DEV_1);  
139 - }  
140 -  
141 - //2、串口初始化  
142 - ret = JZsdk_Uart_UartEnabled(UART_DEV1_NUM, BitRate, &UartFd);  
143 - if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)  
144 - {  
145 - return ret;  
146 - }  
147 -  
148 - //3、串口接收初始化  
149 - JZsdk_Uart_UartDeal_Receive(UartFd, UART_DEV_1);  
150 -  
151 - //4、将串口的标志位打开  
152 - JZsdk_HalPort_SetUseFlag(UART_DEV_1, JZ_FLAGCODE_ON);  
153 - } 149 + //先注释掉原来的串口
  150 + JZsdk_HalPort_SetUseFlag(UART_DEV_NAME, JZ_FLAGCODE_OFF);
154 151
155 - //初始化的是二号设备  
156 - if (UART_DEV_NAME == UART_DEV_2)  
157 - {  
158 - //1、检查串口是否已经初始化  
159 - if(JZsdk_HalPort_UseFlag(UART_DEV_2) == JZ_FLAGCODE_ON)  
160 - {  
161 - //先注释掉原来的串口  
162 - JZsdk_HalPort_SetUseFlag(UART_DEV_2, JZ_FLAGCODE_OFF);  
163 -  
164 - //然后关闭串口 注:该函数有延时  
165 - JZsdk_Uart_CloseUartThead(UART_DEV_2);  
166 - }  
167 -  
168 - //2、串口初始化  
169 - ret = JZsdk_Uart_UartEnabled(UART_DEV2_NUM, BitRate, &UartFd);  
170 - if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)  
171 - {  
172 - return ret;  
173 - }  
174 -  
175 - //3、串口接收初始化  
176 - JZsdk_Uart_UartDeal_Receive(UartFd, UART_DEV_2);  
177 -  
178 - //4、将串口的标志位打开  
179 - JZsdk_HalPort_SetUseFlag(UART_DEV_2, JZ_FLAGCODE_ON); 152 + //然后关闭串口 注:该函数有延时
  153 + JZsdk_Uart_CloseUartThead(UART_DEV_NAME);
180 } 154 }
181 -  
182 - //初始化的是4g设备  
183 - if (UART_DEV_NAME == UART_4G) 155 +
  156 + //2、串口初始化
  157 + ret = JZsdk_Uart_UartEnabled(Get_UartDevPath(UART_DEV_NAME), BitRate, &UartFd);
  158 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
184 { 159 {
185 - //1、检查串口是否已经初始化  
186 - if(JZsdk_HalPort_UseFlag(UART_4G) == JZ_FLAGCODE_ON)  
187 - {  
188 - //先注释掉原来的串口  
189 - JZsdk_HalPort_SetUseFlag(UART_4G, JZ_FLAGCODE_OFF);  
190 -  
191 - //然后关闭串口 注:该函数有延时  
192 - JZsdk_Uart_CloseUartThead(UART_4G);  
193 - }  
194 -  
195 - //2、串口初始化  
196 - ret = JZsdk_Uart_UartEnabled(COMM_4G_UART_NUM, BitRate, &UartFd);  
197 - if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)  
198 - {  
199 - return ret;  
200 - }  
201 -  
202 - //3、串口接收初始化  
203 - JZsdk_Uart_UartDeal_Receive(UartFd, UART_4G);  
204 -  
205 - //4、将串口的标志位打开  
206 - JZsdk_HalPort_SetUseFlag(UART_4G, JZ_FLAGCODE_ON); 160 + return ret;
207 } 161 }
208 162
209 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
210 -}  
  163 + //3、串口接收初始化
  164 + JZsdk_Uart_UartDeal_Receive(UartFd, UART_DEV_NAME);
  165 +
  166 + JZSDK_LOG_INFO("init %s sucess", JZsdk_DefineCode_GetPortName(UART_DEV_NAME));
  167 +
  168 + return ret;
  169 +}
  170 +
@@ -56,6 +56,7 @@ static int Deal_Thread = JZ_FLAGCODE_OFF; //用于判断处理线程是否成功 @@ -56,6 +56,7 @@ static int Deal_Thread = JZ_FLAGCODE_OFF; //用于判断处理线程是否成功
56 56
57 static void *UartDeal_rece(void *arg); 57 static void *UartDeal_rece(void *arg);
58 static void *UartDeal_deal(void *arg); 58 static void *UartDeal_deal(void *arg);
  59 +static void *Uart_Recv_deal(void *arg);
59 60
60 61
61 /****************************************************************** 62 /******************************************************************
@@ -67,11 +68,6 @@ static void *UartDeal_deal(void *arg); @@ -67,11 +68,6 @@ static void *UartDeal_deal(void *arg);
67 int JZsdk_Uart_UartDeal_Receive(int Uart_fd, int Uart_Dev_name) 68 int JZsdk_Uart_UartDeal_Receive(int Uart_fd, int Uart_Dev_name)
68 { 69 {
69 int ret = 0; 70 int ret = 0;
70 - pthread_t Uart_rece_task;  
71 -  
72 - pthread_attr_t task_attribute; // 线程属性  
73 - pthread_attr_init(&task_attribute); // 初始化线程属性  
74 - pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); // 设置线程属性  
75 71
76 //根据串口名,将串口描述符赋值给对应的串口,并打开对应的线程开关 72 //根据串口名,将串口描述符赋值给对应的串口,并打开对应的线程开关
77 if (Uart_Dev_name == UART_DEV_1) 73 if (Uart_Dev_name == UART_DEV_1)
@@ -130,7 +126,22 @@ int JZsdk_Uart_UartDeal_Receive(int Uart_fd, int Uart_Dev_name) @@ -130,7 +126,22 @@ int JZsdk_Uart_UartDeal_Receive(int Uart_fd, int Uart_Dev_name)
130 JZSDK_LOG_ERROR("Failed to create receive thread"); 126 JZSDK_LOG_ERROR("Failed to create receive thread");
131 return 1; 127 return 1;
132 } 128 }
  129 +
  130 + // //创建一个串口处理线程
  131 + // pthread_t RecvThread;
  132 + // pthread_attr_t task_attribute;
  133 + // pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); // 设置线程分离属性
  134 + // pthread_attr_init(&task_attribute);
  135 +
  136 + // if (pthread_create(&RecvThread, &task_attribute, Uart_Recv_deal, parameter) != 0)
  137 + // {
  138 + // JZSDK_LOG_ERROR("Failed to create receive thread");
  139 + // return 1;
  140 + // }
  141 +
  142 + return 0;
133 } 143 }
  144 +
134 /*** 145 /***
135 * 146 *
136 * 串口接收线程 147 * 串口接收线程
@@ -187,6 +198,7 @@ static void *UartDeal_rece(void *arg) @@ -187,6 +198,7 @@ static void *UartDeal_rece(void *arg)
187 args->MessageLength = 0; 198 args->MessageLength = 0;
188 args->ResLen = 0; 199 args->ResLen = 0;
189 memset(&(args->Message[0]), 0, sizeof(args->Message)); 200 memset(&(args->Message[0]), 0, sizeof(args->Message));
  201 + delayMs(100);
190 continue; 202 continue;
191 } 203 }
192 // 超时 204 // 超时
@@ -252,7 +264,7 @@ static void *UartDeal_rece(void *arg) @@ -252,7 +264,7 @@ static void *UartDeal_rece(void *arg)
252 264
253 // 通知线程 265 // 通知线程
254 //pthread_cond_signal(&args->cond); 266 //pthread_cond_signal(&args->cond);
255 - pthread_mutex_unlock(&args->WriteMutex); // 解锁 267 + pthread_mutex_unlock(&args->ReadMutex); // 解锁
256 268
257 JZSDK_LOG_WARN("串口接收线程被关闭"); 269 JZSDK_LOG_WARN("串口接收线程被关闭");
258 } 270 }
@@ -288,7 +300,6 @@ static void *UartDeal_deal(void *arg) @@ -288,7 +300,6 @@ static void *UartDeal_deal(void *arg)
288 300
289 while (*TheadSwtch) 301 while (*TheadSwtch)
290 { 302 {
291 -  
292 // 加锁 303 // 加锁
293 pthread_mutex_lock(&args->ReadMutex); 304 pthread_mutex_lock(&args->ReadMutex);
294 305
@@ -341,8 +352,155 @@ static void *UartDeal_deal(void *arg) @@ -341,8 +352,155 @@ static void *UartDeal_deal(void *arg)
341 352
342 353
343 354
  355 +/***
  356 + *
  357 + * 串口处理线程
  358 + *
  359 + * ***/
  360 +// 串口数据处理线程函数
  361 +static void *Uart_Recv_deal(void *arg)
  362 +{
  363 + s_SerialArgs *args = (s_SerialArgs *)arg;
  364 + struct timeval timeout; // 超时时间
  365 + fd_set fs_read;
  366 + static int ResidualLength = 0; // 未处理数据长度
344 367
  368 + //获取串口描述符
  369 + int Uart_fd = args->UartFd;
345 370
  371 + //清空接收数组与初始化配置
  372 + memset(args->Message, 0, sizeof(args->Message));
  373 + args->ResLen = 0;
  374 + args->MessageLength = 0;
  375 +
  376 + // 根据设备名称设置相应的线程开关
  377 + int *TheadSwtch = NULL; //线程开关
  378 + switch(args->UartDevName)
  379 + {
  380 + case UART_4G:
  381 + TheadSwtch = &Uart_4G_Switch;
  382 + break;
  383 + case UART_DEV_1:
  384 + TheadSwtch = &Uart_DEV1_Switch;
  385 + break;
  386 + case UART_DEV_2:
  387 + TheadSwtch = &Uart_DEV2_Switch;
  388 + break;
  389 + default:
  390 + return NULL; // 或者处理未知设备的情况
  391 + }
  392 +
  393 +
  394 + while (*TheadSwtch)
  395 + {
  396 + //重置处理时间
  397 + FD_ZERO(&fs_read);
  398 + FD_SET(Uart_fd, &fs_read);
  399 +
  400 + timeout.tv_sec = 0;
  401 + timeout.tv_usec = 100000; // 设置为可变的超时时间(100毫秒)
  402 +
  403 + // 检查fs_read套接字是否有数据
  404 + int ret = select(Uart_fd + 1, &fs_read, NULL, NULL, &timeout);
  405 +
  406 + // 发生错误
  407 + if (ret < 0)
  408 + {
  409 + //清空缓冲区
  410 + JZSDK_LOG_ERROR("uart select error");
  411 + args->MessageLength = 0;
  412 + args->ResLen = 0;
  413 + memset(&(args->Message[0]), 0, sizeof(args->Message));
  414 + continue;
  415 + }
  416 + // 超时
  417 + else if (ret == 0)
  418 + {
  419 + continue;
  420 + }
  421 +
  422 + // 读取串口内容
  423 + int bytesRead = read(Uart_fd, &(args->Message[args->ResLen]), (sizeof(args->Message) - args->ResLen));
  424 +
  425 + //正常读取到数据
  426 + if (bytesRead > 0)
  427 + {
  428 + //计算当前的数据长度
  429 + args->MessageLength = args->ResLen + bytesRead;
  430 +
  431 + // data_len+=bytesRead;
  432 + // data_len2+=args->MessageLength;
  433 + // printf("当前接收长度%d bytesRead%d bmessage%d reslen%d\n",data_len,bytesRead,data_len2,args->ResLen);
  434 +
  435 + // JZSDK_LOG_INFO("从串口读取到,长度%d",(args->MessageLength-args->ResLen));
  436 +
  437 + // for (int i = 0; i < (args->MessageLength-args->ResLen); i++)
  438 + // {
  439 + // JZSDK_LOG_OUTPUTHEX("%s",&args->Message[i+args->ResLen]);
  440 + // }
  441 +
  442 + // 更新剩余长度
  443 + args->ResLen = 0;
  444 + }
  445 + //读取到数据为空
  446 + else if (bytesRead == 0)
  447 + {
  448 + // 串口关闭或者无数据可读
  449 + JZSDK_LOG_ERROR("Error reading from serial port is empty");
  450 + args->MessageLength = 0;
  451 + args->ResLen = 0;
  452 + memset(&(args->Message[0]), 0, sizeof(args->Message));
  453 + }
  454 + else
  455 + {
  456 + // 读取错误发生
  457 + JZSDK_LOG_ERROR("Error reading from serial port");
  458 + args->MessageLength = 0;
  459 + args->ResLen = 0;
  460 + memset(&(args->Message[0]), 0, sizeof(args->Message));
  461 + }
  462 +
  463 + //如果当前存在数据
  464 + if (args->MessageLength > 0)
  465 + {
  466 + //处理数据
  467 + ResidualLength = HalRecv_type1_PreliminaryScreeningOfData(args->Message, args->MessageLength, args->UartDevName);
  468 + //JZSDK_LOG_DEBUG("回归%d",ResidualLength);
  469 +
  470 + //如果还有剩余的长度
  471 + if (ResidualLength != 0) //将其返还到缓冲区
  472 + {
  473 + memcpy(args->Message, &(args->Message[args->MessageLength - ResidualLength]), ResidualLength);
  474 + memset(&(args->Message[ResidualLength]), 0, (sizeof(args->Message) - ResidualLength));
  475 + args->MessageLength = 0;
  476 + args->ResLen = ResidualLength;
  477 + }
  478 +
  479 + else //清空一次缓冲区
  480 + {
  481 + memset(args->Message, 0, sizeof(args->Message));
  482 + args->MessageLength = 0;
  483 + args->ResLen = 0;
  484 + }
  485 + }
  486 +
  487 + //如果不存在数据 或 存在异常 ,则顺便清空一次缓冲区
  488 + else
  489 + {
  490 + memset(args->Message, 0, sizeof(args->Message));
  491 + args->MessageLength = 0;
  492 + args->ResLen = 0;
  493 + }
  494 +
  495 + // 添加适当延时,确保接收缓冲区有足够的数据
  496 + delayMs(3); // 加多了可能导致实时播放难恢复,以及声音间隔 3ms32字节 会向上约1个3ms opus一帧80字节
  497 + }
  498 +
  499 + //注销相关
  500 + Recv_Thread = JZ_FLAGCODE_OFF;
  501 +
  502 + JZSDK_LOG_WARN("串口接收处理线程被关闭");
  503 +}
346 504
347 505
348 506
@@ -498,9 +656,6 @@ static T_JZsdkReturnCode JZsdk_Uart_CloseUartFd(int UartPort) @@ -498,9 +656,6 @@ static T_JZsdkReturnCode JZsdk_Uart_CloseUartFd(int UartPort)
498 656
499 T_JZsdkReturnCode JZsdk_Uart_CloseUartThead(int UartPort) 657 T_JZsdkReturnCode JZsdk_Uart_CloseUartThead(int UartPort)
500 { 658 {
501 - //将串口描述符关闭  
502 - JZsdk_Uart_CloseUartFd(UartPort);  
503 -  
504 //关闭对应的线程 659 //关闭对应的线程
505 Deal_Thread = JZ_FLAGCODE_ON; //将处理标志位打开 660 Deal_Thread = JZ_FLAGCODE_ON; //将处理标志位打开
506 Recv_Thread = JZ_FLAGCODE_ON; //将存储标志位打开 661 Recv_Thread = JZ_FLAGCODE_ON; //将存储标志位打开
@@ -526,13 +681,29 @@ T_JZsdkReturnCode JZsdk_Uart_CloseUartThead(int UartPort) @@ -526,13 +681,29 @@ T_JZsdkReturnCode JZsdk_Uart_CloseUartThead(int UartPort)
526 } 681 }
527 682
528 //直到某个串口达成了关闭,这里不能明确到判断哪个串口关闭,但是识别第一个关闭的串口 683 //直到某个串口达成了关闭,这里不能明确到判断哪个串口关闭,但是识别第一个关闭的串口
529 - while ( (Recv_Thread != JZ_FLAGCODE_OFF) && (Deal_Thread != JZ_FLAGCODE_OFF)) 684 + while ( (Deal_Thread == JZ_FLAGCODE_ON) || (Recv_Thread == JZ_FLAGCODE_ON))
530 { 685 {
531 delayUs(500); 686 delayUs(500);
532 } 687 }
  688 +
  689 + // while (Recv_Thread == JZ_FLAGCODE_ON)
  690 + // {
  691 + // delayUs(500);
  692 + // }
  693 +
  694 + //将串口描述符关闭
  695 + JZsdk_Uart_CloseUartFd(UartPort);
  696 +
533 697
534 //保证全部注销后 698 //保证全部注销后
535 - JZSDK_LOG_INFO("0x%x 串口注销完毕", UartPort); 699 + JZSDK_LOG_INFO("%s 串口注销完毕", JZsdk_DefineCode_GetPortName(UartPort));
536 700
537 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 701 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
538 -}  
  702 +}
  703 +
  704 +
  705 +
  706 +
  707 +
  708 +
  709 +
@@ -2,6 +2,8 @@ @@ -2,6 +2,8 @@
2 #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" 2 #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
3 #include "JZsdkLib.h" 3 #include "JZsdkLib.h"
4 4
  5 +#include "HeartBeat/HeartBeat.h"
  6 +
5 /*************** 7 /***************
6 * 8 *
7 * * 通用模块初始化 9 * * 通用模块初始化
@@ -13,6 +15,7 @@ T_JZsdkReturnCode CommonMod_Init() @@ -13,6 +15,7 @@ T_JZsdkReturnCode CommonMod_Init()
13 //初始化升级模块 15 //初始化升级模块
14 16
15 //初始化心跳模块 17 //初始化心跳模块
  18 + HeartBeat_Init();
16 19
17 //初始化电源模块 20 //初始化电源模块
18 } 21 }
@@ -16,6 +16,8 @@ @@ -16,6 +16,8 @@
16 16
17 #include "CommonMod/PowerManger/PowerManger.h" 17 #include "CommonMod/PowerManger/PowerManger.h"
18 18
  19 +#include "Upgrade/Upgrade.h"
  20 +
19 #ifdef __cplusplus 21 #ifdef __cplusplus
20 extern "C" { 22 extern "C" {
21 #endif 23 #endif
@@ -26,6 +28,7 @@ extern "C" { @@ -26,6 +28,7 @@ extern "C" {
26 /* Exported types ------------------------------------------------------------*/ 28 /* Exported types ------------------------------------------------------------*/
27 29
28 /* Exported functions --------------------------------------------------------*/ 30 /* Exported functions --------------------------------------------------------*/
  31 +T_JZsdkReturnCode CommonMod_Init();
29 32
30 33
31 #ifdef __cplusplus 34 #ifdef __cplusplus
@@ -3,13 +3,21 @@ @@ -3,13 +3,21 @@
3 3
4 #include "JZsdkLib.h" 4 #include "JZsdkLib.h"
5 #include "JZsdk_Hal.h" 5 #include "JZsdk_Hal.h"
  6 +#include "Hal_Send/HalSend_type1/HalSend_type1.h"
6 7
7 T_JZsdkReturnCode HeartBeat_HalCheck() 8 T_JZsdkReturnCode HeartBeat_HalCheck()
8 { 9 {
9 - //1、获取hal的使用状态  
10 - int temp = JZsdk_HalPort_UseFlag(UART_DEV_1);  
11 - 10 + s_JZsdk_Hal_Info *HalInfo = JZsdk_Hal_GetHalInfo();
12 11
  12 + //1、获取心跳帧的开启情况 发送心跳帧
  13 + for (int i = 0; i < HalInfo->HaveUsePortNum; i++)
  14 + {
  15 + if (HalInfo->HalPort[HalInfo->HaveUsePort[i]].HeartBeatStatusSend == JZ_FLAGCODE_ON)
  16 + {
  17 + HalSend_type1Send_Ask_HeartBeatStatus(HalInfo->HaveUsePort[i], 0x00, HalInfo->HalPort[HalInfo->HaveUsePort[i]].ConnectStatus);
  18 + }
  19 + }
  20 +
13 } 21 }
14 22
15 static void *HeartBeatTask(void *arg) 23 static void *HeartBeatTask(void *arg)
1 /** 1 /**
2 ******************************************************************** 2 ********************************************************************
3 - * @file Megaphone_RecordVoice.h  
4 - * Megaphone_RecordVoice的头文件 3 + * @file HeartBeat.h
  4 + * HeartBeat.c的头文件
  5 + *
5 * 6 *
6 ********************************************************************* 7 *********************************************************************
7 */ 8 */
8 9
9 /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ 10 /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
10 -#ifndef MEGSPHONE_RECORDVOICE_H  
11 -#define MEGSPHONE_RECORDVOICE_H 11 +#ifndef HEART_BEAT_H
  12 +#define HEART_BEAT_H
12 13
13 /* Includes ------------------------------------------------------------------*/ 14 /* Includes ------------------------------------------------------------------*/
14 #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" 15 #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
@@ -23,10 +24,9 @@ extern "C" { @@ -23,10 +24,9 @@ extern "C" {
23 /* Exported types ------------------------------------------------------------*/ 24 /* Exported types ------------------------------------------------------------*/
24 25
25 /* Exported functions --------------------------------------------------------*/ 26 /* Exported functions --------------------------------------------------------*/
26 -T_JZsdkReturnCode Opus_RecordVoice_PlayFixedFile();  
27 -T_JZsdkReturnCode Opus_RecordVoice_SaveOpusStart(int decode_rate);  
28 -T_JZsdkReturnCode Opus_RecordVoice_SaveOpusTrans(unsigned char *SaveData, int size);  
29 -T_JZsdkReturnCode Opus_RecordVoice_SaveOpusStop(int checkFlag, unsigned char *CheckCode); 27 +T_JZsdkReturnCode HeartBeat_Init();
  28 +
  29 +
30 30
31 #ifdef __cplusplus 31 #ifdef __cplusplus
32 } 32 }
@@ -11,7 +11,204 @@ @@ -11,7 +11,204 @@
11 11
12 #define REMOTE_UPGRADE_FILE_DIR "/root/ugradeFile/remote_ugradeFile.tar" 12 #define REMOTE_UPGRADE_FILE_DIR "/root/ugradeFile/remote_ugradeFile.tar"
13 13
14 -static int Upgrade_status = JZ_FLAGCODE_OFF; 14 +static int Upgrade_DownLoadFlag = JZ_FLAGCODE_OFF;
  15 +
  16 +T_JZsdkFileHandle Upgrade_FileHandle = NULL;
  17 +static unsigned char g_CheckCode[128] = {0};
  18 +static int g_CheckCodeFlag =JZ_FLAGCODE_OFF;
  19 +static int g_UpgradeCheckFlag = JZ_FLAGCODE_OFF;
  20 +
  21 +typedef enum T_UpgradeType
  22 +{
  23 + UPGRADE_ONLY_HOST = 0, //仅本机进行升级
  24 + UPGRADE_ONLY_SLAVE = 1, //仅从机进行升级
  25 + UPGRADE_BOTH_HOST_SLAVE = 2, //主机和从机都进行升级
  26 +} T_UpgradeType;
  27 +
  28 +/*****************
  29 + *
  30 + * 获取升级状态
  31 + *
  32 + *
  33 + * ***************/
  34 +T_JZsdkReturnCode Upgrade_GetStatus(int *status)
  35 +{
  36 + *status = Upgrade_DownLoadFlag;
  37 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  38 +}
  39 +
  40 +/************************************
  41 + *
  42 + * 升级包下载
  43 + *
  44 + *
  45 + * **********************************/
  46 +T_JZsdkReturnCode Upgrade_PackageDownload_Start()
  47 +{
  48 + T_JZsdkReturnCode ret;
  49 +
  50 + if (Upgrade_DownLoadFlag == JZ_FLAGCODE_ON)
  51 + {
  52 + JZSDK_LOG_ERROR("Upgrade_PackageDownload_Start: upgrade package is downloading");
  53 + return JZ_ERROR_SYSTEM_MODULE_CODE_IS_BUSY;
  54 + }
  55 +
  56 + ret = JZsdk_Osal_FileOpen(REMOTE_UPGRADE_FILE_DIR, "wb", &Upgrade_FileHandle);
  57 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  58 + {
  59 + JZSDK_LOG_ERROR("Upgrade_PackageDownload_Start: JZsdk_Osal_FileOpen failed");
  60 + return ret;
  61 + }
  62 +
  63 + Upgrade_DownLoadFlag = JZ_FLAGCODE_ON;
  64 +
  65 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  66 +}
  67 +
  68 +/************************************
  69 + *
  70 + * 升级包下载中
  71 + *
  72 + *
  73 + * **********************************/
  74 +T_JZsdkReturnCode Upgrade_PackageDownload_Trans(unsigned char *buf, unsigned int len)
  75 +{
  76 + T_JZsdkReturnCode ret;
  77 +
  78 + if (Upgrade_DownLoadFlag == JZ_FLAGCODE_OFF)
  79 + {
  80 + JZSDK_LOG_ERROR("Upgrade_PackageDownload_Trans: upgrade package is not downloading");
  81 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  82 + }
  83 +
  84 + //下载升级包
  85 + int realLen = 0;
  86 + ret = JZsdk_Osal_FileWrite(Upgrade_FileHandle, buf, len, &realLen);
  87 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  88 + {
  89 + JZSDK_LOG_ERROR("Upgrade_PackageDownload_Trans: JZsdk_Osal_FileWrite failed");
  90 + return ret;
  91 + }
  92 +
  93 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  94 +}
  95 +
  96 +/************************************
  97 + *
  98 + * 升级包下载结束
  99 + *
  100 + *
  101 + * **********************************/
  102 +T_JZsdkReturnCode Upgrade_PackageDownload_Stop()
  103 +{
  104 + T_JZsdkReturnCode ret;
  105 +
  106 + if (Upgrade_DownLoadFlag == JZ_FLAGCODE_OFF)
  107 + {
  108 + JZSDK_LOG_ERROR("Upgrade_PackageDownload_Stop: upgrade package is not downloading");
  109 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  110 + }
  111 +
  112 + JZsdk_Osal_FileSync(Upgrade_FileHandle);
  113 +
  114 + ret = JZsdk_Osal_FileClose(Upgrade_FileHandle);
  115 +
  116 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  117 + {
  118 + JZSDK_LOG_ERROR("Upgrade_PackageDownload_Stop: JZsdk_Osal_FileClose failed");
  119 + return ret;
  120 + }
  121 +
  122 + Upgrade_FileHandle = NULL;
  123 +
  124 + Upgrade_DownLoadFlag = JZ_FLAGCODE_OFF;
  125 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  126 +}
  127 +
  128 +/*******************
  129 + *
  130 + * 升级包校验码录入
  131 + *
  132 + *
  133 + * ********************/
  134 +T_JZsdkReturnCode Upgrade_PackageCheckCodeSave(unsigned char *CheckCode, int CheckFlag, int len)
  135 +{
  136 + memcpy(g_CheckCode, CheckCode, len);
  137 + g_CheckCodeFlag = CheckFlag;
  138 +
  139 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  140 +}
  141 +
  142 +/************************************
  143 + *
  144 + * 升级包校验
  145 + *
  146 + *
  147 + * **********************************/
  148 +T_JZsdkReturnCode Upgrade_PackageCheck()
  149 +{
  150 + T_JZsdkReturnCode ret;
  151 +
  152 + switch (g_CheckCodeFlag)
  153 + {
  154 + case JZSDK_CHECK_SUM_TYPE_MD5:
  155 + {
  156 + JZSDK_LOG_INFO("升级文件使用md5校验码");
  157 + //1、获取文件的md5校验码
  158 + ret = JZsdk_CheckSum(JZSDK_CHECK_SUM_TYPE_MD5, REMOTE_UPGRADE_FILE_DIR, g_CheckCode, 32);
  159 + }
  160 + break;
  161 +
  162 + case JZSDK_CHECK_SUM_TYPE_SRC32:
  163 + {
  164 + JZSDK_LOG_INFO("升级文件使用src32校验码");
  165 + //1、获取文件的src32校验码
  166 + ret = JZsdk_CheckSum(JZSDK_CHECK_SUM_TYPE_SRC32, REMOTE_UPGRADE_FILE_DIR, g_CheckCode, 4);
  167 + }
  168 + break;
  169 +
  170 + default:
  171 + {
  172 + JZSDK_LOG_ERROR("opus保存校验码类型错误");
  173 + ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  174 + }
  175 + break;
  176 + }
  177 +
  178 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  179 + {
  180 + JZSDK_LOG_ERROR("升级文件校验失败");
  181 + JZsdk_Osal_delete(REMOTE_UPGRADE_FILE_DIR);
  182 + Upgrade_DownLoadFlag = JZ_FLAGCODE_OFF;
  183 +
  184 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  185 + }
  186 +
  187 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  188 +}
  189 +
  190 +static T_JZsdkReturnCode Ugrade_Way1()
  191 +{
  192 + //往t60s发送升级固件
  193 +
  194 + //1、发送准备升级指令
  195 +
  196 + //2、发送校验码
  197 +
  198 + //3、上传文件
  199 +
  200 + //4、传输文件
  201 +
  202 + //5、关闭上传
  203 +
  204 + //6、等候校验结果
  205 +
  206 + //开始自身升级
  207 +
  208 + //调用升级脚本
  209 +
  210 + //------------重启--------------
  211 +}
15 212
16 /************************************ 213 /************************************
17 * 214 *
@@ -40,15 +237,48 @@ T_JZsdkReturnCode Upgrade_PackageParse() @@ -40,15 +237,48 @@ T_JZsdkReturnCode Upgrade_PackageParse()
40 JZSDK_LOG_ERROR("Upgrade_PackageParse: RunSystemCmd failed"); 237 JZSDK_LOG_ERROR("Upgrade_PackageParse: RunSystemCmd failed");
41 return ret; 238 return ret;
42 } 239 }
  240 +}
  241 +
  242 +
  243 +/****************************
  244 + *
  245 + * 升级
  246 + *
  247 + *
  248 + * ******************************/
  249 +T_JZsdkReturnCode Upgrade_PackageUpgrade()
  250 +{
  251 + T_JZsdkReturnCode ret;
  252 +
  253 + //校验成功的情况,则开始解析升级包
  254 + ret = Upgrade_PackageParse();
  255 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  256 + {
  257 + JZSDK_LOG_ERROR("解析升级包失败");
  258 + return ret;
  259 + }
  260 +
  261 + //退出当前进程,并通知设备升级
  262 + FILE *logFile = fopen("/root/JZ_UpgradeLog.txt", "w");
  263 + if (logFile == NULL)
  264 + {
  265 + JZSDK_LOG_ERROR("JZ_UpgradeLog error");
  266 + return 1;
  267 + }
43 268
44 - //解析升级包  
45 - //首先分析本机的升级包  
46 - unsigned char upgrade_file_name[128] = {0}; 269 + fprintf(logFile, "UPGRADE_NEEDED\n");
  270 + fflush(logFile);
  271 + fclose(logFile);
47 272
  273 + JZSDK_LOG_INFO("执行升级脚本");
  274 +
  275 + //退出程序
  276 + exit(0);
48 277
49 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 278 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
50 } 279 }
51 280
  281 +
52 /******************************** 282 /********************************
53 * 283 *
54 * 升级模块初始化 284 * 升级模块初始化
@@ -59,28 +289,4 @@ T_JZsdkReturnCode Upgrade_Init() @@ -59,28 +289,4 @@ T_JZsdkReturnCode Upgrade_Init()
59 { 289 {
60 T_JZsdkReturnCode ret; 290 T_JZsdkReturnCode ret;
61 291
62 - //检查是否存在升级失败文件  
63 - ret = JZsdk_check_file_exists(UPGRADE_FILE_STATUS_B);  
64 - if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)  
65 - {  
66 - //这种属于是喊话器自身升级失败了  
67 - JZSDK_LOG_ERROR("Upgrade_Init: upgrade failed file exists STATUS B");  
68 -  
69 -  
70 - //失败处理  
71 -  
72 - }  
73 -  
74 - //检查是否存在A文件  
75 - ret = JZsdk_check_file_exists(UPGRADE_FILE_STATUS_A);  
76 - if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)  
77 - {  
78 - //正处于升级状态  
79 -  
80 - //检查是否还存在升级包  
81 -  
82 - //  
83 - }  
84 -  
85 -  
86 } 292 }
  1 +/**
  2 + ********************************************************************
  3 + * @file Upgrade.h
  4 + * Upgrade.c的头文件
  5 + *
  6 + *
  7 + *********************************************************************
  8 + */
  9 +
  10 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  11 +#ifndef UPGRADE_H
  12 +#define UPGRADE_H
  13 +
  14 +/* Includes ------------------------------------------------------------------*/
  15 +#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
  16 +
  17 +#ifdef __cplusplus
  18 +extern "C" {
  19 +#endif
  20 +
  21 +/* Exported constants --------------------------------------------------------*/
  22 +/* 常亮定义*/
  23 +
  24 +/* Exported types ------------------------------------------------------------*/
  25 +
  26 +/* Exported functions --------------------------------------------------------*/
  27 +T_JZsdkReturnCode Upgrade_GetStatus(int *status);
  28 +T_JZsdkReturnCode Upgrade_PackageDownload_Start();
  29 +T_JZsdkReturnCode Upgrade_PackageDownload_Trans(unsigned char *buf, unsigned int len);
  30 +T_JZsdkReturnCode Upgrade_PackageDownload_Stop();
  31 +T_JZsdkReturnCode Upgrade_PackageCheckCodeSave(unsigned char *CheckCode, int CheckFlag, int len);
  32 +T_JZsdkReturnCode Upgrade_PackageCheck();
  33 +T_JZsdkReturnCode Upgrade_PackageParse();
  34 +T_JZsdkReturnCode Upgrade_PackageUpgrade();
  35 +T_JZsdkReturnCode Upgrade_Init();
  36 +
  37 +
  38 +#ifdef __cplusplus
  39 +}
  40 +#endif
  41 +
  42 +#endif
@@ -271,7 +271,7 @@ static T_JZsdkReturnCode ActivateMAT_create_SN_LOCK_file() @@ -271,7 +271,7 @@ static T_JZsdkReturnCode ActivateMAT_create_SN_LOCK_file()
271 // 参数:文件路径 271 // 参数:文件路径
272 static T_JZsdkReturnCode ActivateMAT_delete_SN_LOCK_file() 272 static T_JZsdkReturnCode ActivateMAT_delete_SN_LOCK_file()
273 { 273 {
274 - return JZsdk_delete_file(SN_LOCL_FILE_PATH); 274 + return JZsdk_Osal_delete(SN_LOCL_FILE_PATH);
275 } 275 }
276 276
277 /********************************** 277 /**********************************
@@ -26,7 +26,7 @@ extern "C" { @@ -26,7 +26,7 @@ extern "C" {
26 //音频信息结构体 26 //音频信息结构体
27 struct AudioMange_audio_struct 27 struct AudioMange_audio_struct
28 { 28 {
29 - unsigned char FileName[JZSDK_FILENAME_SIZE+1]; //音频名字 29 + unsigned char FileName[JZSDK_FILE_NAME_SIZE_MAX+1]; //音频名字
30 unsigned int FileNameLen; //音频名字长度 30 unsigned int FileNameLen; //音频名字长度
31 31
32 unsigned int FileType; //音频的文件类型 32 unsigned int FileType; //音频的文件类型
@@ -196,7 +196,7 @@ static T_JZsdkReturnCode Megaphone_Play(struct MegaphoneInfo *IndexInfo, enum Me @@ -196,7 +196,7 @@ static T_JZsdkReturnCode Megaphone_Play(struct MegaphoneInfo *IndexInfo, enum Me
196 JZSDK_LOG_INFO("opus录音喊话"); 196 JZSDK_LOG_INFO("opus录音喊话");
197 197
198 //opus播放 198 //opus播放
199 - ret = Opus_RecordVoice_PlayFixedFile(); 199 + ret = OpusFile_PlayFixedFile();
200 } 200 }
201 201
202 default: 202 default:
@@ -562,9 +562,9 @@ T_JZsdkReturnCode Megaphone_SaveAudioFileStart(char *FileName) @@ -562,9 +562,9 @@ T_JZsdkReturnCode Megaphone_SaveAudioFileStart(char *FileName)
562 * 2、存储音频文件中 562 * 2、存储音频文件中
563 * 563 *
564 */ 564 */
565 -int Megaphone_SaveAudioFileTrans(char *SaveData, int size) 565 +T_JZsdkReturnCode Megaphone_SaveAudioFileTrans(char *SaveData, int size)
566 { 566 {
567 - AudioFile_SaveAudioFileTrans(SaveData, size); 567 + return AudioFile_SaveAudioFileTrans(SaveData, size);
568 } 568 }
569 569
570 /* 570 /*
@@ -614,9 +614,9 @@ T_JZsdkReturnCode Megaphone_Opus_PlayFixedFile() @@ -614,9 +614,9 @@ T_JZsdkReturnCode Megaphone_Opus_PlayFixedFile()
614 * 2、存储opus文件开始 614 * 2、存储opus文件开始
615 * 615 *
616 */ 616 */
617 -T_JZsdkReturnCode Megaphone_SaveOpusStart(int decode_rate) 617 +T_JZsdkReturnCode Megaphone_SaveOpusStart(unsigned char *FileName, int decode_rate, int SampleRate, int Channels)
618 { 618 {
619 - return Opus_RecordVoice_SaveOpusStart(decode_rate); 619 + return OpusFile_SaveOpusFileStart(FileName , decode_rate, SampleRate, Channels);
620 } 620 }
621 621
622 /* 622 /*
@@ -626,7 +626,7 @@ T_JZsdkReturnCode Megaphone_SaveOpusStart(int decode_rate) @@ -626,7 +626,7 @@ T_JZsdkReturnCode Megaphone_SaveOpusStart(int decode_rate)
626 */ 626 */
627 T_JZsdkReturnCode Megaphone_SaveOpusTrans(char *SaveData, int size) 627 T_JZsdkReturnCode Megaphone_SaveOpusTrans(char *SaveData, int size)
628 { 628 {
629 - return Opus_RecordVoice_SaveOpusTrans(SaveData, size); 629 + return OpusFile_SaveOpusFileStream(SaveData, size);
630 } 630 }
631 631
632 /* 632 /*
@@ -636,7 +636,7 @@ T_JZsdkReturnCode Megaphone_SaveOpusTrans(char *SaveData, int size) @@ -636,7 +636,7 @@ T_JZsdkReturnCode Megaphone_SaveOpusTrans(char *SaveData, int size)
636 */ 636 */
637 T_JZsdkReturnCode Megaphone_SaveOpusStop(int checkFlag, unsigned char *CheckCode) 637 T_JZsdkReturnCode Megaphone_SaveOpusStop(int checkFlag, unsigned char *CheckCode)
638 { 638 {
639 - return Opus_RecordVoice_SaveOpusStop(checkFlag, CheckCode); 639 + return OpusFile_SaveOpusFileEnd(checkFlag, CheckCode);
640 } 640 }
641 641
642 642
@@ -658,7 +658,7 @@ T_JZsdkReturnCode Megaphone_RealTimeVoice_Start(int decode_rate) @@ -658,7 +658,7 @@ T_JZsdkReturnCode Megaphone_RealTimeVoice_Start(int decode_rate)
658 if ( Megaphone_RealTimeVoice_GetStatusFlag() == JZ_FLAGCODE_ON) 658 if ( Megaphone_RealTimeVoice_GetStatusFlag() == JZ_FLAGCODE_ON)
659 { 659 {
660 //是的话,无法进行操作 660 //是的话,无法进行操作
661 - return JZ_ERRORCODE_REALTIMEVOICE_HAS_BEEN_ON; 661 + return JZ_ERROR_SYSTEM_MODULE_CODE_IS_BUSY;
662 } 662 }
663 663
664 //把暂停音乐的标志关了 664 //把暂停音乐的标志关了
@@ -670,7 +670,7 @@ T_JZsdkReturnCode Megaphone_RealTimeVoice_Start(int decode_rate) @@ -670,7 +670,7 @@ T_JZsdkReturnCode Megaphone_RealTimeVoice_Start(int decode_rate)
670 T_JZsdkReturnCode ret = Opus_RealTimeVoice_Start(decode_rate); 670 T_JZsdkReturnCode ret = Opus_RealTimeVoice_Start(decode_rate);
671 if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) 671 if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
672 { 672 {
673 - //广播关闭 673 + //广播实时状态
674 Megaphone_status_Broadcast(AUDIO_PLAY_STATUS_OPUS_REAL_TIME); 674 Megaphone_status_Broadcast(AUDIO_PLAY_STATUS_OPUS_REAL_TIME);
675 } 675 }
676 676
@@ -860,6 +860,9 @@ T_JZsdkReturnCode Megaphone_Init() @@ -860,6 +860,9 @@ T_JZsdkReturnCode Megaphone_Init()
860 //音频文件管理功能初始化 860 //音频文件管理功能初始化
861 Megaphone_AudioFile_Init(); 861 Megaphone_AudioFile_Init();
862 862
  863 + //opus列表初始化
  864 + Megaphone_OpusFile_Init();
  865 +
863 //设置音量 866 //设置音量
864 Megaphone_SetVolume(30, 0); 867 Megaphone_SetVolume(30, 0);
865 868
@@ -1415,7 +1418,7 @@ T_JZsdkReturnCode Megaphone_PrintVolume(int Value, int flag) @@ -1415,7 +1418,7 @@ T_JZsdkReturnCode Megaphone_PrintVolume(int Value, int flag)
1415 HalSend_type1Send_Reply_Volume(UART_DEV_2, g_Megaphone_Volume); 1418 HalSend_type1Send_Reply_Volume(UART_DEV_2, g_Megaphone_Volume);
1416 } 1419 }
1417 //如果psdk接口已经使用 1420 //如果psdk接口已经使用
1418 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON)) 1421 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON))
1419 { 1422 {
1420 JZsdk_Psdk_UI_io_Reply_Volume(g_Megaphone_Volume); 1423 JZsdk_Psdk_UI_io_Reply_Volume(g_Megaphone_Volume);
1421 } 1424 }
@@ -12,6 +12,7 @@ @@ -12,6 +12,7 @@
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 "Megaphone/PlayBack/Megaphone_PlayBack.h"
15 16
16 #ifdef __cplusplus 17 #ifdef __cplusplus
17 extern "C" { 18 extern "C" {
@@ -109,7 +110,7 @@ T_JZsdkReturnCode Megaphone_GetMusicListMessage(unsigned char *message); @@ -109,7 +110,7 @@ T_JZsdkReturnCode Megaphone_GetMusicListMessage(unsigned char *message);
109 * 110 *
110 * ********/ 111 * ********/
111 112
112 -T_JZsdkReturnCode Megaphone_SaveOpusStart(int decode_rate); 113 +T_JZsdkReturnCode Megaphone_SaveOpusStart(unsigned char *FileName, int decode_rate, int SampleRate, int Channels);
113 T_JZsdkReturnCode Megaphone_SaveOpusTrans(char *SaveData, int size); 114 T_JZsdkReturnCode Megaphone_SaveOpusTrans(char *SaveData, int size);
114 T_JZsdkReturnCode Megaphone_SaveOpusStop(int checkFlag, unsigned char *CheckCode); 115 T_JZsdkReturnCode Megaphone_SaveOpusStop(int checkFlag, unsigned char *CheckCode);
115 116
@@ -123,7 +124,7 @@ T_JZsdkReturnCode Megaphone_RealTimeMP2_trans(unsigned char *getdata, int len); @@ -123,7 +124,7 @@ T_JZsdkReturnCode Megaphone_RealTimeMP2_trans(unsigned char *getdata, int len);
123 T_JZsdkReturnCode Megaphone_RealTimeMP2_stop(); 124 T_JZsdkReturnCode Megaphone_RealTimeMP2_stop();
124 125
125 T_JZsdkReturnCode Megaphone_SaveAudioFileStart(char *FileName); 126 T_JZsdkReturnCode Megaphone_SaveAudioFileStart(char *FileName);
126 -int Megaphone_SaveAudioFileTrans(char *SaveData, int size); 127 +T_JZsdkReturnCode Megaphone_SaveAudioFileTrans(char *SaveData, int size);
127 T_JZsdkReturnCode Megaphone_Broadcast_OpusDecodeStatus(int status); 128 T_JZsdkReturnCode Megaphone_Broadcast_OpusDecodeStatus(int status);
128 T_JZsdkReturnCode Megaphone_SaveAudioFileStop(int checkFlag, unsigned char *CheckCode); 129 T_JZsdkReturnCode Megaphone_SaveAudioFileStop(int checkFlag, unsigned char *CheckCode);
129 T_JZsdkReturnCode Megaphone_Opus_PlayFixedFile(); 130 T_JZsdkReturnCode Megaphone_Opus_PlayFixedFile();
@@ -17,6 +17,8 @@ @@ -17,6 +17,8 @@
17 #include "./AudioFile_PlayDeal.h" 17 #include "./AudioFile_PlayDeal.h"
18 #include "AudioDeal/FF_Statement.h" 18 #include "AudioDeal/FF_Statement.h"
19 19
  20 +#include "Megaphone/PlayBack/Megaphone_PlayBack.h"
  21 +
20 //音频文件直接播放 22 //音频文件直接播放
21 T_JZsdkReturnCode AudioFile_StartPlay_Interface(unsigned char* FilePath) 23 T_JZsdkReturnCode AudioFile_StartPlay_Interface(unsigned char* FilePath)
22 { 24 {
@@ -165,6 +167,10 @@ T_JZsdkReturnCode AudioFile_StartPlay_Interface(unsigned char* FilePath) @@ -165,6 +167,10 @@ T_JZsdkReturnCode AudioFile_StartPlay_Interface(unsigned char* FilePath)
165 if (current_second > last_printed_second) 167 if (current_second > last_printed_second)
166 { 168 {
167 printf("nb:%d rate:%d duration:%f total_duration:%f\n", frame->nb_samples, codec_ctx->sample_rate, frame_duration, current_second); 169 printf("nb:%d rate:%d duration:%f total_duration:%f\n", frame->nb_samples, codec_ctx->sample_rate, frame_duration, current_second);
  170 +
  171 + //回传播放时间
  172 + Megaphone_PlayBackTime(current_second);
  173 +
168 last_printed_second = current_second; // 更新上次打印的秒数 174 last_printed_second = current_second; // 更新上次打印的秒数
169 } 175 }
170 176
@@ -258,18 +258,25 @@ T_JZsdkReturnCode AudioFile_FlushAudioList() @@ -258,18 +258,25 @@ T_JZsdkReturnCode AudioFile_FlushAudioList()
258 258
259 // 检查后缀 259 // 检查后缀
260 if (JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".mp3") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS 260 if (JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".mp3") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS
  261 + || JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".MP3") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS
261 || JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".wav") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS 262 || JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".wav") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS
  263 + || JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".WAV") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS
262 || JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".flac") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS 264 || JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".flac") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS
  265 + || JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".FLAC") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS
263 || JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".m4a") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS 266 || JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".m4a") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS
  267 + || JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".M4A") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS
264 || JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".mp2") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS 268 || JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".mp2") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS
  269 + || JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".MP2") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS
265 || JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".wma") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS 270 || JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".wma") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS
266 - || JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".aac") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) 271 + || JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".WMA") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS
  272 + || JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".aac") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS
  273 + || JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".AAC") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
267 { 274 {
268 // 处理文件 275 // 处理文件
269 memset(&audioInfo, 0, sizeof(audioInfo)); // 清除audioInfo结构 276 memset(&audioInfo, 0, sizeof(audioInfo)); // 清除audioInfo结构
270 277
271 //写入文件名 278 //写入文件名
272 - strncpy(audioInfo.FileName, entry->d_name, JZSDK_FILENAME_SIZE); 279 + strncpy(audioInfo.FileName, entry->d_name, JZSDK_FILE_NAME_SIZE_MAX);
273 280
274 unsigned char fileDir [256]; 281 unsigned char fileDir [256];
275 snprintf(fileDir, sizeof(fileDir), "/root/sdcard/audio/%s", filename); 282 snprintf(fileDir, sizeof(fileDir), "/root/sdcard/audio/%s", filename);
@@ -325,6 +332,8 @@ T_JZsdkReturnCode Megaphone_AudioFile_Init() @@ -325,6 +332,8 @@ T_JZsdkReturnCode Megaphone_AudioFile_Init()
325 { 332 {
326 //刷新歌曲列表 333 //刷新歌曲列表
327 AudioFile_FlushAudioList(); 334 AudioFile_FlushAudioList();
  335 +
  336 + JZSDK_LOG_DEBUG("AudioFile init complete");
328 } 337 }
329 338
330 /********************************* 339 /*********************************
@@ -543,12 +552,47 @@ T_JZsdkReturnCode AudioMange_Get_FileNum(unsigned int *num) @@ -543,12 +552,47 @@ T_JZsdkReturnCode AudioMange_Get_FileNum(unsigned int *num)
543 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 552 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
544 } 553 }
545 554
546 -static int g_AudioFile_SaveAudioFile_len = 0; 555 +
  556 +
  557 +/***************************************************************************
  558 + *
  559 + * 上传文件部分
  560 + *
  561 + *
  562 + *
  563 + * ***************************************************************************/
  564 +
  565 +static int g_AudioFile_SaveAudioFile_len = 0; //已存储的长度
547 static FILE *g_AudioFile_SaveAudioFile_NameFp = NULL; 566 static FILE *g_AudioFile_SaveAudioFile_NameFp = NULL;
548 -static int AudioFile_save_flag = 0; 567 +static int AudioFile_save_flag = JZ_FLAGCODE_OFF;
549 568
550 #define SAVE_FILE_DIR "/root/AudioFileTemp.mp3" 569 #define SAVE_FILE_DIR "/root/AudioFileTemp.mp3"
551 -static char MP2_SaveFile[1024]; 570 +static char MP2_SaveFile[256];
  571 +static T_JZTaskHandle s_AudioSaveThread = NULL;
  572 +
  573 +/******************
  574 + *
  575 + *
  576 + * opus文件 存储显示线程
  577 + *
  578 + *
  579 + * **********************/
  580 +static void *AudioFile_SaveOpusPrint(void *arg)
  581 +{
  582 + while (AudioFile_save_flag == JZ_FLAGCODE_ON)
  583 + {
  584 + int num = 0;
  585 +
  586 + JZSDK_LOG_INFO("audio存储功能开启中,当前已存入 %d 字节",g_AudioFile_SaveAudioFile_len);
  587 +
  588 + //适时延迟
  589 + while (num < 100 && AudioFile_save_flag == JZ_FLAGCODE_ON)
  590 + {
  591 + delayMs(10);
  592 + num++;
  593 + }
  594 + }
  595 +}
552 596
553 /* 597 /*
554 * 598 *
@@ -558,17 +602,26 @@ static char MP2_SaveFile[1024]; @@ -558,17 +602,26 @@ static char MP2_SaveFile[1024];
558 //1、开始保存 602 //1、开始保存
559 T_JZsdkReturnCode AudioFile_SaveAudioFileStart(char *FileName) 603 T_JZsdkReturnCode AudioFile_SaveAudioFileStart(char *FileName)
560 { 604 {
  605 + T_JZsdkOsalHandler *OsalHandler = JZsdk_Platform_GetOsalHandler();
  606 +
  607 + if (AudioFile_save_flag == JZ_FLAGCODE_ON)
  608 + {
  609 + JZSDK_LOG_ERROR("上传模式已被打开,请先关闭上传模式");
  610 + return JZ_ERROR_SYSTEM_MODULE_CODE_IS_BUSY;
  611 + }
  612 +
  613 + //重置一下长度
561 g_AudioFile_SaveAudioFile_len = 0; 614 g_AudioFile_SaveAudioFile_len = 0;
562 615
563 - memset(MP2_SaveFile, 0, 1024);  
564 - sprintf(MP2_SaveFile, "/root/sdcard/audio/%s", FileName); 616 + memset(MP2_SaveFile, 0, 256);
  617 + snprintf(MP2_SaveFile, 256, "/root/sdcard/audio/%s", FileName);
565 618
566 JZSDK_LOG_INFO("上传文件的存储路径为%s",MP2_SaveFile); 619 JZSDK_LOG_INFO("上传文件的存储路径为%s",MP2_SaveFile);
567 620
568 if (g_AudioFile_SaveAudioFile_NameFp != NULL) 621 if (g_AudioFile_SaveAudioFile_NameFp != NULL)
569 { 622 {
570 JZSDK_LOG_ERROR("保存AudioFile文件已被打开"); 623 JZSDK_LOG_ERROR("保存AudioFile文件已被打开");
571 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 624 + return JZ_ERROR_SYSTEM_MODULE_CODE_IS_BUSY;
572 } 625 }
573 626
574 g_AudioFile_SaveAudioFile_NameFp = fopen(SAVE_FILE_DIR, "wb"); 627 g_AudioFile_SaveAudioFile_NameFp = fopen(SAVE_FILE_DIR, "wb");
@@ -579,7 +632,10 @@ T_JZsdkReturnCode AudioFile_SaveAudioFileStart(char *FileName) @@ -579,7 +632,10 @@ T_JZsdkReturnCode AudioFile_SaveAudioFileStart(char *FileName)
579 } 632 }
580 633
581 //接受的名字是正常的 打开标志位 634 //接受的名字是正常的 打开标志位
582 - AudioFile_save_flag = 1; 635 + AudioFile_save_flag = JZ_FLAGCODE_ON;
  636 +
  637 + //创建存储显示线程
  638 + OsalHandler->TaskCreate("OpusSavePrint", AudioFile_SaveOpusPrint, 8192,NULL, &s_AudioSaveThread);
583 639
584 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 640 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
585 } 641 }
@@ -587,27 +643,21 @@ T_JZsdkReturnCode AudioFile_SaveAudioFileStart(char *FileName) @@ -587,27 +643,21 @@ T_JZsdkReturnCode AudioFile_SaveAudioFileStart(char *FileName)
587 //正在保存传输中的流 643 //正在保存传输中的流
588 T_JZsdkReturnCode AudioFile_SaveAudioFileTrans(char *SaveData, int size) 644 T_JZsdkReturnCode AudioFile_SaveAudioFileTrans(char *SaveData, int size)
589 { 645 {
590 - //如果创建的保存文件为空  
591 - if (g_AudioFile_SaveAudioFile_NameFp == NULL)  
592 - {  
593 - return -1;  
594 - }  
595 - int writelen; 646 + if (AudioFile_save_flag != JZ_FLAGCODE_ON || g_AudioFile_SaveAudioFile_NameFp == NULL)
  647 + {
  648 + JZSDK_LOG_ERROR("上传模式未被打开,请先打开上传模式");
  649 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  650 + }
596 651
597 - //如果创建的保存文件不为空  
598 - if (g_AudioFile_SaveAudioFile_NameFp != NULL)  
599 - {  
600 - fseek(g_AudioFile_SaveAudioFile_NameFp, g_AudioFile_SaveAudioFile_len, SEEK_SET); //重设光标位,并写入语音数据  
601 - writelen = fwrite(SaveData, 1, size, g_AudioFile_SaveAudioFile_NameFp);  
602 - if (writelen != size)  
603 - {  
604 - printf("写入audio文件失败 %d\n", writelen);  
605 - } 652 + fseek(g_AudioFile_SaveAudioFile_NameFp, g_AudioFile_SaveAudioFile_len, SEEK_SET); //重设光标位,并写入语音数据
  653 + if (fwrite(SaveData, 1, size, g_AudioFile_SaveAudioFile_NameFp) != size)
  654 + {
  655 + JZSDK_LOG_ERROR("写入audio文件失败 %d\n", size);
  656 + }
606 657
607 - fflush(g_AudioFile_SaveAudioFile_NameFp);  
608 - } 658 + fflush(g_AudioFile_SaveAudioFile_NameFp);
609 659
610 - g_AudioFile_SaveAudioFile_len = g_AudioFile_SaveAudioFile_len +writelen; 660 + g_AudioFile_SaveAudioFile_len+=size;
611 661
612 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 662 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
613 } 663 }
@@ -616,12 +666,11 @@ T_JZsdkReturnCode AudioFile_SaveAudioFileTrans(char *SaveData, int size) @@ -616,12 +666,11 @@ T_JZsdkReturnCode AudioFile_SaveAudioFileTrans(char *SaveData, int size)
616 T_JZsdkReturnCode AudioFile_SaveAudioFileStop(int checkFlag, unsigned char *CheckCode) 666 T_JZsdkReturnCode AudioFile_SaveAudioFileStop(int checkFlag, unsigned char *CheckCode)
617 { 667 {
618 T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 668 T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
619 - char cmd[512];  
620 669
621 //1、通过判断标志位 是否成功创建文件 670 //1、通过判断标志位 是否成功创建文件
622 - if (AudioFile_save_flag == 0) 671 + if (AudioFile_save_flag == JZ_FLAGCODE_OFF)
623 { 672 {
624 - JZSDK_LOG_ERROR("未创建AudioFile保存的文件,退出保存操作\n"); 673 + JZSDK_LOG_ERROR("未创建AudioFile保存的文件,退出保存操作");
625 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 674 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
626 } 675 }
627 676
@@ -629,7 +678,7 @@ T_JZsdkReturnCode AudioFile_SaveAudioFileStop(int checkFlag, unsigned char *Chec @@ -629,7 +678,7 @@ T_JZsdkReturnCode AudioFile_SaveAudioFileStop(int checkFlag, unsigned char *Chec
629 if (g_AudioFile_SaveAudioFile_NameFp == NULL) 678 if (g_AudioFile_SaveAudioFile_NameFp == NULL)
630 { 679 {
631 JZSDK_LOG_ERROR("文件打开失败"); 680 JZSDK_LOG_ERROR("文件打开失败");
632 - AudioFile_save_flag = 0; 681 + AudioFile_save_flag = JZ_FLAGCODE_OFF;
633 return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; 682 return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
634 } 683 }
635 684
@@ -639,7 +688,7 @@ T_JZsdkReturnCode AudioFile_SaveAudioFileStop(int checkFlag, unsigned char *Chec @@ -639,7 +688,7 @@ T_JZsdkReturnCode AudioFile_SaveAudioFileStop(int checkFlag, unsigned char *Chec
639 g_AudioFile_SaveAudioFile_NameFp = NULL; 688 g_AudioFile_SaveAudioFile_NameFp = NULL;
640 g_AudioFile_SaveAudioFile_len = 0; //置零长度 689 g_AudioFile_SaveAudioFile_len = 0; //置零长度
641 690
642 - JZsdk_RunSystemCmd("sync"); 691 + JZsdk_Sync();
643 692
644 if (checkFlag != JZ_FLAGCODE_OFF) 693 if (checkFlag != JZ_FLAGCODE_OFF)
645 { 694 {
@@ -659,32 +708,25 @@ T_JZsdkReturnCode AudioFile_SaveAudioFileStop(int checkFlag, unsigned char *Chec @@ -659,32 +708,25 @@ T_JZsdkReturnCode AudioFile_SaveAudioFileStop(int checkFlag, unsigned char *Chec
659 if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) 708 if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
660 { 709 {
661 JZSDK_LOG_ERROR("音频文件校验失败"); 710 JZSDK_LOG_ERROR("音频文件校验失败");
662 - memset(cmd,0,sizeof(cmd));  
663 - sprintf(cmd, "rm \"%s\" ",SAVE_FILE_DIR);  
664 - JZsdk_RunSystemCmd(cmd); 711 + JZsdk_Osal_delete(SAVE_FILE_DIR);
665 AudioFile_save_flag = 0; 712 AudioFile_save_flag = 0;
666 return JZ_ERROR_CHECKCODE_CHECK_ERROR; 713 return JZ_ERROR_CHECKCODE_CHECK_ERROR;
667 } 714 }
668 - }  
669 -  
670 - memset(cmd,0,sizeof(cmd));  
671 - sprintf(cmd, "mv \"%s\" \"%s\" ",SAVE_FILE_DIR, MP2_SaveFile);  
672 - printf("cmd:%s\n",cmd); 715 + }
673 716
674 - // 执行命令并等待完成  
675 - int ret_1 = system(cmd);  
676 - if (ret_1 != 0)  
677 - { 717 + ret = JZsdk_Osal_Rename(SAVE_FILE_DIR, MP2_SaveFile);
  718 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  719 + {
678 // 命令执行失败,处理错误 720 // 命令执行失败,处理错误
679 JZSDK_LOG_ERROR("mp3存储失败"); 721 JZSDK_LOG_ERROR("mp3存储失败");
680 - AudioFile_save_flag = 0; 722 + AudioFile_save_flag = JZ_FLAGCODE_OFF;
681 ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 723 ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
682 } 724 }
683 725
684 - JZsdk_RunSystemCmd("sync"); 726 + JZsdk_Sync();
685 727
686 //2、关闭标志位 728 //2、关闭标志位
687 - AudioFile_save_flag = 0; 729 + AudioFile_save_flag = JZ_FLAGCODE_OFF;
688 730
689 //3、刷新音频列表 731 //3、刷新音频列表
690 Megaphone_Flush_MusicList();//刷新音乐列表 732 Megaphone_Flush_MusicList();//刷新音乐列表
  1 +#include "JZsdkLib.h"
  2 +
  3 +#include "Hal_Send/HalSend_type1/HalSend_type1.h"
  4 +
  5 +static int PlayBackPort[128] = {0}; //用于记录需要回传的hal口
  6 +static int PlayBackNum = 0; //用于记录由多少个回传的hal口
  7 +static int g_CurrentPlayTime = 0; //当前播放时间
  8 +
  9 +
  10 +/*****************
  11 + *
  12 + * 获取回传模式
  13 + *
  14 + *
  15 + * ******************/
  16 +int Megaphone_PlayBackGetMode(int HalPort)
  17 +{
  18 + //遍历是否存在当前的halPort内容
  19 + for(int i = 0; i < PlayBackNum; i++)
  20 + {
  21 + if(PlayBackPort[i] == HalPort)
  22 + {
  23 + return JZ_FLAGCODE_ON;
  24 + }
  25 + }
  26 +
  27 + return JZ_FLAGCODE_OFF;
  28 +}
  29 +
  30 +/**********************
  31 + *
  32 + * 播放中的时间回传函数
  33 + *
  34 + *
  35 + * ******************/
  36 +T_JZsdkReturnCode Megaphone_PlayBackSet(int HalPort, int Mode)
  37 +{
  38 + //如果是关闭回传
  39 + if (Mode == JZ_FLAGCODE_OFF)
  40 + {
  41 + //遍历是否存在当前的halPort内容
  42 + for(int i = 0; i < PlayBackNum; i++)
  43 + {
  44 + if(PlayBackPort[i] == HalPort)
  45 + {
  46 + PlayBackPort[i] == 0;
  47 +
  48 + //然后把后面的内容往前移动
  49 + for(int j = i; j < PlayBackNum; j++)
  50 + {
  51 + PlayBackPort[j] = PlayBackPort[j+1];
  52 + }
  53 +
  54 + PlayBackNum--;
  55 +
  56 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  57 + }
  58 + }
  59 +
  60 + //遍历发现都没开启过,说明是非法操作
  61 + JZSDK_LOG_INFO("%s 未打开过播放回传", JZsdk_DefineCode_GetPortName(HalPort) );
  62 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  63 + }
  64 +
  65 + //如果是开启回传
  66 + if (Mode == JZ_FLAGCODE_ON)
  67 + {
  68 + //遍历是否存在当前的halPort内容
  69 + for(int i = 0; i < PlayBackNum; i++)
  70 + {
  71 + if(PlayBackPort[i] == HalPort)
  72 + {
  73 + JZSDK_LOG_INFO("%s 已打开过播放回传", JZsdk_DefineCode_GetPortName(HalPort) );
  74 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  75 + }
  76 + }
  77 +
  78 + //遍历发现都没开启过,则添加到数组中
  79 + PlayBackPort[PlayBackNum] = HalPort;
  80 + PlayBackNum++;
  81 + }
  82 +
  83 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  84 +}
  85 +
  86 +/***************
  87 + *
  88 + *
  89 + * PlayBack
  90 + *
  91 + *
  92 + * ************/
  93 +T_JZsdkReturnCode Megaphone_PlayBackTime(int PlayBackTime)
  94 +{
  95 + g_CurrentPlayTime = PlayBackTime;
  96 +
  97 + for (int i = 0; i < PlayBackNum; i++)
  98 + {
  99 + HalSend_type1Send_Reply_CurrentPlayTime(PlayBackPort[i] ,PlayBackTime);
  100 + }
  101 +
  102 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  103 +}
  104 +
  105 +T_JZsdkReturnCode Megaphone_PlayBackTimeGet(int Port)
  106 +{
  107 + HalSend_type1Send_Reply_CurrentPlayTime(Port ,g_CurrentPlayTime);
  108 +
  109 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  110 +}
  1 +/**
  2 + ********************************************************************
  3 + * @file Megaphone_PlayBack.h
  4 + * Megaphone_PlayBack.c 的头文件
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef MEGAPHONE_PLAYBACK_H
  11 +#define MEGAPHONE_PLAYBACK_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
  15 +
  16 +#ifdef __cplusplus
  17 +extern "C" {
  18 +#endif
  19 +
  20 +/* Exported constants --------------------------------------------------------*/
  21 +/* 常亮定义*/
  22 +
  23 +
  24 +/* Exported types ------------------------------------------------------------*/
  25 +
  26 +/* Exported functions --------------------------------------------------------*/
  27 +T_JZsdkReturnCode Megaphone_PlayBackSet(int HalPort, int Mode);
  28 +T_JZsdkReturnCode Megaphone_PlayBackTime(int PlayBackTime);
  29 +T_JZsdkReturnCode Megaphone_PlayBackTimeGet(int Port);
  30 +int Megaphone_PlayBackGetMode(int HalPort);
  31 +
  32 +#ifdef __cplusplus
  33 +}
  34 +#endif
  35 +
  36 +#endif
@@ -23,6 +23,8 @@ T_JZsdkReturnCode Megaphone_TTS_Init() @@ -23,6 +23,8 @@ T_JZsdkReturnCode Megaphone_TTS_Init()
23 //海外固件,外语初始化 23 //海外固件,外语初始化
24 Espeak_init(); 24 Espeak_init();
25 } 25 }
  26 +
  27 + JZSDK_LOG_DEBUG("Megaphone_TTS_Init");
26 } 28 }
27 29
28 30
@@ -18,8 +18,8 @@ extern "C" { @@ -18,8 +18,8 @@ extern "C" {
18 18
19 /* Exported constants --------------------------------------------------------*/ 19 /* Exported constants --------------------------------------------------------*/
20 /* 常亮定义*/ 20 /* 常亮定义*/
21 -#include "RecordVoice/Megaphone_RecordVoice.h"  
22 #include "RealTimeVoice/Megaphone_RealTimeVoice.h" 21 #include "RealTimeVoice/Megaphone_RealTimeVoice.h"
  22 +#include "./OpusFile/OpusFile.h"
23 23
24 /* Exported types ------------------------------------------------------------*/ 24 /* Exported types ------------------------------------------------------------*/
25 25
@@ -17,6 +17,16 @@ static struct AudioMange_Node *g_OpusListtail = NULL; // 鈭葵銵函 @@ -17,6 +17,16 @@ static struct AudioMange_Node *g_OpusListtail = NULL; // 鈭葵銵函
17 static int g_OpusListNum = 0; //用于记录链表中的节点数量 17 static int g_OpusListNum = 0; //用于记录链表中的节点数量
18 static int g_OpusList_CurrentNum = 0; //用于记录链表中当前节点位置 18 static int g_OpusList_CurrentNum = 0; //用于记录链表中当前节点位置
19 19
  20 +/*****************
  21 + *
  22 + * 获取opus文件列表的歌曲数
  23 + *
  24 + * ************/
  25 +int OpusFile_GetListNum()
  26 +{
  27 + return g_OpusListNum;
  28 +}
  29 +
20 /********* 30 /*********
21 * 31 *
22 * opus文件链表注销 32 * opus文件链表注销
@@ -99,13 +109,15 @@ T_JZsdkReturnCode OpusFile_FlushList() @@ -99,13 +109,15 @@ T_JZsdkReturnCode OpusFile_FlushList()
99 //printf("获取到%s\n",filename); 109 //printf("获取到%s\n",filename);
100 110
101 // 检查后缀 111 // 检查后缀
102 - if (JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".opus") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) 112 + if (JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".opus") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS
  113 + || JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".OPUS") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS
  114 + )
103 { 115 {
104 // 处理文件 116 // 处理文件
105 memset(&OpusInfo, 0, sizeof(OpusInfo)); // 清除audioInfo结构 117 memset(&OpusInfo, 0, sizeof(OpusInfo)); // 清除audioInfo结构
106 118
107 //写入文件名 119 //写入文件名
108 - strncpy(OpusInfo.FileName, entry->d_name, JZSDK_FILENAME_SIZE); 120 + strncpy(OpusInfo.FileName, entry->d_name, JZSDK_FILE_NAME_SIZE_MAX);
109 121
110 unsigned char fileDir [256]; 122 unsigned char fileDir [256];
111 snprintf(fileDir, sizeof(fileDir), "/root/sdcard/opus/%s", filename); 123 snprintf(fileDir, sizeof(fileDir), "/root/sdcard/opus/%s", filename);
@@ -152,6 +164,80 @@ T_JZsdkReturnCode OpusFile_FlushList() @@ -152,6 +164,80 @@ T_JZsdkReturnCode OpusFile_FlushList()
152 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 164 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
153 } 165 }
154 166
  167 +
  168 +/*********************************
  169 + *
  170 + *
  171 + * 获取某序号下的歌曲名字
  172 + *
  173 + *
  174 + * *********************************/
  175 +T_JZsdkReturnCode Megaphone_OpusFile_GetAudioNameByIndex(int index, unsigned char *name, int *name_len)
  176 +{
  177 + T_JZsdkReturnCode ret ;
  178 +
  179 + //判断歌曲列表是否有歌
  180 + if (g_OpusListNum == 0)
  181 + {
  182 + JZSDK_LOG_INFO("opus列表中没有歌");
  183 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  184 + }
  185 +
  186 + //判断序号是否在数量内
  187 + if (index > g_OpusListNum)
  188 + {
  189 + JZSDK_LOG_INFO("opus列表中没有第%d首歌",index);
  190 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  191 + }
  192 +
  193 + //根据当前的索引值,获取当前的歌曲节点
  194 + struct AudioMange_Node *Current = NULL;
  195 + ret = getAudioMange_NodeAtIndex(g_OpusList, &Current, index);
  196 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  197 + {
  198 + return ret;
  199 + }
  200 + if (Current == NULL)
  201 + {
  202 + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
  203 + }
  204 +
  205 + //获取名字,后期这里要改动以下,太危险了, 要限制长度
  206 + memcpy(name, Current->audioInfo.FileName, Current->audioInfo.FileNameLen);
  207 + *name_len = Current->audioInfo.FileNameLen;
  208 +
  209 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  210 +}
  211 +
  212 +
  213 +
  214 +/*****************
  215 + *
  216 + * 查询opus信息
  217 + *
  218 + *
  219 + * **************/
  220 +T_JZsdkReturnCode OpusFile_GetAudioInfo(unsigned char *str, unsigned int str_len, struct AudioMange_audio_struct *songToFind)
  221 +{
  222 + T_JZsdkReturnCode ret;
  223 +
  224 + //1、查询该名字是否存在于音乐列表中
  225 + memset(songToFind->FileName, 0 ,sizeof(songToFind->FileName));
  226 + memcpy(songToFind->FileName, str, str_len);
  227 +
  228 + ret = JZsdk_isSongInAudioList(g_OpusList, (*songToFind));
  229 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  230 + {
  231 + JZSDK_LOG_ERROR("播放文件不存在于opus列表 %s", songToFind->FileName);
  232 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  233 + }
  234 +
  235 + //2、获取歌曲信息
  236 + JZsdk_GetSongInDudioList_AudioInfo(g_OpusList, songToFind);
  237 +
  238 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  239 +}
  240 +
155 /********* 241 /*********
156 * 242 *
157 * opus文件初始化 243 * opus文件初始化
@@ -161,4 +247,7 @@ T_JZsdkReturnCode Megaphone_OpusFile_Init() @@ -161,4 +247,7 @@ T_JZsdkReturnCode Megaphone_OpusFile_Init()
161 { 247 {
162 //刷新opus列表(用于加载新的opus文件) 248 //刷新opus列表(用于加载新的opus文件)
163 OpusFile_FlushList(); 249 OpusFile_FlushList();
164 -}  
  250 +
  251 + JZSDK_LOG_DEBUG("opusFile Init Complete");
  252 +}
  253 +
@@ -12,6 +12,7 @@ @@ -12,6 +12,7 @@
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 "Megaphone/AudioMange/AudioMange_Param.h"
15 16
16 #ifdef __cplusplus 17 #ifdef __cplusplus
17 extern "C" { 18 extern "C" {
@@ -23,14 +24,25 @@ extern "C" { @@ -23,14 +24,25 @@ extern "C" {
23 /* Exported types ------------------------------------------------------------*/ 24 /* Exported types ------------------------------------------------------------*/
24 25
25 /* Exported functions --------------------------------------------------------*/ 26 /* Exported functions --------------------------------------------------------*/
  27 +int OpusFile_GetListNum();
  28 +T_JZsdkReturnCode Megaphone_OpusFile_GetAudioNameByIndex(int index, unsigned char *name, int *name_len);
  29 +T_JZsdkReturnCode OpusFile_GetAudioInfo(unsigned char *str, unsigned int str_len, struct AudioMange_audio_struct *songToFind);
  30 +
  31 +
  32 +
26 T_JZsdkReturnCode Megaphone_OpusFile_Init(); 33 T_JZsdkReturnCode Megaphone_OpusFile_Init();
27 T_JZsdkReturnCode OpusFile_FlushList(); 34 T_JZsdkReturnCode OpusFile_FlushList();
28 T_JZsdkReturnCode OpusFile_DecodeOpus(unsigned char *opusFile); 35 T_JZsdkReturnCode OpusFile_DecodeOpus(unsigned char *opusFile);
  36 +T_JZsdkReturnCode OpusFile_PlayFixedFile();
  37 +int OpusFile_GetSaveFlag(void);
29 38
  39 +T_JZsdkReturnCode OpusFile_SetDecodeBitrate(int bitrate);
  40 +T_JZsdkReturnCode OpusFile_SetDecodeChannels(int channels);
  41 +T_JZsdkReturnCode OpusFile_SetDecodeSampleRate(int sample_rate);
30 42
31 -T_JZsdkReturnCode OpusFile_SaveOpusFileStart(unsigned char *FileName); 43 +T_JZsdkReturnCode OpusFile_SaveOpusFileStart(unsigned char *FileName, int decode_rate, int SampleRate, int Channels);
32 T_JZsdkReturnCode OpusFile_SaveOpusFileStream(unsigned char *Stream, int StreamLen); 44 T_JZsdkReturnCode OpusFile_SaveOpusFileStream(unsigned char *Stream, int StreamLen);
33 -T_JZsdkReturnCode OpusFile_SaveOpusFileEnd(int CheckFlag, unsigned char *CheckCode, int SaveFlag); 45 +T_JZsdkReturnCode OpusFile_SaveOpusFileEnd(int CheckFlag, unsigned char *CheckCode);
34 46
35 #ifdef __cplusplus 47 #ifdef __cplusplus
36 } 48 }
@@ -15,14 +15,33 @@ @@ -15,14 +15,33 @@
15 15
16 #define PCM_PLAY_FILE_NAME "/root/test_audio.pcm" //用于播放的pcm 16 #define PCM_PLAY_FILE_NAME "/root/test_audio.pcm" //用于播放的pcm
17 17
18 -#define PCM_RATE 16000 //解码得到的pcm码率 目前仅支持16000码率  
19 static int g_opus_decodeBitrate = 16000; //解码码率 18 static int g_opus_decodeBitrate = 16000; //解码码率
  19 +static int g_opus_decodeChannels = 1; //解码通道数
  20 +static int g_opus_sampleRate = 16000; //解码采样率
20 21
21 static int g_Opus_play_Flag = JZ_FLAGCODE_OFF; //opus的播放标志位 22 static int g_Opus_play_Flag = JZ_FLAGCODE_OFF; //opus的播放标志位
22 static int g_Opus_decode_Flag = JZ_FLAGCODE_OFF; //opus的解码标志位 23 static int g_Opus_decode_Flag = JZ_FLAGCODE_OFF; //opus的解码标志位
23 static T_JZTaskHandle g_DecodeOpus_task = NULL; 24 static T_JZTaskHandle g_DecodeOpus_task = NULL;
24 static T_JZTaskHandle g_OpusPlay_task = NULL; 25 static T_JZTaskHandle g_OpusPlay_task = NULL;
25 26
  27 +T_JZsdkReturnCode OpusFile_SetDecodeBitrate(int bitrate)
  28 +{
  29 + g_opus_decodeBitrate = bitrate;
  30 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  31 +}
  32 +
  33 +T_JZsdkReturnCode OpusFile_SetDecodeChannels(int channels)
  34 +{
  35 + g_opus_decodeChannels = channels;
  36 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  37 +}
  38 +
  39 +T_JZsdkReturnCode OpusFile_SetDecodeSampleRate(int sampleRate)
  40 +{
  41 + g_opus_sampleRate = sampleRate;
  42 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  43 +}
  44 +
26 /*************************************************************************************************************** 45 /***************************************************************************************************************
27 * 46 *
28 * 播放部分 47 * 播放部分
@@ -39,6 +58,8 @@ static T_JZsdkReturnCode FixedFilePlay() @@ -39,6 +58,8 @@ static T_JZsdkReturnCode FixedFilePlay()
39 int timeNum = 0; 58 int timeNum = 0;
40 int loop = JZ_FLAGCODE_OFF; 59 int loop = JZ_FLAGCODE_OFF;
41 int loop_interval; 60 int loop_interval;
  61 + double total_duration = 0;
  62 + int last_printed_second = -1; // 上次打印的秒数,初始化为-1表示还没有打印过
42 63
43 if(g_Opus_decode_Flag != JZ_FLAGCODE_OFF) 64 if(g_Opus_decode_Flag != JZ_FLAGCODE_OFF)
44 { 65 {
@@ -69,10 +90,31 @@ static T_JZsdkReturnCode FixedFilePlay() @@ -69,10 +90,31 @@ static T_JZsdkReturnCode FixedFilePlay()
69 nbBytes = fread(cbits, 1, 3 * 1276, PlayFixedFile_pcm_fp); 90 nbBytes = fread(cbits, 1, 3 * 1276, PlayFixedFile_pcm_fp);
70 if(nbBytes > 0) 91 if(nbBytes > 0)
71 { 92 {
72 - AudioDeal_PcmDataInput(PCM_RATE, (unsigned char *)cbits, nbBytes); 93 + AudioDeal_PcmDataInput(g_opus_sampleRate, (unsigned char *)cbits, nbBytes);
73 } 94 }
  95 +
  96 + int totalSamples = nbBytes / (2);
  97 +
  98 + // 计算当前帧的持续时间(秒)
  99 + double frame_duration = (double)totalSamples / g_opus_sampleRate;
  100 + total_duration += frame_duration;
  101 +
  102 + int current_second = (int)floor(total_duration); // 获取当前总时间的整数秒部分
  103 + if (current_second > last_printed_second)
  104 + {
  105 + printf("nb:%d rate:%d duration:%f total_duration:%f\n", totalSamples, g_opus_sampleRate, frame_duration, current_second);
  106 +
  107 + //回传播放时间
  108 + Megaphone_PlayBackTime(current_second);
  109 +
  110 + last_printed_second = current_second; // 更新上次打印的秒数
  111 + }
  112 +
74 if (feof(PlayFixedFile_pcm_fp)) 113 if (feof(PlayFixedFile_pcm_fp))
75 { 114 {
  115 + total_duration = 0;
  116 + last_printed_second = -1;
  117 +
76 //如果循环播放没打开 118 //如果循环播放没打开
77 Megaphone_param(JZ_FLAGCODE_GET, MEGAPHONE_LOOP, &loop); 119 Megaphone_param(JZ_FLAGCODE_GET, MEGAPHONE_LOOP, &loop);
78 Megaphone_param(JZ_FLAGCODE_GET, MEGAPHONE_LOOP_INTERVAL, &loop_interval); 120 Megaphone_param(JZ_FLAGCODE_GET, MEGAPHONE_LOOP_INTERVAL, &loop_interval);
@@ -167,6 +209,25 @@ T_JZsdkReturnCode OpusFile_PlayFixedFile() @@ -167,6 +209,25 @@ T_JZsdkReturnCode OpusFile_PlayFixedFile()
167 } 209 }
168 210
169 211
  212 +/*******************************
  213 +*
  214 +* 播放opus列表的音乐
  215 +* 旧接口,无需定位传入的位置
  216 +*
  217 +************************************/
  218 +T_JZsdkReturnCode OpusFile_PlayListFile(unsigned char *OpusFile)
  219 +{
  220 + T_JZsdkOsalHandler *OsalHandler = JZsdk_Platform_GetOsalHandler();
  221 +
  222 + //检测歌曲是否在列表中
  223 +
  224 +
  225 + //OsalHandler->TaskCreate("PiayFilexdFile", PlayFixedFile_task, 8192, NULL, &g_DecodeOpus_task);
  226 +
  227 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  228 +}
  229 +
  230 +
170 231
171 /*************************************************************************************************************/ 232 /*************************************************************************************************************/
172 233
@@ -205,7 +266,7 @@ static T_JZsdkReturnCode OpusDecodeFun(unsigned char *OpusFile) @@ -205,7 +266,7 @@ static T_JZsdkReturnCode OpusDecodeFun(unsigned char *OpusFile)
205 } 266 }
206 267
207 //创建一个解码器 268 //创建一个解码器
208 - decoder = opus_decoder_create(PCM_RATE, OPUS_CHANNELS, &err); 269 + decoder = opus_decoder_create(g_opus_sampleRate, OPUS_CHANNELS, &err);
209 if (err < 0) { 270 if (err < 0) {
210 JZSDK_LOG_ERROR("解码器创建失败 %s",opus_strerror(err)); 271 JZSDK_LOG_ERROR("解码器创建失败 %s",opus_strerror(err));
211 goto DecodeFinsh; 272 goto DecodeFinsh;
@@ -367,7 +428,7 @@ T_JZsdkReturnCode OpusFile_DecodeOpus(unsigned char *opusFile) @@ -367,7 +428,7 @@ T_JZsdkReturnCode OpusFile_DecodeOpus(unsigned char *opusFile)
367 memset(DecodeFile, strlen(opusFile), 0); 428 memset(DecodeFile, strlen(opusFile), 0);
368 memcpy(DecodeFile, opusFile, strlen(opusFile)); 429 memcpy(DecodeFile, opusFile, strlen(opusFile));
369 430
370 - OsalHandler->TaskCreate("DecodeOpus", DecodeOpus_task((void *)DecodeFile), 8192,NULL, &g_DecodeOpus_task); 431 + OsalHandler->TaskCreate("DecodeOpus", DecodeOpus_task, 8192, (void *)DecodeFile, &g_DecodeOpus_task);
371 432
372 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 433 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
373 } 434 }
@@ -6,6 +6,8 @@ @@ -6,6 +6,8 @@
6 static int g_OpusFile_SaveLen = 0; 6 static int g_OpusFile_SaveLen = 0;
7 static FILE *g_OpusFile_SaveFp = NULL; 7 static FILE *g_OpusFile_SaveFp = NULL;
8 static int g_OpusFile_SaveFlag = JZ_FLAGCODE_OFF; //opus存储标志位 8 static int g_OpusFile_SaveFlag = JZ_FLAGCODE_OFF; //opus存储标志位
  9 +static int g_OpusSaveMode = JZ_FLAGCODE_OFF; //opus存储模式 off:不存储 on:存储
  10 +
9 11
10 #define OPUS_FILE_DIR "/root/sdcard/opus" 12 #define OPUS_FILE_DIR "/root/sdcard/opus"
11 #define OPUS_TEMP_SAVE_DIR "/root/test_audio.opus" 13 #define OPUS_TEMP_SAVE_DIR "/root/test_audio.opus"
@@ -13,6 +15,17 @@ static unsigned char opus_SaveFile[128]; @@ -13,6 +15,17 @@ static unsigned char opus_SaveFile[128];
13 15
14 static T_JZTaskHandle s_OpusSaveThread = NULL; 16 static T_JZTaskHandle s_OpusSaveThread = NULL;
15 17
  18 +/***************
  19 + *
  20 + * 获取opus是否存取中
  21 + *
  22 + *
  23 + * ***********/
  24 +int OpusFile_GetSaveFlag(void)
  25 +{
  26 + return g_OpusFile_SaveFlag;
  27 +}
  28 +
16 /****************** 29 /******************
17 * 30 *
18 * 31 *
@@ -44,22 +57,34 @@ static void *OpusFile_SaveOpusPrint(void *arg) @@ -44,22 +57,34 @@ static void *OpusFile_SaveOpusPrint(void *arg)
44 * 57 *
45 * 58 *
46 * **********************/ 59 * **********************/
47 -T_JZsdkReturnCode OpusFile_SaveOpusFileStart(unsigned char *FileName) 60 +T_JZsdkReturnCode OpusFile_SaveOpusFileStart(unsigned char *FileName, int decode_rate, int SampleRate, int Channels)
48 { 61 {
49 T_JZsdkOsalHandler *OsalHandler = JZsdk_Platform_GetOsalHandler(); 62 T_JZsdkOsalHandler *OsalHandler = JZsdk_Platform_GetOsalHandler();
50 63
51 if (g_OpusFile_SaveFlag == JZ_FLAGCODE_ON) 64 if (g_OpusFile_SaveFlag == JZ_FLAGCODE_ON)
52 { 65 {
53 JZSDK_LOG_ERROR("opus文件保存功能已经开启"); 66 JZSDK_LOG_ERROR("opus文件保存功能已经开启");
54 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 67 + return JZ_ERROR_SYSTEM_MODULE_CODE_IS_BUSY;
55 } 68 }
  69 +
  70 + OpusFile_SetDecodeBitrate(decode_rate);
56 71
57 g_OpusFile_SaveLen = 0; 72 g_OpusFile_SaveLen = 0;
58 73
59 memset(opus_SaveFile, 0, sizeof(opus_SaveFile)); 74 memset(opus_SaveFile, 0, sizeof(opus_SaveFile));
60 - sprintf(opus_SaveFile, "%s/%s",OPUS_FILE_DIR, FileName);  
61 75
62 - JZSDK_LOG_INFO("上传的opus文件存储路径为:%s", opus_SaveFile); 76 + //设置存储的位置
  77 + if (FileName == NULL)
  78 + {
  79 + g_OpusSaveMode = JZ_FLAGCODE_OFF;
  80 + JZSDK_LOG_INFO("上传的opus文件存储路径为:%s decode_rate:%d SampleRate:%d Channels:%d", OPUS_TEMP_SAVE_DIR, decode_rate, SampleRate, Channels);
  81 + }
  82 + else
  83 + {
  84 + g_OpusSaveMode = JZ_FLAGCODE_ON;
  85 + sprintf(opus_SaveFile, "%s/%s",OPUS_FILE_DIR, FileName);
  86 + JZSDK_LOG_INFO("上传的opus文件存储路径为:%s decode_rate:%d SampleRate:%d Channels:%d", opus_SaveFile, decode_rate, SampleRate, Channels);
  87 + }
63 88
64 if (g_OpusFile_SaveFp != NULL) 89 if (g_OpusFile_SaveFp != NULL)
65 { 90 {
@@ -124,13 +149,12 @@ T_JZsdkReturnCode OpusFile_SaveOpusFileStream(unsigned char *Stream, int StreamL @@ -124,13 +149,12 @@ T_JZsdkReturnCode OpusFile_SaveOpusFileStream(unsigned char *Stream, int StreamL
124 * 149 *
125 * checkflag是否需要校正 或校正类型 150 * checkflag是否需要校正 或校正类型
126 * checkcode 校正码 151 * checkcode 校正码
127 - * saveflag 是否需要保存 152 + *
128 * 153 *
129 * **********************/ 154 * **********************/
130 -T_JZsdkReturnCode OpusFile_SaveOpusFileEnd(int CheckFlag, unsigned char *CheckCode, int SaveFlag) 155 +T_JZsdkReturnCode OpusFile_SaveOpusFileEnd(int CheckFlag, unsigned char *CheckCode)
131 { 156 {
132 T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 157 T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
133 - unsigned char cmd[128];  
134 158
135 //标志位判定 159 //标志位判定
136 if (g_OpusFile_SaveFlag == JZ_FLAGCODE_OFF) 160 if (g_OpusFile_SaveFlag == JZ_FLAGCODE_OFF)
@@ -191,9 +215,7 @@ T_JZsdkReturnCode OpusFile_SaveOpusFileEnd(int CheckFlag, unsigned char *CheckCo @@ -191,9 +215,7 @@ T_JZsdkReturnCode OpusFile_SaveOpusFileEnd(int CheckFlag, unsigned char *CheckCo
191 if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) 215 if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
192 { 216 {
193 JZSDK_LOG_ERROR("opus保存校验失败"); 217 JZSDK_LOG_ERROR("opus保存校验失败");
194 - memset(cmd, 0, sizeof(cmd));  
195 - sprintf(cmd, "rm -rf %s", OPUS_TEMP_SAVE_DIR);  
196 - JZsdk_RunSystemCmd(cmd); 218 + JZsdk_Osal_delete(OPUS_TEMP_SAVE_DIR);
197 g_OpusFile_SaveFlag = JZ_FLAGCODE_OFF; 219 g_OpusFile_SaveFlag = JZ_FLAGCODE_OFF;
198 220
199 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 221 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
@@ -210,18 +232,14 @@ T_JZsdkReturnCode OpusFile_SaveOpusFileEnd(int CheckFlag, unsigned char *CheckCo @@ -210,18 +232,14 @@ T_JZsdkReturnCode OpusFile_SaveOpusFileEnd(int CheckFlag, unsigned char *CheckCo
210 * 232 *
211 * 233 *
212 * *********************************************************/ 234 * *********************************************************/
213 - if (SaveFlag != JZ_FLAGCODE_OFF) 235 + if (g_OpusSaveMode != JZ_FLAGCODE_OFF)
214 { 236 {
215 //将临时的opus文件移动到指定的目录 237 //将临时的opus文件移动到指定的目录
216 - memset(cmd, 0, sizeof(cmd));  
217 - sprintf(cmd, "mv %s %s", OPUS_TEMP_SAVE_DIR, opus_SaveFile);  
218 - ret = JZsdk_RunSystemCmd(cmd); 238 + ret = JZsdk_Osal_Rename(OPUS_TEMP_SAVE_DIR, opus_SaveFile);
219 if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) 239 if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
220 { 240 {
221 JZSDK_LOG_ERROR("opus保存文件移动失败"); 241 JZSDK_LOG_ERROR("opus保存文件移动失败");
222 - memset(cmd, 0, sizeof(cmd));  
223 - sprintf(cmd, "rm -rf %s", OPUS_TEMP_SAVE_DIR);  
224 - JZsdk_RunSystemCmd(cmd); 242 + JZsdk_Osal_delete(OPUS_TEMP_SAVE_DIR);
225 g_OpusFile_SaveFlag = JZ_FLAGCODE_OFF; 243 g_OpusFile_SaveFlag = JZ_FLAGCODE_OFF;
226 244
227 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 245 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
@@ -241,7 +259,7 @@ T_JZsdkReturnCode OpusFile_SaveOpusFileEnd(int CheckFlag, unsigned char *CheckCo @@ -241,7 +259,7 @@ T_JZsdkReturnCode OpusFile_SaveOpusFileEnd(int CheckFlag, unsigned char *CheckCo
241 /********************************************************************/ 259 /********************************************************************/
242 else 260 else
243 { 261 {
244 - OpusFile_DecodeOpus(opus_SaveFile); 262 + OpusFile_DecodeOpus(OPUS_TEMP_SAVE_DIR);
245 } 263 }
246 264
247 JZSDK_LOG_INFO("opus_save_end"); 265 JZSDK_LOG_INFO("opus_save_end");
@@ -19,6 +19,7 @@ static int RealTimeDecodeRate = 0; @@ -19,6 +19,7 @@ static int RealTimeDecodeRate = 0;
19 19
20 OpusDecoder *Opus_RealTimeVoice_decoder; 20 OpusDecoder *Opus_RealTimeVoice_decoder;
21 static int ReadTimeVoice_StatusFlag = JZ_FLAGCODE_OFF; //实时喊话是否有打开 21 static int ReadTimeVoice_StatusFlag = JZ_FLAGCODE_OFF; //实时喊话是否有打开
  22 +static int Opus_RealTimeRecvLenth = 0;
22 23
23 //解码与播放 24 //解码与播放
24 static unsigned char Opus_RealTimeVoice_Loop_Data[ (256 + 1) ][80];//解码缓存池 25 static unsigned char Opus_RealTimeVoice_Loop_Data[ (256 + 1) ][80];//解码缓存池
@@ -115,6 +116,7 @@ T_JZsdkReturnCode Opus_RealTimeVoice_Start(int decode_rate) @@ -115,6 +116,7 @@ T_JZsdkReturnCode Opus_RealTimeVoice_Start(int decode_rate)
115 } 116 }
116 117
117 JZSDK_LOG_INFO("实时喊话初始化成功"); 118 JZSDK_LOG_INFO("实时喊话初始化成功");
  119 + Opus_RealTimeRecvLenth = 0;
118 120
119 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 121 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
120 122
@@ -465,6 +467,9 @@ T_JZsdkReturnCode Opus_RealTimeVoice_WriteDataToLoop(unsigned char *buf,int leng @@ -465,6 +467,9 @@ T_JZsdkReturnCode Opus_RealTimeVoice_WriteDataToLoop(unsigned char *buf,int leng
465 467
466 } 468 }
467 469
  470 + Opus_RealTimeRecvLenth += length;
  471 + JZSDK_LOG_DEBUG("opus实时传入,写入总长度为%d",Opus_RealTimeRecvLenth);
  472 +
468 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 473 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
469 } 474 }
470 475
@@ -545,7 +550,7 @@ T_JZsdkReturnCode Opus_RealTimeVoice_Close() @@ -545,7 +550,7 @@ T_JZsdkReturnCode Opus_RealTimeVoice_Close()
545 //释放解码器 550 //释放解码器
546 Opus_RealTimeVoice_DeinitDecoder(); 551 Opus_RealTimeVoice_DeinitDecoder();
547 552
548 - JZSDK_LOG_DEBUG("解码器释放完毕"); 553 + JZSDK_LOG_DEBUG("解码器释放完毕,一共播放了%d的数据", Opus_RealTimeRecvLenth);
549 554
550 //产生标志位 555 //产生标志位
551 Megaphone_MegDataGenFlag(JZ_FLAGCODE_SET, JZ_FLAGCODE_OFF); 556 Megaphone_MegDataGenFlag(JZ_FLAGCODE_SET, JZ_FLAGCODE_OFF);
1 -  
2 -#include <stdio.h>  
3 -#include <pthread.h>  
4 -#include <errno.h>  
5 -#include <string.h>  
6 -#include <stdlib.h>  
7 -  
8 -#include "JZsdkLib.h"  
9 -#include "../../Megaphone.h"  
10 -#include "../Megaphone_Opus.h"  
11 -#include "version_choose.h"  
12 -#include "BaseConfig.h"  
13 -  
14 -#include "AudioDeal/AudioDeal.h"  
15 -  
16 -#include "opus.h"  
17 -  
18 -#define OPUS_MAX_FRAME_SIZE (6 * 960)  
19 -#define OPUS_CHANNELS (1)  
20 -#define OPUS_MAX_PACKET_SIZE (3 * 1276)  
21 -#define OPUS_DECODE_RATE 16000 //这个值是恒定的  
22 -static int s_decodeBitrate = 16000; //这个值由输入定  
23 -  
24 -#define OPUS_FILE_NAME "/root/test_audio.opus"  
25 -#define PCM_PLAY_FILE_NAME "/root/test_audio.pcm" //用于播放的pcm  
26 -  
27 -static int OpusDecode_Flag = JZ_FLAGCODE_OFF ; //用于防止播放时解码未完成  
28 -static int Opus_play_Flag = 0; //opus的播放标志位  
29 -static int Opus_SaveLen = 0;  
30 -  
31 -static T_JZsdkReturnCode Opus_RecordVoice_DecodeFixedFile();  
32 -static void *DecodeAudioData_task(void *arg);  
33 -  
34 -FILE *SaveFixedOpus_fp = NULL;  
35 -  
36 -static T_JZsdkReturnCode FixedFilePlay()  
37 -{  
38 - FILE *PlayFixedFile_pcm_fp = NULL;  
39 - unsigned int nbBytes;  
40 - uint8_t cbits[3 * 1276];  
41 - int timeNum = 0;  
42 - int loop = JZ_FLAGCODE_OFF;  
43 - int loop_interval;  
44 -  
45 - if(OpusDecode_Flag != JZ_FLAGCODE_OFF)  
46 - {  
47 - JZSDK_LOG_ERROR("opus解码超时,无法播放");  
48 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
49 - }  
50 -  
51 - Opus_play_Flag = JZ_FLAGCODE_ON;  
52 -  
53 - JZSDK_LOG_INFO("播放指定位置的opus pcm文件\n");  
54 - PlayFixedFile_pcm_fp = fopen(PCM_PLAY_FILE_NAME, "r");  
55 - if (PlayFixedFile_pcm_fp == NULL)  
56 - {  
57 - JZSDK_LOG_ERROR("打开固定opus pcm文件失败\n");  
58 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
59 - }  
60 -  
61 - // 将文件指针移动到文件开头  
62 - if (fseek(PlayFixedFile_pcm_fp, 0, SEEK_SET) != 0)  
63 - {  
64 - JZSDK_LOG_ERROR("Failed to move file pointer to the beginning of the file");  
65 - fclose(PlayFixedFile_pcm_fp);  
66 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
67 - }  
68 -  
69 - while (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_ON)  
70 - {  
71 - nbBytes = fread(cbits, 1, 3 * 1276, PlayFixedFile_pcm_fp);  
72 - if(nbBytes > 0)  
73 - {  
74 - AudioDeal_PcmDataInput(OPUS_DECODE_RATE, (unsigned char *)cbits, nbBytes);  
75 - }  
76 - if (feof(PlayFixedFile_pcm_fp))  
77 - {  
78 - //如果循环播放没打开  
79 - Megaphone_param(JZ_FLAGCODE_GET, MEGAPHONE_LOOP, &loop);  
80 - Megaphone_param(JZ_FLAGCODE_GET, MEGAPHONE_LOOP_INTERVAL, &loop_interval);  
81 -  
82 - if (loop == JZ_FLAGCODE_OFF)  
83 - {  
84 - timeNum = 0;  
85 -  
86 - // //播放结束延迟  
87 - // while ((timeNum <=3000) && (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_ON))  
88 - // {  
89 - // delayMs(10);  
90 - // timeNum +=10;  
91 - // }  
92 -  
93 - break;  
94 - }  
95 - //如果循环播放打开  
96 - else if (loop == JZ_FLAGCODE_ON)  
97 - {  
98 - timeNum = 0;  
99 - JZSDK_LOG_INFO("循环播放opus");  
100 -  
101 - // //播放结束延迟  
102 - // while ((loop == 1) && (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_ON))  
103 - // {  
104 - // delayMs(10);  
105 - // timeNum +=10;  
106 - // }  
107 -  
108 - //重置文件光标 继续播放  
109 - fseek(PlayFixedFile_pcm_fp, 0, SEEK_SET);  
110 -  
111 - //循环播放延时  
112 - while (loop_interval > 0 && (loop == JZ_FLAGCODE_ON) && (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_ON))  
113 - {  
114 - delayMs(50);  
115 - loop_interval -= 50;  
116 - }  
117 -  
118 - continue;  
119 - }  
120 - }  
121 - }  
122 -  
123 - fclose(PlayFixedFile_pcm_fp);  
124 -  
125 - Opus_play_Flag = JZ_FLAGCODE_OFF;  
126 -}  
127 -  
128 -/*  
129 -*  
130 -* 播放固定位置pcm线程  
131 -*  
132 -*/  
133 -static void *PlayFixedFile_task(void *arg)  
134 -{  
135 - Megaphone_MegDataGenFlag(JZ_FLAGCODE_SET, JZ_FLAGCODE_ON);  
136 - Megaphone_MegDataGenFinshFlag(JZ_FLAGCODE_SET, JZ_FLAGCODE_ON);  
137 -  
138 - //广播开始  
139 - Megaphone_status_Broadcast(AUDIO_PLAY_STATUS_OPUS_RECORD);  
140 -  
141 - int amplifier = JZ_FLAGCODE_ON;  
142 - Megaphone_Amplifier_param(JZ_FLAGCODE_SET, &amplifier);  
143 -  
144 - FixedFilePlay();  
145 -  
146 - amplifier = JZ_FLAGCODE_OFF;  
147 - Megaphone_Amplifier_param(JZ_FLAGCODE_SET, &amplifier);  
148 -  
149 - Megaphone_MegDataGenFlag(JZ_FLAGCODE_SET, JZ_FLAGCODE_OFF);  
150 - Megaphone_MegDataGenFinshFlag(JZ_FLAGCODE_SET, JZ_FLAGCODE_OFF);  
151 -  
152 - //广播关闭  
153 - Megaphone_status_Broadcast(JZ_FLAGCODE_OFF);  
154 -}  
155 -  
156 -/*  
157 -*  
158 -* 播放规定位置的opus文件  
159 -*  
160 -*/  
161 -T_JZsdkReturnCode Opus_RecordVoice_PlayFixedFile()  
162 -{  
163 - pthread_t Opus_PlayFixedFile_task;  
164 - pthread_attr_t task_attribute; //线程属性  
165 - pthread_attr_init(&task_attribute); //初始化线程属性  
166 - pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程属性  
167 -  
168 - int task_ret = pthread_create(&Opus_PlayFixedFile_task,&task_attribute,PlayFixedFile_task,NULL); //TTS线程  
169 - if(task_ret != 0)  
170 - {  
171 - JZSDK_LOG_ERROR("创建Opus_PlayFixedFile线程失败!\n");  
172 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
173 - }  
174 -  
175 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
176 -}  
177 -  
178 -  
179 -  
180 -  
181 -/*************************************************************************************************************************************  
182 - *  
183 - *  
184 - * 存储相关  
185 - *  
186 - *  
187 - * *************************************************************************************************************************************/  
188 -/*  
189 -*  
190 -* 存储opus文件  
191 -*  
192 -*/  
193 -//开始保存  
194 -T_JZsdkReturnCode Opus_RecordVoice_SaveOpusStart(int decode_rate)  
195 -{  
196 - if (SaveFixedOpus_fp != NULL)  
197 - {  
198 - JZSDK_LOG_ERROR("已经开始过opus储存");  
199 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
200 - }  
201 -  
202 - //1、打开保存的文件  
203 - SaveFixedOpus_fp = fopen(OPUS_FILE_NAME, "wb");  
204 - if (SaveFixedOpus_fp == NULL) {  
205 - JZSDK_LOG_ERROR("固定opus保存文件创建失败");  
206 - return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;  
207 - }  
208 -  
209 - //2、记录解码与播放的比特率  
210 - s_decodeBitrate = decode_rate;  
211 -  
212 - Opus_SaveLen =0;  
213 -  
214 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
215 -}  
216 -  
217 -//正在保存传输中的流  
218 -T_JZsdkReturnCode Opus_RecordVoice_SaveOpusTrans(unsigned char *SaveData, int size)  
219 -{  
220 - if (SaveFixedOpus_fp == NULL) {  
221 - printf("固定opus保存文件未打开,不能正常传输流");  
222 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
223 - }  
224 -  
225 - int writelen;  
226 -  
227 - Opus_SaveLen+=size;  
228 - printf("写入opus%d\n",Opus_SaveLen);  
229 -  
230 - //如果创建的保存文件不为空  
231 - if (SaveFixedOpus_fp != NULL)  
232 - {  
233 - writelen = fwrite(SaveData, 1, size, SaveFixedOpus_fp);  
234 - if (writelen != size)  
235 - {  
236 - JZSDK_LOG_ERROR("写入opus失败 %d\n", writelen);  
237 - }  
238 - }  
239 -}  
240 -  
241 -  
242 -//传输结束,开始解码  
243 -T_JZsdkReturnCode Opus_RecordVoice_SaveOpusStop(int checkFlag, unsigned char *CheckCode)  
244 -{  
245 - T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
246 -  
247 - if (SaveFixedOpus_fp == NULL) {  
248 - JZSDK_LOG_ERROR("固定opus保存文件未打开,不能正常解码");  
249 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
250 - }  
251 -  
252 - //1、关闭存储的文件  
253 - fflush(SaveFixedOpus_fp);  
254 - fclose(SaveFixedOpus_fp);  
255 - SaveFixedOpus_fp = NULL;  
256 -  
257 - //2、校验文件  
258 - if (checkFlag != JZ_FLAGCODE_OFF)  
259 - {  
260 - //校验文件  
261 - if (checkFlag == JZSDK_CHECK_SUM_TYPE_MD5) //md5校验  
262 - {  
263 - //1、获取文件的md5校验码  
264 - ret = JZsdk_CheckSum(JZSDK_CHECK_SUM_TYPE_MD5, OPUS_FILE_NAME, CheckCode, 32);  
265 - }  
266 - else if (checkFlag == JZSDK_CHECK_SUM_TYPE_SRC32)  
267 - {  
268 - //1、获取文件的md5校验码  
269 - ret = JZsdk_CheckSum(JZSDK_CHECK_SUM_TYPE_SRC32, OPUS_FILE_NAME, CheckCode, sizeof(U32_t));  
270 - }  
271 -  
272 - //对比校验码  
273 - if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)  
274 - {  
275 - JZSDK_LOG_ERROR("opus文件校验失败");  
276 - return JZ_ERROR_CHECKCODE_CHECK_ERROR;  
277 - }  
278 - }  
279 -  
280 - JZSDK_LOG_INFO("opus传输的总长度为%d\n",Opus_SaveLen);  
281 -  
282 - //2、解码opus  
283 - ret = Opus_RecordVoice_DecodeFixedFile();  
284 - if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)  
285 - {  
286 - return JZ_ERROR_CHECKCODE_DECODE_ERROR;  
287 - }  
288 -  
289 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
290 -}  
291 -  
292 -  
293 -/*  
294 -*  
295 -* 解码规定位置的opus文件  
296 -*  
297 -*/  
298 -static T_JZsdkReturnCode Opus_RecordVoice_DecodeFixedFile()  
299 -{  
300 - int i = 0;  
301 -  
302 - while (i <= 4 && Opus_play_Flag == JZ_FLAGCODE_ON)  
303 - {  
304 - i++;  
305 - delayMs(50);  
306 - }  
307 -  
308 - //判断上一次播放是否结束 判断解码是否完成  
309 - if(i ==4)  
310 - {  
311 - JZSDK_LOG_ERROR("超时,上一次opus录音播放未结束,无法解码");  
312 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
313 - }  
314 -  
315 - i = 0;  
316 -  
317 - while (i<=4 && OpusDecode_Flag == JZ_FLAGCODE_ON)  
318 - {  
319 - i++;  
320 - delayMs(50);  
321 - }  
322 - if(i ==4 )  
323 - {  
324 - JZSDK_LOG_ERROR("超时,上一次opus解码超时,无法解码");  
325 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
326 - }  
327 -  
328 - pthread_t V_DecodeAudioData_task;  
329 - pthread_attr_t task_attribute; //线程属性  
330 - pthread_attr_init(&task_attribute); //初始化线程属性  
331 - pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程属性  
332 -  
333 - int task_ret = pthread_create(&V_DecodeAudioData_task,&task_attribute,DecodeAudioData_task,NULL); //TTS线程  
334 - if(task_ret != 0)  
335 - {  
336 - JZSDK_LOG_ERROR("创建DecodeAudioData_task线程失败!\n");  
337 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
338 - }  
339 -  
340 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
341 -}  
342 -  
343 -/*  
344 -  
345 - 解码函数  
346 -  
347 -  
348 -*/  
349 -static T_JZsdkReturnCode Opus_Decode()  
350 -{  
351 - FILE *fin = NULL;  
352 - FILE *fout = NULL;  
353 - OpusDecoder *decoder;  
354 - opus_int16 out[OPUS_MAX_FRAME_SIZE * OPUS_CHANNELS];  
355 - uint8_t cbits[OPUS_MAX_PACKET_SIZE];  
356 - int32_t nbBytes;  
357 - int32_t err;  
358 -  
359 - if (OpusDecode_Flag != JZ_FLAGCODE_OFF)  
360 - {  
361 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
362 - }  
363 -  
364 - OpusDecode_Flag = JZ_FLAGCODE_ON;  
365 -  
366 - printf("Decode Start 解码开始\n"); //解码开始  
367 -  
368 - //打开解码的opus文件  
369 - //TODO: need delete  
370 - //attention: you can use "ffmpeg -i xxx.mp3 -ar 16000 -ac 1 out.wav" and "./test_opus_tool out.wav out.opus" to generate opus file to test  
371 - fin = fopen(OPUS_FILE_NAME, "r");  
372 - if (fin == NULL) {  
373 - JZSDK_LOG_ERROR("fin打开失败");  
374 - goto DecodeFinsh;  
375 - }  
376 -  
377 - //创建一个解码器  
378 - decoder = opus_decoder_create(OPUS_DECODE_RATE, OPUS_CHANNELS, &err);  
379 - if (err < 0) {  
380 - JZSDK_LOG_ERROR("解码器创建失败 %s",opus_strerror(err));  
381 - goto DecodeFinsh;  
382 - }  
383 -  
384 - //创建一个opus输出文件  
385 - fout = fopen(PCM_PLAY_FILE_NAME, "w");  
386 - if (fout == NULL) {  
387 - JZSDK_LOG_ERROR("创建opus输出文件失败");  
388 - goto DecodeFinsh;  
389 - }  
390 -  
391 - printf("opus解码初始化完成\n");  
392 -  
393 - int frame_size;  
394 -  
395 - while (1)  
396 - {  
397 - int i;  
398 - opus_int16 TempPcm[OPUS_MAX_FRAME_SIZE * OPUS_CHANNELS];  
399 -  
400 - frame_size = 0;  
401 -  
402 - //读取opus内容  
403 - /* Read a 16 bits/sample audio frame. */  
404 - nbBytes = fread(cbits, 1, s_decodeBitrate / 8000 * 40, fin);  
405 - if (feof(fin))  
406 - {  
407 - break;  
408 - }  
409 -  
410 - printf("fread nbBytes=%d\n",nbBytes);  
411 - //printf("s_decodeBitrate=%d",s_decodeBitrate / OPUS_DECODE_BITRATE_8KBPS * OPUS_DECODE_FRAME_SIZE_8KBPS);  
412 - /* Decode the data. In this example, frame_size will be constant because  
413 - the encoder is using a constant frame size. However, that may not  
414 - be the case for all encoders, so the decoder must always check  
415 - the frame size returned. */  
416 -  
417 - //向解码器输入opus内容  
418 - frame_size = opus_decode(decoder, cbits, nbBytes, out, OPUS_MAX_FRAME_SIZE, 0);  
419 - if (frame_size < 0) {  
420 - JZSDK_LOG_ERROR("decoder failed: %s",opus_strerror(frame_size));  
421 - goto DecodeFinsh;  
422 - }  
423 -  
424 - //解码完成  
425 - printf("decode data to file: %d\r\n", frame_size * OPUS_CHANNELS);  
426 - /* Convert to little-endian ordering. */  
427 -  
428 - for (i = 0; i < OPUS_CHANNELS * frame_size; i++) {  
429 - TempPcm [i] = out[i] & 0xFF | (out[i] >> 8) << 8;  
430 - //TempPcm[i] = PcmNoiseReduction(TempPcm[i]);  
431 - }  
432 -  
433 - fwrite(TempPcm, sizeof(short), frame_size * OPUS_CHANNELS, fout);  
434 -  
435 - }  
436 -  
437 -DecodeFinsh:  
438 -  
439 - //释放解码器  
440 - if (decoder != NULL)  
441 - {  
442 - opus_decoder_destroy(decoder);  
443 - printf("opus_decoder_destroy(decoder)\n");  
444 - }  
445 -  
446 - //关闭文件  
447 - if (fin != NULL)  
448 - {  
449 - fclose(fin);  
450 - fin = NULL;  
451 - printf("fclose(fin);\n");  
452 - }  
453 -  
454 - //关闭文件  
455 - if (fout != NULL)  
456 - {  
457 - fclose(fout);  
458 - fout = NULL;  
459 - printf("fclose(fout);\n");  
460 - }  
461 -  
462 - if (frame_size < 0)  
463 - {  
464 - JZSDK_LOG_ERROR("opus解码失败");  
465 - OpusDecode_Flag = JZ_FLAGCODE_OFF;  
466 - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
467 - }  
468 -  
469 - //解码完成  
470 - JZSDK_LOG_INFO("Decode Finished...\n");  
471 - OpusDecode_Flag = JZ_FLAGCODE_OFF;  
472 - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;  
473 -}  
474 -  
475 -/*  
476 -*  
477 -* opus解码固定位置线程  
478 -*  
479 -*/  
480 -static void *DecodeAudioData_task(void *arg)  
481 -{  
482 - T_JZsdkReturnCode ret = Opus_Decode();  
483 - if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)  
484 - {  
485 - //广播解码失败  
486 - Megaphone_Broadcast_OpusDecodeStatus(1);  
487 - }  
488 - else  
489 - {  
490 - Megaphone_Broadcast_OpusDecodeStatus(0);  
491 - }  
492 -}  
@@ -30,7 +30,6 @@ int Get_Opus_PlayMode() @@ -30,7 +30,6 @@ int Get_Opus_PlayMode()
30 30
31 #define AUTO_CONTROL 0x02 31 #define AUTO_CONTROL 0x02
32 32
33 -static int Psdk_UIcontrol_UseFlag = JZ_FLAGCODE_OFF;  
34 33
35 //警灯颜色 34 //警灯颜色
36 static int FirstWarningLight = 1; 35 static int FirstWarningLight = 1;
@@ -70,26 +69,6 @@ typedef enum Psdk_Ui_define @@ -70,26 +69,6 @@ typedef enum Psdk_Ui_define
70 PSDK_UI_SECONDARY_WIDGET_LOOPPLAY = 0x11008001, // 二级控件界面的音频循环开关 69 PSDK_UI_SECONDARY_WIDGET_LOOPPLAY = 0x11008001, // 二级控件界面的音频循环开关
71 }Psdk_Ui_define; 70 }Psdk_Ui_define;
72 71
73 -/****************  
74 - *  
75 - * 回复psdk模式是否有被启用  
76 - *  
77 - * *************/  
78 -int JZsdk_Get_Psdk_UIcontrol_UseFlag()  
79 -{  
80 - return Psdk_UIcontrol_UseFlag;  
81 -}  
82 -  
83 -/****************  
84 - *  
85 - * 启用psdk模式  
86 - *  
87 - * *************/  
88 -int JZsdk_Set_Psdk_UIcontrol_UseFlag(int value)  
89 -{  
90 - Psdk_UIcontrol_UseFlag = value;  
91 -}  
92 -  
93 72
94 /**************** 73 /****************
95 * 74 *
@@ -24,8 +24,6 @@ extern "C" { @@ -24,8 +24,6 @@ extern "C" {
24 /* Exported types ------------------------------------------------------------*/ 24 /* Exported types ------------------------------------------------------------*/
25 25
26 /* Exported functions --------------------------------------------------------*/ 26 /* Exported functions --------------------------------------------------------*/
27 -int JZsdk_Get_Psdk_UIcontrol_UseFlag();  
28 -int JZsdk_Set_Psdk_UIcontrol_UseFlag(int value);  
29 27
30 T_JZsdkReturnCode JZsdk_Psdk_UI_io_Reply_PlayStatus_end(); 28 T_JZsdkReturnCode JZsdk_Psdk_UI_io_Reply_PlayStatus_end();
31 T_JZsdkReturnCode JZsdk_Psdk_UI_io_Reply_PlayStatus(int num); 29 T_JZsdkReturnCode JZsdk_Psdk_UI_io_Reply_PlayStatus(int num);
@@ -130,7 +130,7 @@ T_JZsdkReturnCode UIcontrol_SetVolume(int DeviceName,int value) @@ -130,7 +130,7 @@ T_JZsdkReturnCode UIcontrol_SetVolume(int DeviceName,int value)
130 HalSend_type1Send_Reply_Volume(UART_DEV_2, Volume); 130 HalSend_type1Send_Reply_Volume(UART_DEV_2, Volume);
131 } 131 }
132 //如果psdk接口已经使用 132 //如果psdk接口已经使用
133 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 133 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
134 { 134 {
135 JZsdk_Psdk_UI_io_Reply_Volume(Volume); 135 JZsdk_Psdk_UI_io_Reply_Volume(Volume);
136 } 136 }
@@ -174,7 +174,7 @@ T_JZsdkReturnCode UIcontrol_Set_AudioPlayLoop(int DeviceName,int value) @@ -174,7 +174,7 @@ T_JZsdkReturnCode UIcontrol_Set_AudioPlayLoop(int DeviceName,int value)
174 HalSend_type1Send_Reply_LoopPlayStatus(UART_DEV_2, PlayLoopStatus); 174 HalSend_type1Send_Reply_LoopPlayStatus(UART_DEV_2, PlayLoopStatus);
175 } 175 }
176 //如果psdk接口已经使用 176 //如果psdk接口已经使用
177 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 177 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
178 { 178 {
179 JZsdk_Psdk_UI_io_Reply_AudioPlayLoopStatus(PlayLoopStatus); 179 JZsdk_Psdk_UI_io_Reply_AudioPlayLoopStatus(PlayLoopStatus);
180 } 180 }
@@ -218,7 +218,7 @@ T_JZsdkReturnCode UIcontrol_Set_AudioPlayLoopInterval(int DeviceName,int value) @@ -218,7 +218,7 @@ T_JZsdkReturnCode UIcontrol_Set_AudioPlayLoopInterval(int DeviceName,int value)
218 //HalSend_type1Send_Reply_LoopPlayStatus(UART_DEV_2, PlayLoopInterval); 218 //HalSend_type1Send_Reply_LoopPlayStatus(UART_DEV_2, PlayLoopInterval);
219 } 219 }
220 //如果psdk接口已经使用 220 //如果psdk接口已经使用
221 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 221 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
222 { 222 {
223 //JZsdk_Psdk_UI_io_Reply_AudioPlayLoopStatus(PlayLoopInterval); 223 //JZsdk_Psdk_UI_io_Reply_AudioPlayLoopStatus(PlayLoopInterval);
224 } 224 }
@@ -267,7 +267,7 @@ T_JZsdkReturnCode UIcontrol_OpusRealTimeVoice_Start(int DeviceName, int BitRate) @@ -267,7 +267,7 @@ T_JZsdkReturnCode UIcontrol_OpusRealTimeVoice_Start(int DeviceName, int BitRate)
267 HalSend_type1Send_Send_PlayStatus(UART_DEV_2, PlayStatus); 267 HalSend_type1Send_Send_PlayStatus(UART_DEV_2, PlayStatus);
268 } 268 }
269 //如果psdk接口已经使用 269 //如果psdk接口已经使用
270 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 270 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
271 { 271 {
272 JZsdk_Psdk_UI_io_Reply_PlayStatus(PlayStatus); 272 JZsdk_Psdk_UI_io_Reply_PlayStatus(PlayStatus);
273 } 273 }
@@ -328,7 +328,7 @@ T_JZsdkReturnCode UIcontrol_OpusRealTimeVoice_Close(int DeviceName) @@ -328,7 +328,7 @@ T_JZsdkReturnCode UIcontrol_OpusRealTimeVoice_Close(int DeviceName)
328 HalSend_type1Send_Send_PlayStatus(UART_DEV_2, PlayStatus); 328 HalSend_type1Send_Send_PlayStatus(UART_DEV_2, PlayStatus);
329 } 329 }
330 //如果psdk接口已经使用 330 //如果psdk接口已经使用
331 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 331 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
332 { 332 {
333 JZsdk_Psdk_UI_io_Reply_PlayStatus(PlayStatus); 333 JZsdk_Psdk_UI_io_Reply_PlayStatus(PlayStatus);
334 } 334 }
@@ -377,7 +377,7 @@ T_JZsdkReturnCode UIcontrol_PlayAudioFile(int DeviceName, char *MusicName, int M @@ -377,7 +377,7 @@ T_JZsdkReturnCode UIcontrol_PlayAudioFile(int DeviceName, char *MusicName, int M
377 HalSend_type1Send_Send_PlayStatus(UART_DEV_2, PlayStatus); 377 HalSend_type1Send_Send_PlayStatus(UART_DEV_2, PlayStatus);
378 } 378 }
379 //如果psdk接口已经使用 379 //如果psdk接口已经使用
380 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 380 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
381 { 381 {
382 JZsdk_Psdk_UI_io_Reply_PlayStatus(PlayStatus); 382 JZsdk_Psdk_UI_io_Reply_PlayStatus(PlayStatus);
383 } 383 }
@@ -421,7 +421,7 @@ T_JZsdkReturnCode UIcontrol_StopPlayAudio(int DeviceName) @@ -421,7 +421,7 @@ T_JZsdkReturnCode UIcontrol_StopPlayAudio(int DeviceName)
421 HalSend_type1Send_Send_PlayStatus(UART_DEV_2, PlayStatus); 421 HalSend_type1Send_Send_PlayStatus(UART_DEV_2, PlayStatus);
422 } 422 }
423 //如果psdk接口已经使用 423 //如果psdk接口已经使用
424 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 424 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
425 { 425 {
426 JZsdk_Psdk_UI_io_Reply_PlayStatus(PlayStatus); 426 JZsdk_Psdk_UI_io_Reply_PlayStatus(PlayStatus);
427 } 427 }
@@ -465,7 +465,7 @@ T_JZsdkReturnCode UIcontrol_PausePlayAudio(int DeviceName) @@ -465,7 +465,7 @@ T_JZsdkReturnCode UIcontrol_PausePlayAudio(int DeviceName)
465 HalSend_type1Send_Send_PlayStatus(UART_DEV_2, PlayStatus); 465 HalSend_type1Send_Send_PlayStatus(UART_DEV_2, PlayStatus);
466 } 466 }
467 //如果psdk接口已经使用 467 //如果psdk接口已经使用
468 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 468 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
469 { 469 {
470 JZsdk_Psdk_UI_io_Reply_PlayStatus(PlayStatus); 470 JZsdk_Psdk_UI_io_Reply_PlayStatus(PlayStatus);
471 } 471 }
@@ -509,7 +509,7 @@ T_JZsdkReturnCode UIcontrol_ContinuePlayAudio(int DeviceName) @@ -509,7 +509,7 @@ T_JZsdkReturnCode UIcontrol_ContinuePlayAudio(int DeviceName)
509 HalSend_type1Send_Send_PlayStatus(UART_DEV_2, PlayStatus); 509 HalSend_type1Send_Send_PlayStatus(UART_DEV_2, PlayStatus);
510 } 510 }
511 //如果psdk接口已经使用 511 //如果psdk接口已经使用
512 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 512 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
513 { 513 {
514 JZsdk_Psdk_UI_io_Reply_PlayStatus(PlayStatus); 514 JZsdk_Psdk_UI_io_Reply_PlayStatus(PlayStatus);
515 } 515 }
@@ -554,7 +554,7 @@ T_JZsdkReturnCode UIcontrol_LastSong(int DeviceName) @@ -554,7 +554,7 @@ T_JZsdkReturnCode UIcontrol_LastSong(int DeviceName)
554 HalSend_type1Send_Send_PlayStatus(UART_DEV_2, PlayStatus); 554 HalSend_type1Send_Send_PlayStatus(UART_DEV_2, PlayStatus);
555 } 555 }
556 //如果psdk接口已经使用 556 //如果psdk接口已经使用
557 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 557 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
558 { 558 {
559 JZsdk_Psdk_UI_io_Reply_PlayStatus(PlayStatus); 559 JZsdk_Psdk_UI_io_Reply_PlayStatus(PlayStatus);
560 } 560 }
@@ -598,7 +598,7 @@ T_JZsdkReturnCode UIcontrol_NextSong(int DeviceName) @@ -598,7 +598,7 @@ T_JZsdkReturnCode UIcontrol_NextSong(int DeviceName)
598 HalSend_type1Send_Send_PlayStatus(UART_DEV_2, PlayStatus); 598 HalSend_type1Send_Send_PlayStatus(UART_DEV_2, PlayStatus);
599 } 599 }
600 //如果psdk接口已经使用 600 //如果psdk接口已经使用
601 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 601 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
602 { 602 {
603 JZsdk_Psdk_UI_io_Reply_PlayStatus(PlayStatus); 603 JZsdk_Psdk_UI_io_Reply_PlayStatus(PlayStatus);
604 } 604 }
@@ -650,7 +650,7 @@ T_JZsdkReturnCode UIcontrol_Opus_PlayFixedFile(int DeviceName) @@ -650,7 +650,7 @@ T_JZsdkReturnCode UIcontrol_Opus_PlayFixedFile(int DeviceName)
650 HalSend_type1Send_Send_PlayStatus(UART_DEV_2, PlayStatus); 650 HalSend_type1Send_Send_PlayStatus(UART_DEV_2, PlayStatus);
651 } 651 }
652 //如果psdk接口已经使用 652 //如果psdk接口已经使用
653 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 653 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
654 { 654 {
655 JZsdk_Psdk_UI_io_Reply_PlayStatus(PlayStatus); 655 JZsdk_Psdk_UI_io_Reply_PlayStatus(PlayStatus);
656 } 656 }
@@ -699,7 +699,7 @@ T_JZsdkReturnCode UIcontrol_TTS_Play(int DeviceName, char *data, int len) @@ -699,7 +699,7 @@ T_JZsdkReturnCode UIcontrol_TTS_Play(int DeviceName, char *data, int len)
699 HalSend_type1Send_Send_PlayStatus(UART_DEV_2, PlayStatus); 699 HalSend_type1Send_Send_PlayStatus(UART_DEV_2, PlayStatus);
700 } 700 }
701 //如果psdk接口已经使用 701 //如果psdk接口已经使用
702 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 702 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
703 { 703 {
704 JZsdk_Psdk_UI_io_Reply_PlayStatus(PlayStatus); 704 JZsdk_Psdk_UI_io_Reply_PlayStatus(PlayStatus);
705 } 705 }
@@ -743,7 +743,7 @@ T_JZsdkReturnCode UIcontrol_Set_TTS_tone(int DeviceName,int value) @@ -743,7 +743,7 @@ T_JZsdkReturnCode UIcontrol_Set_TTS_tone(int DeviceName,int value)
743 HalSend_type1Send_Reply_TTS_tone(UART_DEV_2, TTS_tone); 743 HalSend_type1Send_Reply_TTS_tone(UART_DEV_2, TTS_tone);
744 } 744 }
745 //如果psdk接口已经使用 745 //如果psdk接口已经使用
746 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 746 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
747 { 747 {
748 JZsdk_Psdk_UI_io_Reply_TTS_tone(TTS_tone); 748 JZsdk_Psdk_UI_io_Reply_TTS_tone(TTS_tone);
749 } 749 }
@@ -787,7 +787,7 @@ T_JZsdkReturnCode UIcontrol_Set_TTS_speed(int DeviceName,int value) @@ -787,7 +787,7 @@ T_JZsdkReturnCode UIcontrol_Set_TTS_speed(int DeviceName,int value)
787 HalSend_type1Send_Reply_TTS_speed(UART_DEV_2, TTS_speed); 787 HalSend_type1Send_Reply_TTS_speed(UART_DEV_2, TTS_speed);
788 } 788 }
789 //如果psdk接口已经使用 789 //如果psdk接口已经使用
790 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 790 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
791 { 791 {
792 JZsdk_Psdk_UI_io_Reply_TTS_speed(TTS_speed); 792 JZsdk_Psdk_UI_io_Reply_TTS_speed(TTS_speed);
793 } 793 }
@@ -828,7 +828,7 @@ T_JZsdkReturnCode UIcontrol_Set_TTS_AppendTone(int DeviceName,int value) @@ -828,7 +828,7 @@ T_JZsdkReturnCode UIcontrol_Set_TTS_AppendTone(int DeviceName,int value)
828 { 828 {
829 } 829 }
830 //如果psdk接口已经使用 830 //如果psdk接口已经使用
831 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 831 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
832 { 832 {
833 } 833 }
834 834
@@ -875,7 +875,7 @@ T_JZsdkReturnCode UIcontrol_Set_GimbalPitchAngle(int DeviceName,int value) @@ -875,7 +875,7 @@ T_JZsdkReturnCode UIcontrol_Set_GimbalPitchAngle(int DeviceName,int value)
875 //HalSend_type1Send_Reply_GimbalPitchAngle(UART_DEV_2, GimbalPitchAngle); 875 //HalSend_type1Send_Reply_GimbalPitchAngle(UART_DEV_2, GimbalPitchAngle);
876 } 876 }
877 //如果psdk接口已经使用 877 //如果psdk接口已经使用
878 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 878 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
879 { 879 {
880 JZsdk_Psdk_UI_io_Reply_GimbalPitchAngle(GimbalPitchAngle); 880 JZsdk_Psdk_UI_io_Reply_GimbalPitchAngle(GimbalPitchAngle);
881 } 881 }
@@ -928,7 +928,7 @@ T_JZsdkReturnCode UIcontrol_Set_GimbalPitchFineTuning(int DeviceName,int value) @@ -928,7 +928,7 @@ T_JZsdkReturnCode UIcontrol_Set_GimbalPitchFineTuning(int DeviceName,int value)
928 { 928 {
929 } 929 }
930 //如果psdk接口已经使用 930 //如果psdk接口已经使用
931 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 931 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
932 { 932 {
933 } 933 }
934 934
@@ -974,7 +974,7 @@ T_JZsdkReturnCode UIcontrol_Obtain_GimbalPitchFineTuninng(int DeviceName, int Pi @@ -974,7 +974,7 @@ T_JZsdkReturnCode UIcontrol_Obtain_GimbalPitchFineTuninng(int DeviceName, int Pi
974 HalSend_type1Send_Reply_GimbalFineTuningPitch(UART_DEV_2, 0, Pitch); 974 HalSend_type1Send_Reply_GimbalFineTuningPitch(UART_DEV_2, 0, Pitch);
975 } 975 }
976 //如果psdk接口已经使用 976 //如果psdk接口已经使用
977 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 977 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
978 { 978 {
979 979
980 } 980 }
@@ -1031,7 +1031,7 @@ T_JZsdkReturnCode UIcontrol_Obtain_GimbalLinkage(int DeviceName, int GimbalLinka @@ -1031,7 +1031,7 @@ T_JZsdkReturnCode UIcontrol_Obtain_GimbalLinkage(int DeviceName, int GimbalLinka
1031 HalSend_type1Send_GimbalLinkageControl(UART_DEV_2, 0, GimbalLinkage); 1031 HalSend_type1Send_GimbalLinkageControl(UART_DEV_2, 0, GimbalLinkage);
1032 } 1032 }
1033 //如果psdk接口已经使用 1033 //如果psdk接口已经使用
1034 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 1034 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
1035 { 1035 {
1036 1036
1037 } 1037 }
@@ -1084,7 +1084,7 @@ T_JZsdkReturnCode UIcontrol_Set_SearchLightFrequency(int DeviceName,int value) @@ -1084,7 +1084,7 @@ T_JZsdkReturnCode UIcontrol_Set_SearchLightFrequency(int DeviceName,int value)
1084 HalSend_type1Send_SearchLight_Frequency(UART_DEV_2, Frequency); 1084 HalSend_type1Send_SearchLight_Frequency(UART_DEV_2, Frequency);
1085 } 1085 }
1086 //如果psdk接口已经使用 1086 //如果psdk接口已经使用
1087 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 1087 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
1088 { 1088 {
1089 //HalSend_type1Send_SearchLight_Frequency(Frequency); 1089 //HalSend_type1Send_SearchLight_Frequency(Frequency);
1090 } 1090 }
@@ -1133,7 +1133,7 @@ T_JZsdkReturnCode UIcontrol_SearchLightControl(int DeviceName, int value) @@ -1133,7 +1133,7 @@ T_JZsdkReturnCode UIcontrol_SearchLightControl(int DeviceName, int value)
1133 HalSend_type1Send_SearchLight_Mode(UART_DEV_2, mode); 1133 HalSend_type1Send_SearchLight_Mode(UART_DEV_2, mode);
1134 } 1134 }
1135 //如果psdk接口已经使用 1135 //如果psdk接口已经使用
1136 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 1136 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
1137 { 1137 {
1138 //HalSend_type1Send_SearchLight_Mode(mode); 1138 //HalSend_type1Send_SearchLight_Mode(mode);
1139 } 1139 }
@@ -1207,7 +1207,7 @@ T_JZsdkReturnCode UIcontrol_Set_SearchLightLumen(int DeviceName, int WeatherFlus @@ -1207,7 +1207,7 @@ T_JZsdkReturnCode UIcontrol_Set_SearchLightLumen(int DeviceName, int WeatherFlus
1207 HalSend_type1Send_SearchLight_Lumen(UART_DEV_2, LeftLumen, RightLumen); 1207 HalSend_type1Send_SearchLight_Lumen(UART_DEV_2, LeftLumen, RightLumen);
1208 } 1208 }
1209 //如果psdk接口已经使用 1209 //如果psdk接口已经使用
1210 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 1210 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
1211 { 1211 {
1212 JZsdk_Psdk_UI_io_Set_SearchLightLumen(0, JZ_MATH_MAX(value1,value2)); 1212 JZsdk_Psdk_UI_io_Set_SearchLightLumen(0, JZ_MATH_MAX(value1,value2));
1213 } 1213 }
@@ -1282,7 +1282,7 @@ T_JZsdkReturnCode UIcontrol_Set_WarningLight_ModeControl(int DeviceName, int val @@ -1282,7 +1282,7 @@ T_JZsdkReturnCode UIcontrol_Set_WarningLight_ModeControl(int DeviceName, int val
1282 HalSend_type1Send_WarningLight_Status(UART_DEV_2, status, mode); 1282 HalSend_type1Send_WarningLight_Status(UART_DEV_2, status, mode);
1283 } 1283 }
1284 //如果psdk接口已经使用 1284 //如果psdk接口已经使用
1285 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 1285 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
1286 { 1286 {
1287 1287
1288 } 1288 }
@@ -1327,7 +1327,7 @@ T_JZsdkReturnCode UIcontrol_Set_WarningLight_Color(int DeviceName, int value1, i @@ -1327,7 +1327,7 @@ T_JZsdkReturnCode UIcontrol_Set_WarningLight_Color(int DeviceName, int value1, i
1327 HalSend_type1Send_WarningLight_Color(UART_DEV_2, color1, color2); 1327 HalSend_type1Send_WarningLight_Color(UART_DEV_2, color1, color2);
1328 } 1328 }
1329 //如果psdk接口已经使用 1329 //如果psdk接口已经使用
1330 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 1330 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
1331 { 1331 {
1332 1332
1333 } 1333 }
@@ -1440,7 +1440,7 @@ T_JZsdkReturnCode UIcontrol_Set_OutPutPower_Control(int DeviceName, int Value) @@ -1440,7 +1440,7 @@ T_JZsdkReturnCode UIcontrol_Set_OutPutPower_Control(int DeviceName, int Value)
1440 1440
1441 } 1441 }
1442 //如果psdk接口已经使用 1442 //如果psdk接口已经使用
1443 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 1443 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
1444 { 1444 {
1445 1445
1446 } 1446 }
@@ -1511,7 +1511,7 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Frequency(int DeviceName, int Freq @@ -1511,7 +1511,7 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Frequency(int DeviceName, int Freq
1511 HalSend_type1Send_SearchLight_Frequency(UART_DEV_2, Frequency); 1511 HalSend_type1Send_SearchLight_Frequency(UART_DEV_2, Frequency);
1512 } 1512 }
1513 //如果psdk接口已经使用 1513 //如果psdk接口已经使用
1514 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 1514 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
1515 { 1515 {
1516 //HalSend_type1Send_SearchLight_Frequency(UART_4G, GimbalPitchAngle); 1516 //HalSend_type1Send_SearchLight_Frequency(UART_4G, GimbalPitchAngle);
1517 } 1517 }
@@ -1547,7 +1547,7 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Mode(int DeviceName, int mode) @@ -1547,7 +1547,7 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Mode(int DeviceName, int mode)
1547 HalSend_type1Send_SearchLight_Mode(UART_DEV_2, mode); 1547 HalSend_type1Send_SearchLight_Mode(UART_DEV_2, mode);
1548 } 1548 }
1549 //如果psdk接口已经使用 1549 //如果psdk接口已经使用
1550 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 1550 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
1551 { 1551 {
1552 1552
1553 } 1553 }
@@ -1584,7 +1584,7 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Lumen(int DeviceName, int LeftLume @@ -1584,7 +1584,7 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Lumen(int DeviceName, int LeftLume
1584 HalSend_type1Send_SearchLight_Lumen(UART_DEV_2, LeftLumen, RightLumen); 1584 HalSend_type1Send_SearchLight_Lumen(UART_DEV_2, LeftLumen, RightLumen);
1585 } 1585 }
1586 //如果psdk接口已经使用 1586 //如果psdk接口已经使用
1587 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 1587 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
1588 { 1588 {
1589 //HalSend_type1Send_SearchLight_Lumen(LeftLumen, RightLumen); 1589 //HalSend_type1Send_SearchLight_Lumen(LeftLumen, RightLumen);
1590 } 1590 }
@@ -1621,7 +1621,7 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Temperature(int DeviceName, int Le @@ -1621,7 +1621,7 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Temperature(int DeviceName, int Le
1621 HalSend_type1Send_SearchLight_Temperature(UART_DEV_2, LeftTemperature, RightTemperature); 1621 HalSend_type1Send_SearchLight_Temperature(UART_DEV_2, LeftTemperature, RightTemperature);
1622 } 1622 }
1623 //如果psdk接口已经使用 1623 //如果psdk接口已经使用
1624 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 1624 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
1625 { 1625 {
1626 1626
1627 } 1627 }
@@ -1662,7 +1662,7 @@ T_JZsdkReturnCode UIcontrol_ObtainWarningLight_Status(int DeviceName, int status @@ -1662,7 +1662,7 @@ T_JZsdkReturnCode UIcontrol_ObtainWarningLight_Status(int DeviceName, int status
1662 HalSend_type1Send_WarningLight_Status(UART_DEV_2, status, mode); 1662 HalSend_type1Send_WarningLight_Status(UART_DEV_2, status, mode);
1663 } 1663 }
1664 //如果psdk接口已经使用 1664 //如果psdk接口已经使用
1665 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 1665 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
1666 { 1666 {
1667 //HalSend_type1Send_SearchLight_Frequency(UART_4G, GimbalPitchAngle); 1667 //HalSend_type1Send_SearchLight_Frequency(UART_4G, GimbalPitchAngle);
1668 } 1668 }
@@ -1698,7 +1698,7 @@ T_JZsdkReturnCode UIcontrol_ObtainWarningLight_Color(int DeviceName, int color1, @@ -1698,7 +1698,7 @@ T_JZsdkReturnCode UIcontrol_ObtainWarningLight_Color(int DeviceName, int color1,
1698 HalSend_type1Send_WarningLight_Color(UART_DEV_2, color1, color2); 1698 HalSend_type1Send_WarningLight_Color(UART_DEV_2, color1, color2);
1699 } 1699 }
1700 //如果psdk接口已经使用 1700 //如果psdk接口已经使用
1701 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 1701 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
1702 { 1702 {
1703 1703
1704 } 1704 }
@@ -1744,7 +1744,7 @@ T_JZsdkReturnCode UIcontrol_ObtainGimbal_Pitch(int DeviceName, int GimbalPitchAn @@ -1744,7 +1744,7 @@ T_JZsdkReturnCode UIcontrol_ObtainGimbal_Pitch(int DeviceName, int GimbalPitchAn
1744 HalSend_type1Send_Reply_GimbalPitchAngle(UART_DEV_2, GimbalPitchAngle); 1744 HalSend_type1Send_Reply_GimbalPitchAngle(UART_DEV_2, GimbalPitchAngle);
1745 } 1745 }
1746 //如果psdk接口已经使用 1746 //如果psdk接口已经使用
1747 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 1747 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
1748 { 1748 {
1749 JZsdk_Psdk_UI_io_Reply_GimbalPitchAngle(GimbalPitchAngle); 1749 JZsdk_Psdk_UI_io_Reply_GimbalPitchAngle(GimbalPitchAngle);
1750 } 1750 }
@@ -1843,7 +1843,7 @@ T_JZsdkReturnCode UIcontrol_Set_VideoMgmtPushIndex(int DeviceName, int Pushinde @@ -1843,7 +1843,7 @@ T_JZsdkReturnCode UIcontrol_Set_VideoMgmtPushIndex(int DeviceName, int Pushinde
1843 { 1843 {
1844 } 1844 }
1845 //如果psdk接口已经使用 1845 //如果psdk接口已经使用
1846 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 1846 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
1847 { 1847 {
1848 JZsdk_Psdk_UI_io_Set_VideoMgmtPush(JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, Pushindex); 1848 JZsdk_Psdk_UI_io_Set_VideoMgmtPush(JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, Pushindex);
1849 } 1849 }
@@ -1880,7 +1880,7 @@ T_JZsdkReturnCode UIcontrol_Set_ShutterSwitch(int DeviceName, int value) @@ -1880,7 +1880,7 @@ T_JZsdkReturnCode UIcontrol_Set_ShutterSwitch(int DeviceName, int value)
1880 { 1880 {
1881 } 1881 }
1882 //如果psdk接口已经使用 1882 //如果psdk接口已经使用
1883 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 1883 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
1884 { 1884 {
1885 } 1885 }
1886 #endif 1886 #endif
@@ -1916,7 +1916,7 @@ T_JZsdkReturnCode UIcontrol_Set_PseudoColor(int DeviceName, int value) @@ -1916,7 +1916,7 @@ T_JZsdkReturnCode UIcontrol_Set_PseudoColor(int DeviceName, int value)
1916 { 1916 {
1917 } 1917 }
1918 //如果psdk接口已经使用 1918 //如果psdk接口已经使用
1919 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 1919 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
1920 { 1920 {
1921 } 1921 }
1922 #endif 1922 #endif
@@ -1953,7 +1953,7 @@ T_JZsdkReturnCode UIcontrol_Set_PixelColorMode(int DeviceName, int value) @@ -1953,7 +1953,7 @@ T_JZsdkReturnCode UIcontrol_Set_PixelColorMode(int DeviceName, int value)
1953 { 1953 {
1954 } 1954 }
1955 //如果psdk接口已经使用 1955 //如果psdk接口已经使用
1956 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 1956 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
1957 { 1957 {
1958 } 1958 }
1959 #endif 1959 #endif
@@ -2013,7 +2013,7 @@ T_JZsdkReturnCode UIcontrol_Set_GasEnhancementColor(int DeviceName, int value) @@ -2013,7 +2013,7 @@ T_JZsdkReturnCode UIcontrol_Set_GasEnhancementColor(int DeviceName, int value)
2013 { 2013 {
2014 } 2014 }
2015 //如果psdk接口已经使用 2015 //如果psdk接口已经使用
2016 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 2016 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
2017 { 2017 {
2018 } 2018 }
2019 #endif 2019 #endif
@@ -2049,7 +2049,7 @@ T_JZsdkReturnCode UIcontrol_Set_SPCmode(int DeviceName, int value) @@ -2049,7 +2049,7 @@ T_JZsdkReturnCode UIcontrol_Set_SPCmode(int DeviceName, int value)
2049 { 2049 {
2050 } 2050 }
2051 //如果psdk接口已经使用 2051 //如果psdk接口已经使用
2052 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 2052 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
2053 { 2053 {
2054 } 2054 }
2055 #endif 2055 #endif
@@ -2085,7 +2085,7 @@ T_JZsdkReturnCode UIcontrol_Set_SpcAutoTime(int DeviceName, int value) @@ -2085,7 +2085,7 @@ T_JZsdkReturnCode UIcontrol_Set_SpcAutoTime(int DeviceName, int value)
2085 { 2085 {
2086 } 2086 }
2087 //如果psdk接口已经使用 2087 //如果psdk接口已经使用
2088 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 2088 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
2089 { 2089 {
2090 } 2090 }
2091 #endif 2091 #endif
@@ -2121,7 +2121,7 @@ T_JZsdkReturnCode UIcontrol_Set_TpcMode(int DeviceName, int value) @@ -2121,7 +2121,7 @@ T_JZsdkReturnCode UIcontrol_Set_TpcMode(int DeviceName, int value)
2121 { 2121 {
2122 } 2122 }
2123 //如果psdk接口已经使用 2123 //如果psdk接口已经使用
2124 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 2124 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
2125 { 2125 {
2126 } 2126 }
2127 #endif 2127 #endif
@@ -2157,7 +2157,7 @@ T_JZsdkReturnCode UIcontrol_Set_AutoBadPixelCorrectMode(int DeviceName, int valu @@ -2157,7 +2157,7 @@ T_JZsdkReturnCode UIcontrol_Set_AutoBadPixelCorrectMode(int DeviceName, int valu
2157 { 2157 {
2158 } 2158 }
2159 //如果psdk接口已经使用 2159 //如果psdk接口已经使用
2160 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 2160 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
2161 { 2161 {
2162 } 2162 }
2163 #endif 2163 #endif
@@ -2195,7 +2195,7 @@ T_JZsdkReturnCode UIcontrol_FreezeVideo(int DeviceName, int value) @@ -2195,7 +2195,7 @@ T_JZsdkReturnCode UIcontrol_FreezeVideo(int DeviceName, int value)
2195 { 2195 {
2196 } 2196 }
2197 //如果psdk接口已经使用 2197 //如果psdk接口已经使用
2198 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 2198 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
2199 { 2199 {
2200 } 2200 }
2201 #endif 2201 #endif
@@ -2232,7 +2232,7 @@ T_JZsdkReturnCode UIcontrol_CameraCorrectionMode(int DeviceName, int value) @@ -2232,7 +2232,7 @@ T_JZsdkReturnCode UIcontrol_CameraCorrectionMode(int DeviceName, int value)
2232 { 2232 {
2233 } 2233 }
2234 //如果psdk接口已经使用 2234 //如果psdk接口已经使用
2235 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 2235 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
2236 { 2236 {
2237 JZsdk_Psdk_UI_io_CameraCorrectMode(JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, value); 2237 JZsdk_Psdk_UI_io_CameraCorrectMode(JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, value);
2238 } 2238 }
@@ -2296,7 +2296,7 @@ T_JZsdkReturnCode UIcontrol_CameraRegionbox(int DeviceName, int value1, int valu @@ -2296,7 +2296,7 @@ T_JZsdkReturnCode UIcontrol_CameraRegionbox(int DeviceName, int value1, int valu
2296 { 2296 {
2297 } 2297 }
2298 //如果psdk接口已经使用 2298 //如果psdk接口已经使用
2299 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 2299 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
2300 { 2300 {
2301 } 2301 }
2302 #endif 2302 #endif
@@ -2409,7 +2409,7 @@ T_JZsdkReturnCode UIcontrol_SideLaser_Mode(int DeviceName, int value) @@ -2409,7 +2409,7 @@ T_JZsdkReturnCode UIcontrol_SideLaser_Mode(int DeviceName, int value)
2409 { 2409 {
2410 } 2410 }
2411 //如果psdk接口已经使用 2411 //如果psdk接口已经使用
2412 - if ( (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK ) 2412 + if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
2413 { 2413 {
2414 JZsdk_Psdk_UI_io_SideLaserMode(JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, value); 2414 JZsdk_Psdk_UI_io_SideLaserMode(JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, value);
2415 } 2415 }
@@ -2457,7 +2457,7 @@ T_JZsdkReturnCode UIcontrol_Broadcast_PlayStatus_end() @@ -2457,7 +2457,7 @@ T_JZsdkReturnCode UIcontrol_Broadcast_PlayStatus_end()
2457 HalSend_type1Send_Send_PlayStatus_end(UART_DEV_2); 2457 HalSend_type1Send_Send_PlayStatus_end(UART_DEV_2);
2458 } 2458 }
2459 //如果psdk接口已经使用 2459 //如果psdk接口已经使用
2460 - if (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) 2460 + if (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON)
2461 { 2461 {
2462 JZsdk_Psdk_UI_io_Reply_PlayStatus_end(); 2462 JZsdk_Psdk_UI_io_Reply_PlayStatus_end();
2463 } 2463 }
@@ -2490,7 +2490,7 @@ T_JZsdkReturnCode UIcontrol_Send_CameraStatus(int status) @@ -2490,7 +2490,7 @@ T_JZsdkReturnCode UIcontrol_Send_CameraStatus(int status)
2490 { 2490 {
2491 } 2491 }
2492 //如果psdk接口已经使用 2492 //如果psdk接口已经使用
2493 - if (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) 2493 + if (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON)
2494 { 2494 {
2495 #if APP_VERSION == APP_PSDK 2495 #if APP_VERSION == APP_PSDK
2496 JZsdk_Psdk_UI_io_Reply_Camera_Status(status); 2496 JZsdk_Psdk_UI_io_Reply_Camera_Status(status);
@@ -2524,7 +2524,7 @@ T_JZsdkReturnCode UIcontrol_Broadcast_OpusDecodeStatus(int status) @@ -2524,7 +2524,7 @@ T_JZsdkReturnCode UIcontrol_Broadcast_OpusDecodeStatus(int status)
2524 HalSend_type1Send_OpusDecodeStatus(UART_DEV_2, status); 2524 HalSend_type1Send_OpusDecodeStatus(UART_DEV_2, status);
2525 } 2525 }
2526 //如果psdk接口已经使用 2526 //如果psdk接口已经使用
2527 - if (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) 2527 + if (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON)
2528 { 2528 {
2529 } 2529 }
2530 2530
@@ -2554,7 +2554,7 @@ T_JZsdkReturnCode UIcontrol_Broadcast_SecondaryDeviceName(int name) @@ -2554,7 +2554,7 @@ T_JZsdkReturnCode UIcontrol_Broadcast_SecondaryDeviceName(int name)
2554 HalSend_type1Send_Reply_SecondaryDeviceName(UART_DEV_2 ,name, 0); 2554 HalSend_type1Send_Reply_SecondaryDeviceName(UART_DEV_2 ,name, 0);
2555 } 2555 }
2556 //如果psdk接口已经使用 2556 //如果psdk接口已经使用
2557 - if (JZsdk_Get_Psdk_UIcontrol_UseFlag() == JZ_FLAGCODE_ON) 2557 + if (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON)
2558 { 2558 {
2559 //JZsdk_Psdk_UI_io_Reply_Camera_Status(status); 2559 //JZsdk_Psdk_UI_io_Reply_Camera_Status(status);
2560 } 2560 }