uart底层优化,opus优化,心跳帧优化,升级模块增加
osal层增加,hal层增加,日志层修改逻辑
正在显示
47 个修改的文件
包含
2612 行增加
和
650 行删除
| @@ -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(¤t_time); | ||
| 187 | - info = localtime(¤t_time); | ||
| 188 | - strftime(timeString, sizeof(timeString), "%Y%m%d_%H-%M-%S", info); | ||
| 189 | - snprintf(LogFileName, sizeof(LogFileName), "/root/sdcard/JZLOG/%d_%s", LogNum, timeString); | ||
| 190 | - | ||
| 191 | - printf("LogFileName:%s\n",LogFileName); | ||
| 192 | - | ||
| 193 | - // 在主函数或初始化阶段初始化互斥锁 | ||
| 194 | - pthread_mutex_init(&LogWriteMutex, NULL); | ||
| 195 | - | ||
| 196 | - //5、打开记录文件 | ||
| 197 | - logFile = fopen(LogFileName, "w"); | ||
| 198 | - if (logFile == NULL) { | ||
| 199 | - // 文件打开失败,输出错误消息 | ||
| 200 | - printf("Failed to open file: %s", LogFileName); | 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(¤tTime); | ||
| 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 |
| @@ -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 | } |
Module/CommonMod/Upgrade/Upgrade.h
0 → 100644
| 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 |
-
请 注册 或 登录 后发表评论