作者 ookk303

2.09保存

正在显示 84 个修改的文件 包含 3118 行增加434 行删除

要显示太多修改。

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

... ... @@ -47,7 +47,16 @@
"v4l2_cameraparametersetting.h": "c",
"rtk_mmp.h": "c",
"videostream_shootphoto.h": "c",
"videostream_record.h": "c"
"videostream_record.h": "c",
"videomgmt_parm.h": "c",
"multproc.h": "c",
"videomgmt.h": "c",
"string.h": "c",
"unistd.h": "c",
"mediaparm.h": "c",
"videostream_push.h": "c",
"v4l2_record.h": "c"
},
"Codegeex.GenerationPreference": "automatic"
"Codegeex.GenerationPreference": "automatic",
"C_Cpp.dimInactiveRegions": false
}
\ No newline at end of file
... ...
# 编译链的配置
#1、编译链与设备类型的选择
set(DEVICE_NAME JZ_H150S)
set(DEVICE_NAME JZ_C1)
#上一行为禁止修改行
message("**************************JZSDK构建编译开始***************************\n")
... ...
... ... @@ -106,6 +106,26 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_H1T")
# 添加FFMPEG及其附属模块
set(FFMPEG_MODULE VERSION_SWITCH_ON)
elseif("${DEVICE_NAME}" STREQUAL "JZ_U3")
# 添加AudioDeal 音频处理模块
set(AUDIODEAL_MODULE VERSION_SWITCH_ON)
# 添加Gimbal 云台处理模块
set(GIMBAL_MODULE VERSION_SWITCH_ON)
# 添加IRCUT 引脚处理模块
set(IRCUT_MODULE VERSION_SWITCH_ON)
# 添加LIGHTING 光源处理模块
set(LIGHTING_MODULE VERSION_SWITCH_ON)
# 添加喊话器模块
set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
# 添加FFMPEG及其附属模块
set(FFMPEG_MODULE VERSION_SWITCH_ON)
elseif("${DEVICE_NAME}" STREQUAL "JZ_U3S")
# 添加AudioDeal 音频处理模块
... ... @@ -168,8 +188,43 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_U30")
# 添加FFMPEG及其附属模块
set(FFMPEG_MODULE VERSION_SWITCH_ON)
elseif("${DEVICE_NAME}" STREQUAL "JZ_H10")
# 添加AudioDeal 音频处理模块
set(AUDIODEAL_MODULE VERSION_SWITCH_ON)
# 添加Gimbal 云台处理模块
set(GIMBAL_MODULE VERSION_SWITCH_ON)
# 添加IRCUT 引脚处理模块
set(IRCUT_MODULE VERSION_SWITCH_ON)
# 添加喊话器模块
set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
# 添加wringpi
set(WIRINGPI_MODULE VERSION_SWITCH_ON)
# 添加FFMPEG及其附属模块
set(FFMPEG_MODULE VERSION_SWITCH_ON)
elseif("${DEVICE_NAME}" STREQUAL "JZ_H10T")
# 添加AudioDeal 音频处理模块
set(AUDIODEAL_MODULE VERSION_SWITCH_ON)
# 添加Gimbal 云台处理模块
set(GIMBAL_MODULE VERSION_SWITCH_ON)
# 添加IRCUT 引脚处理模块
set(IRCUT_MODULE VERSION_SWITCH_ON)
# 添加喊话器模块
set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
# 添加FFMPEG及其附属模块
set(FFMPEG_MODULE VERSION_SWITCH_ON)
elseif("${DEVICE_NAME}" STREQUAL "JZ_H150S")
# 添加AudioDeal 音频处理模块
set(AUDIODEAL_MODULE VERSION_SWITCH_ON)
... ...
... ... @@ -156,7 +156,9 @@ typedef enum {
JZ_INSCODE_5BFRAME_MUSICLIST_START = 0x10004300, //开启发送音乐列表帧
JZ_INSCODE_5BFRAME_MUSICLIST_TRANS = 0x10004301, //发送音乐列表帧
JZ_INSCODE_5BFRAME_MUSICLIST_STOP = 0x10004302, //结束发送音乐列表帧
JZ_INSCODE_5BFRAME_MUSICLIST_TRANS_2 = 0x10004303, //查询音频详细信息2型
JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS = 0x10004310, //音频播放状态返回帧
JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS_END = 0x10004311, //音频播放状态结束帧
... ... @@ -168,6 +170,7 @@ typedef enum {
JZ_INSCODE_5BFRAME_CHECKSTATUS_AUDIO_DETAIL_MESSAGE = 0x10004405, //查询音频详细信息
JZ_INSCODE_5BFRAME_GIMBAL_PITCH = 0x10004500, //云台俯仰角度
JZ_INSCODE_5BFRAME_GIMBAL_YAW = 0x10004501, //云台航向角度
JZ_INSCODE_5BFRAME_GIMBAL_ROLL = 0x10004502, //
... ... @@ -198,6 +201,8 @@ typedef enum {
//6A类
JZ_INSCODE_6AFRAME_FRAME = 0x10008000, //发送帧
JZ_INSCODE_6AFRAME_DEBUG_INS = 0x10008080, //调试指令
JZ_INSCODE_6AFRAME_SET_GIMBAL_ORIGIN = 0x10008101, //设置坐标0值
JZ_INSCODE_6AFRAME_SET_GIMBAL_MAXMIN_RANGE = 0x10008102, //设置云台范围最大最小值
JZ_INSCODE_6AFRAME_SET_LUMEN_MAXMIN_RANGE = 0x10008103, //设置灯光范围最大最小值
... ...
... ... @@ -3,6 +3,24 @@
//一级功能码是私有协议
static int Comparison_6AFRAME_FirstLevelCode_0x10(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//调试指令
case 0x00:
return JZ_INSCODE_6AFRAME_DEBUG_INS;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码是私有协议
static int Comparison_6AFRAME_FirstLevelCode_0x69(char *getdata)
{
//二级功能位
... ... @@ -104,6 +122,10 @@ int JZsdk_6AFrameComparsion(char *getdata, int len)
//一级功能码
switch (getdata[7])
{
case 0x10:
return Comparison_6AFRAME_FirstLevelCode_0x10(getdata);
break;
case 0x69:
return Comparison_6AFRAME_FirstLevelCode_0x69(getdata);
break;
... ...
... ... @@ -391,14 +391,23 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len)
}
break;
case JZ_INSCODE_5BFRAME_MUSICLIST_TRANS_2:
{
char sendbuf[14] = { 0x5b, 0x5b, 0x77, 0x00, 0x0d, 0x01, 0x00, 0x58, 0x04, 0x00, 0x00, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 14);
*str_len = 14;
}
break;
case JZ_INSCODE_5BFRAME_CHECKSTATUS_AUDIO_DETAIL_MESSAGE:
{
char sendbuf[14] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x01, 0x00, 0x58, 0x03, 0x00, 0x00, 0x00, 0x00, 0x23};
char sendbuf[14] = { 0x5b, 0x5b, 0x77, 0x00, 0x0d, 0x01, 0x00, 0x58, 0x03, 0x00, 0x00, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 14);
*str_len = 14;
}
break;
case JZ_INSCODE_5BFRAME_MUSICLIST_STOP:
{
char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0xff, 0x00, 0x00, 0x23};
... ...
... ... @@ -387,7 +387,6 @@ int Main_APP_Uart()
#if MEGAPHONE_CONFIG_STATUS == VERSION_SWITCH_ON
//音频库初始化
AudioDeal_Init();
#endif
if (DEVICE_VERSION == JZ_H1E)
... ...
... ... @@ -45,6 +45,7 @@ T_JZsdkReturnCode JZsdk_ParamterParsing(int argc, char *argv[])
case 't': //超时时间
Timeout_time = atoi(optarg);
break;
case '?':
// 如果getopt遇到一个它不认识的选项,它会打印一个消息到stderr
// 并返回'?'。然后我们可以选择退出或给出更多帮助。
... ...
... ... @@ -7,19 +7,19 @@
#define VERSION_CHOOSE_H
#include "./ConfigParams.h"
//1~10行 除了D可以修改版本选择 禁止动任何东西
#define DEVICE_VERSION JZ_H150S
#define DEVICE_VERSION JZ_C1
//禁止修改行 选择是串口程序 还是 psdk程序
#define APP_VERSION APP_PSDK
//禁止修改行 板子型号
#define PLATFORM_VERSION PLATFORM_H3
#define PLATFORM_VERSION PLATFORM_V3S
//禁止修改行 串口连接程序的软件版本号
#define MAJOR_VERSION 0x01
#define MINOR_VERSION 0x03
#define MODIFY_VERSION 0x09
#define DEBUG_VERSION 0x02
#define DEBUG_VERSION 0x03
//禁止修改行 滤波方式
#define FILTERING_TYPE HIGH_PASS_FILTERING
... ...
... ... @@ -804,23 +804,27 @@ static int RecvDeal_audio_NextSong(int Port, char *getbuf)
**********/
static T_JZsdkReturnCode RecvDeal_audio_GetMusicList(int Port, char *getbuf)
{
T_JZsdkReturnCode ret;
JZSDK_LOG_INFO("%s,获取音乐列表",RecvDeal_GetPortName(Port));
int music_sum = 0;
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//0、刷新歌曲列表
#if MEGAPHONE_CONFIG_STATUS == VERSION_SWITCH_ON
//刷新歌曲列表
Megaphone_Flush_MusicList();
JZSDK_LOG_INFO("刷新");
//解析获取的类型
int type = getbuf[9];
//1、获取歌曲总数
Megaphone_get_music_list_sum(&music_sum);
//2、注册一个歌曲数组
char **MusicName = (char **)malloc(music_sum * sizeof(char*));
unsigned char **MusicName = (unsigned char **)malloc(music_sum * sizeof(unsigned char*));
if (MusicName == NULL)
{
//回复操作失败
... ... @@ -841,7 +845,7 @@ static T_JZsdkReturnCode RecvDeal_audio_GetMusicList(int Port, char *getbuf)
//4、为每一首歌曲分配内存
for (int i = 0; i < music_sum; i++)
{
MusicName[i] = (char*)malloc(128);
MusicName[i] = (unsigned char*)malloc(128 * sizeof(unsigned char));
if (MusicName[i] == NULL)
{
// 内存分配失败,需要释放之前分配的内存
... ... @@ -857,28 +861,78 @@ static T_JZsdkReturnCode RecvDeal_audio_GetMusicList(int Port, char *getbuf)
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
memset(MusicName[i], 0, 128 * sizeof(unsigned char));
//如果成功分配内存,则写入名字
Megaphone_get_music_list_name(i, MusicName[i], &MusicNameLength[i]);
}
JZSDK_LOG_INFO("列表取出完成");
JZSDK_LOG_DEBUG("列表取出完成");
//开始发送歌曲列表
T_JZsdkReturnCode ret = JZsdk_Uart_SentDeal_Reply_Musiclist(Port, FrameSequence, music_sum, MusicName, MusicNameLength);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
//默认类型的歌曲列表发送
if (type == 0x00)
{
//开始发送歌曲列表
ret = JZsdk_Uart_SentDeal_Reply_Musiclist(Port, FrameSequence, music_sum, MusicName, MusicNameLength);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
for (int i = 0; i < music_sum; i++)
{
free(MusicName[i]);
}
free(MusicNameLength);
free(MusicName);
//回复操作失败
JZsdk_Uart_SendDeal_Reply_Failure(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
}
else if(type == 0x01)
{
//发送开始帧
ret = JZsdk_Uart_SendDeal_Send_AudioList_Start(Port, FrameSequence, music_sum);
for (int i = 0; i < music_sum; i++)
{
//获取歌曲详细信息
struct AudioMange_audio_struct AudioDetailMessage;
memset(&AudioDetailMessage, 0, sizeof(struct AudioMange_audio_struct));
ret = AudioFile_GetAudioInfo(MusicName[i], MusicNameLength[i],&AudioDetailMessage);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作失败
JZsdk_Uart_SendDeal_Reply_Failure(Port, FrameSequence);
continue;
}
//发送歌曲列表Ⅱ型
ret = JZsdk_Uart_SendDeal_Send_AudioList_2(Port, FrameSequence, AudioDetailMessage.FileName, AudioDetailMessage.FileNameLen, AudioDetailMessage.FileSize, AudioDetailMessage.Time);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作失败
JZsdk_Uart_SendDeal_Reply_Failure(Port, FrameSequence);
continue;
}
}
//释放存储的数据
for (int i = 0; i < music_sum; i++)
{
free(MusicName[i]);
}
free(MusicNameLength);
free(MusicName);
//回复操作失败
JZsdk_Uart_SendDeal_Reply_Failure(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
//发送结束帧
ret = JZsdk_Uart_SendDeal_Send_AudioList_Stop(Port, FrameSequence);
}
#endif
... ... @@ -917,90 +971,87 @@ static T_JZsdkReturnCode RecvDeal_CheckStatus_AudioDetailMessage(int Port, char
#if MEGAPHONE_CONFIG_STATUS == VERSION_SWITCH_ON
if (ListBelong == 0)
{
//1、检查歌曲是否存在
ret = AudioFile_CheckFile_WhetherInList(AudioName,AudioNameLength);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
if (ListBelong == 0)
{
//回复操作失败
JZsdk_Uart_SendDeal_Reply_Failure(Port, FrameSequence);
return ret;
}
//2、获取歌曲详细信息
struct AudioMange_audio_struct AudioDetailMessage;
ret = AudioFile_GetAudioInfo(AudioName, AudioNameLength,&AudioDetailMessage);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作失败
JZsdk_Uart_SendDeal_Reply_Failure(Port, FrameSequence);
//1、检查歌曲是否存在
ret = AudioFile_CheckFile_WhetherInList(AudioName,AudioNameLength);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作失败
JZsdk_Uart_SendDeal_Reply_Failure(Port, FrameSequence);
return ret;
}
return ret;
}
//2、获取歌曲详细信息
struct AudioMange_audio_struct AudioDetailMessage;
ret = AudioFile_GetAudioInfo(AudioName, AudioNameLength,&AudioDetailMessage);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作失败
JZsdk_Uart_SendDeal_Reply_Failure(Port, FrameSequence);
//获取文件的md5码
unsigned char md5[16];
unsigned char cmd[256];
snprintf(cmd, sizeof(cmd), "md5sum /root/sdcard/audio/%s", AudioDetailMessage.FileName);
JZsdk_RunSystemCmd_ReturnResult_Str(cmd, md5);
return ret;
}
//3、发送歌曲详细信息
// JZSDK_LOG_INFO("即将发送%s, %d, %d, %s",
// AudioDetailMessage.FileName, AudioDetailMessage.FileSize, AudioDetailMessage.Time, md5);
//获取文件的md5码
unsigned char md5[16];
unsigned char cmd[256];
snprintf(cmd, sizeof(cmd), "md5sum /root/sdcard/audio/%s", AudioDetailMessage.FileName);
JZsdk_RunSystemCmd_ReturnResult_Str(cmd, md5);
//要求所有信息
if (QueryContent == 0)
{
//发送名字
JZsdk_Uart_SendDeal_Send_AudioDetailMessage(Port, FrameSequence, 0x00, AudioDetailMessage.FileName, AudioDetailMessage.FileNameLen);
//3、发送歌曲详细信息
// JZSDK_LOG_INFO("即将发送%s, %d, %d, %s",
// AudioDetailMessage.FileName, AudioDetailMessage.FileSize, AudioDetailMessage.Time, md5);
//文件大小
unsigned char str1[4];
str1[0] = (AudioDetailMessage.FileSize >> 24) & 0xFF;
str1[1] = (AudioDetailMessage.FileSize >> 16) & 0xFF;
str1[2] = (AudioDetailMessage.FileSize >> 8) & 0xFF;
str1[3] = AudioDetailMessage.FileSize & 0xFF;
//要求所有信息
if (QueryContent == 0)
{
//发送名字
JZsdk_Uart_SendDeal_Send_AudioDetailMessage(Port, FrameSequence, 0x00, AudioDetailMessage.FileName, AudioDetailMessage.FileNameLen);
JZsdk_Uart_SendDeal_Send_AudioDetailMessage(Port, FrameSequence, 0x01, str1, sizeof(str1));
//文件大小
unsigned char str1[4];
str1[0] = (AudioDetailMessage.FileSize >> 24) & 0xFF;
str1[1] = (AudioDetailMessage.FileSize >> 16) & 0xFF;
str1[2] = (AudioDetailMessage.FileSize >> 8) & 0xFF;
str1[3] = AudioDetailMessage.FileSize & 0xFF;
//播放时间
unsigned char str2[4];
str2[0] = (AudioDetailMessage.Time >> 8) & 0xFF;
str2[1] = AudioDetailMessage.Time & 0xFF;
JZsdk_Uart_SendDeal_Send_AudioDetailMessage(Port, FrameSequence, 0x01, str1, sizeof(str1));
JZsdk_Uart_SendDeal_Send_AudioDetailMessage(Port, FrameSequence, 0x02, str2, sizeof(str2));
}
else if (QueryContent == 0x01)
{
//文件大小
unsigned char str1[4];
str1[0] = (AudioDetailMessage.FileSize >> 24) & 0xFF;
str1[1] = (AudioDetailMessage.FileSize >> 16) & 0xFF;
str1[2] = (AudioDetailMessage.FileSize >> 8) & 0xFF;
str1[3] = AudioDetailMessage.FileSize & 0xFF;
//播放时间
unsigned char str2[4];
str2[0] = (AudioDetailMessage.Time >> 8) & 0xFF;
str2[1] = AudioDetailMessage.Time & 0xFF;
JZsdk_Uart_SendDeal_Send_AudioDetailMessage(Port, FrameSequence, 0x01, str1, sizeof(str1));
}
else if (QueryContent == 0x02)
{
//播放时间
unsigned char str2[4];
str2[0] = (AudioDetailMessage.Time >> 8) & 0xFF;
str2[1] = AudioDetailMessage.Time & 0xFF;
JZsdk_Uart_SendDeal_Send_AudioDetailMessage(Port, FrameSequence, 0x02, str2, sizeof(str2));
}
else if (QueryContent == 0x01)
{
//文件大小
unsigned char str1[4];
str1[0] = (AudioDetailMessage.FileSize >> 24) & 0xFF;
str1[1] = (AudioDetailMessage.FileSize >> 16) & 0xFF;
str1[2] = (AudioDetailMessage.FileSize >> 8) & 0xFF;
str1[3] = AudioDetailMessage.FileSize & 0xFF;
JZsdk_Uart_SendDeal_Send_AudioDetailMessage(Port, FrameSequence, 0x01, str1, sizeof(str1));
}
else if (QueryContent == 0x02)
{
//播放时间
unsigned char str2[4];
str2[0] = (AudioDetailMessage.Time >> 8) & 0xFF;
str2[1] = AudioDetailMessage.Time & 0xFF;
JZsdk_Uart_SendDeal_Send_AudioDetailMessage(Port, FrameSequence, 0x02, str2, sizeof(str2));
}
else if (QueryContent == 0x20)
{
//发送md5码
JZsdk_Uart_SendDeal_Send_AudioDetailMessage(Port, FrameSequence, 0x20, md5, sizeof(md5));
JZsdk_Uart_SendDeal_Send_AudioDetailMessage(Port, FrameSequence, 0x02, str2, sizeof(str2));
}
else if (QueryContent == 0x20)
{
//发送md5码
JZsdk_Uart_SendDeal_Send_AudioDetailMessage(Port, FrameSequence, 0x20, md5, sizeof(md5));
}
}
}
#endif
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
... ... @@ -2986,6 +3037,28 @@ static int RecvDeal_SetGimbalRange(int Port, char *getbuf)
}
}
/***************
*
* 调试指令
*
* **************/
static T_JZsdkReturnCode RecvDeal_DebugIns(int Port, char *getbuf)
{
JZSDK_LOG_INFO("%s,调试指令",RecvDeal_GetPortName(Port));
//解析参数
int len = getbuf[4] + ((int)getbuf[3]) << 8;
int InsLen = len - 11 - 1;
// int pwm = (((int)getbuf[9]) << 8 ) + getbuf[10];
// H3_ircut_pwm(pwm);
// int pwm = (((int)getbuf[9]) << 8 ) + getbuf[10];
// Ircut_PWM_control(pwm);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*********
*
* 设置云台联动
... ... @@ -3861,6 +3934,12 @@ int RecvDeal_InstructInput(int Port, int Receive_mode, unsigned char *getbuf, in
* 6A类部分
*
* *******************************************************************************************************************************/
//debug调试
case JZ_INSCODE_6AFRAME_DEBUG_INS:
RecvDeal_DebugIns(Port,getbuf);
return 0;
break;
//云台联动控制
case JZ_INSCODE_6AFRAME_GIMBAL_LINKAGE_CONTROL:
RecvDeal_GimbalLinkageControl(Port,getbuf);
... ...
... ... @@ -377,7 +377,7 @@ static void JZsdk_Uart_SentDeal_Reply_Musiclist_Task(void *data)
JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_MUSICLIST_STOP , sendbuf, &send_buf_len);
//写入数据
sendbuf[6] = taskData->FrameSequence; //帧序列
sendbuf[9] = taskData->music_sum;
sendbuf[9] = 0x00;
//发送帧
printf("发送歌曲结束列表");
JZsdk_Uart_UartSend_NotTask(taskData->UartPort ,sendbuf, send_buf_len);
... ... @@ -397,6 +397,7 @@ static void JZsdk_Uart_SentDeal_Reply_Musiclist_Task(void *data)
taskData = NULL;
}
//发送歌曲列表Ⅰ型
T_JZsdkReturnCode JZsdk_Uart_SentDeal_Reply_Musiclist(int UartPort ,int FrameSequence, int music_sum ,char **MusicName ,int *MusicNameLength)
{
struct JZsdk_MusicListSentStruct *musicList = (struct JZsdk_MusicListSentStruct *)malloc(sizeof(struct JZsdk_MusicListSentStruct));
... ... @@ -422,6 +423,85 @@ T_JZsdkReturnCode JZsdk_Uart_SentDeal_Reply_Musiclist(int UartPort ,int FrameSeq
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//发送歌曲列表开始帧
T_JZsdkReturnCode JZsdk_Uart_SendDeal_Send_AudioList_Start(int Uartport, int FrameSequence, int music_sum)
{
printf("发送歌曲开始列表帧\n");
unsigned char sendbuf[128];
int send_buf_len;
//获取帧样板
memset(sendbuf,0,sizeof(sendbuf));
JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_MUSICLIST_START , sendbuf, &send_buf_len);
//写入数据
sendbuf[6] = FrameSequence; //帧序列
sendbuf[9] = music_sum;
//发送帧
JZsdk_Uart_UartSend_NotTask(Uartport ,sendbuf, send_buf_len);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//发送歌曲列表结束帧
T_JZsdkReturnCode JZsdk_Uart_SendDeal_Send_AudioList_Stop(int Uartport, int FrameSequence)
{
printf("发送歌曲结束列表帧\n");
unsigned char sendbuf[128];
int send_buf_len;
//获取帧样板
memset(sendbuf,0,sizeof(sendbuf));
JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_MUSICLIST_STOP , sendbuf, &send_buf_len);
//写入数据
sendbuf[6] = FrameSequence; //帧序列
JZsdk_Uart_UartSend_NotTask(Uartport ,sendbuf, send_buf_len);
}
//发送歌曲列表Ⅱ型
T_JZsdkReturnCode JZsdk_Uart_SendDeal_Send_AudioList_2(int Uartport, int FrameSequence, unsigned char *name, unsigned int namelen, unsigned int Filesize, unsigned int Time)
{
printf("发送歌曲列表Ⅱ型 %s %d %d %d\n",name, namelen, Filesize, Time);
unsigned char sendbuf[400];
int send_buf_len;
//1、获取帧样板
JZsdk_GetFrameTemplate(JZ_INSCODE_5BFRAME_MUSICLIST_TRANS_2 , 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、发送帧
JZsdk_Uart_UartSend_NotTask(Uartport ,sendbuf, send_buf_len);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//发送音频详细信息帧
T_JZsdkReturnCode JZsdk_Uart_SendDeal_Send_AudioDetailMessage(int Uartport, int FrameSequence, unsigned char type ,unsigned char *data, unsigned int datalen)
{
... ...
... ... @@ -46,7 +46,12 @@ T_JZsdkReturnCode JZsdk_Uart_SendDeal_Reply_DecodeError(int Uartport ,int FrameS
int JZsdk_Uart_SendDeal_Reply_Failure(int Uartport ,int FrameSequence);
T_JZsdkReturnCode JZsdk_Uart_SentDeal_Reply_Musiclist(int UartPort ,int FrameSequence, int music_sum ,char **MusicName ,int *MusicNameLength);
T_JZsdkReturnCode JZsdk_Uart_SendDeal_Send_AudioList_2(int Uartport, int FrameSequence, unsigned char *name, unsigned int namelen, unsigned int Filesize, unsigned int Time);
T_JZsdkReturnCode JZsdk_Uart_SendDeal_Send_AudioDetailMessage(int Uartport,int FrameSequence, unsigned char type ,unsigned char *data, unsigned int datalen);
T_JZsdkReturnCode JZsdk_Uart_SendDeal_Send_AudioList_Start(int Uartport, int FrameSequence, int music_sum);
T_JZsdkReturnCode JZsdk_Uart_SendDeal_Send_AudioList_Stop(int Uartport, int FrameSequence);
int JZsdk_Uart_SendDeal_Send_PlayStatus_end(int Uartport);
int JZsdk_Uart_SendDeal_Send_PlayStatus(int Uartport ,int num);
... ...
... ... @@ -36,7 +36,7 @@ struct FF_Filter
}FF_Filter;
static int g_FilterFlag = JZ_FLAGCODE_ON;
static int g_FilterFlag = JZ_FLAGCODE_OFF;
static int FilterParamNumber = 0;
static int g_FilterMode = 0; //滤波模式 0为默认 1为m30
static int g_FilterType = 0; //滤波类型 0为默认
... ...
... ... @@ -2,6 +2,7 @@
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <math.h>
#include "JZsdkLib.h"
... ...
... ... @@ -42,6 +42,9 @@ static int g_JZsdk_GimbalStatusFlag = JZ_FLAGCODE_OFF; //云台状态,用于
static T_JZsdkReturnCode Gimbal_Set_RealPitchAngle(int pitch, int FineTuningP, int UAV_pitch);
//手动刷新角度标志位
static int g_Flush_Pitch = JZ_FLAGCODE_OFF;
/**************************
*
*
... ... @@ -64,11 +67,13 @@ static void *Gimbal_SendAngleTask(void *arg)
if (Gimbal_PitchAngle != Old_angle //云台角度发生了变化
|| Gimbal_UavSelfPitch != Old_UAV_self_angle //飞机自身角度发生了变化
|| g_MotorFineTuningPitch != Old_PitchFineTuning //微调角度发生了变化
|| g_Flush_Pitch == JZ_FLAGCODE_ON
)
{
Old_angle = Gimbal_PitchAngle;
Old_UAV_self_angle = Gimbal_UavSelfPitch;
Old_PitchFineTuning = g_MotorFineTuningPitch;
g_Flush_Pitch = JZ_FLAGCODE_OFF;
Gimbal_Set_RealPitchAngle(Old_angle, Old_PitchFineTuning, Old_UAV_self_angle);
}
... ... @@ -103,6 +108,8 @@ static T_JZsdkReturnCode Gimal_MotorInit()
//数据处理初始化
Gimbal_DataDeal_init();
JZSDK_LOG_INFO("MODULE_GIMBAL_MOTOR_INIT_COMPLETE");
}
//初始化云台模块
... ... @@ -544,4 +551,11 @@ int Gimbal_Get_PitchFineTuning()
int Gimbal_Get_PitchRealPitchAngle()
{
return Gimbal_RealPitchAngle;
}
T_JZsdkReturnCode Gimbal_Flush_Pitch()
{
g_Flush_Pitch = JZ_FLAGCODE_ON;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
\ No newline at end of file
... ...
... ... @@ -53,6 +53,7 @@ int Gimbal_ReplyPitchToUAVScale(int angle);
int Gimbal_Get_PitchAngle();
int Gimbal_Get_PitchFineTuning();
int Gimbal_Get_PitchRealPitchAngle();
T_JZsdkReturnCode Gimbal_Flush_Pitch();
#ifdef __cplusplus
}
... ...
... ... @@ -16,10 +16,17 @@
#include <wiringPi.h>
#endif
#define PITCH_OFFSET_FILE_PATH "/root/Gimbal_Pitch_BaseOffset"
static T_JZsdkReturnCode Gimbal_DataDeal_Read_PitchBaseOffset(int *offset);
static T_JZsdkReturnCode Gimbal_DataDeal_Write_PitchBaseOffset(int offset);
static int g_Gimbal_Pitch_BaseOffset = 0; //云台俯仰基准偏移量
/******************
*
* 初始化
*
* **************/
T_JZsdkReturnCode Gimbal_DataDeal_init()
... ... @@ -38,7 +45,12 @@ T_JZsdkReturnCode Gimbal_DataDeal_init()
//不需特地初始化
#elif DEVICE_VERSION == JZ_H1T || DEVICE_VERSION == JZ_C1
// 不用去特地初始化t60的云台
#elif DEVICE_VERSION == JZ_H10 || DEVICE_VERSION == JZ_H10T || DEVICE_VERSION == JZ_U3 \
#elif DEVICE_VERSION == JZ_H10 || DEVICE_VERSION == JZ_H10T
//H10 H10T需要去读取云台偏移量
Gimbal_DataDeal_Read_PitchBaseOffset(&g_Gimbal_Pitch_BaseOffset);
#elif DEVICE_VERSION == JZ_U3 \
|| DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30 || DEVICE_VERSION == TF_A1
//设置0度
... ... @@ -67,8 +79,9 @@ T_JZsdkReturnCode Gimbal_DataDeal_SetRealAngle(int angle)
Gimbal_SpecialUart_UartSend(send_angle, 4);
#elif DEVICE_VERSION == JZ_H10
int base_offset = 0; //最大最小值的偏移量 //正整数时,则总体角度向0偏移 为负数时,向-900便宜
//因为PWM写的时候是按90度写的,所以分母是900,不是设定的600
int base_offset = g_Gimbal_Pitch_BaseOffset;
//最大最小值的偏移量 //正整数时,则总体角度向0偏移 为负数时,向-900便宜
//计算方法 设置最小角度时 为 PwM - 195 - 200 //设置最大角度时 为 PwM - 0 - 200
int base = 200; //0度
... ... @@ -80,26 +93,21 @@ T_JZsdkReturnCode Gimbal_DataDeal_SetRealAngle(int angle)
//angle_PWM = 200 -angle*195/900 -150*195/900; //上调15度
//简化为
angle_PWM = + base_offset +angle*195/MIN_PITCH;
//angle_PWM =base + base_offset +angle*195/MIN_PITCH;
angle_PWM =base + base_offset +angle*195/(-900);
#ifdef WIRINGPI_STATUS_ON
pwmWrite(18,angle_PWM);
H3_ircut_pwm(angle_PWM);
#endif
#elif DEVICE_VERSION == JZ_H10T
//因为PWM写的时候是按90度写的,所以分母是900,不是设定的600
PWM_num = ( angle * (V3S_H10T_angle_PWM_MAX-V3S_H10T_angle_PWM_MIN) /900 ) + V3S_H10T_angle_PWM_MAX;
int base_offset = g_Gimbal_Pitch_BaseOffset;
int base = 820;
if (PWM_num > PITCH_PWM_MAX)
{
PWM_num = PITCH_PWM_MAX;
}
if (PWM_num < PITCH_PWM_MIN)
{
PWM_num = PITCH_PWM_MIN;
}
//因为PWM写的时候是按60度写的
angle_PWM = base + base_offset + ( angle * (120) /(MAX_PITCH - MIN_PITCH) );
Ircut_PWM_control(PWM_num);
Ircut_PWM_control(angle_PWM);
#elif DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30 \
|| DEVICE_VERSION == TF_A1
... ... @@ -118,7 +126,13 @@ T_JZsdkReturnCode Gimbal_DataDeal_SetRealAngle(int angle)
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/******************************
*
*
* 设置云台最大最小值
*
*
* *******************************/
T_JZsdkReturnCode Gimbal_DataDeal_SetPitchRange(int Range)
{
if (Range != 0xFF && Range != 0x00)
... ... @@ -139,13 +153,117 @@ T_JZsdkReturnCode Gimbal_DataDeal_SetPitchRange(int Range)
Gimbal_SpecialUart_UartSend(set_min_motor, 4);
}
#elif DEVICE_VERSION == JZ_H10
//因为PWM写的时候是按90度写的,所以分母是900,不是设定的600
int base_offset = g_Gimbal_Pitch_BaseOffset;
//还没想好怎么弄
//在最大的角度弄的
if (Range == 0xFF)
{
//先通过角度 得出目前的PWM值
int angle = Gimbal_Get_PitchRealPitchAngle();
//int angle_PWM =200 + base_offset +angle*195/MIN_PITCH;
int angle_PWM =200 + base_offset +angle*195/(-900);
//通过最大值的计算方式 得出offset值
//g_Gimbal_Pitch_BaseOffset = angle_PWM - ((MAX_PITCH*195)/(MAX_PITCH - MIN_PITCH)) - base_offset;
g_Gimbal_Pitch_BaseOffset = angle_PWM - ((MAX_PITCH*195)/(MAX_PITCH - (-900))) - base_offset;
if (g_Gimbal_Pitch_BaseOffset <= - 100)
{
g_Gimbal_Pitch_BaseOffset = - 100;
}
else if (g_Gimbal_Pitch_BaseOffset >= 100)
{
g_Gimbal_Pitch_BaseOffset = 100;
}
}
//在最小的角度弄的
else if (Range == 0x00)
{
//先通过角度 得出目前的PWM值
int angle = Gimbal_Get_PitchRealPitchAngle();
int angle_PWM =200 + base_offset +angle*195/(-900);
//通过最小值的计算方式 得出offset值
g_Gimbal_Pitch_BaseOffset = angle_PWM - (((MAX_PITCH - (-900))*195)/(MAX_PITCH - (-900)) ) - base_offset;
if (g_Gimbal_Pitch_BaseOffset <= - 100) //最小160
{
g_Gimbal_Pitch_BaseOffset = - 100;
}
else if (g_Gimbal_Pitch_BaseOffset >= 100) //最大420
{
g_Gimbal_Pitch_BaseOffset = 100;
}
}
JZSDK_LOG_INFO("设置pitch的offset值:%d",g_Gimbal_Pitch_BaseOffset);
//写入偏移量
Gimbal_DataDeal_Write_PitchBaseOffset(g_Gimbal_Pitch_BaseOffset);
//刷新角度
Gimbal_Flush_Pitch();
#elif DEVICE_VERSION == JZ_H10T
//还没想好怎么弄
//因为PWM写的时候是按90度写的,所以分母是900,不是设定的600
int base_offset = g_Gimbal_Pitch_BaseOffset;
//先通过角度 得出目前的PWM值
int angle = Gimbal_Get_PitchRealPitchAngle();
//在最大的角度弄的
if (Range == 0xFF)
{
//先得出目前pwm值
int angle_PWM = 820 + base_offset + (angle * (120)/(MAX_PITCH - MIN_PITCH)); //820是0度
//通过最大值的计算方式 得出新的offset值
//g_Gimbal_Pitch_BaseOffset = angle_PWM - ((MAX_PITCH*195)/(MAX_PITCH - MIN_PITCH)) - base_offset;
g_Gimbal_Pitch_BaseOffset = angle_PWM - 820 - ((MAX_PITCH*120)/(MAX_PITCH - MIN_PITCH)) - base_offset;
//下限600,上限830
if (g_Gimbal_Pitch_BaseOffset <= - 100)
{
g_Gimbal_Pitch_BaseOffset = - 100;
}
else if (g_Gimbal_Pitch_BaseOffset >= 20)
{
g_Gimbal_Pitch_BaseOffset = 20;
}
}
//在最小的角度弄的
else if (Range == 0x00)
{
//先通过角度 得出目前的PWM值
int angle = Gimbal_Get_PitchRealPitchAngle();
int angle_PWM = 820 + base_offset + (angle * (120)/(900)); //820是0度
//通过最小值的计算方式 得出offset值
g_Gimbal_Pitch_BaseOffset = angle_PWM - 820 - ((MAX_PITCH*120)/(MAX_PITCH - MIN_PITCH)) - base_offset;
//下限600,上限830
if (g_Gimbal_Pitch_BaseOffset <= - 100)
{
g_Gimbal_Pitch_BaseOffset = - 100;
}
else if (g_Gimbal_Pitch_BaseOffset >= 20)
{
g_Gimbal_Pitch_BaseOffset = 20;
}
}
JZSDK_LOG_INFO("设置pitch的offset值:%d",g_Gimbal_Pitch_BaseOffset);
//写入偏移量
Gimbal_DataDeal_Write_PitchBaseOffset(g_Gimbal_Pitch_BaseOffset);
//刷新角度
Gimbal_Flush_Pitch();
#elif DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30 \
|| DEVICE_VERSION == TF_A1
... ... @@ -169,3 +287,72 @@ T_JZsdkReturnCode Gimbal_DataDeal_SetPitchRange(int Range)
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
static T_JZsdkReturnCode Gimbal_DataDeal_Read_PitchBaseOffset(int *offset)
{
FILE *fp = NULL;
fp = fopen(PITCH_OFFSET_FILE_PATH, "rb+");
if (fp == NULL)
{
fp = fopen(PITCH_OFFSET_FILE_PATH, "wb+");
if (fp == NULL)
{
*offset = 0;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
}
else
{
int ret = fseek(fp, 0, SEEK_SET);
if (ret != 0)
{
JZSDK_LOG_ERROR("Seek count file error, ret: %d.", ret);
}
ret = fread((int *) offset, 1, sizeof(int), fp);
if (ret != sizeof(int))
{
JZSDK_LOG_ERROR("Read Pitch BaseOffset error.");
*offset = 0;
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
else
{
JZSDK_LOG_ERROR("Pitch BaseOffset=%d",*offset);
*offset = 0;
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
}
if (fp != NULL)
{
fclose(fp);
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
static T_JZsdkReturnCode Gimbal_DataDeal_Write_PitchBaseOffset(int offset)
{
FILE *fp = NULL;
fp = fopen(PITCH_OFFSET_FILE_PATH, "wb+");
if (fp == NULL)
{
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
int ret = fwrite((int *) &offset, 1, sizeof(unsigned int),fp);
if (ret != sizeof(unsigned int))
{
JZSDK_LOG_ERROR("Pitch BaseOffset error.");
}
else
{
JZSDK_LOG_DEBUG("Pitch BaseOffset=%d\n",offset);
}
fclose(fp);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ...
... ... @@ -36,6 +36,7 @@ T_JZsdkReturnCode Gimbal_DataDeal_init(); //初始化
T_JZsdkReturnCode Gimbal_DataDeal_SetRealAngle(int angle);
T_JZsdkReturnCode Gimbal_DataDeal_SetPitchRange(int Range);
T_JZsdkReturnCode Read_MotorFineTuning_Pitch(int *value);
T_JZsdkReturnCode Gimbal_DataDeal_Write_PitchBaseOffset(int offset);
#ifdef __cplusplus
}
... ...
... ... @@ -147,6 +147,8 @@ T_JZsdkReturnCode H3_ircut_init()
pinMode(MOTOR_IRCUT_PIN,PWM_OUTPUT);//设置输出模式
}
JZSDK_LOG_INFO("H3 Init Complete");
#endif
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
... ... @@ -154,6 +156,21 @@ T_JZsdkReturnCode H3_ircut_init()
/***********************
*
*
* H3 pwm控制
*
* ***************************/
T_JZsdkReturnCode H3_ircut_pwm(int pwm_duty)
{
#ifdef WIRINGPI_STATUS_ON
pwmWrite(MOTOR_IRCUT_PIN,pwm_duty);
//printf("pwm控制:%d\n",pwm_duty);
#endif
}
/***********************
*
* H3引脚控制
* 静音角控制
*
... ...
... ... @@ -26,7 +26,7 @@ extern "C" {
T_JZsdkReturnCode H3_ircut_init();
T_JZsdkReturnCode H3_ircut_set_amplifier(int ircut_mode);
T_JZsdkReturnCode H3_ircut_pwm(int pwm_duty);
#ifdef __cplusplus
}
... ...
... ... @@ -5,16 +5,14 @@
#include <unistd.h>
#include "JZsdkLib.h"
#include "version_choose.h"
#include "BaseConfig.h"
#include "../V4L2_camera/V4L2_Record.h"
#include "../V4L2_camera/V4L2_CameraParameterSetting.h"
#include "../../StreamProc/StreamProc.h"
#include "../../MultProc/MultProc.h"
#include "../../MediaParm.h"
#include "../../VideoMgmt/VideoMgmt.h"
#include "../../StreamProc/StreamProc.h"
#include "../Camera.h"
static int CameraFd = 0;
... ... @@ -67,8 +65,8 @@ static void *JZsdk_Catch_SingleThread(void *args)
}
//进行数据处理
VideoMgmt_Single_FrameIn(buf, buf_size);
//归还图片
V4L2_CameraFrameRecord_OnlyReturnFrame();
}
... ...
... ... @@ -11,10 +11,9 @@
#include "JZsdk_usb_bulk/JZsdk_usb_bulk.h"
#include "../V4L2_camera/V4L2_Record.h"
#include "../../StreamProc/StreamProc.h"
#include "../../MultProc/MultProc.h"
#include "../../MediaParm.h"
#include "../../VideoMgmt/VideoMgmt.h"
#include "../../StreamProc/StreamProc.h"
#include "Ircut/ircut.h"
#include "../Camera.h"
... ...
... ... @@ -6,11 +6,12 @@
#include "./KtLibProc/KtLibProc.h"
#include "./IRC_data_deal/IRC_data_deal.h"
#include "./IRC_Param.h"
#include "../StreamProc/StreamProc.h"
#include "../MultProc/MultProc.h"
#include "../ImageProc/BadPixelProc/BadPixelProc.h"
#include "MediaProc/MediaProc_Param.h"
#include "./IRC_funtion.h"
#include "MediaProc/IRC_funtion/JZIRC_LibProc/JZIRC_Lib.h"
#define IRC_DEALMODE_JZSDK 0
#define IRC_DEALMODE_KTLIB 1
... ...
... ... @@ -31,6 +31,12 @@ extern "C" {
#define FIRST_HEIGHT 256
#define FIRST_FRAME_NUM 30
#define BRIGHTNESS (80) //亮度,该摄像头亮度范围为 1-255 默认128
#define CONTRAST (155) //对比度,摄像头对比度范围为 1-255 默认128
#define SATURATION (128) //饱和度 摄像头饱和度范围为 1-255 默认128
#define EXPSURE (100) //曝光值 摄像头曝光值范围: 5-2500 默认auto设置
#define SECOND_WIDTH 1920
#define SECOND_HEIGHT 1080
#define SECOND_FRAME_NUM 30
... ...
... ... @@ -9,7 +9,7 @@
#include "BaseConfig.h"
#include "./VideoMgmt/VideoMgmt.h"
#include "./StreamProc/StreamProc.h"
#include "./MultProc/MultProc.h"
#include "./MediaParm.h"
#include "./Camera/Camera.h"
#include "./Camera/Kt_Irc/Kt_Irc.h"
... ... @@ -73,7 +73,7 @@ static T_JZsdkReturnCode MediaProc_MultiThreading()
VideoStreamTransCode_Init();
//5、打开默认选项
VideoMgmt_VideoStreamFlowIndex(VIDEOMGMT_STREAMING_FLOW_INDEX_SECOND); //默认推送光学摄像头
VideoMgmt_VideoStreamFlowIndex(VIDEOMGMT_STREAMING_FLOW_INDEX_FIRST); //默认推送红外摄像头 后续改成 红外+光学 的组合画面
JZsdk_Kt_Irc_ShutterSwitch(JZ_FLAGCODE_ON);
//6、修改部分参数
... ...
/***************
*
* 多媒体处理器
* Multimedia Processor
*
* ******************/
#include "stdio.h"
#include "./StreamProc.h"
#include "./MultProc.h"
#include "JZsdkLib.h"
... ...
/**
********************************************************************
* @file StreamProc.h
* StreamProc的头文件
* @file MultProc.h
* MultProc.c的头文件
*
*********************************************************************
*/
... ...
... ... @@ -27,30 +27,11 @@
#include "UI_control/UI_control.h"
#include "../MediaParm.h"
#include "../StreamProc/RTK_mmp/RTK_mmp.h"
#include "../MultProc/RTK_mmp/RTK_mmp.h"
//额外头文件声明
#define VIDEO_FRAME_AUD_LEN 6
static const unsigned char s_frameAudInfo[VIDEO_FRAME_AUD_LEN] = {0x00, 0x00, 0x00, 0x01, 0x09, 0x10};
JZ_VideoStreamUseStatus g_VideoStreamDealStatus = VIDEO_STREAM_IDLE; //视频流的处理状态
static int VideoFreezeFlag = JZ_FLAGCODE_OFF; //视频流冻结功能
/****************************
*
* videoMgmt的初始化
*
*
*
* **************************/
T_JZsdkReturnCode VideoMgmt_Init()
{
//1
VideoMgmt_VideoStreamFlow_Init(int FrameNumber, void **index, int VideoStreamFlowIndex);
}
static int g_VideoFreezeFlag = JZ_FLAGCODE_OFF; //视频流冻结功能
/*********************************************************************************************************************************************
*
... ... @@ -59,15 +40,14 @@ T_JZsdkReturnCode VideoMgmt_Init()
*
*
* *********************************************************************************************************************************************/
struct VideoMgmt_VideoStreamFlow
{
void **index; //用于提出画面流的缓冲区地址
int VideoStreamFlowIndex; //缓冲区的索引号,用于区分缓冲区
int FrameNumber; //推流的帧数
};
static int VideoStreamFlowIndexNum = JZ_FLAGCODE_OFF; //视频流转的索引值
static int g_VideoStreamFlowIndexNum = JZ_FLAGCODE_OFF; //视频流转的索引值
int VideoMgmt_GetVideoStreamFlowIndexNum()
{
return g_VideoStreamFlowIndexNum;
}
//设置流转的视频流
T_JZsdkReturnCode VideoMgmt_VideoStreamFlowIndex(int index)
... ... @@ -77,28 +57,28 @@ T_JZsdkReturnCode VideoMgmt_VideoStreamFlowIndex(int index)
case JZ_FLAGCODE_OFF:
{
JZSDK_LOG_INFO("切换视频流为关");
VideoStreamFlowIndexNum = index;
g_VideoStreamFlowIndexNum = index;
}
break;
case VIDEOMGMT_STREAMING_FLOW_INDEX_FIRST:
{
JZSDK_LOG_INFO("切换视频流为一号");
VideoStreamFlowIndexNum = index;
g_VideoStreamFlowIndexNum = index;
}
break;
case VIDEOMGMT_STREAMING_FLOW_INDEX_SECOND:
{
JZSDK_LOG_INFO("切换视频流为二号");
VideoStreamFlowIndexNum = index;
g_VideoStreamFlowIndexNum = index;
}
break;
case VIDEOMGMT_STREAMING_FLOW_INDEX_THIRD:
{
JZSDK_LOG_INFO("切换视频流为三号");
VideoStreamFlowIndexNum = index;
g_VideoStreamFlowIndexNum = index;
}
break;
... ... @@ -122,12 +102,12 @@ T_JZsdkReturnCode VideoMgmt_VideoStreamFlow_RecordPlay(int status)
{
if (status == JZ_FLAGCODE_ON && Temp_LastVideoStatus == JZ_FLAGCODE_NORMAL)
{
Temp_LastVideoStatus = VideoStreamFlowIndexNum;
VideoStreamFlowIndexNum = VIDEOMGMT_STREAMING_FLOW_INDEX_RECORD;
Temp_LastVideoStatus = g_VideoStreamFlowIndexNum;
g_VideoStreamFlowIndexNum = VIDEOMGMT_STREAMING_FLOW_INDEX_RECORD;
}
else if (status == JZ_FLAGCODE_OFF && Temp_LastVideoStatus != JZ_FLAGCODE_NORMAL)
{
VideoStreamFlowIndexNum = Temp_LastVideoStatus;
g_VideoStreamFlowIndexNum = Temp_LastVideoStatus;
Temp_LastVideoStatus = JZ_FLAGCODE_NORMAL;
}
else
... ... @@ -146,7 +126,7 @@ T_JZsdkReturnCode VideoMgmt_VideoStreamFlow_RecordPlay(int status)
T_JZsdkReturnCode VideoStramPhoto_DevelopH264FlowGenerateIDR()
{
#if DEVICE_VERSION == JZ_C1
switch (VideoStreamFlowIndexNum)
switch (g_VideoStreamFlowIndexNum)
{
case VIDEOMGMT_STREAMING_FLOW_INDEX_FIRST:
{
... ... @@ -192,130 +172,6 @@ T_JZsdkReturnCode VideoMgmt_VideoStreamToDeal(unsigned char *data, unsigned int
}
/******************************************************************************
*
* 多线程下的处理
*
*
*
* ***********************************************************/
static void *VideoMgmt_VideoStreamFlow_Thread(void *args)
{
struct VideoMgmt_VideoStreamFlow *VideoPush = (struct VideoMgmt_VideoStreamFlow *)args;
int delay_time_ms = (1000/VideoPush->FrameNumber); //得出延时的ms
unsigned char *FreezeData = NULL;
unsigned int FreezeDataLen = 0;
int FreezeFlag = JZ_FLAGCODE_OFF;
while (1)
{
delayMs(delay_time_ms);
//判断是否用视频流是否用的是当前这个
if (VideoPush->VideoStreamFlowIndex != VideoStreamFlowIndexNum)
{
continue;
}
//推流操作
//读取数据
unsigned char *data = NULL;
unsigned int data_len = 0;
//如果视频为大疆H264型 或 JZH264型
if (VIDEOMGMT_VIDEO_TPYE == VIDEOMGMT_TPYE_DJIH264 || VIDEOMGMT_VIDEO_TPYE == VIDEOMGMT_TPYE_JZH264 )
{
VideoMgmt_read_data((void **)VideoPush->index, &data, &data_len, VIDEOMGMT_USE_FRAMEEND, VIDEO_FRAME_AUD_LEN); //读取
memcpy(data + data_len, s_frameAudInfo, VIDEO_FRAME_AUD_LEN);
data_len = data_len + VIDEO_FRAME_AUD_LEN;
}
else
{
VideoMgmt_read_data((void **)VideoPush->index, &data, &data_len, JZ_FLAGCODE_OFF, JZ_FLAGCODE_OFF); //读取
}
//冻结功能
if (VideoFreezeFlag == JZ_FLAGCODE_ON)
{
//如果冻结数据为空,且 当前为i帧
if (FreezeData == NULL && data[4] == 0x67)
{
FreezeDataLen = data_len;
JZsdk_Malloc((void **)&FreezeData, data_len);
memcpy(FreezeData, data, data_len);
}
}
//冻结开了就推送冻结画面
if (VideoFreezeFlag == JZ_FLAGCODE_ON && FreezeDataLen != 0)
{
VideoMgmt_VideoStreamToDeal(FreezeData, FreezeDataLen);
}
//否则推送正常画面
else
{
VideoMgmt_VideoStreamToDeal(data, data_len);
}
// 释放数据(如果有必要的话)
if (data) {
free(data);
data = NULL;
}
data_len = 0;
if (VideoFreezeFlag == JZ_FLAGCODE_OFF)
{
if (FreezeData) {
free(FreezeData);
FreezeData = NULL;
}
FreezeDataLen = 0;
}
}
pthread_exit(NULL);
return NULL;
}
//视频流流转模块的初始化
T_JZsdkReturnCode VideoMgmt_VideoStreamFlow_Init(int FrameNumber, void **index, int VideoStreamFlowIndex)
{
struct VideoMgmt_VideoStreamFlow *VideoStreamFlow = NULL;
// 分配新内存并复制数据
VideoStreamFlow = (struct VideoMgmt_VideoStreamFlow *)malloc(sizeof(struct VideoMgmt_VideoStreamFlow));
if (VideoStreamFlow == NULL) {
JZSDK_LOG_ERROR("视频流流转模块注册失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
VideoStreamFlow->index = index;
VideoStreamFlow->FrameNumber = FrameNumber;
VideoStreamFlow->VideoStreamFlowIndex = VideoStreamFlowIndex;
//创建视频流流转线程
pthread_t ReadDataTask;
pthread_attr_t task_attribute; //线程属性
pthread_attr_init(&task_attribute); //初始化线程属性
pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程分离属性
int ret = pthread_create(&ReadDataTask,&task_attribute,(void *)VideoMgmt_VideoStreamFlow_Thread,VideoStreamFlow); //线程
if(ret != 0)
{
JZSDK_LOG_ERROR("创建视频流流转线程失败!");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
JZSDK_LOG_INFO("视频流流转模块初始化完毕");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/**************
*
* 相机功能 录制功能传递函数
... ... @@ -366,12 +222,12 @@ static T_JZsdkReturnCode VideoStream_FreezeVideo(int value)
if (value == JZ_FLAGCODE_ON)
{
JZSDK_LOG_INFO("视频流冻结");
VideoFreezeFlag = JZ_FLAGCODE_ON;
g_VideoFreezeFlag = JZ_FLAGCODE_ON;
}
else if (value == JZ_FLAGCODE_OFF)
{
JZSDK_LOG_INFO("关闭视频流冻结");
VideoFreezeFlag = JZ_FLAGCODE_OFF;
g_VideoFreezeFlag = JZ_FLAGCODE_OFF;
}
else
{
... ... @@ -398,7 +254,7 @@ T_JZsdkReturnCode VideoMgmt_param(int flagcode, enum VideoMgmtParm paramflag, in
{
case VIDEO_MGMT_FREEZE:
{
*value = VideoFreezeFlag;
*value = g_VideoFreezeFlag;
}
break;
... ... @@ -455,7 +311,7 @@ T_JZsdkReturnCode VideoMgmt_Send_StreamStatus(JZ_VideoStreamUseStatus status)
T_JZsdkReturnCode VideoMgmt_Get_StreamWidthAndHeight(int *width, int *height)
{
#if DEVICE_VERSION == JZ_C1
if (VideoStreamFlowIndexNum == VIDEOMGMT_STREAMING_FLOW_INDEX_FIRST)
if (g_VideoStreamFlowIndexNum == VIDEOMGMT_STREAMING_FLOW_INDEX_FIRST)
{
*width = FIRST_WIDTH;
*height = FIRST_HEIGHT;
... ... @@ -466,5 +322,11 @@ T_JZsdkReturnCode VideoMgmt_Get_StreamWidthAndHeight(int *width, int *height)
*height = SECOND_HEIGHT;
}
#endif
#if DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T
*width = FIRST_WIDTH;
*height = FIRST_HEIGHT;
#endif
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
\ No newline at end of file
... ...
... ... @@ -12,6 +12,7 @@
/* Includes ------------------------------------------------------------------*/
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
#include "./VideoMgmt_Parm.h"
#ifdef __cplusplus
extern "C" {
... ... @@ -19,48 +20,7 @@ extern "C" {
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
typedef enum {
VIDEOMGMT_TPYE_H264 = 0x0000,
VIDEOMGMT_TPYE_DJIH264 = 0x0001,
VIDEOMGMT_TPYE_JZH264 = 0x0002
} JZ_VideoMgmt_Type_Code;
//推送的索引值,用于解决推送哪一个视频流的问题
typedef enum JZ_VideoMgmt_PushIndex{
VIDEOMGMT_STREAMING_FLOW_INDEX_FIRST = 0x0001,
VIDEOMGMT_STREAMING_FLOW_INDEX_SECOND = 0x0002,
VIDEOMGMT_STREAMING_FLOW_INDEX_THIRD = 0x0003,
VIDEOMGMT_STREAMING_FLOW_INDEX_RECORD = 0x0010, //录像流
}JZ_VideoMgmt_PushIndex;
//视频流的使用状态
typedef enum JZ_VideoStreamUseStatus{
VIDEO_STREAM_IDLE = 0x0000, //相机空闲
VIDEO_STREAM_RECORD = 0x0001, //相机录像中
VIDEO_STREAM_SHOOTPHOTO = 0x0002, //相机拍照中
VIDEO_STREAM_BRUSTSHOORPHOTO = 0x0003, //相机连拍中
VIDEO_STREAM_TRANSCODE = 0x0004, //相机转码中
}JZ_VideoStreamUseStatus;
typedef enum VideoMgmtParm
{
VIDEO_MGMT_FREEZE = 0x0001, //冻结
}VideoMgmtParm;
extern void *VideoMgmt_FirstVideo_index; //一号视频流的缓冲地址
extern void *VideoMgmt_SecondVideo_index; //二号视频流的缓冲地址
extern void *VideoMgmt_ThirdVideo_index; //三号视频流的缓冲地址
extern void *VideoMgmt_FirstRaw_index; //一号原始流的缓冲地址
extern void *VideoMgmt_SecondRaw_index; //二号原始流的缓冲地址
extern void *VideoMgmt_ThirdRaw_index; //三号原始流的缓冲地址
#define VIDEOMGMT_USE_FRAMEHEAD (1) //获取的数据加上帧头预留位
#define VIDEOMGMT_USE_FRAMEEND (2) //获取的数据加上帧尾预留位
#define VIDEOMGMT_VIDEO_TPYE VIDEOMGMT_TPYE_DJIH264 //推送帧的视频格式
/* Exported types ------------------------------------------------------------*/
... ... @@ -100,7 +60,14 @@ T_JZsdkReturnCode VideoRecord_TransMode(int status);
*
* *****************/
T_JZsdkReturnCode VideoMgmt_VideoStreamToDeal(unsigned char *data, unsigned int data_len);
int VideoMgmt_GetVideoStreamFlowIndexNum();
/*************
*
* 单线程输入函数
*
* **************/
T_JZsdkReturnCode VideoMgmt_Single_FrameIn(unsigned char *FrmaeData,unsigned int FrmaeDataLen);
#ifdef __cplusplus
}
... ...
... ... @@ -10,17 +10,11 @@
#include <unistd.h>
#include "JZsdkLib.h"
#include "./VideoMgmt.h"
#include "version_choose.h"
#include "BaseConfig.h"
#include "./VideoStreamPush/VideoStream_Push.h"
#include "./VideoStreamRecord/VideoStream_Record.h"
#include "./VideoStreamPhoto/VideoStream_ShootPhoto.h"
#include "UI_control/UI_control.h"
#include "./VideoMgmt.h"
#include "../MediaParm.h"
#include "../StreamProc/RTK_mmp/RTK_mmp.h"
#include "./VideoMgmt_Parm.h"
/*视频流缓冲区地址说明
... ...
/**************************************************
*
* 文件名:VideoMgmt的多线程处理模式
*
* **********************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#include "JZsdkLib.h"
#include "./VideoMgmt.h"
#include "version_choose.h"
#include "BaseConfig.h"
#include "./VideoStreamPush/VideoStream_Push.h"
#include "./VideoStreamRecord/VideoStream_Record.h"
#include "./VideoStreamPhoto/VideoStream_ShootPhoto.h"
#include "UI_control/UI_control.h"
#include "../MediaParm.h"
#include "../StreamProc/RTK_mmp/RTK_mmp.h"
/**
********************************************************************
* @file VideoMgmt_Parm.h
* VideoMgmt_Parm的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef VIDEO_MGMT_PARAM_H
#define VIDEO_MGMT_PARAM_H
/* Includes ------------------------------------------------------------------*/
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
typedef enum {
VIDEOMGMT_TPYE_H264 = 0x0000,
VIDEOMGMT_TPYE_DJIH264 = 0x0001,
VIDEOMGMT_TPYE_JZH264 = 0x0002
} JZ_VideoMgmt_Type_Code;
//推送的索引值,用于解决推送哪一个视频流的问题
typedef enum JZ_VideoMgmt_PushIndex{
VIDEOMGMT_STREAMING_FLOW_INDEX_FIRST = 0x0001,
VIDEOMGMT_STREAMING_FLOW_INDEX_SECOND = 0x0002,
VIDEOMGMT_STREAMING_FLOW_INDEX_THIRD = 0x0003,
VIDEOMGMT_STREAMING_FLOW_INDEX_RECORD = 0x0010, //录像流
}JZ_VideoMgmt_PushIndex;
//视频流的使用状态
typedef enum JZ_VideoStreamUseStatus{
VIDEO_STREAM_IDLE = 0x0000, //相机空闲
VIDEO_STREAM_RECORD = 0x0001, //相机录像中
VIDEO_STREAM_SHOOTPHOTO = 0x0002, //相机拍照中
VIDEO_STREAM_BRUSTSHOORPHOTO = 0x0003, //相机连拍中
VIDEO_STREAM_TRANSCODE = 0x0004, //相机转码中
}JZ_VideoStreamUseStatus;
//视频流索引
typedef struct VideoMgmt_VideoStreamFlow
{
void **index; //用于提出画面流的缓冲区地址
int VideoStreamFlowIndex; //缓冲区的索引号,用于区分缓冲区
int FrameNumber; //推流的帧数
}VideoMgmt_VideoStreamFlow;
typedef enum VideoMgmtParm
{
VIDEO_MGMT_FREEZE = 0x0001, //冻结
}VideoMgmtParm;
extern void *VideoMgmt_FirstVideo_index; //一号视频流的缓冲地址
extern void *VideoMgmt_SecondVideo_index; //二号视频流的缓冲地址
extern void *VideoMgmt_ThirdVideo_index; //三号视频流的缓冲地址
extern void *VideoMgmt_FirstRaw_index; //一号原始流的缓冲地址
extern void *VideoMgmt_SecondRaw_index; //二号原始流的缓冲地址
extern void *VideoMgmt_ThirdRaw_index; //三号原始流的缓冲地址
#define VIDEOMGMT_USE_FRAMEHEAD (1) //获取的数据加上帧头预留位
#define VIDEOMGMT_USE_FRAMEEND (2) //获取的数据加上帧尾预留位
#define VIDEOMGMT_VIDEO_TPYE VIDEOMGMT_TPYE_DJIH264 //推送帧的视频格式
#define VIDEO_FRAME_AUD_NO1_LEN 6
static const unsigned char FrameAudInfo_NO1[VIDEO_FRAME_AUD_NO1_LEN] = {0x00, 0x00, 0x00, 0x01, 0x09, 0x10}; //类型一帧长度
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
#ifdef __cplusplus
}
#endif
#endif
... ...
/**************************************************
*
* 文件名:VideoMgmt的多线程处理模式
*
* **********************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#include "JZsdkLib.h"
#include "BaseConfig.h"
#include "./VideoMgmt.h"
#include "../MediaParm.h"
#include "./VideoMgmt_Parm.h"
static void *VideoMgmt_VideoStreamFlow_Thread(void *args)
{
struct VideoMgmt_VideoStreamFlow *VideoPush = (struct VideoMgmt_VideoStreamFlow *)args;
int delay_time_ms = (1000/VideoPush->FrameNumber); //得出延时的ms
unsigned char *FreezeData = NULL;
unsigned int FreezeDataLen = 0;
int VideoFreezeFlag = JZ_FLAGCODE_OFF;
while (1)
{
delayMs(delay_time_ms);
//判断是否用视频流是否用的是当前这个
if (VideoPush->VideoStreamFlowIndex != VideoMgmt_GetVideoStreamFlowIndexNum())
{
continue;
}
//推流操作
//读取数据
unsigned char *data = NULL;
unsigned int data_len = 0;
//如果视频为大疆H264型 或 JZH264型
if (VIDEOMGMT_VIDEO_TPYE == VIDEOMGMT_TPYE_DJIH264 || VIDEOMGMT_VIDEO_TPYE == VIDEOMGMT_TPYE_JZH264 )
{
VideoMgmt_read_data((void **)VideoPush->index, &data, &data_len, VIDEOMGMT_USE_FRAMEEND, VIDEO_FRAME_AUD_NO1_LEN); //读取
memcpy(data + data_len, FrameAudInfo_NO1, VIDEO_FRAME_AUD_NO1_LEN);
data_len = data_len + VIDEO_FRAME_AUD_NO1_LEN;
}
else
{
VideoMgmt_read_data((void **)VideoPush->index, &data, &data_len, JZ_FLAGCODE_OFF, JZ_FLAGCODE_OFF); //读取
}
//获取冻结标志位
VideoMgmt_param(JZ_FLAGCODE_SET, VIDEO_MGMT_FREEZE, &VideoFreezeFlag);
//冻结功能
if (VideoFreezeFlag == JZ_FLAGCODE_ON)
{
//如果冻结数据为空,且 当前为i帧
if (FreezeData == NULL && data[4] == 0x67)
{
FreezeDataLen = data_len;
JZsdk_Malloc((void **)&FreezeData, data_len);
memcpy(FreezeData, data, data_len);
}
}
//冻结开了就推送冻结画面
if (VideoFreezeFlag == JZ_FLAGCODE_ON && FreezeDataLen != 0)
{
VideoMgmt_VideoStreamToDeal(FreezeData, FreezeDataLen);
}
//否则推送正常画面
else
{
VideoMgmt_VideoStreamToDeal(data, data_len);
}
// 释放数据(如果有必要的话)
if (data) {
printf("释放1\n");
free(data);
data = NULL;
}
data_len = 0;
if (VideoFreezeFlag == JZ_FLAGCODE_OFF)
{
if (FreezeData) {
free(FreezeData);
FreezeData = NULL;
}
FreezeDataLen = 0;
}
}
pthread_exit(NULL);
return NULL;
}
/************************
*
* 开启流转区块
*
*
*
* ***********************/
T_JZsdkReturnCode VideoMgmt_VideoStreamFlow_Init(int FrameNumber, void **index, int VideoStreamFlowIndex)
{
struct VideoMgmt_VideoStreamFlow *VideoStreamFlow = NULL;
// 分配新内存并复制数据
VideoStreamFlow = (struct VideoMgmt_VideoStreamFlow *)malloc(sizeof(struct VideoMgmt_VideoStreamFlow));
if (VideoStreamFlow == NULL) {
JZSDK_LOG_ERROR("视频流流转模块注册失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
VideoStreamFlow->index = index;
VideoStreamFlow->FrameNumber = FrameNumber;
VideoStreamFlow->VideoStreamFlowIndex = VideoStreamFlowIndex;
//创建视频流流转线程
pthread_t ReadDataTask;
pthread_attr_t task_attribute; //线程属性
pthread_attr_init(&task_attribute); //初始化线程属性
pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程分离属性
int ret = pthread_create(&ReadDataTask,&task_attribute,(void *)VideoMgmt_VideoStreamFlow_Thread,VideoStreamFlow); //线程
if(ret != 0)
{
JZSDK_LOG_ERROR("创建视频流流转线程失败!");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
JZSDK_LOG_INFO("视频流流转模块初始化完毕");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
\ No newline at end of file
... ...
... ... @@ -6,21 +6,15 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#include "JZsdkLib.h"
#include "./VideoMgmt.h"
#include "version_choose.h"
#include "BaseConfig.h"
#include "./VideoStreamPush/VideoStream_Push.h"
#include "./VideoStreamRecord/VideoStream_Record.h"
#include "./VideoStreamPhoto/VideoStream_ShootPhoto.h"
#include "UI_control/UI_control.h"
#include "./VideoMgmt.h"
#include "../MediaParm.h"
#include "./VideoMgmt_Parm.h"
#include "../StreamProc/RTK_mmp/RTK_mmp.h"
/************************
*
... ... @@ -43,10 +37,24 @@ T_JZsdkReturnCode VideoMgmt_Single_FrameIn(unsigned char *FrmaeData,unsigned int
}
//进行数据后处理,即加入帧头,帧尾等
//如果视频为大疆H264型 或 JZH264型
if (VIDEOMGMT_VIDEO_TPYE == VIDEOMGMT_TPYE_DJIH264 || VIDEOMGMT_VIDEO_TPYE == VIDEOMGMT_TPYE_JZH264 )
{
unsigned char *data = (unsigned char *)malloc(FrmaeDataLen + VIDEO_FRAME_AUD_NO1_LEN);
memcpy(data, FrmaeData, FrmaeDataLen);
memcpy(data + FrmaeDataLen, FrameAudInfo_NO1, VIDEO_FRAME_AUD_NO1_LEN);
FrmaeDataLen = FrmaeDataLen + VIDEO_FRAME_AUD_NO1_LEN;
//将数据输入到流转函数中
VideoMgmt_VideoStreamToDeal(data,FrmaeDataLen);
//将数据输入到流转函数中
VideoMgmt_VideoStreamToDeal(FrmaeData,FrmaeDataLen);
free(data);
}
else
{
//将数据输入到流转函数中
VideoMgmt_VideoStreamToDeal(FrmaeData,FrmaeDataLen);
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
\ No newline at end of file
... ...
... ... @@ -335,6 +335,7 @@ T_JZsdkReturnCode JZsdk_GetSongInDudioList_AudioInfo(struct AudioMange_Node *hea
while (current != NULL) {
if (strcmp(current->audioInfo.FileName, songToFind->FileName) == 0)
{
songToFind->FileNameLen = current->audioInfo.FileNameLen;
songToFind->BitRate = current->audioInfo.BitRate;
songToFind->FileSize = current->audioInfo.FileSize;
songToFind->FileType = current->audioInfo.FileType;
... ...
... ... @@ -309,6 +309,8 @@ T_JZsdkReturnCode AudioFile_FlushAudioList()
//打印一遍已加载的音乐
JZsdk_PrintfAuidoNode_AudioList(g_AudioList);
JZSDK_LOG_INFO("刷新歌曲列表已完成");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -636,6 +638,8 @@ T_JZsdkReturnCode AudioFile_SaveAudioFileStop(int checkFlag, unsigned char *Chec
g_AudioFile_SaveAudioFile_NameFp = NULL;
g_AudioFile_SaveAudioFile_len = 0; //置零长度
JZsdk_RunSystemCmd("sync");
if (checkFlag != JZ_FLAGCODE_OFF)
{
//校验文件
... ... @@ -676,6 +680,8 @@ T_JZsdkReturnCode AudioFile_SaveAudioFileStop(int checkFlag, unsigned char *Chec
ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
JZsdk_RunSystemCmd("sync");
//2、关闭标志位
AudioFile_save_flag = 0;
... ... @@ -720,12 +726,13 @@ T_JZsdkReturnCode AudioFile_GetAudioInfo(unsigned char *str, unsigned int str_le
T_JZsdkReturnCode ret;
//1、查询该名字是否存在于音乐列表中
memset(songToFind->FileName, 0 ,sizeof(songToFind->FileName));
memcpy(songToFind->FileName, str, str_len);
ret = JZsdk_isSongInAudioList(g_AudioList, (*songToFind));
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("播放文件不存在于音乐列表");
JZSDK_LOG_ERROR("播放文件不存在于音乐列表 %s", songToFind->FileName);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
... ...
... ... @@ -188,7 +188,7 @@ static void *MegTempRead_task(void *arg)
int fd = open("/dev/sunxi_adc",O_RDWR);
if(fd < 0)
{
return;
return NULL;
JZSDK_LOG_ERROR("测温模块出错");
}
... ...
... ... @@ -1190,29 +1190,12 @@ T_JZsdkReturnCode Megaphone_SetVolume(int value, int mode)//设置音é‡ï¼ŒéŸ³é‡
else if(value>0&&value<100)
{
if (DEVICE_VERSION == JZ_U3)
{
value=value*g_Max_volume/100 *63/100;
}
else
{
value=value*g_Max_volume/100 *255/100;
}
value=value*g_Max_volume/100 *255/100;
}
else if(value>=100)
{
if (DEVICE_VERSION == JZ_U3)
{
value=100*g_Max_volume/100 *63/100;
}
else
{
value=100*g_Max_volume/100 *255/100;
}
value=100*g_Max_volume/100 *255/100;
}
int* set_volume_value_ptr = malloc(sizeof(int)); // 动态分配内存
... ... @@ -1261,29 +1244,12 @@ static T_JZsdkReturnCode Megaphone_SetTTSvolume()
else if(value>0&&value<100)
{
if (DEVICE_VERSION == JZ_U3)
{
value=value*g_TTS_Max_volume/63 *63/100;
}
else
{
value=value*g_TTS_Max_volume/100 *255/100;
}
value=value*g_TTS_Max_volume/100 *255/100;
}
else if(value>=100)
{
if (DEVICE_VERSION == JZ_U3)
{
value=100*g_TTS_Max_volume/100 *63/100;
}
else
{
value=100*g_TTS_Max_volume/100 *255/100;
}
value=100*g_TTS_Max_volume/100 *255/100;
}
int* set_volume_value_ptr = malloc(sizeof(int)); // 动态分配内存
... ...
... ... @@ -57,7 +57,7 @@ static T_JZsdkReturnCode TTS_Synthesis(const char* src_text, const char* params)
{
/* 获取合成音频 */
//const void* data = QTTSAudioGet(sessionID, &audio_len, &synth_status, &ret);
unsigned char *data = QTTSAudioGet(sessionID, &audio_len, &synth_status, &ret);
unsigned char *data = (unsigned char *)QTTSAudioGet(sessionID, &audio_len, &synth_status, &ret);
if (ret != MSP_SUCCESS)
{
break;
... ...
... ... @@ -25,14 +25,9 @@ extern "C" {
#if DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T
#define MAX_VOLUME (61)
#define MAX_TTS_VOLUME (75)
//#define MAX_VOLUME (43)
//#define MAX_TTS_VOLUME (53)
#elif DEVICE_VERSION == JZ_H1E
#define MAX_VOLUME (75)
#define MAX_TTS_VOLUME (82)
// #define MAX_VOLUME (100)
// #define MAX_TTS_VOLUME (100)
#elif DEVICE_VERSION == JZ_H1T
// #define MAX_VOLUME 75
// #define MAX_TTS_VOLUME 84
... ... @@ -45,22 +40,18 @@ extern "C" {
#elif DEVICE_VERSION == JZ_H10
#define MAX_VOLUME (65)
#define MAX_TTS_VOLUME (70) //115
//#define MAX_VOLUME (80)
//#define MAX_TTS_VOLUME (86) //119
//#define MAX_VOLUME (95)
//#define MAX_TTS_VOLUME (95)
#elif DEVICE_VERSION == JZ_H10T
#define MAX_VOLUME (83)
#define MAX_TTS_VOLUME (83)
#elif DEVICE_VERSION == JZ_U3
#define MAX_VOLUME (100)
#define MAX_TTS_VOLUME (100)
#define MAX_VOLUME (74)
#define MAX_TTS_VOLUME (82)
#elif DEVICE_VERSION == JZ_U3D
#define MAX_VOLUME (80)
#define MAX_TTS_VOLUME (90)
#define MAX_VOLUME (73)
#define MAX_TTS_VOLUME (81)
#elif DEVICE_VERSION == JZ_U30
#define MAX_VOLUME (80)
#define MAX_TTS_VOLUME (90)
#define MAX_VOLUME (74)
#define MAX_TTS_VOLUME (82)
#elif DEVICE_VERSION == JZ_U3S
#define MAX_VOLUME (74)
#define MAX_TTS_VOLUME (82)
... ...
... ... @@ -9,6 +9,7 @@
#include "../../Megaphone.h"
#include "version_choose.h"
#include "AudioDeal/AudioDeal.h"
#include "AudioDeal/NoiseReduction/NoiseReduction.h"
#include "opus.h"
... ... @@ -174,7 +175,7 @@ static T_JZsdkReturnCode Opus_RealTimeVoice_PlayData(unsigned char *data,int len
for (i = 0; i < WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS * frame_size; i++)
{
TempPcm [i] = out[i] & 0xFF | (out[i] >> 8) << 8;
TempPcm[i] = out[i] & 0xFF | (out[i] >> 8) << 8;
TempPcm[i] = PcmNoiseReduction(TempPcm[i]);
pcm_bytes[2 * i] = TempPcm[i] & 0xFF;
... ...
... ... @@ -336,6 +336,8 @@ static T_JZsdkReturnCode Opus_RecordVoice_DecodeFixedFile()
JZSDK_LOG_ERROR("创建DecodeAudioData_task线程失败!\n");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*
... ... @@ -465,7 +467,7 @@ DecodeFinsh:
}
//解码完成
printf("Decode Finished...\n");
JZSDK_LOG_INFO("Decode Finished...\n");
OpusDecode_Flag = JZ_FLAGCODE_OFF;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ...
... ... @@ -1719,6 +1719,11 @@ T_JZsdkReturnCode UIcontrol_ObtainGimbal_Pitch(int DeviceName, int GimbalPitchAn
//1、设置本地存储值
Gimbal_Obtain_Gimbal_Pitch(GimbalPitchAngle);
#if DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U30
//无变化
#else
//通知其他设备的ui界面变化
//如果4G模块有启动
if ((JZsdk_Get_UartDev_UseFlag(UART_4G) == JZ_FLAGCODE_ON) && (DeviceName != UART_4G) )
... ... @@ -1740,6 +1745,7 @@ T_JZsdkReturnCode UIcontrol_ObtainGimbal_Pitch(int DeviceName, int GimbalPitchAn
{
JZsdk_Psdk_UI_io_Reply_GimbalPitchAngle(GimbalPitchAngle);
}
#endif
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ...
# cmake 最低版本要求 第三行名字不能动
cmake_minimum_required(VERSION 2.8)
project(JZ_UART_APP)
set(CMAKE_C_FLAGS "-pthread -std=gnu99 -lm -ldl -lstdc++")
#"-pthread":指定在编译时链接POSIX线程库,以支持多线程程序。
#"-std=gnu99":指定C语言标准为GNU C99(也就是C99加上GNU的扩展特性),该标准对于一些特性和库的使用是必须的。
#"-lm":指定在编译时链接数学库,以使用一些数学函数。
#"-ldl":指定在编译时链接动态库加载库,以使用动态加载。
#"-lstdc++":指定在编译时链接C++标准库,以使用C++的一些特性和函数。
set(CMAKE_EXE_LINKER_FLAGS "-pthread")
#预留行
set(DEVICE_TYPE MEGAPHONE)
#预留行
#预留行
#预留行
#预留行
#预留行
#预留行
set(ROOT_DIRS "${CMAKE_CURRENT_LIST_DIR}/../../")
# 包含模块配置
include(${ROOT_DIRS}CmakeConfig/Compiler.cmake)
include(${ROOT_DIRS}CmakeConfig/module_config.cmake)
include(${ROOT_DIRS}CmakeConfig/module_build.cmake)
# 加载jzsdk的头文件  *****************************************************
include_directories(${ALL_INC_FILES})
# 生成可执行文件
add_executable(
JZ_UART_APP
./application/main.c
${ALL_SRC_FILES} #加载jzsdk的源文件 *****************************************************
)
include(${ROOT_DIRS}CmakeConfig/module_lib_loading.cmake)
... ...
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH
if [ "$PS1" ]; then
if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "`id -u`" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
echo "____ins_language_mod_____"
export LANG="C.UTF-8";
export LANGUAGE="C.UTF-8";
echo "____挂载数据缓冲区____"
mkswap /dev/mmcblk0p5
swapon /dev/mmcblk0p5
cat /proc/swaps
echo "____挂载sdcard用户区____"
mount -t vfat -o iocharset=utf8 /dev/mmcblk0p3 /root/sdcard;
echo "____安装驱动____"
cd /root/kofile/
#insmod libcomposite.ko
#insmod usb_f_mass_storage.ko
insmod g_mass_storage.ko file=/dev/mmcblk0p3 stall=0 removable=1
echo "____初始化文件夹____";
cd /root/
mkdir -p /root/sdcard/audio;
mkdir -p /root/sdcard/record;
mkdir -p /root/sdcard/Logs;
echo "____解除静音____"
amixer sset -c 0 'Headphone' 30% unmute
echo "____检查更新____";
chmod 777 up.sh;
./up.sh;
echo "_____启动开始语音_____";
chmod 777 H1start;
./H1start;
ehco "____It_Just_Work____"
while true; do
echo "____开启 程序___"
chmod 777 CheckConnect.sh
./CheckConnect.sh
echo "_____启动错误文件_____"
mount -o remount rw sdcard/
sync
echo "____错误处理____"
chmod 777 H1error;
./H1error;
done
\ No newline at end of file
... ...
#!/bin/bash
echo "仅启动串口程序"
chmod 777 JZ_UART_APP
./JZ_UART_APP -f 0
sync;
... ...
1
2
0
0
改动备注:2024/8所做
\ No newline at end of file
... ...
#!/bin/bash
TarPackage_second=UpgradePackage.tar.gz #二次解压包的名字
ProjectDir="../../../"
#获取更新脚本所在的文件夹名字
cd ..
dir_name=$(pwd)
echo "_____清除build文件夹内容_____"
cd ${ProjectDir}build
echo $(pwd)
rm -rf *
echo "_____cmake编译make目录_____"
cmake ..
echo "_____8核编译PSDK_____"
make -j8
echo "_____回到打包目录_____"
cd $dir_name
echo "_____删除上一个更新包内容_____"
# 如果存在psdk,删除
if [ -f ./Package/psdk/* ]; then
rm ./Package/psdk/*
fi
# 如果存在bin包,删除
if [ -f ./*.bin ]; then
rm *.bin
fi
# 如果存在二次压缩包,删除
if [ -f ./$TarPackage_second ]; then
rm $TarPackage_second
fi
echo "_____复制应用程序到psdk目录下_____"
#复制psdk程序,没有就退出脚本
if [ -f ${ProjectDir}build/JZ* ]; then
cp ${ProjectDir}build/JZ* ./Package/app/
else
echo "___没有串口程序,脚本退出____"
exit
fi
echo "_____使用gzip打包 应用程序 和 更新包内容_____"
#二次压缩包的打包
tar -zcf $TarPackage_second Package
echo "_____输出当前目录_____"
ls -la
echo "_____输出二次压缩包目录_____"
#参数说明 t 查看内容 f 压缩包名字指定
tar -tf $TarPackage_second
echo "___shellpack.sh执行完毕____";
\ No newline at end of file
... ...
#! /bin/bash
echo "updata.sh"
Update_PsdkPack="JZ*"
Update_Package="Package"
HardwareIdentification="HardwareIdeNum" #硬件码文件
TarPackage_second=UpgradePackage.tar.gz #二次解压包的名字
MD5saveFile=UpdateMD5num #md5文件内部的md5值文件
#得到二次解压包和md5校验文件
# 校验mp5 失败直接删除
# 获取文件的md5值
md5_File="$(md5sum "${TarPackage_second}" | cut -d ' ' -f 1)"
echo 文件的md5为:$md5_File
# 读取文件第一行并删除不可见字符
md5_save=$(sed '1s/[^[:print:]]//g' "$MD5saveFile")
echo 读取的md5为:$md5_save
# 比较md5值是否匹配
if [ "$md5_File" == "$md5_save" ]; then
echo "MD5 matches: $md5_File"
else
delete_updateFile; #删除更新文件
#mkdir /root/sdcard/MP5校验失败;
rm /root/sdcard/update_log.txt
echo "MP5校验失败" > /root/sdcard/update_log.txt
# 播报升级失败
./defeat;
exit;
fi
# 二次解压
tar -zxvf $TarPackage_second;
#标准更新
# 定义一个名为 HardwareNum 的数组
declare -a HardwareNum
echo "___识别更新用的序列号,判断该机器是否能够更新____"
# 补充添加
# 添加硬件区分
# 硬件版本号 4位
# ① 芯片型号
# ② 硬件大型改动
# ③ 硬件非通用改动
# ④ 通用改动
#1、读取硬件号
if [ ! -f /root/${HardwareIdentification} ]; then
echo "____硬件序列号不存在___"
else
# 逐行读取文件,将每一行内容保存到数组中
while read line; do
HardwareNum+=("$line")
done < /root/${HardwareIdentification}
# 打印数组的每个元素
for i in "${HardwareNum[@]}"; do
echo "$i"
done
fi
echo "____更新步骤____"
#1、更新app
mv /root/Package/app/sox /bin/ #将滤波器移动到bin目录
rm /usr/bin/ffmpeg
mv /root/Package/app/ffmpeg /bin/ #将滤波器移动到bin目录
mv /root/Package/app/* /root/ #如h1start h1error等报语音程序
#2、更新配置文件
cp /root/Package/config/Configs -r /root/ #将Configs文件夹移动到/root
#3、更新lib文件
mv /root/Package/lib/* /lib/ #更新lib文件
#4、更新psdk
mv /root/Package/psdk/* /root/ #更新psdk
#5、更新驱动文件kofile
mkdir /root/kofile
mv /root/Package/kofile/*.ko /root/kofile #更新ko驱动文件
#6、更新杂项
mv /root/Package/others/* /root/ #将others下的所有文件移动到root
tar xvf /root/espeak-data.tar #如果本地有海外版的压缩包 进行解压
rm /root/espeak-data.tar
#7、更新脚本文件
# 备注,由于脚本文件是执行一行行的格式 自身被覆盖不会导致出错
# 但是后续的执行后会被改变,所以即使updata.sh和up.sh被打开 也能执行mv
# 但是为了保证更新正常, up.sh的操作 最好只加不改
mv /root/Package/sh/*.sh /root/ #更新剩下的脚本
#8、更新启动文件
mv /root/Package/ProFile/profile /etc/profile #更新启动文件
mv /root/Package/ProFile/asound.conf /etc/asound.conf #更新语音配置
rm /usr/sbin/NetworkManager #删除linux上的网络管理工具
#9、删除原本的滤波记录文件
rm /root/wav_save_name
echo "____更新完成,删除文件____"
rm -rf /root/sdcard/$Update_PsdkPack #删除psdk更新包
rm -rf /root/$Update_Package #删除解压后的更新包
rm -rf /root/$TarPackage_second #删除二次更新包
rm -rf /root/$MD5saveFile; #删除md5校准文件
rm -rf /root/FactoryReset.sh
echo "___updata.sh____";
\ No newline at end of file
... ...
#1、输入设备名字,程序模式,硬件号,版本号
payload_name="JZ_U30" #psdk名字
payload_mode="APP_UART" # APP_PSDK 或者 APP_UART APP_TEST
payload_platform="PLATFORM_V3S" #硬件平台
payload_version="V00.00.02.08" #版本号
payload_origin="DOMESTIC_VERSION" # 国内版DOMESTIC_VERSION 海外版OVERSEAS_VERSION
payload_special="SPECIAL_NORMAL" # 特殊固件注释
payload_OutTimeSet=VERSION_SWITCH_OFF # 超时注释
# 目前已有的特殊版本类型
# SPECIAL_NORMAL 普通版本
# SPECIAL_DAOTONG 道通版本
Root_Dir="../../../../../"
CmakeList_Dir="../../../CMakeLists.txt"
CmakeConfig_Dir="${Root_Dir}CmakeConfig/"
#将设备名字写入cmake
cmake_payload_name="set(DEVICE_NAME ${payload_name})"
sed -i "4s/.*/$cmake_payload_name/" ${CmakeConfig_Dir}Compiler.cmake
# #将工程名进cmake文件
# # 国内版
# if [ "${payload_origin}" == "DOMESTIC_VERSION" ]; then
# cmake_filtering="project(${payload_name}) "
# sed -i "3s/.*/$cmake_filtering/" $CmakeList_Dir
# # 海外版
# elif [ "${payload_origin}" == "OVERSEAS_VERSION" ]; then
# if [[ $payload_name == *"_"* ]]; then
# replaced_payload_name=${payload_name//_/-}
# echo "替换前的工程名: $payload_name"
# echo "替换后的工程名: $replaced_payload_name"
# cmake_filtering="project(${replaced_payload_name}) "
# sed -i "3s/.*/$cmake_filtering/" $CmakeList_Dir
# else
# echo "出错,这个名字不含_符号,请修改你的工程名"
# exit
# fi
# fi
#修改编译的名字
# 国内版
if [ "${payload_origin}" == "DOMESTIC_VERSION" ]; then
echo "国内版"
# 海外版
elif [ "${payload_origin}" == "OVERSEAS_VERSION" ]; then
if [[ $payload_name == *"_"* ]]; then
replaced_payload_name=${payload_name//_/-}
echo "替换前的工程名: $payload_name"
echo "替换后的工程名: $replaced_payload_name"
else
echo "出错,这个名字不含_符号,请修改你的工程名"
exit
fi
fi
#将固件特殊类型名写入version_choose.h
payload_special_text="#define SPECIAL_VERSION ${payload_special}"
sed -i "31s/.*/$payload_special_text/" ${Root_Dir}JZsdk_Config/version_choose.h
#3、将负载版本 负载模式 负载平台 负载版本号 写入version_choose.h
#负载版本
name_text="#define DEVICE_VERSION ${payload_name}"
echo $name_text
sed -i "10s/.*/$name_text/" ${Root_Dir}JZsdk_Config/version_choose.h
#负载模式
mode_text="#define APP_VERSION ${payload_mode}"
echo $mode_text
sed -i "13s/.*/$mode_text/" ${Root_Dir}JZsdk_Config/version_choose.h
#负载平台
platform_text="#define PLATFORM_VERSION ${payload_platform}"
echo $platform_text
sed -i "16s/.*/$platform_text/" ${Root_Dir}JZsdk_Config/version_choose.h
#负载版本号
# 提取版本号的四个部分
payload_version_part1=${payload_version:1:2} # 截取第2和第3个字符
payload_version_part2=${payload_version:4:2} # 截取第5和第6个字符
payload_version_part3=${payload_version:7:2} # 截取第8和第9个字符
payload_version_part4=${payload_version:10:2} # 截取第11和第12个字符
version_text="#define MAJOR_VERSION 0x${payload_version_part1}"
echo $version_text
sed -i "19s/.*/$version_text/" ${Root_Dir}JZsdk_Config/version_choose.h
version_text="#define MINOR_VERSION 0x${payload_version_part2}"
echo $version_text
sed -i "20s/.*/$version_text/" ${Root_Dir}JZsdk_Config/version_choose.h
version_text="#define MODIFY_VERSION 0x${payload_version_part3}"
echo $version_text
sed -i "21s/.*/$version_text/" ${Root_Dir}JZsdk_Config/version_choose.h
version_text="#define DEBUG_VERSION 0x${payload_version_part4}"
echo $version_text
sed -i "22s/.*/$version_text/" ${Root_Dir}JZsdk_Config/version_choose.h
# # 修改json文件的版本号
# ## 获取旧版本号
# json_file_CN_cn="./Package/config/Configs/DJI_widget_file/cn/widget_file/cn_big_screen/widget_config.json"
# json_content_CN_cn=$(cat "$json_file_CN_cn")
# json_file_CN_en="./Package/config/Configs/DJI_widget_file/cn/widget_file/en_big_screen/widget_config.json"
# json_content_CN_en=$(cat "$json_file_CN_en")
# json_file_EN_cn="./Package/config/Configs/DJI_widget_file/en/widget_file/cn_big_screen/widget_config.json"
# json_content_EN_cn=$(cat "$json_file_EN_cn")
# json_file_EN_en="./Package/config/Configs/DJI_widget_file/en/widget_file/en_big_screen/widget_config.json"
# json_content_EN_en=$(cat "$json_file_EN_en")
# ## 提取原始版本号
# original_version_CN_cn=$(echo "$json_content_CN_cn" | grep -Po '(?<="版本号:)[\d.]+')
# echo "CN区cn原始版本号: $original_version_CN_cn"
# original_version_CN_en=$(echo "$json_content_CN_en" | grep -Po '(?<="version:)[\d.]+')
# echo "CN区en原始版本号: $original_version_CN_en"
# original_version_EN_cn=$(echo "$json_content_EN_cn" | grep -Po '(?<="版本号:)[\d.]+')
# echo "EN区cn原始版本号: $original_version_EN_cn"
# original_version_EN_en=$(echo "$json_content_EN_en" | grep -Po '(?<="version:)[\d.]+')
# echo "EN区en原始版本号: $original_version_EN_en"
# ## 定义新的版本号
# json_version=${payload_version:1:11} #
# echo "json新版本号:$json_version"
# ## 替换版本号
# updated_content_CN_cn="${json_content_CN_cn//$original_version_CN_cn/$json_version}"
# updated_content_CN_en="${json_content_CN_en//$original_version_CN_en/$json_version}"
# updated_content_EN_cn="${json_content_EN_cn//$original_version_EN_cn/$json_version}"
# updated_content_EN_en="${json_content_EN_en//$original_version_EN_en/$json_version}"
# ## 将更新后的内容写回 JSON 文件
# echo "$updated_content_CN_cn" > "$json_file_CN_cn"
# echo "$updated_content_CN_en" > "$json_file_CN_en"
# echo "$updated_content_EN_cn" > "$json_file_EN_cn"
# echo "$updated_content_EN_en" > "$json_file_EN_en"
# 修改version.h,是否需要加载海外tts模块
version_origin="#define FIRMWARE_ORIGIN ${payload_origin}"
sed -i "28s/.*/$version_origin/" ${Root_Dir}JZsdk_Config/version_choose.h
# 固件是否设置超时退出
version_outtimeset="#define CONNECTION_TIMED_OUT $payload_OutTimeSet"
echo $version_outtimeset
sed -i "37s/.*/$version_outtimeset/" ${Root_Dir}JZsdk_Config/version_choose.h
#打包诱骗升级包
# 拼接字符串得到更新包名字
# 国内版
if [ "${payload_origin}" == "DOMESTIC_VERSION" ]; then
BinName=$payload_name"_"$payload_version".bin"
# 海外版
elif [ "${payload_origin}" == "OVERSEAS_VERSION" ]; then
BinName=$replaced_payload_name"_"$payload_version".bin"
fi
TarPackage_second=UpgradePackage.tar.gz #二次解压包的名字
HardwareIdentification="HardwareIdeNum" #硬件码文件
MD5saveFile=UpdateMD5num #md5文件内部的md5值
#二次压缩包的打包
cd ShellPack
./shellpack.sh
cd ../
#一级压缩包的打包
mkdir Temp
mv $TarPackage_second ./Temp/ # 二级压缩包
# #硬件码 自行判断是否需要烧录
# cp SHellPack/$HardwareIdentification ./Temp
# #3.4添加恢复出厂文件
# cp ShellPack/FactoryReset.sh ./Temp
# 将升级步骤放进一级压缩包
cp ShellPack/updata.sh ./Temp
# psdk 1385更新up.sh
# cp ShellPack/up.sh ./Temp
#md5 校准
# 获取二级压缩包的md5值
cd Temp
md5_File="$(md5sum "$TarPackage_second" | cut -d ' ' -f 1)"
echo $md5_File
#把md5校准码写进去
echo $md5_File | tee $MD5saveFile > /dev/null #覆盖写
echo "_____打包一级压缩包_____"
tar -zcf $BinName *
mv $BinName ../
cd ../
rm -rf Temp
echo "_____输出一级压缩包目录_____"
#参数说明 t 查看内容 f 压缩包名字指定
tar -tf $BinName
... ...
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH
if [ "$PS1" ]; then
if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "`id -u`" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
echo "____ins_language_mod_____"
export LANG="C.UTF-8";
export LANGUAGE="C.UTF-8";
echo "____挂载数据缓冲区____"
mkswap /dev/mmcblk0p5
swapon /dev/mmcblk0p5
cat /proc/swaps
echo "____挂载sdcard用户区____"
mount -t vfat -o iocharset=utf8 /dev/mmcblk0p3 /root/sdcard;
echo "____安装驱动____"
cd /root/kofile/
#insmod libcomposite.ko
#insmod usb_f_mass_storage.ko
insmod g_mass_storage.ko file=/dev/mmcblk0p3 stall=0 removable=1
echo "____初始化文件夹____";
cd /root/
mkdir -p /root/sdcard/audio;
mkdir -p /root/sdcard/record;
mkdir -p /root/sdcard/Logs;
echo "____解除静音____"
amixer sset -c 0 'Headphone' 30% unmute
echo "____检查更新____";
chmod 777 up.sh;
./up.sh;
echo "_____启动开始语音_____";
chmod 777 H1start;
./H1start;
ehco "____It_Just_Work____"
while true; do
echo "____开启 程序___"
chmod 777 CheckConnect.sh
./CheckConnect.sh
echo "_____启动错误文件_____"
mount -o remount rw sdcard/
sync
echo "____错误处理____"
chmod 777 H1error;
./H1error;
done
\ No newline at end of file
... ...
#!/bin/bash
echo "仅启动串口程序"
chmod 777 JZ_UART_APP
./JZ_UART_APP -f 0
sync;
... ...
1
2
0
0
改动备注:2024/8所做
\ No newline at end of file
... ...
#!/bin/bash
TarPackage_second=UpgradePackage.tar.gz #二次解压包的名字
ProjectDir="../../../"
#获取更新脚本所在的文件夹名字
cd ..
dir_name=$(pwd)
echo "_____清除build文件夹内容_____"
cd ${ProjectDir}build
echo $(pwd)
rm -rf *
echo "_____cmake编译make目录_____"
cmake ..
echo "_____8核编译PSDK_____"
make -j8
echo "_____回到打包目录_____"
cd $dir_name
echo "_____删除上一个更新包内容_____"
# 如果存在psdk,删除
if [ -f ./Package/psdk/* ]; then
rm ./Package/psdk/*
fi
# 如果存在bin包,删除
if [ -f ./*.bin ]; then
rm *.bin
fi
# 如果存在二次压缩包,删除
if [ -f ./$TarPackage_second ]; then
rm $TarPackage_second
fi
echo "_____复制应用程序到psdk目录下_____"
#复制psdk程序,没有就退出脚本
if [ -f ${ProjectDir}build/JZ* ]; then
cp ${ProjectDir}build/JZ* ./Package/app/
else
echo "___没有串口程序,脚本退出____"
exit
fi
echo "_____使用gzip打包 应用程序 和 更新包内容_____"
#二次压缩包的打包
tar -zcf $TarPackage_second Package
echo "_____输出当前目录_____"
ls -la
echo "_____输出二次压缩包目录_____"
#参数说明 t 查看内容 f 压缩包名字指定
tar -tf $TarPackage_second
echo "___shellpack.sh执行完毕____";
\ No newline at end of file
... ...
#! /bin/bash
echo "updata.sh"
Update_PsdkPack="JZ*"
Update_Package="Package"
HardwareIdentification="HardwareIdeNum" #硬件码文件
TarPackage_second=UpgradePackage.tar.gz #二次解压包的名字
MD5saveFile=UpdateMD5num #md5文件内部的md5值文件
#得到二次解压包和md5校验文件
# 校验mp5 失败直接删除
# 获取文件的md5值
md5_File="$(md5sum "${TarPackage_second}" | cut -d ' ' -f 1)"
echo 文件的md5为:$md5_File
# 读取文件第一行并删除不可见字符
md5_save=$(sed '1s/[^[:print:]]//g' "$MD5saveFile")
echo 读取的md5为:$md5_save
# 比较md5值是否匹配
if [ "$md5_File" == "$md5_save" ]; then
echo "MD5 matches: $md5_File"
else
delete_updateFile; #删除更新文件
#mkdir /root/sdcard/MP5校验失败;
rm /root/sdcard/update_log.txt
echo "MP5校验失败" > /root/sdcard/update_log.txt
# 播报升级失败
./defeat;
exit;
fi
# 二次解压
tar -zxvf $TarPackage_second;
#标准更新
# 定义一个名为 HardwareNum 的数组
declare -a HardwareNum
echo "___识别更新用的序列号,判断该机器是否能够更新____"
# 补充添加
# 添加硬件区分
# 硬件版本号 4位
# ① 芯片型号
# ② 硬件大型改动
# ③ 硬件非通用改动
# ④ 通用改动
#1、读取硬件号
if [ ! -f /root/${HardwareIdentification} ]; then
echo "____硬件序列号不存在___"
else
# 逐行读取文件,将每一行内容保存到数组中
while read line; do
HardwareNum+=("$line")
done < /root/${HardwareIdentification}
# 打印数组的每个元素
for i in "${HardwareNum[@]}"; do
echo "$i"
done
fi
echo "____更新步骤____"
#1、更新app
mv /root/Package/app/sox /bin/ #将滤波器移动到bin目录
rm /usr/bin/ffmpeg
mv /root/Package/app/ffmpeg /bin/ #将滤波器移动到bin目录
mv /root/Package/app/* /root/ #如h1start h1error等报语音程序
#2、更新配置文件
cp /root/Package/config/Configs -r /root/ #将Configs文件夹移动到/root
#3、更新lib文件
mv /root/Package/lib/* /lib/ #更新lib文件
#4、更新psdk
mv /root/Package/psdk/* /root/ #更新psdk
#5、更新驱动文件kofile
mkdir /root/kofile
mv /root/Package/kofile/*.ko /root/kofile #更新ko驱动文件
#6、更新杂项
mv /root/Package/others/* /root/ #将others下的所有文件移动到root
tar xvf /root/espeak-data.tar #如果本地有海外版的压缩包 进行解压
rm /root/espeak-data.tar
#7、更新脚本文件
# 备注,由于脚本文件是执行一行行的格式 自身被覆盖不会导致出错
# 但是后续的执行后会被改变,所以即使updata.sh和up.sh被打开 也能执行mv
# 但是为了保证更新正常, up.sh的操作 最好只加不改
mv /root/Package/sh/*.sh /root/ #更新剩下的脚本
#8、更新启动文件
mv /root/Package/ProFile/profile /etc/profile #更新启动文件
mv /root/Package/ProFile/asound.conf /etc/asound.conf #更新语音配置
rm /usr/sbin/NetworkManager #删除linux上的网络管理工具
#9、删除原本的滤波记录文件
rm /root/wav_save_name
echo "____更新完成,删除文件____"
rm -rf /root/sdcard/$Update_PsdkPack #删除psdk更新包
rm -rf /root/$Update_Package #删除解压后的更新包
rm -rf /root/$TarPackage_second #删除二次更新包
rm -rf /root/$MD5saveFile; #删除md5校准文件
rm -rf /root/FactoryReset.sh
echo "___updata.sh____";
\ No newline at end of file
... ...
#1、输入设备名字,程序模式,硬件号,版本号
payload_name="JZ_U3D" #psdk名字
payload_mode="APP_UART" # APP_PSDK 或者 APP_UART APP_TEST
payload_platform="PLATFORM_V3S" #硬件平台
payload_version="V00.00.02.09" #版本号
payload_origin="DOMESTIC_VERSION" # 国内版DOMESTIC_VERSION 海外版OVERSEAS_VERSION
payload_special="SPECIAL_NORMAL" # 特殊固件注释
payload_OutTimeSet=VERSION_SWITCH_OFF # 超时注释
# 目前已有的特殊版本类型
# SPECIAL_NORMAL 普通版本
# SPECIAL_DAOTONG 道通版本
Root_Dir="../../../../../"
CmakeList_Dir="../../../CMakeLists.txt"
CmakeConfig_Dir="${Root_Dir}CmakeConfig/"
#将设备名字写入cmake
cmake_payload_name="set(DEVICE_NAME ${payload_name})"
sed -i "4s/.*/$cmake_payload_name/" ${CmakeConfig_Dir}Compiler.cmake
# #将工程名进cmake文件
# # 国内版
# if [ "${payload_origin}" == "DOMESTIC_VERSION" ]; then
# cmake_filtering="project(${payload_name}) "
# sed -i "3s/.*/$cmake_filtering/" $CmakeList_Dir
# # 海外版
# elif [ "${payload_origin}" == "OVERSEAS_VERSION" ]; then
# if [[ $payload_name == *"_"* ]]; then
# replaced_payload_name=${payload_name//_/-}
# echo "替换前的工程名: $payload_name"
# echo "替换后的工程名: $replaced_payload_name"
# cmake_filtering="project(${replaced_payload_name}) "
# sed -i "3s/.*/$cmake_filtering/" $CmakeList_Dir
# else
# echo "出错,这个名字不含_符号,请修改你的工程名"
# exit
# fi
# fi
#修改编译的名字
# 国内版
if [ "${payload_origin}" == "DOMESTIC_VERSION" ]; then
echo "国内版"
# 海外版
elif [ "${payload_origin}" == "OVERSEAS_VERSION" ]; then
if [[ $payload_name == *"_"* ]]; then
replaced_payload_name=${payload_name//_/-}
echo "替换前的工程名: $payload_name"
echo "替换后的工程名: $replaced_payload_name"
else
echo "出错,这个名字不含_符号,请修改你的工程名"
exit
fi
fi
#将固件特殊类型名写入version_choose.h
payload_special_text="#define SPECIAL_VERSION ${payload_special}"
sed -i "31s/.*/$payload_special_text/" ${Root_Dir}JZsdk_Config/version_choose.h
#3、将负载版本 负载模式 负载平台 负载版本号 写入version_choose.h
#负载版本
name_text="#define DEVICE_VERSION ${payload_name}"
echo $name_text
sed -i "10s/.*/$name_text/" ${Root_Dir}JZsdk_Config/version_choose.h
#负载模式
mode_text="#define APP_VERSION ${payload_mode}"
echo $mode_text
sed -i "13s/.*/$mode_text/" ${Root_Dir}JZsdk_Config/version_choose.h
#负载平台
platform_text="#define PLATFORM_VERSION ${payload_platform}"
echo $platform_text
sed -i "16s/.*/$platform_text/" ${Root_Dir}JZsdk_Config/version_choose.h
#负载版本号
# 提取版本号的四个部分
payload_version_part1=${payload_version:1:2} # 截取第2和第3个字符
payload_version_part2=${payload_version:4:2} # 截取第5和第6个字符
payload_version_part3=${payload_version:7:2} # 截取第8和第9个字符
payload_version_part4=${payload_version:10:2} # 截取第11和第12个字符
version_text="#define MAJOR_VERSION 0x${payload_version_part1}"
echo $version_text
sed -i "19s/.*/$version_text/" ${Root_Dir}JZsdk_Config/version_choose.h
version_text="#define MINOR_VERSION 0x${payload_version_part2}"
echo $version_text
sed -i "20s/.*/$version_text/" ${Root_Dir}JZsdk_Config/version_choose.h
version_text="#define MODIFY_VERSION 0x${payload_version_part3}"
echo $version_text
sed -i "21s/.*/$version_text/" ${Root_Dir}JZsdk_Config/version_choose.h
version_text="#define DEBUG_VERSION 0x${payload_version_part4}"
echo $version_text
sed -i "22s/.*/$version_text/" ${Root_Dir}JZsdk_Config/version_choose.h
# # 修改json文件的版本号
# ## 获取旧版本号
# json_file_CN_cn="./Package/config/Configs/DJI_widget_file/cn/widget_file/cn_big_screen/widget_config.json"
# json_content_CN_cn=$(cat "$json_file_CN_cn")
# json_file_CN_en="./Package/config/Configs/DJI_widget_file/cn/widget_file/en_big_screen/widget_config.json"
# json_content_CN_en=$(cat "$json_file_CN_en")
# json_file_EN_cn="./Package/config/Configs/DJI_widget_file/en/widget_file/cn_big_screen/widget_config.json"
# json_content_EN_cn=$(cat "$json_file_EN_cn")
# json_file_EN_en="./Package/config/Configs/DJI_widget_file/en/widget_file/en_big_screen/widget_config.json"
# json_content_EN_en=$(cat "$json_file_EN_en")
# ## 提取原始版本号
# original_version_CN_cn=$(echo "$json_content_CN_cn" | grep -Po '(?<="版本号:)[\d.]+')
# echo "CN区cn原始版本号: $original_version_CN_cn"
# original_version_CN_en=$(echo "$json_content_CN_en" | grep -Po '(?<="version:)[\d.]+')
# echo "CN区en原始版本号: $original_version_CN_en"
# original_version_EN_cn=$(echo "$json_content_EN_cn" | grep -Po '(?<="版本号:)[\d.]+')
# echo "EN区cn原始版本号: $original_version_EN_cn"
# original_version_EN_en=$(echo "$json_content_EN_en" | grep -Po '(?<="version:)[\d.]+')
# echo "EN区en原始版本号: $original_version_EN_en"
# ## 定义新的版本号
# json_version=${payload_version:1:11} #
# echo "json新版本号:$json_version"
# ## 替换版本号
# updated_content_CN_cn="${json_content_CN_cn//$original_version_CN_cn/$json_version}"
# updated_content_CN_en="${json_content_CN_en//$original_version_CN_en/$json_version}"
# updated_content_EN_cn="${json_content_EN_cn//$original_version_EN_cn/$json_version}"
# updated_content_EN_en="${json_content_EN_en//$original_version_EN_en/$json_version}"
# ## 将更新后的内容写回 JSON 文件
# echo "$updated_content_CN_cn" > "$json_file_CN_cn"
# echo "$updated_content_CN_en" > "$json_file_CN_en"
# echo "$updated_content_EN_cn" > "$json_file_EN_cn"
# echo "$updated_content_EN_en" > "$json_file_EN_en"
# 修改version.h,是否需要加载海外tts模块
version_origin="#define FIRMWARE_ORIGIN ${payload_origin}"
sed -i "28s/.*/$version_origin/" ${Root_Dir}JZsdk_Config/version_choose.h
# 固件是否设置超时退出
version_outtimeset="#define CONNECTION_TIMED_OUT $payload_OutTimeSet"
echo $version_outtimeset
sed -i "37s/.*/$version_outtimeset/" ${Root_Dir}JZsdk_Config/version_choose.h
#打包诱骗升级包
# 拼接字符串得到更新包名字
# 国内版
if [ "${payload_origin}" == "DOMESTIC_VERSION" ]; then
BinName=$payload_name"_"$payload_version".bin"
# 海外版
elif [ "${payload_origin}" == "OVERSEAS_VERSION" ]; then
BinName=$replaced_payload_name"_"$payload_version".bin"
fi
TarPackage_second=UpgradePackage.tar.gz #二次解压包的名字
HardwareIdentification="HardwareIdeNum" #硬件码文件
MD5saveFile=UpdateMD5num #md5文件内部的md5值
#二次压缩包的打包
cd ShellPack
./shellpack.sh
cd ../
#一级压缩包的打包
mkdir Temp
mv $TarPackage_second ./Temp/ # 二级压缩包
# #硬件码 自行判断是否需要烧录
# cp SHellPack/$HardwareIdentification ./Temp
# #3.4添加恢复出厂文件
# cp ShellPack/FactoryReset.sh ./Temp
# 将升级步骤放进一级压缩包
cp ShellPack/updata.sh ./Temp
# psdk 1385更新up.sh
# cp ShellPack/up.sh ./Temp
#md5 校准
# 获取二级压缩包的md5值
cd Temp
md5_File="$(md5sum "$TarPackage_second" | cut -d ' ' -f 1)"
echo $md5_File
#把md5校准码写进去
echo $md5_File | tee $MD5saveFile > /dev/null #覆盖写
echo "_____打包一级压缩包_____"
tar -zcf $BinName *
mv $BinName ../
cd ../
rm -rf Temp
echo "_____输出一级压缩包目录_____"
#参数说明 t 查看内容 f 压缩包名字指定
tar -tf $BinName
... ...
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH
if [ "$PS1" ]; then
if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "`id -u`" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
echo "____ins_language_mod_____"
export LANG="C.UTF-8";
export LANGUAGE="C.UTF-8";
echo "____挂载数据缓冲区____"
mkswap /dev/mmcblk0p5
swapon /dev/mmcblk0p5
cat /proc/swaps
echo "____挂载sdcard用户区____"
mount -t vfat -o iocharset=utf8 /dev/mmcblk0p3 /root/sdcard;
echo "____安装驱动____"
cd /root/kofile/
#insmod libcomposite.ko
#insmod usb_f_mass_storage.ko
insmod g_mass_storage.ko file=/dev/mmcblk0p3 stall=0 removable=1
echo "____初始化文件夹____";
cd /root/
mkdir -p /root/sdcard/audio;
mkdir -p /root/sdcard/record;
mkdir -p /root/sdcard/Logs;
echo "____解除静音____"
amixer sset -c 0 'Headphone' 30% unmute
echo "____检查更新____";
chmod 777 up.sh;
./up.sh;
echo "_____启动开始语音_____";
chmod 777 H1start;
./H1start;
ehco "____It_Just_Work____"
while true; do
echo "____开启 程序___"
chmod 777 CheckConnect.sh
./CheckConnect.sh
echo "_____启动错误文件_____"
mount -o remount rw sdcard/
sync
echo "____错误处理____"
chmod 777 H1error;
./H1error;
done
\ No newline at end of file
... ...
#!/bin/bash
echo "仅启动串口程序"
chmod 777 JZ_UART_APP
./JZ_UART_APP -f 0
sync;
... ...
1
2
0
0
改动备注:2024/8所做
\ No newline at end of file
... ...
#!/bin/bash
TarPackage_second=UpgradePackage.tar.gz #二次解压包的名字
ProjectDir="../../../"
#获取更新脚本所在的文件夹名字
cd ..
dir_name=$(pwd)
echo "_____清除build文件夹内容_____"
cd ${ProjectDir}build
echo $(pwd)
rm -rf *
echo "_____cmake编译make目录_____"
cmake ..
echo "_____8核编译PSDK_____"
make -j8
echo "_____回到打包目录_____"
cd $dir_name
echo "_____删除上一个更新包内容_____"
# 如果存在psdk,删除
if [ -f ./Package/psdk/* ]; then
rm ./Package/psdk/*
fi
# 如果存在bin包,删除
if [ -f ./*.bin ]; then
rm *.bin
fi
# 如果存在二次压缩包,删除
if [ -f ./$TarPackage_second ]; then
rm $TarPackage_second
fi
echo "_____复制应用程序到psdk目录下_____"
#复制psdk程序,没有就退出脚本
if [ -f ${ProjectDir}build/JZ* ]; then
cp ${ProjectDir}build/JZ* ./Package/app/
else
echo "___没有串口程序,脚本退出____"
exit
fi
echo "_____使用gzip打包 应用程序 和 更新包内容_____"
#二次压缩包的打包
tar -zcf $TarPackage_second Package
echo "_____输出当前目录_____"
ls -la
echo "_____输出二次压缩包目录_____"
#参数说明 t 查看内容 f 压缩包名字指定
tar -tf $TarPackage_second
echo "___shellpack.sh执行完毕____";
\ No newline at end of file
... ...
#! /bin/bash
echo "updata.sh"
Update_PsdkPack="JZ*"
Update_Package="Package"
HardwareIdentification="HardwareIdeNum" #硬件码文件
TarPackage_second=UpgradePackage.tar.gz #二次解压包的名字
MD5saveFile=UpdateMD5num #md5文件内部的md5值文件
#得到二次解压包和md5校验文件
# 校验mp5 失败直接删除
# 获取文件的md5值
md5_File="$(md5sum "${TarPackage_second}" | cut -d ' ' -f 1)"
echo 文件的md5为:$md5_File
# 读取文件第一行并删除不可见字符
md5_save=$(sed '1s/[^[:print:]]//g' "$MD5saveFile")
echo 读取的md5为:$md5_save
# 比较md5值是否匹配
if [ "$md5_File" == "$md5_save" ]; then
echo "MD5 matches: $md5_File"
else
delete_updateFile; #删除更新文件
#mkdir /root/sdcard/MP5校验失败;
rm /root/sdcard/update_log.txt
echo "MP5校验失败" > /root/sdcard/update_log.txt
# 播报升级失败
./defeat;
exit;
fi
# 二次解压
tar -zxvf $TarPackage_second;
#标准更新
# 定义一个名为 HardwareNum 的数组
declare -a HardwareNum
echo "___识别更新用的序列号,判断该机器是否能够更新____"
# 补充添加
# 添加硬件区分
# 硬件版本号 4位
# ① 芯片型号
# ② 硬件大型改动
# ③ 硬件非通用改动
# ④ 通用改动
#1、读取硬件号
if [ ! -f /root/${HardwareIdentification} ]; then
echo "____硬件序列号不存在___"
else
# 逐行读取文件,将每一行内容保存到数组中
while read line; do
HardwareNum+=("$line")
done < /root/${HardwareIdentification}
# 打印数组的每个元素
for i in "${HardwareNum[@]}"; do
echo "$i"
done
fi
echo "____更新步骤____"
#1、更新app
mv /root/Package/app/sox /bin/ #将滤波器移动到bin目录
rm /usr/bin/ffmpeg
mv /root/Package/app/ffmpeg /bin/ #将滤波器移动到bin目录
mv /root/Package/app/* /root/ #如h1start h1error等报语音程序
#2、更新配置文件
cp /root/Package/config/Configs -r /root/ #将Configs文件夹移动到/root
#3、更新lib文件
mv /root/Package/lib/* /lib/ #更新lib文件
#4、更新psdk
mv /root/Package/psdk/* /root/ #更新psdk
#5、更新驱动文件kofile
mkdir /root/kofile
mv /root/Package/kofile/*.ko /root/kofile #更新ko驱动文件
#6、更新杂项
mv /root/Package/others/* /root/ #将others下的所有文件移动到root
tar xvf /root/espeak-data.tar #如果本地有海外版的压缩包 进行解压
rm /root/espeak-data.tar
#7、更新脚本文件
# 备注,由于脚本文件是执行一行行的格式 自身被覆盖不会导致出错
# 但是后续的执行后会被改变,所以即使updata.sh和up.sh被打开 也能执行mv
# 但是为了保证更新正常, up.sh的操作 最好只加不改
mv /root/Package/sh/*.sh /root/ #更新剩下的脚本
#8、更新启动文件
mv /root/Package/ProFile/profile /etc/profile #更新启动文件
mv /root/Package/ProFile/asound.conf /etc/asound.conf #更新语音配置
rm /usr/sbin/NetworkManager #删除linux上的网络管理工具
#9、删除原本的滤波记录文件
rm /root/wav_save_name
echo "____更新完成,删除文件____"
rm -rf /root/sdcard/$Update_PsdkPack #删除psdk更新包
rm -rf /root/$Update_Package #删除解压后的更新包
rm -rf /root/$TarPackage_second #删除二次更新包
rm -rf /root/$MD5saveFile; #删除md5校准文件
rm -rf /root/FactoryReset.sh
echo "___updata.sh____";
\ No newline at end of file
... ...
#1、输入设备名字,程序模式,硬件号,版本号
payload_name="JZ_U3S" #psdk名字
payload_mode="APP_UART" # APP_PSDK 或者 APP_UART APP_TEST
payload_platform="PLATFORM_V3S" #硬件平台
payload_version="V00.00.02.08" #版本号
payload_origin="DOMESTIC_VERSION" # 国内版DOMESTIC_VERSION 海外版OVERSEAS_VERSION
payload_special="SPECIAL_NORMAL" # 特殊固件注释
payload_OutTimeSet=VERSION_SWITCH_OFF # 超时注释
# 目前已有的特殊版本类型
# SPECIAL_NORMAL 普通版本
# SPECIAL_DAOTONG 道通版本
Root_Dir="../../../../../"
CmakeList_Dir="../../../CMakeLists.txt"
CmakeConfig_Dir="${Root_Dir}CmakeConfig/"
#将设备名字写入cmake
cmake_payload_name="set(DEVICE_NAME ${payload_name})"
sed -i "4s/.*/$cmake_payload_name/" ${CmakeConfig_Dir}Compiler.cmake
# #将工程名进cmake文件
# # 国内版
# if [ "${payload_origin}" == "DOMESTIC_VERSION" ]; then
# cmake_filtering="project(${payload_name}) "
# sed -i "3s/.*/$cmake_filtering/" $CmakeList_Dir
# # 海外版
# elif [ "${payload_origin}" == "OVERSEAS_VERSION" ]; then
# if [[ $payload_name == *"_"* ]]; then
# replaced_payload_name=${payload_name//_/-}
# echo "替换前的工程名: $payload_name"
# echo "替换后的工程名: $replaced_payload_name"
# cmake_filtering="project(${replaced_payload_name}) "
# sed -i "3s/.*/$cmake_filtering/" $CmakeList_Dir
# else
# echo "出错,这个名字不含_符号,请修改你的工程名"
# exit
# fi
# fi
#修改编译的名字
# 国内版
if [ "${payload_origin}" == "DOMESTIC_VERSION" ]; then
echo "国内版"
# 海外版
elif [ "${payload_origin}" == "OVERSEAS_VERSION" ]; then
if [[ $payload_name == *"_"* ]]; then
replaced_payload_name=${payload_name//_/-}
echo "替换前的工程名: $payload_name"
echo "替换后的工程名: $replaced_payload_name"
else
echo "出错,这个名字不含_符号,请修改你的工程名"
exit
fi
fi
#将固件特殊类型名写入version_choose.h
payload_special_text="#define SPECIAL_VERSION ${payload_special}"
sed -i "31s/.*/$payload_special_text/" ${Root_Dir}JZsdk_Config/version_choose.h
#3、将负载版本 负载模式 负载平台 负载版本号 写入version_choose.h
#负载版本
name_text="#define DEVICE_VERSION ${payload_name}"
echo $name_text
sed -i "10s/.*/$name_text/" ${Root_Dir}JZsdk_Config/version_choose.h
#负载模式
mode_text="#define APP_VERSION ${payload_mode}"
echo $mode_text
sed -i "13s/.*/$mode_text/" ${Root_Dir}JZsdk_Config/version_choose.h
#负载平台
platform_text="#define PLATFORM_VERSION ${payload_platform}"
echo $platform_text
sed -i "16s/.*/$platform_text/" ${Root_Dir}JZsdk_Config/version_choose.h
#负载版本号
# 提取版本号的四个部分
payload_version_part1=${payload_version:1:2} # 截取第2和第3个字符
payload_version_part2=${payload_version:4:2} # 截取第5和第6个字符
payload_version_part3=${payload_version:7:2} # 截取第8和第9个字符
payload_version_part4=${payload_version:10:2} # 截取第11和第12个字符
version_text="#define MAJOR_VERSION 0x${payload_version_part1}"
echo $version_text
sed -i "19s/.*/$version_text/" ${Root_Dir}JZsdk_Config/version_choose.h
version_text="#define MINOR_VERSION 0x${payload_version_part2}"
echo $version_text
sed -i "20s/.*/$version_text/" ${Root_Dir}JZsdk_Config/version_choose.h
version_text="#define MODIFY_VERSION 0x${payload_version_part3}"
echo $version_text
sed -i "21s/.*/$version_text/" ${Root_Dir}JZsdk_Config/version_choose.h
version_text="#define DEBUG_VERSION 0x${payload_version_part4}"
echo $version_text
sed -i "22s/.*/$version_text/" ${Root_Dir}JZsdk_Config/version_choose.h
# # 修改json文件的版本号
# ## 获取旧版本号
# json_file_CN_cn="./Package/config/Configs/DJI_widget_file/cn/widget_file/cn_big_screen/widget_config.json"
# json_content_CN_cn=$(cat "$json_file_CN_cn")
# json_file_CN_en="./Package/config/Configs/DJI_widget_file/cn/widget_file/en_big_screen/widget_config.json"
# json_content_CN_en=$(cat "$json_file_CN_en")
# json_file_EN_cn="./Package/config/Configs/DJI_widget_file/en/widget_file/cn_big_screen/widget_config.json"
# json_content_EN_cn=$(cat "$json_file_EN_cn")
# json_file_EN_en="./Package/config/Configs/DJI_widget_file/en/widget_file/en_big_screen/widget_config.json"
# json_content_EN_en=$(cat "$json_file_EN_en")
# ## 提取原始版本号
# original_version_CN_cn=$(echo "$json_content_CN_cn" | grep -Po '(?<="版本号:)[\d.]+')
# echo "CN区cn原始版本号: $original_version_CN_cn"
# original_version_CN_en=$(echo "$json_content_CN_en" | grep -Po '(?<="version:)[\d.]+')
# echo "CN区en原始版本号: $original_version_CN_en"
# original_version_EN_cn=$(echo "$json_content_EN_cn" | grep -Po '(?<="版本号:)[\d.]+')
# echo "EN区cn原始版本号: $original_version_EN_cn"
# original_version_EN_en=$(echo "$json_content_EN_en" | grep -Po '(?<="version:)[\d.]+')
# echo "EN区en原始版本号: $original_version_EN_en"
# ## 定义新的版本号
# json_version=${payload_version:1:11} #
# echo "json新版本号:$json_version"
# ## 替换版本号
# updated_content_CN_cn="${json_content_CN_cn//$original_version_CN_cn/$json_version}"
# updated_content_CN_en="${json_content_CN_en//$original_version_CN_en/$json_version}"
# updated_content_EN_cn="${json_content_EN_cn//$original_version_EN_cn/$json_version}"
# updated_content_EN_en="${json_content_EN_en//$original_version_EN_en/$json_version}"
# ## 将更新后的内容写回 JSON 文件
# echo "$updated_content_CN_cn" > "$json_file_CN_cn"
# echo "$updated_content_CN_en" > "$json_file_CN_en"
# echo "$updated_content_EN_cn" > "$json_file_EN_cn"
# echo "$updated_content_EN_en" > "$json_file_EN_en"
# 修改version.h,是否需要加载海外tts模块
version_origin="#define FIRMWARE_ORIGIN ${payload_origin}"
sed -i "28s/.*/$version_origin/" ${Root_Dir}JZsdk_Config/version_choose.h
# 固件是否设置超时退出
version_outtimeset="#define CONNECTION_TIMED_OUT $payload_OutTimeSet"
echo $version_outtimeset
sed -i "37s/.*/$version_outtimeset/" ${Root_Dir}JZsdk_Config/version_choose.h
#打包诱骗升级包
# 拼接字符串得到更新包名字
# 国内版
if [ "${payload_origin}" == "DOMESTIC_VERSION" ]; then
BinName=$payload_name"_"$payload_version".bin"
# 海外版
elif [ "${payload_origin}" == "OVERSEAS_VERSION" ]; then
BinName=$replaced_payload_name"_"$payload_version".bin"
fi
TarPackage_second=UpgradePackage.tar.gz #二次解压包的名字
HardwareIdentification="HardwareIdeNum" #硬件码文件
MD5saveFile=UpdateMD5num #md5文件内部的md5值
#二次压缩包的打包
cd ShellPack
./shellpack.sh
cd ../
#一级压缩包的打包
mkdir Temp
mv $TarPackage_second ./Temp/ # 二级压缩包
# #硬件码 自行判断是否需要烧录
# cp SHellPack/$HardwareIdentification ./Temp
# #3.4添加恢复出厂文件
# cp ShellPack/FactoryReset.sh ./Temp
# 将升级步骤放进一级压缩包
cp ShellPack/updata.sh ./Temp
# psdk 1385更新up.sh
# cp ShellPack/up.sh ./Temp
#md5 校准
# 获取二级压缩包的md5值
cd Temp
md5_File="$(md5sum "$TarPackage_second" | cut -d ' ' -f 1)"
echo $md5_File
#把md5校准码写进去
echo $md5_File | tee $MD5saveFile > /dev/null #覆盖写
echo "_____打包一级压缩包_____"
tar -zcf $BinName *
mv $BinName ../
cd ../
rm -rf Temp
echo "_____输出一级压缩包目录_____"
#参数说明 t 查看内容 f 压缩包名字指定
tar -tf $BinName
... ...
#!/bin/bash
# 进入Upgrade_Package文件夹
cd ../
# 获取Upgrade_Package文件夹下的所有文件夹(除了make_all文件夹)
folders=$(find ./* -maxdepth 0 -type d -not -name "make_all")
# 获取文件夹总数
total_folders=$(echo "$folders" | wc -l)
# 初始化计数器
count=1
# 遍历每个文件夹
for folder in $folders; do
echo "处理文件夹: $folder ($count/$total_folders)"
cd "$folder"
# 执行make_package.sh脚本
./make_package.sh
# 将生成的.bin文件复制到make_all文件夹内
cp *.bin ../make_all/
cd ..
# 更新计数器
count=$((count+1))
done
echo "打包已完成,一共打包了($count)个文件"
ls -la #显示当前文件夹内容
\ No newline at end of file
... ...
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <string.h>
#include "JZsdkLib.h"
#include "BaseConfig.h"
int main(int argc, char* argv[])
{
//设定本程序为 uart程序模式 还是 psdk程序模式
//前者可用于 uart连接对外接口 或者是 通过uart控制的psdk
//后者则是用于直接镶套在psdk程序里面
//参数解析
JZsdk_ParamterParsing(argc, argv);
//通过参数判断出进行什么提示程序操作
//如果是喊话器设备
#if MEGAPHONE_CONFIG_STATUS == VERSION_SWITCH_ON
//如果是 -e 程序错误 播放喊话器错误
//如果是 -s 程序成功 播放喊话器升级成功
//如果是 -f 程序失败 播放喊话器升级失败
#endif
while (1)
{
delayMs(1000);
}
}
// #include<stdio.h>
// #include<unistd.h>
// #include<string.h>
// #include<getopt.h>
// void print_usage()
// {
// printf("\nUsage:\n");
// printf("\t--name=student name\n");
// printf("\t-s, --sex=student sex\n"
// "\t\tif no usage ,sex is 0 means man\n\n");
// printf("\t-g, --grade=student in grade\n");
// printf("\t-c, --class=student in class\n");
// printf("\t-h, --help\n");
// }
// int main(int argc, char* argv[])
// {
// int opt, grade, class, sex = -1;
// char *name = NULL;
// struct option long_options[] = {
// {"name", required_argument, NULL, 'n'},
// {"sex", optional_argument, &sex, 's'},
// {"grade", optional_argument, NULL, 'g'},
// {"class", required_argument, NULL, 'c'},
// {"help", no_argument, NULL, 'H'},
// {0, 0, 0, 0}
// };
// printf("n:s::g::c:H\n");
// while ((opt = getopt_long(argc, argv, "n:s::g::c:H", long_options, NULL)) != -1) {
// printf ("\nopt:%c, optarg:%s, optind:%d, opterr:%d, optopt:%c, argv[optind]:%s\n",
// opt, optarg, optind, opterr, optopt, argv[optind-1]);
// switch (opt) {
// case 'n':
// name = optarg;
// printf("name:%s\n", name);
// break;
// case 's':
// printf("sex:%d\n", sex);
// if (sex == -1)sex = 0;
// //printf("sex:%d, %s", sex, sex > 0 ? "gilr":"mem");
// break;
// case 'g':
// if (!strcmp(argv[optind-1], "-g"))grade = 1;
// else
// grade = strtoul(optarg, NULL, 10);
// break;
// case 'c':
// class = strtoul(optarg, NULL, 10);
// break;
// case 'H':
// print_usage();
// return 0;
// default:
// print_usage();
// return -1;
// }
// }
// printf("A student info:\n"
// "name:%s\n"
// "sex:%s\n"
// "grade:%d\n"
// "class:%d\n",
// name, sex > 0 ? "gilr" : "men", grade, class)
// ;
// return 0;
// }
\ No newline at end of file
... ...
# This is the CMakeCache file.
# For build in directory: /mnt/hgfs/share/JZSDK_Linux/project_build/Only_Serial/build
# It was generated by CMake: /usr/local/bin/cmake
# You can edit this file to change values found and used by cmake.
# If you do not want to change any of the values, simply exit the editor.
# If you do want to change a value, simply edit, save, and exit the editor.
# The syntax for the file is as follows:
# KEY:TYPE=VALUE
# KEY is the name of a variable in the cache.
# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
# VALUE is the current value for the KEY.
########################
# EXTERNAL cache entries
########################
//Path to a program.
CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line
//Path to a program.
CMAKE_AR:FILEPATH=/usr/bin/ar
//Choose the type of build, options are: None Debug Release RelWithDebInfo
// MinSizeRel ...
CMAKE_BUILD_TYPE:STRING=
//Enable/Disable color output during build.
CMAKE_COLOR_MAKEFILE:BOOL=ON
//CXX compiler
CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++
//A wrapper around 'ar' adding the appropriate '--plugin' option
// for the GCC compiler
CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-5
//A wrapper around 'ranlib' adding the appropriate '--plugin' option
// for the GCC compiler
CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-5
//Flags used by the CXX compiler during all build types.
CMAKE_CXX_FLAGS:STRING=
//Flags used by the CXX compiler during DEBUG builds.
CMAKE_CXX_FLAGS_DEBUG:STRING=-g
//Flags used by the CXX compiler during MINSIZEREL builds.
CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
//Flags used by the CXX compiler during RELEASE builds.
CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
//Flags used by the CXX compiler during RELWITHDEBINFO builds.
CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
//C compiler
CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc
//A wrapper around 'ar' adding the appropriate '--plugin' option
// for the GCC compiler
CMAKE_C_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-5
//A wrapper around 'ranlib' adding the appropriate '--plugin' option
// for the GCC compiler
CMAKE_C_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-5
//Flags used by the C compiler during all build types.
CMAKE_C_FLAGS:STRING=
//Flags used by the C compiler during DEBUG builds.
CMAKE_C_FLAGS_DEBUG:STRING=-g
//Flags used by the C compiler during MINSIZEREL builds.
CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
//Flags used by the C compiler during RELEASE builds.
CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
//Flags used by the C compiler during RELWITHDEBINFO builds.
CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
//Path to a program.
CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
//Flags used by the linker during all build types.
CMAKE_EXE_LINKER_FLAGS:STRING=
//Flags used by the linker during DEBUG builds.
CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
//Flags used by the linker during MINSIZEREL builds.
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
//Flags used by the linker during RELEASE builds.
CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during RELWITHDEBINFO builds.
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
//Enable/Disable output of compile commands during generation.
CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=
//Value Computed by CMake.
CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/mnt/hgfs/share/JZSDK_Linux/project_build/Only_Serial/build/CMakeFiles/pkgRedirects
//Install path prefix, prepended onto install directories.
CMAKE_INSTALL_PREFIX:PATH=/usr/local
//Path to a program.
CMAKE_LINKER:FILEPATH=/usr/bin/ld
//Path to a program.
CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make
//Flags used by the linker during the creation of modules during
// all build types.
CMAKE_MODULE_LINKER_FLAGS:STRING=
//Flags used by the linker during the creation of modules during
// DEBUG builds.
CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
//Flags used by the linker during the creation of modules during
// MINSIZEREL builds.
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
//Flags used by the linker during the creation of modules during
// RELEASE builds.
CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during the creation of modules during
// RELWITHDEBINFO builds.
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
//Path to a program.
CMAKE_NM:FILEPATH=/usr/bin/nm
//Path to a program.
CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy
//Path to a program.
CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump
//Value Computed by CMake
CMAKE_PROJECT_DESCRIPTION:STATIC=
//Value Computed by CMake
CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
//Value Computed by CMake
CMAKE_PROJECT_NAME:STATIC=JZ_UART_APP
//Path to a program.
CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib
//Path to a program.
CMAKE_READELF:FILEPATH=/usr/bin/readelf
//Flags used by the linker during the creation of shared libraries
// during all build types.
CMAKE_SHARED_LINKER_FLAGS:STRING=
//Flags used by the linker during the creation of shared libraries
// during DEBUG builds.
CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
//Flags used by the linker during the creation of shared libraries
// during MINSIZEREL builds.
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
//Flags used by the linker during the creation of shared libraries
// during RELEASE builds.
CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during the creation of shared libraries
// during RELWITHDEBINFO builds.
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
//If set, runtime paths are not added when installing shared libraries,
// but are added when building.
CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
//If set, runtime paths are not added when using shared libraries.
CMAKE_SKIP_RPATH:BOOL=NO
//Flags used by the linker during the creation of static libraries
// during all build types.
CMAKE_STATIC_LINKER_FLAGS:STRING=
//Flags used by the linker during the creation of static libraries
// during DEBUG builds.
CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
//Flags used by the linker during the creation of static libraries
// during MINSIZEREL builds.
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
//Flags used by the linker during the creation of static libraries
// during RELEASE builds.
CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during the creation of static libraries
// during RELWITHDEBINFO builds.
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
//Path to a program.
CMAKE_STRIP:FILEPATH=/usr/bin/strip
//If this value is on, makefiles will be generated without the
// .SILENT directive, and all commands will be echoed to the console
// during the make. This is useful for debugging only. With Visual
// Studio IDE projects all commands are done without /nologo.
CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
//Value Computed by CMake
JZ_UART_APP_BINARY_DIR:STATIC=/mnt/hgfs/share/JZSDK_Linux/project_build/Only_Serial/build
//Value Computed by CMake
JZ_UART_APP_IS_TOP_LEVEL:STATIC=ON
//Value Computed by CMake
JZ_UART_APP_SOURCE_DIR:STATIC=/mnt/hgfs/share/JZSDK_Linux/project_build/Only_Serial
########################
# INTERNAL cache entries
########################
//ADVANCED property for variable: CMAKE_ADDR2LINE
CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_AR
CMAKE_AR-ADVANCED:INTERNAL=1
//This is the directory where this CMakeCache.txt was created
CMAKE_CACHEFILE_DIR:INTERNAL=/mnt/hgfs/share/JZSDK_Linux/project_build/Only_Serial/build
//Major version of cmake used to create the current loaded cache
CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
//Minor version of cmake used to create the current loaded cache
CMAKE_CACHE_MINOR_VERSION:INTERNAL=24
//Patch version of cmake used to create the current loaded cache
CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE
CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1
//Path to CMake executable.
CMAKE_COMMAND:INTERNAL=/usr/local/bin/cmake
//Path to cpack program executable.
CMAKE_CPACK_COMMAND:INTERNAL=/usr/local/bin/cpack
//Path to ctest program executable.
CMAKE_CTEST_COMMAND:INTERNAL=/usr/local/bin/ctest
//ADVANCED property for variable: CMAKE_CXX_COMPILER
CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR
CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB
CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS
CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG
CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL
CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_COMPILER
CMAKE_C_COMPILER-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_COMPILER_AR
CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS
CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_DLLTOOL
CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
//Executable file format
CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS
CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1
//Name of external makefile project generator.
CMAKE_EXTRA_GENERATOR:INTERNAL=
//Name of generator.
CMAKE_GENERATOR:INTERNAL=Unix Makefiles
//Generator instance identifier.
CMAKE_GENERATOR_INSTANCE:INTERNAL=
//Name of generator platform.
CMAKE_GENERATOR_PLATFORM:INTERNAL=
//Name of generator toolset.
CMAKE_GENERATOR_TOOLSET:INTERNAL=
//Source directory with the top level CMakeLists.txt file for this
// project
CMAKE_HOME_DIRECTORY:INTERNAL=/mnt/hgfs/share/JZSDK_Linux/project_build/Only_Serial
//Install .so files without execute permission.
CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1
//ADVANCED property for variable: CMAKE_LINKER
CMAKE_LINKER-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MAKE_PROGRAM
CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_NM
CMAKE_NM-ADVANCED:INTERNAL=1
//number of local generators
CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
//ADVANCED property for variable: CMAKE_OBJCOPY
CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_OBJDUMP
CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
//Platform information initialized
CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
//ADVANCED property for variable: CMAKE_RANLIB
CMAKE_RANLIB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_READELF
CMAKE_READELF-ADVANCED:INTERNAL=1
//Path to CMake installation.
CMAKE_ROOT:INTERNAL=/usr/local/share/cmake-3.24
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SKIP_RPATH
CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STRIP
CMAKE_STRIP-ADVANCED:INTERNAL=1
//uname command
CMAKE_UNAME:INTERNAL=/bin/uname
//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
//linker supports push/pop state
_CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE
... ...
set(CMAKE_C_COMPILER "/usr/bin/cc")
set(CMAKE_C_COMPILER_ARG1 "")
set(CMAKE_C_COMPILER_ID "GNU")
set(CMAKE_C_COMPILER_VERSION "5.4.0")
set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
set(CMAKE_C_COMPILER_WRAPPER "")
set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON")
set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
set(CMAKE_C17_COMPILE_FEATURES "")
set(CMAKE_C23_COMPILE_FEATURES "")
set(CMAKE_C_PLATFORM_ID "Linux")
set(CMAKE_C_SIMULATE_ID "")
set(CMAKE_C_COMPILER_FRONTEND_VARIANT "")
set(CMAKE_C_SIMULATE_VERSION "")
set(CMAKE_AR "/usr/bin/ar")
set(CMAKE_C_COMPILER_AR "/usr/bin/gcc-ar-5")
set(CMAKE_RANLIB "/usr/bin/ranlib")
set(CMAKE_C_COMPILER_RANLIB "/usr/bin/gcc-ranlib-5")
set(CMAKE_LINKER "/usr/bin/ld")
set(CMAKE_MT "")
set(CMAKE_COMPILER_IS_GNUCC 1)
set(CMAKE_C_COMPILER_LOADED 1)
set(CMAKE_C_COMPILER_WORKS TRUE)
set(CMAKE_C_ABI_COMPILED TRUE)
set(CMAKE_C_COMPILER_ENV_VAR "CC")
set(CMAKE_C_COMPILER_ID_RUN 1)
set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
set(CMAKE_C_LINKER_PREFERENCE 10)
# Save compiler ABI information.
set(CMAKE_C_SIZEOF_DATA_PTR "8")
set(CMAKE_C_COMPILER_ABI "ELF")
set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN")
set(CMAKE_C_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
if(CMAKE_C_SIZEOF_DATA_PTR)
set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
endif()
if(CMAKE_C_COMPILER_ABI)
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
endif()
if(CMAKE_C_LIBRARY_ARCHITECTURE)
set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
endif()
set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
endif()
set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/5/include;/usr/local/include;/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed;/usr/include/x86_64-linux-gnu;/usr/include")
set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "gcc;gcc_s;c;gcc;gcc_s")
set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/5;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib")
set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
... ...
set(CMAKE_CXX_COMPILER "/usr/bin/c++")
set(CMAKE_CXX_COMPILER_ARG1 "")
set(CMAKE_CXX_COMPILER_ID "GNU")
set(CMAKE_CXX_COMPILER_VERSION "5.4.0")
set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "")
set(CMAKE_CXX_COMPILER_WRAPPER "")
set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "98")
set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON")
set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17")
set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters")
set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates")
set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates")
set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17")
set(CMAKE_CXX20_COMPILE_FEATURES "")
set(CMAKE_CXX23_COMPILE_FEATURES "")
set(CMAKE_CXX_PLATFORM_ID "Linux")
set(CMAKE_CXX_SIMULATE_ID "")
set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "")
set(CMAKE_CXX_SIMULATE_VERSION "")
set(CMAKE_AR "/usr/bin/ar")
set(CMAKE_CXX_COMPILER_AR "/usr/bin/gcc-ar-5")
set(CMAKE_RANLIB "/usr/bin/ranlib")
set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/gcc-ranlib-5")
set(CMAKE_LINKER "/usr/bin/ld")
set(CMAKE_MT "")
set(CMAKE_COMPILER_IS_GNUCXX 1)
set(CMAKE_CXX_COMPILER_LOADED 1)
set(CMAKE_CXX_COMPILER_WORKS TRUE)
set(CMAKE_CXX_ABI_COMPILED TRUE)
set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
set(CMAKE_CXX_COMPILER_ID_RUN 1)
set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm)
set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
foreach (lang C OBJC OBJCXX)
if (CMAKE_${lang}_COMPILER_ID_RUN)
foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS)
list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension})
endforeach()
endif()
endforeach()
set(CMAKE_CXX_LINKER_PREFERENCE 30)
set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
# Save compiler ABI information.
set(CMAKE_CXX_SIZEOF_DATA_PTR "8")
set(CMAKE_CXX_COMPILER_ABI "ELF")
set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN")
set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
if(CMAKE_CXX_SIZEOF_DATA_PTR)
set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
endif()
if(CMAKE_CXX_COMPILER_ABI)
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
endif()
if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
endif()
set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "")
if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX)
set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}")
endif()
set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include/c++/5;/usr/include/x86_64-linux-gnu/c++/5;/usr/include/c++/5/backward;/usr/lib/gcc/x86_64-linux-gnu/5/include;/usr/local/include;/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed;/usr/include/x86_64-linux-gnu;/usr/include")
set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;gcc_s;gcc;c;gcc_s;gcc")
set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/5;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib")
set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
... ...
set(CMAKE_HOST_SYSTEM "Linux-4.15.0-142-generic")
set(CMAKE_HOST_SYSTEM_NAME "Linux")
set(CMAKE_HOST_SYSTEM_VERSION "4.15.0-142-generic")
set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
set(CMAKE_SYSTEM "Linux-4.15.0-142-generic")
set(CMAKE_SYSTEM_NAME "Linux")
set(CMAKE_SYSTEM_VERSION "4.15.0-142-generic")
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
set(CMAKE_CROSSCOMPILING "FALSE")
set(CMAKE_SYSTEM_LOADED 1)
... ...