// 秒寻科技
// 系统公共模块，定义全局需要用的数据结构
// zt
// 2023-02-27

#ifndef __SYS_MACRO_H__
#define __SYS_MACRO_H__

// 软件型号APLM:audio phone locate module
#define PUB_SOFTWARE_NAME_LEN 11
#define PUB_SOFTWARE_NAME "APLM8000SDK" // 软件名称：基于音频的手机定位模块开发包

// V2.1.00 2025-02-08 by zt 增加软件版本接口
// V2.1.01 2025-04-14 by zt 修改代码缺陷（修复轨迹跳变，修改极小值选择方法、用运动方向二次校验极小值）
// V2.1.02 2025-04-22 by zt 完善代码(完善手机移动方向预测代码，并将预测方向应用到二维定位中（利用预测方向修订第一径）；
// 修改信号同步模块中的设计缺陷，解决轨迹跳变问题，改善了定位效果)
// V2.1.03 2025-04-25 by zt 增加基于toa计算第一径偏移量的代码(toa应用的代码还未写)，修改代码中的缺陷(两处检查极小值点的错误)
#define PUB_SOFTWARE_VERSION_LEN 7
#define PUB_SOFTWARE_VERSION "V2.1.03" // 软件版本

#define PUB_M_PI 3.14159265358979323846
#define PUB_2PI (2 * 3.14159265358979323846)
#define PUB_M_PI_2 1.57079632679489661923

#define RET_OK 0   // 函数返回成功
#define RET_FAIL 1 // 函数返回失败

// 系统载波数量(最多9个载波)
#define PUB_SYS_CARRIER_NUM 9

// 系统时隙数
#define PUB_SYS_SLOT_NUM 4

// 声速，每秒343米
#define PUB_AUDIO_SPEED 343

// 信号采样率
#define PUB_SIGNAL_SAMPLE_RATIO 48000

// 信号同步向左偏移量，6000约42米（5000约35米）
#define PUB_SYNC_INDEX_OFFSET_NUM 5600 // 40米

// TODO 基站有效距离，单位米，28米
#define PUB_BTS_VALID_DISTANCE ((PUB_SYNC_INDEX_OFFSET_NUM * PUB_AUDIO_SPEED) / PUB_SIGNAL_SAMPLE_RATIO)

// 参与定位的基站，最多9个
#define PUB_LCT_BTS_MAX_NUM PUB_SYS_CARRIER_NUM

// FFT变换帧长（点数）
#define PUB_FFT_FRAME_LEN 16384

// 基站ID模块
#define PUB_BTS_LCT_BTS_DATA_USE_MAX_TIMES 5              // 定位基站数据最多使用次数
#define PUBLIC_BTS_ID_BITS_NUM 21                         // 基站ID比特位数
#define PUBLIC_BTS_ID_FRAMES (4 * PUBLIC_BTS_ID_BITS_NUM) // 基站ID比特帧数，4帧表征每比特
#define PUBLIC_BTS_ID_JUDGEMENT_FACTOR 15                 // 基站ID判决因子，放大100倍保存
#define PUB_BTS_ID_NUM 1164

// 定位相关
#define PUB_SLOT_FRAME_LEN 12000                       // 每次定位处理的信号长度
#define PUB_LCT_DATA_LIST_LEN (6 * PUB_SLOT_FRAME_LEN) // 定位数据队列长度，缓存6帧数据

// // 同步镜像
#define PUBLIC_SYNC_FRAMES BTS_AMPL_MIRROR_FRAMES // 同步帧数（与最强幅度镜像帧数相同）

// 定位模块
#define PUB_TWO_BTS_MAX_NUM 6               // 与本站参与两站定位的基站最大数量
#define PUBLIC_LCT_PEAK_LIST_LEN 256        // 峰值队列长度
#define PUBLIC_LCT_MIN_VALUE_FRONT_LEN 1000 // 真内最小值前面的长度，用于选择帧内噪声值
#define PUBLIC_LCT_CFAR_LEN 160             // cfar判决统计长度(单边)
#define PUBLIC_LCT_TRACK_WINDOW_WIDTH 280   // 跟踪第一径窗口长度（单边）
#define PUB_LCT_FP_OFFSET_VALID_THRES 350   // 第一径偏移门限

// 路由模块
#define PUB_MAC_ADDRESS_LEN 12 // MAC地址字节数

// 测试宏定义
#define PUB_DEBUG_ENABLE 1 // 打开调试开关
// #define PUB_DEBUG_ENABLE 0 // 关闭调试开关

#endif
