import 'dart:convert'; import 'package:star_lock/app_settings/app_settings.dart'; import 'package:star_lock/blue/reciver_data.dart'; import 'package:star_lock/talk/starChart/constant/message_type_constant.dart'; import 'package:star_lock/talk/starChart/entity/scp_message.dart'; import 'package:star_lock/talk/starChart/handle/scp_message_base_handle.dart'; import 'package:star_lock/talk/starChart/handle/scp_message_handle.dart'; import 'package:star_lock/talk/starChart/proto/ble_message.pbserver.dart'; class UdpBlePassThroughHandler extends ScpMessageBaseHandle implements ScpMessageHandler { @override void handleReq(ScpMessage scpMessage) { //TODO 收到蓝牙透传请求指令 } @override void handleResp(ScpMessage scpMessage) async { final BleResp bleResp = scpMessage.Payload; String hexString = bleResp.structData .map((byte) => byte.toRadixString(16).padLeft(2, '0')) .join(' '); AppLog.log('收到蓝牙透传回复:$hexString'); // 触发数据对应的事件 await CommandReciverManager.appDataReceive(bleResp.structData); } @override void handleInvalidReq(ScpMessage scpMessage) {} @override void handleRealTimeData(ScpMessage scpMessage) {} @override deserializePayload( {required int payloadType, required int messageType, required List byte, int? offset, int? PayloadLength, int? spTotal, int? spIndex, int? messageId}) { if (messageType == MessageTypeConstant.Resp) { final BleResp bleResp = BleResp(); bleResp.mergeFromBuffer(byte); return bleResp; } else if (messageType == MessageTypeConstant.Req) { final BleReq talkExpect = BleReq(); talkExpect.mergeFromBuffer(byte); return talkExpect; } else { String payload = utf8.decode(byte); return payload; } } }