diff --git a/lib/talk/startChart/command/message_command.dart b/lib/talk/startChart/command/message_command.dart index dfc32593..f7357133 100644 --- a/lib/talk/startChart/command/message_command.dart +++ b/lib/talk/startChart/command/message_command.dart @@ -73,7 +73,7 @@ class MessageCommand { } // 网关初始化 - static List gatewayReset({ + static List gatewayResetMessage({ required int gatewayId, required String FromPeerId, required String ToPeerId, @@ -103,6 +103,28 @@ class MessageCommand { return _hexToBytes(serializedBytesString); } + // 通话保持消息 + static List talkPingMessage({ + required String FromPeerId, + required String ToPeerId, + }) { + ScpMessage message = ScpMessage( + ProtocolFlag: ProtocolFlagConstant.scp01, + MessageType: MessageTypeConstant.Req, + MessageId: 1, + SpTotal: 0, + SpIndex: 0, + FromPeerId: FromPeerId, + ToPeerId: ToPeerId, + Payload: 'hello', + PayloadCRC: 55230, + PayloadLength: 5, + PayloadType: PayloadTypeConstant.talkPing, + ); + String serializedBytesString = message.serialize(); + return _hexToBytes(serializedBytesString); + } + // 辅助方法:将16进制字符串转换为字节列表 static List _hexToBytes(String hex) { final bytes = []; diff --git a/lib/talk/startChart/handle/impl/udp_call_request_handler.dart b/lib/talk/startChart/handle/impl/udp_call_request_handler.dart index 1af828b6..48298d9e 100644 --- a/lib/talk/startChart/handle/impl/udp_call_request_handler.dart +++ b/lib/talk/startChart/handle/impl/udp_call_request_handler.dart @@ -9,12 +9,13 @@ import 'package:star_lock/talk/startChart/proto/generic.pb.dart'; import '../../start_chart_manage.dart'; -class UdpCallRequestHandler extends ScpMessageBaseHandle implements ScpMessageHandler { +class UdpCallRequestHandler extends ScpMessageBaseHandle + implements ScpMessageHandler { @override void handle(ScpMessage scpMessage) { final GenericResp genericResp = scpMessage.Payload; if (checkGenericRespSuccess(genericResp)) { - // TODO 收到呼叫请求,跳转到接听页面 + // 收到呼叫请求,跳转到接听页面 Get.toNamed( Routers.lockMonitoringPage, arguments: {'lockId': '111'}, diff --git a/lib/talk/startChart/handle/impl/udp_talk_accept_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_accept_handler.dart index 30ad262e..1eb4833a 100644 --- a/lib/talk/startChart/handle/impl/udp_talk_accept_handler.dart +++ b/lib/talk/startChart/handle/impl/udp_talk_accept_handler.dart @@ -15,6 +15,7 @@ class UdpTalkAcceptHandler extends ScpMessageBaseHandle final GenericResp genericResp = scpMessage.Payload; if (checkGenericRespSuccess(genericResp)) { // TODO 同意接听 + // TODO 启动发送通话保持 } } } diff --git a/lib/talk/startChart/handle/impl/udp_talk_ping_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_ping_handler.dart index 1e49b8f3..eef0529d 100644 --- a/lib/talk/startChart/handle/impl/udp_talk_ping_handler.dart +++ b/lib/talk/startChart/handle/impl/udp_talk_ping_handler.dart @@ -15,6 +15,7 @@ class UdpTalkPingHandler extends ScpMessageBaseHandle final GenericResp genericResp = scpMessage.Payload; if (checkGenericRespSuccess(genericResp)) { // TODO 呼叫保持 + } } } diff --git a/lib/talk/startChart/start_chart_manage.dart b/lib/talk/startChart/start_chart_manage.dart index 0d1dbad3..615b1901 100644 --- a/lib/talk/startChart/start_chart_manage.dart +++ b/lib/talk/startChart/start_chart_manage.dart @@ -202,17 +202,23 @@ class StartChartManage { // 发送网关初始化消息 void sendGatewayResetMessage( {required String ToPeerId, required int gatewayId}) async { - final message = MessageCommand.gatewayReset( + final message = MessageCommand.gatewayResetMessage( ToPeerId: ToPeerId, FromPeerId: FromPeerId, gatewayId: gatewayId, time: DateTime.now().millisecondsSinceEpoch ~/ 1000, ); await _sendMessage(message: message); - Get.toNamed( - Routers.lockMonitoringPage, - arguments: {'lockId': '111'}, + } + + // 发送通话保持消息 + void sendTalkPingMessage( + {required String ToPeerId, required int gatewayId}) async { + final message = MessageCommand.talkPingMessage( + ToPeerId: ToPeerId, + FromPeerId: FromPeerId, ); + await _sendMessage(message: message); } // 重新上线