作者 潘浩彬

合并分支 'dev_00.00.02.17' 到 'dev'

Dev 00.00.02.17



查看合并请求 !21
正在显示 44 个修改的文件 包含 1488 行增加2437 行删除

要显示太多修改。

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

... ... @@ -7,6 +7,7 @@ linux_kernel
project_build/AUTEL_道通PSDK
project_build/GDU_普宙PSDK
project_build/ZY_珠海紫燕PSDK
project_build/Only_Serial/*
!project_build/Only_Serial/application
... ...
... ... @@ -133,7 +133,10 @@
"hal_uart.h": "c",
"jzsdkbase.h": "c",
"dji_logger.h": "c",
"dji_platform.h": "c"
"dji_platform.h": "c",
"util_misc.h": "c",
"jzsdk_smt_code.h": "c",
"volume.h": "c"
},
"Codegeex.GenerationPreference": "automatic",
"C_Cpp.dimInactiveRegions": false
... ...
# 编译链的配置
#1、编译链与设备类型的选择
set(DEVICE_NAME JZ_H10)
set(DEVICE_NAME JZ_H150T)
#上一行为禁止修改行
message("**************************JZSDK构建编译开始***************************\n")
... ...
... ... @@ -54,17 +54,18 @@ int Main_Device_Wheather_Use()
return 1;
}
// //如果是国外版,判断是否在国内 //以后再单独领出一个模块
if (FIRMWARE_ORIGIN == OVERSEAS_VERSION)
{
#if APP_VERSION == APP_PSDK
//如果处于中国境内
if (Subscription_WhetherInChina() == 1)
{
return 2;
}
#endif
}
//该功能已移除
// // //如果是国外版,判断是否在国内 //以后再单独领出一个模块
// if (FIRMWARE_ORIGIN == OVERSEAS_VERSION)
// {
// #if APP_VERSION == APP_PSDK
// //如果处于中国境内
// if (Subscription_WhetherInChina() == 1)
// {
// return 2;
// }
// #endif
// }
return 0;
}
... ... @@ -328,7 +329,7 @@ T_JZsdkReturnCode Main_APP_Psdk()
//hal加载
JZsdk_Hal_Init();
JZSDK_LOG_INFO("%x,PsdkVersion%x.%x.%x.%x\n",DEVICE_VERSION,MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION);
JZSDK_LOG_INFO("%x,PsdkVersion%d.%d.%d.%d\n",DEVICE_VERSION,MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION);
//通用模块初始化
CommonMod_Init();
... ... @@ -370,7 +371,7 @@ int Main_APP_Uart()
JZsdk_Hal_Init();
JZSDK_LOG_INFO("0x%x,UartVersion%x.%x.%x.%x\n",DEVICE_VERSION,MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION);
JZSDK_LOG_INFO("0x%x,UartVersion%d.%d.%d.%d\n",DEVICE_VERSION,MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION);
//通用模块
CommonMod_Init();
... ...
... ... @@ -1260,7 +1260,7 @@ T_JZsdkReturnCode JZC1_Init(int mode)
}
//初始化IRC_funtion模块
ret = IRC_ParamInit(JZ_C1_IRC_HEIGHT, JZ_C1_IRC_WIDTH, 25);
ret = IRC_ParamInit(JZ_C1_IRC_HEIGHT, JZ_C1_IRC_WIDTH, 25, IRC_DEAL_MODE_KT);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("初始化红外的数据处理失败");
... ...
// #include "JZsdkLib.h"
// #include "BaseConfig.h"
// #include <pthread.h>
// #include <math.h>
// #include "IRCUT/ircut.h"
// #include "MediaProc/IRC_funtion/SatIrcLibProc/Sat_Irc.h"
// #ifdef RTK_MPP_STATUS_ON
// #include "MediaProc/MultProc/RTK_mmp/RTK_mmp.h"
// #include "MediaProc/MultProc/RTK_mmp/Dec/RTK_mmp_dec.h"
// #include "MediaProc/MultProc/RTK_mmp/Enc/RTK_mmp_enc.h"
// #include "MediaProc/Camera/Camera.h"
// #ifdef RTK_RGA_STATUS_ON
// #include "MediaProc/RgaProc/RK_Rga/RK_Rga.h"
// #endif
// #include "MediaProc/MediaProc.h"
// #include "UI_control/UI_control.h"
// #include "CommonMod/PowerManger/PowerManger.h"
// typedef struct ST_RgaInfo
// {
// //源图像
// RK_RgaImage *src_img;
// //裁剪图像
// RK_RgaImage *corp_img;
// //目标图像
// RK_RgaImage *dst_img;
// //放大倍数
// int scale;
// }ST_RgaInfo;
// typedef struct T_JZST_info
// {
// /*************************************************************/
// //红外相机的编码器信息
// T_rtk_mmp_enc_info *IRC_enc_info;
// //红外相机的rga信息
// ST_RgaInfo *IRC_rga_info;
// /*************************************************************/
// //光学相机的解码器信息
// T_rtk_mmp_dec_info *Opt_dec_info;
// //光学相机的编码器信息
// T_rtk_mmp_enc_info *Opt_enc_info;
// //光学相机的相机信息
// JZsdk_CameraInfo *Opt_Camera_info;
// //光学相机的rga信息
// ST_RgaInfo *Opt_rga_info;
// /*************************************************************/
// //融合相机的编码器信息
// T_rtk_mmp_enc_info *Fuse_enc_info;
// }T_JZST_info;
// #define JZ__IRC_WIDTH 320
// #define JZ__IRC_HEIGHT 256
// #define JZ__IRC_FRAMERATE 25
// #define JZ__IRC_INDEX VIDEOMGMT_STREAMING_FLOW_INDEX_FIRST
// #define JZ__IRC_BPS 4000000
// static T_JZST_info g_JZST_info;
// T_JZsdkReturnCode JZST_SetNextFrame_IDR(unsigned int index)
// {
// if (index == JZ__IRC_INDEX)
// {
// RTK_mmp_enc_SetNextFrame_IDR(g_JZST_info.IRC_enc_info);
// }
// // else if (index == JZ_C1_OPT_INDEX)
// // {
// // RTK_mmp_enc_SetNextFrame_IDR(g_JZC1_info.Opt_enc_info);
// // }
// // else if (index == JZ_C1_FUSE_INDEX)
// // {
// // RTK_mmp_enc_SetNextFrame_IDR(g_JZC1_info.Fuse_enc_info);
// // }
// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
// }
// //数据推送函数
// static T_JZsdkReturnCode JZST_PushFrame(int CameraIndex, unsigned char* data, unsigned int data_len)
// {
// int currentIndex = VideoMgmt_GetVideoStreamFlowIndexNum(); //获取当前视频流索引
// //无视频流
// if (currentIndex == 0)
// {
// //不推送视频
// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
// }
// //红外相机
// if (currentIndex == JZ__IRC_INDEX && CameraIndex == JZ__IRC_INDEX)
// {
// //推送数据到流转模块
// VideoMgmt_Single_FrameIn(data, data_len);
// }
// // //光学相机
// // if(CameraIndex == JZ_C1_OPT_INDEX && currentIndex == JZ_C1_OPT_INDEX)
// // {
// // //推送数据到流转模块
// // VideoMgmt_Single_FrameIn(data, data_len);
// // }
// // //组合视频流
// // if (currentIndex == JZ_C1_FUSE_INDEX && CameraIndex == JZ_C1_FUSE_INDEX)
// // {
// // //推送数据到流转模块
// // VideoMgmt_Single_FrameIn(data, data_len);
// // }
// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
// }
// static T_JZsdkReturnCode rgb32_to_yuv420sp(uint8_t *rgb32, uint8_t *yuv420sp, int width, int height)
// {
// int frame_size = width * height;
// uint8_t *y_plane = yuv420sp; // Y分量
// uint8_t *uv_plane = yuv420sp + frame_size; // UV交错分量(NV12)
// for (int y = 0; y < height; y++) {
// for (int x = 0; x < width; x++) {
// // 假设RGB32内存布局为[B,G,R,A](小端序常见)
// int idx = (y * width + x) * 4;
// uint8_t B = rgb32[idx];
// uint8_t G = rgb32[idx + 1];
// uint8_t R = rgb32[idx + 2];
// // uint8_t A = rgb32[idx + 3]; // Alpha通道忽略
// // 计算YUV(BT.601标准)
// int Y = 0.257 * R + 0.504 * G + 0.098 * B + 16;
// int U = -0.148 * R - 0.291 * G + 0.439 * B + 128;
// int V = 0.439 * R - 0.368 * G - 0.071 * B + 128;
// // 写入Y分量
// y_plane[y * width + x] = (uint8_t)fmin(fmax(Y, 0), 255);
// // 仅偶数行和偶数列采样UV分量(420下采样)
// if (y % 2 == 0 && x % 2 == 0) {
// int uv_idx = (y / 2) * (width / 2) + (x / 2);
// uv_plane[uv_idx * 2] = (uint8_t)fmin(fmax(U, 0), 255); // U
// uv_plane[uv_idx * 2 + 1] = (uint8_t)fmin(fmax(V, 0), 255); // V
// }
// }
// }
// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
// }
// static void *JZ__ircDataThread(void *args)
// {
// #ifdef SATIRC_LIB_STATUS_ON
// U8_t *buf = NULL;
// int PixelNum = JZ__IRC_WIDTH * JZ__IRC_HEIGHT;
// buf = (U8_t *)malloc(JZ__IRC_WIDTH * JZ__IRC_HEIGHT * 4);
// U8_t *yuv420sp = (U8_t *)malloc(320 * 256 * 3 / 2);
// int test_i = 0;
// int color = 0;
// while (1)
// {
// //每25张更换一次颜色
// if (test_i % 25 == 0)
// {
// color++;
// if (color == 12)
// {
// color = 0;
// }
// SatIrc_SetColorPalette(color); //可以测0~11
// }
// //获取红外数据
// memset(buf, 0, JZ__IRC_WIDTH * JZ__IRC_HEIGHT * 4);
// SatIrc_GetIRImage(buf, PixelNum);
// //将红外数据转换为yuv
// memset(yuv420sp, 0, 320 * 256 * 3 / 2);
// rgb32_to_yuv420sp(buf, yuv420sp, JZ__IRC_WIDTH, JZ__IRC_HEIGHT);
// //将红外数据送去编码器
// unsigned char *h264Data = NULL;
// unsigned int h264DataLen = 0;
// MppPacket Packet = NULL;
// //进行编码
// RTK_mmp_enc_data_to_h264(g_JZST_info.IRC_enc_info, yuv420sp, 320 * 256 * 3 / 2, &Packet);
// h264DataLen = mpp_packet_get_length(Packet);
// h264Data = (unsigned char *)mpp_packet_get_pos(Packet);
// //释放掉packet
// mpp_packet_deinit(&Packet);
// //将h264数据推送
// JZST_PushFrame(1, h264Data, h264DataLen);
// delayMs(1000/JZ__IRC_FRAMERATE);
// }
// #endif // #ifdef SATIRC_LIB_STATUS_ON
// }
// static T_JZsdkReturnCode JZ__IrcCameraInit()
// {
// T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
// //初始化红外参数
// ret = IRC_ParamInit(JZ__IRC_HEIGHT, JZ__IRC_WIDTH, JZ__IRC_FRAMERATE, IRC_DEAL_MODE_SAT);
// if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
// {
// JZSDK_LOG_ERROR("红外参数初始化失败!");
// return ret;
// }
// //初始化红外相机
// T_JZsdkReturnCode = SatIrc_init();
// if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
// {
// JZSDK_LOG_ERROR("红外相机初始化失败!");
// return ret;
// }
// //初始化接收相机数据的线程
// T_JZsdkOsalHandler *osal_handle = JZsdk_Platform_GetOsalHandler();
// T_JZTaskHandle JZ__ircDataTask = NULL;
// osal_handle->TaskCreate("JZ__ircDataThread", JZ__ircDataThread, 8192, NULL, JZ__ircDataTask);
// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
// }
// T_JZsdkReturnCode JZ__Init(int mode)
// {
// //网口初始化
// if (mode == APP_UART)
// {
// //网口初始化
// JZsdk_NetWork_Init();
// }
// T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
// #ifdef RTK_MPP_STATUS_ON
// //初始化相机流管理器
// T_JZsdkVideoMgmtHandler VideoMgmtHandler = {
// .SetNextFrame_IDR = JZST_SetNextFrame_IDR,
// };
// VideoMgmt_Init(VideoMgmtHandler);
// //初始化红外的编码器
// g_JZST_info.IRC_enc_info = (T_rtk_mmp_dec_info *)malloc(sizeof(T_rtk_mmp_dec_info));
// //配置参数
// g_JZST_info.IRC_enc_info->Input_fmt = MPP_FMT_YUV420SP;
// g_JZST_info.IRC_enc_info->encType = MPP_VIDEO_CodingAVC;
// g_JZST_info.IRC_enc_info->width = JZ__IRC_WIDTH;
// g_JZST_info.IRC_enc_info->height = JZ__IRC_HEIGHT;
// g_JZST_info.IRC_enc_info->FrameNum = JZ__IRC_FRAMERATE;
// g_JZST_info.IRC_enc_info->IDR_gop = 5;
// g_JZST_info.IRC_enc_info->bps_target = JZ__IRC_BPS;
// g_JZST_info.IRC_enc_info->hor_stride = JZ_ALIGN(g_JZST_info.IRC_enc_info->width, 16);
// g_JZST_info.IRC_enc_info->ver_stride = JZ_ALIGN(g_JZST_info.IRC_enc_info->height, 16);
// //初始化编码器
// RTK_mmp_enc_init(g_JZST_info.IRC_enc_info);
// //初始化红外相机
// ret = JZ__IrcCameraInit();
// if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
// {
// JZSDK_LOG_ERROR("红外相机初始化失败!");
// }
// //设置默认推送红外摄像头
// VideoMgmt_VideoStreamFlowIndex(JZ__IRC_INDEX);
// return ret;
// #endif
// }
\ No newline at end of file
... ...
... ... @@ -7,7 +7,7 @@
#define VERSION_CHOOSE_H
#include "JZsdk_Base/JZsdk_Code/JZsdk_DeviceCode.h"
//1~10行 除了D可以修改版本选择 禁止动任何东西
#define DEVICE_VERSION JZ_H10
#define DEVICE_VERSION JZ_H150T
//禁止修改行 选择是串口程序 还是 psdk程序
#define APP_VERSION APP_PSDK
... ... @@ -16,15 +16,15 @@
#define PLATFORM_VERSION PLATFORM_H3
//禁止修改行 串口连接程序的软件版本号
#define MAJOR_VERSION 0x01
#define MINOR_VERSION 0x03
#define MODIFY_VERSION 0x11
#define DEBUG_VERSION 0x00
#define MAJOR_VERSION 01
#define MINOR_VERSION 03
#define MODIFY_VERSION 11
#define DEBUG_VERSION 01
//禁止修改行 滤波方式
//禁止修改行 滤波方式 该项目目前已被移除
#define FILTERING_TYPE HIGH_PASS_FILTERING
//禁止修改行固件属地 目前 国内版/海外版
//禁止修改行固件属地 目前 国内版/海外版, 该选项目前已被移除
#define FIRMWARE_ORIGIN DOMESTIC_VERSION
//禁止修改行指定特殊固件
... ... @@ -33,7 +33,7 @@
//禁止修改行 全志编解码库
#define ALLWINNER_CEDAR VERSION_SWITCH_OFF
//禁止修改行 是否开启连接超时
//禁止修改行 是否开启连接超时, 该项目目前已被移除
#define CONNECTION_TIMED_OUT VERSION_SWITCH_OFF
//这个开关可以方便日常代码编写的跳转功能
... ... @@ -125,6 +125,9 @@
//默认开启ktlib
#define KTIRC_LIB_STATUS_ON
//默认开启satlib
#define SATIRC_LIB_STATUS_ON
//默认开启光源模块
#define LIGHTING_STATUS_ON
#endif
... ...
... ... @@ -1260,7 +1260,7 @@ static T_JZsdkReturnCode RecvDeal_SetVolume(int Port, char *getbuf)
JZSDK_LOG_INFO("%s,调节音量:%d",JZsdk_DefineCode_GetPortName(Port),value);
UIcontrol_SetVolume(Port, value);
UIcontrol_SetVolume(Port, value, JZ_FLAGCODE_ON);
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
... ... @@ -1442,7 +1442,7 @@ static T_JZsdkReturnCode RecvDeal_CheckStatus_SoftwareVersion(int Port, char *ge
MinjorVersion = MINOR_VERSION;
modifyVersion = MODIFY_VERSION;
debugVersion = DEBUG_VERSION;
JZSDK_LOG_INFO("当前的软件版本号为:%2x, %2x, %2x, %2x",majorVersion, MinjorVersion, modifyVersion, debugVersion);
JZSDK_LOG_INFO("当前的软件版本号为:%2d, %2d, %2d, %2d",majorVersion, MinjorVersion, modifyVersion, debugVersion);
//2、发送版本号
HalSend_type1Send_Reply_SoftVersion(Port, FrameSequence, majorVersion, MinjorVersion, modifyVersion, debugVersion);
... ... @@ -4578,6 +4578,17 @@ static T_JZsdkReturnCode RecvDeal_SetSpecialParameters(int Port, char *getbuf)
}
break;
//0x03设置喊话器默认语言
case 0x03:
{
ret = LanguageInfo_Write_LanguageInfo((E_LanguageInfo)value);
if(ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("特参三失败");
}
}
break;
default:
ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
break;
... ...
... ... @@ -23,34 +23,40 @@ T_JZsdkReturnCode Stream_Player_decode(struct AudioDealInfo *AD_Info, AVCodecCon
T_JZsdkReturnCode File_Stream_deal_Init(enum AVCodecID id)
{
//注册包
pkt = av_packet_alloc();
if(!pkt)
{
JZSDK_LOG_ERROR("av_packet_alloc failed.");
}
//寻找解码器
codec = avcodec_find_decoder(id);
if (!codec) {
JZSDK_LOG_ERROR("Codec not found\n");
}
//获得裸流的解析器
parser = av_parser_init(codec->id);
if (!parser) {
JZSDK_LOG_ERROR("Parser not found\n");
}
//分配解码上下文
cdc_ctx = avcodec_alloc_context3(codec);
if (!cdc_ctx) {
JZSDK_LOG_ERROR("Could not allocate audio codec context\n");
}
/* open it */
//将解码器和解码上下文绑定
if (avcodec_open2(cdc_ctx, codec, NULL) < 0)
{
JZSDK_LOG_ERROR("Could not open codec\n");
}
JZSDK_LOG_INFO("File_Stream_deal_Init success");
JZSDK_LOG_INFO("file stream init complete");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//输入mp3的实时数据,以及本次数据的长度
... ... @@ -116,6 +122,8 @@ T_JZsdkReturnCode mp3_Stream_Interface_Mp3Data(struct AudioDealInfo *AD_Info, un
}
}
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -151,7 +159,7 @@ T_JZsdkReturnCode Stream_Player_decode(struct AudioDealInfo *AD_Info, AVCodecCon
//输出帧不可用 、 输出帧 已用完
if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
{
continue;;
continue;
}
else if (ret < 0)
{
... ...
... ... @@ -57,6 +57,8 @@ extern "C" {
equalizer=f=8000:t=q:w=2.0:g=+2, \
equalizer=f=16000:t=q:w=2.0:g=+2"
#define FILTER_FORMAL_3_TTS "equalizer=f=31:t=q:w=2.0:g=-48, \
equalizer=f=62:t=q:w=2.0:g=-36, \
equalizer=f=125:t=q:w=2.0:g=-30, \
... ... @@ -68,6 +70,36 @@ extern "C" {
equalizer=f=8000:t=q:w=2.0:g=+2, \
equalizer=f=16000:t=q:w=2.0:g=+2"
#define FILTER_FORMAL_4_AUDIO "equalizer=f=31:t=q:w=2.0:g=-48, \
equalizer=f=62:t=q:w=2.0:g=-36, \
equalizer=f=125:t=q:w=2.0:g=-30, \
equalizer=f=250:t=q:w=2.0:g=-26, \
equalizer=f=500:t=q:w=2.0:g=-20, \
equalizer=f=1000:t=q:w=2.0:g=-12, \
equalizer=f=2000:t=q:w=2.0:g=-8, \
equalizer=f=4000:t=q:w=2.0:g=+0, \
equalizer=f=8000:t=q:w=2.0:g=+0, \
equalizer=f=16000:t=q:w=2.0:g=+0, \
compand=attacks=0:decays=0.3:points=-60/-60|-30/-20|-20/-15|-10/-10|0/-5:gain=5, \
lowpass=f=6000:width_type=q:w=1.8, \
highpass=f=80:width_type=q:w=1.2, \
volume=0.98"
#define FILTER_FORMAL_4_TTS "equalizer=f=31:t=q:w=2.0:g=-48, \
equalizer=f=62:t=q:w=2.0:g=-36, \
equalizer=f=125:t=q:w=2.0:g=-30, \
equalizer=f=250:t=q:w=2.0:g=-26, \
equalizer=f=500:t=q:w=2.0:g=-20, \
equalizer=f=1000:t=q:w=2.0:g=-12, \
equalizer=f=2000:t=q:w=2.0:g=-8, \
equalizer=f=4000:t=q:w=2.0:g=+0, \
equalizer=f=8000:t=q:w=2.0:g=+0, \
equalizer=f=16000:t=q:w=2.0:g=+0, \
compand=attacks=0:decays=0.3:points=-60/-60|-30/-20|-20/-15|-10/-10|0/-5:gain=5, \
lowpass=f=6000:width_type=q:w=1.8, \
highpass=f=80:width_type=q:w=1.2, \
volume=0.98"
#define FILTER_FORMAL_1_M30_TTS "equalizer=f=31:t=q:w=2.0:g=-48, \
equalizer=f=62:t=q:w=2.0:g=-36, \
equalizer=f=125:t=q:w=2.0:g=-30, \
... ... @@ -109,6 +141,7 @@ extern "C" {
anequalizer=c0 f=3700 w=1400 g=-24 t=0|c1 f=3700 w=1400 g=-24 t=0"
/*00 35
02 37
05 39
... ... @@ -151,10 +184,10 @@ typedef enum FilterList{
}FilterList;
//普通音频滤波参数
#define FILTER_PARAM_NORMAL_AUDIO FILTER_FORMAL_3_AUDIO
#define FILTER_PARAM_NORMAL_AUDIO FILTER_FORMAL_4_AUDIO
//普通TTS滤波参数
#define FILTER_PARAM_NORMAL_TTS FILTER_FORMAL_3_TTS
#define FILTER_PARAM_NORMAL_TTS FILTER_FORMAL_4_TTS
//h10t的滤波器跟其他的不一样,所以单独定义
... ...
... ... @@ -13,6 +13,9 @@
static struct T_DeviceInfo g_DeviceInfo[6]; //最多6台设备组成为一台机
int g_DeviceInfoNum = 0; //设备总数
static T_JZsdkReturnCode DeviceMessage_PrintDeviceInfo();
/***************************************************
*
* 设备信息初始化
... ... @@ -24,6 +27,9 @@ T_JZsdkReturnCode DeviceInfo_Init()
//硬件版本号初始化
HardwareInfo_Init();
//语言信息初始化
LanguageInfo_Init();
//序列号模块初始化
SerialMAT_Init();
... ... @@ -44,6 +50,9 @@ T_JZsdkReturnCode DeviceInfo_Init()
//设置设备信息 版本号
DeviceInfo_IncreaseVersion(DEVICE_VERSION, MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION);
//设备信息自打印
//DeviceMessage_PrintDeviceInfo();
JZSDK_LOG_INFO("MODULE_DEVICE_INFO_INIT_COMPLETE");
}
... ... @@ -138,7 +147,7 @@ T_JZsdkReturnCode DeviceInfo_IncreaseVersion(int DeviceID, unsigned int MajorVer
g_DeviceInfo[i].ModifyVersion = ModifyVersion;
g_DeviceInfo[i].DebugVersion = DebugVersion;
JZSDK_LOG_INFO("增加设备0x%x 版本号成功 %x.%x.%x.%x", DeviceID,g_DeviceInfo[i].MajorVersion,g_DeviceInfo[i].MinjorVersion,g_DeviceInfo[i].ModifyVersion,g_DeviceInfo[i].DebugVersion);
JZSDK_LOG_INFO("增加设备0x%x 版本号成功 %d.%d.%d.%d", DeviceID,g_DeviceInfo[i].MajorVersion,g_DeviceInfo[i].MinjorVersion,g_DeviceInfo[i].ModifyVersion,g_DeviceInfo[i].DebugVersion);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -186,3 +195,39 @@ int DeviceInfo_IsExist(int DeviceID)
return JZ_FLAGCODE_OFF;
}
static void *DeviceMessge_Printf(void *arg)
{
unsigned char message[256];
while (1)
{
memset(message,0,sizeof(message));
DeviceMessage_Mode(DEVICE_MESSAGE_DEBUG);
DeviceMessage_GetMessage(message, sizeof(message));
JZSDK_LOG_INFO("%s", message);
delayS(10);
}
}
/**********************
*
* 设备信息自打印
*
*
* *******************/
static T_JZsdkReturnCode DeviceMessage_PrintDeviceInfo()
{
T_JZsdkOsalHandler *OsalHandler = JZsdk_Platform_GetOsalHandler();
if (OsalHandler == NULL)
{
JZSDK_LOG_ERROR("获取OsalHandler失败");
}
static T_JZTaskHandle s_DeviceInfoThread = NULL;
OsalHandler->TaskCreate("DeviceMessge_Printf", DeviceMessge_Printf, 8192,NULL, &s_DeviceInfoThread);
}
\ No newline at end of file
... ...
... ... @@ -14,6 +14,7 @@
#include "SerialNumberProc/SerialProc.h"
#include "DeviceInfo/HardwareInfo/HardwareInfo.h"
#include "DeviceInfo/Attribute/Attribute.h"
#include "LanguageInfo/LanguageInfo.h"
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
... ...
#include "JZsdkLib.h"
#include "LanguageInfo.h"
#define LANGUAGE_INFO_FILE_NAME "/root/LanguageInfo.txt"
static E_LanguageInfo g_LanguageInfo = LANGUAGE_INFO_CHINESE;
static T_JZsdkFileHandle g_LanguageInfoFileHandle = NULL;
static T_JZsdkReturnCode LanguageInfo_Read_LanguageInfo();
T_JZsdkReturnCode LanguageInfo_Init()
{
//读取本地的语言信息
LanguageInfo_Read_LanguageInfo();
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/**************
*
* 写入本地的语言信息
*
*
* ************/
T_JZsdkReturnCode LanguageInfo_Write_LanguageInfo(E_LanguageInfo language)
{
T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
T_JZsdkFSHandler *fileSystemHandler = NULL;
T_JZsdkFileHandle fileHandle = NULL;
// 1. 检查语言值合法性
if (language != LANGUAGE_INFO_CHINESE &&
language != LANGUAGE_INFO_ENGLISH)
{
JZSDK_LOG_ERROR("Invalid language value: %d", language);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
g_LanguageInfo = language;
JZSDK_LOG_INFO("Language set to %d", language);
// 2. 获取文件系统操作句柄
fileSystemHandler = JZsdk_GetFsHandler();
if (!fileSystemHandler) {
JZSDK_LOG_ERROR("No FS handler");
return ret;
}
// 3. 打开文件(如果不存在则创建,存在则清空内容)
ret = fileSystemHandler->FileOpen(LANGUAGE_INFO_FILE_NAME, FS_READ_AND_WRITE_CLEAR, &fileHandle);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
JZSDK_LOG_ERROR("Open failed: %d", ret);
goto cleanup;
}
// 4. 将语言值转换为字符写入(例如 0 -> '0',1 -> '1')
U8_t writeData = (U8_t)('0' + g_LanguageInfo); // 确保转换为 ASCII 字符
U32_t writeLen = 1; // 只写入 1 字节
U32_t realLen = 1;
ret = fileSystemHandler->FileWrite_U8(
fileHandle,
&writeData,
writeLen,
&realLen
);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
JZSDK_LOG_ERROR("Write failed: %d", ret);
goto cleanup;
}
// 5. 强制刷盘
ret = fileSystemHandler->FileSync(fileHandle);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
JZSDK_LOG_ERROR("Flush failed: %d", ret);
goto cleanup;
}
ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; // 标记成功
cleanup:
// 6. 关闭文件句柄
if (fileHandle) {
fileSystemHandler->FileClose(fileHandle);
}
return ret;
}
/**************
*
* 读取本地的语言信息
*
*
* ************/
static T_JZsdkReturnCode LanguageInfo_Read_LanguageInfo()
{
T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
if (g_LanguageInfoFileHandle != NULL) {
JZSDK_LOG_ERROR("Handle already open");
return ret;
}
T_JZsdkFSHandler *fileSystemHandler = JZsdk_GetFsHandler();
if (!fileSystemHandler) {
JZSDK_LOG_ERROR("No FS handler");
return ret;
}
U8_t buf[32];
U32_t readLen = 0;
ret = fileSystemHandler->FileOpen(LANGUAGE_INFO_FILE_NAME, FS_ONLY_READ, &g_LanguageInfoFileHandle);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
JZSDK_LOG_ERROR("Open failed: %d", ret);
goto cleanup;
}
ret = fileSystemHandler->FileRead_U8(g_LanguageInfoFileHandle, buf, sizeof(buf), &readLen);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
JZSDK_LOG_ERROR("Read failed: %d", ret);
goto cleanup;
}
// 解析内容到 g_LanguageInfo
int num = buf[0];
g_LanguageInfo = (E_LanguageInfo)(num - '0');
JZSDK_LOG_INFO("LanguageInfo: %d", g_LanguageInfo);
cleanup:
if (g_LanguageInfoFileHandle) {
fileSystemHandler->FileClose(g_LanguageInfoFileHandle);
g_LanguageInfoFileHandle = NULL;
}
return ret;
}
/*******************
*
* 获取语言信息
*
* ***********************/
E_LanguageInfo LanguageInfo_Get_LanguageInfo()
{
//获取程序的语言版本
return g_LanguageInfo;
}
... ...
/**
********************************************************************
* @file LanguageInfo.h
* LanguageInfo.h 的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef LANGUAGE_INFO_H
#define LANGUAGE_INFO_H
/* Includes ------------------------------------------------------------------*/
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
typedef enum E_LanguageInfo{
LANGUAGE_INFO_CHINESE = 0,
LANGUAGE_INFO_ENGLISH = 1,
}E_LanguageInfo;
/* Exported functions --------------------------------------------------------*/
E_LanguageInfo LanguageInfo_Get_LanguageInfo();
T_JZsdkReturnCode LanguageInfo_Write_LanguageInfo(E_LanguageInfo language);
T_JZsdkReturnCode LanguageInfo_Init();
#ifdef __cplusplus
}
#endif
#endif
... ...
... ... @@ -7,6 +7,7 @@
#include "DeviceInfo/SerialNumberProc/SerialProc.h"
#include "JZsdk_Base/JZsdk_Code/JZsdk_SMT_Code.h"
#include "./FirewareOriginMAT.h"
#include "DeviceInfo/DeviceInfo.h"
static int g_OriginRegionNum = ORIGIN_DEFAULT;
... ... @@ -18,14 +19,17 @@ static int g_OriginRegionNum = ORIGIN_DEFAULT;
* *******************/
T_JZsdkReturnCode FOMAT_FirewareOriginRegion_Init(int SerialType, unsigned char *SerialNumber, unsigned int SerialNumberLen)
{
//读取语言文件
E_LanguageInfo LanguageInfo = LanguageInfo_Get_LanguageInfo();
//没有定义过的序列号,或是没有序列号
if (SerialType == UNDEFINED_SNM || SerialType == STANDARD_DJI_SNM)
{
if (FIRMWARE_ORIGIN == DOMESTIC_VERSION)
if (LanguageInfo == LANGUAGE_INFO_CHINESE)
{
g_OriginRegionNum = ORIGIN_CN;
}
else if (FIRMWARE_ORIGIN == OVERSEAS_VERSION)
else if (LanguageInfo == LANGUAGE_INFO_ENGLISH)
{
g_OriginRegionNum = ORIGIN_EN;
}
... ... @@ -40,11 +44,11 @@ T_JZsdkReturnCode FOMAT_FirewareOriginRegion_Init(int SerialType, unsigned char
//旧类型的
if (SerialType == STANDARD_JZ_1_SNM)
{
if (FIRMWARE_ORIGIN == DOMESTIC_VERSION)
if (LanguageInfo == LANGUAGE_INFO_CHINESE)
{
g_OriginRegionNum = ORIGIN_CN;
}
else if (FIRMWARE_ORIGIN == OVERSEAS_VERSION)
else if (LanguageInfo == LANGUAGE_INFO_ENGLISH)
{
g_OriginRegionNum = ORIGIN_EN;
}
... ... @@ -92,11 +96,11 @@ T_JZsdkReturnCode FOMAT_FirewareOriginRegion_Init(int SerialType, unsigned char
}
//无匹配序列号
if (FIRMWARE_ORIGIN == DOMESTIC_VERSION)
if (LanguageInfo == LANGUAGE_INFO_CHINESE)
{
g_OriginRegionNum = ORIGIN_CN;
}
else if (FIRMWARE_ORIGIN == OVERSEAS_VERSION)
else if (LanguageInfo == LANGUAGE_INFO_ENGLISH)
{
g_OriginRegionNum = ORIGIN_EN;
}
... ...
... ... @@ -15,12 +15,13 @@
#define IRC_DEALMODE_JZSDK 0
#define IRC_DEALMODE_KTLIB 1
#define IRC_DEALMODE_SAT 2
int g_temp_GasValueMax = 160;
int g_temp_GasValueMin = 30;
struct IRC_param *g_IRC_Param = NULL;
static T_JZsdkReturnCode IRC_param_Init(struct IRC_param **index, int height, int width, int frameRate);
static T_JZsdkReturnCode IRC_param_Init(struct IRC_param **index, int height, int width, int frameRate, IRC_DealMode dealMode);
static int lastSPCMode = -1; //0低温数据 1手动打档 2自动打档
static int lastTPCMode = -1;
... ... @@ -34,11 +35,11 @@ static FILE *temp_fp = NULL;
备注:
*/
T_JZsdkReturnCode IRC_ParamInit(int height, int width, int frameRate)
T_JZsdkReturnCode IRC_ParamInit(int height, int width, int frameRate, IRC_DealMode dealMode)
{
T_JZsdkReturnCode ret;
ret = IRC_param_Init(&g_IRC_Param, height, width, frameRate);
ret = IRC_param_Init(&g_IRC_Param, height, width, frameRate, dealMode);
if (g_IRC_Param->DealWay == IRC_DEALMODE_KTLIB)
{
... ... @@ -47,11 +48,13 @@ T_JZsdkReturnCode IRC_ParamInit(int height, int width, int frameRate)
#endif
}
// temp_fp = fopen("IRC_temp.raw", "w");
// if (temp_fp == NULL)
// {
// JZSDK_LOG_ERROR("IRC_temp.raw文件打开失败");
// }
else if (g_IRC_Param->DealWay == IRC_DEALMODE_SAT)
{
#ifdef SATIRC_LIB_STATUS_ON
#endif
}
return ret;
}
... ... @@ -1302,7 +1305,7 @@ T_JZsdkReturnCode Proc_IRC_param(int flagcode, enum JZsdk_Widget_Control paramfl
*
*
* ************************************************************************************************/
static T_JZsdkReturnCode IRC_param_Init(struct IRC_param **index, int height, int width, int frameRate)
static T_JZsdkReturnCode IRC_param_Init(struct IRC_param **index, int height, int width, int frameRate, IRC_DealMode dealMode)
{
T_JZsdkReturnCode ret;
... ... @@ -1316,7 +1319,7 @@ static T_JZsdkReturnCode IRC_param_Init(struct IRC_param **index, int height, in
}
//IrcDealCfg->DealWay = IRC_DEALMODE_JZSDK;
IrcDealCfg->DealWay = IRC_DEALMODE_KTLIB;
IrcDealCfg->DealWay = dealMode;
//我们自己库要水平翻转
if (IrcDealCfg->DealWay == IRC_DEALMODE_JZSDK)
... ...
... ... @@ -23,10 +23,15 @@ extern "C" {
/* Exported types ----------------------------- -------------------------------*/
typedef enum IRC_DealMode{
IRC_DEAL_MODE_JZ = 0,
IRC_DEAL_MODE_KT = 1,
IRC_DEAL_MODE_SAT = 2,
}IRC_DealMode;
/* Exported functions --------------------------------------------------------*/
T_JZsdkReturnCode IRC_ParamInit(int height, int width, int frameRate);
T_JZsdkReturnCode IRC_ParamInit(int height, int width, int frameRate, IRC_DealMode dealMode);
T_JZsdkReturnCode IRC_FrameDeal(U16_t *rawData ,unsigned int dataSize, unsigned char **outData, unsigned int *outDataSize);
T_JZsdkReturnCode IRC_SetRawPixel_ResetFlag();
... ...
#include "JZsdkLib.h"
#include "BaseConfig.h"
#ifdef SATIRC_LIB_STATUS_ON
#include "satir_module.h"
#include "Sat_Irc.h"
TSatIR_Module irModule; // 实例化对象
T_JZsdkReturnCode SatIrc_init()
{
int ret = irModule.openIRCamera();
if (ret != 0)
{
JZSDK_LOG_ERROR("打开红外相机失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//获取红外图像的分辨率
int width = irModule.getIRWidth();
int height = irModule.getIRHeight();
JZSDK_LOG_INFO("获取到红外图像的分辨率为:宽:%d,高:%d", width, height);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
T_JZsdkReturnCode SatIrc_SetColorPalette(int color)
{
irModule.setColorPalette((TSatIR_Module::ColorPalette)color);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/********************
*
* 打档
* 1内参考
* 2外参考
*
* *****************/
T_JZsdkReturnCode SatIrc_DoShutter(int type)
{
irModule.doShutter(type);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*************
*
*
* 获取rgb图像
*
*
* ************/
T_JZsdkReturnCode SatIrc_GetIRImage(U8_t *image, int PixelNum)
{
std::vector<uint8_t> outGray8;
std::vector<uint32_t> outRGBImage;
// 调用获取红外帧的函数
irModule.getIRFrame(outGray8, outRGBImage);
// 检查获取的数据是否有效
if (outRGBImage.empty() || outRGBImage.size() < PixelNum)
{
JZSDK_LOG_ERROR("获取红外图像失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
// 直接将32位RGB数据拷贝到输出缓冲区
// 每个像素占4字节(R|G|B|A或R|G|B|X,具体格式取决于SDK)
memcpy(image, outRGBImage.data(), PixelNum * sizeof(uint32_t));
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
#endif // SATIRC_LIB_STATUS_ON
\ No newline at end of file
... ...
/* ********************************************************************
*
*
*
***********************************************/
#ifndef SAT_IRC_H
#define SAT_IRC_H
#include "JZsdkLib.h"
#ifdef __cplusplus
extern "C" {
#endif
T_JZsdkReturnCode SatIrc_init();
T_JZsdkReturnCode SatIrc_SetColorPalette(int color);
T_JZsdkReturnCode SatIrc_GetIRImage(U8_t *image, int PixelNum);
#ifdef __cplusplus
}
#endif
#endif
... ...
... ... @@ -18,9 +18,9 @@ T_JZsdkReturnCode Start_voice()
}
else
{
//根据属地设置默认语言
int OriginValue = FOMAT_Get_FirewareOriginRegion();
if (OriginValue == ORIGIN_DEFAULT || OriginValue == ORIGIN_CN)
//根据语言信息设置语言
E_LanguageInfo LanguageInfo = LanguageInfo_Get_LanguageInfo();
if (LanguageInfo == LANGUAGE_INFO_CHINESE)
{
int language = 0x01;
Megaphone_TTS_param(JZ_FLAGCODE_SET, MEGAPHONE_TTS_TONE, &language);
... ... @@ -51,8 +51,8 @@ T_JZsdkReturnCode Start_up_and_broadcast_voice()
if (APP_VERSION == APP_PSDK)
{
//根据属地设置默认语言
int OriginValue = FOMAT_Get_FirewareOriginRegion();
if (OriginValue == ORIGIN_DEFAULT || OriginValue == ORIGIN_CN)
E_LanguageInfo LanguageInfo = LanguageInfo_Get_LanguageInfo();
if (LanguageInfo == LANGUAGE_INFO_CHINESE)
{
int language = 0x01;
Megaphone_TTS_param(JZ_FLAGCODE_SET, MEGAPHONE_TTS_TONE, &language);
... ... @@ -93,8 +93,8 @@ T_JZsdkReturnCode Start_up_and_broadcast_voice()
{
//根据属地设置默认语言
int OriginValue = FOMAT_Get_FirewareOriginRegion();
if (OriginValue == ORIGIN_DEFAULT || OriginValue == ORIGIN_CN)
E_LanguageInfo LanguageInfo = LanguageInfo_Get_LanguageInfo();
if (LanguageInfo == LANGUAGE_INFO_CHINESE)
{
int language = 0x01;
Megaphone_TTS_param(JZ_FLAGCODE_SET, MEGAPHONE_TTS_TONE, &language);
... ... @@ -129,12 +129,10 @@ T_JZsdkReturnCode AttentionVoice_IndependencePlay()
delayMs(100);
//根据属地设置默认语言
//根据语言信息设置默认语言
int language = 0;
int OriginValue = FOMAT_Get_FirewareOriginRegion();
//如果是国内版或者无属地 设置为中文
if (OriginValue == ORIGIN_DEFAULT || OriginValue == ORIGIN_CN)
E_LanguageInfo LanguageInfo = LanguageInfo_Get_LanguageInfo();
if (LanguageInfo == LANGUAGE_INFO_CHINESE)
{
language = 0x01;
Megaphone_TTS_param(JZ_FLAGCODE_SET, MEGAPHONE_TTS_TONE, &language);
... ...
... ... @@ -12,7 +12,8 @@
#include "JZsdkLib.h"
#include "BaseConfig.h"
#include "Megaphone/Megaphone.h"
#include "Megaphone/VolumeLimit.h"
#include "Megaphone/Volume/VolumeLimit.h"
#include "Megaphone/Volume/volume.h"
#define C_TIME 10
#define MAX_TIME 240
... ... @@ -119,11 +120,11 @@ static T_JZsdkReturnCode MegTempRead_ImitateTem(int *fd)
{
if (status == 0x20)
{
PlayVolume = RealVolume * 92 /100;
PlayVolume = RealVolume * MAX_TTS_VOLUME /100;
}
else
{
PlayVolume = RealVolume * 82/100;
PlayVolume = RealVolume * MAX_VOLUME/100;
}
}
... ... @@ -356,9 +357,11 @@ static void *MegTempControl_task(void *arg)
{
//JZSDK_LOG_DEBUG("温控调整了温度");
Meg_SetVolumeFun(BalanceVolume);
//修改音量
Megaphone_SetSystemVolume(BalanceVolume);
Megaphone_PrintVolume(BalanceVolume, 1);
//修改ui
Meg_TempControlVolumeUi(BalanceVolume);
}
OldBalanceVolume = BalanceVolume;
... ...
... ... @@ -17,7 +17,6 @@
#include "JZsdk_Hal.h"
#include "Megaphone/MegTempControl/MegTempControl.h"
#include "./VolumeLimit.h"
#include "../AudioDeal/AudioDeal.h"
#include "./TTS/Megaphone_TTS.h"
#include "./TTS/cnTTS/cnTTS.h"
... ... @@ -33,9 +32,6 @@
int MegPlayStatusUnChange_flag = JZ_FLAGCODE_OFF;
static MegaphonePlayStatus g_Megaphone_Play_Status = AUDIO_PLAY_STATUS_IDLE;
static int g_Megaphone_Volume = 30;
static int g_Megaphone_RealTargetVolume = 30; //喊话器的实际目标音量
static int g_Megaphone_RealSetVolue = 30; //喊话器的实际音量
static int g_Megaphone_Loop = JZ_FLAGCODE_OFF; //循环播放
static int g_Megaphone_LoopInterval = 1000; //循环播放间隔 单位ms
... ... @@ -47,11 +43,7 @@ int MegaphoneStatusFlag = JZ_FLAGCODE_OFF; //撌脩
struct MegaphoneInfo *g_MegaphoneInfo = NULL; //喊话器数据结构体
static T_JZsdkReturnCode Megaphone_ConvertPlayStatus(int status);
T_JZsdkReturnCode Megaphone_SetVolume(int value, int mode);//设置音量,音量0-100,默认音量value==10。
static int g_TTS_Max_volume = 0; //用于存储tts最大音量限制
static int g_Max_volume = 0; //用于存储最大音量限制
static double PowerSimulation = 0; //用于模拟喊话器功率状态
/**********************
*
... ... @@ -141,6 +133,8 @@ T_JZsdkReturnCode Megaphone_MegDataGenFinshFlag(int order, int Flag)
return MegDataGenFinsh_Flag;
}
//JZSDK_LOG_DEBUG("设置数据生产完成标志位:0x%d",Flag);
MegDataGenFinsh_Flag = Flag;
return MegDataGenFinsh_Flag;
... ... @@ -891,90 +885,7 @@ T_JZsdkReturnCode Megaphone_Amplifier_param(int flagcode, int *value)
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
/*********************
*
* 最大音量加载
*
* ***********************/
static T_JZsdkReturnCode Megaphone_MaxVolume_Init()
{
g_Max_volume = MAX_VOLUME;
g_TTS_Max_volume = MAX_TTS_VOLUME;
if (DEVICE_VERSION == JZ_H1T)
{
//检索版本号
if (HardwareInfo_GetVersion(0) == 0x01
&& HardwareInfo_GetVersion(1) == 0x02
&& HardwareInfo_GetVersion(2) == 0x00
&& HardwareInfo_GetVersion(3) == 0x00
)
{
g_Max_volume = 72;
g_TTS_Max_volume = 81;
}
}
JZSDK_LOG_INFO("MaxV:%d MaxTTS_V:%d",g_Max_volume, g_TTS_Max_volume);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
static void *JZsdk_PowerSimulationThread(void *args)
{
T_JZsdkOsalHandler *OsalHandle = JZsdk_Platform_GetOsalHandler();
while(1)
{
//获取当前播放状态
int play_status = Megaphone_GetMegaphoneStatus();
//生产一个随机数
U16_t randomNum;
OsalHandle->GetRandomNum(&randomNum); // 获取 0~65535 的随机数
// 转换为 [0.5, 1.2) 范围
double normalized = 0.5 + ((double)randomNum / 65535.0) * 0.7;
//获取音量百分比
int volume = g_Megaphone_Volume;
double _volume = (double)volume / 100;
if (_volume < 0.1)
{
_volume = 0.1;
}
if (play_status == AUDIO_PLAY_STATUS_IDLE)
{
PowerSimulation = 25 * 0.1 * normalized;
}
else
{
PowerSimulation = 25* _volume * normalized;
}
//printf("PowerSimulation:%0.1f\n",PowerSimulation);
OsalHandle->TaskSleepMs(1000);
}
}
//获取模拟功率
double JZsdk_GetMagaphonePowerSimulation()
{
return PowerSimulation;
}
static T_JZsdkReturnCode PowerSimulation_Init()
{
T_JZsdkOsalHandler *OsalHandle = JZsdk_Platform_GetOsalHandler();
T_JZTaskHandle single_task = NULL;
OsalHandle->TaskCreate("PowerSimulation", JZsdk_PowerSimulationThread, 8192, NULL , &single_task);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*********
*
... ... @@ -991,8 +902,8 @@ T_JZsdkReturnCode Megaphone_Init()
JZsdk_Malloc((void **)&g_MegaphoneInfo, sizeof(struct MegaphoneInfo));
//最大音量初始化
Megaphone_MaxVolume_Init();
//音量初始化
Megaphone_Volume_Init();
//TTS功能初始化
Megaphone_TTS_Init();
... ... @@ -1003,15 +914,12 @@ T_JZsdkReturnCode Megaphone_Init()
//pcm列表初始化
Megaphone_PcmFile_Init();
//设置音量
Megaphone_SetVolume(30, 0);
//温控初始化
MegTempControl_Init();
//根据属地设置默认语言
int OriginValue = FOMAT_Get_FirewareOriginRegion();
if (OriginValue == ORIGIN_DEFAULT || OriginValue == ORIGIN_CN)
//根据语言信息设置默认语言
E_LanguageInfo LanguageInfo = LanguageInfo_Get_LanguageInfo();
if (LanguageInfo == LANGUAGE_INFO_CHINESE)
{
int language = 0x01;
Megaphone_TTS_param(JZ_FLAGCODE_SET, MEGAPHONE_TTS_TONE, &language);
... ... @@ -1044,7 +952,7 @@ T_JZsdkReturnCode Megaphone_param(int flagcode, enum MegaphoneParam paramflag, i
{
case MEGAPHONE_VOLUME:
{
*value = g_Megaphone_Volume;
*value = Megaphone_GetUiVolume();
}
break;
... ... @@ -1088,7 +996,7 @@ T_JZsdkReturnCode Megaphone_param(int flagcode, enum MegaphoneParam paramflag, i
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
Megaphone_PrintVolume(*value, 0);
Megaphone_SetVolume(*value, 0);
}
break;
... ... @@ -1174,8 +1082,14 @@ T_JZsdkReturnCode Megaphone_PlayContinue()
int ami =JZ_FLAGCODE_ON;
Megaphone_Amplifier_param(JZ_FLAGCODE_SET, &ami);
//查看播放状态是否不处于停止
if (g_Megaphone_Play_Status == AUDIO_PLAY_STATUS_IDLE)
//如果正处于播放音频,则恢复播放
if (g_Megaphone_Play_Status == AUDIO_PLAY_STATUS_MUSIC)
{
AudioDeal_PauseAndContinuePlay(JZ_FLAGCODE_OFF);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//如果正处于其他播放状态,则改为播放当前音频
else
{
//播放当前音频
unsigned char CurrentName[128];
... ... @@ -1184,16 +1098,7 @@ T_JZsdkReturnCode Megaphone_PlayContinue()
unsigned int CurrentNum = 0;
AudioMange_Get_FilePlayName(CurrentName, &CurrentNameLen, &CurrentNum);
UIcontrol_PlayAudioFile(NO_SPECIFIED ,CurrentName, CurrentNameLen);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
else if (g_Megaphone_Play_Status == AUDIO_PLAY_STATUS_MUSIC)
{
AudioDeal_PauseAndContinuePlay(JZ_FLAGCODE_OFF);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
else
{
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
}
... ... @@ -1318,285 +1223,6 @@ T_JZsdkReturnCode Megaphone_GetMusicListMessage(unsigned char *message)
/****************************************************************************************************************************************************
*
* 音量调节
*
****************************************************************************************************************************************************/
int now_volume=20;//默认音量10--》50+10/2==55
static void *Meg_SetVolumeTask(void *arg);
static T_JZsdkReturnCode Megaphone_SetTTSvolume();
/*********************
*
* mode == 0 正常调音量
* mode == 1 tts调音量
*
* ************************/
T_JZsdkReturnCode Megaphone_SetVolume(int value, int mode)//设置音量,音量0-100,默认音量value==10。
{
pthread_t SET_volume_task;
pthread_attr_t task_attribute; //线程属性
pthread_attr_init(&task_attribute); //初始化线程属性
pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程属性
printf("传入的值:%d\n",value);
if (mode == 1)
{
return Megaphone_SetTTSvolume();
}
now_volume=value;//获取当前音量
//v3s自设系统 要提高10初始音量
if (DEVICE_VERSION == JZ_H10T || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
if (value > 0)
{
value = 20 + value * 10/8;
}
}
if(value<=0)
{
value=0;
}
else if(value>0&&value<100)
{
value=value*g_Max_volume/100 *255/100;
}
else if(value>=100)
{
value=100*g_Max_volume/100 *255/100;
}
int* set_volume_value_ptr = malloc(sizeof(int)); // 动态分配内存
if (set_volume_value_ptr == NULL)
{
JZSDK_LOG_ERROR("设置音量失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
*set_volume_value_ptr = value;
int volume_ret = pthread_create(&SET_volume_task,&task_attribute,Meg_SetVolumeTask,set_volume_value_ptr); //TTS线程
if(volume_ret != 0)
{
JZSDK_LOG_ERROR("设置音量失败");
free(set_volume_value_ptr);
set_volume_value_ptr = NULL;
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
}
static T_JZsdkReturnCode Megaphone_SetTTSvolume()
{
pthread_t SET_volume_task;
pthread_attr_t task_attribute; //线程属性
pthread_attr_init(&task_attribute); //初始化线程属性
pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程属性
int value = now_volume;
printf("TTS音量修改\n");
//v3s自设系统 要提高10初始音量
if (DEVICE_VERSION == JZ_H10T || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
if (value > 0)
{
value = 20 + value * 10/8;
}
}
if(value<=0)
{
value=0;
}
else if(value>0&&value<100)
{
value=value*g_TTS_Max_volume/100 *255/100;
}
else if(value>=100)
{
value=100*g_TTS_Max_volume/100 *255/100;
}
int* set_volume_value_ptr = malloc(sizeof(int)); // 动态分配内存
if (set_volume_value_ptr == NULL)
{
JZSDK_LOG_ERROR("设置音量失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
*set_volume_value_ptr = value;
int volume_ret = pthread_create(&SET_volume_task,&task_attribute,Meg_SetVolumeTask,set_volume_value_ptr); //TTS线程
if(volume_ret != 0)
{
JZSDK_LOG_ERROR("设置音量失败");
free(set_volume_value_ptr);
set_volume_value_ptr = NULL;
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
}
T_JZsdkReturnCode Meg_SetVolumeFun(int volume)
{
char cmdBuffer[128];
if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T || DEVICE_VERSION == JZ_H10)
{
snprintf(cmdBuffer,128, "amixer set -c 4 Master %d",volume);
}
else if (DEVICE_VERSION == JZ_H1E || DEVICE_VERSION == JZ_H1T || DEVICE_VERSION == TF_A1)
{
snprintf(cmdBuffer,128, "amixer set -c 0 Master %d",volume);
}
else if (DEVICE_VERSION == JZ_H10T || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
snprintf(cmdBuffer,128, "amixer sset -c 0 'Headphone' %d unmute",volume);
}
g_Megaphone_RealSetVolue = volume;
JZsdk_RunSystemCmd(cmdBuffer);
printf("线程设置音量为:%d\n",volume);
}
static void *Meg_SetVolumeTask(void *arg)
{
int *volume_value = (int*)arg;
g_Megaphone_RealTargetVolume = *volume_value; //记录一下实际设置的声音大小
Meg_SetVolumeFun(*volume_value);
free(volume_value);
}
/***
*
*
* 获取当前音量值
*
* ***/
int Megaphone_get_now_volume()
{
return now_volume;
}
/***
*
*
* 获取实际设置音量值
*
* ***/
int Megaphone_get_RealSetVolume()
{
return g_Megaphone_RealSetVolue;
}
/***
*
*
* 获取实际目标音量值
*
* ***/
int Megaphone_get_RealTargetVolume()
{
return g_Megaphone_RealTargetVolume;
}
/***
*
* 显示音量函数 范围0~100
* 如果通过设置ui的音量 则flag = 0
* 如果是温控调整音量,则flag = 1
* ***/
T_JZsdkReturnCode Megaphone_PrintVolume(int Value, int flag)
{
//正常设置音量
if (flag == 0)
{
g_Megaphone_Volume = Value;
Megaphone_SetVolume(g_Megaphone_Volume, 0);
}
//温控调整音量
if (flag == 1)
{
//根据调整量反应到ui界面上
//分为文本和歌曲
int PlayStatus = Megaphone_GetMegaphoneStatus();
int Ui_num = 0;
int HundredMarkNum = 0;
#if DEVICE_VERSION == JZ_H1T
HundredMarkNum = (Value * 100 /255);
#else
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
#endif
//如果是文本
if (PlayStatus == 0x20)
{
//计算出ui值
Ui_num = HundredMarkNum * 100 / g_TTS_Max_volume;
}
else
{
//计算出ui值
Ui_num = HundredMarkNum * 100 / g_Max_volume;
}
if (g_Megaphone_Volume > Ui_num)
{
g_Megaphone_Volume--;
}
else if (g_Megaphone_Volume < Ui_num)
{
g_Megaphone_Volume++;
}
else
{
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//修改ui值
//通知其他设备的ui界面变化
//如果4G模块有启动
if ( (JZsdk_HalPort_UseFlag(UART_4G) == JZ_FLAGCODE_ON))
{
HalSend_type1Send_Reply_Volume(UART_4G, 0, g_Megaphone_Volume);
}
//如果设备1有启动
if ( (JZsdk_HalPort_UseFlag(UART_DEV_1) == JZ_FLAGCODE_ON) )
{
HalSend_type1Send_Reply_Volume(UART_DEV_1, 0, g_Megaphone_Volume);
}
//如果设备2有启动
if ( (JZsdk_HalPort_UseFlag(UART_DEV_2) == JZ_FLAGCODE_ON) )
{
HalSend_type1Send_Reply_Volume(UART_DEV_2, 0, g_Megaphone_Volume);
}
//如果psdk接口已经使用
if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON))
{
JZsdk_Psdk_UI_io_Reply_Volume(g_Megaphone_Volume);
}
}
}
/************************************************************************************************************************************************
*
... ... @@ -1680,7 +1306,7 @@ T_JZsdkReturnCode Megaphone_PresetTask()
int volume = 30; //初始音量
while (PrsetTask_GetPrsetTaskFlag() == JZ_FLAGCODE_ON && volume <=100)
{
UIcontrol_SetVolume(NO_SPECIFIED, volume);
UIcontrol_SetVolume(NO_SPECIFIED, volume, JZ_FLAGCODE_ON);
volume += 10;
delayS(5);
}
... ...
... ... @@ -92,7 +92,6 @@ T_JZsdkReturnCode Megaphone_PlayNextSong();
T_JZsdkReturnCode Megaphone_PlayContinue();
T_JZsdkReturnCode Megaphone_PlayPause();
int Megaphone_GetMegaphoneStatus();
int Megaphone_get_now_volume();
T_JZsdkReturnCode Megaphone_SetVolume(int value, int mode);//设置音量,音量0-100,默认音量value==10。
... ... @@ -142,7 +141,6 @@ T_JZsdkReturnCode Start_voice();
T_JZsdkReturnCode Meg_SetVolumeFun(int volume);
int Megaphone_get_RealSetVolume();
int Megaphone_get_RealTargetVolume();
T_JZsdkReturnCode Megaphone_PrintVolume(int Value, int flag);
T_JZsdkReturnCode Megaphone_PresetTask();
... ...
#include "JZsdkLib.h"
#include "Megaphone/Volume/volume.h"
#include "Megaphone/Megaphone.h"
static double PowerSimulation = 0; //用于模拟喊话器功率状态
static void *JZsdk_PowerSimulationThread(void *args)
{
T_JZsdkOsalHandler *OsalHandle = JZsdk_Platform_GetOsalHandler();
while(1)
{
//获取当前播放状态
int play_status = Megaphone_GetMegaphoneStatus();
//生产一个随机数
U16_t randomNum;
OsalHandle->GetRandomNum(&randomNum); // 获取 0~65535 的随机数
// 转换为 [0.5, 1.2) 范围
double normalized = 0.5 + ((double)randomNum / 65535.0) * 0.7;
//获取音量百分比
int volume = Megaphone_GetUiVolume();
double _volume = (double)volume / 100;
if (_volume < 0.1)
{
_volume = 0.1;
}
if (play_status == AUDIO_PLAY_STATUS_IDLE)
{
PowerSimulation = 25 * 0.1 * normalized;
}
else
{
PowerSimulation = 25* _volume * normalized;
}
//printf("PowerSimulation:%0.1f\n",PowerSimulation);
OsalHandle->TaskSleepMs(1000);
}
}
//获取模拟功率
double JZsdk_GetMagaphonePowerSimulation()
{
return PowerSimulation;
}
static T_JZsdkReturnCode PowerSimulation_Init()
{
T_JZsdkOsalHandler *OsalHandle = JZsdk_Platform_GetOsalHandler();
T_JZTaskHandle single_task = NULL;
OsalHandle->TaskCreate("PowerSimulation", JZsdk_PowerSimulationThread, 8192, NULL , &single_task);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
\ No newline at end of file
... ...
... ... @@ -16,13 +16,11 @@ static int g_tts_add = JZ_FLAGCODE_OFF; //追加声音
**********/
T_JZsdkReturnCode Megaphone_TTS_Init()
{
int OriginValue = FOMAT_Get_FirewareOriginRegion();
//讯飞初始化
Megaphone_cnTTS_Init();
if (OriginValue != ORIGIN_CN)
{
//海外固件,外语初始化
Espeak_init();
}
JZSDK_LOG_DEBUG("Megaphone_TTS_Init");
}
... ...
... ... @@ -203,6 +203,31 @@ static T_JZsdkReturnCode TTS_GetSoundSource(int tone,unsigned char *name_tts, un
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
static void remove_letters(char *str)
{
if (str == NULL) return;
int i = 0, j = 0;
while (str[i] != '\0') {
// 如果是多字节字符(如中文),直接保留(UTF-8 的高位为 1)
if ((str[i] & 0x80) != 0) {
// 复制完整的 UTF-8 字符(可能占 2~4 字节)
do {
str[j++] = str[i++];
} while ((str[i] & 0xC0) == 0x80); // 继续复制后续字节
}
// 如果是 ASCII 字符且不是字母,则保留
else if (!isalpha(str[i])) {
str[j++] = str[i++];
}
// 如果是字母,跳过
else {
i++;
}
}
str[j] = '\0'; // 终止字符串
}
static T_JZsdkReturnCode TTS_FILE_GenerateAndPlay(struct t_Megaphone_tts_param *Megaphone_tts_param)
{
int tone = Megaphone_tts_param->tts_tone;
... ... @@ -223,6 +248,12 @@ static T_JZsdkReturnCode TTS_FILE_GenerateAndPlay(struct t_Megaphone_tts_param *
//获取音源,以及规则
TTS_GetSoundSource(tone, name_tts, name_path, rule);
//如果是方言和男生,则去掉字母
if (tone == 0x31 || tone == 0x32 || tone == 0x33 || tone == 0x34 || tone == 0x35 || tone == 0x36 || tone == 0x02)
{
remove_letters(argv);
}
//配置合成参数
snprintf(session_begin_params,512,
"engine_type = local,voice_name=%s, text_encoding = UTF8, tts_res_path = %s;fo|%s, sample_rate = 16000, speed = %d, volume = %d, pitch = 50, rdn = 2"
... ... @@ -307,7 +338,7 @@ static void *Play_cntts_pthread(void *arg)
JZsdk_Free(Megaphone_tts_param);
//恢复音量
int audio_volume = Megaphone_get_now_volume();
int audio_volume = Megaphone_GetUiVolume();
Megaphone_SetVolume(audio_volume,0);
amplifier = JZ_FLAGCODE_OFF;
... ...
... ... @@ -23,20 +23,29 @@ extern "C" {
/* 常亮定义*/
#if DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T
#define MAX_VOLUME (61)
#define MAX_TTS_VOLUME (75)
// #define MAX_VOLUME (61)
// #define MAX_TTS_VOLUME (75)
//2025 4 10 改滤波 降低到90%
#define MAX_VOLUME (51)
#define MAX_TTS_VOLUME (60)
#elif DEVICE_VERSION == JZ_H1E
#define MAX_VOLUME (75)
#define MAX_TTS_VOLUME (82)
// #define MAX_VOLUME (75)
// #define MAX_TTS_VOLUME (82)
//2025 4 10 改滤波 降低到80%
#define MAX_VOLUME (61)
#define MAX_TTS_VOLUME (66)
#elif DEVICE_VERSION == JZ_H1T
// #define MAX_VOLUME 75
// #define MAX_TTS_VOLUME 84
//新班子 116.8
//95 115.7
//90
#define MAX_VOLUME 82
#define MAX_TTS_VOLUME 92
//2025 4 10 改滤波 降低到u85%
#define MAX_VOLUME (61)
#define MAX_TTS_VOLUME (69)
// #define MAX_VOLUME 100
// #define MAX_TTS_VOLUME 100
... ...
#include "JZsdkLib.h"
#include "Megaphone.h"
#include "./VolumeLimit.h"
//喊话器的ui音量
static int g_Megaphone_Volume = 30;
//喊话器的设置目标音量
static int g_Megaphone_RealTargetVolume = 30;
//喊话器的实际音量
static int g_Megaphone_RealSetVolume = 30;
//用于存储tts最大音量限制
static int g_TTS_Max_volume = 0;
//用于存储音频最大音量限制
static int g_Max_volume = 0;
//系统音量值
static int system_volume = 0;
T_JZsdkReturnCode Meg_SetVolumeFun(int volume)
{
char cmdBuffer[128];
if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T || DEVICE_VERSION == JZ_H10)
{
snprintf(cmdBuffer,128, "amixer set -c 4 Master %d",volume);
}
else if (DEVICE_VERSION == JZ_H1E || DEVICE_VERSION == JZ_H1T || DEVICE_VERSION == TF_A1)
{
snprintf(cmdBuffer,128, "amixer set -c 0 Master %d",volume);
}
else if (DEVICE_VERSION == JZ_H10T || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
snprintf(cmdBuffer,128, "amixer sset -c 0 'Headphone' %d unmute",volume);
}
g_Megaphone_RealSetVolume = volume;
JZsdk_RunSystemCmd(cmdBuffer);
printf("线程设置音量为:%d\n",volume);
}
// static void *Meg_VolumeSetThread(void *args)
// {
// T_JZsdkOsalHandler *OsalHandle = JZsdk_Platform_GetOsalHandler();
// if (OsalHandle == NULL)
// {
// JZSDK_LOG_ERROR("获取OsalHandle失败");
// return NULL;
// }
// int last_system_volume = 0;
// while(1)
// {
// if (last_system_volume != system_volume)
// {
// Meg_SetVolumeFun(system_volume);
// last_system_volume = system_volume;
// }
// //每毫秒检查一次音量
// OsalHandle->TaskSleepMs(1);
// }
// }
static void *Meg_VolumeSetThread(void *args)
{
int *value = (int *)args;
Meg_SetVolumeFun(*value);
free(value);
value = NULL;
}
static T_JZsdkReturnCode Megaphone_SetSystemVolume_byThread(int systemVolume)
{
T_JZsdkOsalHandler *OsalHandle = JZsdk_Platform_GetOsalHandler();
if (OsalHandle == NULL)
{
JZSDK_LOG_ERROR("获取OsalHandle失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
T_JZTaskHandle Meg_Volume_task = NULL;
int *value = (int *)malloc(sizeof(int));
*value = systemVolume;
OsalHandle->TaskCreate("Meg_Volume_task", Meg_VolumeSetThread, 8192, (void *)value , &Meg_Volume_task);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*************
*
*
* 音量线程的入口
*
* **********/
T_JZsdkReturnCode Megaphone_SetSystemVolume(int systemVolume)
{
//system_volume = systemVolume;
Meg_SetVolumeFun(systemVolume);
}
/*****************
*
* 调节文本的音量,文本的音量和音乐的音量是不同的
*
* ******************/
static T_JZsdkReturnCode Megaphone_SetTTSvolume()
{
int value = g_Megaphone_Volume;
printf("TTS音量修改\n");
//v3s自设系统 要提高10初始音量
if (DEVICE_VERSION == JZ_H10T || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
if (value > 0)
{
value = 20 + value * 10/8;
}
}
if(value<=0)
{
value=0;
}
else if(value>0&&value<100)
{
value=value*g_TTS_Max_volume/100 *255/100;
}
else if(value>=100)
{
value=100*g_TTS_Max_volume/100 *255/100;
}
g_Megaphone_RealTargetVolume = value;
Megaphone_SetSystemVolume_byThread(value);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*********************
*
* mode == 0 正常调音量
* mode == 1 tts调音量
*
* ************************/
T_JZsdkReturnCode Megaphone_SetVolume(int value, int mode)//设置音量,音量0-100,默认音量value==10。
{
if (mode == 1)
{
printf("设置文本音量");
return Megaphone_SetTTSvolume();
}
printf("设置音量,传入的值:%d\n",value);
g_Megaphone_Volume = value;//获取当前音量
//v3s自设系统 要提高10初始音量
if (DEVICE_VERSION == JZ_H10T || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
if (value > 0)
{
value = 20 + value * 10/8;
}
}
if(value<=0)
{
value=0;
}
else if(value>0&&value<100)
{
value=value*g_Max_volume/100 *255/100;
}
else if(value>=100)
{
value=100*g_Max_volume/100 *255/100;
}
g_Megaphone_RealTargetVolume = value;
Megaphone_SetSystemVolume_byThread(value);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*****************
*
* 温控控制音量 UI 变化
*
*
* *************/
T_JZsdkReturnCode Meg_TempControlVolumeUi(int value)
{
//根据调整量反应到ui界面上
//分为文本和歌曲
int PlayStatus = Megaphone_GetMegaphoneStatus();
int Ui_num = 0;
int HundredMarkNum = 0;
#if DEVICE_VERSION == JZ_H1T
HundredMarkNum = (value * 100 /255);
#else
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
#endif
//如果是文本
if (PlayStatus == 0x20)
{
//计算出ui值
Ui_num = HundredMarkNum * 100 / g_TTS_Max_volume;
}
else
{
//计算出ui值
Ui_num = HundredMarkNum * 100 / g_Max_volume;
}
if (g_Megaphone_Volume > Ui_num)
{
g_Megaphone_Volume--;
}
else if (g_Megaphone_Volume < Ui_num)
{
g_Megaphone_Volume++;
}
else
{
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//修改ui值,
UIcontrol_SetVolume(NO_SPECIFIED, JZ_FLAGCODE_OFF, JZ_FLAGCODE_OFF);
}
/*********************
*
* 最大音量加载
*
* ***********************/
static T_JZsdkReturnCode Megaphone_MaxVolume_Init()
{
g_Max_volume = MAX_VOLUME;
g_TTS_Max_volume = MAX_TTS_VOLUME;
if (DEVICE_VERSION == JZ_H1T)
{
//检索版本号,从2板子改成1板子的h1t改动
if (HardwareInfo_GetVersion(0) == 0x01
&& HardwareInfo_GetVersion(1) == 0x02
&& HardwareInfo_GetVersion(2) == 0x00
&& HardwareInfo_GetVersion(3) == 0x00
)
{
g_Max_volume = MAX_VOLUME;
g_TTS_Max_volume = MAX_TTS_VOLUME;
}
//检索版本号,振膜更换版本
else if (HardwareInfo_GetVersion(0) == 25
&& HardwareInfo_GetVersion(1) == 04
&& HardwareInfo_GetVersion(2) == 21
&& HardwareInfo_GetVersion(3) == 0x00
)
{
g_Max_volume = MAX_VOLUME * 100 / 94;
g_TTS_Max_volume = MAX_TTS_VOLUME * 100 / 94;
}
//最初的h1t板子音量
else
{
g_Max_volume = 70;
g_TTS_Max_volume = 78;
}
}
else if(DEVICE_VERSION == JZ_H1E)
{
//检索版本号,振膜更换版本
if (HardwareInfo_GetVersion(0) == 25
&& HardwareInfo_GetVersion(1) == 04
&& HardwareInfo_GetVersion(2) == 21
&& HardwareInfo_GetVersion(3) == 0x00
)
{
g_Max_volume = MAX_VOLUME * 100 / 94;
g_TTS_Max_volume = MAX_TTS_VOLUME * 100 / 94;
}
else
{
g_Max_volume = MAX_VOLUME;
g_TTS_Max_volume = MAX_TTS_VOLUME;
}
}
else if (DEBUG_VERSION == JZ_H150S / JZ_H150T)
{
//检索版本号,振膜更换版本
if (HardwareInfo_GetVersion(0) == 25
&& HardwareInfo_GetVersion(1) == 04
&& HardwareInfo_GetVersion(2) == 21
&& HardwareInfo_GetVersion(3) == 0x00
)
{
g_Max_volume = MAX_VOLUME * 100 / 94;
g_TTS_Max_volume = MAX_TTS_VOLUME * 100 / 94;
}
else
{
g_Max_volume = MAX_VOLUME;
g_TTS_Max_volume = MAX_TTS_VOLUME;
}
}
JZSDK_LOG_INFO("MaxV:%d MaxTTS_V:%d",g_Max_volume, g_TTS_Max_volume);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*
函数功能:喊话器音量模块初始化
*/
T_JZsdkReturnCode Megaphone_Volume_Init()
{
//加载音量限制
Megaphone_MaxVolume_Init();
//加载音量设置线程
T_JZsdkOsalHandler *OsalHandle = JZsdk_Platform_GetOsalHandler();
if (OsalHandle == NULL)
{
JZSDK_LOG_ERROR("获取OsalHandle失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
// T_JZTaskHandle Meg_Volume_task = NULL;
// OsalHandle->TaskCreate("Meg_Volume_task", Meg_VolumeSetThread, 8192, NULL , &Meg_Volume_task);
//设置喊话器默认音量
Megaphone_SetVolume(30, 0);
}
/***************
*
* 获取ui音量
*
*
* ********************/
int Megaphone_GetUiVolume()
{
return g_Megaphone_Volume;
}
/***
*
*
* 获取实际设置音量值,用于温控
*
* ***/
int Megaphone_get_RealSetVolume()
{
return g_Megaphone_RealSetVolume;
}
/***
*
*
* 获取实际目标音量值,用于温控
*
* ***/
int Megaphone_get_RealTargetVolume()
{
return g_Megaphone_RealTargetVolume;
}
... ...
/**
********************************************************************
* @file volume.h
* volume.c 的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef VOLUME_H
#define VOLUME_H
/* Includes ------------------------------------------------------------------*/
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
T_JZsdkReturnCode Megaphone_Volume_Init();
int Megaphone_GetUiVolume();
T_JZsdkReturnCode Megaphone_SetVolume(int value, int mode); //设置音量,音量0-100,默认音量value==10。
int Megaphone_GetUiVolume();
int Megaphone_get_RealSetVolume();
int Megaphone_get_RealTargetVolume();
T_JZsdkReturnCode Meg_TempControlVolumeUi(int value);
T_JZsdkReturnCode Megaphone_SetSystemVolume(int systemVolume);
#ifdef __cplusplus
}
#endif
#endif
... ...
... ... @@ -27,6 +27,7 @@ static int Opus_RealTimeVoice_Loop_Head = 0; //池数头
static int Opus_RealTimeVoice_Loop_End = 0; //池数尾
static int Opus_RealTimeVoice_LoopReadFlag=0;//读取标志位0为停止,1为开始
static int Opus_RealTimeVoice_LoopReadStopFlag = 0;
static int decode_error_count = 0; //解码错误计数
static T_JZsdkReturnCode Opus_RealTimeVoice_DecodeAndPlay_init();
static T_JZsdkReturnCode Opus_RealTimeVoice_ClearLoop();
... ... @@ -34,7 +35,8 @@ static void *Opus_RealTimeVoice_LoopPlay(void *arg);
static T_JZsdkReturnCode Opus_RealTimeVoice_PlayLoop_HeadReset();
//写入数据部分
static unsigned char Opus_RealTimeVoice_WriteDataLoop[ (15 + 1) ][80];//写入缓存池 最高同时存15组数据 用于写入缓冲
#define WRTTE_MAX_DATA_GROUP 15
static unsigned char Opus_RealTimeVoice_WriteDataLoop[ (WRTTE_MAX_DATA_GROUP + 1) ][80];//写入缓存池 最高同时存WRTTE_MAX_DATA_GROUP组数据 用于写入缓冲
static int Opus_RealTimeVoice_WriteData_LoopHead = 0; //池数头
static int Opus_RealTimeVoice_WriteData_LoopEnd = 0; //池数尾
static int Opus_RealTimeVoice_WriteData_ResidueLenth; // 写入缓存池池子残余物长度
... ... @@ -165,18 +167,53 @@ static T_JZsdkReturnCode Opus_RealTimeVoice_PlayData(unsigned char *data,int len
int frame_size;
opus_int16 out[WIDGET_SPEAKER_AUDIO_OPUS_MAX_FRAME_SIZE * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS ];
int decodeErrorFlag = JZ_FLAGCODE_OFF;
//解码
frame_size = opus_decode(Opus_RealTimeVoice_decoder, (const unsigned char *)data, len, out, WIDGET_SPEAKER_AUDIO_OPUS_MAX_FRAME_SIZE, 0);
if (frame_size < 0) {
if (frame_size < 0)
{
decodeErrorFlag = JZ_FLAGCODE_ON;
switch (frame_size)
{
case OPUS_BAD_ARG:
JZSDK_LOG_ERROR("decoder failed: OPUS_BAD_ARG 一个或多个参数无效");
break;
case OPUS_BUFFER_TOO_SMALL:
JZSDK_LOG_ERROR("decoder failed: OPUS_BUFFER_TOO_SMALL 输出缓冲区不足");
break;
case OPUS_INTERNAL_ERROR:
JZSDK_LOG_ERROR("decoder failed: OPUS_INTERNAL_ERROR Opus内部错误");
break;
case OPUS_INVALID_PACKET:
JZSDK_LOG_ERROR("decoder failed: OPUS_INVALID_PACKET 压缩数据损坏或无效");
break;
case OPUS_UNIMPLEMENTED:
JZSDK_LOG_ERROR("decoder failed: OPUS_UNIMPLEMENTED 不支持的特性/模式");
break;
case OPUS_INVALID_STATE:
JZSDK_LOG_ERROR("decoder failed: OPUS_INVALID_STATE 解码器处于无效状态");
break;
default:
JZSDK_LOG_ERROR("decoder failed");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
break;
}
// 解码失败时生成静音数据
memset(out, 0, sizeof(opus_int16) * WIDGET_SPEAKER_AUDIO_OPUS_MAX_FRAME_SIZE * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS);
frame_size = WIDGET_SPEAKER_AUDIO_OPUS_MAX_FRAME_SIZE;
}
//转换
opus_int16 TempPcm[WIDGET_SPEAKER_AUDIO_OPUS_MAX_FRAME_SIZE * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS];
for (i = 0; i < WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS * frame_size; i++)
{
TempPcm[i] = out[i] & 0xFF | (out[i] >> 8) << 8;
... ... @@ -190,6 +227,11 @@ static T_JZsdkReturnCode Opus_RealTimeVoice_PlayData(unsigned char *data,int len
AudioDeal_PcmDataInput(RealTimeDecodeRate, pcm_bytes, frame_size*2, 1);
if (decodeErrorFlag == JZ_FLAGCODE_ON)
{
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -223,6 +265,15 @@ static void *Opus_RealTimeVoice_LoopPlay(void *arg)
Opus_RealTimeVoice_PlayLoop_HeadReset(); //池满判断
if(ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
// // 记录解码错误次数,超过阈值则重置解码器
// if (++decode_error_count > 10) {
// JZSDK_LOG_WARN("Too many decode errors, resetting decoder");
// decode_error_count = 0;
// }
// 后续改进建议,重新注册解码器的同时,不进行数据的清空
break;
}
}
... ... @@ -350,7 +401,7 @@ static T_JZsdkReturnCode Opus_RealTimeVoice_WriteDataClear()
// 写入池子头部到底了,重置池头
static T_JZsdkReturnCode Opus_RealTimeVoice_WriteDataHeadReset()
{
if (Opus_RealTimeVoice_WriteData_LoopHead >= 15)
if (Opus_RealTimeVoice_WriteData_LoopHead >= WRTTE_MAX_DATA_GROUP)
{
Opus_RealTimeVoice_WriteData_LoopHead = 0;
}
... ... @@ -359,7 +410,7 @@ static T_JZsdkReturnCode Opus_RealTimeVoice_WriteDataHeadReset()
// 写入池子尾部到底了,重置池尾
static T_JZsdkReturnCode Opus_RealTimeVoice_WriteDataEndReset()
{
if (Opus_RealTimeVoice_WriteData_LoopEnd >= 15)
if (Opus_RealTimeVoice_WriteData_LoopEnd >= WRTTE_MAX_DATA_GROUP)
{
Opus_RealTimeVoice_WriteData_LoopEnd = 0;
}
... ...
... ... @@ -410,6 +410,9 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_Audio_PauseAndPlayContinue(int wheather_contr
// 将控件界面的播放开关 转化为关闭
UI_control_WidgetSet(PSDK_UI_WIDGET_PLAYSTATUS, 1);
// 将ttsSpeaker的开关关闭
UI_control_WidgetSet(PSDK_UI_SECONDARY_WIDGET_PLAYSTATUS, 0);
// 如果有进行控制,不只是改控件
if (wheather_control == 1)
{
... ... @@ -488,7 +491,7 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_SetVolume(int wheather_control, int value)
// 如果有进行控制,不只是改控件
if (wheather_control == 1)
{
ret = UIcontrol_SetVolume(DEVICE_PSDK, value);
ret = UIcontrol_SetVolume(DEVICE_PSDK, value, JZ_FLAGCODE_ON);
return ret;
}
}
... ... @@ -553,8 +556,8 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_TTS_speed(int wheather_control, int speed
//psdk 变量获取tts音色
int JZsdk_Psdk_UI_io_GetTTSTone_ByValue(int value)
{
int OriginValue = FOMAT_Get_FirewareOriginRegion();
if (OriginValue == ORIGIN_DEFAULT || OriginValue == ORIGIN_CN)
E_LanguageInfo LanguageInfo = LanguageInfo_Get_LanguageInfo();
if (LanguageInfo == LANGUAGE_INFO_CHINESE)
{
switch (value)
{
... ... @@ -651,8 +654,8 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_TTS_tone(int wheather_control, int tone)
T_JZsdkReturnCode ret;
int value;
int OriginValue = FOMAT_Get_FirewareOriginRegion();
if (OriginValue == ORIGIN_DEFAULT || OriginValue == ORIGIN_CN)
E_LanguageInfo LanguageInfo = LanguageInfo_Get_LanguageInfo();
if (LanguageInfo == LANGUAGE_INFO_CHINESE)
{
switch (tone)
{
... ... @@ -1093,6 +1096,9 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_TTS_Play(char *data, int len)
//关闭音乐控件
UI_control_WidgetSet(PSDK_UI_WIDGET_PLAYSTATUS, 1);
//关闭内ui的三角形 讲道理不能在这里关,不然就是明明在播,但是没有显示播放按键
//UI_control_WidgetSet(PSDK_UI_SECONDARY_WIDGET_PLAYSTATUS, 0);
T_JZsdkReturnCode ret;
ret = UIcontrol_TTS_Play(DEVICE_PSDK, data, len);
return ret;
... ...
... ... @@ -96,9 +96,16 @@ T_JZsdkReturnCode UI_control_Set_DJI_SkyPort_SerialNumber(char *str)
*
* ****************************************************************************************************************************************/
//音量调节
T_JZsdkReturnCode UIcontrol_SetVolume(int DeviceName,int value)
T_JZsdkReturnCode UIcontrol_SetVolume(int DeviceName,int value, int flag)
{
#ifdef MEGAPHONE_CONFIG_STATUS_ON
//获取本地音量
int Volume;
//如果开启控制
if (flag == JZ_FLAGCODE_ON)
{
//调用喊话器的接口
T_JZsdkReturnCode ret = Megaphone_param(JZ_FLAGCODE_SET, MEGAPHONE_VOLUME, &value);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
... ... @@ -107,11 +114,12 @@ T_JZsdkReturnCode UIcontrol_SetVolume(int DeviceName,int value)
return ret;
}
delayMs(1);
//获取本地音量
int Volume;
Megaphone_param(JZ_FLAGCODE_GET, MEGAPHONE_VOLUME, &Volume);
}
else
{
Megaphone_param(JZ_FLAGCODE_GET, MEGAPHONE_VOLUME, &Volume);
}
//通知其他设备的ui界面变化
//如果4G模块有启动
... ...
... ... @@ -31,7 +31,7 @@ T_JZsdkReturnCode UI_control_Set_DJI_SkyPort_SerialNumber(char *str);
//喊话器通用操作类
T_JZsdkReturnCode UIcontrol_Set_AudioPlayLoop(int DeviceName, int value);
T_JZsdkReturnCode UIcontrol_SetVolume(int DeviceName, int value);
T_JZsdkReturnCode UIcontrol_SetVolume(int DeviceName,int value, int flag);
T_JZsdkReturnCode UIcontrol_Set_AudioPlayLoopInterval(int DeviceName,int value);
//音频类
... ...
# This is the CMakeCache file.
# For build in directory: /mnt/hgfs/share/JZSDK_Linux/project_build/Attention_提示程序/build
# It was generated by CMake: /usr/local/bin/cmake
# It was generated by CMake: /usr/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.
... ... @@ -18,19 +18,13 @@
ATTENTION_APP_BINARY_DIR:STATIC=/mnt/hgfs/share/JZSDK_Linux/project_build/Attention_提示程序/build
//Value Computed by CMake
ATTENTION_APP_IS_TOP_LEVEL:STATIC=ON
//Value Computed by CMake
ATTENTION_APP_SOURCE_DIR:STATIC=/mnt/hgfs/share/JZSDK_Linux/project_build/Attention_提示程序
//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 ...
//Choose the type of build, options are: None(CMAKE_CXX_FLAGS or
// CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.
CMAKE_BUILD_TYPE:STRING=
//Enable/Disable color output during build.
... ... @@ -39,78 +33,58 @@ 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.
//Flags used by the compiler during all build types.
CMAKE_CXX_FLAGS:STRING=
//Flags used by the CXX compiler during DEBUG builds.
//Flags used by the compiler during debug builds.
CMAKE_CXX_FLAGS_DEBUG:STRING=-g
//Flags used by the CXX compiler during MINSIZEREL builds.
//Flags used by the compiler during release builds for minimum
// size.
CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
//Flags used by the CXX compiler during RELEASE builds.
//Flags used by the compiler during release builds.
CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
//Flags used by the CXX compiler during RELWITHDEBINFO builds.
//Flags used by the compiler during release builds with debug info.
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.
//Flags used by the compiler during all build types.
CMAKE_C_FLAGS:STRING=
//Flags used by the C compiler during DEBUG builds.
//Flags used by the compiler during debug builds.
CMAKE_C_FLAGS_DEBUG:STRING=-g
//Flags used by the C compiler during MINSIZEREL builds.
//Flags used by the compiler during release builds for minimum
// size.
CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
//Flags used by the C compiler during RELEASE builds.
//Flags used by the compiler during release builds.
CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
//Flags used by the C compiler during RELWITHDEBINFO builds.
//Flags used by the compiler during release builds with debug info.
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.
//Flags used by the linker.
CMAKE_EXE_LINKER_FLAGS:STRING=
//Flags used by the linker during DEBUG builds.
//Flags used by the linker during debug builds.
CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
//Flags used by the linker during MINSIZEREL builds.
//Flags used by the linker during release minsize builds.
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
//Flags used by the linker during RELEASE builds.
//Flags used by the linker during release builds.
CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during RELWITHDEBINFO builds.
//Flags used by the linker during Release with Debug Info 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/Attention_提示程序/build/CMakeFiles/pkgRedirects
CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF
//Install path prefix, prepended onto install directories.
CMAKE_INSTALL_PREFIX:PATH=/usr/local
... ... @@ -121,24 +95,19 @@ 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.
//Flags used by the linker during the creation of modules.
CMAKE_MODULE_LINKER_FLAGS:STRING=
//Flags used by the linker during the creation of modules during
// DEBUG builds.
//Flags used by the linker during debug builds.
CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
//Flags used by the linker during the creation of modules during
// MINSIZEREL builds.
//Flags used by the linker during release minsize builds.
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
//Flags used by the linker during the creation of modules during
// RELEASE builds.
//Flags used by the linker during release builds.
CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during the creation of modules during
// RELWITHDEBINFO builds.
//Flags used by the linker during Release with Debug Info builds.
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
//Path to a program.
... ... @@ -151,38 +120,24 @@ CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy
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=ATTENTION_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.
//Flags used by the linker during the creation of dll's.
CMAKE_SHARED_LINKER_FLAGS:STRING=
//Flags used by the linker during the creation of shared libraries
// during DEBUG builds.
//Flags used by the linker during debug builds.
CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
//Flags used by the linker during the creation of shared libraries
// during MINSIZEREL builds.
//Flags used by the linker during release minsize builds.
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
//Flags used by the linker during the creation of shared libraries
// during RELEASE builds.
//Flags used by the linker during release builds.
CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during the creation of shared libraries
// during RELWITHDEBINFO builds.
//Flags used by the linker during Release with Debug Info builds.
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
//If set, runtime paths are not added when installing shared libraries,
... ... @@ -192,24 +147,19 @@ 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.
//Flags used by the linker during the creation of static libraries.
CMAKE_STATIC_LINKER_FLAGS:STRING=
//Flags used by the linker during the creation of static libraries
// during DEBUG builds.
//Flags used by the linker during debug builds.
CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
//Flags used by the linker during the creation of static libraries
// during MINSIZEREL builds.
//Flags used by the linker during release minsize builds.
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
//Flags used by the linker during the creation of static libraries
// during RELEASE builds.
//Flags used by the linker during release builds.
CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during the creation of static libraries
// during RELWITHDEBINFO builds.
//Flags used by the linker during Release with Debug Info builds.
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
//Path to a program.
... ... @@ -226,8 +176,6 @@ CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
# 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
... ... @@ -235,23 +183,19 @@ CMAKE_CACHEFILE_DIR:INTERNAL=/mnt/hgfs/share/JZSDK_Linux/project_build/Attention
//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
CMAKE_CACHE_MINOR_VERSION:INTERNAL=5
//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
CMAKE_COMMAND:INTERNAL=/usr/bin/cmake
//Path to cpack program executable.
CMAKE_CPACK_COMMAND:INTERNAL=/usr/local/bin/cpack
CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack
//Path to ctest program executable.
CMAKE_CTEST_COMMAND:INTERNAL=/usr/local/bin/ctest
CMAKE_CTEST_COMMAND:INTERNAL=/usr/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
... ... @@ -264,10 +208,6 @@ CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1
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
... ... @@ -278,8 +218,6 @@ CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
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
... ... @@ -298,8 +236,6 @@ CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1
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.
... ... @@ -331,14 +267,10 @@ CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
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
CMAKE_ROOT:INTERNAL=/usr/share/cmake-3.5
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
... ... @@ -369,6 +301,4 @@ CMAKE_STRIP-ADVANCED:INTERNAL=1
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)
#ifdef __cplusplus
# error "A C++ compiler has been selected for C."
#endif
#if defined(__18CXX)
# define ID_VOID_MAIN
#endif
#if defined(__CLASSIC_C__)
/* cv-qualifiers did not exist in K&R C */
# define const
# define volatile
#endif
#if !defined(__has_include)
/* If the compiler does not have __has_include, pretend the answer is
always no. */
# define __has_include(x) 0
#endif
/* Version number components: V=Version, R=Revision, P=Patch
Version date components: YYYY=Year, MM=Month, DD=Day */
#if defined(__INTEL_COMPILER) || defined(__ICC)
# define COMPILER_ID "Intel"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# if defined(__GNUC__)
# define SIMULATE_ID "GNU"
# endif
/* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later,
except that a few beta releases use the old format with V=2021. */
# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111
# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
# if defined(__INTEL_COMPILER_UPDATE)
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
# else
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10)
# endif
# else
# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER)
# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE)
/* The third version component from --version is an update index,
but no macro is provided for it. */
# define COMPILER_VERSION_PATCH DEC(0)
# endif
# if defined(__INTEL_COMPILER_BUILD_DATE)
/* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
# endif
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
# if defined(__GNUC__)
# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
# elif defined(__GNUG__)
# define SIMULATE_VERSION_MAJOR DEC(__GNUG__)
# endif
# if defined(__GNUC_MINOR__)
# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
# endif
# if defined(__GNUC_PATCHLEVEL__)
# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
# endif
#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER)
# define COMPILER_ID "IntelLLVM"
#if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
#endif
#if defined(__GNUC__)
# define SIMULATE_ID "GNU"
#endif
/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and
* later. Look for 6 digit vs. 8 digit version number to decide encoding.
* VVVV is no smaller than the current year when a version is released.
*/
#if __INTEL_LLVM_COMPILER < 1000000L
# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100)
# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10)
#else
# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000)
# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100)
# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100)
#endif
#if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
#endif
#if defined(__GNUC__)
# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
#elif defined(__GNUG__)
# define SIMULATE_VERSION_MAJOR DEC(__GNUG__)
#endif
#if defined(__GNUC_MINOR__)
# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
#endif
#if defined(__GNUC_PATCHLEVEL__)
# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
#endif
#elif defined(__PATHCC__)
# define COMPILER_ID "PathScale"
# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
# if defined(__PATHCC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
# endif
#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
# define COMPILER_ID "Embarcadero"
# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF)
#elif defined(__BORLANDC__)
# define COMPILER_ID "Borland"
/* __BORLANDC__ = 0xVRR */
# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
#elif defined(__WATCOMC__) && __WATCOMC__ < 1200
# define COMPILER_ID "Watcom"
/* __WATCOMC__ = VVRR */
# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
# if (__WATCOMC__ % 10) > 0
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
# endif
#elif defined(__WATCOMC__)
# define COMPILER_ID "OpenWatcom"
/* __WATCOMC__ = VVRP + 1100 */
# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
# if (__WATCOMC__ % 10) > 0
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
# endif
#elif defined(__SUNPRO_C)
# define COMPILER_ID "SunPro"
# if __SUNPRO_C >= 0x5100
/* __SUNPRO_C = 0xVRRP */
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12)
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF)
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF)
# else
/* __SUNPRO_CC = 0xVRP */
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8)
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF)
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF)
# endif
#elif defined(__HP_cc)
# define COMPILER_ID "HP"
/* __HP_cc = VVRRPP */
# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000)
# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100)
# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100)
#elif defined(__DECC)
# define COMPILER_ID "Compaq"
/* __DECC_VER = VVRRTPPPP */
# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000)
# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100)
# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000)
#elif defined(__IBMC__) && defined(__COMPILER_VER__)
# define COMPILER_ID "zOS"
/* __IBMC__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
#elif defined(__open_xl__) && defined(__clang__)
# define COMPILER_ID "IBMClang"
# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__)
# define COMPILER_VERSION_MINOR DEC(__open_xl_release__)
# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__)
# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__)
#elif defined(__ibmxl__) && defined(__clang__)
# define COMPILER_ID "XLClang"
# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__)
# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__)
# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__)
# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__)
#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800
# define COMPILER_ID "XL"
/* __IBMC__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800
# define COMPILER_ID "VisualAge"
/* __IBMC__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
#elif defined(__NVCOMPILER)
# define COMPILER_ID "NVHPC"
# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__)
# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__)
# if defined(__NVCOMPILER_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__)
# endif
#elif defined(__PGI)
# define COMPILER_ID "PGI"
# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
# if defined(__PGIC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
# endif
#elif defined(_CRAYC)
# define COMPILER_ID "Cray"
# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
#elif defined(__TI_COMPILER_VERSION__)
# define COMPILER_ID "TI"
/* __TI_COMPILER_VERSION__ = VVVRRRPPP */
# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000)
# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000)
#elif defined(__CLANG_FUJITSU)
# define COMPILER_ID "FujitsuClang"
# define COMPILER_VERSION_MAJOR DEC(__FCC_major__)
# define COMPILER_VERSION_MINOR DEC(__FCC_minor__)
# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__)
# define COMPILER_VERSION_INTERNAL_STR __clang_version__
#elif defined(__FUJITSU)
# define COMPILER_ID "Fujitsu"
# if defined(__FCC_version__)
# define COMPILER_VERSION __FCC_version__
# elif defined(__FCC_major__)
# define COMPILER_VERSION_MAJOR DEC(__FCC_major__)
# define COMPILER_VERSION_MINOR DEC(__FCC_minor__)
# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__)
# endif
# if defined(__fcc_version)
# define COMPILER_VERSION_INTERNAL DEC(__fcc_version)
# elif defined(__FCC_VERSION)
# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION)
# endif
#elif defined(__ghs__)
# define COMPILER_ID "GHS"
/* __GHS_VERSION_NUMBER = VVVVRP */
# ifdef __GHS_VERSION_NUMBER
# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100)
# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10)
# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10)
# endif
#elif defined(__TINYC__)
# define COMPILER_ID "TinyCC"
#elif defined(__BCC__)
# define COMPILER_ID "Bruce"
#elif defined(__SCO_VERSION__)
# define COMPILER_ID "SCO"
#elif defined(__ARMCC_VERSION) && !defined(__clang__)
# define COMPILER_ID "ARMCC"
#if __ARMCC_VERSION >= 1000000
/* __ARMCC_VERSION = VRRPPPP */
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000)
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100)
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
#else
/* __ARMCC_VERSION = VRPPPP */
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000)
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10)
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
#endif
#elif defined(__clang__) && defined(__apple_build_version__)
# define COMPILER_ID "AppleClang"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION)
# define COMPILER_ID "ARMClang"
# define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000)
# define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100)
# define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000)
# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION)
#elif defined(__clang__)
# define COMPILER_ID "Clang"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__))
# define COMPILER_ID "LCC"
# define COMPILER_VERSION_MAJOR DEC(1)
# if defined(__LCC__)
# define COMPILER_VERSION_MINOR DEC(__LCC__- 100)
# endif
# if defined(__LCC_MINOR__)
# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__)
# endif
# if defined(__GNUC__) && defined(__GNUC_MINOR__)
# define SIMULATE_ID "GNU"
# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
# if defined(__GNUC_PATCHLEVEL__)
# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
# endif
# endif
#elif defined(__GNUC__)
# define COMPILER_ID "GNU"
# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
# if defined(__GNUC_MINOR__)
# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
# endif
# if defined(__GNUC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
# endif
#elif defined(_MSC_VER)
# define COMPILER_ID "MSVC"
/* _MSC_VER = VVRR */
# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
# if defined(_MSC_FULL_VER)
# if _MSC_VER >= 1400
/* _MSC_FULL_VER = VVRRPPPPP */
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
# else
/* _MSC_FULL_VER = VVRRPPPP */
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
# endif
# endif
# if defined(_MSC_BUILD)
# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
# endif
#elif defined(_ADI_COMPILER)
# define COMPILER_ID "ADSP"
#if defined(__VERSIONNUM__)
/* __VERSIONNUM__ = 0xVVRRPPTT */
# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF)
# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF)
# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF)
# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF)
#endif
#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
# define COMPILER_ID "IAR"
# if defined(__VER__) && defined(__ICCARM__)
# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000)
# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000)
# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000)
# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__))
# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100)
# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100))
# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__)
# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
# endif
#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC)
# define COMPILER_ID "SDCC"
# if defined(__SDCC_VERSION_MAJOR)
# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR)
# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR)
# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH)
# else
/* SDCC = VRP */
# define COMPILER_VERSION_MAJOR DEC(SDCC/100)
# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10)
# define COMPILER_VERSION_PATCH DEC(SDCC % 10)
# endif
/* These compilers are either not known or too old to define an
identification macro. Try to identify the platform and guess that
it is the native compiler. */
#elif defined(__hpux) || defined(__hpua)
# define COMPILER_ID "HP"
#else /* unknown compiler */
# define COMPILER_ID ""
#endif
/* Construct the string literal in pieces to prevent the source from
getting matched. Store it in a pointer rather than an array
because some compilers will just produce instructions to fill the
array rather than assigning a pointer to a static array. */
char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
#ifdef SIMULATE_ID
char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
#endif
#ifdef __QNXNTO__
char const* qnxnto = "INFO" ":" "qnxnto[]";
#endif
#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
#endif
#define STRINGIFY_HELPER(X) #X
#define STRINGIFY(X) STRINGIFY_HELPER(X)
/* Identify known platforms by name. */
#if defined(__linux) || defined(__linux__) || defined(linux)
# define PLATFORM_ID "Linux"
#elif defined(__MSYS__)
# define PLATFORM_ID "MSYS"
#elif defined(__CYGWIN__)
# define PLATFORM_ID "Cygwin"
#elif defined(__MINGW32__)
# define PLATFORM_ID "MinGW"
#elif defined(__APPLE__)
# define PLATFORM_ID "Darwin"
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
# define PLATFORM_ID "Windows"
#elif defined(__FreeBSD__) || defined(__FreeBSD)
# define PLATFORM_ID "FreeBSD"
#elif defined(__NetBSD__) || defined(__NetBSD)
# define PLATFORM_ID "NetBSD"
#elif defined(__OpenBSD__) || defined(__OPENBSD)
# define PLATFORM_ID "OpenBSD"
#elif defined(__sun) || defined(sun)
# define PLATFORM_ID "SunOS"
#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
# define PLATFORM_ID "AIX"
#elif defined(__hpux) || defined(__hpux__)
# define PLATFORM_ID "HP-UX"
#elif defined(__HAIKU__)
# define PLATFORM_ID "Haiku"
#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
# define PLATFORM_ID "BeOS"
#elif defined(__QNX__) || defined(__QNXNTO__)
# define PLATFORM_ID "QNX"
#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
# define PLATFORM_ID "Tru64"
#elif defined(__riscos) || defined(__riscos__)
# define PLATFORM_ID "RISCos"
#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
# define PLATFORM_ID "SINIX"
#elif defined(__UNIX_SV__)
# define PLATFORM_ID "UNIX_SV"
#elif defined(__bsdos__)
# define PLATFORM_ID "BSDOS"
#elif defined(_MPRAS) || defined(MPRAS)
# define PLATFORM_ID "MP-RAS"
#elif defined(__osf) || defined(__osf__)
# define PLATFORM_ID "OSF1"
#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
# define PLATFORM_ID "SCO_SV"
#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
# define PLATFORM_ID "ULTRIX"
#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
# define PLATFORM_ID "Xenix"
#elif defined(__WATCOMC__)
# if defined(__LINUX__)
# define PLATFORM_ID "Linux"
# elif defined(__DOS__)
# define PLATFORM_ID "DOS"
# elif defined(__OS2__)
# define PLATFORM_ID "OS2"
# elif defined(__WINDOWS__)
# define PLATFORM_ID "Windows3x"
# elif defined(__VXWORKS__)
# define PLATFORM_ID "VxWorks"
# else /* unknown platform */
# define PLATFORM_ID
# endif
#elif defined(__INTEGRITY)
# if defined(INT_178B)
# define PLATFORM_ID "Integrity178"
# else /* regular Integrity */
# define PLATFORM_ID "Integrity"
# endif
# elif defined(_ADI_COMPILER)
# define PLATFORM_ID "ADSP"
#else /* unknown platform */
# define PLATFORM_ID
#endif
/* For windows compilers MSVC and Intel we can determine
the architecture of the compiler being used. This is because
the compilers do not have flags that can change the architecture,
but rather depend on which compiler is being used
*/
#if defined(_WIN32) && defined(_MSC_VER)
# if defined(_M_IA64)
# define ARCHITECTURE_ID "IA64"
# elif defined(_M_ARM64EC)
# define ARCHITECTURE_ID "ARM64EC"
# elif defined(_M_X64) || defined(_M_AMD64)
# define ARCHITECTURE_ID "x64"
# elif defined(_M_IX86)
# define ARCHITECTURE_ID "X86"
# elif defined(_M_ARM64)
# define ARCHITECTURE_ID "ARM64"
# elif defined(_M_ARM)
# if _M_ARM == 4
# define ARCHITECTURE_ID "ARMV4I"
# elif _M_ARM == 5
# define ARCHITECTURE_ID "ARMV5I"
# else
# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
# endif
# elif defined(_M_MIPS)
# define ARCHITECTURE_ID "MIPS"
# elif defined(_M_SH)
# define ARCHITECTURE_ID "SHx"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__WATCOMC__)
# if defined(_M_I86)
# define ARCHITECTURE_ID "I86"
# elif defined(_M_IX86)
# define ARCHITECTURE_ID "X86"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
# if defined(__ICCARM__)
# define ARCHITECTURE_ID "ARM"
# elif defined(__ICCRX__)
# define ARCHITECTURE_ID "RX"
# elif defined(__ICCRH850__)
# define ARCHITECTURE_ID "RH850"
# elif defined(__ICCRL78__)
# define ARCHITECTURE_ID "RL78"
# elif defined(__ICCRISCV__)
# define ARCHITECTURE_ID "RISCV"
# elif defined(__ICCAVR__)
# define ARCHITECTURE_ID "AVR"
# elif defined(__ICC430__)
# define ARCHITECTURE_ID "MSP430"
# elif defined(__ICCV850__)
# define ARCHITECTURE_ID "V850"
# elif defined(__ICC8051__)
# define ARCHITECTURE_ID "8051"
# elif defined(__ICCSTM8__)
# define ARCHITECTURE_ID "STM8"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__ghs__)
# if defined(__PPC64__)
# define ARCHITECTURE_ID "PPC64"
# elif defined(__ppc__)
# define ARCHITECTURE_ID "PPC"
# elif defined(__ARM__)
# define ARCHITECTURE_ID "ARM"
# elif defined(__x86_64__)
# define ARCHITECTURE_ID "x64"
# elif defined(__i386__)
# define ARCHITECTURE_ID "X86"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__TI_COMPILER_VERSION__)
# if defined(__TI_ARM__)
# define ARCHITECTURE_ID "ARM"
# elif defined(__MSP430__)
# define ARCHITECTURE_ID "MSP430"
# elif defined(__TMS320C28XX__)
# define ARCHITECTURE_ID "TMS320C28x"
# elif defined(__TMS320C6X__) || defined(_TMS320C6X)
# define ARCHITECTURE_ID "TMS320C6x"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
# elif defined(__ADSPSHARC__)
# define ARCHITECTURE_ID "SHARC"
# elif defined(__ADSPBLACKFIN__)
# define ARCHITECTURE_ID "Blackfin"
#else
# define ARCHITECTURE_ID
#endif
/* Convert integer to decimal digit literals. */
#define DEC(n) \
('0' + (((n) / 10000000)%10)), \
('0' + (((n) / 1000000)%10)), \
('0' + (((n) / 100000)%10)), \
('0' + (((n) / 10000)%10)), \
('0' + (((n) / 1000)%10)), \
('0' + (((n) / 100)%10)), \
('0' + (((n) / 10)%10)), \
('0' + ((n) % 10))
/* Convert integer to hex digit literals. */
#define HEX(n) \
('0' + ((n)>>28 & 0xF)), \
('0' + ((n)>>24 & 0xF)), \
('0' + ((n)>>20 & 0xF)), \
('0' + ((n)>>16 & 0xF)), \
('0' + ((n)>>12 & 0xF)), \
('0' + ((n)>>8 & 0xF)), \
('0' + ((n)>>4 & 0xF)), \
('0' + ((n) & 0xF))
/* Construct a string literal encoding the version number. */
#ifdef COMPILER_VERSION
char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]";
/* Construct a string literal encoding the version number components. */
#elif defined(COMPILER_VERSION_MAJOR)
char const info_version[] = {
'I', 'N', 'F', 'O', ':',
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
COMPILER_VERSION_MAJOR,
# ifdef COMPILER_VERSION_MINOR
'.', COMPILER_VERSION_MINOR,
# ifdef COMPILER_VERSION_PATCH
'.', COMPILER_VERSION_PATCH,
# ifdef COMPILER_VERSION_TWEAK
'.', COMPILER_VERSION_TWEAK,
# endif
# endif
# endif
']','\0'};
#endif
/* Construct a string literal encoding the internal version number. */
#ifdef COMPILER_VERSION_INTERNAL
char const info_version_internal[] = {
'I', 'N', 'F', 'O', ':',
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_',
'i','n','t','e','r','n','a','l','[',
COMPILER_VERSION_INTERNAL,']','\0'};
#elif defined(COMPILER_VERSION_INTERNAL_STR)
char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]";
#endif
/* Construct a string literal encoding the version number components. */
#ifdef SIMULATE_VERSION_MAJOR
char const info_simulate_version[] = {
'I', 'N', 'F', 'O', ':',
's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
SIMULATE_VERSION_MAJOR,
# ifdef SIMULATE_VERSION_MINOR
'.', SIMULATE_VERSION_MINOR,
# ifdef SIMULATE_VERSION_PATCH
'.', SIMULATE_VERSION_PATCH,
# ifdef SIMULATE_VERSION_TWEAK
'.', SIMULATE_VERSION_TWEAK,
# endif
# endif
# endif
']','\0'};
#endif
/* Construct the string literal in pieces to prevent the source from
getting matched. Store it in a pointer rather than an array
because some compilers will just produce instructions to fill the
array rather than assigning a pointer to a static array. */
char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
#if !defined(__STDC__) && !defined(__clang__)
# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__)
# define C_VERSION "90"
# else
# define C_VERSION
# endif
#elif __STDC_VERSION__ > 201710L
# define C_VERSION "23"
#elif __STDC_VERSION__ >= 201710L
# define C_VERSION "17"
#elif __STDC_VERSION__ >= 201000L
# define C_VERSION "11"
#elif __STDC_VERSION__ >= 199901L
# define C_VERSION "99"
#else
# define C_VERSION "90"
#endif
const char* info_language_standard_default =
"INFO" ":" "standard_default[" C_VERSION "]";
const char* info_language_extensions_default = "INFO" ":" "extensions_default["
#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \
defined(__TI_COMPILER_VERSION__)) && \
!defined(__STRICT_ANSI__)
"ON"
#else
"OFF"
#endif
"]";
/*--------------------------------------------------------------------------*/
#ifdef ID_VOID_MAIN
void main() {}
#else
# if defined(__CLASSIC_C__)
int main(argc, argv) int argc; char *argv[];
# else
int main(int argc, char* argv[])
# endif
{
int require = 0;
require += info_compiler[argc];
require += info_platform[argc];
require += info_arch[argc];
#ifdef COMPILER_VERSION_MAJOR
require += info_version[argc];
#endif
#ifdef COMPILER_VERSION_INTERNAL
require += info_version_internal[argc];
#endif
#ifdef SIMULATE_ID
require += info_simulate[argc];
#endif
#ifdef SIMULATE_VERSION_MAJOR
require += info_simulate_version[argc];
#endif
#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
require += info_cray[argc];
#endif
require += info_language_standard_default[argc];
require += info_language_extensions_default[argc];
(void)argv;
return require;
}
#endif
/* This source file must have a .cpp extension so that all C++ compilers
recognize the extension without flags. Borland does not know .cxx for
example. */
#ifndef __cplusplus
# error "A C compiler has been selected for C++."
#endif
#if !defined(__has_include)
/* If the compiler does not have __has_include, pretend the answer is
always no. */
# define __has_include(x) 0
#endif
/* Version number components: V=Version, R=Revision, P=Patch
Version date components: YYYY=Year, MM=Month, DD=Day */
#if defined(__COMO__)
# define COMPILER_ID "Comeau"
/* __COMO_VERSION__ = VRR */
# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100)
# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100)
#elif defined(__INTEL_COMPILER) || defined(__ICC)
# define COMPILER_ID "Intel"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# if defined(__GNUC__)
# define SIMULATE_ID "GNU"
# endif
/* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later,
except that a few beta releases use the old format with V=2021. */
# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111
# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
# if defined(__INTEL_COMPILER_UPDATE)
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
# else
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10)
# endif
# else
# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER)
# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE)
/* The third version component from --version is an update index,
but no macro is provided for it. */
# define COMPILER_VERSION_PATCH DEC(0)
# endif
# if defined(__INTEL_COMPILER_BUILD_DATE)
/* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
# endif
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
# if defined(__GNUC__)
# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
# elif defined(__GNUG__)
# define SIMULATE_VERSION_MAJOR DEC(__GNUG__)
# endif
# if defined(__GNUC_MINOR__)
# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
# endif
# if defined(__GNUC_PATCHLEVEL__)
# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
# endif
#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER)
# define COMPILER_ID "IntelLLVM"
#if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
#endif
#if defined(__GNUC__)
# define SIMULATE_ID "GNU"
#endif
/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and
* later. Look for 6 digit vs. 8 digit version number to decide encoding.
* VVVV is no smaller than the current year when a version is released.
*/
#if __INTEL_LLVM_COMPILER < 1000000L
# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100)
# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10)
#else
# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000)
# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100)
# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100)
#endif
#if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
#endif
#if defined(__GNUC__)
# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
#elif defined(__GNUG__)
# define SIMULATE_VERSION_MAJOR DEC(__GNUG__)
#endif
#if defined(__GNUC_MINOR__)
# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
#endif
#if defined(__GNUC_PATCHLEVEL__)
# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
#endif
#elif defined(__PATHCC__)
# define COMPILER_ID "PathScale"
# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
# if defined(__PATHCC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
# endif
#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
# define COMPILER_ID "Embarcadero"
# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF)
#elif defined(__BORLANDC__)
# define COMPILER_ID "Borland"
/* __BORLANDC__ = 0xVRR */
# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
#elif defined(__WATCOMC__) && __WATCOMC__ < 1200
# define COMPILER_ID "Watcom"
/* __WATCOMC__ = VVRR */
# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
# if (__WATCOMC__ % 10) > 0
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
# endif
#elif defined(__WATCOMC__)
# define COMPILER_ID "OpenWatcom"
/* __WATCOMC__ = VVRP + 1100 */
# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
# if (__WATCOMC__ % 10) > 0
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
# endif
#elif defined(__SUNPRO_CC)
# define COMPILER_ID "SunPro"
# if __SUNPRO_CC >= 0x5100
/* __SUNPRO_CC = 0xVRRP */
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12)
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF)
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF)
# else
/* __SUNPRO_CC = 0xVRP */
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8)
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF)
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF)
# endif
#elif defined(__HP_aCC)
# define COMPILER_ID "HP"
/* __HP_aCC = VVRRPP */
# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000)
# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100)
# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100)
#elif defined(__DECCXX)
# define COMPILER_ID "Compaq"
/* __DECCXX_VER = VVRRTPPPP */
# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000)
# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100)
# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000)
#elif defined(__IBMCPP__) && defined(__COMPILER_VER__)
# define COMPILER_ID "zOS"
/* __IBMCPP__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
#elif defined(__open_xl__) && defined(__clang__)
# define COMPILER_ID "IBMClang"
# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__)
# define COMPILER_VERSION_MINOR DEC(__open_xl_release__)
# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__)
# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__)
#elif defined(__ibmxl__) && defined(__clang__)
# define COMPILER_ID "XLClang"
# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__)
# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__)
# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__)
# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__)
#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800
# define COMPILER_ID "XL"
/* __IBMCPP__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800
# define COMPILER_ID "VisualAge"
/* __IBMCPP__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
#elif defined(__NVCOMPILER)
# define COMPILER_ID "NVHPC"
# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__)
# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__)
# if defined(__NVCOMPILER_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__)
# endif
#elif defined(__PGI)
# define COMPILER_ID "PGI"
# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
# if defined(__PGIC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
# endif
#elif defined(_CRAYC)
# define COMPILER_ID "Cray"
# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
#elif defined(__TI_COMPILER_VERSION__)
# define COMPILER_ID "TI"
/* __TI_COMPILER_VERSION__ = VVVRRRPPP */
# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000)
# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000)
#elif defined(__CLANG_FUJITSU)
# define COMPILER_ID "FujitsuClang"
# define COMPILER_VERSION_MAJOR DEC(__FCC_major__)
# define COMPILER_VERSION_MINOR DEC(__FCC_minor__)
# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__)
# define COMPILER_VERSION_INTERNAL_STR __clang_version__
#elif defined(__FUJITSU)
# define COMPILER_ID "Fujitsu"
# if defined(__FCC_version__)
# define COMPILER_VERSION __FCC_version__
# elif defined(__FCC_major__)
# define COMPILER_VERSION_MAJOR DEC(__FCC_major__)
# define COMPILER_VERSION_MINOR DEC(__FCC_minor__)
# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__)
# endif
# if defined(__fcc_version)
# define COMPILER_VERSION_INTERNAL DEC(__fcc_version)
# elif defined(__FCC_VERSION)
# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION)
# endif
#elif defined(__ghs__)
# define COMPILER_ID "GHS"
/* __GHS_VERSION_NUMBER = VVVVRP */
# ifdef __GHS_VERSION_NUMBER
# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100)
# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10)
# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10)
# endif
#elif defined(__SCO_VERSION__)
# define COMPILER_ID "SCO"
#elif defined(__ARMCC_VERSION) && !defined(__clang__)
# define COMPILER_ID "ARMCC"
#if __ARMCC_VERSION >= 1000000
/* __ARMCC_VERSION = VRRPPPP */
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000)
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100)
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
#else
/* __ARMCC_VERSION = VRPPPP */
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000)
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10)
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
#endif
#elif defined(__clang__) && defined(__apple_build_version__)
# define COMPILER_ID "AppleClang"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION)
# define COMPILER_ID "ARMClang"
# define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000)
# define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100)
# define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000)
# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION)
#elif defined(__clang__)
# define COMPILER_ID "Clang"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__))
# define COMPILER_ID "LCC"
# define COMPILER_VERSION_MAJOR DEC(1)
# if defined(__LCC__)
# define COMPILER_VERSION_MINOR DEC(__LCC__- 100)
# endif
# if defined(__LCC_MINOR__)
# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__)
# endif
# if defined(__GNUC__) && defined(__GNUC_MINOR__)
# define SIMULATE_ID "GNU"
# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
# if defined(__GNUC_PATCHLEVEL__)
# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
# endif
# endif
#elif defined(__GNUC__) || defined(__GNUG__)
# define COMPILER_ID "GNU"
# if defined(__GNUC__)
# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
# else
# define COMPILER_VERSION_MAJOR DEC(__GNUG__)
# endif
# if defined(__GNUC_MINOR__)
# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
# endif
# if defined(__GNUC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
# endif
#elif defined(_MSC_VER)
# define COMPILER_ID "MSVC"
/* _MSC_VER = VVRR */
# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
# if defined(_MSC_FULL_VER)
# if _MSC_VER >= 1400
/* _MSC_FULL_VER = VVRRPPPPP */
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
# else
/* _MSC_FULL_VER = VVRRPPPP */
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
# endif
# endif
# if defined(_MSC_BUILD)
# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
# endif
#elif defined(_ADI_COMPILER)
# define COMPILER_ID "ADSP"
#if defined(__VERSIONNUM__)
/* __VERSIONNUM__ = 0xVVRRPPTT */
# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF)
# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF)
# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF)
# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF)
#endif
#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
# define COMPILER_ID "IAR"
# if defined(__VER__) && defined(__ICCARM__)
# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000)
# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000)
# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000)
# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__))
# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100)
# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100))
# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__)
# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
# endif
/* These compilers are either not known or too old to define an
identification macro. Try to identify the platform and guess that
it is the native compiler. */
#elif defined(__hpux) || defined(__hpua)
# define COMPILER_ID "HP"
#else /* unknown compiler */
# define COMPILER_ID ""
#endif
/* Construct the string literal in pieces to prevent the source from
getting matched. Store it in a pointer rather than an array
because some compilers will just produce instructions to fill the
array rather than assigning a pointer to a static array. */
char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
#ifdef SIMULATE_ID
char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
#endif
#ifdef __QNXNTO__
char const* qnxnto = "INFO" ":" "qnxnto[]";
#endif
#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
#endif
#define STRINGIFY_HELPER(X) #X
#define STRINGIFY(X) STRINGIFY_HELPER(X)
/* Identify known platforms by name. */
#if defined(__linux) || defined(__linux__) || defined(linux)
# define PLATFORM_ID "Linux"
#elif defined(__MSYS__)
# define PLATFORM_ID "MSYS"
#elif defined(__CYGWIN__)
# define PLATFORM_ID "Cygwin"
#elif defined(__MINGW32__)
# define PLATFORM_ID "MinGW"
#elif defined(__APPLE__)
# define PLATFORM_ID "Darwin"
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
# define PLATFORM_ID "Windows"
#elif defined(__FreeBSD__) || defined(__FreeBSD)
# define PLATFORM_ID "FreeBSD"
#elif defined(__NetBSD__) || defined(__NetBSD)
# define PLATFORM_ID "NetBSD"
#elif defined(__OpenBSD__) || defined(__OPENBSD)
# define PLATFORM_ID "OpenBSD"
#elif defined(__sun) || defined(sun)
# define PLATFORM_ID "SunOS"
#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
# define PLATFORM_ID "AIX"
#elif defined(__hpux) || defined(__hpux__)
# define PLATFORM_ID "HP-UX"
#elif defined(__HAIKU__)
# define PLATFORM_ID "Haiku"
#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
# define PLATFORM_ID "BeOS"
#elif defined(__QNX__) || defined(__QNXNTO__)
# define PLATFORM_ID "QNX"
#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
# define PLATFORM_ID "Tru64"
#elif defined(__riscos) || defined(__riscos__)
# define PLATFORM_ID "RISCos"
#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
# define PLATFORM_ID "SINIX"
#elif defined(__UNIX_SV__)
# define PLATFORM_ID "UNIX_SV"
#elif defined(__bsdos__)
# define PLATFORM_ID "BSDOS"
#elif defined(_MPRAS) || defined(MPRAS)
# define PLATFORM_ID "MP-RAS"
#elif defined(__osf) || defined(__osf__)
# define PLATFORM_ID "OSF1"
#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
# define PLATFORM_ID "SCO_SV"
#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
# define PLATFORM_ID "ULTRIX"
#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
# define PLATFORM_ID "Xenix"
#elif defined(__WATCOMC__)
# if defined(__LINUX__)
# define PLATFORM_ID "Linux"
# elif defined(__DOS__)
# define PLATFORM_ID "DOS"
# elif defined(__OS2__)
# define PLATFORM_ID "OS2"
# elif defined(__WINDOWS__)
# define PLATFORM_ID "Windows3x"
# elif defined(__VXWORKS__)
# define PLATFORM_ID "VxWorks"
# else /* unknown platform */
# define PLATFORM_ID
# endif
#elif defined(__INTEGRITY)
# if defined(INT_178B)
# define PLATFORM_ID "Integrity178"
# else /* regular Integrity */
# define PLATFORM_ID "Integrity"
# endif
# elif defined(_ADI_COMPILER)
# define PLATFORM_ID "ADSP"
#else /* unknown platform */
# define PLATFORM_ID
#endif
/* For windows compilers MSVC and Intel we can determine
the architecture of the compiler being used. This is because
the compilers do not have flags that can change the architecture,
but rather depend on which compiler is being used
*/
#if defined(_WIN32) && defined(_MSC_VER)
# if defined(_M_IA64)
# define ARCHITECTURE_ID "IA64"
# elif defined(_M_ARM64EC)
# define ARCHITECTURE_ID "ARM64EC"
# elif defined(_M_X64) || defined(_M_AMD64)
# define ARCHITECTURE_ID "x64"
# elif defined(_M_IX86)
# define ARCHITECTURE_ID "X86"
# elif defined(_M_ARM64)
# define ARCHITECTURE_ID "ARM64"
# elif defined(_M_ARM)
# if _M_ARM == 4
# define ARCHITECTURE_ID "ARMV4I"
# elif _M_ARM == 5
# define ARCHITECTURE_ID "ARMV5I"
# else
# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
# endif
# elif defined(_M_MIPS)
# define ARCHITECTURE_ID "MIPS"
# elif defined(_M_SH)
# define ARCHITECTURE_ID "SHx"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__WATCOMC__)
# if defined(_M_I86)
# define ARCHITECTURE_ID "I86"
# elif defined(_M_IX86)
# define ARCHITECTURE_ID "X86"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
# if defined(__ICCARM__)
# define ARCHITECTURE_ID "ARM"
# elif defined(__ICCRX__)
# define ARCHITECTURE_ID "RX"
# elif defined(__ICCRH850__)
# define ARCHITECTURE_ID "RH850"
# elif defined(__ICCRL78__)
# define ARCHITECTURE_ID "RL78"
# elif defined(__ICCRISCV__)
# define ARCHITECTURE_ID "RISCV"
# elif defined(__ICCAVR__)
# define ARCHITECTURE_ID "AVR"
# elif defined(__ICC430__)
# define ARCHITECTURE_ID "MSP430"
# elif defined(__ICCV850__)
# define ARCHITECTURE_ID "V850"
# elif defined(__ICC8051__)
# define ARCHITECTURE_ID "8051"
# elif defined(__ICCSTM8__)
# define ARCHITECTURE_ID "STM8"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__ghs__)
# if defined(__PPC64__)
# define ARCHITECTURE_ID "PPC64"
# elif defined(__ppc__)
# define ARCHITECTURE_ID "PPC"
# elif defined(__ARM__)
# define ARCHITECTURE_ID "ARM"
# elif defined(__x86_64__)
# define ARCHITECTURE_ID "x64"
# elif defined(__i386__)
# define ARCHITECTURE_ID "X86"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__TI_COMPILER_VERSION__)
# if defined(__TI_ARM__)
# define ARCHITECTURE_ID "ARM"
# elif defined(__MSP430__)
# define ARCHITECTURE_ID "MSP430"
# elif defined(__TMS320C28XX__)
# define ARCHITECTURE_ID "TMS320C28x"
# elif defined(__TMS320C6X__) || defined(_TMS320C6X)
# define ARCHITECTURE_ID "TMS320C6x"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
# elif defined(__ADSPSHARC__)
# define ARCHITECTURE_ID "SHARC"
# elif defined(__ADSPBLACKFIN__)
# define ARCHITECTURE_ID "Blackfin"
#else
# define ARCHITECTURE_ID
#endif
/* Convert integer to decimal digit literals. */
#define DEC(n) \
('0' + (((n) / 10000000)%10)), \
('0' + (((n) / 1000000)%10)), \
('0' + (((n) / 100000)%10)), \
('0' + (((n) / 10000)%10)), \
('0' + (((n) / 1000)%10)), \
('0' + (((n) / 100)%10)), \
('0' + (((n) / 10)%10)), \
('0' + ((n) % 10))
/* Convert integer to hex digit literals. */
#define HEX(n) \
('0' + ((n)>>28 & 0xF)), \
('0' + ((n)>>24 & 0xF)), \
('0' + ((n)>>20 & 0xF)), \
('0' + ((n)>>16 & 0xF)), \
('0' + ((n)>>12 & 0xF)), \
('0' + ((n)>>8 & 0xF)), \
('0' + ((n)>>4 & 0xF)), \
('0' + ((n) & 0xF))
/* Construct a string literal encoding the version number. */
#ifdef COMPILER_VERSION
char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]";
/* Construct a string literal encoding the version number components. */
#elif defined(COMPILER_VERSION_MAJOR)
char const info_version[] = {
'I', 'N', 'F', 'O', ':',
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
COMPILER_VERSION_MAJOR,
# ifdef COMPILER_VERSION_MINOR
'.', COMPILER_VERSION_MINOR,
# ifdef COMPILER_VERSION_PATCH
'.', COMPILER_VERSION_PATCH,
# ifdef COMPILER_VERSION_TWEAK
'.', COMPILER_VERSION_TWEAK,
# endif
# endif
# endif
']','\0'};
#endif
/* Construct a string literal encoding the internal version number. */
#ifdef COMPILER_VERSION_INTERNAL
char const info_version_internal[] = {
'I', 'N', 'F', 'O', ':',
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_',
'i','n','t','e','r','n','a','l','[',
COMPILER_VERSION_INTERNAL,']','\0'};
#elif defined(COMPILER_VERSION_INTERNAL_STR)
char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]";
#endif
/* Construct a string literal encoding the version number components. */
#ifdef SIMULATE_VERSION_MAJOR
char const info_simulate_version[] = {
'I', 'N', 'F', 'O', ':',
's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
SIMULATE_VERSION_MAJOR,
# ifdef SIMULATE_VERSION_MINOR
'.', SIMULATE_VERSION_MINOR,
# ifdef SIMULATE_VERSION_PATCH
'.', SIMULATE_VERSION_PATCH,
# ifdef SIMULATE_VERSION_TWEAK
'.', SIMULATE_VERSION_TWEAK,
# endif
# endif
# endif
']','\0'};
#endif
/* Construct the string literal in pieces to prevent the source from
getting matched. Store it in a pointer rather than an array
because some compilers will just produce instructions to fill the
array rather than assigning a pointer to a static array. */
char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L
# if defined(__INTEL_CXX11_MODE__)
# if defined(__cpp_aggregate_nsdmi)
# define CXX_STD 201402L
# else
# define CXX_STD 201103L
# endif
# else
# define CXX_STD 199711L
# endif
#elif defined(_MSC_VER) && defined(_MSVC_LANG)
# define CXX_STD _MSVC_LANG
#else
# define CXX_STD __cplusplus
#endif
const char* info_language_standard_default = "INFO" ":" "standard_default["
#if CXX_STD > 202002L
"23"
#elif CXX_STD > 201703L
"20"
#elif CXX_STD >= 201703L
"17"
#elif CXX_STD >= 201402L
"14"
#elif CXX_STD >= 201103L
"11"
#else
"98"
#endif
"]";
const char* info_language_extensions_default = "INFO" ":" "extensions_default["
#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \
defined(__TI_COMPILER_VERSION__)) && \
!defined(__STRICT_ANSI__)
"ON"
#else
"OFF"
#endif
"]";
/*--------------------------------------------------------------------------*/
int main(int argc, char* argv[])
{
int require = 0;
require += info_compiler[argc];
require += info_platform[argc];
#ifdef COMPILER_VERSION_MAJOR
require += info_version[argc];
#endif
#ifdef COMPILER_VERSION_INTERNAL
require += info_version_internal[argc];
#endif
#ifdef SIMULATE_ID
require += info_simulate[argc];
#endif
#ifdef SIMULATE_VERSION_MAJOR
require += info_simulate_version[argc];
#endif
#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
require += info_cray[argc];
#endif
require += info_language_standard_default[argc];
require += info_language_extensions_default[argc];
(void)argv;
return require;
}