# BLE NUS 日志输出方案总结

## ✅ 结论：BLE NUS 是**完全可行**且**推荐**的方案

### 为什么推荐 BLE NUS？

1. **适合您的场景**：
   - ✅ 产品安装在自行车转盘上，无法连接开发板
   - ✅ 可以通过手机 App 实时查看日志
   - ✅ 不需要额外硬件

2. **技术优势**：
   - ✅ Nordic 官方标准服务，稳定可靠
   - ✅ 可以双向通信（发送命令控制日志级别）
   - ✅ 可以缓冲历史日志（连接后可读取）

3. **实际应用**：
   - ✅ 开发阶段：RTT（开发板）+ BLE NUS（实际测试）
   - ✅ 现场调试：BLE NUS（手机 App）
   - ✅ 生产维护：BLE NUS（关键错误日志）

## 实现状态

### ✅ 已完成

1. **基础框架**：
   - `ble_nus_log.h` / `ble_nus_log.c` - BLE NUS 日志后端框架
   - 日志缓冲结构（环形缓冲区，存储最近 50 条日志）
   - BLE 连接状态检测

2. **配置**：
   - 在 `prj.conf` 中启用了 `CONFIG_BT_NUS=y`
   - 已添加到 CMakeLists.txt

### ⏳ 待完成（等 BLE 模块迁移后）

1. **BLE NUS 服务初始化**：
   - 需要调用 `bt_nus_init()` 初始化 NUS 服务
   - 需要注册 NUS 数据接收回调

2. **日志发送**：
   - 实现 `bt_nus_send()` 调用，将日志发送到 BLE
   - 处理 BLE 未连接的情况（只缓冲，不发送）

3. **日志缓冲读取**：
   - 实现通过 BLE NUS 读取历史日志的功能
   - 可以发送命令（如 "dump_logs"）来获取缓冲的日志

## 使用方式

### 开发阶段

1. **开发板连接时**：使用 RTT Viewer 查看日志
2. **实际测试时**：使用手机 App（nRF Connect）通过 BLE NUS 查看日志

### 现场调试

1. **连接设备**：
   - 打开手机 App（nRF Connect）
   - 扫描并连接到设备
   - 打开 NUS 服务

2. **查看日志**：
   - 实时查看日志输出
   - 可以发送命令（如 "set_log_level 3"）控制日志级别

3. **读取历史**：
   - 发送 "dump_logs" 命令读取缓冲的历史日志

## 手机 App 推荐

### nRF Connect（Nordic 官方，免费）⭐ 推荐

- ✅ 支持 NUS 服务
- ✅ 可以查看实时日志
- ✅ 可以发送命令
- ✅ 免费，功能完整

**下载**：
- iOS: App Store 搜索 "nRF Connect"
- Android: Google Play 搜索 "nRF Connect"

### 自定义 App（可选，未来）

如果需要更高级的功能：
- 日志过滤
- 日志保存到文件
- 日志统计和分析
- 自定义命令

## 与其他方案对比

| 方案 | 实时性 | 历史日志 | 复杂度 | 推荐度 | 适用场景 |
|------|--------|----------|--------|--------|----------|
| **BLE NUS** | ✅ 实时 | ✅ 缓冲 | 中 | ⭐⭐⭐⭐⭐ | **现场调试** |
| RTT | ✅ 实时 | ❌ 无 | 低 | ⭐⭐⭐ | 开发阶段 |
| UART | ✅ 实时 | ❌ 无 | 低 | ⭐⭐ | 需要硬件 |
| Flash 存储 | ❌ 需读取 | ✅ 完整 | 高 | ⭐⭐⭐ | 关键错误 |

## 注意事项

1. **性能影响**：
   - 日志量大时可能影响 BLE 性能
   - **建议**：使用日志级别控制，生产环境只记录错误

2. **连接稳定性**：
   - BLE 连接可能不稳定（运动时）
   - **建议**：添加日志缓冲，连接后可读取历史

3. **功耗**：
   - BLE 传输会增加功耗
   - **建议**：可以按需启用/禁用日志输出

4. **安全性**：
   - 生产环境可能需要限制日志
   - **建议**：添加日志级别控制，避免泄露敏感信息

## 下一步

1. **等待 BLE 模块迁移**：实现 BLE NUS 服务初始化
2. **完善日志发送**：实现 `bt_nus_send()` 调用
3. **添加命令支持**：实现日志控制命令

## 总结

**BLE NUS 是您场景下的最佳选择**：
- ✅ 完全可行
- ✅ 适合现场调试
- ✅ 可以实时查看日志
- ✅ 可以缓冲历史日志
- ✅ 标准服务，稳定可靠

**建议**：继续使用 BLE NUS 方案，等 BLE 模块迁移后完善实现。

