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 {