#ifndef PEDOMETER_H
#define PEDOMETER_H

#include <stdint.h> // 引入 int16_t, int32_t 等标准整数类型

// --- 宏定义和常量 ---

// MPU6050 加速度计的量程设置（假设设置为 ±2g）
#define ACCEL_SCALE_FACTOR 16384.0f 

// 最小采样距离：用于防止重复计数 (假设采样频率 100Hz, 0.2s 间隔)
#define MIN_STEP_DISTANCE 20 

// 静态基线：静止时合成加速度平方的理论值 (16384^2)
#define STATIC_BASE_SQ 9000000

// 动态阈值：冲击幅度超过重力基线的 20% 时触发计步。需要根据实际测试调整。
#define DYNAMIC_THRESHOLD_SQ (STATIC_BASE_SQ * 1.2) 


/**
 * @brief 使用三轴加速度数据计算步数。
 * * 这个函数将 MPU6050 的原始 16 位整数输入，计算其合成加速度的平方，
 * 并通过峰值检测和时间距离约束来计数步数。
 * * @param AccX MPU6050 X轴原始（16位）加速度数据。
 * @param AccY MPU6050 Y轴原始（16位）加速度数据。
 * @param AccZ MPU6050 Z轴原始（16位）加速度数据。
 * @return int 当前总步数。
 */
int calculate_steps(int16_t AccX, int16_t AccY, int16_t AccZ);


#endif // PEDOMETER_H