# 线程迁移进度

## 已完成 ✅

### 阶段 1：低频任务（基础框架）

1. ✅ **调度器框架** (`scheduler.h` / `scheduler.c`)
   - 创建了统一的调度器模块
   - 支持启动/停止所有定时任务
   - 线程管理框架

2. ✅ **电池更新线程** (`battery_thread`)
   - 周期：3 秒
   - 对应：`acqBattTimer`
   - 状态：框架已创建，等待 `acq` 模块迁移后实现具体功能

3. ✅ **BLE BAS 更新线程** (`ble_bas_thread`)
   - 周期：10 秒
   - 对应：`bleBasTimer`
   - 状态：框架已创建，等待 BLE 模块迁移后实现具体功能

## 待完成 ⏳

### 阶段 2：中频任务（使用工作队列）

4. ⏳ **BLE CPS 更新** (`bleCpsTimer`)
   - 周期：250ms
   - 计划：使用 `k_work_delayable`

5. ⏳ **BLE ESM 更新** (`bleEsmTimer`)
   - 周期：30-200ms
   - 计划：使用 `k_work_delayable`

6. ⏳ **BLE FCS 更新** (`bleFcsTimer`)
   - 周期：100-150ms
   - 特殊：需要支持暂停/恢复
   - 计划：使用 `k_work_delayable` + 状态标志

### 阶段 3：高频任务（独立线程）

7. ⏳ **扭矩采集线程** (`acqTorqTimer`)
   - 周期：5ms
   - 复杂度：高（分阶段状态机）
   - 计划：独立高优先级线程

### 阶段 4：事件驱动

8. ⏳ **FSM 状态机定时器** (`singleShotTimer`)
   - 动态周期
   - 计划：与 FSM 一起迁移

## 架构说明

### 当前实现

```
main()
  └─> main_thread
       ├─> scheduler_init()  // 创建所有定时任务线程
       ├─> scheduler_start()  // 启动所有任务
       └─> 主循环

scheduler
  ├─> battery_thread (3s)     // 电池更新
  └─> ble_bas_thread (10s)    // BLE BAS 更新
```

### 计划架构

```
main()
  └─> main_thread
       ├─> scheduler_init()
       ├─> scheduler_start()
       └─> 主循环

scheduler
  ├─> battery_thread (3s)           // 低频：独立线程
  ├─> ble_bas_thread (10s)          // 低频：独立线程
  ├─> work_queue                    // 中频：工作队列
  │    ├─> ble_cps_work (250ms)
  │    ├─> ble_esm_work (30-200ms)
  │    └─> ble_fcs_work (100-150ms, 可暂停)
  └─> acq_torque_thread (5ms)      // 高频：独立高优先级线程
```

## 下一步

1. **编译测试**：确保当前实现可以编译
2. **迁移 acq 模块**：实现 `acq.updateBatterySync()`
3. **迁移 BLE 模块**：实现 `bleBas->notifyWeak()`
4. **实现阶段 2**：添加工作队列支持中频任务

