# BLE SDK业务模块调用示例 ## 📋 设计说明 BLE SDK封装了新大洲本田蓝牙协议的所有细节,业务模块(特别是`module-vehicle`)可以直接调用高级API,不需要了解: - ❌ 数据包结构(包头、包尾、校验等) - ❌ 加密解密过程 - ❌ 分包处理逻辑 - ❌ UUID、功能码等底层细节 ## 🎯 业务模块调用示例 ### 1. 连接和握手 ```kotlin // 在module-vehicle中 val bleService: BLEService = BLEServiceImpl(context) // 扫描设备 bleService.startScan { device -> if (device.name.startsWith("SDH-Smart")) { // 连接设备 bleService.connect(device, object : ConnectCallback { override fun onConnected() { // 连接成功,进行握手 val userId = getUserID() // 16字节 val userType = BLEConstants.USER_TYPE_OWNER // 车主 bleService.handshake(userId, userType, object : HandshakeCallback { override fun onSuccess() { // 握手成功,可以发送指令了 } override fun onFailed(error: String) { // 握手失败 } }) } override fun onFailed(error: String) { // 连接失败 } override fun onDisconnected() { // 连接断开 } }) } } ``` ### 2. 发送应用控制指令(设撤防) ```kotlin // 设防 bleService.sendAppControlCommand( AppControlInstruction.SET_DEFENSE, byteArrayOf(0x01), // 0x01=设防,0x00=撤防 object : CommandCallback { override fun onResponse(response: BLEResponse) { if (response.success) { // 设防成功 } } override fun onTimeout() { // 超时 } override fun onError(error: String) { // 错误 } } ) ``` ### 3. 发送系统控制指令(氛围灯) ```kotlin // 开启氛围灯,设置颜色RGB(255, 0, 0) val colorData = byteArrayOf(0xFF.toByte(), 0x00, 0x00) // R, G, B bleService.sendSystemControlCommand( SystemControlInstruction.AMBIENT_LIGHT_COLOR, colorData, object : CommandCallback { override fun onResponse(response: BLEResponse) { // 处理响应 } override fun onTimeout() { } override fun onError(error: String) { } } ) ``` ### 4. 查询车辆信息 ```kotlin bleService.queryVehicleInfo(object : CommandCallback { override fun onResponse(response: BLEResponse) { if (response.success && response.data != null) { // 解析车辆信息(76字节数据) val vehicleInfo = parseVehicleInfo(response.data!!) } } override fun onTimeout() { } override fun onError(error: String) { } }) ``` ### 5. 接收实时数据 ```kotlin // 设置数据接收监听器 bleService.setDataReceivedListener(object : DataCallback { override fun onDataReceived(data: ByteArray) { // 解析实时数据(车辆状态、电池信息等) val vehicleStatus = parseVehicleStatus(data) } }) ``` ## ✅ 封装优势 1. **业务模块简单**:不需要了解协议细节,直接调用高级API 2. **协议集中管理**:所有协议相关代码都在BLE SDK中 3. **易于维护**:协议变更只需修改BLE SDK 4. **类型安全**:使用常量定义(AppControlInstruction、SystemControlInstruction等) ## 📝 注意事项 - BLE SDK负责协议封装,业务模块负责业务逻辑 - 响应数据(BLEResponse)在业务模块的Repository层转换为统一的业务模型 - 业务模块不需要知道数据包结构、加密方式等细节