diff --git a/lib/talk/startChart/command/message_command.dart b/lib/talk/startChart/command/message_command.dart index 76678044..dfc32593 100644 --- a/lib/talk/startChart/command/message_command.dart +++ b/lib/talk/startChart/command/message_command.dart @@ -84,7 +84,7 @@ class MessageCommand { iD: gatewayId, time: time, ); - // 构建荷载参数 + // 构建荷载长度 final payload = gatewayResetReq.writeToBuffer(); ScpMessage message = ScpMessage( ProtocolFlag: ProtocolFlagConstant.scp01, diff --git a/lib/talk/startChart/handle/impl/udp_ble_passthrough_handler.dart b/lib/talk/startChart/handle/impl/udp_ble_passthrough_handler.dart new file mode 100644 index 00000000..4bcad2a9 --- /dev/null +++ b/lib/talk/startChart/handle/impl/udp_ble_passthrough_handler.dart @@ -0,0 +1,19 @@ +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/appRouters.dart'; +import 'package:star_lock/talk/startChart/entity/scp_message.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart'; +import 'package:star_lock/talk/startChart/proto/ble_message.pbserver.dart'; +import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart'; +import 'package:star_lock/talk/startChart/proto/generic.pb.dart'; + +import '../../start_chart_manage.dart'; + +class UdpBlePassThroughHandler extends ScpMessageBaseHandle implements ScpMessageHandler { + @override + void handle(ScpMessage scpMessage) { + final BleResp bleResp = scpMessage.Payload; + // 蓝牙透传 + } +} diff --git a/lib/talk/startChart/handle/impl/udp_gateway_transfer_handler.dart b/lib/talk/startChart/handle/impl/udp_gateway_transfer_handler.dart new file mode 100644 index 00000000..a15da3f5 --- /dev/null +++ b/lib/talk/startChart/handle/impl/udp_gateway_transfer_handler.dart @@ -0,0 +1,20 @@ +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/talk/startChart/entity/scp_message.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart'; +import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart'; +import 'package:star_lock/talk/startChart/proto/generic.pb.dart'; + +import '../../start_chart_manage.dart'; + +class UdpGateWayTransferHandler extends ScpMessageBaseHandle + implements ScpMessageHandler { + @override + void handle(ScpMessage scpMessage) { + final GenericResp genericResp = scpMessage.Payload; + if (checkGenericRespSuccess(genericResp)) { + // TODO 网关转移成功 + } + } +} diff --git a/lib/talk/startChart/handle/impl/udp_remote_un_lock_handler.dart b/lib/talk/startChart/handle/impl/udp_remote_un_lock_handler.dart new file mode 100644 index 00000000..bd688b73 --- /dev/null +++ b/lib/talk/startChart/handle/impl/udp_remote_un_lock_handler.dart @@ -0,0 +1,20 @@ +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/appRouters.dart'; +import 'package:star_lock/talk/startChart/entity/scp_message.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart'; +import 'package:star_lock/talk/startChart/proto/ble_message.pbserver.dart'; +import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart'; +import 'package:star_lock/talk/startChart/proto/generic.pb.dart'; +import 'package:star_lock/talk/startChart/proto/remote_unlock.pb.dart'; + +import '../../start_chart_manage.dart'; + +class UdpRemoteUnLockHandler extends ScpMessageBaseHandle implements ScpMessageHandler { + @override + void handle(ScpMessage scpMessage) { + final RemoteUnlockReq remoteUnlockReq = scpMessage.Payload; + // 远程开锁 + } +} diff --git a/lib/talk/startChart/handle/impl/udp_talk_accept_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_accept_handler.dart new file mode 100644 index 00000000..30ad262e --- /dev/null +++ b/lib/talk/startChart/handle/impl/udp_talk_accept_handler.dart @@ -0,0 +1,20 @@ +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/talk/startChart/entity/scp_message.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart'; +import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart'; +import 'package:star_lock/talk/startChart/proto/generic.pb.dart'; + +import '../../start_chart_manage.dart'; + +class UdpTalkAcceptHandler extends ScpMessageBaseHandle + implements ScpMessageHandler { + @override + void handle(ScpMessage scpMessage) { + final GenericResp genericResp = scpMessage.Payload; + if (checkGenericRespSuccess(genericResp)) { + // TODO 同意接听 + } + } +} diff --git a/lib/talk/startChart/handle/impl/udp_talk_data_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_data_handler.dart new file mode 100644 index 00000000..433e657f --- /dev/null +++ b/lib/talk/startChart/handle/impl/udp_talk_data_handler.dart @@ -0,0 +1,20 @@ +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/talk/startChart/entity/scp_message.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart'; +import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart'; +import 'package:star_lock/talk/startChart/proto/generic.pb.dart'; + +import '../../start_chart_manage.dart'; + +class UdpTalkDataHandler extends ScpMessageBaseHandle + implements ScpMessageHandler { + @override + void handle(ScpMessage scpMessage) { + final GenericResp genericResp = scpMessage.Payload; + if (checkGenericRespSuccess(genericResp)) { + // TODO 音视频数据 + } + } +} diff --git a/lib/talk/startChart/handle/impl/udp_talk_expect_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_expect_handler.dart new file mode 100644 index 00000000..b6b084f3 --- /dev/null +++ b/lib/talk/startChart/handle/impl/udp_talk_expect_handler.dart @@ -0,0 +1,20 @@ +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/talk/startChart/entity/scp_message.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart'; +import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart'; +import 'package:star_lock/talk/startChart/proto/generic.pb.dart'; + +import '../../start_chart_manage.dart'; + +class UdpTalkExpectHandler extends ScpMessageBaseHandle + implements ScpMessageHandler { + @override + void handle(ScpMessage scpMessage) { + final GenericResp genericResp = scpMessage.Payload; + if (checkGenericRespSuccess(genericResp)) { + // TODO 预期接收 + } + } +} diff --git a/lib/talk/startChart/handle/impl/udp_talk_hangup_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_hangup_handler.dart new file mode 100644 index 00000000..39268713 --- /dev/null +++ b/lib/talk/startChart/handle/impl/udp_talk_hangup_handler.dart @@ -0,0 +1,20 @@ +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/talk/startChart/entity/scp_message.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart'; +import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart'; +import 'package:star_lock/talk/startChart/proto/generic.pb.dart'; + +import '../../start_chart_manage.dart'; + +class UdpTalkHangUpHandler extends ScpMessageBaseHandle + implements ScpMessageHandler { + @override + void handle(ScpMessage scpMessage) { + final GenericResp genericResp = scpMessage.Payload; + if (checkGenericRespSuccess(genericResp)) { + // 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 new file mode 100644 index 00000000..1e49b8f3 --- /dev/null +++ b/lib/talk/startChart/handle/impl/udp_talk_ping_handler.dart @@ -0,0 +1,20 @@ +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/talk/startChart/entity/scp_message.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart'; +import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart'; +import 'package:star_lock/talk/startChart/proto/generic.pb.dart'; + +import '../../start_chart_manage.dart'; + +class UdpTalkPingHandler extends ScpMessageBaseHandle + implements ScpMessageHandler { + @override + void handle(ScpMessage scpMessage) { + final GenericResp genericResp = scpMessage.Payload; + if (checkGenericRespSuccess(genericResp)) { + // TODO 呼叫保持 + } + } +} diff --git a/lib/talk/startChart/handle/impl/udp_talk_push_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_push_handler.dart new file mode 100644 index 00000000..1475410f --- /dev/null +++ b/lib/talk/startChart/handle/impl/udp_talk_push_handler.dart @@ -0,0 +1,20 @@ +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/talk/startChart/entity/scp_message.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart'; +import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart'; +import 'package:star_lock/talk/startChart/proto/generic.pb.dart'; + +import '../../start_chart_manage.dart'; + +class UdpTalkPushHandler extends ScpMessageBaseHandle + implements ScpMessageHandler { + @override + void handle(ScpMessage scpMessage) { + final GenericResp genericResp = scpMessage.Payload; + if (checkGenericRespSuccess(genericResp)) { + // TODO 委托推送 + } + } +} diff --git a/lib/talk/startChart/handle/impl/udp_talk_receiver_transfer_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_receiver_transfer_handler.dart new file mode 100644 index 00000000..2f1df0b2 --- /dev/null +++ b/lib/talk/startChart/handle/impl/udp_talk_receiver_transfer_handler.dart @@ -0,0 +1,20 @@ +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/talk/startChart/entity/scp_message.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart'; +import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart'; +import 'package:star_lock/talk/startChart/proto/generic.pb.dart'; + +import '../../start_chart_manage.dart'; + +class UdpTalkReceiverTransferHandler extends ScpMessageBaseHandle + implements ScpMessageHandler { + @override + void handle(ScpMessage scpMessage) { + final GenericResp genericResp = scpMessage.Payload; + if (checkGenericRespSuccess(genericResp)) { + // TODO 对讲接听者转移 + } + } +} diff --git a/lib/talk/startChart/handle/impl/udp_talk_reject_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_reject_handler.dart new file mode 100644 index 00000000..f9227e4d --- /dev/null +++ b/lib/talk/startChart/handle/impl/udp_talk_reject_handler.dart @@ -0,0 +1,20 @@ +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/talk/startChart/entity/scp_message.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart'; +import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart'; +import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart'; +import 'package:star_lock/talk/startChart/proto/generic.pb.dart'; + +import '../../start_chart_manage.dart'; + +class UdpTalkRejectHandler extends ScpMessageBaseHandle + implements ScpMessageHandler { + @override + void handle(ScpMessage scpMessage) { + final GenericResp genericResp = scpMessage.Payload; + if (checkGenericRespSuccess(genericResp)) { + // TODO 拒绝接听 + } + } +} diff --git a/lib/talk/startChart/handle/impl/unknow_payload_type_handler.dart b/lib/talk/startChart/handle/impl/unknow_payload_type_handler.dart index 8dc0ba0e..74715bc9 100644 --- a/lib/talk/startChart/handle/impl/unknow_payload_type_handler.dart +++ b/lib/talk/startChart/handle/impl/unknow_payload_type_handler.dart @@ -6,6 +6,6 @@ import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart'; class UnKnowPayloadTypeHandler extends ScpMessageBaseHandle implements ScpMessageHandler { @override void handle(ScpMessage scpMessage) { - AppLog.log('❌未知的payloadType类型'); + AppLog.log('❌未知的payloadType类型---》${scpMessage}'); } } diff --git a/lib/talk/startChart/handle/scp_message_handler_factory.dart b/lib/talk/startChart/handle/scp_message_handler_factory.dart index 99afe83c..51766b91 100644 --- a/lib/talk/startChart/handle/scp_message_handler_factory.dart +++ b/lib/talk/startChart/handle/scp_message_handler_factory.dart @@ -1,13 +1,25 @@ import 'package:star_lock/talk/startChart/constant/payload_type_constant.dart'; +import 'package:star_lock/talk/startChart/handle/impl/udp_ble_passthrough_handler.dart'; import 'package:star_lock/talk/startChart/handle/impl/udp_call_request_handler.dart'; import 'package:star_lock/talk/startChart/handle/impl/udp_echo_test_handler.dart'; import 'package:star_lock/talk/startChart/handle/impl/udp_gateway_reset_handler.dart'; +import 'package:star_lock/talk/startChart/handle/impl/udp_gateway_transfer_handler.dart'; import 'package:star_lock/talk/startChart/handle/impl/udp_go_online_handler.dart'; import 'package:star_lock/talk/startChart/handle/impl/udp_heart_beat_handler.dart'; +import 'package:star_lock/talk/startChart/handle/impl/udp_remote_un_lock_handler.dart'; +import 'package:star_lock/talk/startChart/handle/impl/udp_talk_accept_handler.dart'; +import 'package:star_lock/talk/startChart/handle/impl/udp_talk_data_handler.dart'; +import 'package:star_lock/talk/startChart/handle/impl/udp_talk_expect_handler.dart'; +import 'package:star_lock/talk/startChart/handle/impl/udp_talk_hangup_handler.dart'; +import 'package:star_lock/talk/startChart/handle/impl/udp_talk_ping_handler.dart'; +import 'package:star_lock/talk/startChart/handle/impl/udp_talk_push_handler.dart'; +import 'package:star_lock/talk/startChart/handle/impl/udp_talk_receiver_transfer_handler.dart'; +import 'package:star_lock/talk/startChart/handle/impl/udp_talk_reject_handler.dart'; import 'package:star_lock/talk/startChart/handle/impl/unknow_payload_type_handler.dart'; import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart'; class ScpMessageHandlerFactory { + /// 构造工厂 static ScpMessageHandler createHandler(int payloadType) { switch (payloadType) { case PayloadTypeConstant.goOnline: @@ -18,8 +30,30 @@ class ScpMessageHandlerFactory { return UdpEchoTestHandler(); case PayloadTypeConstant.gatewayReset: return UdpGateWayResetHandler(); + case PayloadTypeConstant.gatewayTransfer: + return UdpGateWayTransferHandler(); + case PayloadTypeConstant.blePassthrough: + return UdpBlePassThroughHandler(); + case PayloadTypeConstant.remoteUnlock: + return UdpRemoteUnLockHandler(); + case PayloadTypeConstant.talkReceiverTransfer: + return UdpTalkReceiverTransferHandler(); case PayloadTypeConstant.callRequest: return UdpCallRequestHandler(); + case PayloadTypeConstant.talkPush: + return UdpTalkPushHandler(); + case PayloadTypeConstant.talkReject: + return UdpTalkRejectHandler(); + case PayloadTypeConstant.talkAccept: + return UdpTalkAcceptHandler(); + case PayloadTypeConstant.talkPing: + return UdpTalkPingHandler(); + case PayloadTypeConstant.talkExpect: + return UdpTalkExpectHandler(); + case PayloadTypeConstant.talkData: + return UdpTalkDataHandler(); + case PayloadTypeConstant.talkHangup: + return UdpTalkHangUpHandler(); default: return UnKnowPayloadTypeHandler(); } diff --git a/lib/talk/startChart/start_chart_manage.dart b/lib/talk/startChart/start_chart_manage.dart index 3762a87a..0d1dbad3 100644 --- a/lib/talk/startChart/start_chart_manage.dart +++ b/lib/talk/startChart/start_chart_manage.dart @@ -566,6 +566,7 @@ class StartChartManage { if (dg?.data != null) { final deserialize = ScpMessage.deserialize(dg!.data); if (deserialize != null) { + // 处理返回数据 _handleUdpResultData(deserialize); } if (deserialize.PayloadType != PayloadTypeConstant.heartbeat) {