作者 潘浩彬

合并分支 'dev' 到 'master'

Dev



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

要显示太多修改。

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

... ... @@ -106,7 +106,23 @@
"jzsdk_semaphore.h": "c",
"jzsdk_filesystm.h": "c",
"jzsdk_memoryadapter.h": "c",
"jzsdk_errorcodedef.h": "c"
"jzsdk_errorcodedef.h": "c",
"jzsdk_timer.h": "c",
"jzsdk_framecomparsion_6aframe.h": "c",
"jzsdk_uart.h": "c",
"audiomange.h": "c",
"pcmaudiofile.h": "c",
"megaphone_playback.h": "c",
"audiomange_param.h": "c",
"jzsdk_platform.h": "c",
"presettask.h": "c",
"volumelimit.h": "c",
"megaphone_realtimemp2.h": "c",
"jzirc_lib.h": "c",
"hardwareinfo.h": "c",
"jzsdk_attributedef.h": "c",
"msp_types.h": "c",
"attribute.h": "c"
},
"Codegeex.GenerationPreference": "automatic",
"C_Cpp.dimInactiveRegions": false
... ...
# 编译链的配置
#1、编译链与设备类型的选择
set(DEVICE_NAME JZ_H10)
set(DEVICE_NAME JZ_H1T)
#上一行为禁止修改行
message("**************************JZSDK构建编译开始***************************\n")
... ...
... ... @@ -20,7 +20,10 @@ extern "C" {
/* 常亮定义*/
#include "./JZsdk_typedef/JZsdk_typedef.h"
#include "./JZsdk_typedef/JZsdk_AttributeDef.h"
#include "./JZsdk_ReturnCode/JZsdk_ReturnCode.h"
#include "./JZsdk_Platform/JZsdk_Platform.h"
#include "./JZsdk_InsCode.h"
... ...
... ... @@ -23,21 +23,28 @@ extern "C"
/* Exported types ------------------------------------------------------------*/
typedef enum JZ_DEVICE_PORT_TYPE
{
DEVICE_PSDK = 0x1000, // psdk功能
UART_4G = 0x1001, // 4G功能
UART_DEV_1 = 0x1002, // 1号设备功能
UART_DEV_2 = 0x1003, // 2号设备功能
UART_DEV_3 = 0x1004, // 3号设备功能
UART_DEV_4 = 0x1005, // 4号设备功能
UART_DEV_5 = 0x1006, // 5号设备功能
UART_USB_1 = 0x1100, // usb设备
UART_USB_2 = 0x1101, // usb设备
UART_USB_3 = 0x1102, // usb设备
UART_USB_4 = 0x1103, // usb设备
UART_USB_5 = 0x1104, // usb设备
HAL_DATA_TRANSMISSION = 0x1200, // hal定制的特殊数据传播
DEVICE_PSDK = 0x0000, // psdk功能
UART_4G = 0x0010, // 4G功能
UART_DEV_1 = 0x0011, // 1号设备功能
UART_DEV_2 = 0x0012, // 2号设备功能
UART_DEV_3 = 0x0013, // 3号设备功能
UART_DEV_4 = 0x0014, // 4号设备功能
UART_DEV_5 = 0x0015, // 5号设备功能
USB_DEV_1 = 0x0020, // usb设备
USB_DEV_2 = 0x0021, // usb设备
USB_DEV_3 = 0x0022, // usb设备
USB_DEV_4 = 0x0023, // usb设备
USB_DEV_5 = 0x0024, // usb设备
NET_DEV_1 = 0x0030, // 网络设备
NET_DEV_2 = 0x0031, // 网络设备
NET_DEV_3 = 0x0032, // 网络设备
HAL_DATA_TRANSMISSION = 0x0040, // hal定制的特殊数据传播
HAL_MAX = 0x0050, // hal最大值
COMBINE_DEVICE = 0x1998, // 组合设备
NO_SPECIFIED = 0x1999, // 无制定设备
... ...
... ... @@ -34,6 +34,8 @@ typedef enum {
JZ_INSCODE_5AFRAME_FRAME_POWER_STATUS = 0x10000110, //电源状态设置
JZ_INSCODE_5AFRAME_PRESET_TASK = 0x10000120, //预置任务
JZ_INSCODE_5AFRAME_REALTIMEMP2_START = 0x10000200, //开启实时MP2
JZ_INSCODE_5AFRAME_REALTIMEMP2_UNLIMIT_TRANSMISSION = 0x10000201, //无限制传输实时MP2
JZ_INSCODE_5AFRAME_REALTIMEMP2_STOP = 0x10000202, //结束实时MP2
... ... @@ -72,6 +74,8 @@ typedef enum {
JZ_INSCODE_5AFRAME_CHECKSTATUS_SOFTWAREVERSION = 0x10000625, //查询软件版本号
JZ_INSCODE_5AFRAME_CHECKSTATUS_LOOPPLAY = 0x10000626, //查询是否打开循环
JZ_INSCODE_5AFRAME_CHECKSTATUS_ADUIO_LOOP_INTERVAL = 0x10000639, //查询音频循环间隔
JZ_INSCODE_5AFRAME_CHECKSTATUS_CURRENT_PLAYTIME = 0x10000640, //查询当前播放时间回调是否打开
JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSTONE = 0x10000627, //查询音色
JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSSPEED = 0x10000628, //查询语速
... ... @@ -94,6 +98,9 @@ typedef enum {
JZ_INSCODE_5AFRAME_DELETE_AUDIO = 0x10000700, //删除音频
JZ_INSCODE_5AFRAME_DELETE_VOICE_RECORD = 0x10000710, //删除录音
JZ_INSCODE_5AFRAME_DELETE_VIDEO_RECORD = 0x10000720, //删除视频
JZ_INSCODE_5AFRAME_RENAME_AUDIO = 0x10000730, //重命名音频
JZ_INSCODE_5AFRAME_RENAME_VOICE_RECORD = 0x10000740, //重命名录音
JZ_INSCODE_5AFRAME_RENAME_VIDEO_RECORD = 0x10000750, //重命名视频
JZ_INSCODE_5AFRAME_TTS_SET_TONE = 0x10000801, //TTS设置音色
... ... @@ -103,15 +110,25 @@ typedef enum {
JZ_INSCODE_5AFRAME_TTS_TRANS_STOP = 0x10000805, //TTS发送完毕
JZ_INSCODE_5AFRAME_TTS_TRANS_LIMIT_TRANSMISSION = 0x10000806, //TTS正在定长接收
JZ_INSCODE_5AFRAME_OPUS_TRANS_START = 0x10000900, //opus传输开始
JZ_INSCODE_5AFRAME_OPUS_TRAN_UNLIMIT_TRANSMISSION = 0x10000901, //opus 无限制传输中
JZ_INSCODE_5AFRAME_CURRENT_PLAY_TIME = 0x10004406, //设置播放回传
JZ_INSCODE_5AFRAME_OPUS_TRANS_START_1 = 0x10000900, //opus传输开始1型
JZ_INSCODE_5AFRAME_OPUS_TRANS_START_2 = 0x10000901, //opus传输开始2型
//JZ_INSCODE_5AFRAME_OPUS_TRAN_UNLIMIT_TRANSMISSION = 0x10000901, //opus 无限制传输中
JZ_INSCODE_5AFRAME_OPUS_TRANS_LIMIT_TRANSMISSION = 0x10000903, //opus传输中
JZ_INSCODE_5AFRAME_OPUS_TRANS_STOP = 0x10000902, //opus传输结束
JZ_INSCODE_5AFRAME_OPUS_TRANS_STOP_AND_CHECK = 0x10000904, //opus传输结束并校验
JZ_INSCODE_5AFRAME_OPUS_PLAY = 0x10000910, //opus播放
JZ_INSCODE_5AFRAME_PCM_PLAY = 0x10000920, //pcm播放
JZ_INSCODE_5AFRAME_PCM_GETPCMLIST = 0x10000930, //获pcm列表
JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_START = 0x10000A00, //开启opus实时语音
JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_UNLIMIT_TRANSMISSION = 0x10000A01, //无限制传输opus实时语音
JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_STOP = 0x10000A02, //结束opus实时语音
... ... @@ -138,6 +155,12 @@ typedef enum {
JZ_INSCODE_5AFRAME_OUTPUTPOWER_CONTROL = 0x10001000, //对外供电开关
JZ_INSCODE_5AFRAME_CHECKSTATUS_OUTPUTPOWER = 0x10001001, //对外供电查询
JZ_INSCODE_5AFRAME_UPGRADE_PERPARE = 0x10001100, //升级准备
JZ_INSCODE_5AFRAME_UPGRADE_SEND_CHECKCODE = 0x10001101, //升级发送校验码
JZ_INSCODE_5AFRAME_UPGRADE_STRAT = 0x10001102, //升级传输开始
JZ_INSCODE_5AFRAME_UPGRADE_TRANS = 0x10001103, //升级传输数据
JZ_INSCODE_5AFRAME_UPGRADE_END = 0x10001104, //升级传输结束
//5B类帧
JZ_INSCODE_5BFRAME_FRAME = 0x10004000, //发送帧
... ... @@ -148,6 +171,8 @@ typedef enum {
JZ_INSCODE_5BFRAME_ALL_SERIAL_NUMBER = 0x10004105, //全序列号查询
JZ_INSCODE_5BFRAME_DEVICE_MESSAGE = 0x10004107, //设备信息
JZ_INSCODE_5BFRAME_PRESET_TASK = 0x10004120, //预置任务
JZ_INSCODE_5BFRAME_SUCESS = 0x10004200, //操作成功
JZ_INSCODE_5BFRAME_FILE_CHECK_DEFEAT = 0x10004201, //校验失败
JZ_INSCODE_5BFRAME_FILE_DECODE_DEFEAT = 0x10004202, //解码失败
... ... @@ -168,7 +193,8 @@ typedef enum {
JZ_INSCODE_5BFRAME_TTS_SPEED = 0x10004403, //发送tts语速
JZ_INSCODE_5BFRAME_AUDIO_PLAYFILENAME = 0x10004404, //当前播放的音频名字
JZ_INSCODE_5BFRAME_CHECKSTATUS_AUDIO_DETAIL_MESSAGE = 0x10004405, //查询音频详细信息
JZ_INSCODE_5BFRAME_CURRENT_PLAY_TIME = 0x10004406, //当前播放时间
JZ_INSCODE_5BFRAME_CHECKSTATUS_CURRENT_PLAYTIME = 0x10004407, //查询当前播放时间回调是否打开
JZ_INSCODE_5BFRAME_GIMBAL_PITCH = 0x10004500, //云台俯仰角度
... ... @@ -195,8 +221,18 @@ typedef enum {
JZ_INSCODE_5BFRAME_CHECKSTATUS_OUTPUTPOWER = 0x10004900, //对外供电查询
JZ_INSCODE_5BFRAME_OPUS_DECODE_STATUS = 0x10005000, //opus解码状态
JZ_INSCODE_5BFRAME_OPUS_TRANS_STOP_AND_CHECK = 0x10000904, //opus传输结束并校验
JZ_INSCODE_5BFRAME_OPUS_TRANS_STOP_AND_CHECK = 0x10005904, //opus传输结束并校验
JZ_INSCODE_5BFRAME_OPUSLIST_START = 0x10005910, //开启发送opus列表帧
JZ_INSCODE_5BFRAME_OPUSLIST_TRANS = 0x10005911, //传输opus列表帧
JZ_INSCODE_5BFRAME_OPUSLIST_END = 0x10005912, //传输opus列表帧
JZ_INSCODE_5BFRAME_UPGRADE_PERPARE = 0x10001100, //升级准备
JZ_INSCODE_5BFRAME_UPGRADE_SEND_CHECKCODE = 0x10001101, //升级发送校验码
JZ_INSCODE_5BFRAME_UPGRADE_STRAT = 0x10001102, //升级传输开始
JZ_INSCODE_5BFRAME_UPGRADE_TRANS = 0x10001103, //升级传输数据
JZ_INSCODE_5BFRAME_UPGRADE_END = 0x10001104, //升级传输结束
JZ_INSCODE_5BFRAME_UPGRADE_CHECKRESULT = 0x10001105, //升级校验结果
//6A类
JZ_INSCODE_6AFRAME_FRAME = 0x10008000, //发送帧
... ...
/**
********************************************************************
* @file JZsdk_typedef.h
* @file JZsdk_Platform.h
* 用于记录各类码的表
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_TYPEDEF_H
#define JZSDK_TYPEDEF_H
#ifndef JZSDK_PLATFORM_H
#define JZSDK_PLATFORM_H
/* Includes ------------------------------------------------------------------*/
#include "../JZsdk_typedef/JZsdk_typedef.h"
... ... @@ -21,6 +21,29 @@ extern "C" {
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
#define JZSDK_FILE_NAME_SIZE_MAX (128) //文件名最大长度128
#define JZSDK_FILE_PATH_SIZE_MAX (256) //文件路径最大长度256
#define JZSDK_CMD_SIZE (256) //cmd指令最大长度
#define JZSDK_DIR_SIZE (256) //目录名最大长度
typedef struct {
U16_t year;
U8_t month;
U8_t day;
U8_t hour;
U8_t minute;
U8_t second;
} T_JZsdkTime;
typedef struct T_JZsdkFileInfo{
U32_t size;
T_JZsdkTime createTime;
T_JZsdkTime modifyTime;
char path[JZSDK_FILE_PATH_SIZE_MAX];
bool isDir;
} T_JZsdkFileInfo;
/* Exported macro ------------------------------------------------------------*/
... ...
/**
********************************************************************
* @file JZsdk_AttributeDef.h
* 用于记录属性的表
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_ATTRIBUTEDEF_H
#define JZSDK_ATTRIBUTEDEF_H
/* Includes ------------------------------------------------------------------*/
#include "./JZsdk_typedef.h"
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
//GPS时间
typedef U32_t T_JZsdkAttributeGpsTime;
//GPS日期
typedef U32_t T_JZsdkAttributeGpsDate;
//gps经度
typedef T_JZsdkVector3d T_JZsdkAttributeGpsPosition;
/* Exported functions --------------------------------------------------------*/
#ifdef __cplusplus
}
#endif
#endif
... ...
... ... @@ -27,6 +27,8 @@ typedef enum {
JZ_ERROR_SYSTEM_MODULE_CODE_HARDLY_FAILURE = 0x0003, //严重错误
JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER = 0x0002, //文件指针错误
JZ_ERROR_SYSTEM_MODULE_CODE_MEMORY_ALLOC_FAILED = 0x0004, //内存分配失败
JZ_ERROR_SYSTEM_MODULE_CODE_IS_BUSY = 0x0005, //忙错误
JZ_ERROR_SYSTEM_MODULE_CODE_CHECK_CODE_ERROR = 0x0006, //校验码错误
} JZ_SYSTEM_Code;
typedef enum {
... ...
... ... @@ -54,6 +54,38 @@ typedef void *T_JZTaskHandle;
typedef void *T_JZsdkMutexHandle;
//信号量权柄
typedef void *T_JZsdkSemaHandle;
//文件权柄
typedef void *T_JZsdkFileHandle;
//目录权柄
typedef void *T_JZsdkDirHandle;
typedef struct T_JZsdkVector3d
{
int x;
int y;
int z;
}T_JZsdkVector3d;
typedef struct T_JZsdkVector3f
{
F32_t x;
F32_t y;
F32_t z;
}T_JZsdkVector3f;
typedef struct {
int pitch; /*!< Specifies int32 value of pitch for attitude. */
int roll; /*!< Specifies int32 value of roll for attitude */
int yaw; /*!< Specifies int32 value of yaw for attitude */
} T_JZsdkAttitude3d;
typedef struct {
F32_t pitch; /*!< Specifies float value of pitch for attitude. */
F32_t roll; /*!< Specifies float value of roll for attitude */
F32_t yaw; /*!< Specifies float value of yaw for attitude */
} T_JZsdkAttitude3f;
/* Exported types ------------------------------------------------------------*/
... ...
... ... @@ -12,6 +12,16 @@ int JZsdk_Get_FrameSequence(char *DealBuf)
return DealBuf[6];
}
/*************************
*
* 获取帧的长度
*
* ***************************/
int JZsdk_Get_FrameLength(char *DealBuf)
{
return ((int)DealBuf[3]) << 8 + DealBuf[4];
}
/***************************
* 、
*
... ...
... ... @@ -29,6 +29,8 @@ extern "C" {
/* Exported functions --------------------------------------------------------*/
int JZsdk_Get_FrameSequence(char *DealBuf);
int JZsdk_Get_FrameLength(char *DealBuf);
int JZsdk_FrameComparsion(char *getdata, int len);
#ifdef __cplusplus
... ...
... ... @@ -52,6 +52,11 @@ static int Comparison_5AFRAME_FirstLevelCode_0x50(char *getdata)
return JZ_INSCODE_5AFRAME_DEVICE_MESSAGE;
break;
//预设任务帧
case 0x60:
return JZ_INSCODE_5AFRAME_PRESET_TASK;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
... ... @@ -153,6 +158,11 @@ static int Comparison_5AFRAME_FirstLevelCode_0x52(char *getdata)
case 0x22:
return JZ_INSCODE_5AFRAME_AMPLIFIER_AUTO;
break;
//设置回传时间
case 0x30:
return JZ_INSCODE_5AFRAME_CURRENT_PLAY_TIME;
break;
//调节音量
case 0x10:
... ... @@ -205,6 +215,11 @@ static int Comparison_5AFRAME_FirstLevelCode_0x53(char *getdata)
return JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSSPEED;
break;
//查询是否打开了播放时间回传
case 0x08:
return JZ_INSCODE_5AFRAME_CHECKSTATUS_CURRENT_PLAYTIME;
break;
//查询软件版本号
case 0xf1:
return JZ_INSCODE_5AFRAME_CHECKSTATUS_SOFTWAREVERSION;
... ... @@ -314,7 +329,7 @@ static int Comparison_5AFRAME_FirstLevelCode_0x58(char *getdata)
//二级功能位
switch (getdata[8])
{
//设置音色
//获取音乐列表
case 0x01:
return JZ_INSCODE_5AFRAME_AUDIO_GETMUSICLIST;
break;
... ... @@ -323,6 +338,11 @@ static int Comparison_5AFRAME_FirstLevelCode_0x58(char *getdata)
case 0x03:
return JZ_INSCODE_5AFRAME_CHECKSTATUS_AUDIO_DETAIL_MESSAGE;
break;
//获取pcm列表
case 0x10:
return JZ_INSCODE_5AFRAME_PCM_GETPCMLIST;
break;
default:
break;
... ... @@ -334,10 +354,19 @@ static int Comparison_5AFRAME_FirstLevelCode_0x59(char *getdata)
//二级功能位
switch (getdata[8])
{
case 0x10:
return JZ_INSCODE_5AFRAME_OPUS_PLAY;
break;
//opus录音传输
//opus传输开始
case 0xF1:
return JZ_INSCODE_5AFRAME_OPUS_TRANS_START;
return JZ_INSCODE_5AFRAME_OPUS_TRANS_START_1;
break;
//opus传输二型
case 0xF5:
return JZ_INSCODE_5AFRAME_OPUS_TRANS_START_2;
break;
//opus传输结束
... ... @@ -604,6 +633,45 @@ static int Comparison_5AFRAME_FirstLevelCode_0x6F(char *getdata)
}
}
//一级功能码 升级帧
static int Comparison_5AFRAME_FirstLevelCode_0xA1(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//升级准备
case 0x01:
return JZ_INSCODE_5AFRAME_UPGRADE_PERPARE;
break;
//升级校验码
case 0x02:
return JZ_INSCODE_5AFRAME_UPGRADE_SEND_CHECKCODE;
break;
//升级数据发送开始
case 0x03:
return JZ_INSCODE_5AFRAME_UPGRADE_STRAT;
break;
//升级数据发送结束
case 0x04:
return JZ_INSCODE_5AFRAME_UPGRADE_END;
break;
//升级发送数据
case 0xF1:
return JZ_INSCODE_5AFRAME_UPGRADE_TRANS;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
/******************************************************************
回复帧对比
... ... @@ -745,7 +813,9 @@ int JZsdk_5AFrameComparsion(char *getdata, int len)
return Comparison_5AFRAME_FirstLevelCode_0x6F(getdata);
break;
//一级功能码 升级功能
case 0xA1:
return Comparison_5AFRAME_FirstLevelCode_0xA1(getdata);
break;
//一级功能码
... ...
... ... @@ -310,7 +310,9 @@ static int Comparison_5BFRAME_FirstLevelCode_0x66(char *getdata)
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}//一级功能码是回复警灯颜色
}
//一级功能码是回复警灯颜色
static int Comparison_5BFRAME_FirstLevelCode_0x67(char *getdata)
{
//二级功能位
... ... @@ -326,7 +328,9 @@ static int Comparison_5BFRAME_FirstLevelCode_0x67(char *getdata)
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}//一级功能码是回复温度/序列号查询
}
//一级功能码是回复温度/序列号查询
static int Comparison_5BFRAME_FirstLevelCode_0x69(char *getdata)
{
//二级功能位
... ... @@ -347,6 +351,50 @@ static int Comparison_5BFRAME_FirstLevelCode_0x69(char *getdata)
break;
}
}
//一级功能码 升级帧
static int Comparison_5AFRAME_FirstLevelCode_0xA1(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//升级准备
case 0x01:
return JZ_INSCODE_5BFRAME_UPGRADE_PERPARE;
break;
//升级校验码
case 0x02:
return JZ_INSCODE_5BFRAME_UPGRADE_SEND_CHECKCODE;
break;
//升级数据发送开始
case 0x03:
return JZ_INSCODE_5BFRAME_UPGRADE_STRAT;
break;
//升级数据发送结束
case 0x04:
return JZ_INSCODE_5BFRAME_UPGRADE_END;
break;
//升级数据校验结果
case 0x05:
return JZ_INSCODE_5BFRAME_UPGRADE_CHECKRESULT;
break;
//升级发送数据
case 0xF1:
return JZ_INSCODE_5BFRAME_UPGRADE_TRANS;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
/******************************************************************
回复帧对比
... ... @@ -428,6 +476,9 @@ int JZsdk_5BFrameComparsion(char *getdata, int len)
return Comparison_5BFRAME_FirstLevelCode_0x69(getdata);
break;
case 0xA1:
return Comparison_5AFRAME_FirstLevelCode_0xA1(getdata);
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
... ...
... ... @@ -20,7 +20,7 @@ static int Comparison_6BFRAME_FirstLevelCode_0x6F(char *getdata)
//查询特殊变量
case 0x54:
return JZ_INSCODE_6BFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME;
return JZ_INSCODE_6BFRAME_CHECK_SPECIAL_PARAMETERS;
break;
default:
... ...
... ... @@ -48,6 +48,15 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len)
*str_len = 12;
}
break;
case JZ_INSCODE_5AFRAME_PRESET_TASK:
{
unsigned char sendbuf[12] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0C ,0x00 ,0x00 ,0x50 ,0x60 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5AFRAME_AUDIO_STOP:
{
char sendbuf[12] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0C ,0x00 ,0x00 ,0x52 ,0x06 ,0x00 ,0x00 ,0x23};
... ... @@ -276,6 +285,14 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len)
}
break;
case JZ_INSCODE_5BFRAME_PRESET_TASK:
{
unsigned char sendbuf[12] = {0x5B ,0x5B ,0x77 ,0x00 ,0x0C ,0x00 ,0x00 ,0x50 ,0x60 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_SUCESS:
{
char sendbuf[12] = {0x5B, 0x5B, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0x23};
... ... @@ -308,6 +325,12 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len)
}
break;
case JZ_INSCODE_5BFRAME_CURRENT_PLAY_TIME:
{
char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0d, 0x00, 0x00, 0x52, 0x30, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 13;
}
case JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS_END:
{
... ... @@ -375,6 +398,15 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len)
}
break;
case JZ_INSCODE_5BFRAME_CHECKSTATUS_CURRENT_PLAYTIME:
{
char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0x08, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_MUSICLIST_START:
{
char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x23};
... ... @@ -416,6 +448,28 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len)
}
break;
case JZ_INSCODE_5BFRAME_OPUSLIST_START:
{
char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0x11, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_OPUSLIST_TRANS:
{
char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0x12, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_OPUSLIST_END:
{
char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_OPUS_DECODE_STATUS:
... ... @@ -514,7 +568,45 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len)
}
break;
case JZ_INSCODE_5BFRAME_UPGRADE_PERPARE:
{
char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0xA1, 0x01, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_UPGRADE_SEND_CHECKCODE:
{
char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0xA1, 0x02, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_UPGRADE_STRAT:
{
char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0xA1, 0x03, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_UPGRADE_END:
{
char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0xA1, 0x04, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_UPGRADE_CHECKRESULT:
{
char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0xA1, 0x05, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
/********************************************************************************************************************************************************
*
... ...
... ... @@ -14,16 +14,18 @@
#include <unistd.h>
#include <sys/types.h>
#define JZSDK_LOG_NAME "JZLOG"
#define JZSDK_LOG_INDEX_FILE_NAME "/root/sdcard/JZLOG/thelast"
#define JZSDK_LOG_PATH "/root/sdcard/JZLOG/"
#define JZSDK_LOG_MAX_COUNT 20
static char logFilePath[128];
#define LOG_GRADE JZSDK_LOGGER_CONSOLE_LOG_LEVEL_INFO
// 定义全局互斥锁
static pthread_mutex_t LogWriteMutex = PTHREAD_MUTEX_INITIALIZER;
/* 全局变量 ------------------------------------------------------------------*/
static struct timeval g_start_time;
static FILE *logFile = NULL;
static char LogFileName[JZSDK_FILENAME_SIZE];
static FILE *logFileCnt = NULL;
static int Logger_init_flag = JZ_FLAGCODE_OFF;
/* 函数声明 ------------------------------------------------------------------*/
... ... @@ -142,7 +144,7 @@ T_JZsdkReturnCode createJZLOGFolder()
int ReadLogNumFromFile()
{
const char *path = "/root/sdcard/JZLOG/thelast";
const char *path = JZSDK_LOG_INDEX_FILE_NAME;
int logNum = 0;
FILE *file = fopen(path, "r");
... ... @@ -170,44 +172,102 @@ int ReadLogNumFromFile()
T_JZsdkReturnCode JZsdk_LoggerInit()
{
//1、记录启动时间
gettimeofday(&g_start_time, 0);
//2、检查是否存在log文件,不在则创建
createJZLOGFolder();
//3、获取本地log个数
int LogNum = ReadLogNumFromFile();
//4、获取本地时间,拼接出log文件名
time_t current_time;
struct tm *info;
char timeString[80];
time(&current_time);
info = localtime(&current_time);
strftime(timeString, sizeof(timeString), "%Y%m%d_%H-%M-%S", info);
snprintf(LogFileName, sizeof(LogFileName), "/root/sdcard/JZLOG/%d_%s", LogNum, timeString);
printf("LogFileName:%s\n",LogFileName);
// 在主函数或初始化阶段初始化互斥锁
pthread_mutex_init(&LogWriteMutex, NULL);
//5、打开记录文件
logFile = fopen(LogFileName, "w");
if (logFile == NULL) {
// 文件打开失败,输出错误消息
printf("Failed to open file: %s", LogFileName);
int ret;
unsigned int logFileIndex = 0;
unsigned int currentLogFileIndex;
JZsdk_Osal_Mkdir(JZSDK_LOG_PATH);
char systemCmd[64]; // 用于存储系统命令
char folderName[JZSDK_FILE_NAME_SIZE_MAX];
time_t currentTime = time(NULL);
struct tm *localTime = localtime(&currentTime);
if (localTime == NULL) {
printf("Get local time error.\r\n");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//6、写入开始时间
char logMessage[256];
snprintf(logMessage,256,"LOG_FILE:%s\n",LogFileName);
fprintf(logFile, "%s", logMessage);
fflush(logFile);
if (access(JZSDK_LOG_NAME, F_OK) != 0) {
sprintf(folderName, "mkdir %s", JZSDK_LOG_NAME);
ret = system(folderName);
if (ret != 0) {
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
}
logFileCnt = fopen(JZSDK_LOG_INDEX_FILE_NAME, "rb+");
if (logFileCnt == NULL)
{
logFileCnt = fopen(JZSDK_LOG_INDEX_FILE_NAME, "wb+");
if (logFileCnt == NULL)
{
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
}
else
{
ret = fseek(logFileCnt, 0, SEEK_SET);
if (ret != 0)
{
printf("Seek log count file error, ret: %d\r\n", ret);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
ret = fread((uint16_t *) &logFileIndex, 1, sizeof(uint16_t), logFileCnt);
if (ret != sizeof(uint16_t))
{
printf("Read log file index error.\r\n");
}
}
currentLogFileIndex = logFileIndex;
logFileIndex++;
ret = fseek(logFileCnt, 0, SEEK_SET);
if (ret != 0)
{
printf("Seek log file error, ret: %d\r\n", ret);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
ret = fwrite((unsigned int *) &logFileIndex, 1, sizeof(unsigned int), logFileCnt);
if (ret != sizeof(unsigned int))
{
printf("Write log file index error.\r\n");
fclose(logFileCnt);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
fclose(logFileCnt);
//filePath : /root/sdcard/Logs/_%04d_%04d%02d%02d_%02d-%02d-%02d.log
sprintf(logFilePath, "%s%04d_%04d%02d%02d_%02d-%02d-%02d.log", JZSDK_LOG_PATH, currentLogFileIndex,
localTime->tm_year + 1900, localTime->tm_mon + 1, localTime->tm_mday,
localTime->tm_hour, localTime->tm_min, localTime->tm_sec);
logFile = fopen(logFilePath, "wb+");
if (logFile == NULL)
{
printf("Open filepath time error.");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
if (logFileIndex >= JZSDK_LOG_MAX_COUNT)
{
sprintf(systemCmd, "rm -rf %s_%04d*.log", JZSDK_LOG_PATH, currentLogFileIndex - JZSDK_LOG_MAX_COUNT);
ret = system(systemCmd);
if (ret != 0) {
printf("Remove file error, ret:%d.\r\n", ret);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
}
sprintf(systemCmd, "ln -sfrv %s " JZSDK_LOG_NAME "/latest.log", logFilePath);
system(systemCmd);
//dfclose(logFile);
//打开初始化完成的flag
Logger_init_flag = JZ_FLAGCODE_ON;
... ... @@ -215,7 +275,11 @@ T_JZsdkReturnCode JZsdk_LoggerInit()
//设立监控
Log_Monitor();
JZSDK_LOG_INFO("%s", logFilePath);
JZSDK_LOG_INFO("log初始化完成");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
T_JZsdkReturnCode JZsdk_LoggerDeInit()
... ... @@ -228,64 +292,24 @@ T_JZsdkReturnCode JZsdk_LoggerDeInit()
T_JZsdkReturnCode writeToLogFile(const char *data)
{
// 加锁
pthread_mutex_lock(&LogWriteMutex);
//logFile = fopen(LogFileName, "a"); // 使用"a"模式打开文件,以在末尾追加数据
// if (logFile == NULL) {
// // 文件打开失败,输出错误消息
// printf("Failed to open file: %s", LogFileName);
// pthread_mutex_unlock(&LogWriteMutex);
// return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
// }
if (logFile == NULL)
{
printf("Failed to open file: %s", LogFileName);
pthread_mutex_unlock(&LogWriteMutex);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
fprintf(logFile, "%s", data); // 写入新的数据
fflush(logFile);
//fclose(logFile);
// 解锁
pthread_mutex_unlock(&LogWriteMutex);
}
T_JZsdkReturnCode HexToLogFile(const char *data)
{
// 加锁
pthread_mutex_lock(&LogWriteMutex);
// logFile = fopen(LogFileName, "a"); // 使用"a"模式打开文件,以在末尾追加数据
// if (logFile == NULL) {
// // 文件打开失败,输出错误消息
// printf("Failed to open file: %s", LogFileName);
// pthread_mutex_unlock(&LogWriteMutex);
// return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
// }
if (logFile == NULL)
{
printf("Failed to open file: %s", LogFileName);
pthread_mutex_unlock(&LogWriteMutex);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
fprintf(logFile, "%x ", data[0]); // 写入新的数据
fflush(logFile);
//fclose(logFile);
// 解锁
pthread_mutex_unlock(&LogWriteMutex);
}
... ...
... ... @@ -55,7 +55,7 @@ static T_JZsdkReturnCode JZsdk_Check_Src32(unsigned char *DIR, unsigned char *ch
if (SRC_CheckSum != LocalCheckSum)
{
JZSDK_LOG_ERROR("checksum error local:%x src:%x", LocalCheckSum, SRC_CheckSum);
ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
ret = JZ_ERROR_SYSTEM_MODULE_CODE_CHECK_CODE_ERROR;
}
else
{
... ... @@ -83,7 +83,7 @@ static T_JZsdkReturnCode JZsdk_Check_Md5(unsigned char *DIR, unsigned char *chec
if (memcmp(md5, checksum, 21) != 0)
{
JZSDK_LOG_ERROR("checksum error\n");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
return JZ_ERROR_SYSTEM_MODULE_CODE_CHECK_CODE_ERROR;
}
return ret;
... ...
/**
********************************************************************
* @file JZsdk_FS_Standards.h
* 用于规范文件名及长度
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_FS_STANDARDS_H
#define JZSDK_FS_STANDARDS_H
#define JZSDK_FILENAME_SIZE (128) //文件名最大长度128
#define JZSDK_CMD_SIZE (256) //cmd指令最大长度
#define JZSDK_DIR_SIZE (256) //目录名最大长度
#endif
\ No newline at end of file
... ... @@ -10,6 +10,7 @@
#include "JZsdkLib.h"
#include <dirent.h>
#include <errno.h>
#include <time.h>
/*
* 用于运行指令
... ... @@ -105,6 +106,203 @@ T_JZsdkReturnCode JZsdk_RunSystemCmd_ReturnResult_Str(char *systemCmd, unsigned
/**********************************
*
* 打开一个文件
函数名:JZsdk_Osal_FileOpen
参数:文件名,文件打开模式,文件句柄
返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示打开成功,
JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示打开失败
* *******************************/
T_JZsdkReturnCode JZsdk_Osal_FileOpen(const char *fileName, const char *fileMode, T_JZsdkFileHandle *fileObj)
{
if (fileName == NULL || fileMode == NULL || fileObj == NULL) {
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
*fileObj = fopen(fileName, fileMode);
if (*fileObj == NULL)
{
goto out;
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
out:
free(*fileObj);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
/**********************************
*
* 关闭一个文件
函数名:JZsdk_Osal_FileClose
参数:文件句柄
返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示关闭成功,
JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示关闭失败
* *******************************/
T_JZsdkReturnCode JZsdk_Osal_FileClose(T_JZsdkFileHandle fileObj)
{
int32_t ret;
if (fileObj == NULL) {
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
ret = fclose(fileObj);
if (ret < 0) {
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/***********************************
*
* 写入一个文件
函数名:JZsdk_Osal_FileWrite
参数:文件句柄,写入数据,写入长度,实际写入长度
返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示写入成功,
JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示写入失败
* *******************************/
T_JZsdkReturnCode JZsdk_Osal_FileWrite_U8(T_JZsdkFileHandle fileObj, const U8_t *buf, U32_t len, U32_t *realLen)
{
int32_t ret;
if (fileObj == NULL || buf == NULL || len == 0 || realLen == NULL) {
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
ret = fwrite(buf, 1, len, fileObj);
if (ret >= 0) {
*realLen = ret;
} else {
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/***********************************
*
* 读取一个文件
函数名:JZsdk_Osal_FileRead
参数:文件句柄,读取数据,读取长度,实际读取长度
返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示读取成功,
JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示读取失败
* *******************************/
T_JZsdkReturnCode JZsdk_Osal_FileRead_U8(T_JZsdkFileHandle fileObj, U8_t *buf, U32_t len, U32_t *realLen)
{
int32_t ret;
if (fileObj == NULL || buf == NULL || len == 0 || realLen == NULL) {
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
ret = fread(buf, 1, len, fileObj);
if (ret >= 0) {
*realLen = ret;
} else {
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/***********************************
*
* 文件定位
函数名:JZsdk_Osal_FileSeek
参数:文件句柄,偏移量
返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示定位成功,
JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示定位失败
* *******************************/
T_JZsdkReturnCode JZsdk_Osal_FileSeek(T_JZsdkFileHandle fileObj, U32_t offset)
{
int32_t ret;
if (fileObj == NULL) {
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
ret = fseek(fileObj, offset, SEEK_SET);
if (ret < 0) {
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/***********************************
*
* 文件同步
函数名:JZsdk_Osal_FileSync
参数:文件句柄
返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示同步成功,
JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示同步失败
* *******************************/
T_JZsdkReturnCode JZsdk_Osal_FileSync(T_JZsdkFileHandle fileObj)
{
int32_t ret;
if (fileObj == NULL) {
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
ret = fflush(fileObj);
if (ret < 0) {
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/**********************************
*
* 获取文件信息
函数名:JZsdk_Osal_FileStat
参数:文件路径,文件信息
返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示获取成功,
JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示获取失败
* *******************************/
T_JZsdkReturnCode JZsdk_Osal_Stat(const char *filePath, T_JZsdkFileInfo *fileInfo)
{
struct stat st;
int32_t ret;
struct tm *fileTm;
if (filePath == NULL || fileInfo == NULL) {
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
ret = stat(filePath, &st);
if (ret < 0) {
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
fileTm = localtime((const time_t *) &(st.st_mtim));
if (fileTm == NULL) {
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
fileInfo->size = st.st_size;
fileInfo->createTime.year = fileTm->tm_year + 1900 - 1980;
fileInfo->createTime.month = fileTm->tm_mon + 1;
fileInfo->createTime.day = fileTm->tm_mday;
fileInfo->createTime.hour = fileTm->tm_hour;
fileInfo->createTime.minute = fileTm->tm_min;
fileInfo->createTime.second = fileTm->tm_sec;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/**********************************
*
* 创建一个文件夹
函数名:JZsdk_check_file_exists
参数:文件路径
... ... @@ -208,13 +406,37 @@ T_JZsdkReturnCode JZsdk_create_file(const char* file_path)
/**********************************
*
* 重命名文件
函数名:JZsdk_check_file_exists
参数:文件路径
返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示文件存在,
JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示文件不存在
* *******************************/
T_JZsdkReturnCode JZsdk_Osal_Rename(const char *oldFilePath, const char *newFilePath)
{
int32_t ret;
if (oldFilePath == NULL || newFilePath == NULL) {
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
ret = rename(oldFilePath, newFilePath);
if (ret < 0) {
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/**********************************
*
* 删除文件
函数名:JZsdk_delete_file
函数名:JZsdk_Osal_delete
参数:文件路径
返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示文件已经不存在
JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示文件仍然存在
* *******************************/
T_JZsdkReturnCode JZsdk_delete_file(const char* file_path)
T_JZsdkReturnCode JZsdk_Osal_delete(const char* file_path)
{
int remove_result = remove(file_path);
if (remove_result != 0) {
... ... @@ -458,4 +680,81 @@ T_JZsdkReturnCode JZsdk_Sync()
{
sync();
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
T_JZsdkReturnCode JZsdk_Osal_DirOpen(const char *filePath, T_JZsdkDirHandle *dirObj)
{
if (filePath == NULL) {
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
*dirObj = opendir(filePath);
if (*dirObj == NULL) {
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
T_JZsdkReturnCode JZsdk_Osal_DirClose(T_JZsdkDirHandle dirObj)
{
int32_t ret;
if (dirObj == NULL) {
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
ret = closedir((DIR *) dirObj);
if (ret < 0) {
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
T_JZsdkReturnCode JZsdk_Osal_DirRead(T_JZsdkDirHandle dirObj, T_JZsdkFileInfo *fileInfo)
{
struct dirent *dirent;
if (dirObj == NULL || fileInfo == NULL) {
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
dirent = readdir((DIR *) dirObj);
if (!dirent) {
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
if (dirent->d_type == DT_DIR) {
fileInfo->isDir = true;
} else {
fileInfo->isDir = false;
}
strcpy(fileInfo->path, dirent->d_name);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
T_JZsdkReturnCode JZsdk_Osal_Unlink(const char *filePath)
{
int32_t ret;
if (filePath == NULL) {
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
if (filePath[strlen(filePath) - 1] == '/') {
ret = rmdir(filePath);
if (ret < 0) {
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
} else {
ret = unlink(filePath);
if (ret < 0) {
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
\ No newline at end of file
... ...
... ... @@ -12,7 +12,8 @@
/* Includes ------------------------------------------------------------------*/
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
#include "./JZsdk_FS_Standards.h"
#include "JZsdk_Base/JZsdk_Code/JZsdk_Platform/JZsdk_Platform.h"
#include "JZsdk_Base/JZsdk_Code/JZsdk_typedef/JZsdk_typedef.h"
#ifdef __cplusplus
extern "C" {
... ... @@ -21,6 +22,59 @@ extern "C" {
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/*
用途:用于读取文件内容。
权限:只允许读取文件,不允许写入或修改文件内容。
文件存在性:如果文件不存在,打开操作会失败,并返回一个错误。
文件指针位置:文件打开后,文件指针位于文件的开头。
*/
#define FS_ONLY_READ "rb"
/*
用途:用于读取和写入文件内容。
权限:允许读取和写入文件内容。
文件存在性:如果文件不存在,打开操作会失败,并返回一个错误。
文件指针位置:文件打开后,文件指针位于文件的开头。
注意事项:在写入文件时,会覆盖文件中对应位置的内容,但不会删除文件的其他内容。
*/
#define FS_READ_AND_WRITE "r+b"
/*
用途:用于写入文件内容。
权限:只允许写入文件内容,不允许读取。
文件存在性:如果文件存在,其内容会被清空;如果文件不存在,会创建一个新文件。
文件指针位置:文件打开后,文件指针位于文件的开头,准备写入新内容。
注意事项:使用w模式打开文件时,会丢失文件中的原有内容。
*/
#define FS_ONLT_WRITE "wb"
/*
用途:用于读取和写入文件内容,但会先清空文件。
权限:允许读取和写入文件内容。
文件存在性:如果文件存在,其内容会被清空;如果文件不存在,会创建一个新文件。
文件指针位置:文件打开后,文件指针位于文件的开头,准备写入新内容。
注意事项:使用w+模式打开文件时,会丢失文件中的原有内容。但在写入新内容后,仍然可以读取文件内容。
*/
#define FS_READ_AND_WRITE_CLEAR "w+b"
/*
用途:用于在文件末尾追加内容。
权限:只允许写入文件内容,不允许读取。
文件存在性:如果文件存在,写入操作会追加到文件末尾;如果文件不存在,会创建一个新文件。
文件指针位置:文件打开后,文件指针位于文件末尾,准备追加新内容。
*/
#define FS_APPEND "ab"
/*
用途:用于读取和写入文件内容,但写入操作会追加到文件末尾。
权限:允许读取和写入文件内容。
文件存在性:如果文件存在,写入操作会追加到文件末尾;如果文件不存在,会创建一个新文件。
文件指针位置:文件打开后,文件指针位于文件末尾,但可以通过fseek等函数移动到文件的其他位置进行读取或写入。
*/
#define FS_READ_AND_APPEND "a+b"
/* Exported types ------------------------------------------------------------*/
... ... @@ -28,7 +82,7 @@ extern "C" {
T_JZsdkReturnCode JZsdk_RunSystemCmd(char *systemCmd);
T_JZsdkReturnCode JZsdk_check_file_exists(const char* file_path) ;
T_JZsdkReturnCode JZsdk_create_file(const char* file_path) ;
T_JZsdkReturnCode JZsdk_delete_file(const char* file_path) ;
T_JZsdkReturnCode JZsdk_Osal_delete(const char* file_path);
T_JZsdkReturnCode JZsdk_strings_suffix_comparison_onlyStr(const unsigned char* Strings, const unsigned char *suffix) ;
T_JZsdkReturnCode JZsdk_strings_suffix_comparison_withLen(const unsigned char* Strings, int Strings_len, const unsigned char *suffix) ;
T_JZsdkReturnCode JZsdk_Osal_Mkdir(const char *filePath);
... ... @@ -40,6 +94,23 @@ T_JZsdkReturnCode JZsdk_copy_file_byC(const char* source_path, const char* dest_
T_JZsdkReturnCode JZsdk_RunSystemCmd_ReturnResult(char *systemCmd, unsigned int *result);
T_JZsdkReturnCode JZsdk_RunSystemCmd_ReturnResult_Str(char *systemCmd, unsigned char *str);
T_JZsdkReturnCode JZsdk_Sync();
T_JZsdkReturnCode JZsdk_Osal_Stat(const char *filePath, T_JZsdkFileInfo *fileInfo);
T_JZsdkReturnCode JZsdk_Osal_Rename(const char *oldFilePath, const char *newFilePath);
T_JZsdkReturnCode JZsdk_Osal_FileOpen(const char *fileName, const char *fileMode, T_JZsdkFileHandle *fileObj);
T_JZsdkReturnCode JZsdk_Osal_FileClose(T_JZsdkFileHandle fileObj);
T_JZsdkReturnCode JZsdk_Osal_FileWrite_U8(T_JZsdkFileHandle fileObj, const U8_t *buf, U32_t len, U32_t *realLen);
T_JZsdkReturnCode JZsdk_Osal_FileRead_U8(T_JZsdkFileHandle fileObj, U8_t *buf, U32_t len, U32_t *realLen);
T_JZsdkReturnCode JZsdk_Osal_FileSeek(T_JZsdkFileHandle fileObj, U32_t offset);
T_JZsdkReturnCode JZsdk_Osal_FileSync(T_JZsdkFileHandle fileObj);
T_JZsdkReturnCode JZsdk_Osal_DirOpen(const char *filePath, T_JZsdkDirHandle *dirObj);
T_JZsdkReturnCode JZsdk_Osal_DirClose(T_JZsdkDirHandle dirObj);
T_JZsdkReturnCode JZsdk_Osal_DirRead(T_JZsdkDirHandle dirObj, T_JZsdkFileInfo *fileInfo);
T_JZsdkReturnCode JZsdk_Osal_Unlink(const char *filePath);
#ifdef __cplusplus
}
... ...
... ... @@ -4,11 +4,17 @@
static T_JZsdkOsalHandler* g_osalHandler = NULL;
static T_JZsdkOsalHandler *g_osalHandler = NULL;
static T_JZsdkFSHandler *g_FsHandler = NULL;
static T_JZsdkReturnCode JZsdk_Platform_RegOsalHandler(const T_JZsdkOsalHandler *osalHandler)
{
g_osalHandler = (T_JZsdkOsalHandler*)osalHandler; // 存储传入的 OSAL 处理器
g_osalHandler = malloc(sizeof(T_JZsdkOsalHandler));
if (osalHandler == NULL) {
return JZ_ERROR_SYSTEM_MODULE_CODE_MEMORY_ALLOC_FAILED; // 处理内存分配失败的情况
}
memcpy(g_osalHandler, osalHandler, sizeof(T_JZsdkOsalHandler));
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -18,6 +24,25 @@ T_JZsdkOsalHandler *JZsdk_Platform_GetOsalHandler(void)
return g_osalHandler; // 返回已注册的 OSAL 处理器
}
static T_JZsdkReturnCode JZsdk_RegFsHandler(const T_JZsdkFSHandler *FsHandler)
{
g_FsHandler = malloc(sizeof(T_JZsdkFSHandler));
if (g_FsHandler == NULL) {
return JZ_ERROR_SYSTEM_MODULE_CODE_MEMORY_ALLOC_FAILED; // 处理内存分配失败的情况
}
memcpy(g_FsHandler, FsHandler, sizeof(T_JZsdkFSHandler));
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
T_JZsdkFSHandler *JZsdk_GetFsHandler(void)
{
return g_FsHandler; // 返回已注册的 FS 处理器
}
T_JZsdkReturnCode JZsdk_OsalInit()
{
T_JZsdkOsalHandler osalHandler = {
... ... @@ -40,7 +65,27 @@ T_JZsdkReturnCode JZsdk_OsalInit()
.GetRandomNum = JZsdk_Osal_GetRandomNum,
};
T_JZsdkFSHandler fileSystemHandler = {
.FileOpen = JZsdk_Osal_FileOpen,
.FileClose = JZsdk_Osal_FileClose,
.FileWrite_U8 = JZsdk_Osal_FileWrite_U8,
.FileRead_U8 = JZsdk_Osal_FileRead_U8,
.FileSync = JZsdk_Osal_FileSync,
.FileSeek = JZsdk_Osal_FileSeek,
.DirOpen = JZsdk_Osal_DirOpen,
.DirClose = JZsdk_Osal_DirClose,
.DirRead = JZsdk_Osal_DirRead,
.Mkdir = JZsdk_Osal_Mkdir,
.Unlink = JZsdk_Osal_Unlink,
.Rename = JZsdk_Osal_Rename,
.Stat = JZsdk_Osal_Stat,
};
JZsdk_Platform_RegOsalHandler(&osalHandler);
printf("JZsdk Osal handler registered\n");
JZsdk_RegFsHandler(&fileSystemHandler);
printf("JZsdk File system handler registered\n");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ...
... ... @@ -35,6 +35,7 @@ extern "C" {
*
* ******************/
typedef struct {
//任务名 任务函数 任务栈大小 任务参数 任务句柄
T_JZsdkReturnCode (*TaskCreate)(const char *name, void *(*taskFunc)(void *),
unsigned int stackSize, void *arg, T_JZTaskHandle *task);
... ... @@ -72,6 +73,40 @@ typedef struct {
} T_JZsdkOsalHandler;
/****************
*
* filesysterm 文件系统权柄
*
*
* ******************/
typedef struct {
T_JZsdkReturnCode (*FileOpen)(const char *fileName, const char *fileMode, T_JZsdkFileHandle *fileObj);
T_JZsdkReturnCode (*FileClose)(T_JZsdkFileHandle fileObj);
T_JZsdkReturnCode (*FileWrite_U8)(T_JZsdkFileHandle fileObj, const U8_t *buf, U32_t len, U32_t *realLen);
T_JZsdkReturnCode (*FileRead_U8)(T_JZsdkFileHandle fileObj, U8_t *buf, U32_t len, U32_t *realLen);
T_JZsdkReturnCode (*FileSeek)(T_JZsdkFileHandle fileObj, U32_t offset);
T_JZsdkReturnCode (*FileSync)(T_JZsdkFileHandle fileObj);
T_JZsdkReturnCode (*DirOpen)(const char *filePath, T_JZsdkDirHandle *dirObj);
T_JZsdkReturnCode (*DirClose)(T_JZsdkDirHandle dirObj);
T_JZsdkReturnCode (*DirRead)(T_JZsdkDirHandle dirObj, T_JZsdkFileInfo *fileInfo);
T_JZsdkReturnCode (*Mkdir)(const char *filePath);
T_JZsdkReturnCode (*Unlink)(const char *filePath);
T_JZsdkReturnCode (*Rename)(const char *oldFilePath, const char *newFilePath);
T_JZsdkReturnCode (*Stat)(const char *filePath, T_JZsdkFileInfo *fileInfo);
} T_JZsdkFSHandler;
/* Exported macro ------------------------------------------------------------*/
... ... @@ -82,6 +117,7 @@ typedef struct {
/* Exported functions --------------------------------------------------------*/
T_JZsdkReturnCode JZsdk_OsalInit();
T_JZsdkOsalHandler *JZsdk_Platform_GetOsalHandler(void);
T_JZsdkFSHandler *JZsdk_GetFsHandler(void);
#ifdef __cplusplus
... ...
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <string.h> // Include this for strncpy
#include "./JZsdk_Task.h"
... ... @@ -12,13 +13,15 @@ T_JZsdkReturnCode JZsdk_Osal_TaskCreate(const char *name, void *(*taskFunc)(void
//为任务句柄分配内存空间,大小为sizeof(pthread_t)。如果内存分配失败,则返回一个错误代码
*task = malloc(sizeof(pthread_t));
if (*task == NULL) {
if (*task == NULL)
{
return JZ_ERROR_SYSTEM_MODULE_CODE_MEMORY_ALLOC_FAILED;
}
//使用pthread_create函数创建一个新的线程,传递给它任务函数指针taskFunc和参数arg。如果创建线程失败,则返回一个错误代码
result = pthread_create(*task, NULL, taskFunc, arg);
if (result != 0) {
if (result != 0)
{
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
... ... @@ -28,8 +31,9 @@ T_JZsdkReturnCode JZsdk_Osal_TaskCreate(const char *name, void *(*taskFunc)(void
strncpy(nameDealed, name, sizeof(nameDealed) - 1);
//使用pthread_setname_np函数将任务线程的名称设置为nameDealed。如果设置线程名称失败,则返回一个错误代码
result = pthread_setname_np(*(pthread_t *) *task, nameDealed);
if (result != 0) {
result = pthread_setname_np( *(pthread_t *) *task, nameDealed);
if (result != 0)
{
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
... ...
#include <sys/time.h> // 为了使用 gettimeofday 函数
#include <time.h> // 为了使用 time 函数
#include <unistd.h>
#include "./JZsdk_TimeR.h"
... ...
... ... @@ -91,6 +91,9 @@ T_JZsdkReturnCode TaskManagement_SubmitTask(void (*task_function)(void*), void*
static void* TaskManagement_ThreadFunction(void* arg)
{
t_ThreadPool* pool = (t_ThreadPool*)arg;
JZSDK_LOG_DEBUG("TaskManagement_Thread Have Create");
while (1)
{
pthread_mutex_lock(&pool->lock);
... ...
... ... @@ -21,6 +21,7 @@
#include "MediaProc/MediaProc.h"
#include "UI_control/WidegMgmt/JZsdk_Widget.h"
#include "DeviceConfig/DeviceConfig.h"
#include "CommonMod/CommonMod.h"
#include "JZsdk_Hal.h"
... ... @@ -50,7 +51,9 @@ static int WorkMode = JZ_FLAGCODE_OFF;
static int g_All_filter_Mode = JZ_FLAGCODE_OFF; //用于m30的滤波开关
static int StartupPriorityNum = JZ_FLAGCODE_OFF; //优先启动项值
static int g_device_InitFlag = JZ_FLAGCODE_OFF; //基础配置初始化标志位,该标志位用于判断设备是否已经完成准备就绪,目前主要影响的是预设任务
static int g_baseconfig_InitFlag = JZ_FLAGCODE_OFF; //基础配置初始化标志位,该标志位用于判断设备是否已经完成baseconfig 目前用处影响g_device_InitFlag
static int g_Main_WorkMode_InitFlag = JZ_FLAGCODE_OFF; //基础配置初始化标志位,该标志位用于判断设备是否已经完成连接与启动播放 目前用处影响g_device_InitFlag
/*******************
*
... ... @@ -135,11 +138,19 @@ int Main_Device_Wheather_Use()
T_JZsdkReturnCode Main_APP_Psdk()
{
int value[5] = {0, 0, 0, 0, 0};
//sdklib加载
JZsdk_LibInit();
//hal加载
JZsdk_Hal_Init();
JZSDK_LOG_INFO("%x,PsdkVersion%x.%x.%x.%x\n",DEVICE_VERSION,MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION);
//通用模块初始化
CommonMod_Init();
//引脚初始化
Ircut_Init();
... ... @@ -155,18 +166,20 @@ T_JZsdkReturnCode Main_APP_Psdk()
//喊话器功能被打开时
#ifdef MEGAPHONE_CONFIG_STATUS_ON
//音频库初始化
AudioDeal_Init();
//音频库初始化
AudioDeal_Init();
#endif
if (DEVICE_VERSION == TF_A1)
{
//串口设备1初始化
//JZsdk_HalPort_Init_WithDefault(UART_DEV_1);
//value[0] = UART_DEV1_BITRATE;
//JZsdk_HalPort_Init(UART_DEV_1, value);
//串口设备2初始化
JZsdk_HalPort_Init_WithDefault(UART_DEV_2);
value[0] = UART_DEV2_BITRATE;
JZsdk_HalPort_Init(UART_DEV_2, value);
//喊话器初始化
Megaphone_Init();
... ... @@ -186,19 +199,22 @@ T_JZsdkReturnCode Main_APP_Psdk()
else if (DEVICE_VERSION == JZ_H1E)
{
//串口设备1初始化
//JZsdk_HalPort_Init_WithDefault(UART_DEV_1);
//value[0] = UART_DEV1_BITRATE;
//JZsdk_HalPort_Init(UART_DEV_1, value);
//喊话器初始化
Megaphone_Init(JZ_MODULE_CONTROL_WAY_INDEPENDENT);
Megaphone_Init();
}
else if (DEVICE_VERSION == JZ_H1T)
{
//串口设备1初始化
//JZsdk_HalPort_Init_WithDefault(UART_DEV_1);
//value[0] = UART_DEV1_BITRATE;
//JZsdk_HalPort_Init(UART_DEV_1, value);
//4g设备初始化
JZsdk_HalPort_Init_WithDefault(UART_4G);
value[0] = COMM_4G_UART_BITRATE;
JZsdk_HalPort_Init(UART_4G, value);
//喊话器初始化
Megaphone_Init();
... ... @@ -210,12 +226,14 @@ T_JZsdkReturnCode Main_APP_Psdk()
else if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T)
{
//串口设备1初始化
// JZsdk_HalPort_Init_WithDefault(UART_DEV_1);
//value[0] = UART_DEV1_BITRATE;
//JZsdk_HalPort_Init(UART_DEV_1, value);
if (DEVICE_VERSION == JZ_H150T)
{
//4g设备初始化
JZsdk_HalPort_Init_WithDefault(UART_4G);
value[0] = COMM_4G_UART_BITRATE;
JZsdk_HalPort_Init(UART_4G, value);
}
//喊话器初始化
... ... @@ -231,7 +249,8 @@ T_JZsdkReturnCode Main_APP_Psdk()
else if (DEVICE_VERSION == JZ_H10)
{
//串口设备1初始化
// JZsdk_HalPort_Init_WithDefault(UART_DEV_1);
//value[0] = UART_DEV1_BITRATE;
//JZsdk_HalPort_Init(UART_DEV_1, value);
//喊话器初始化
Megaphone_Init();
... ... @@ -243,10 +262,12 @@ T_JZsdkReturnCode Main_APP_Psdk()
else if (DEVICE_VERSION == JZ_H10T)
{
//串口设备1初始化
//JZsdk_HalPort_Init_WithDefault(UART_DEV_1);
//value[0] = UART_DEV1_BITRATE;
//JZsdk_HalPort_Init(UART_DEV_1, value);
//4g设备初始化
JZsdk_HalPort_Init_WithDefault(UART_4G);
value[0] = COMM_4G_UART_BITRATE;
JZsdk_HalPort_Init(UART_4G, value);
//喊话器初始化
Megaphone_Init();
... ... @@ -258,10 +279,12 @@ T_JZsdkReturnCode Main_APP_Psdk()
else if (DEVICE_VERSION == JZ_U3)
{
//串口设备1初始化
//JZsdk_HalPort_Init_WithDefault(UART_DEV_1);
//value[0] = UART_DEV1_BITRATE;
//JZsdk_HalPort_Init(UART_DEV_1, value);
//串口设备2初始化
JZsdk_HalPort_Init_WithDefault(UART_DEV_2);
value[0] = UART_DEV2_BITRATE;
JZsdk_HalPort_Init(UART_DEV_2, value);
//喊话器初始化
Megaphone_Init();
... ... @@ -281,10 +304,12 @@ T_JZsdkReturnCode Main_APP_Psdk()
else if (DEVICE_VERSION == JZ_U3S)
{
//串口设备1初始化
//JZsdk_HalPort_Init_WithDefault(UART_DEV_1);
//value[0] = UART_DEV1_BITRATE;
//JZsdk_HalPort_Init(UART_DEV_1, value);
//串口设备2初始化
JZsdk_HalPort_Init_WithDefault(UART_DEV_2);
value[0] = UART_DEV2_BITRATE;
JZsdk_HalPort_Init(UART_DEV_2, value);
//喊话器初始化
Megaphone_Init();
... ... @@ -307,10 +332,12 @@ T_JZsdkReturnCode Main_APP_Psdk()
else if (DEVICE_VERSION == JZ_U3D)
{
//串口设备1初始化
//JZsdk_HalPort_Init_WithDefault(UART_DEV_1);
//value[0] = UART_DEV1_BITRATE;
//JZsdk_HalPort_Init(UART_DEV_1, value);
//串口设备2初始化
JZsdk_HalPort_Init_WithDefault(UART_DEV_2);
value[0] = UART_DEV2_BITRATE;
JZsdk_HalPort_Init(UART_DEV_2, value);
//喊话器初始化
Megaphone_Init();
... ... @@ -330,10 +357,12 @@ T_JZsdkReturnCode Main_APP_Psdk()
else if (DEVICE_VERSION == JZ_U30)
{
//串口设备1初始化
//JZsdk_HalPort_Init_WithDefault(UART_DEV_1);
//value[0] = UART_DEV1_BITRATE;
//JZsdk_HalPort_Init(UART_DEV_1, value);
//串口设备2初始化
JZsdk_HalPort_Init_WithDefault(UART_DEV_2);
value[0] = UART_DEV2_BITRATE;
JZsdk_HalPort_Init(UART_DEV_2, value);
//喊话器初始化
Megaphone_Init();
... ... @@ -361,21 +390,29 @@ T_JZsdkReturnCode Main_APP_Psdk()
JZSDK_WidgetMgMT_Init();
//初始化app模式
JZsdk_Set_Psdk_UIcontrol_UseFlag(1);
JZsdk_HalPort_SetUseFlag(DEVICE_PSDK ,JZ_FLAGCODE_ON);
Main_WorkModeSet(JZ_FLAGCODE_ON);
g_baseconfig_InitFlag = JZ_FLAGCODE_ON;
}
int Main_APP_Uart()
{
int value[5] = {0, 0, 0, 0, 0};
//lib库初始化
JZsdk_LibInit();
JZsdk_Hal_Init();
JZSDK_LOG_INFO("0x%x,UartVersion%x.%x.%x.%x\n",DEVICE_VERSION,MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION);
//通用模块
CommonMod_Init();
//引脚初始化
Ircut_Init();
... ... @@ -394,7 +431,8 @@ int Main_APP_Uart()
if (DEVICE_VERSION == JZ_H1E)
{
//串口设备1初始化
JZsdk_HalPort_Init_WithDefault(UART_DEV_1);
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
//喊话器初始化
Megaphone_Init();
... ... @@ -403,10 +441,12 @@ int Main_APP_Uart()
if (DEVICE_VERSION == JZ_H1T)
{
//串口设备1初始化
JZsdk_HalPort_Init_WithDefault(UART_DEV_1);
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
//4g设备初始化
JZsdk_HalPort_Init_WithDefault(UART_4G);
value[0] = COMM_4G_UART_BITRATE;
JZsdk_HalPort_Init(UART_4G, value);
//喊话器初始化
Megaphone_Init();
... ... @@ -425,7 +465,8 @@ int Main_APP_Uart()
if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T)
{
//串口设备1初始化
JZsdk_HalPort_Init_WithDefault(UART_DEV_1);
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
//网口初始化
JZsdk_NetWork_Init();
... ... @@ -433,7 +474,8 @@ int Main_APP_Uart()
if (DEVICE_VERSION == JZ_H150T)
{
//4g设备初始化
JZsdk_HalPort_Init_WithDefault(UART_4G);
value[0] = COMM_4G_UART_BITRATE;
JZsdk_HalPort_Init(UART_4G, value);
}
//云台初始化
... ... @@ -449,7 +491,8 @@ int Main_APP_Uart()
if (DEVICE_VERSION == JZ_H10)
{
//串口设备1初始化
JZsdk_HalPort_Init_WithDefault(UART_DEV_1);
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
//H10和10t固定打开滤波
int filter_mode = JZ_FLAGCODE_ON;
... ... @@ -465,10 +508,12 @@ int Main_APP_Uart()
if (DEVICE_VERSION == JZ_H10T)
{
//串口设备1初始化
JZsdk_HalPort_Init_WithDefault(UART_DEV_1);
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
//4g设备初始化
JZsdk_HalPort_Init_WithDefault(UART_4G);
value[0] = COMM_4G_UART_BITRATE;
JZsdk_HalPort_Init(UART_4G, value);
//H10和10t固定打开滤波
int filter_mode = JZ_FLAGCODE_ON;
... ... @@ -484,10 +529,12 @@ int Main_APP_Uart()
if (DEVICE_VERSION == JZ_U3)
{
//串口设备1初始化
JZsdk_HalPort_Init_WithDefault(UART_DEV_1);
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
//串口设备2初始化
JZsdk_HalPort_Init_WithDefault(UART_DEV_2);
value[0] = UART_DEV2_BITRATE;
JZsdk_HalPort_Init(UART_DEV_2, value);
//喊话器初始化
Megaphone_Init();
... ... @@ -501,7 +548,7 @@ int Main_APP_Uart()
delayMs(1000);
//消息订阅初始化
HalSend_type1Send_MessageSubcription_Control(UART_DEV_2, JZ_FLAGCODE_ON);
HalSend_type1Send_MessageSubcription_Control(UART_DEV_2, JZ_FLAGCODE_OFF);
// //测试需要开启亮度
// JZsdk_Uart_SearchLight_Control(UART_DEV_1, 1);
... ... @@ -512,10 +559,12 @@ int Main_APP_Uart()
else if (DEVICE_VERSION == JZ_U3S)
{
//串口设备1初始化
JZsdk_HalPort_Init_WithDefault(UART_DEV_1);
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
//串口设备2初始化
JZsdk_HalPort_Init_WithDefault(UART_DEV_2);
value[0] = UART_DEV2_BITRATE;
JZsdk_HalPort_Init(UART_DEV_2, value);
//喊话器初始化
Megaphone_Init();
... ... @@ -538,10 +587,12 @@ int Main_APP_Uart()
else if (DEVICE_VERSION == JZ_U3D)
{
//串口设备1初始化
JZsdk_HalPort_Init_WithDefault(UART_DEV_1);
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
//串口设备2初始化
JZsdk_HalPort_Init_WithDefault(UART_DEV_2);
value[0] = UART_DEV2_BITRATE;
JZsdk_HalPort_Init(UART_DEV_2, value);
//喊话器初始化
Megaphone_Init();
... ... @@ -570,10 +621,12 @@ int Main_APP_Uart()
else if (DEVICE_VERSION == JZ_U30)
{
//串口设备1初始化
JZsdk_HalPort_Init_WithDefault(UART_DEV_1);
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
//串口设备2初始化
JZsdk_HalPort_Init_WithDefault(UART_DEV_2);
value[0] = UART_DEV2_BITRATE;
JZsdk_HalPort_Init(UART_DEV_2, value);
//喊话器初始化
Megaphone_Init();
... ... @@ -593,10 +646,12 @@ int Main_APP_Uart()
if (DEVICE_VERSION == TF_A1)
{
//串口设备1初始化
JZsdk_HalPort_Init_WithDefault(UART_DEV_1);
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
//串口设备2初始化
JZsdk_HalPort_Init_WithDefault(UART_DEV_2);
value[0] = UART_DEV2_BITRATE;
JZsdk_HalPort_Init(UART_DEV_2, value);
//喊话器初始化
Megaphone_Init();
... ... @@ -607,13 +662,25 @@ int Main_APP_Uart()
//消息订阅初始化
HalSend_type1Send_MessageSubcription_Control(UART_DEV_2, JZ_FLAGCODE_ON);
}
g_baseconfig_InitFlag = JZ_FLAGCODE_ON;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
int Main_TestAPP()
{
int value[5] = {0, 0, 0, 0, 0};
JZsdk_LibInit();
JZsdk_Hal_Init();
CommonMod_Init();
//串口设备1初始化
JZsdk_HalPort_Init_WithDefault(UART_DEV_1);
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
}
//JZ_FLAGCODE_GET为返回工作值,其他值为设置
... ... @@ -673,6 +740,13 @@ T_JZsdkReturnCode Main_StartupPriority(int *choose)
//1、设置本地的版本号
if (*choose == 0x00)
{
//检查是否已存在串口连接标志
if(JZsdk_check_file_exists("/root/Uart_connected") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_INFO("已设置为优先启动Uart模式");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//增加uart连接标志
if(JZsdk_create_file("/root/Uart_connected") != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
... ... @@ -684,7 +758,7 @@ T_JZsdkReturnCode Main_StartupPriority(int *choose)
else if (*choose == 0x01)
{
//连接后清除串口标志
if(JZsdk_delete_file("/root/Uart_connected") != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
if(JZsdk_Osal_delete("/root/Uart_connected") != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("优先启动psdk模式失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
... ... @@ -777,5 +851,32 @@ static void *Main_WorkModeTask(void *arg)
delayMs(100);
}
#endif
g_Main_WorkMode_InitFlag = JZ_FLAGCODE_ON;
}
/**********************************
*
* 获取设备初始化标志
* on之后,设备已经初始化完成 并处于空闲状态
*
* *****************************/
int BaseConfig_GetDeviceInitFlag()
{
//1、先判断baseconfig是否初始化完成
if (g_baseconfig_InitFlag == JZ_FLAGCODE_OFF)
{
return JZ_FLAGCODE_OFF;
}
//如果是主菜单模式也完成
if (g_Main_WorkMode_InitFlag == JZ_FLAGCODE_OFF)
{
return JZ_FLAGCODE_OFF;
}
g_device_InitFlag = JZ_FLAGCODE_ON;
return g_device_InitFlag;
}
\ No newline at end of file
... ...
... ... @@ -242,6 +242,7 @@ int Main_Device_Wheather_Use();
T_JZsdkReturnCode Main_M30_all_filter_mode(int *mode);
T_JZsdkReturnCode Main_StartupPriority(int *choose);
T_JZsdkReturnCode Main_SetDeviceName(unsigned int Port, int g_DeviceID);
int BaseConfig_GetDeviceInitFlag();
#ifdef __cplusplus
}
... ...
... ... @@ -77,7 +77,7 @@ T_JZsdkReturnCode JZsdk_ParamterParsing(int argc, char *argv[], unsigned int *mo
int insCode = 0; //指令码
//获取短选项
static char *opt_storage = "t:f:";
static char *opt_storage = "t:f:d:b";
//解析参数
while (1)
... ...
... ... @@ -7,7 +7,7 @@
#define VERSION_CHOOSE_H
#include "JZsdk_Base/JZsdk_Code/JZsdk_DeviceCode.h"
//1~10行 除了D可以修改版本选择 禁止动任何东西
#define DEVICE_VERSION JZ_H10
#define DEVICE_VERSION JZ_H1T
//禁止修改行 选择是串口程序 还是 psdk程序
#define APP_VERSION APP_UART
... ... @@ -19,7 +19,7 @@
#define MAJOR_VERSION 0x00
#define MINOR_VERSION 0x00
#define MODIFY_VERSION 0x02
#define DEBUG_VERSION 0x12
#define DEBUG_VERSION 0x13
//禁止修改行 滤波方式
#define FILTERING_TYPE HIGH_PASS_FILTERING
... ...
... ... @@ -37,7 +37,7 @@
* 帧尾两位 0x00 0x23 | 祖册了实际的帧尾
*
* ********************/
int HalRecv_type1_PreliminaryScreeningOfData(unsigned char *Data, unsigned int DataLen, int Port)
int HalRecv_type1_PreliminaryScreeningOfData(unsigned char *Data, int DataLen, int Port)
{
int ResidualLength = 0; // 剩余数据长度
... ... @@ -135,6 +135,7 @@ int HalRecv_type1_PreliminaryScreeningOfData(unsigned char *Data, unsigned int D
{
FrameFlag = 0x00;
}
break;
}
default:
... ...
... ... @@ -23,7 +23,7 @@ extern "C" {
/* Exported functions --------------------------------------------------------*/
int HalRecv_type1_PreliminaryScreeningOfData(unsigned char *Data, unsigned int DataLen, int Port);
int HalRecv_type1_PreliminaryScreeningOfData(unsigned char *Data, int DataLen, int Port);
#ifdef __cplusplus
... ...
... ... @@ -14,6 +14,8 @@
#include "Megaphone/Megaphone.h"
#include "DeviceInfo/DeviceInfo.h"
#include "CommonMod/CommonMod.h"
#include "Hal_Send/HalSend_type1/HalSend_type1.h"
#include "Hal_Send/HalSend.h"
#include "JZsdk_Hal.h"
... ... @@ -21,9 +23,12 @@
#ifdef MEGAPHONE_CONFIG_STATUS_ON
#include "Megaphone/Megaphone.h"
#include "Megaphone/Music/AudioFile/Megaphone_AudioFile.h"
#include "Megaphone/Opus/Megaphone_Opus.h"
#include "Megaphone/PcmAudio/PcmAudioFile.h"
#endif
static int HalRecvMode = JZ_FLAGCODE_OFF;
static int HalRecvMode = JZ_FLAGCODE_OFF; //接收模式,主要是为了限制不同设备同时要求hal层做出 同一个数据接收相关功能 ,目前做法是只限定一个hal设备使用一种数据接收模式
static int HalRecvDataLen = 0; //用于计算接收数据长度
static int SecondaryDeviceName = 0x00; // 从设备名,用于多设备相连时通知控制端 从机设备名
... ... @@ -33,7 +38,7 @@ static int TTS_RecvBufferLen = 0;
static T_JZsdkReturnCode HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(int Port, int value);
static T_JZsdkReturnCode HalRecv_tpye1_RecvDeal_UartTransmodeDecide();
static T_JZsdkMutexHandle GetMusicList_MutexHandle = NULL;
/********************************************************************************************************
********* ********|
... ... @@ -74,6 +79,10 @@ static T_JZsdkReturnCode RecvDeal_AskForConnect(int Port, char *getbuf)
Main_WorkModeSet(JZ_FLAGCODE_ON);
}
//5、打开连接状态
s_JZsdk_Hal_Info *HalInfo = JZsdk_Hal_GetHalInfo();
HalInfo->HalPort[Port].ConnectStatus = JZ_FLAGCODE_ON;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -90,10 +99,28 @@ static T_JZsdkReturnCode RecvDeal_HeartBeat(int Port, char *getbuf)
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//1、获取连接情况
int status = Main_WorkModeSet(JZ_FLAGCODE_GET);
s_JZsdk_Hal_Info *halInfo = JZsdk_Hal_GetHalInfo();
//分析模式
int mode = getbuf[9];
if (mode == 0x00)
{
//2、回复心跳帧
HalSend_type1Send_Send_HeartBeatStatus(Port, FrameSequence, halInfo->HalPort[Port].ConnectStatus);
}
else if (mode == 0x01 || mode == 0x02)
{
if(mode == 0x01)
{
halInfo->HalPort[Port].HeartBeatStatusSend = JZ_FLAGCODE_ON;
}
else if (mode == 0x02)
{
halInfo->HalPort[Port].HeartBeatStatusSend = JZ_FLAGCODE_OFF;
}
//2、回复心跳帧
HalSend_type1Send_Send_HeartBeatStatus(Port, FrameSequence, status);
HalSend_type1Send_Reply_Success(Port, FrameSequence);
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -105,43 +132,50 @@ static T_JZsdkReturnCode RecvDeal_HeartBeat(int Port, char *getbuf)
**********/
static T_JZsdkReturnCode RecvDeal_GetAllVersion(int Port, unsigned char *getbuf)
{
JZSDK_LOG_INFO("获取所有版本号,获取指令为%x", getbuf[9]);
JZSDK_LOG_INFO("获取所有版本号 %s", JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//获取所有设备名
unsigned int DeviceNum = 0;
unsigned int DeviceID[10][2];
DeviceInfo_GetAllDeviceName(&DeviceNum, DeviceID);
//获取所有设备号
//获取设备数量
int DeviceNum = 0;
DeviceNum = DeviceInfo_GetDeviceInfoNum();
//获取设备信息
T_DeviceInfo DeviceInfo;
if (getbuf[9] == 0x01)
{
for (int i = 0; i < DeviceNum ; i++)
for (int i = 0; i < DeviceNum; i++)
{
unsigned int MajorVersion;
unsigned int MinjorVersion;
unsigned int ModifyVersion;
unsigned int DebugVersion;
DeviceInfo_GetAllVerision(DeviceID[i][1], &MajorVersion, &MinjorVersion, &ModifyVersion, &DebugVersion);
HalSend_type1Send_SendAllVersion(Port, FrameSequence, DeviceID[i][1] ,MajorVersion, MinjorVersion, ModifyVersion, DebugVersion);
DeviceInfo_GetDeviceInfo(i, &DeviceInfo);
HalSend_type1Send_SendAllVersion(Port, FrameSequence,
DeviceInfo.DeviceID,
DeviceInfo.MajorVersion,
DeviceInfo.MinjorVersion,
DeviceInfo.ModifyVersion,
DeviceInfo.DebugVersion);
}
}
//获取所有设备号
else if (getbuf[9] == 0x00)
{
unsigned int MajorVersion;
unsigned int MinjorVersion;
unsigned int ModifyVersion;
unsigned int DebugVersion;
DeviceInfo_GetAllVerision(DEVICE_PSDK, &MajorVersion, &MinjorVersion, &ModifyVersion, &DebugVersion);
HalSend_type1Send_SendAllVersion(Port, FrameSequence, DEVICE_PSDK ,MajorVersion, MinjorVersion, ModifyVersion, DebugVersion);
DeviceInfo_GetDeviceInfo(0, &DeviceInfo);
HalSend_type1Send_SendAllVersion(Port, FrameSequence,
DeviceInfo.DeviceID,
DeviceInfo.MajorVersion,
DeviceInfo.MinjorVersion,
DeviceInfo.ModifyVersion,
DeviceInfo.DebugVersion);
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*********
*
* 获取所有序列号
... ... @@ -154,35 +188,38 @@ static T_JZsdkReturnCode RecvDeal_GetAllSerialNumber(int Port, unsigned char *ge
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//获取所有设备名
unsigned int DeviceNum = 0;
unsigned int DeviceID[10][2];
DeviceInfo_GetAllDeviceName(&DeviceNum, DeviceID);
//获取设备数量
int DeviceNum = 0;
DeviceNum = DeviceInfo_GetDeviceInfoNum();
//获取设备信息
T_DeviceInfo DeviceInfo;
//获取所有设备号
if (getbuf[9] == 0x01)
{
for (int i = 0; i < DeviceNum ; i++)
for (int i = 0; i < DeviceNum; i++)
{
unsigned char SerialNumber[40];
int SerialNumberLen = 0;
DeviceInfo_GetAllSerialNumber(DeviceID[i][1], SerialNumber, &SerialNumberLen);
HalSend_type1Send_SendAllSerialNumber(Port, FrameSequence, DeviceID[i][1], SerialNumber, SerialNumberLen);
DeviceInfo_GetDeviceInfo(i, &DeviceInfo);
HalSend_type1Send_SendAllSerialNumber(Port, FrameSequence,
DeviceInfo.DeviceID,
DeviceInfo.SerialNumber,
strlen(DeviceInfo.SerialNumber));
}
}
//获取所有设备号
else if (getbuf[9] == 0x00)
{
unsigned char SerialNumber[40];
int SerialNumberLen = 0;
DeviceInfo_GetAllSerialNumber(DEVICE_PSDK, SerialNumber, &SerialNumberLen);
HalSend_type1Send_SendAllSerialNumber(Port, FrameSequence, DEVICE_PSDK, SerialNumber, SerialNumberLen);
DeviceInfo_GetDeviceInfo(0, &DeviceInfo);
HalSend_type1Send_SendAllSerialNumber(Port, FrameSequence,
DeviceInfo.DeviceID,
DeviceInfo.SerialNumber,
strlen(DeviceInfo.SerialNumber));
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*********
*
* log信息打印
... ... @@ -213,6 +250,52 @@ static T_JZsdkReturnCode RecvDeal_LogMessagePrintf(int Port, unsigned char *getb
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*********
*
* 预设任务
*
**********/
static T_JZsdkReturnCode RecvDeal_PresetTask(int Port, unsigned char *getbuf)
{
JZSDK_LOG_INFO("%s,预设任务 :%d",JZsdk_DefineCode_GetPortName(Port), getbuf[9]);
//获取帧序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//获取任务内容
int Mode = getbuf[9];
if (Mode == 0)
{
JZSDK_LOG_INFO("关闭预设任务");
PrsetTask_SetPrsetTaskFlag(JZ_FLAGCODE_OFF);
PrsetTask_SetPrsetTaskSaveContentFlag(JZ_FLAGCODE_OFF);
}
else if (Mode == 1)
{
JZSDK_LOG_INFO("开启预设任务");
PrsetTask_SetPrsetTaskFlag(JZ_FLAGCODE_ON);
PrsetTask_SetPrsetTaskSaveContentFlag(JZ_FLAGCODE_ON);
}
else if (Mode == 0x10)
{
JZSDK_LOG_INFO("获取预设任务状态");
}
else
{
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
}
int Flag = PrsetTask_GetPrsetTaskFlag();
//回复预设任务
HalSend_type1Send_PresetTaskStatus(Port, FrameSequence, Flag);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*********
*
... ... @@ -449,20 +532,13 @@ static T_JZsdkReturnCode RecvDeal_RealTimeMP2_stop(int Port, char *getbuf)
**********/
static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_start(int Port, char *getbuf, int len)
{
T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
JZSDK_LOG_INFO("%s,开始传输的音频文件保存",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
T_JZsdkReturnCode ret = HalRecv_tpye1_RecvDeal_UartTransmodeDecide();
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
JZSDK_LOG_ERROR("开始传输的音频文件保存失败");
return ret;
}
//1、处理帧长度,获取文件名长度
int FileNameLen = ((int)getbuf[3] << 8) + (int)getbuf[4] - 2 - 9;
... ... @@ -475,21 +551,16 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_start(int Port, char *getbu
#ifdef MEGAPHONE_CONFIG_STATUS_ON
ret = Megaphone_SaveAudioFileStart(FileName);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
#endif
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
HalSend_type1Send_Reply_Success(Port, FrameSequence);
}
else
{
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//3、调整接收模式为音频文件传输
HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(Port, JZ_DATA_TRANS_TYPE_AUDIO_FILE);
HalRecvDataLen = 0;
//4、回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
#else
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
#endif
return ret;
}
... ... @@ -502,7 +573,7 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_start(int Port, char *getbu
**********/
static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_LimitTransmission(int Port, char *getbuf, int len)
{
T_JZsdkReturnCode ret;
T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
... ... @@ -515,21 +586,21 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_LimitTransmission(int Port,
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
if (HalRecvMode != JZ_DATA_TRANS_TYPE_AUDIO_FILE)
{
JZSDK_LOG_ERROR("%s, 传输mp2文件未开始,无法传输", JZsdk_DefineCode_GetPortName(Port));
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
HalRecvDataLen += DataLen;
//JZSDK_LOG_DEBUG("%s,传输定长音频文件中 ,一共传输了%d字节",JZsdk_DefineCode_GetPortName(Port), HalRecvDataLen);
//传输数据接口
#ifdef MEGAPHONE_CONFIG_STATUS_ON
Megaphone_SaveAudioFileTrans(getbuf+9, DataLen);
ret = Megaphone_SaveAudioFileTrans(getbuf+9, DataLen);
#endif
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//无操作
}
else
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -541,31 +612,28 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_LimitTransmission(int Port,
**********/
static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_stop(int Port, char *getbuf)
{
T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
JZSDK_LOG_INFO("%s,传输的音频文件保存",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
if (HalRecvMode != JZ_DATA_TRANS_TYPE_AUDIO_FILE)
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
JZSDK_LOG_ERROR("关闭音频文件上传失败,音频文件上传未开始,无法关闭");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//1、保存音频数据
#ifdef MEGAPHONE_CONFIG_STATUS_ON
Megaphone_SaveAudioFileStop(JZ_FLAGCODE_OFF, NULL);
ret = Megaphone_SaveAudioFileStop(JZ_FLAGCODE_OFF, NULL);
#endif
//3、调整接收模式为音频文件传输
HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(Port, JZ_FLAGCODE_OFF);
JZSDK_LOG_INFO("一共传输了%d字节", HalRecvDataLen);
HalRecvDataLen = 0;
//2、回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//4、回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
}
else
{
//4、回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -585,14 +653,6 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_stop_and_check(int Port, ch
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
if (HalRecvMode != JZ_DATA_TRANS_TYPE_AUDIO_FILE)
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
JZSDK_LOG_ERROR("关闭音频文件上传失败,音频文件上传未开始,无法关闭");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
unsigned char checkCode[128];
int frameLenth = ((int)getbuf[3]) << 8 | (int)getbuf[4];
int CodeLenth = frameLenth - 10 - 2;
... ... @@ -649,11 +709,6 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_stop_and_check(int Port, ch
}
#endif
//调整接收模式为音频文件传输
HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(Port, JZ_FLAGCODE_OFF);
JZSDK_LOG_INFO("一共传输了%d字节", HalRecvDataLen);
HalRecvDataLen = 0;
return ret;
}
... ... @@ -708,15 +763,24 @@ static T_JZsdkReturnCode RecvDeal_audio_PlayFile(int Port, char *getbuf)
**********/
static T_JZsdkReturnCode RecvDeal_audio_PlayContinue(int Port, char *getbuf)
{
T_JZsdkReturnCode ret;
JZSDK_LOG_INFO("%s,音频继续播放",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
UIcontrol_ContinuePlayAudio(Port);
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
ret = UIcontrol_ContinuePlayAudio(Port);
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
}
else
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -814,6 +878,13 @@ static T_JZsdkReturnCode RecvDeal_audio_NextSong(int Port, char *getbuf)
static T_JZsdkReturnCode RecvDeal_audio_GetMusicList(int Port, char *getbuf)
{
T_JZsdkReturnCode ret;
T_JZsdkOsalHandler *OsalHandler = JZsdk_Platform_GetOsalHandler();
if (GetMusicList_MutexHandle == NULL)
{
OsalHandler->MutexCreate(&GetMusicList_MutexHandle);
}
OsalHandler->MutexLock(GetMusicList_MutexHandle);
JZSDK_LOG_INFO("%s,获取音乐列表",JZsdk_DefineCode_GetPortName(Port));
int music_sum = 0;
... ... @@ -824,7 +895,12 @@ static T_JZsdkReturnCode RecvDeal_audio_GetMusicList(int Port, char *getbuf)
#ifdef MEGAPHONE_CONFIG_STATUS_ON
//刷新歌曲列表
Megaphone_Flush_MusicList();
ret = Megaphone_Flush_MusicList();
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//解析获取的类型
int type = getbuf[9];
... ... @@ -945,6 +1021,8 @@ static T_JZsdkReturnCode RecvDeal_audio_GetMusicList(int Port, char *getbuf)
#endif
OsalHandler->MutexUnlock(GetMusicList_MutexHandle);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -1347,19 +1425,19 @@ static T_JZsdkReturnCode RecvDeal_CheckStatus_SoftwareVersion(int Port, char *ge
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
char majorVersion;
char minorVersion;
char MinjorVersion;
char modifyVersion;
char debugVersion;
//1、获取版本号
majorVersion = MAJOR_VERSION;
minorVersion = MINOR_VERSION;
MinjorVersion = MINOR_VERSION;
modifyVersion = MODIFY_VERSION;
debugVersion = DEBUG_VERSION;
JZSDK_LOG_INFO("当前的软件版本号为:%2x, %2x, %2x, %2x",majorVersion, minorVersion, modifyVersion, debugVersion);
JZSDK_LOG_INFO("当前的软件版本号为:%2x, %2x, %2x, %2x",majorVersion, MinjorVersion, modifyVersion, debugVersion);
//2、发送版本号
HalSend_type1Send_Reply_SoftVersion(Port, majorVersion, minorVersion, modifyVersion, debugVersion);
HalSend_type1Send_Reply_SoftVersion(Port, majorVersion, MinjorVersion, modifyVersion, debugVersion);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -1563,10 +1641,13 @@ static T_JZsdkReturnCode RecvDeal_Delete_Audio(int Port, char *getbuf)
FileName[FileName_Length] = '\0'; // 确保文件名以null结尾
//3、拼接指令
char cmd[512];
snprintf(cmd, 512 ,"rm /root/sdcard/audio/%s", FileName);
char FilePath[512];
snprintf(FilePath, 512 ,"/root/sdcard/audio/%s", FileName);
JZsdk_RunSystemCmd(cmd);
//4、删除文件
JZsdk_Osal_delete(FilePath);
JZsdk_Sync();
//4、刷新歌曲列表
#ifdef MEGAPHONE_CONFIG_STATUS_ON
... ... @@ -1581,13 +1662,13 @@ static T_JZsdkReturnCode RecvDeal_Delete_Audio(int Port, char *getbuf)
/*********
*
* 删除录音
* 删除pcm文件
*
*
**********/
static T_JZsdkReturnCode RecvDeal_Delete_VoiceRecord(int Port, char *getbuf)
{
JZSDK_LOG_INFO("%s,删除录音操作",JZsdk_DefineCode_GetPortName(Port));
JZSDK_LOG_INFO("%s,删除pcm文件操作",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
... ... @@ -1597,19 +1678,22 @@ static T_JZsdkReturnCode RecvDeal_Delete_VoiceRecord(int Port, char *getbuf)
FileName_Length = ((int)getbuf[3] << 8) + (int)getbuf[4] - 2 - 9;
//2、获取名字
char FileName[256];
char FileName[JZSDK_FILE_NAME_SIZE_MAX];
memcpy(FileName, &getbuf[9], FileName_Length);
FileName[FileName_Length] = '\0'; // 确保文件名以null结尾
//3、拼接指令
char cmd[512];
snprintf(cmd, 512 ,"rm /root/sdcard/audio/%s", FileName);
char FilePath[512];
snprintf(FilePath, 512 ,"/root/sdcard/pcm/%s", FileName);
JZsdk_RunSystemCmd(cmd);
//4、删除文件
JZsdk_Osal_delete(FilePath);
JZsdk_Sync();
//4、刷新歌曲列表
#ifdef MEGAPHONE_CONFIG_STATUS_ON
Megaphone_Flush_MusicList();
PcmFile_FlushList();
#endif
//回复操作成功
... ... @@ -1629,6 +1713,128 @@ static T_JZsdkReturnCode RecvDeal_Delete_VideoRecord()
}
/*********
*
* 音频重命名
*
*
**********/
static T_JZsdkReturnCode RecvDeal_Rename_Audio(int Port, char *getbuf)
{
JZSDK_LOG_INFO("%s,音频重命名",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//获取总帧长度
int FrameLength = JZsdk_Get_FrameLength(getbuf);
//获取原文件长度
int OldFileName_Length = getbuf[9];
//获取新文件长度
int NewFileName_Length = getbuf[10 + OldFileName_Length];
//获取原文件名字
unsigned char OldFileName[128];
memcpy(OldFileName, &getbuf[9], OldFileName_Length);
OldFileName[OldFileName_Length] = '\0'; // 确保文件名以null结尾
//获取新文件名字
unsigned char NewFileName[128];
memcpy(NewFileName, &getbuf[10 + OldFileName_Length], NewFileName_Length);
NewFileName[NewFileName_Length] = '\0'; // 确保文件名以null结尾
//3、拼接出地址
char OldFilePath[JZSDK_FILE_PATH_SIZE_MAX];
snprintf(OldFilePath, JZSDK_FILE_PATH_SIZE_MAX ,"/root/sdcard/audio/%s", OldFileName);
char NewFilePath[JZSDK_FILE_PATH_SIZE_MAX];
snprintf(NewFilePath, JZSDK_FILE_PATH_SIZE_MAX ,"/root/sdcard/audio/%s", NewFileName);
JZsdk_Osal_Rename(OldFilePath, NewFilePath);
JZsdk_Sync();
//4、刷新歌曲列表
#ifdef MEGAPHONE_CONFIG_STATUS_ON
Megaphone_Flush_MusicList();
#endif
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*********
*
* 录音重命名
*
*
**********/
static T_JZsdkReturnCode RecvDeal_Rename_VoiceRecord(int Port, char *getbuf)
{
JZSDK_LOG_INFO("%s,音频重命名",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//获取总帧长度
int FrameLength = JZsdk_Get_FrameLength(getbuf);
//获取原文件长度
int OldFileName_Length = getbuf[9];
//获取新文件长度
int NewFileName_Length = getbuf[10 + OldFileName_Length];
//获取原文件名字
unsigned char OldFileName[128];
memcpy(OldFileName, &getbuf[9], OldFileName_Length);
OldFileName[OldFileName_Length] = '\0'; // 确保文件名以null结尾
//获取新文件名字
unsigned char NewFileName[128];
memcpy(NewFileName, &getbuf[10 + OldFileName_Length], NewFileName_Length);
NewFileName[NewFileName_Length] = '\0'; // 确保文件名以null结尾
//3、拼接出地址
char OldFilePath[JZSDK_FILE_PATH_SIZE_MAX];
snprintf(OldFilePath, JZSDK_FILE_PATH_SIZE_MAX ,"/root/sdcard/pcm/%s", OldFileName);
char NewFilePath[JZSDK_FILE_PATH_SIZE_MAX];
snprintf(NewFilePath, JZSDK_FILE_PATH_SIZE_MAX ,"/root/sdcard/pcm/%s", NewFileName);
JZsdk_Osal_Rename(OldFilePath, NewFilePath);
JZsdk_Sync();
//4、刷新歌曲列表
#ifdef MEGAPHONE_CONFIG_STATUS_ON
PcmFile_FlushList();
#endif
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*********
*
* 删除视频
*
*
**********/
static T_JZsdkReturnCode RecvDeal_Rename_VideoRecord()
{
}
/*********
*
* tts设置音色
... ... @@ -1840,50 +2046,244 @@ static T_JZsdkReturnCode RecvDeal_TTS_Trans_stop(int Port, char *getbuf)
}
/*********
*
* 打开opus传输
* 播放时间回传
*
*
**********/
static T_JZsdkReturnCode RecvDeal_OpusTrans_start(int Port, char *getbuf)
static T_JZsdkReturnCode RecvDeal_Current_Play_Time(int Port, char *getbuf)
{
JZSDK_LOG_INFO("%s,打开opus传输",JZsdk_DefineCode_GetPortName(Port));
T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
JZSDK_LOG_INFO("%s,设置播放时间回传",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
T_JZsdkReturnCode ret = HalRecv_tpye1_RecvDeal_UartTransmodeDecide();
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
//获取帧操作
int Mode = getbuf[9];
JZSDK_LOG_INFO("设置播放回传模式:%d", Mode);
#ifdef MEGAPHONE_CONFIG_STATUS_ON
//如果是0 或者 1 是关闭或打开回传模式
if (Mode == JZ_FLAGCODE_OFF || Mode == JZ_FLAGCODE_ON)
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
JZSDK_LOG_ERROR("打开opus传输失败, 已开启其他传输模式");
return ret;
ret = Megaphone_PlayBackSet(Port, Mode);
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
else
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
}
//1、获取解码比特率
int decode_rate = getbuf[9] * 8000;
if(decode_rate == 0)
//如果是2,则主动索取
if (Mode == 2)
{
decode_rate = 16000;
ret = Megaphone_PlayBackTimeGet(Port);
}
//2、创建存储文件
#ifdef MEGAPHONE_CONFIG_STATUS_ON
Megaphone_SaveOpusStart(decode_rate);
#endif
//3、修改接收模式为传输opus
HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(Port, JZ_DATA_TRANS_TYPE_OPUS_FILE);
HalRecvDataLen = 0;
return ret;
}
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
/*********
*
* 获取播放时间回传模式
*
*
**********/
static T_JZsdkReturnCode RecvDeal_CheckStatus_CurrentPlayTime(int Port, char *getbuf)
{
T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
JZSDK_LOG_INFO("%s,获取播放时间回传模式",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
#ifdef MEGAPHONE_CONFIG_STATUS_ON
int mode = Megaphone_PlayBackGetMode(Port);
HalSend_type1Send_Reply_CurrentPlayTimeStatus(Port, mode);
#endif
return ret;
}
/*********
*
* 打开opus传输
*
*
**********/
static T_JZsdkReturnCode RecvDeal_OpusTrans_start(int Port, char *getbuf)
{
T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
JZSDK_LOG_INFO("%s,打开opus传输1型",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//1、获取解码比特率
int decode_rate = getbuf[9] * 8000;
if(decode_rate == 0)
{
decode_rate = 16000;
}
//2、创建存储文件
#ifdef MEGAPHONE_CONFIG_STATUS_ON
ret = Megaphone_SaveOpusStart(NULL, decode_rate, 16000, 1);
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_IS_BUSY)
{
JZSDK_LOG_ERROR("opus忙碌中");
}
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE)
{
JZSDK_LOG_ERROR("opus创建失败");
}
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
#else
JZSDK_LOG_ERROR("非喊话器不支持opus传输");
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
#endif
}
/*********
*
* 打开opus传输Ⅱ型
*
*
**********/
static T_JZsdkReturnCode RecvDeal_OpusTrans_start_2(int Port, char *getbuf)
{
T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
JZSDK_LOG_INFO("%s,打开opus传输1型",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//获取帧的长度
int FrameLen = JZsdk_Get_FrameLength(getbuf);
//获取存储模式
int SaveMode = getbuf[9];
//获取比特率
int BitChoose = getbuf[10];
int decode_rate = 16000;
// if (BitChoose == 0)
// {
// decode_rate = 16000;
// }
//获取采样率
int SampleChoose = getbuf[11];
int SampleRate = 16000;
// if (SampleChoose == 0)
// {
// SampleRate = 16000;
// }
//获取频道数
int ChannelChoose = getbuf[12];
int ChannelNum = 1;
// if (ChannelChoose == 0)
// {
// ChannelNum = 1;
// }
//获取文件名长度
int FileNameLen = getbuf[13];
if(FileNameLen != FrameLen - 14 - 2)
{
JZSDK_LOG_ERROR("文件名长度错误");
FileNameLen = FrameLen - 14 - 2;
}
if (FileNameLen > 128)
{
JZSDK_LOG_ERROR("文件名长度过长");
FileNameLen = 128;
}
//获取文件名
unsigned char FileName[128] = {0};
memcpy(FileName, getbuf + 14, FileNameLen);
//2、创建存储文件
#ifdef MEGAPHONE_CONFIG_STATUS_ON
if (SaveMode == JZ_FLAGCODE_OFF)
{
ret = Megaphone_SaveOpusStart(NULL, decode_rate, SampleRate, ChannelNum);
}
else
{
ret = Megaphone_SaveOpusStart(FileName, decode_rate, SampleRate, ChannelNum);
}
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_IS_BUSY)
{
JZSDK_LOG_ERROR("opus忙碌中");
}
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE)
{
JZSDK_LOG_ERROR("opus创建失败");
}
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
#else
JZSDK_LOG_ERROR("非喊话器不支持opus传输");
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
#endif
}
/*********
*
* opus定长传输文件
... ... @@ -1897,13 +2297,6 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_LimitTransmission(int Port, char *ge
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
if (HalRecvMode != JZ_DATA_TRANS_TYPE_OPUS_FILE)
{
JZSDK_LOG_ERROR("%s,不处于opus传输模式,无法接收opus定长音频文件",JZsdk_DefineCode_GetPortName(Port));
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//提取出数据
int DataLen = ((int)getbuf[3] << 8 ) + (int)getbuf[4] - 2 - 9;
if (DataLen > 1024)
... ... @@ -1911,13 +2304,21 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_LimitTransmission(int Port, char *ge
JZSDK_LOG_ERROR("%s, 传输得到的opus定长音频文件帧长度超出1024上限",JZsdk_DefineCode_GetPortName(Port));
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
HalRecvDataLen += DataLen;
JZSDK_LOG_DEBUG("%s,传输opus定长音频文件中 一共传输了%d字节",JZsdk_DefineCode_GetPortName(Port),HalRecvDataLen);
//传输数据接口
#ifdef MEGAPHONE_CONFIG_STATUS_ON
Megaphone_SaveOpusTrans(getbuf+9, DataLen);
ret = Megaphone_SaveOpusTrans(getbuf+9, DataLen);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
#else
JZSDK_LOG_ERROR("非喊话器不支持opus传输");
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
#endif
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
... ... @@ -1932,30 +2333,35 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_LimitTransmission(int Port, char *ge
**********/
static T_JZsdkReturnCode RecvDeal_OpusTrans_stop(int Port, char *getbuf)
{
T_JZsdkReturnCode ret;
JZSDK_LOG_INFO("%s,结束opus传输",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
if (HalRecvMode != JZ_DATA_TRANS_TYPE_OPUS_FILE)
#ifdef MEGAPHONE_CONFIG_STATUS_ON
ret = Megaphone_SaveOpusStop(JZ_FLAGCODE_OFF, NULL);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
JZSDK_LOG_ERROR("关闭opus结束传输失败,opus结束传输未开始,无法关闭");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
else
{
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
#ifdef MEGAPHONE_CONFIG_STATUS_ON
Megaphone_SaveOpusStop(JZ_FLAGCODE_OFF, NULL);
#endif
HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(Port, JZ_FLAGCODE_OFF);
JZSDK_LOG_INFO("一共传输了 %d字节\n",HalRecvDataLen);
HalRecvDataLen = 0;
#else
JZSDK_LOG_ERROR("非喊话器不支持opus传输");
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
#endif
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -1976,13 +2382,6 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_stop_and_check(int Port, char *getbu
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
if (HalRecvMode != JZ_DATA_TRANS_TYPE_OPUS_FILE)
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
JZSDK_LOG_ERROR("关闭音频文件上传失败,音频文件上传未开始,无法关闭");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
unsigned char checkCode[128];
int frameLenth = ((int)getbuf[3]) << 8 | (int)getbuf[4];
... ... @@ -2035,18 +2434,16 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_stop_and_check(int Port, char *getbu
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
}
#endif
//3、调整接收模式为音频文件传输
HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(Port, JZ_FLAGCODE_OFF);
JZSDK_LOG_INFO("一共传输了 %d字节\n",HalRecvDataLen);
HalRecvDataLen = 0;
#else
ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
JZSDK_LOG_ERROR("非喊话器不支持opus传输");
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
#endif
return ret;
}
/*********
*
* opus播放
... ... @@ -2055,30 +2452,36 @@ static T_JZsdkReturnCode RecvDeal_OpusTrans_stop_and_check(int Port, char *getbu
**********/
static T_JZsdkReturnCode RecvDeal_OpusPlay(int Port, char *getbuf)
{
T_JZsdkReturnCode ret;
JZSDK_LOG_INFO("%s,opus播放",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
T_JZsdkReturnCode ret = HalRecv_tpye1_RecvDeal_UartTransmodeDecide();
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
#ifdef MEGAPHONE_CONFIG_STATUS_ON
//获取是否处于opus传输中的模式
if (OpusFile_GetSaveFlag() == JZ_FLAGCODE_ON)
{
JZSDK_LOG_ERROR("禁止播放opus,当前正处于录入中");
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
JZSDK_LOG_ERROR("opus播放失败,存在传输模式打开中");
return ret;
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
UIcontrol_Opus_PlayFixedFile(Port);
#endif
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*********
*
* 开启opus实时喊话 功能
... ... @@ -2087,24 +2490,13 @@ static T_JZsdkReturnCode RecvDeal_OpusPlay(int Port, char *getbuf)
**********/
static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_start(int Port, char *getbuf)
{
T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
JZSDK_LOG_INFO("%s,开启opus实时喊话功能",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
T_JZsdkReturnCode ret = HalRecv_tpye1_RecvDeal_UartTransmodeDecide();
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
JZSDK_LOG_ERROR("开启opus实时喊话失败");
return ret;
}
//1、修改接收模式
HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(Port, JZ_DATA_TRANS_TYPE_REAL_TIME_OPUS);
HalRecvDataLen = 0;
//2、获取码率倍率 默认8k*1倍
int RateMagnification = (int)getbuf[9];
int Rate;
... ... @@ -2120,11 +2512,17 @@ static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_start(int Port, char *getbu
//3、打开实时语音模式
#ifdef MEGAPHONE_CONFIG_STATUS_ON
Megaphone_RealTimeVoice_Start(Rate);
ret = Megaphone_RealTimeVoice_Start(Rate);
#endif
//4、通知成功打开语音发送模式
HalSend_type1Send_Reply_Success(Port, FrameSequence);
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
HalSend_type1Send_Reply_Success(Port, FrameSequence);
}
else
{
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -2138,7 +2536,7 @@ static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_start(int Port, char *getbu
static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_LimitTransmission(int Port, char *getbuf, int len)
{
T_JZsdkReturnCode ret;
T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
... ... @@ -2152,73 +2550,227 @@ static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_LimitTransmission(int Port,
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//判断是否是opus实时语音传输模式
if (HalRecvMode != JZ_DATA_TRANS_TYPE_REAL_TIME_OPUS)
JZSDK_LOG_DEBUG("%s,传输opus定长语音传输中 长度:%d",JZsdk_DefineCode_GetPortName(Port), DataLen);
//传输数据接口
#ifdef MEGAPHONE_CONFIG_STATUS_ON
ret = Megaphone_RealTimeVoice_Trans(getbuf+9, DataLen);
#endif
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作失败
JZSDK_LOG_ERROR("%s,opus实时语音定长传输失败,未开启实时opus传输模式", JZsdk_DefineCode_GetPortName(Port));
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
HalRecvDataLen += DataLen;
JZSDK_LOG_DEBUG("%s,传输opus定长语音传输中 长度:%d,总长度:%d",JZsdk_DefineCode_GetPortName(Port), DataLen, HalRecvDataLen);
//传输数据接口
return ret;
}
/*********
*
* 关闭opus实时语音发送功能
*
*
**********/
static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_stop(int Port, char *getbuf)
{
JZSDK_LOG_INFO("%s,关闭opus实时喊话功能",JZsdk_DefineCode_GetPortName(Port));
T_JZsdkReturnCode ret;
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//2、关闭实时语音模式
#ifdef MEGAPHONE_CONFIG_STATUS_ON
ret = Megaphone_RealTimeVoice_Trans(getbuf+9, DataLen);
ret = Megaphone_RealTimeVoice_Close();
#endif
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//4、回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
}
else
{
//4、回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
}
return ret;
}
/*********
*
* 关闭opus实时语音发送功能
*
*
**********/
static T_JZsdkReturnCode RecvDeal_Opus_RealTimeVoice_stop(int Port, char *getbuf)
{
JZSDK_LOG_INFO("%s,关闭opus实时喊话功能",JZsdk_DefineCode_GetPortName(Port));
T_JZsdkReturnCode ret;
/*******************************************************************************************************************************
*
* pcm部分
*
* *******************************************************************************************************************************/
/*********************************
*
* PCM播放
*
*
* **********************************/
static T_JZsdkReturnCode RecvDeal_PCM_Play(int Port, char *getbuf)
{
T_JZsdkReturnCode ret;
JZSDK_LOG_INFO("%s, PCM播放",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//分析pcm文件名
unsigned char PcmName[128];
unsigned int PcmNameLen = JZsdk_Get_FrameLength(getbuf) - 9 - 2;
if (PcmNameLen > 128)
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
memset(PcmName, 0, sizeof(PcmName));
memcpy(PcmName, &getbuf[10], PcmNameLen);
ret = UIcontrol_Pcm_PlayListFile(Port, PcmName, PcmNameLen);
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
}
else
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/**********************************
*
* pcm列表查询
*
*
* **********************************/
static T_JZsdkReturnCode RecvDeal_Get_PcmList(int Port, char *getbuf)
{
T_JZsdkReturnCode ret;
JZSDK_LOG_INFO("%s,pcm列表查询",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
#ifdef MEGAPHONE_CONFIG_STATUS_ON
//刷新pcm列表
PcmFile_FlushList();
//获取opus总数
int PcmFileCount = PcmFile_GetListNum();
//注册一个opus数组
unsigned char **MusicName = (unsigned char **)malloc(PcmFileCount * sizeof(unsigned char*));
if (MusicName == NULL)
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//注册一个歌曲名字长度的数组
int *MusicNameLength = (int *)malloc(PcmFileCount * sizeof(int));
if (MusicNameLength == NULL)
{
free(MusicName);
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//为每一首opus分配内存
for (int i = 0; i < PcmFileCount; i++)
{
MusicName[i] = (unsigned char*)malloc(128 * sizeof(unsigned char));
if (MusicName[i] == NULL)
{
// 内存分配失败,需要释放之前分配的内存
for (int j = 0; j < i; j++)
{
free(MusicName[j]);
}
free(MusicNameLength);
free(MusicName);
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
memset(MusicName[i], 0, 128 * sizeof(unsigned char));
//如果成功分配内存,则写入名字
Megaphone_PcmFile_GetAudioNameByIndex(i, MusicName[i], &MusicNameLength[i]);
}
JZSDK_LOG_DEBUG("pcm列表取出完成");
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//发送开始帧
ret = HalSend_type1Send_Send_OpusList_Start(Port, FrameSequence, PcmFileCount);
if (HalRecvMode != JZ_DATA_TRANS_TYPE_REAL_TIME_OPUS)
for (int i = 0; i < PcmFileCount; i++)
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
JZSDK_LOG_ERROR("关闭opus实时语音发送功能失败,opus实时语音发送功能未开始,无法关闭");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//获取歌曲详细信息
struct AudioMange_audio_struct AudioDetailMessage;
memset(&AudioDetailMessage, 0, sizeof(struct AudioMange_audio_struct));
ret = PcmFile_GetAudioInfo(MusicName[i], MusicNameLength[i],&AudioDetailMessage);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
//1、修改接收模式
HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(Port, JZ_FLAGCODE_OFF);
JZSDK_LOG_INFO("一共播放了:%d的内容", HalRecvDataLen);
HalRecvDataLen = 0;
continue;
}
//2、关闭实时语音模式
#ifdef MEGAPHONE_CONFIG_STATUS_ON
ret = Megaphone_RealTimeVoice_Close();
#endif
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//4、回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
//发送opus列表
ret = HalSend_type1Send_Send_OpusList_Trans(Port, FrameSequence, AudioDetailMessage.FileName, AudioDetailMessage.FileNameLen, AudioDetailMessage.FileSize, AudioDetailMessage.Time);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
continue;
}
}
else
//释放存储的数据
for (int i = 0; i < PcmFileCount; i++)
{
//4、回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
free(MusicName[i]);
}
free(MusicNameLength);
free(MusicName);
return ret;
}
//发送结束帧
ret = HalSend_type1Send_Send_OpusList_Stop(Port, FrameSequence);
#else
JZSDK_LOG_ERROR("非喊话器不支持pcm列表");
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
#endif
}
/*******************************************************************************************************************************
... ... @@ -2604,6 +3156,185 @@ static T_JZsdkReturnCode RecvDeal_Checkstatus_OutPutPower(int Port, char *getbuf
return ret;
}
/*******************************************************************************************************************************
*
* 升级部分
*
* *******************************************************************************************************************************/
/*********
*
* 准备升级
*
**********/
static T_JZsdkReturnCode RecvDeal_Upgrade_Prepare(int Port, char *getbuf)
{
T_JZsdkReturnCode ret;
JZSDK_LOG_INFO("%s,准备升级",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
int status = 0;
Upgrade_GetStatus(&status);
//回复升级的准备状态
HalSend_type1Send_Reply_ReadyForUpdate(Port, FrameSequence);
return ret;
}
/*********
*
* 升级校验码
*
**********/
static T_JZsdkReturnCode RecvDeal_Upgrade_SendCheckCode(int Port, char *getbuf)
{
T_JZsdkReturnCode ret;
JZSDK_LOG_INFO("%s,升级校验码",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//解析出校验码
unsigned char CheckCode[32];
memcpy(CheckCode, getbuf + 9, 32);
//将校验码放置到升级模块
ret = Upgrade_PackageCheckCodeSave(CheckCode, JZSDK_CHECK_SUM_TYPE_MD5, 32);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复校验码已收到
HalSend_type1Send_Reply_UpgradeHaveRecvCheckCode(Port, 1);
}
else
{
//回复校验码已收到
HalSend_type1Send_Reply_UpgradeHaveRecvCheckCode(Port, 0);
}
return ret;
}
/*********
*
* 数据传输开始
*
**********/
static T_JZsdkReturnCode RecvDeal_Upgrade_Start(int Port, char *getbuf)
{
T_JZsdkReturnCode ret;
JZSDK_LOG_INFO("%s,数据传输开始",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
ret = Upgrade_PackageDownload_Start();
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复开始文件发送
HalSend_type1Send_Reply_UpgradeStart(Port);
}
else
{
//回复开始文件发送失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
}
return ret;
}
/*********
*
* 数据传输中
*
**********/
static T_JZsdkReturnCode RecvDeal_Upgrade_Trans(int Port, char *getbuf)
{
T_JZsdkReturnCode ret;
JZSDK_LOG_INFO("%s,数据传输中",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//解析数据长度
int FrameLength = JZsdk_Get_FrameLength(getbuf);
int BufLen = FrameLength - 8 -2;
ret = Upgrade_PackageDownload_Trans(&getbuf[9], BufLen);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复数据传输失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
}
return ret;
}
/*********
*
* 数据传输结束
*
**********/
static T_JZsdkReturnCode RecvDeal_Upgrade_End(int Port, char *getbuf)
{
T_JZsdkReturnCode ret;
JZSDK_LOG_INFO("%s,数据传输结束",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
ret = Upgrade_PackageDownload_Stop();
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复数据传输失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
return ret;
}
else
{
//回复结束文件传输
HalSend_type1Send_Reply_UpgradeEnd(Port);
}
//回复完成后,开始校验
ret = Upgrade_PackageCheck();
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
HalSend_type1Send_Reply_UpgradeCheckResult(Port, 1);
return ret;
}
//回复校验成功
HalSend_type1Send_Reply_UpgradeCheckResult(Port, 0);
//开始升级
Upgrade_PackageUpgrade();
return ret;
}
/*******************************************************************************************************************************
*
* 警灯部分
... ... @@ -2802,9 +3533,9 @@ static T_JZsdkReturnCode RecvDeal_ObtainTimeStamp(int Port, unsigned char *getbu
}
// 提取年、月、日
int year = tm_info->tm_year + 1900; // 注意:tm_year是从1900年开始的
int year = tm_info->tm_year + 1980; // 注意:tm_year是从1980年开始的
int month = tm_info->tm_mon + 1; // 注意:tm_mon是从0开始的(0=1月,11=12月)
int day = tm_info->tm_mday;
int day = tm_info->tm_mday + 6;
JZSDK_LOG_INFO("获得年份: %d, 月份: %d, 日期: %d", year, month, day);
... ... @@ -2817,6 +3548,9 @@ static T_JZsdkReturnCode RecvDeal_ObtainTimeStamp(int Port, unsigned char *getbu
JZSDK_LOG_ERROR("设置系统时间失败");
}
//设置gps时间
Attribute_SetGpsTime((T_JZsdkAttributeGpsTime)TimeStamp);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -2836,13 +3570,25 @@ static T_JZsdkReturnCode RecvDeal_ObtainAllVersion(int Port, unsigned char *getb
JZSDK_LOG_INFO("不处理本地版本信息");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//查看设备id是否已存在到本地
if(DeviceInfo_IsExist(DeviceId) != JZ_FLAGCODE_ON)
{
DeviceInfo_IncreaseDeviceId(DeviceId);
}
//设置到本地
DeviceInfo_SetAllVerision(DeviceId, MajorVersion, MinjorVersion, ModifyVersion, DebugVersion);
DeviceInfo_IncreaseVersion(DeviceId, MajorVersion, MinjorVersion, ModifyVersion, DebugVersion);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/********************
*
* 接收到序列号
*
*
* **********************/
static T_JZsdkReturnCode RecvDeal_ObtainAllSerialNumber(int Port, unsigned char *getbuf)
{
int DeviceId = getbuf[9];
... ... @@ -2856,14 +3602,14 @@ static T_JZsdkReturnCode RecvDeal_ObtainAllSerialNumber(int Port, unsigned char
JZSDK_LOG_INFO("获得到全部序列号帧, 设备0x%x, %s",DeviceId, SerialNumber);
if (DeviceId == DEVICE_VERSION)
//查看设备id是否已存在到本地
if(DeviceInfo_IsExist(DeviceId) != JZ_FLAGCODE_ON)
{
JZSDK_LOG_INFO("不处理本地版本信息");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
DeviceInfo_IncreaseDeviceId(DeviceId);
}
//设置到本地
DeviceInfo_SetAllSerialNumber(DeviceId, SerialNumber, SerialNumberLen);
DeviceInfo_IncreaseSerialNumber(DeviceId, SerialNumber, SerialNumberLen);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -3157,6 +3903,7 @@ static T_JZsdkReturnCode RecvDeal_QuerySecondaryDeviceName(int Port, char *getbu
//2、获取当前从设备名
int SecondaryName = SecondaryDeviceName;
JZSDK_LOG_INFO("当前从设备为:%d", SecondaryName);
//3、回复当前从设备名
HalSend_type1Send_Reply_SecondaryDeviceName(Port ,SecondaryName, FrameSequence);
... ... @@ -3311,8 +4058,31 @@ static T_JZsdkReturnCode RecvDeal_Checkstatus_GimbalLinkage(int Port, char *getb
return ret;
}
static T_JZTaskHandle g_UartReinit_task = NULL;
static void *UartReinit_thread(void *arg)
{
int *arg_value = (int *)arg;
int Port = arg_value[0];
int Value[1];
Value[0]= arg_value[1];
JZsdk_HalPort_ReInit(Port, Value);
JZSDK_LOG_INFO("串口重置完毕");
free(arg);
}
static T_JZsdkReturnCode RecvDeal_UartBitrateChange(int Port, char *getbuf)
{
T_JZsdkOsalHandler *osalHandler = JZsdk_Platform_GetOsalHandler();
JZSDK_LOG_INFO("%s,收到串口比特率修改",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
... ... @@ -3349,8 +4119,14 @@ static T_JZsdkReturnCode RecvDeal_UartBitrateChange(int Port, char *getbuf)
break;
}
int Value[1] = {BitRate};
JZsdk_HalPort_ReInit(Port, Value);
int *arg = (int *)malloc(sizeof(int) * 2);
arg[0] = Port;
arg[1] = BitRate;
//使用一个线程用于修改比特率
osalHandler->TaskCreate("UartReinit_task", UartReinit_thread, 8192, arg, &g_UartReinit_task);
JZSDK_LOG_INFO("已创建串口重置线程");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -3505,8 +4281,7 @@ static T_JZsdkReturnCode RecvDeal_ObtainSecondaryDeviceName(int Port, char *getb
printf("设置本地从设备名%x\n", value1);
SecondaryDeviceName = value1;
//设置本地从设备名
DeviceInfo_SetDeviceName(Port, value1);
DeviceInfo_IncreaseDeviceId(value1);
//广播从设备名
UIcontrol_Broadcast_SecondaryDeviceName(value1);
... ... @@ -3514,6 +4289,7 @@ static T_JZsdkReturnCode RecvDeal_ObtainSecondaryDeviceName(int Port, char *getb
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*******************************************************************************************************************************
*
* 云台相关
... ... @@ -3650,6 +4426,12 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi
return 0;
break;
//预设任务帧
case JZ_INSCODE_5AFRAME_PRESET_TASK:
RecvDeal_PresetTask(Port,getbuf);
return 0;
break;
//获取设备信息
case JZ_INSCODE_5AFRAME_DEVICE_MESSAGE:
RecvDeal_GetDeviceMessage(Port,getbuf);
... ... @@ -3832,13 +4614,37 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi
return 0;
break;
//音频重命名
case JZ_INSCODE_5AFRAME_RENAME_AUDIO:
RecvDeal_Rename_Audio(Port,getbuf);
return 0;
break;
//录音重命名
case JZ_INSCODE_5AFRAME_RENAME_VOICE_RECORD:
RecvDeal_Rename_VoiceRecord(Port,getbuf);
return 0;
break;
//视频重命名
case JZ_INSCODE_5AFRAME_RENAME_VIDEO_RECORD:
RecvDeal_Rename_VideoRecord(Port,getbuf);
return 0;
break;
//打开opus传输
case JZ_INSCODE_5AFRAME_OPUS_TRANS_START:
case JZ_INSCODE_5AFRAME_OPUS_TRANS_START_1:
RecvDeal_OpusTrans_start(Port,getbuf);
return 0;
break;
//传输opus文件数据2型
case JZ_INSCODE_5AFRAME_OPUS_TRANS_START_2:
RecvDeal_OpusTrans_start_2(Port,getbuf);
return 0;
break;
//传输定长opus文件数据
case JZ_INSCODE_5AFRAME_OPUS_TRANS_LIMIT_TRANSMISSION:
RecvDeal_OpusTrans_LimitTransmission(Port,getbuf, len);
... ... @@ -3863,7 +4669,6 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi
return 0;
break;
//开启opus实时喊话
case JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_START:
RecvDeal_Opus_RealTimeVoice_start(Port,getbuf);
... ... @@ -3882,6 +4687,18 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi
return 0;
break;
//PCM播放
case JZ_INSCODE_5AFRAME_PCM_PLAY:
RecvDeal_PCM_Play(Port,getbuf);
return 0;
break;
//获取Pcm列表
case JZ_INSCODE_5AFRAME_PCM_GETPCMLIST:
RecvDeal_Get_PcmList(Port,getbuf);
return 0;
break;
//云台控制
case JZ_INSCODE_5AFRAME_GIMBAL_PITCH_CONTROL:
RecvDeal_Gimbal_PitchControl(Port,getbuf);
... ... @@ -3922,6 +4739,17 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi
return 0;
break;
//开关播放时间回传
case JZ_INSCODE_5AFRAME_CURRENT_PLAY_TIME:
RecvDeal_Current_Play_Time(Port,getbuf);
return 0;
break;
//检查是否开启播放时间回传
case JZ_INSCODE_5AFRAME_CHECKSTATUS_CURRENT_PLAYTIME:
RecvDeal_CheckStatus_CurrentPlayTime(Port,getbuf);
return 0;
break;
//音频列表获取
case JZ_INSCODE_5AFRAME_AUDIO_GETMUSICLIST:
... ... @@ -3998,6 +4826,34 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi
//升级部分
//准备升级
case JZ_INSCODE_5AFRAME_UPGRADE_PERPARE:
RecvDeal_Upgrade_Prepare(Port,getbuf);
break;
//升级校验码
case JZ_INSCODE_5AFRAME_UPGRADE_SEND_CHECKCODE:
RecvDeal_Upgrade_SendCheckCode(Port,getbuf);
break;
//数据传输开始
case JZ_INSCODE_5AFRAME_UPGRADE_STRAT:
RecvDeal_Upgrade_Start(Port,getbuf);
break;
//数据传输中
case JZ_INSCODE_5AFRAME_UPGRADE_TRANS:
RecvDeal_Upgrade_Trans(Port,getbuf);
break;
//数据传输结束
case JZ_INSCODE_5AFRAME_UPGRADE_END:
RecvDeal_Upgrade_End(Port,getbuf);
break;
/*******************************************************************************************************************************
*
* 5B类部分
... ... @@ -4293,9 +5149,6 @@ static T_JZsdkReturnCode HalRecv_tpye1_RecvDeal_Set_UartReceiveMode(int Port, in
static T_JZsdkReturnCode HalRecv_tpye1_RecvDeal_UartTransmodeDecide()
{
if ((HalRecvMode == JZ_DATA_TRANS_TYPE_REAL_TIME_MP2 ) //mp2实时语音传输模式
|| (HalRecvMode == JZ_DATA_TRANS_TYPE_AUDIO_FILE) //音频文件传输模式
|| (HalRecvMode == JZ_DATA_TRANS_TYPE_OPUS_FILE) //opus无限制传输模式
|| (HalRecvMode == JZ_DATA_TRANS_TYPE_REAL_TIME_OPUS) //opus实时语音无限制传输模式
|| (HalRecvMode == JZ_DATA_TRANS_TYPE_TTS)) //TTS无限制传输模式)
{
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
... ...
... ... @@ -3,9 +3,8 @@
#include "JZsdk_uart/JZsdk_Uart_UartDeal.h"
#include "Hal_Send/HalSend.h"
#define SINGLE_THREAD_SEND 0
#define MULTI_THREAD_SEND 1
/*****************************
*
... ... @@ -33,11 +32,11 @@ T_JZsdkReturnCode HalSend_SendData(unsigned int Port, unsigned char *Data, unsig
case UART_DEV_3:
case UART_DEV_4:
case UART_DEV_5:
if (SendType == SINGLE_THREAD_SEND)
if (SendType == MULTI_THREAD_SEND)
{
JZsdk_Uart_UartSend(Port, Data, DataLen);
}
else if (SendType == MULTI_THREAD_SEND)
else if (SendType == SINGLE_THREAD_SEND)
{
JZsdk_Uart_UartSend_NotTask(Port, Data, DataLen);
}
... ...
... ... @@ -20,11 +20,13 @@ extern "C" {
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
#define SINGLE_THREAD_SEND 0
#define MULTI_THREAD_SEND 1
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
T_JZsdkReturnCode HalSend_SendData(unsigned int Port, unsigned char *Data, unsigned int DataLen, unsigned int SendType);
... ...
... ... @@ -41,7 +41,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_Connect(int Uartport , int FrameSequenc
sendbuf[6] = FrameSequence; //帧序列
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -62,7 +62,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_HeartBeatStatus(int Uartport , int Fram
sendbuf[6] = FrameSequence; //帧序列
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -82,27 +82,27 @@ T_JZsdkReturnCode HalSend_type1Send_Set_PowerStatus(int Uartport, int FrameSeque
sendbuf[6] = FrameSequence; //帧序列
//2、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//请求心跳帧
T_JZsdkReturnCode HalSend_type1Send_Ask_HeartBeatStatus(int Uartport , int FrameSequence,int HeartBeatStatus)
//发送心跳帧
T_JZsdkReturnCode HalSend_type1Send_HeartBeatStatus(int Uartport , int FrameSequence,int HeartBeatStatus)
{
printf("发送请求心跳帧\n");
printf("发送心跳帧\n");
unsigned char sendbuf[256];
int send_buf_len;
//1、获取帧样板
JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_HEARTBEAT, sendbuf, &send_buf_len);
JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_HEARTBEAT, sendbuf, &send_buf_len);
sendbuf[9] = HeartBeatStatus;
sendbuf[6] = FrameSequence; //帧序列
//2、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -121,7 +121,7 @@ T_JZsdkReturnCode HalSend_type1Send_Ask_TimeStamp(int Uartport , int FrameSequen
sendbuf[6] = FrameSequence; //帧序列
//2、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -145,7 +145,7 @@ T_JZsdkReturnCode HalSend_type1Send_SendAllVersion(int Uartport, int FrameSequen
sendbuf[13] = DebugVersion;
//2、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -172,7 +172,7 @@ T_JZsdkReturnCode HalSend_type1Send_SendAllSerialNumber(int Uartport, int FrameS
sendbuf[4] = (send_buf_len & 0xff);
//2、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -190,7 +190,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_Success(int Uartport ,int FrameSequenc
sendbuf[6] = FrameSequence; //帧序列
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -208,7 +208,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_Failure(int Uartport ,int FrameSequenc
sendbuf[6] = FrameSequence; //帧序列
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//发送校验失败帧
... ... @@ -224,7 +224,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_CheckError(int Uartport ,int FrameSequ
sendbuf[6] = FrameSequence; //帧序列
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//发送解码失败帧
... ... @@ -240,7 +240,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_DecodeError(int Uartport ,int FrameSeq
sendbuf[6] = FrameSequence; //帧序列
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//发送当前从设备名
... ... @@ -257,7 +257,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_SecondaryDeviceName(int Uartport , int
sendbuf[10] = device_name;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
... ... @@ -274,7 +274,7 @@ T_JZsdkReturnCode HalSend_type1Send_QuerySecondaryDeviceName(int Uartport ,int F
sendbuf[6] = FrameSequence; //帧序列
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//发送当前设备序列号
... ... @@ -301,7 +301,7 @@ T_JZsdkReturnCode HalSend_type1Send_SerialNumber(int UartPort, int FrameSequence
sendbuf[4] = send_buf_len;
//3、发送帧
HalSend_SendData(UartPort ,sendbuf, send_buf_len, 1);
HalSend_SendData(UartPort ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
/*********
... ... @@ -326,7 +326,28 @@ T_JZsdkReturnCode HalSend_type1Send_DeviceMessage(int UartPort, int FrameSequenc
sendbuf[9+messageLen + 1] = 0x23;
//3、发送帧
HalSend_SendData(UartPort ,sendbuf, send_buf_len, 1);
HalSend_SendData(UartPort ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
/***********************************
*
* 发送预设任务状态
*
* ************************/
T_JZsdkReturnCode HalSend_type1Send_PresetTaskStatus(int UartPort, int FrameSequence, int staus)
{
unsigned char sendbuf[256];
memset(sendbuf,0,sizeof(sendbuf));
unsigned int send_buf_len = 0;
//获取帧样板
JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_PRESET_TASK , sendbuf, &send_buf_len);
sendbuf[6] = FrameSequence; //帧序列
sendbuf[9] = staus;
//3、发送帧
HalSend_SendData(UartPort ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
... ... @@ -457,7 +478,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_AudioList_Start(int Uartport, int Frame
sendbuf[9] = music_sum;
//发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 0);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -476,7 +497,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_AudioList_Stop(int Uartport, int FrameS
//写入数据
sendbuf[6] = FrameSequence; //帧序列
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 0);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
}
//发送歌曲列表Ⅱ型
... ... @@ -514,7 +535,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_AudioList_2(int Uartport, int FrameSequ
sendbuf[send_buf_len-1] = 0x23;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 0);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -542,7 +563,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_AudioDetailMessage(int Uartport, int Fr
sendbuf[send_buf_len-1] = 0x23;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -560,7 +581,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_PlayStatus_end(int Uartport)
//2、写入数据
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//发送播放状态帧
... ... @@ -593,7 +614,7 @@ T_JZsdkReturnCode HalSend_type1Send_Send_PlayStatus(int Uartport ,int num)
sendbuf[9] = (char)num;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//回复当前播放的歌曲名字
... ... @@ -634,7 +655,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_Volume(int Uartport ,int num)
sendbuf[9] = (char)num;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
... ... @@ -657,7 +678,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_SoftVersion(int Uartport ,char majorVe
sendbuf[12] = debugVersion;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//发送循环状态
... ... @@ -675,7 +696,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_LoopPlayStatus(int Uartport ,int statu
sendbuf[9] = status;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
... ... @@ -694,13 +715,13 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_TTS_tone(int Uartport ,int tone)
sendbuf[9] = tone;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//发送语速
T_JZsdkReturnCode HalSend_type1Send_Reply_TTS_speed(int Uartport ,int speed)
{
printf("发送音色\n");
printf("发送语速\n");
unsigned char sendbuf[256];
int send_buf_len;
... ... @@ -712,7 +733,44 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_TTS_speed(int Uartport ,int speed)
sendbuf[9] = speed;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//发送当前播放时间状态
T_JZsdkReturnCode HalSend_type1Send_Reply_CurrentPlayTimeStatus(int Uartport ,int mode)
{
printf("发送当前播放时间状态帧\n");
unsigned char sendbuf[256];
int send_buf_len;
//1、获取帧样板
JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_CHECKSTATUS_CURRENT_PLAYTIME, sendbuf, &send_buf_len);
//2、写入数据
sendbuf[9] = mode;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//发送当前播放时间
T_JZsdkReturnCode HalSend_type1Send_Reply_CurrentPlayTime(int Uartport ,int time)
{
printf("发送当前播放时间\n");
unsigned char sendbuf[256];
int send_buf_len;
//1、获取帧样板
JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_CURRENT_PLAY_TIME, sendbuf, &send_buf_len);
//2、写入数据
sendbuf[9] = time >> 8;
sendbuf[10] = time & 0xff;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
/*************
... ... @@ -734,7 +792,87 @@ T_JZsdkReturnCode HalSend_type1Send_OpusDecodeStatus(int Uartport,int value)
sendbuf[9] = value;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//发送opus列表开始帧
T_JZsdkReturnCode HalSend_type1Send_Send_OpusList_Start(int Uartport, int FrameSequence, int music_sum)
{
printf("发送opus开始列表帧\n");
unsigned char sendbuf[128];
int send_buf_len;
//获取帧样板
memset(sendbuf,0,sizeof(sendbuf));
JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_OPUSLIST_START , sendbuf, &send_buf_len);
//写入数据
sendbuf[6] = FrameSequence; //帧序列
sendbuf[9] = music_sum;
//发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//发送opus列表
T_JZsdkReturnCode HalSend_type1Send_Send_OpusList_Trans(int Uartport, int FrameSequence, unsigned char *name, unsigned int namelen, unsigned int Filesize, unsigned int Time)
{
printf("发送opus列表 %s %d %d %d\n",name, namelen, Filesize, Time);
unsigned char sendbuf[400];
int send_buf_len;
//1、获取帧样板
JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_OPUSLIST_TRANS , sendbuf, &send_buf_len);
//写入文件名
sendbuf[9] = namelen;
memcpy(&sendbuf[10], name, namelen);
//文件大小
sendbuf[10+namelen] = (Filesize >> 24) & 0xFF;
sendbuf[10+namelen+1] = (Filesize >> 16) & 0xFF;
sendbuf[10+namelen+2] = (Filesize >> 8) & 0xFF;
sendbuf[10+namelen+3] = Filesize & 0xFF;
//播放时间
sendbuf[10+namelen+4] = (Time >> 8) & 0xFF;
sendbuf[10+namelen+5] = Time & 0xFF;
//2、写入数据
send_buf_len = 9 + 1 + namelen + 4 + 2 + 2;
sendbuf[3] = (unsigned char)( (send_buf_len >> 8) & 0xFF); //帧长度
sendbuf[4] = (unsigned char)(send_buf_len & 0xFF); //帧长度
sendbuf[6] = FrameSequence; //帧序列
sendbuf[send_buf_len-2] = 0x00;
sendbuf[send_buf_len-1] = 0x23;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//发送opus列表结束帧
T_JZsdkReturnCode HalSend_type1Send_Send_OpusList_Stop(int Uartport, int FrameSequence)
{
printf("发送opus结束列表帧\n");
unsigned char sendbuf[128];
int send_buf_len;
//获取帧样板
memset(sendbuf,0,sizeof(sendbuf));
JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_OPUSLIST_END , sendbuf, &send_buf_len);
//写入数据
sendbuf[6] = FrameSequence; //帧序列
HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
}
/****************************************************************************************************************************************************
... ... @@ -766,7 +904,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalPitchAngle(int Uartport ,int ang
sendbuf[11] = (char)(angle & 255);
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//设置当前云台角度
... ... @@ -794,7 +932,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_GimbalPitchAngle(int Uartport ,int angle
sendbuf[11] = (angle & 0xff);
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//查询云台角度
... ... @@ -811,7 +949,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalAngle(int Uartport ,int Fr
sendbuf[6] = FrameSequence;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//微调云台pitch
... ... @@ -839,7 +977,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_GimbalFineTuningPitch(int Uartport, int
sendbuf[11] = (PitchFineTuning & 0xff);
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//查询云台角度微调值
... ... @@ -856,7 +994,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalFineTuningPitch(int Uartpo
sendbuf[6] = FrameSequence; //帧序列
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//回复云台pitch微调值
... ... @@ -884,7 +1022,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalFineTuningPitch(int Uartport, in
sendbuf[11] = (FineTunigPitch & 0xff);
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//设置云台联动
... ... @@ -902,7 +1040,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_GimbalLinkageControl(int Uartport,int Fr
sendbuf[10] = value;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//查询云台联动值
... ... @@ -919,7 +1057,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalLinkage(int Uartport,int F
sendbuf[6] = FrameSequence; //帧序列
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//发送云台联动值
... ... @@ -937,7 +1075,7 @@ T_JZsdkReturnCode HalSend_type1Send_GimbalLinkageControl(int Uartport,int FrameS
sendbuf[10] = value;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//发送云台最大最小值帧
... ... @@ -955,7 +1093,7 @@ T_JZsdkReturnCode HalSend_type1Send_SetGimbalRange(int Uartport,int FrameSequenc
sendbuf[10] = value;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
/****************************************************************************************************************************************************
... ... @@ -979,7 +1117,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_SearchLightFrequency(int Uartport ,int F
sendbuf[10] = Frequency;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//设置探照灯控制
... ... @@ -997,7 +1135,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Control(int Uartport,int mode)
sendbuf[10] = mode;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//设置探照灯亮度
... ... @@ -1016,7 +1154,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetLumen(int Uartport, int Left
sendbuf[10] = RightLumen;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//发送
... ... @@ -1033,7 +1171,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Frequency(int Uartpo
JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_FREQUENCY, sendbuf, &send_buf_len);
//2、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//查询探照灯亮度
... ... @@ -1048,7 +1186,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Lumen(int Uartport)
JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LUMEN, sendbuf, &send_buf_len);
//2、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//查询探照灯模式
... ... @@ -1063,7 +1201,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Mode(int Uartport)
JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_MODE, sendbuf, &send_buf_len);
//2、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//查询探照灯属性
... ... @@ -1078,7 +1216,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Attribute(int Uartpo
JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LIGHTATTRIBUTE, sendbuf, &send_buf_len);
//2、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//查询探照灯温度
... ... @@ -1093,7 +1231,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Temperture(int Uartp
JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE, sendbuf, &send_buf_len);
//2、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//开启消息订阅
... ... @@ -1111,7 +1249,114 @@ T_JZsdkReturnCode HalSend_type1Send_MessageSubcription_Control(int Uartport, int
sendbuf[10] = value;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
/************************************************************************************************************************************************************
*
* 升级部分
*
*
*******************************************************************************************************************/
/*************
*
* 回复准备升级
*
* **************/
T_JZsdkReturnCode HalSend_type1Send_Reply_ReadyForUpdate(int Uartport, int Mode)
{
printf("发送回复准备升级\n");
unsigned char sendbuf[256];
int send_buf_len;
//1、获取帧样板
JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_UPGRADE_PERPARE, sendbuf, &send_buf_len);
sendbuf[9] = Mode;
//2、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
}
/*************
*
* 回复校验激活码已收到
*
* **************/
T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeHaveRecvCheckCode(int Uartport, int Mode)
{
printf("回复校验激活码已收到\n");
unsigned char sendbuf[256];
int send_buf_len;
//1、获取帧样板
JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_UPGRADE_SEND_CHECKCODE, sendbuf, &send_buf_len);
sendbuf[9] = Mode;
//2、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
}
/*************
*
* 回复升级传输已开启
*
* **************/
T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeStart(int Uartport)
{
printf("回复升级传输已开启\n");
unsigned char sendbuf[256];
int send_buf_len;
//1、获取帧样板
JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_UPGRADE_STRAT, sendbuf, &send_buf_len);
//2、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
}
/*************
*
* 回复升级传输已结束
*
* **************/
T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeEnd(int Uartport)
{
printf("回复升级传输已结束\n");
unsigned char sendbuf[256];
int send_buf_len;
//1、获取帧样板
JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_UPGRADE_END, sendbuf, &send_buf_len);
//2、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
}
/*************
*
* 回复升级校验结果
*
* **************/
T_JZsdkReturnCode HalSend_type1Send_Reply_UpgradeCheckResult(int Uartport, int status)
{
printf("回复升级校验结果\n");
unsigned char sendbuf[256];
int send_buf_len;
//1、获取帧样板
JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_UPGRADE_CHECKRESULT, sendbuf, &send_buf_len);
sendbuf[9] = status;
//2、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, SINGLE_THREAD_SEND);
}
/****************************************************************************************************************************************************
... ... @@ -1139,7 +1384,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Status(int Uartport,int sta
sendbuf[10] = mode;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
/*************
... ... @@ -1162,7 +1407,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Color(int Uartport,int colo
sendbuf[10] = color2;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//查询警灯状态
... ... @@ -1177,7 +1422,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_WarningLightStatus(int Uartport)
JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS, sendbuf, &send_buf_len);
//2、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//查询警灯颜色
... ... @@ -1192,7 +1437,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_WarningLightColor(int Uartport)
JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR, sendbuf, &send_buf_len);
//2、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
/****************************************************************************************************************************************************
... ... @@ -1220,7 +1465,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Frequency(int Uartport, int Freq
sendbuf[10] = Frequency;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
/*************
... ... @@ -1242,7 +1487,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Mode(int Uartport, int mode)
sendbuf[10] = mode;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
/*************
... ... @@ -1265,7 +1510,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Lumen(int Uartport,int LeftLumen
sendbuf[10] = RightLumen;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
/*************
... ... @@ -1288,7 +1533,7 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Temperature(int Uartport, int Le
sendbuf[10] = RightTemperature;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
... ... @@ -1312,7 +1557,7 @@ T_JZsdkReturnCode HalSend_type1Send_WarningLight_Status(int Uartport, int status
sendbuf[10] = mode;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);}
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);}
/*************
*
... ... @@ -1334,7 +1579,7 @@ T_JZsdkReturnCode HalSend_type1Send_WarningLight_Color(int Uartport, int color1,
sendbuf[10] = color2;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
/*************
... ... @@ -1356,7 +1601,7 @@ T_JZsdkReturnCode HalSend_type1Send_OutputPowerStatus(int Uartport, int FrameSeq
sendbuf[9] = status;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
/****************************************************************************************************************************************************
... ... @@ -1380,5 +1625,5 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_CheckSpecialParameters(int Uartport,in
sendbuf[10] = value;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, 1);
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
\ No newline at end of file
... ...