From 298862d153fb549a930330d012c0e4907ee6ae36 Mon Sep 17 00:00:00 2001 From: liyi Date: Fri, 6 Dec 2024 14:21:51 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E5=8F=91=E9=80=81=E5=AF=B9=E8=AF=9D=E8=AF=B7=E6=B1=82=E6=B6=88?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/login/login/starLock_login_page.dart | 8 ++++++ .../startChart/command/message_command.dart | 25 +++++++++++++++++++ .../handle/impl/udp_talk_request_handler.dart | 18 ++++++------- lib/talk/startChart/start_chart_manage.dart | 9 +++++++ 4 files changed, 51 insertions(+), 9 deletions(-) diff --git a/lib/login/login/starLock_login_page.dart b/lib/login/login/starLock_login_page.dart index bef27c12..0a920d4f 100755 --- a/lib/login/login/starLock_login_page.dart +++ b/lib/login/login/starLock_login_page.dart @@ -242,6 +242,14 @@ class _StarLockLoginPageState extends State { ToPeerId: '3phX8Ng2cZHz5NtP8xAf6nYy2z1BYytoejgjoHrWMGhH'); }, ), + SubmitBtn( + btnName: '发送对讲请求', + onClick: () { + StartChartManage().sendCallRequestMessage( + ToPeerId: '59wtMp6DTpBwrEViT9FQpBMZWnc6MEnLxGuP9eYB4JKt', + ); + }, + ), SizedBox(height: 50.w), Row( mainAxisAlignment: MainAxisAlignment.center, diff --git a/lib/talk/startChart/command/message_command.dart b/lib/talk/startChart/command/message_command.dart index 8f94ee5a..35d57a4d 100644 --- a/lib/talk/startChart/command/message_command.dart +++ b/lib/talk/startChart/command/message_command.dart @@ -13,6 +13,7 @@ import 'package:star_lock/talk/startChart/proto/talk_data.pb.dart'; import 'package:star_lock/talk/startChart/proto/talk_expect.pb.dart'; import 'package:star_lock/talk/startChart/proto/talk_ping.pb.dart'; import 'package:star_lock/talk/startChart/proto/talk_reject.pb.dart'; +import 'package:star_lock/talk/startChart/proto/talk_request.pb.dart'; class MessageCommand { /// 客户端去中继上线命令 @@ -137,6 +138,30 @@ class MessageCommand { return _hexToBytes(serializedBytesString); } + // 发送对话请求消息 + static List talkRequestMessage({ + required String FromPeerId, + required String ToPeerId, + }) { + final talkReq = TalkReq(); + final payload = talkReq.writeToBuffer(); + ScpMessage message = ScpMessage( + ProtocolFlag: ProtocolFlagConstant.scp01, + MessageType: MessageTypeConstant.Req, + MessageId: 1, + SpTotal: 0, + SpIndex: 0, + FromPeerId: FromPeerId, + ToPeerId: ToPeerId, + Payload: payload, + PayloadCRC: calculationCrc(payload), + PayloadLength: payload.length, + PayloadType: PayloadTypeConstant.callRequest, + ); + String serializedBytesString = message.serialize(); + return _hexToBytes(serializedBytesString); + } + // 拒绝接听消息 static List talkRejectMessage({ required String FromPeerId, diff --git a/lib/talk/startChart/handle/impl/udp_talk_request_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_request_handler.dart index 7cb5e207..01997853 100644 --- a/lib/talk/startChart/handle/impl/udp_talk_request_handler.dart +++ b/lib/talk/startChart/handle/impl/udp_talk_request_handler.dart @@ -17,15 +17,15 @@ class UdpTalkRequestHandler extends ScpMessageBaseHandle @override void handle(ScpMessage scpMessage) { print('收到对讲请求:${scpMessage}'); - final TalkReq genericResp = scpMessage.Payload; - // 回复成功消息 - startChartManage.sendGenericRespSuccessMessage( - ToPeerId: scpMessage.FromPeerId!, - FromPeerId: scpMessage.ToPeerId!, - PayloadType: scpMessage.PayloadType!, - ); - // 处理收到接听请求后的事件 - _talkRequestEvent(); + // final TalkReq genericResp = scpMessage.Payload; + // // 回复成功消息 + // startChartManage.sendGenericRespSuccessMessage( + // ToPeerId: scpMessage.FromPeerId!, + // FromPeerId: scpMessage.ToPeerId!, + // PayloadType: scpMessage.PayloadType!, + // ); + // // 处理收到接听请求后的事件 + // _talkRequestEvent(); } // 来电事件的处理 diff --git a/lib/talk/startChart/start_chart_manage.dart b/lib/talk/startChart/start_chart_manage.dart index f1b459a4..cc1dece1 100644 --- a/lib/talk/startChart/start_chart_manage.dart +++ b/lib/talk/startChart/start_chart_manage.dart @@ -182,6 +182,15 @@ class StartChartManage { ); await _sendMessage(message: message); } + // 发送对讲请求消息 + Future sendCallRequestMessage({required String ToPeerId}) async { + // 组装上线消息 + final message = MessageCommand.talkRequestMessage( + FromPeerId: FromPeerId, + ToPeerId: ToPeerId, + ); + await _sendMessage(message: message); + } // 发送心跳包消息 void _sendHeartbeatMessage() async {