# BLE NUS 调试消息发送功能 - 已完成 ✅

## 实现内容

### 1. BLE 初始化 ✅
- 在 `main.c` 中添加了 BLE 初始化
- 使用 `bt_enable()` 启用蓝牙
- 使用 `bt_le_adv_start()` 开始广播

### 2. BLE NUS 服务初始化 ✅
- 实现了 `ble_nus_log_init()` 函数
- 使用 `bt_nus_init()` 初始化 NUS 服务
- 注册了数据接收回调 `nus_received_cb()`

### 3. 日志发送功能 ✅
- 实现了 `bt_nus_send()` 调用
- 在日志后端处理函数中发送日志到 BLE
- 处理了发送失败的情况（`-EAGAIN` 等）

### 4. 协议处理 ✅
- 实现了命令响应发送
- 实现了历史日志发送
- 所有发送都通过 `bt_nus_send()` 实现

## 代码位置

### 主要文件
- `src/ble_nus_log.c` - BLE NUS 日志后端实现
- `src/ble_nus_log.h` - BLE NUS 日志后端接口
- `src/main.c` - 主程序，包含 BLE 初始化

### 关键函数

1. **`ble_nus_log_init()`** - 初始化 BLE NUS 服务
   ```c
   int ble_nus_log_init(void);
   ```

2. **`bt_nus_send()`** - 发送数据到 BLE NUS
   ```c
   int bt_nus_send(struct bt_nus *nus, const uint8_t *data, uint16_t len);
   ```

3. **`nus_received_cb()`** - 接收 BLE NUS 数据回调
   ```c
   static void nus_received_cb(struct bt_conn *conn, const uint8_t *const data, uint16_t len);
   ```

## 配置

### prj.conf
```conf
CONFIG_BT=y
CONFIG_BT_PERIPHERAL=y
CONFIG_BT_BROADCASTER=y
CONFIG_BT_NUS=y
```

## 使用方式

### 1. 编译和烧录
```bash
west build -b nrf52dk_nrf52832
west flash
```

### 2. 连接设备
- 使用手机 App（nRF Connect）扫描并连接到设备
- 设备名称会在广播中显示

### 3. 查看日志
- 打开 NUS 服务
- 实时查看日志输出
- 日志格式：`[类型字节][日志内容]`
  - `0x00` = 日志数据

### 4. 发送命令
- 通过 NUS 发送命令控制日志
- 命令格式：`[0x01][命令字节][命令数据]`
  - `0x01` = 启用日志
  - `0x02` = 禁用日志
  - `0x03` = 设置日志级别
  - `0x04` = 读取历史日志
  - `0x05` = 清除日志缓冲
  - `0x06` = 获取状态

## 测试步骤

1. **编译测试**
   ```bash
   west build -b nrf52dk_nrf52832
   ```
   确保没有编译错误

2. **烧录测试**
   ```bash
   west flash
   ```
   或使用 `flash.bat`

3. **连接测试**
   - 打开 nRF Connect App
   - 扫描设备
   - 连接到设备
   - 打开 NUS 服务

4. **日志测试**
   - 查看实时日志输出
   - 发送命令测试（如启用/禁用日志）

## 注意事项

1. **BLE 连接**：只有连接后才能看到日志
2. **日志级别**：默认日志级别是 `LOG_LEVEL_INF`
3. **发送失败**：如果发送失败（`-EAGAIN`），日志会缓冲，连接后可以读取
4. **性能**：日志量大时可能影响 BLE 性能，建议使用日志级别控制

## 下一步

1. **测试功能**：编译、烧录、连接测试
2. **优化性能**：根据实际使用情况调整日志级别和缓冲大小
3. **添加功能**：可以添加更多命令（如读取错误日志等）

