100 lines
4.8 KiB
C++
100 lines
4.8 KiB
C++
#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
|
||
|
||
/**********************************日志输出开关**********************************************/
|
||
// 日志文件输出功能开关:
|
||
// 1) 定义(默认)RDP_LOG_ENABLE:启用日志文件输出 —— 调用 Data_Process_Factory::GetB()
|
||
// 时自动将 std::cout 重定向到日志文件,日志文件存放于 RDP_LOG_DIR 目录,
|
||
// 文件名按当前日期+时间自动命名(如 rdp_20240826_153000.log);
|
||
// 2) 注释掉 RDP_LOG_ENABLE:关闭 —— 不做重定向,日志仍输出到标准输出(控制台)。
|
||
// #define RDP_LOG_ENABLE
|
||
|
||
//日志文件输出目录(相对当前工作目录的路径,目录不存在时自动创建)
|
||
#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
|