Files
radar_data_process/data_process_class_dll/parameters.h
T

102 lines
5.1 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef PARAMETERS_H
#define PARAMETERS_H
#pragma once
/**********************************雷达参数*************************************************/
#define PI 3.1415926f
/**********************************版本信息*************************************************/
#define MAJOR_VERSION 1
#define MINOR_VERSION 5
#define PATCH_VERSION 9
#define VERSION_INFO "GENERIC"
#define STRINGIFY_IMPL(x) #x
#define STRINGIFY(x) STRINGIFY_IMPL(x)
#define VERSION_STRING \
"V" STRINGIFY(MAJOR_VERSION) "." \
STRINGIFY(MINOR_VERSION) "." \
STRINGIFY(PATCH_VERSION) "." \
VERSION_INFO
/**********************************日志输出*************************************************/
// 日志基于内置 spdlog v1.17.0(third_party/spdlog,来源见其 UPSTREAM.md):
// 1) 每次调用 Data_Process_Factory::GetB() 创建实例时,rdp_log::Init() 同时输出到
// 标准输出与日志文件(RDP_LOG_DIR 目录),日志文件名按当前日期+时间自动命名
// (如 rdp_20240826_153000.log,每次初始化一个文件);Destroy() 时关闭日志文件;
// 2) 原 RDP_LOG_ENABLE 布尔开关已移除:日志级别改由 spdlog 的 SPDLOG_ACTIVE_LEVEL
// 在编译期控制,由 CMake 选项 RDP_LOG_LEVEL(AUTO/TRACE/DEBUG/INFO/WARN/ERROR/
// CRITICAL/OFF)映射;AUTO 时 Debug 构建 = TRACE、其余构建 = INFO,OFF 表示
// 编译期关闭全部 RDP_LOG_* 日志。低于该级别的日志实参不求值。详见 README 10.4。
//日志文件输出目录(相对当前工作目录的路径,目录不存在时自动创建)
#define RDP_LOG_DIR ".\\rdp_logs\\"
/**********************************数据记录调试开关*******************************************/
// 数据记录调试功能(结构体 -> SQLite 数据表,ORM 由内置 ormpp 完成)由 CMake 选项
// RDP_DATA_RECORD(AUTO/ON/OFF)控制:AUTO 时 Debug 构建启用、Release 构建关闭(交付默认)。
// 启用时由构建系统定义 RDP_RECORD_ENABLE,记录模块(rdp_record.cpp + sqlite3)才参与编译;
// 关闭时 RDP_RECORD 宏展开为 ((void)0),实参不求值,不做任何记录、不留任何运行开销。
// 注意:此处不提供手工开关宏,请在构建配置中选择(详见 docs/data_record_debug.md)。
//记录数据库存放目录(相对宿主进程当前工作目录,不存在时自动创建)
#define RDP_RECORD_DB_DIR ".\\rdp_records\\"
//数据记录性能参数(V1.5.8 优化:批量事务 + 异步写线程 + WAL)
//说明:以下宏只被 rdp_record.cpp 使用;用 #ifndef 保护,便于用编译选项临时覆盖做测试。
//队列字节上限:处理线程入队总量超过该值时整批丢弃(不阻塞处理线程)
#ifndef RDP_RECORD_QUEUE_CAP_BYTES
#define RDP_RECORD_QUEUE_CAP_BYTES (64u * 1024u * 1024u)
#endif
//队列批数上限(防止小批过多导致 deque 开销/延迟)
#ifndef RDP_RECORD_QUEUE_MAX_BATCHES
#define RDP_RECORD_QUEUE_MAX_BATCHES 4096u
#endif
//写线程每次事务提交的目标行数(累积到该行数或等待超时即提交)
#ifndef RDP_RECORD_WRITE_BATCH_ROWS
#define RDP_RECORD_WRITE_BATCH_ROWS 4096u
#endif
//写线程为凑批而等待的最长时间(毫秒)
#ifndef RDP_RECORD_WRITE_MAX_WAIT_MS
#define RDP_RECORD_WRITE_MAX_WAIT_MS 50u
#endif
//关联信息单次入队分块上限(⑥ 单圈行数可能很大,分块限制处理线程内存峰值;
//取值应大于常见单圈候选数,避免同一圈内多次重新分配;131072 行 Asso_Info 约 11 MB)
#ifndef RDP_RECORD_ASSO_CHUNK_ROWS
#define RDP_RECORD_ASSO_CHUNK_ROWS 131072u
#endif
//SQLite 页缓存大小(KB,负数表示 KB;默认 8 MB)
#ifndef RDP_RECORD_SQLITE_CACHE_KB
#define RDP_RECORD_SQLITE_CACHE_KB 8192
#endif
//SQLite 忙等待超时(毫秒)
#ifndef RDP_RECORD_SQLITE_BUSY_TIMEOUT_MS
#define RDP_RECORD_SQLITE_BUSY_TIMEOUT_MS 2000
#endif
//是否尝试开启 WAL(1=尝试;失败/不支持时自动回退 DELETE 日志模式)
#ifndef RDP_RECORD_SQLITE_WAL
#define RDP_RECORD_SQLITE_WAL 1
#endif
//连续写入错误达到该次数后全局熔断(停止记录,避免持续消耗写线程)
#ifndef RDP_RECORD_MAX_CONSECUTIVE_ERRORS
#define RDP_RECORD_MAX_CONSECUTIVE_ERRORS 10
#endif
//队列丢弃日志的限频间隔(每丢弃多少行提示一次)
#ifndef RDP_RECORD_DROP_LOG_INTERVAL
#define RDP_RECORD_DROP_LOG_INTERVAL 1024u
#endif
/******************************编译期容量常量***********************************************/
// 说明:下列常量是「接口/内存布局」需要的编译期容量,不是雷达工作参数,
// 雷达工作参数统一由 TOML 配置文件经 parameters_reload() 载入 struct.h::RDP_parameter。
//输出航迹数组的容量(宿主接口固定维度,见 data_process_class_dll.h)
#define MAX_TRACK_NUM 500
//TAS 跟踪队列容量上限(运行期配置项 tas_track_num_max 不得超过该值)
#define RDP_TAS_QUEUE_CAPACITY 30
#define Round(x) (((x) > 0) \
? (((int)((x) + 0.5) > (int)(x)) ? ((int)(x) + 1) : ((int)(x))) \
: (((int)((x) - 0.5) < (int)(x)) ? ((int)(x) - 1) : ((int)(x))))
#endif // PARAMETERS_H