From dc0e963938d4c9e3334e6ab5ba692b03ae96e82e Mon Sep 17 00:00:00 2001 From: fajiao <1519100073@qq.com> Date: Wed, 15 Dec 2021 16:04:49 +0800 Subject: [PATCH] first commit --- EC.Entity/CameraInfo/IpcInfo.cs | 40 + EC.Entity/CameraInfo/LogInfo.cs | 15 + EC.Entity/CameraInfo/NvrInfo.cs | 29 + EC.Entity/CameraInfo/PollInfo.cs | 12 + EC.Entity/CameraInfo/UserInfo.cs | 12 + EC.Entity/EC.Entity.csproj | 23 + EC.Entity/PublicModel/BaseEntity.cs | 80 + EC.Entity/PublicModel/Enums.cs | 22 + EC.Entity/Video/MonitorCamera.cs | 232 + EC.Entity/Video/MsVideoRecorder.cs | 87 + EC.Entity/Warning/DrawPoint.cs | 14 + EC.Entity/Warning/DrawShape.cs | 39 + EC.Entity/Warning/WarningBoxModel.cs | 40 + EC.Entity/Warning/WarningModel.cs | 14 + EC.Service/CameraInfo/BaseDbContext.cs | 47 + EC.Service/CameraInfo/IpcInfoContext.cs | 62 + EC.Service/CameraInfo/LogInfoContext.cs | 50 + EC.Service/CameraInfo/NvrInfoContext.cs | 75 + EC.Service/CameraInfo/PollInfoContext.cs | 42 + EC.Service/CameraInfo/UserInfoContext.cs | 34 + EC.Service/Config/ConfigHelper.cs | 18 + EC.Service/EC.Service.csproj | 12 + .../EC.UsingEventAggregator.csproj | 16 + EC.UsingEventAggregator/FLogger.cs | 62 + EC.UsingEventAggregator/MessageSentEvent.cs | 82 + ECDefense.sln | 213 + ECMonitor/App.xaml | 111 + ECMonitor/App.xaml.cs | 91 + ECMonitor/AssemblyInfo.cs | 10 + ECMonitor/Code/Config/ConfigHelper.cs | 103 + ECMonitor/Code/DB/DBDataHelper.cs | 106 + ECMonitor/Code/DB/LoadFromAPIServer.cs | 43 + ECMonitor/Code/DB/RequestModel.cs | 14 + ECMonitor/Code/Models/BaseModel.cs | 89 + ECMonitor/Code/Models/VideoShowModel.cs | 46 + ECMonitor/Code/StaticData.cs | 19 + .../Code/SysemNotifyIcon/WPFSystemTray.cs | 115 + ECMonitor/ECMonitor.csproj | 161 + ECMonitor/MVVM/ExtendCommand.cs | 81 + ECMonitor/MVVM/ExtendEventCommand.cs | 45 + ECMonitor/MVVM/PasswordBoxHelper.cs | 87 + ECMonitor/MVVM/VerifyExceptionBehavior.cs | 6 + ECMonitor/MVVM/VerifyRule.cs | 64 + ECMonitor/MVVM/VerifyRuleType.cs | 19 + ECMonitor/MVVM/WPFAssist.cs | 50 + ECMonitor/MainWindow.xaml | 154 + ECMonitor/MainWindow.xaml.cs | 263 + ECMonitor/MainWindowViewModel.cs | 131 + ECMonitor/Manager/CameraManager.cs | 61 + ECMonitor/Manager/MessageManager.cs | 56 + ECMonitor/Manager/ShowVideoManager.cs | 50 + ECMonitor/Manager/VideoPlayManager.cs | 133 + ECMonitor/Manager/WebSocketManager.cs | 81 + ECMonitor/Manager/ZMQManager.cs | 82 + ECMonitor/NavigationModule.cs | 24 + .../Page/CameraMonitor/CameraAdjust.xaml | 226 + .../Page/CameraMonitor/CameraAdjust.xaml.cs | 135 + .../CameraMonitor/CameraAdjustViewModel.cs | 13 + ECMonitor/Page/CameraMonitor/CameraTree.xaml | 29 + .../Page/CameraMonitor/CameraTree.xaml.cs | 49 + .../Page/CameraMonitor/CameraTreeViewModel.cs | 26 + ECMonitor/Page/CameraMonitor/CameraVideo.xaml | 83 + .../Page/CameraMonitor/CameraVideo.xaml.cs | 358 + .../CameraMonitor/CameraVideoViewModel.cs | 13 + ECMonitor/Page/CameraMonitor/Main.xaml | 21 + ECMonitor/Page/CameraMonitor/Main.xaml.cs | 21 + ECMonitor/Page/CameraMonitor/MainViewModel.cs | 13 + ECMonitor/Page/Name/RegionsName.cs | 31 + ECMonitor/Page/Name/ViewsName.cs | 52 + ECMonitor/Page/SystemSet/Main.xaml | 127 + ECMonitor/Page/SystemSet/Main.xaml.cs | 44 + ECMonitor/Page/SystemSet/MainViewModel.cs | 26 + ECMonitor/Page/SystemSet/ManageIpc.xaml | 345 + ECMonitor/Page/SystemSet/ManageIpc.xaml.cs | 18 + .../Page/SystemSet/ManageIpcViewModel.cs | 281 + ECMonitor/Page/SystemSet/ManageNvr.xaml | 274 + ECMonitor/Page/SystemSet/ManageNvr.xaml.cs | 21 + .../Page/SystemSet/ManageNvrViewModel.cs | 276 + ECMonitor/Page/SystemSet/ManageSet.xaml | 16 + ECMonitor/Page/SystemSet/ManageSet.xaml.cs | 15 + .../Page/SystemSet/ManageSetViewModel.cs | 13 + ECMonitor/Page/SystemSet/SearchIpc.xaml | 247 + ECMonitor/Page/SystemSet/SearchIpc.xaml.cs | 16 + .../Page/SystemSet/SearchIpcViewModel.cs | 346 + ECMonitor/Page/Test/Main.xaml | 21 + ECMonitor/Page/Test/Main.xaml.cs | 15 + ECMonitor/Page/Test/MainViewModel.cs | 16 + ECMonitor/PlayerDraw/Code/BlackboardClass.cs | 275 + ECMonitor/PlayerDraw/Code/BlackboardData.cs | 117 + ECMonitor/PlayerDraw/Code/DataBase.cs | 67 + ECMonitor/PlayerDraw/Code/Draw.cs | 195 + ECMonitor/PlayerDraw/Code/DrawTypes.cs | 17 + ECMonitor/PlayerDraw/Code/ECDrawing.cs | 406 + ECMonitor/PlayerDraw/Code/Model/StrokeEx.cs | 31 + ECMonitor/PlayerDraw/FrmWarningDraw.xaml | 148 + ECMonitor/PlayerDraw/FrmWarningDraw.xaml.cs | 402 + ECMonitor/PlayerDraw/UC/UCVideoDraw.xaml | 12 + ECMonitor/PlayerDraw/UC/UCVideoDraw.xaml.cs | 28 + ECMonitor/PlayerDraw/close.png | Bin 0 -> 1054 bytes ECMonitor/PlayerDraw/保存.png | Bin 0 -> 561 bytes ECMonitor/PlayerDraw/删 除 .png | Bin 0 -> 731 bytes ECMonitor/PlayerDraw/删除 关闭 叉.png | Bin 0 -> 1060 bytes ECMonitor/PlayerDraw/选取.png | Bin 0 -> 3921 bytes ECMonitor/Properties/Resources.Designer.cs | 83 + ECMonitor/Properties/Resources.resx | 127 + ECMonitor/Resources/Images/camera.png | Bin 0 -> 1567 bytes ECMonitor/Resources/Images/camera1.png | Bin 0 -> 2376 bytes ECMonitor/Resources/Images/camera2.png | Bin 0 -> 1567 bytes ECMonitor/Resources/Images/close.png | Bin 0 -> 1054 bytes ECMonitor/Resources/Images/close1.png | Bin 0 -> 2069 bytes ECMonitor/Resources/Images/logger.png | Bin 0 -> 1483 bytes ECMonitor/Resources/Images/logger1.png | Bin 0 -> 1483 bytes ECMonitor/Resources/Images/logon.png | Bin 0 -> 18527 bytes ECMonitor/Resources/Images/map.png | Bin 0 -> 2368 bytes ECMonitor/Resources/Images/map1.png | Bin 0 -> 2076 bytes ECMonitor/Resources/Images/max1.png | Bin 0 -> 1281 bytes ECMonitor/Resources/Images/max2.png | Bin 0 -> 660 bytes ECMonitor/Resources/Images/min.png | Bin 0 -> 152 bytes ECMonitor/Resources/Images/min1.png | Bin 0 -> 359 bytes ECMonitor/Resources/Images/set.png | Bin 0 -> 1199 bytes ECMonitor/Resources/Images/set1.png | Bin 0 -> 2024 bytes ECMonitor/Resources/Images/sp.png | Bin 0 -> 553 bytes ECMonitor/Resources/Images/sp1.png | Bin 0 -> 697 bytes ECMonitor/Resources/Images/top.png | Bin 0 -> 3046 bytes ECMonitor/Resources/Images/zgx.ico | Bin 0 -> 17162 bytes ECMonitor/Resources/Images/报警.png | Bin 0 -> 7366 bytes .../Resources/Themes/Theme.DarkBule.xaml | 55 + ECMonitor/Resources/Themes/Themes.xaml | 12 + ECMonitor/UC/SampleMessageDialog.xaml | 19 + ECMonitor/UC/SampleMessageDialog.xaml.cs | 28 + ECMonitor/UC/Videos/IUCPlayer.cs | 78 + ECMonitor/UC/Videos/UCAIFilePlayer.xaml | 42 + ECMonitor/UC/Videos/UCAIFilePlayer.xaml.cs | 430 + ECMonitor/UC/Videos/UCAIWarningPlayer.xaml | 42 + ECMonitor/UC/Videos/UCAIWarningPlayer.xaml.cs | 420 + ECMonitor/UC/Videos/UCFFmpegAIBoxPlayer.xaml | 38 + .../UC/Videos/UCFFmpegAIBoxPlayer.xaml.cs | 663 + ECMonitor/UC/Videos/UCFFmpegAIPlayer.xaml | 39 + ECMonitor/UC/Videos/UCFFmpegAIPlayer.xaml.cs | 675 + ECMonitor/UC/Videos/UCFFmpegPlayer.xaml | 59 + ECMonitor/UC/Videos/UCFFmpegPlayer.xaml.cs | 699 + ECMonitor/UC/Videos/UCRtspVlcVideo.xaml | 39 + ECMonitor/UC/Videos/UCRtspVlcVideo.xaml.cs | 272 + ECMonitor/UC/Videos/pen.png | Bin 0 -> 874 bytes ECMonitor/UC/Videos/画板 10 副本 48.png | Bin 0 -> 2792 bytes ECMonitor/UC/Videos/设计_画图.png | Bin 0 -> 1072 bytes ECMonitor/ViewModels/MainVideoViewModel.cs | 19 + ECMonitor/ViewModels/RtspMonitorViewModel.cs | 13 + ECMonitor/Views/FrmVideoPlayer.xaml | 30 + ECMonitor/Views/FrmVideoPlayer.xaml.cs | 134 + ECMonitor/Views/FrmVideoWanging.xaml | 32 + ECMonitor/Views/FrmVideoWanging.xaml.cs | 486 + ECMonitor/Views/RtspMonitor.xaml | 26 + ECMonitor/Views/RtspMonitor.xaml.cs | 94 + ECMonitor/Views/报警 (1).png | Bin 0 -> 7409 bytes ECMonitor/appsettings.json | 41 + ECMonitor/camera1.png | Bin 0 -> 2376 bytes ECMonitor/close.png | Bin 0 -> 1054 bytes ECMonitor/db/CameraInfo.db | Bin 0 -> 49152 bytes ECMonitor/db/CameraInfo.sql | 44 + ECMonitor/log4.config | 123 + ECMonitor/login.png | Bin 0 -> 5722 bytes ECMonitor/logon.png | Bin 0 -> 18527 bytes ECMonitor/max2.png | Bin 0 -> 660 bytes ECMonitor/min1.png | Bin 0 -> 359 bytes ECMonitor/set1.png | Bin 0 -> 2024 bytes ECMonitor/top.png | Bin 0 -> 3046 bytes ECMonitor/topbar.png | Bin 0 -> 3046 bytes ECMonitor/zgx.ico | Bin 0 -> 17162 bytes WinForms.Main/FrmMain.Designer.cs | 40 + WinForms.Main/FrmMain.cs | 18 + WinForms.Main/FrmMain.resx | 120 + WinForms.Main/Program.cs | 23 + WinForms.Main/WinForms.Main.csproj | 16 + websocket.html | 77 + 公共库/EC.NetLogger/EC.NetLogger.csproj | 70 + 公共库/EC.NetLogger/ECLoggerManager.cs | 38 + 公共库/EC.NetLogger/NetLoggerManger.cs | 20 + .../EC.NetLogger/Properties/AssemblyInfo.cs | 36 + 公共库/EC.NetLogger/TCPLoggerManger.cs | 59 + 公共库/EC.Onvif/Camera/Camera.cs | 47 + 公共库/EC.Onvif/Camera/CameraManager.cs | 41 + 公共库/EC.Onvif/Common/DataTypes.cs | 23302 ++++++++++++++++ 公共库/EC.Onvif/Device/DataTypes.cs | 1748 ++ 公共库/EC.Onvif/Device/DeviceClient.cs | 3032 ++ 公共库/EC.Onvif/EC.Onvif.csproj | 12 + 公共库/EC.Onvif/Imaging/DataTypes.cs | 146 + 公共库/EC.Onvif/Imaging/ImagingClient.cs | 190 + 公共库/EC.Onvif/Media/DataTypes.cs | 670 + 公共库/EC.Onvif/Media/MediaClient.cs | 2185 ++ 公共库/EC.Onvif/OnvifClient.cs | 204 + 公共库/EC.Onvif/OnvifClientFactory.cs | 117 + 公共库/EC.Onvif/OnvifUtil.cs | 15 + 公共库/EC.Onvif/PTZ/DataTypes.cs | 186 + 公共库/EC.Onvif/PTZ/PTZClient.cs | 678 + .../EC.Onvif/RemoteDiscovery/Constants.cs | 27 + .../EC.Onvif/RemoteDiscovery/Discovery.cs | 187 + .../RemoteDiscovery/DiscoveryDevice.cs | 33 + .../RemoteDiscovery/ExtensionMethods.cs | 25 + .../RemoteDiscovery/OnvifUdpClient.cs | 140 + .../RemoteDiscovery/XmlProbeReponse.cs | 113 + .../EC.Onvif/Security/SoapSecurityHeader.cs | 82 + .../Security/SoapSecurityHeaderBehavior.cs | 45 + .../Security/SoapSecurityHeaderInspector.cs | 33 + 公共库/EC.Utils/Config/ConfigHelper.cs | 148 + .../EC.Utils/Config/ConfigurationHelper.cs | 74 + 公共库/EC.Utils/EC.Utils.csproj | 28 + 公共库/EC.Utils/ECBase/ChinaDate.cs | 237 + 公共库/EC.Utils/ECBase/DateUnit.cs | 420 + 公共库/EC.Utils/ECBase/FileUnit.cs | 293 + 公共库/EC.Utils/ECBase/FormatCom.cs | 710 + 公共库/EC.Utils/ECBase/VerifyUnit.cs | 241 + 公共库/EC.Utils/Extend/Ext.Convert.cs | 324 + 公共库/EC.Utils/Extend/Ext.DateTime.cs | 178 + 公共库/EC.Utils/Extend/Ext.Format.cs | 155 + 公共库/EC.Utils/Extend/ExtAutoMapper.cs | 61 + 公共库/EC.Utils/Extend/ExtHashtable.cs | 45 + .../Extend/ExtLinq.LamadaExtention.cs | 103 + 公共库/EC.Utils/Extend/ExtLinq.SortBy.cs | 32 + 公共库/EC.Utils/Extend/ExtLinq.cs | 120 + .../EC.Utils/Extend/ExtList.Comparint.cs | 53 + 公共库/EC.Utils/Extend/ExtList.cs | 39 + 公共库/EC.Utils/Extend/ExtTable.cs | 111 + .../EC.Utils/ImageHelpers/ImageHelper.cs | 17 + .../EC.Utils/ImageHelpers/ImageHelper_Byte.cs | 34 + .../EC.Utils/ImageHelpers/ImageHelper_Thum.cs | 311 + 公共库/EC.Utils/Json.cs | 51 + 公共库/EC.Utils/Log4/Log.cs | 79 + 公共库/EC.Utils/Log4/LogFactory.cs | 32 + 公共库/EC.Utils/Models/PageInput.T.cs | 13 + 公共库/EC.Utils/Models/PageInput.cs | 38 + 公共库/EC.Utils/Models/PageOutput.cs | 9 + 公共库/EC.Utils/Models/PageResult.T.cs | 20 + 公共库/EC.Utils/Models/PageResult.cs | 18 + 公共库/EC.Utils/Models/ParamsModel.cs | 8 + 公共库/EC.Utils/Nets/FTPHelper.cs | 60 + 公共库/EC.Utils/Nets/HttpContext.cs | 28 + 公共库/EC.Utils/Nets/HttpMethods.cs | 551 + 公共库/EC.Utils/Nets/Net.cs | 268 + 公共库/EC.Utils/Nets/NetUnit.cs | 625 + 公共库/EC.Utils/Nets/WebSocketServer.cs | 120 + 公共库/EC.Utils/Str.cs | 260 + 公共库/EC.Utils/ZMQ/DBMethod.cs | 34 + 公共库/EC.Utils/ZMQ/PubSubModel.cs | 20 + 公共库/EC.Utils/ZMQ/RequestModel.cs | 19 + 公共库/EC.Utils/ZMQ/ZMQHelper.cs | 93 + 公共库/EC.Utils/ZMQ/ZMQRequestHelper.cs | 95 + 公共库/EC.Utils/ZMQ/ZMQTopic.cs | 30 + .../EC.WpfElement/Button/ImageTextButton.cs | 12 + .../EC.WpfElement/Button/Themes/Generic.xaml | 17 + 公共库/EC.WpfElement/EC.WpfElement.csproj | 91 + .../EC.WpfElement/Properties/AssemblyInfo.cs | 51 + .../Properties/Resources.Designer.cs | 62 + .../EC.WpfElement/Properties/Resources.resx | 117 + .../Properties/Settings.Designer.cs | 30 + .../Properties/Settings.settings | 7 + .../EC.WpfElement/Template/CustomControl.cs | 13 + .../Template/Themes/Generic.xaml | 17 + 公共库/EC.WpfElement/Themes/Generic.xaml | 6 + .../EC.FFmpegAutoGen/EC.FFmpegAutoGen.csproj | 16 + .../EC.FFmpegAutoGen/FFmpegBinariesHelper.cs | 37 + 播放库/EC.FFmpegAutoGen/FFmpegHelper.cs | 44 + .../H264VideoStreamEncoder.cs | 91 + 播放库/EC.FFmpegAutoGen/MediaDecoder.cs | 65 + .../EC.FFmpegAutoGen/VideoFrameConverter.cs | 81 + .../EC.FFmpegAutoGen/VideoStreamDecoder.cs | 131 + 播放库/HKPlayers/App.xaml | 9 + 播放库/HKPlayers/App.xaml.cs | 17 + 播放库/HKPlayers/AssemblyInfo.cs | 10 + 播放库/HKPlayers/HKPlayers.csproj | 14 + 播放库/HKPlayers/MainWindow.xaml | 12 + 播放库/HKPlayers/MainWindow.xaml.cs | 29 + 272 files changed, 54373 insertions(+) create mode 100644 EC.Entity/CameraInfo/IpcInfo.cs create mode 100644 EC.Entity/CameraInfo/LogInfo.cs create mode 100644 EC.Entity/CameraInfo/NvrInfo.cs create mode 100644 EC.Entity/CameraInfo/PollInfo.cs create mode 100644 EC.Entity/CameraInfo/UserInfo.cs create mode 100644 EC.Entity/EC.Entity.csproj create mode 100644 EC.Entity/PublicModel/BaseEntity.cs create mode 100644 EC.Entity/PublicModel/Enums.cs create mode 100644 EC.Entity/Video/MonitorCamera.cs create mode 100644 EC.Entity/Video/MsVideoRecorder.cs create mode 100644 EC.Entity/Warning/DrawPoint.cs create mode 100644 EC.Entity/Warning/DrawShape.cs create mode 100644 EC.Entity/Warning/WarningBoxModel.cs create mode 100644 EC.Entity/Warning/WarningModel.cs create mode 100644 EC.Service/CameraInfo/BaseDbContext.cs create mode 100644 EC.Service/CameraInfo/IpcInfoContext.cs create mode 100644 EC.Service/CameraInfo/LogInfoContext.cs create mode 100644 EC.Service/CameraInfo/NvrInfoContext.cs create mode 100644 EC.Service/CameraInfo/PollInfoContext.cs create mode 100644 EC.Service/CameraInfo/UserInfoContext.cs create mode 100644 EC.Service/Config/ConfigHelper.cs create mode 100644 EC.Service/EC.Service.csproj create mode 100644 EC.UsingEventAggregator/EC.UsingEventAggregator.csproj create mode 100644 EC.UsingEventAggregator/FLogger.cs create mode 100644 EC.UsingEventAggregator/MessageSentEvent.cs create mode 100644 ECDefense.sln create mode 100644 ECMonitor/App.xaml create mode 100644 ECMonitor/App.xaml.cs create mode 100644 ECMonitor/AssemblyInfo.cs create mode 100644 ECMonitor/Code/Config/ConfigHelper.cs create mode 100644 ECMonitor/Code/DB/DBDataHelper.cs create mode 100644 ECMonitor/Code/DB/LoadFromAPIServer.cs create mode 100644 ECMonitor/Code/DB/RequestModel.cs create mode 100644 ECMonitor/Code/Models/BaseModel.cs create mode 100644 ECMonitor/Code/Models/VideoShowModel.cs create mode 100644 ECMonitor/Code/StaticData.cs create mode 100644 ECMonitor/Code/SysemNotifyIcon/WPFSystemTray.cs create mode 100644 ECMonitor/ECMonitor.csproj create mode 100644 ECMonitor/MVVM/ExtendCommand.cs create mode 100644 ECMonitor/MVVM/ExtendEventCommand.cs create mode 100644 ECMonitor/MVVM/PasswordBoxHelper.cs create mode 100644 ECMonitor/MVVM/VerifyExceptionBehavior.cs create mode 100644 ECMonitor/MVVM/VerifyRule.cs create mode 100644 ECMonitor/MVVM/VerifyRuleType.cs create mode 100644 ECMonitor/MVVM/WPFAssist.cs create mode 100644 ECMonitor/MainWindow.xaml create mode 100644 ECMonitor/MainWindow.xaml.cs create mode 100644 ECMonitor/MainWindowViewModel.cs create mode 100644 ECMonitor/Manager/CameraManager.cs create mode 100644 ECMonitor/Manager/MessageManager.cs create mode 100644 ECMonitor/Manager/ShowVideoManager.cs create mode 100644 ECMonitor/Manager/VideoPlayManager.cs create mode 100644 ECMonitor/Manager/WebSocketManager.cs create mode 100644 ECMonitor/Manager/ZMQManager.cs create mode 100644 ECMonitor/NavigationModule.cs create mode 100644 ECMonitor/Page/CameraMonitor/CameraAdjust.xaml create mode 100644 ECMonitor/Page/CameraMonitor/CameraAdjust.xaml.cs create mode 100644 ECMonitor/Page/CameraMonitor/CameraAdjustViewModel.cs create mode 100644 ECMonitor/Page/CameraMonitor/CameraTree.xaml create mode 100644 ECMonitor/Page/CameraMonitor/CameraTree.xaml.cs create mode 100644 ECMonitor/Page/CameraMonitor/CameraTreeViewModel.cs create mode 100644 ECMonitor/Page/CameraMonitor/CameraVideo.xaml create mode 100644 ECMonitor/Page/CameraMonitor/CameraVideo.xaml.cs create mode 100644 ECMonitor/Page/CameraMonitor/CameraVideoViewModel.cs create mode 100644 ECMonitor/Page/CameraMonitor/Main.xaml create mode 100644 ECMonitor/Page/CameraMonitor/Main.xaml.cs create mode 100644 ECMonitor/Page/CameraMonitor/MainViewModel.cs create mode 100644 ECMonitor/Page/Name/RegionsName.cs create mode 100644 ECMonitor/Page/Name/ViewsName.cs create mode 100644 ECMonitor/Page/SystemSet/Main.xaml create mode 100644 ECMonitor/Page/SystemSet/Main.xaml.cs create mode 100644 ECMonitor/Page/SystemSet/MainViewModel.cs create mode 100644 ECMonitor/Page/SystemSet/ManageIpc.xaml create mode 100644 ECMonitor/Page/SystemSet/ManageIpc.xaml.cs create mode 100644 ECMonitor/Page/SystemSet/ManageIpcViewModel.cs create mode 100644 ECMonitor/Page/SystemSet/ManageNvr.xaml create mode 100644 ECMonitor/Page/SystemSet/ManageNvr.xaml.cs create mode 100644 ECMonitor/Page/SystemSet/ManageNvrViewModel.cs create mode 100644 ECMonitor/Page/SystemSet/ManageSet.xaml create mode 100644 ECMonitor/Page/SystemSet/ManageSet.xaml.cs create mode 100644 ECMonitor/Page/SystemSet/ManageSetViewModel.cs create mode 100644 ECMonitor/Page/SystemSet/SearchIpc.xaml create mode 100644 ECMonitor/Page/SystemSet/SearchIpc.xaml.cs create mode 100644 ECMonitor/Page/SystemSet/SearchIpcViewModel.cs create mode 100644 ECMonitor/Page/Test/Main.xaml create mode 100644 ECMonitor/Page/Test/Main.xaml.cs create mode 100644 ECMonitor/Page/Test/MainViewModel.cs create mode 100644 ECMonitor/PlayerDraw/Code/BlackboardClass.cs create mode 100644 ECMonitor/PlayerDraw/Code/BlackboardData.cs create mode 100644 ECMonitor/PlayerDraw/Code/DataBase.cs create mode 100644 ECMonitor/PlayerDraw/Code/Draw.cs create mode 100644 ECMonitor/PlayerDraw/Code/DrawTypes.cs create mode 100644 ECMonitor/PlayerDraw/Code/ECDrawing.cs create mode 100644 ECMonitor/PlayerDraw/Code/Model/StrokeEx.cs create mode 100644 ECMonitor/PlayerDraw/FrmWarningDraw.xaml create mode 100644 ECMonitor/PlayerDraw/FrmWarningDraw.xaml.cs create mode 100644 ECMonitor/PlayerDraw/UC/UCVideoDraw.xaml create mode 100644 ECMonitor/PlayerDraw/UC/UCVideoDraw.xaml.cs create mode 100644 ECMonitor/PlayerDraw/close.png create mode 100644 ECMonitor/PlayerDraw/保存.png create mode 100644 ECMonitor/PlayerDraw/删 除 .png create mode 100644 ECMonitor/PlayerDraw/删除 关闭 叉.png create mode 100644 ECMonitor/PlayerDraw/选取.png create mode 100644 ECMonitor/Properties/Resources.Designer.cs create mode 100644 ECMonitor/Properties/Resources.resx create mode 100644 ECMonitor/Resources/Images/camera.png create mode 100644 ECMonitor/Resources/Images/camera1.png create mode 100644 ECMonitor/Resources/Images/camera2.png create mode 100644 ECMonitor/Resources/Images/close.png create mode 100644 ECMonitor/Resources/Images/close1.png create mode 100644 ECMonitor/Resources/Images/logger.png create mode 100644 ECMonitor/Resources/Images/logger1.png create mode 100644 ECMonitor/Resources/Images/logon.png create mode 100644 ECMonitor/Resources/Images/map.png create mode 100644 ECMonitor/Resources/Images/map1.png create mode 100644 ECMonitor/Resources/Images/max1.png create mode 100644 ECMonitor/Resources/Images/max2.png create mode 100644 ECMonitor/Resources/Images/min.png create mode 100644 ECMonitor/Resources/Images/min1.png create mode 100644 ECMonitor/Resources/Images/set.png create mode 100644 ECMonitor/Resources/Images/set1.png create mode 100644 ECMonitor/Resources/Images/sp.png create mode 100644 ECMonitor/Resources/Images/sp1.png create mode 100644 ECMonitor/Resources/Images/top.png create mode 100644 ECMonitor/Resources/Images/zgx.ico create mode 100644 ECMonitor/Resources/Images/报警.png create mode 100644 ECMonitor/Resources/Themes/Theme.DarkBule.xaml create mode 100644 ECMonitor/Resources/Themes/Themes.xaml create mode 100644 ECMonitor/UC/SampleMessageDialog.xaml create mode 100644 ECMonitor/UC/SampleMessageDialog.xaml.cs create mode 100644 ECMonitor/UC/Videos/IUCPlayer.cs create mode 100644 ECMonitor/UC/Videos/UCAIFilePlayer.xaml create mode 100644 ECMonitor/UC/Videos/UCAIFilePlayer.xaml.cs create mode 100644 ECMonitor/UC/Videos/UCAIWarningPlayer.xaml create mode 100644 ECMonitor/UC/Videos/UCAIWarningPlayer.xaml.cs create mode 100644 ECMonitor/UC/Videos/UCFFmpegAIBoxPlayer.xaml create mode 100644 ECMonitor/UC/Videos/UCFFmpegAIBoxPlayer.xaml.cs create mode 100644 ECMonitor/UC/Videos/UCFFmpegAIPlayer.xaml create mode 100644 ECMonitor/UC/Videos/UCFFmpegAIPlayer.xaml.cs create mode 100644 ECMonitor/UC/Videos/UCFFmpegPlayer.xaml create mode 100644 ECMonitor/UC/Videos/UCFFmpegPlayer.xaml.cs create mode 100644 ECMonitor/UC/Videos/UCRtspVlcVideo.xaml create mode 100644 ECMonitor/UC/Videos/UCRtspVlcVideo.xaml.cs create mode 100644 ECMonitor/UC/Videos/pen.png create mode 100644 ECMonitor/UC/Videos/画板 10 副本 48.png create mode 100644 ECMonitor/UC/Videos/设计_画图.png create mode 100644 ECMonitor/ViewModels/MainVideoViewModel.cs create mode 100644 ECMonitor/ViewModels/RtspMonitorViewModel.cs create mode 100644 ECMonitor/Views/FrmVideoPlayer.xaml create mode 100644 ECMonitor/Views/FrmVideoPlayer.xaml.cs create mode 100644 ECMonitor/Views/FrmVideoWanging.xaml create mode 100644 ECMonitor/Views/FrmVideoWanging.xaml.cs create mode 100644 ECMonitor/Views/RtspMonitor.xaml create mode 100644 ECMonitor/Views/RtspMonitor.xaml.cs create mode 100644 ECMonitor/Views/报警 (1).png create mode 100644 ECMonitor/appsettings.json create mode 100644 ECMonitor/camera1.png create mode 100644 ECMonitor/close.png create mode 100644 ECMonitor/db/CameraInfo.db create mode 100644 ECMonitor/db/CameraInfo.sql create mode 100644 ECMonitor/log4.config create mode 100644 ECMonitor/login.png create mode 100644 ECMonitor/logon.png create mode 100644 ECMonitor/max2.png create mode 100644 ECMonitor/min1.png create mode 100644 ECMonitor/set1.png create mode 100644 ECMonitor/top.png create mode 100644 ECMonitor/topbar.png create mode 100644 ECMonitor/zgx.ico create mode 100644 WinForms.Main/FrmMain.Designer.cs create mode 100644 WinForms.Main/FrmMain.cs create mode 100644 WinForms.Main/FrmMain.resx create mode 100644 WinForms.Main/Program.cs create mode 100644 WinForms.Main/WinForms.Main.csproj create mode 100644 websocket.html create mode 100644 公共库/EC.NetLogger/EC.NetLogger.csproj create mode 100644 公共库/EC.NetLogger/ECLoggerManager.cs create mode 100644 公共库/EC.NetLogger/NetLoggerManger.cs create mode 100644 公共库/EC.NetLogger/Properties/AssemblyInfo.cs create mode 100644 公共库/EC.NetLogger/TCPLoggerManger.cs create mode 100644 公共库/EC.Onvif/Camera/Camera.cs create mode 100644 公共库/EC.Onvif/Camera/CameraManager.cs create mode 100644 公共库/EC.Onvif/Common/DataTypes.cs create mode 100644 公共库/EC.Onvif/Device/DataTypes.cs create mode 100644 公共库/EC.Onvif/Device/DeviceClient.cs create mode 100644 公共库/EC.Onvif/EC.Onvif.csproj create mode 100644 公共库/EC.Onvif/Imaging/DataTypes.cs create mode 100644 公共库/EC.Onvif/Imaging/ImagingClient.cs create mode 100644 公共库/EC.Onvif/Media/DataTypes.cs create mode 100644 公共库/EC.Onvif/Media/MediaClient.cs create mode 100644 公共库/EC.Onvif/OnvifClient.cs create mode 100644 公共库/EC.Onvif/OnvifClientFactory.cs create mode 100644 公共库/EC.Onvif/OnvifUtil.cs create mode 100644 公共库/EC.Onvif/PTZ/DataTypes.cs create mode 100644 公共库/EC.Onvif/PTZ/PTZClient.cs create mode 100644 公共库/EC.Onvif/RemoteDiscovery/Constants.cs create mode 100644 公共库/EC.Onvif/RemoteDiscovery/Discovery.cs create mode 100644 公共库/EC.Onvif/RemoteDiscovery/DiscoveryDevice.cs create mode 100644 公共库/EC.Onvif/RemoteDiscovery/ExtensionMethods.cs create mode 100644 公共库/EC.Onvif/RemoteDiscovery/OnvifUdpClient.cs create mode 100644 公共库/EC.Onvif/RemoteDiscovery/XmlProbeReponse.cs create mode 100644 公共库/EC.Onvif/Security/SoapSecurityHeader.cs create mode 100644 公共库/EC.Onvif/Security/SoapSecurityHeaderBehavior.cs create mode 100644 公共库/EC.Onvif/Security/SoapSecurityHeaderInspector.cs create mode 100644 公共库/EC.Utils/Config/ConfigHelper.cs create mode 100644 公共库/EC.Utils/Config/ConfigurationHelper.cs create mode 100644 公共库/EC.Utils/EC.Utils.csproj create mode 100644 公共库/EC.Utils/ECBase/ChinaDate.cs create mode 100644 公共库/EC.Utils/ECBase/DateUnit.cs create mode 100644 公共库/EC.Utils/ECBase/FileUnit.cs create mode 100644 公共库/EC.Utils/ECBase/FormatCom.cs create mode 100644 公共库/EC.Utils/ECBase/VerifyUnit.cs create mode 100644 公共库/EC.Utils/Extend/Ext.Convert.cs create mode 100644 公共库/EC.Utils/Extend/Ext.DateTime.cs create mode 100644 公共库/EC.Utils/Extend/Ext.Format.cs create mode 100644 公共库/EC.Utils/Extend/ExtAutoMapper.cs create mode 100644 公共库/EC.Utils/Extend/ExtHashtable.cs create mode 100644 公共库/EC.Utils/Extend/ExtLinq.LamadaExtention.cs create mode 100644 公共库/EC.Utils/Extend/ExtLinq.SortBy.cs create mode 100644 公共库/EC.Utils/Extend/ExtLinq.cs create mode 100644 公共库/EC.Utils/Extend/ExtList.Comparint.cs create mode 100644 公共库/EC.Utils/Extend/ExtList.cs create mode 100644 公共库/EC.Utils/Extend/ExtTable.cs create mode 100644 公共库/EC.Utils/ImageHelpers/ImageHelper.cs create mode 100644 公共库/EC.Utils/ImageHelpers/ImageHelper_Byte.cs create mode 100644 公共库/EC.Utils/ImageHelpers/ImageHelper_Thum.cs create mode 100644 公共库/EC.Utils/Json.cs create mode 100644 公共库/EC.Utils/Log4/Log.cs create mode 100644 公共库/EC.Utils/Log4/LogFactory.cs create mode 100644 公共库/EC.Utils/Models/PageInput.T.cs create mode 100644 公共库/EC.Utils/Models/PageInput.cs create mode 100644 公共库/EC.Utils/Models/PageOutput.cs create mode 100644 公共库/EC.Utils/Models/PageResult.T.cs create mode 100644 公共库/EC.Utils/Models/PageResult.cs create mode 100644 公共库/EC.Utils/Models/ParamsModel.cs create mode 100644 公共库/EC.Utils/Nets/FTPHelper.cs create mode 100644 公共库/EC.Utils/Nets/HttpContext.cs create mode 100644 公共库/EC.Utils/Nets/HttpMethods.cs create mode 100644 公共库/EC.Utils/Nets/Net.cs create mode 100644 公共库/EC.Utils/Nets/NetUnit.cs create mode 100644 公共库/EC.Utils/Nets/WebSocketServer.cs create mode 100644 公共库/EC.Utils/Str.cs create mode 100644 公共库/EC.Utils/ZMQ/DBMethod.cs create mode 100644 公共库/EC.Utils/ZMQ/PubSubModel.cs create mode 100644 公共库/EC.Utils/ZMQ/RequestModel.cs create mode 100644 公共库/EC.Utils/ZMQ/ZMQHelper.cs create mode 100644 公共库/EC.Utils/ZMQ/ZMQRequestHelper.cs create mode 100644 公共库/EC.Utils/ZMQ/ZMQTopic.cs create mode 100644 公共库/EC.WpfElement/Button/ImageTextButton.cs create mode 100644 公共库/EC.WpfElement/Button/Themes/Generic.xaml create mode 100644 公共库/EC.WpfElement/EC.WpfElement.csproj create mode 100644 公共库/EC.WpfElement/Properties/AssemblyInfo.cs create mode 100644 公共库/EC.WpfElement/Properties/Resources.Designer.cs create mode 100644 公共库/EC.WpfElement/Properties/Resources.resx create mode 100644 公共库/EC.WpfElement/Properties/Settings.Designer.cs create mode 100644 公共库/EC.WpfElement/Properties/Settings.settings create mode 100644 公共库/EC.WpfElement/Template/CustomControl.cs create mode 100644 公共库/EC.WpfElement/Template/Themes/Generic.xaml create mode 100644 公共库/EC.WpfElement/Themes/Generic.xaml create mode 100644 播放库/EC.FFmpegAutoGen/EC.FFmpegAutoGen.csproj create mode 100644 播放库/EC.FFmpegAutoGen/FFmpegBinariesHelper.cs create mode 100644 播放库/EC.FFmpegAutoGen/FFmpegHelper.cs create mode 100644 播放库/EC.FFmpegAutoGen/H264VideoStreamEncoder.cs create mode 100644 播放库/EC.FFmpegAutoGen/MediaDecoder.cs create mode 100644 播放库/EC.FFmpegAutoGen/VideoFrameConverter.cs create mode 100644 播放库/EC.FFmpegAutoGen/VideoStreamDecoder.cs create mode 100644 播放库/HKPlayers/App.xaml create mode 100644 播放库/HKPlayers/App.xaml.cs create mode 100644 播放库/HKPlayers/AssemblyInfo.cs create mode 100644 播放库/HKPlayers/HKPlayers.csproj create mode 100644 播放库/HKPlayers/MainWindow.xaml create mode 100644 播放库/HKPlayers/MainWindow.xaml.cs diff --git a/EC.Entity/CameraInfo/IpcInfo.cs b/EC.Entity/CameraInfo/IpcInfo.cs new file mode 100644 index 0000000..7559013 --- /dev/null +++ b/EC.Entity/CameraInfo/IpcInfo.cs @@ -0,0 +1,40 @@ +#nullable disable + +using EC.Entity.PublicModel; +using System.ComponentModel.DataAnnotations.Schema; + +namespace EC.Entity.CameraInfo +{ + public partial class IpcInfo : BaseEntity + { + [NotMapped] + public int Number { get; set; } + + public long IpcId { get; set; } + public string IpcName { get; set; } + public string NvrName { get; set; } + public string IpcType { get; set; } + public string IpcIp { get; set; } + public string OnvifAddr { get; set; } + public string MediaAddr { get; set; } + public string PtzAddr { get; set; } + public string RtspMain { get; set; } + public string RtspSub { get; set; } + public string IpcPosition { get; set; } + public string IpcImage { get; set; } + public long? IpcX { get; set; } + public long? IpcY { get; set; } + public string UserName { get; set; } + public string UserPwd { get; set; } + public string IpcEnable { get; set; } + + [NotMapped] + public bool IpcEnableBool + { + get => IpcEnable != null && IpcEnable.Equals("启用"); + set => IpcEnable = value ? "启用" : "禁用"; + } + + public string IpcAddr { get; set; } + } +} \ No newline at end of file diff --git a/EC.Entity/CameraInfo/LogInfo.cs b/EC.Entity/CameraInfo/LogInfo.cs new file mode 100644 index 0000000..2b1d47e --- /dev/null +++ b/EC.Entity/CameraInfo/LogInfo.cs @@ -0,0 +1,15 @@ +#nullable disable + +namespace EC.Entity.CameraInfo +{ + public partial class LogInfo + { + public long LogId { get; set; } + public string TriggerTime { get; set; } + public string UserName { get; set; } + public string LogCh { get; set; } + public string LogType { get; set; } + public string LogContent { get; set; } + public string LogMark { get; set; } + } +} \ No newline at end of file diff --git a/EC.Entity/CameraInfo/NvrInfo.cs b/EC.Entity/CameraInfo/NvrInfo.cs new file mode 100644 index 0000000..203ef96 --- /dev/null +++ b/EC.Entity/CameraInfo/NvrInfo.cs @@ -0,0 +1,29 @@ +#nullable disable + +using System.ComponentModel.DataAnnotations.Schema; + +namespace EC.Entity.CameraInfo +{ + public partial class NvrInfo + { + [NotMapped] + public int Number { get; set; } + + public long NvrId { get; set; } + public string NvrName { get; set; } + public string NvrType { get; set; } + public string NvrIp { get; set; } + public string UserName { get; set; } + public string UserPwd { get; set; } + public string NvrEnable { get; set; } + + [NotMapped] + public bool NvrEnableBool + { + get => NvrEnable != null && NvrEnable.Equals("启用"); + set => NvrEnable = value ? "启用" : "禁用"; + } + + public string NvrAddr { get; set; } + } +} \ No newline at end of file diff --git a/EC.Entity/CameraInfo/PollInfo.cs b/EC.Entity/CameraInfo/PollInfo.cs new file mode 100644 index 0000000..9716dfc --- /dev/null +++ b/EC.Entity/CameraInfo/PollInfo.cs @@ -0,0 +1,12 @@ +#nullable disable + +namespace EC.Entity.CameraInfo +{ + public partial class PollInfo + { + public long PollId { get; set; } + public string PollGroup { get; set; } + public string RtspMain { get; set; } + public string RtspSub { get; set; } + } +} \ No newline at end of file diff --git a/EC.Entity/CameraInfo/UserInfo.cs b/EC.Entity/CameraInfo/UserInfo.cs new file mode 100644 index 0000000..7228fe7 --- /dev/null +++ b/EC.Entity/CameraInfo/UserInfo.cs @@ -0,0 +1,12 @@ +#nullable disable + +namespace EC.Entity.CameraInfo +{ + public partial class UserInfo + { + public string UserName { get; set; } + public string UserPwd { get; set; } + public string UserType { get; set; } + public string UserAdmin { get; set; } + } +} \ No newline at end of file diff --git a/EC.Entity/EC.Entity.csproj b/EC.Entity/EC.Entity.csproj new file mode 100644 index 0000000..626d577 --- /dev/null +++ b/EC.Entity/EC.Entity.csproj @@ -0,0 +1,23 @@ + + + + net5.0-windows7.0 + true + + + + + + + + + + + + + + + + + + diff --git a/EC.Entity/PublicModel/BaseEntity.cs b/EC.Entity/PublicModel/BaseEntity.cs new file mode 100644 index 0000000..9106b93 --- /dev/null +++ b/EC.Entity/PublicModel/BaseEntity.cs @@ -0,0 +1,80 @@ +using Newtonsoft.Json; +using System; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations.Schema; +using System.Reflection; + +namespace EC.Entity.PublicModel +{ + public class BaseEntity : INotifyPropertyChanged + { + public event PropertyChangedEventHandler PropertyChanged; + + public void OnPropertyChanged(string propertyName) + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + } + + public bool SetValue(string propertyName, string value) + { + if (!ContainProperty(propertyName)) { return false; } + try + { + Type type = GetType(); + object objVal = Convert.ChangeType(value, type.GetProperty(propertyName).PropertyType); + type.GetProperty(propertyName).SetValue(this, objVal, null); + OnPropertyChanged(propertyName); + return true; + } + catch + { + return false; + } + } + + public object GetValue(string propertyName) + { + if (!ContainProperty(propertyName)) { return null; } + try + { + Type type = GetType(); + object objVal = type.GetProperty(propertyName).GetValue(this, null); + return objVal; + } + catch + { + return null; + } + } + + /// + /// 利用反射来判断对象是否包含某个属性 + /// + /// object + /// 需要判断的属性 + /// 是否包含 + public bool ContainProperty(string propertyName) + { + if (this != null && !string.IsNullOrEmpty(propertyName)) + { + PropertyInfo _findedPropertyInfo = GetType().GetProperty(propertyName); + return _findedPropertyInfo != null; + } + return false; + } + + [NotMapped] + public string FaultUri { get; set; } = "-1"; + + public virtual bool IsUriGain(string uri) + { + return !(string.IsNullOrEmpty(uri) || uri.Equals(FaultUri, StringComparison.Ordinal)); + } + + public virtual T DeepCopy() + { + string json = JsonConvert.SerializeObject(this); + return JsonConvert.DeserializeObject(json); + } + } +} \ No newline at end of file diff --git a/EC.Entity/PublicModel/Enums.cs b/EC.Entity/PublicModel/Enums.cs new file mode 100644 index 0000000..b133fbe --- /dev/null +++ b/EC.Entity/PublicModel/Enums.cs @@ -0,0 +1,22 @@ +namespace EC.Entity.PublicModel +{ + public enum VidoeType + { + Default, + + /// + /// 海康 + /// + HK, + + /// + /// 大华 + /// + DH, + + /// + /// 宇视觉 + /// + YS + } +} \ No newline at end of file diff --git a/EC.Entity/Video/MonitorCamera.cs b/EC.Entity/Video/MonitorCamera.cs new file mode 100644 index 0000000..ab070b3 --- /dev/null +++ b/EC.Entity/Video/MonitorCamera.cs @@ -0,0 +1,232 @@ +using System; + +namespace EC.Entity.Video +{ + public class MonitorCamera + { + public MonitorCamera() + { + } + + /// + /// 主键 + /// + public string Id { get; set; } + + /// + /// 站点id + /// + public string SiteId { get; set; } + + /// + /// 相机名称 + /// + public string CameraName { get; set; } + + /// + /// 相机类型 + /// + public int Type { get; set; } + + /// + /// 相机ip + /// + public string Ip { get; set; } + + /// + /// 相机端口 + /// + public int Port { get; set; } + + /// + /// 认证用户名 + /// + public string User { get; set; } + + /// + /// 认证密码 + /// + public string Password { get; set; } + + /// + /// 纬度 + /// + public decimal Latitude { get; set; } + + /// + /// 经度 + /// + public decimal Longitude { get; set; } + + /// + /// 高度 + /// + public decimal Height { get; set; } + + /// + /// Rtsp地址 + /// + public string PreRtsp { get; set; } + + /// + /// 分析 Rtsp 地址 + /// + public string AnalysisRtsp { get; set; } + + /// + /// 录像 Rtsp 地址通道3 + /// + public string RecordRtsp { get; set; } + + /// + /// 云台控制ip + /// + public string CloudCtrlIp { get; set; } + + /// + /// 云台控制端口 + /// + public int CloudCtrlPort { get; set; } + + /// + /// 流媒体服务器id + /// + public string StreamingMediaId { get; set; } + + /// + /// 录像机id + /// + public string VideoRecorderId { get; set; } + + /// + /// + /// + public int Factory { get; set; } + + /// + /// 相机预览通道 + /// + public int Channel { get; set; } + + /// + /// 样式 + /// + public int Style { get; set; } + + /// + /// 左夹角 + /// + public double LeftAngle { get; set; } + + /// + /// 右夹角 + /// + public double RightAngle { get; set; } + + /// + /// 视野中央有效距离 + /// + public double ViewDistance { get; set; } + + /// + /// 采样帧率 + /// + public int FrameRate { get; set; } + + /// + /// 最大跟踪范围 + /// + public int MaxRange { get; set; } + + /// + /// 状态 + /// + public int Status { get; set; } + + /// + /// 零方位角(正北夹角) + /// + public double ZeroAzimuth { get; set; } + + /// + /// 安装垂直角(上下-90°~90°) + /// + public double FixedAngle { get; set; } + + /// + /// 最大仰角 + /// + public double MaxElevation { get; set; } + + /// + /// 最大可视距离 + /// + public double MaxVisibleDistance { get; set; } + + /// + /// 变倍因子 + /// + public double ZoomFactor { get; set; } + + /// + /// 创建人 + /// + public string CreateBy { get; set; } + + /// + /// 创建日期 + /// + public DateTime? CreateTime { get; set; } + + /// + /// 更新人 + /// + public string UpdateBy { get; set; } + + /// + /// 更新日期 + /// + public DateTime? UpdateTime { get; set; } + + public MonitorCamera(string cameraIp, int port, string userName, string passWord, int factory = 0, int type = 0) + { + Ip = cameraIp; + Port = port; + User = userName; + Password = passWord; + Factory = factory; + Type = type; + } + + public string RtspURL(int width = 640) + { + if (width < 1200) + { + if (!string.IsNullOrEmpty(RecordRtsp)) + { + return RecordRtsp; + } + } + if (!string.IsNullOrEmpty(PreRtsp)) + { + return PreRtsp; + } + + string rtspformat = "rtsp://{0}:{1}@{2}:554"; + //switch (Factory) + //{ + // case (int)Video.HK: + // rtspformat = "rtsp://{0}:{1}@{2}:554/Streaming/Channels/102?transportmode=unicast&profile=Profile_2"; + // break; + // case (int)VidoeType.DH: + // rtspformat = "rtsp://{0}:{1}@{2}:554/cam/realmonitor?channel=1&subtype=1&unicast=true&proto=Onvif"; + // break; + // //case VidoeType.YS: + // // return ""; + + //} + string url = string.Format(rtspformat, User, Password, Ip); + return url; + } + } +} \ No newline at end of file diff --git a/EC.Entity/Video/MsVideoRecorder.cs b/EC.Entity/Video/MsVideoRecorder.cs new file mode 100644 index 0000000..0ceba6a --- /dev/null +++ b/EC.Entity/Video/MsVideoRecorder.cs @@ -0,0 +1,87 @@ +using System; +using System.Collections.Generic; + +namespace EC.Entity.Video +{ + public class MsVideoRecorder + { + public MsVideoRecorder() + { + } + + /// + /// 主键 + /// + public string Id { get; set; } + + /// + /// 所属部门 + /// + public string SysOrgCode { get; set; } + + /// + /// 设备名称 + /// + public string DeviceName { get; set; } + + /// + /// 设备类型 + /// + public int DeviceType { get; set; } + + /// + /// 设备编号 + /// + public string DeviceNum { get; set; } + + /// + /// 设备地址 + /// + public string DeviceAddress { get; set; } + + /// + /// 用户姓名 + /// + public string UserName { get; set; } + + /// + /// 用户密码 + /// + public string UserPassword { get; set; } + + /// + /// 是否启用 + /// + public int IsEnable { get; set; } + + /// + /// 安装位置 + /// + public string FixedPosition { get; set; } + + /// + /// + /// + public List MsCameraSettingList { get; set; } + + /// + /// 创建人 + /// + public string CreateBy { get; set; } + + /// + /// 创建日期 + /// + public DateTime? CreateTime { get; set; } + + /// + /// 更新人 + /// + public string UpdateBy { get; set; } + + /// + /// 更新日期 + /// + public DateTime? UpdateTime { get; set; } + } +} \ No newline at end of file diff --git a/EC.Entity/Warning/DrawPoint.cs b/EC.Entity/Warning/DrawPoint.cs new file mode 100644 index 0000000..885c57b --- /dev/null +++ b/EC.Entity/Warning/DrawPoint.cs @@ -0,0 +1,14 @@ +namespace EC.Entity.Warning +{ + public class DrawPoint + { + public DrawPoint(double x, double y) + { + X = x; + Y = y; + } + + public double X { get; set; } + public double Y { get; set; } + } +} \ No newline at end of file diff --git a/EC.Entity/Warning/DrawShape.cs b/EC.Entity/Warning/DrawShape.cs new file mode 100644 index 0000000..a8222bf --- /dev/null +++ b/EC.Entity/Warning/DrawShape.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; + +namespace EC.Entity.Warning +{ + public class DrawShape + { + public DrawShape() + { + PointList = new List(); + } + + //public DrawShapeModel(string ip, StrokeEx storke) + //{ + // List stylusPoints = storke.StylusPoints.ToList(); + // foreach (StylusPoint stylusPoint in stylusPoints) + // { + // } + //} + + public string Ip { get; set; } + + /// + /// 画图形状 + /// + public int DrawType { get; set; } + + /// + /// 预警级别 + /// + public int WarningLevel { get; set; } + + public List PointList { get; set; } + + /// + /// 预警方向 Line 上(0)下(1)左(2)右(3) + /// + public int WaringDirection { get; set; } + } +} \ No newline at end of file diff --git a/EC.Entity/Warning/WarningBoxModel.cs b/EC.Entity/Warning/WarningBoxModel.cs new file mode 100644 index 0000000..ca412d4 --- /dev/null +++ b/EC.Entity/Warning/WarningBoxModel.cs @@ -0,0 +1,40 @@ +namespace EC.Entity.Warning +{ + public class WarningBoxModel + { + /// + ///英文标签 + /// + public string label { get; set; } + + /// + /// 原标签位置 + /// + public int cls { get; set; } + + /// + /// 相似度 + /// + public double conf { get; set; } + + /// + /// 左上角x + /// + public double x { get; set; } + + /// + /// 左上角Y + /// + public double y { get; set; } + + /// + /// 右下角x + /// + public double x1 { get; set; } + + /// + /// 右下角y + /// + public double y1 { get; set; } + } +} \ No newline at end of file diff --git a/EC.Entity/Warning/WarningModel.cs b/EC.Entity/Warning/WarningModel.cs new file mode 100644 index 0000000..375f6d8 --- /dev/null +++ b/EC.Entity/Warning/WarningModel.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; + +namespace EC.Entity.Warning +{ + public class WarningModel + { + public int warninglevel { get; set; } + public string ip { get; set; } + public string filename { get; set; } + public int width { get; set; } + public int height { get; set; } + public List boxs { get; set; } + } +} \ No newline at end of file diff --git a/EC.Service/CameraInfo/BaseDbContext.cs b/EC.Service/CameraInfo/BaseDbContext.cs new file mode 100644 index 0000000..7b288a8 --- /dev/null +++ b/EC.Service/CameraInfo/BaseDbContext.cs @@ -0,0 +1,47 @@ +using EC.Service.Config; + +using Microsoft.EntityFrameworkCore; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace EC.Service.CameraInfo +{ + public partial class BaseDbContext : DbContext where T : class + { + public BaseDbContext() + { + } + + public BaseDbContext(DbContextOptions> options) + : base(options) + { + } + + public virtual DbSet Infos { get; set; } + + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + if (!optionsBuilder.IsConfigured) + { + optionsBuilder.UseSqlite(ConfigHelper.GetDbConnection()); + } + } + + protected void OnModelCreatingPartial(ModelBuilder modelBuilder) + { + } + + #region Select + + public Task> GetListAsync() + { + Task> task = Task.Run(() => + { + return new List(Infos); + }); + return task; + } + + #endregion Select + } +} \ No newline at end of file diff --git a/EC.Service/CameraInfo/IpcInfoContext.cs b/EC.Service/CameraInfo/IpcInfoContext.cs new file mode 100644 index 0000000..ae44266 --- /dev/null +++ b/EC.Service/CameraInfo/IpcInfoContext.cs @@ -0,0 +1,62 @@ +using EC.Entity.CameraInfo; +using Microsoft.EntityFrameworkCore; + +#nullable disable + +namespace EC.Service.CameraInfo +{ + public class IpcInfoContext : BaseDbContext + { + public IpcInfoContext() + { + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.IpcId); + + entity.ToTable("IpcInfo"); + + entity.Property(e => e.IpcId).HasColumnName("IpcID"); + + entity.Property(e => e.IpcAddr).HasColumnType("VARCHAR (100)"); + + entity.Property(e => e.IpcEnable).HasColumnType("VARCHAR (2)"); + + entity.Property(e => e.IpcImage).HasColumnType("VARCHAR (30)"); + + entity.Property(e => e.IpcName) + .IsRequired() + .HasColumnType("VARCHAR (30)"); + + entity.Property(e => e.IpcPosition).HasColumnType("VARCHAR (50)"); + + entity.Property(e => e.IpcType).HasColumnType("VARCHAR (30)"); + + entity.Property(e => e.IpcX).HasColumnType("INTEGER (4)"); + + entity.Property(e => e.IpcY).HasColumnType("INTEGER (4)"); + + entity.Property(e => e.MediaAddr).HasColumnType("VARCHAR (150)"); + + entity.Property(e => e.NvrName).HasColumnType("VARCHAR (30)"); + + entity.Property(e => e.OnvifAddr).HasColumnType("VARCHAR (150)"); + + entity.Property(e => e.PtzAddr).HasColumnType("VARCHAR (150)"); + + entity.Property(e => e.RtspMain).HasColumnType("VARCHAR (250)"); + + entity.Property(e => e.RtspSub).HasColumnType("VARCHAR (250)"); + + entity.Property(e => e.UserName).HasColumnType("VARCHAR (20)"); + + entity.Property(e => e.UserPwd).HasColumnType("VARCHAR (20)"); + }); + + OnModelCreatingPartial(modelBuilder); + } + } +} \ No newline at end of file diff --git a/EC.Service/CameraInfo/LogInfoContext.cs b/EC.Service/CameraInfo/LogInfoContext.cs new file mode 100644 index 0000000..8d92a5b --- /dev/null +++ b/EC.Service/CameraInfo/LogInfoContext.cs @@ -0,0 +1,50 @@ +using EC.Entity.CameraInfo; +using Microsoft.EntityFrameworkCore; + +#nullable disable + +namespace EC.Service.CameraInfo +{ + public class LogInfoContext : BaseDbContext + { + public LogInfoContext() + { + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.LogId); + + entity.ToTable("LogInfo"); + + entity.Property(e => e.LogId) + .ValueGeneratedNever() + .HasColumnName("LogID"); + + entity.Property(e => e.LogCh).HasColumnType("VARCHAR (50)"); + + entity.Property(e => e.LogContent) + .IsRequired() + .HasColumnType("VARCHAR (100)"); + + entity.Property(e => e.LogMark).HasColumnType("VARCHAR (200)"); + + entity.Property(e => e.LogType) + .IsRequired() + .HasColumnType("VARCHAR (10)"); + + entity.Property(e => e.TriggerTime) + .IsRequired() + .HasColumnType("VARCHAR (19)"); + + entity.Property(e => e.UserName) + .IsRequired() + .HasColumnType("VARCHAR (20)"); + }); + + OnModelCreatingPartial(modelBuilder); + } + } +} \ No newline at end of file diff --git a/EC.Service/CameraInfo/NvrInfoContext.cs b/EC.Service/CameraInfo/NvrInfoContext.cs new file mode 100644 index 0000000..cad3647 --- /dev/null +++ b/EC.Service/CameraInfo/NvrInfoContext.cs @@ -0,0 +1,75 @@ +using EC.Entity.CameraInfo; +using Microsoft.EntityFrameworkCore; +using System.Collections.Generic; +using System.Threading.Tasks; + +#nullable disable + +namespace EC.Service.CameraInfo +{ + public class NvrInfoContext : BaseDbContext + { + public NvrInfoContext() + { + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.NvrId); + + entity.ToTable("NvrInfo"); + + entity.Property(e => e.NvrId).HasColumnName("NvrID"); + + entity.Property(e => e.NvrAddr).HasColumnType("VARCHAR (100)"); + + entity.Property(e => e.NvrEnable) + .IsRequired() + .HasColumnType("VARCHAR (2)"); + + entity.Property(e => e.NvrIp) + .IsRequired() + .HasColumnType("VARCHAR (18)") + .HasColumnName("NvrIP"); + + entity.Property(e => e.NvrName) + .IsRequired() + .HasColumnType("VARCHAR (30)"); + + entity.Property(e => e.NvrType).HasColumnType("VARCHAR (20)"); + + entity.Property(e => e.UserName).HasColumnType("VARCHAR (20)"); + + entity.Property(e => e.UserPwd).HasColumnType("VARCHAR (20)"); + }); + + OnModelCreatingPartial(modelBuilder); + } + + #region Operate + + public List GetNvrDeviceList() + { + List list = new() { "海康", "大华", "宇视", "深广", "泰杰", "其它" }; + return list; + } + + public async Task> GetNvrNameListAsync() + { + List list = new(); + List infos = await GetListAsync(); + foreach (NvrInfo info in infos) + { + if (!list.Contains(info.NvrName)) + { + list.Add(info.NvrName); + } + } + return list; + } + + #endregion Operate + } +} \ No newline at end of file diff --git a/EC.Service/CameraInfo/PollInfoContext.cs b/EC.Service/CameraInfo/PollInfoContext.cs new file mode 100644 index 0000000..521b24f --- /dev/null +++ b/EC.Service/CameraInfo/PollInfoContext.cs @@ -0,0 +1,42 @@ +using EC.Entity.CameraInfo; +using Microsoft.EntityFrameworkCore; + +#nullable disable + +namespace EC.Service.CameraInfo +{ + public class PollInfoContext : BaseDbContext + { + public PollInfoContext() + { + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.PollId); + + entity.ToTable("PollInfo"); + + entity.Property(e => e.PollId) + .ValueGeneratedNever() + .HasColumnName("PollID"); + + entity.Property(e => e.PollGroup) + .IsRequired() + .HasColumnType("VARCHAR (20)"); + + entity.Property(e => e.RtspMain) + .IsRequired() + .HasColumnType("VARCHAR (250)"); + + entity.Property(e => e.RtspSub) + .IsRequired() + .HasColumnType("VARCHAR (250)"); + }); + + OnModelCreatingPartial(modelBuilder); + } + } +} \ No newline at end of file diff --git a/EC.Service/CameraInfo/UserInfoContext.cs b/EC.Service/CameraInfo/UserInfoContext.cs new file mode 100644 index 0000000..d343045 --- /dev/null +++ b/EC.Service/CameraInfo/UserInfoContext.cs @@ -0,0 +1,34 @@ +using EC.Entity.CameraInfo; +using Microsoft.EntityFrameworkCore; + +#nullable disable + +namespace EC.Service.CameraInfo +{ + public class UserInfoContext : BaseDbContext + { + public UserInfoContext() + { + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.UserName); + + entity.ToTable("UserInfo"); + + entity.Property(e => e.UserName).HasColumnType("VARCHAR (20)"); + + entity.Property(e => e.UserAdmin).HasColumnType("VARCHAR (30)"); + + entity.Property(e => e.UserPwd).HasColumnType("VARCHAR (20)"); + + entity.Property(e => e.UserType).HasColumnType("VARCHAR (10)"); + }); + + OnModelCreatingPartial(modelBuilder); + } + } +} \ No newline at end of file diff --git a/EC.Service/Config/ConfigHelper.cs b/EC.Service/Config/ConfigHelper.cs new file mode 100644 index 0000000..ff426f0 --- /dev/null +++ b/EC.Service/Config/ConfigHelper.cs @@ -0,0 +1,18 @@ +using EC.Utils.Config; + +namespace EC.Service.Config +{ + public class ConfigHelper : ConfigurationHelper + { + /// + + #region 数据库 + + public static string GetDbConnection() + { + return ConfigurationHelper.GetDbConnection("ConnectionString"); + } + + #endregion 数据库 + } +} \ No newline at end of file diff --git a/EC.Service/EC.Service.csproj b/EC.Service/EC.Service.csproj new file mode 100644 index 0000000..089f922 --- /dev/null +++ b/EC.Service/EC.Service.csproj @@ -0,0 +1,12 @@ + + + + net5.0-windows7.0 + + + + + + + + diff --git a/EC.UsingEventAggregator/EC.UsingEventAggregator.csproj b/EC.UsingEventAggregator/EC.UsingEventAggregator.csproj new file mode 100644 index 0000000..0f3bdb4 --- /dev/null +++ b/EC.UsingEventAggregator/EC.UsingEventAggregator.csproj @@ -0,0 +1,16 @@ + + + + net5.0-windows7.0 + + + + + + + + + + + + diff --git a/EC.UsingEventAggregator/FLogger.cs b/EC.UsingEventAggregator/FLogger.cs new file mode 100644 index 0000000..9461804 --- /dev/null +++ b/EC.UsingEventAggregator/FLogger.cs @@ -0,0 +1,62 @@ +using System; + +namespace EC.UsingEventAggregator +{ + public enum LoggerLevel + { + Debug, + Info, + Error, + } + + public class MyLogger + { + public MyLogger(string message, LoggerLevel level = LoggerLevel.Debug) + { + Message = message; + Level = level; + } + + public string Message { get; set; } + public LoggerLevel Level { get; set; } + } + + /// + /// 文件Logger + /// + public class FLogger + { + public static event Action SubMessage; + + public static event Action SubLog; + + //public static void PubMessge(string message) + //{ + // SubMessage?.Invoke(message); + //} + public static void PubLog(string message, LoggerLevel level = LoggerLevel.Debug) + { + SubLog?.Invoke(new MyLogger(message, level)); + } + + public static void Debug(string message) + { + SubLog?.Invoke(new MyLogger(message, LoggerLevel.Debug)); + } + + public static void Info(string message) + { + SubLog?.Invoke(new MyLogger(message, LoggerLevel.Info)); + } + + public static void Error(string message) + { + SubLog?.Invoke(new MyLogger(message, LoggerLevel.Error)); + } + + public static void Error(Exception ex) + { + SubLog?.Invoke(new MyLogger(ex.Message, LoggerLevel.Error)); + } + } +} \ No newline at end of file diff --git a/EC.UsingEventAggregator/MessageSentEvent.cs b/EC.UsingEventAggregator/MessageSentEvent.cs new file mode 100644 index 0000000..f1e5885 --- /dev/null +++ b/EC.UsingEventAggregator/MessageSentEvent.cs @@ -0,0 +1,82 @@ +using EC.Entity.CameraInfo; +using EC.Entity.Warning; +using EC.Onvif; +using Prism.Events; +using System.Collections.Generic; + +namespace EC.UsingEventAggregator +{ + public class LogModel + { + public LogModel(int level, string message, string remark = "") + { + this.level = level; + this.message = message; + this.remark = remark; + } + + public int level { get; set; } + public string message { get; set; } + public string remark { get; set; } + } + + public class MQModel + { + public int level { get; set; } + public string message { get; set; } + } + + public class MessageSentEvent : PubSubEvent + { + } + + /// + /// MQ消息 + /// + public class MQMessageEvent : PubSubEvent + { + } + + /// + /// 显示日志 + /// + public class ShowMessageSentEvent : PubSubEvent + { + } + + /// + /// 保存日志 + /// + public class SaveLogEvent : PubSubEvent + { + } + + /// + /// 在主窗体播放视频 + /// + public class ShowVoideInMainEvent : PubSubEvent + { + } + + /// + /// 预警视频数据 + /// + public class WaningVoideEvent : PubSubEvent + { + } + + /// + /// 预警分析图片数据 + /// + public class WaningImageBytesEvent : PubSubEvent + { + } + + public class SendOnvifClientEvent : PubSubEvent + { + } + + public class SendIpcInfoListEvent : PubSubEvent> + { + } +} \ No newline at end of file diff --git a/ECDefense.sln b/ECDefense.sln new file mode 100644 index 0000000..e64fbbe --- /dev/null +++ b/ECDefense.sln @@ -0,0 +1,213 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30804.86 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EC.Service", "EC.Service\EC.Service.csproj", "{C37542F7-5C6A-4998-8D1B-CED979560C8A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ECMonitor", "ECMonitor\ECMonitor.csproj", "{7F5DA7D9-8DCF-44C8-921D-B156C99D4F9B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EC.UsingEventAggregator", "EC.UsingEventAggregator\EC.UsingEventAggregator.csproj", "{8E4EFE09-CB77-44A6-904E-B42639136385}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "视频处理", "视频处理", "{A09E2512-EFE0-4E69-B7D1-B964B6358887}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "公共库", "公共库", "{8B78A8FF-D59D-4E86-91F3-0D5A4332E3B1}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EC.Entity", "EC.Entity\EC.Entity.csproj", "{2242B8A5-3E25-499E-9B23-3E61517A543E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HKPlayers", "播放库\HKPlayers\HKPlayers.csproj", "{5EC832FA-4BD1-466C-B221-21BAE5A3D21F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EC.FFmpegAutoGen", "播放库\EC.FFmpegAutoGen\EC.FFmpegAutoGen.csproj", "{58B91E08-B095-4598-A0A4-74E3882F1881}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EC.Utils", "公共库\EC.Utils\EC.Utils.csproj", "{D651B7BC-B1B4-4D33-A409-3C8E6C52B207}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EC.Onvif", "公共库\EC.Onvif\EC.Onvif.csproj", "{EFEDF229-0330-46B4-B32E-3CA6BEA61E39}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|ARM = Debug|ARM + Debug|ARM64 = Debug|ARM64 + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|ARM = Release|ARM + Release|ARM64 = Release|ARM64 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C37542F7-5C6A-4998-8D1B-CED979560C8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C37542F7-5C6A-4998-8D1B-CED979560C8A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C37542F7-5C6A-4998-8D1B-CED979560C8A}.Debug|ARM.ActiveCfg = Debug|Any CPU + {C37542F7-5C6A-4998-8D1B-CED979560C8A}.Debug|ARM.Build.0 = Debug|Any CPU + {C37542F7-5C6A-4998-8D1B-CED979560C8A}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {C37542F7-5C6A-4998-8D1B-CED979560C8A}.Debug|ARM64.Build.0 = Debug|Any CPU + {C37542F7-5C6A-4998-8D1B-CED979560C8A}.Debug|x64.ActiveCfg = Debug|Any CPU + {C37542F7-5C6A-4998-8D1B-CED979560C8A}.Debug|x64.Build.0 = Debug|Any CPU + {C37542F7-5C6A-4998-8D1B-CED979560C8A}.Debug|x86.ActiveCfg = Debug|Any CPU + {C37542F7-5C6A-4998-8D1B-CED979560C8A}.Debug|x86.Build.0 = Debug|Any CPU + {C37542F7-5C6A-4998-8D1B-CED979560C8A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C37542F7-5C6A-4998-8D1B-CED979560C8A}.Release|Any CPU.Build.0 = Release|Any CPU + {C37542F7-5C6A-4998-8D1B-CED979560C8A}.Release|ARM.ActiveCfg = Release|Any CPU + {C37542F7-5C6A-4998-8D1B-CED979560C8A}.Release|ARM.Build.0 = Release|Any CPU + {C37542F7-5C6A-4998-8D1B-CED979560C8A}.Release|ARM64.ActiveCfg = Release|Any CPU + {C37542F7-5C6A-4998-8D1B-CED979560C8A}.Release|ARM64.Build.0 = Release|Any CPU + {C37542F7-5C6A-4998-8D1B-CED979560C8A}.Release|x64.ActiveCfg = Release|Any CPU + {C37542F7-5C6A-4998-8D1B-CED979560C8A}.Release|x64.Build.0 = Release|Any CPU + {C37542F7-5C6A-4998-8D1B-CED979560C8A}.Release|x86.ActiveCfg = Release|Any CPU + {C37542F7-5C6A-4998-8D1B-CED979560C8A}.Release|x86.Build.0 = Release|Any CPU + {7F5DA7D9-8DCF-44C8-921D-B156C99D4F9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7F5DA7D9-8DCF-44C8-921D-B156C99D4F9B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7F5DA7D9-8DCF-44C8-921D-B156C99D4F9B}.Debug|ARM.ActiveCfg = Debug|Any CPU + {7F5DA7D9-8DCF-44C8-921D-B156C99D4F9B}.Debug|ARM.Build.0 = Debug|Any CPU + {7F5DA7D9-8DCF-44C8-921D-B156C99D4F9B}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {7F5DA7D9-8DCF-44C8-921D-B156C99D4F9B}.Debug|ARM64.Build.0 = Debug|Any CPU + {7F5DA7D9-8DCF-44C8-921D-B156C99D4F9B}.Debug|x64.ActiveCfg = Debug|Any CPU + {7F5DA7D9-8DCF-44C8-921D-B156C99D4F9B}.Debug|x64.Build.0 = Debug|Any CPU + {7F5DA7D9-8DCF-44C8-921D-B156C99D4F9B}.Debug|x86.ActiveCfg = Debug|Any CPU + {7F5DA7D9-8DCF-44C8-921D-B156C99D4F9B}.Debug|x86.Build.0 = Debug|Any CPU + {7F5DA7D9-8DCF-44C8-921D-B156C99D4F9B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7F5DA7D9-8DCF-44C8-921D-B156C99D4F9B}.Release|Any CPU.Build.0 = Release|Any CPU + {7F5DA7D9-8DCF-44C8-921D-B156C99D4F9B}.Release|ARM.ActiveCfg = Release|Any CPU + {7F5DA7D9-8DCF-44C8-921D-B156C99D4F9B}.Release|ARM.Build.0 = Release|Any CPU + {7F5DA7D9-8DCF-44C8-921D-B156C99D4F9B}.Release|ARM64.ActiveCfg = Release|Any CPU + {7F5DA7D9-8DCF-44C8-921D-B156C99D4F9B}.Release|ARM64.Build.0 = Release|Any CPU + {7F5DA7D9-8DCF-44C8-921D-B156C99D4F9B}.Release|x64.ActiveCfg = Release|Any CPU + {7F5DA7D9-8DCF-44C8-921D-B156C99D4F9B}.Release|x64.Build.0 = Release|Any CPU + {7F5DA7D9-8DCF-44C8-921D-B156C99D4F9B}.Release|x86.ActiveCfg = Release|Any CPU + {7F5DA7D9-8DCF-44C8-921D-B156C99D4F9B}.Release|x86.Build.0 = Release|Any CPU + {8E4EFE09-CB77-44A6-904E-B42639136385}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8E4EFE09-CB77-44A6-904E-B42639136385}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8E4EFE09-CB77-44A6-904E-B42639136385}.Debug|ARM.ActiveCfg = Debug|Any CPU + {8E4EFE09-CB77-44A6-904E-B42639136385}.Debug|ARM.Build.0 = Debug|Any CPU + {8E4EFE09-CB77-44A6-904E-B42639136385}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {8E4EFE09-CB77-44A6-904E-B42639136385}.Debug|ARM64.Build.0 = Debug|Any CPU + {8E4EFE09-CB77-44A6-904E-B42639136385}.Debug|x64.ActiveCfg = Debug|Any CPU + {8E4EFE09-CB77-44A6-904E-B42639136385}.Debug|x64.Build.0 = Debug|Any CPU + {8E4EFE09-CB77-44A6-904E-B42639136385}.Debug|x86.ActiveCfg = Debug|Any CPU + {8E4EFE09-CB77-44A6-904E-B42639136385}.Debug|x86.Build.0 = Debug|Any CPU + {8E4EFE09-CB77-44A6-904E-B42639136385}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8E4EFE09-CB77-44A6-904E-B42639136385}.Release|Any CPU.Build.0 = Release|Any CPU + {8E4EFE09-CB77-44A6-904E-B42639136385}.Release|ARM.ActiveCfg = Release|Any CPU + {8E4EFE09-CB77-44A6-904E-B42639136385}.Release|ARM.Build.0 = Release|Any CPU + {8E4EFE09-CB77-44A6-904E-B42639136385}.Release|ARM64.ActiveCfg = Release|Any CPU + {8E4EFE09-CB77-44A6-904E-B42639136385}.Release|ARM64.Build.0 = Release|Any CPU + {8E4EFE09-CB77-44A6-904E-B42639136385}.Release|x64.ActiveCfg = Release|Any CPU + {8E4EFE09-CB77-44A6-904E-B42639136385}.Release|x64.Build.0 = Release|Any CPU + {8E4EFE09-CB77-44A6-904E-B42639136385}.Release|x86.ActiveCfg = Release|Any CPU + {8E4EFE09-CB77-44A6-904E-B42639136385}.Release|x86.Build.0 = Release|Any CPU + {2242B8A5-3E25-499E-9B23-3E61517A543E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2242B8A5-3E25-499E-9B23-3E61517A543E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2242B8A5-3E25-499E-9B23-3E61517A543E}.Debug|ARM.ActiveCfg = Debug|Any CPU + {2242B8A5-3E25-499E-9B23-3E61517A543E}.Debug|ARM.Build.0 = Debug|Any CPU + {2242B8A5-3E25-499E-9B23-3E61517A543E}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {2242B8A5-3E25-499E-9B23-3E61517A543E}.Debug|ARM64.Build.0 = Debug|Any CPU + {2242B8A5-3E25-499E-9B23-3E61517A543E}.Debug|x64.ActiveCfg = Debug|Any CPU + {2242B8A5-3E25-499E-9B23-3E61517A543E}.Debug|x64.Build.0 = Debug|Any CPU + {2242B8A5-3E25-499E-9B23-3E61517A543E}.Debug|x86.ActiveCfg = Debug|Any CPU + {2242B8A5-3E25-499E-9B23-3E61517A543E}.Debug|x86.Build.0 = Debug|Any CPU + {2242B8A5-3E25-499E-9B23-3E61517A543E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2242B8A5-3E25-499E-9B23-3E61517A543E}.Release|Any CPU.Build.0 = Release|Any CPU + {2242B8A5-3E25-499E-9B23-3E61517A543E}.Release|ARM.ActiveCfg = Release|Any CPU + {2242B8A5-3E25-499E-9B23-3E61517A543E}.Release|ARM.Build.0 = Release|Any CPU + {2242B8A5-3E25-499E-9B23-3E61517A543E}.Release|ARM64.ActiveCfg = Release|Any CPU + {2242B8A5-3E25-499E-9B23-3E61517A543E}.Release|ARM64.Build.0 = Release|Any CPU + {2242B8A5-3E25-499E-9B23-3E61517A543E}.Release|x64.ActiveCfg = Release|Any CPU + {2242B8A5-3E25-499E-9B23-3E61517A543E}.Release|x64.Build.0 = Release|Any CPU + {2242B8A5-3E25-499E-9B23-3E61517A543E}.Release|x86.ActiveCfg = Release|Any CPU + {2242B8A5-3E25-499E-9B23-3E61517A543E}.Release|x86.Build.0 = Release|Any CPU + {5EC832FA-4BD1-466C-B221-21BAE5A3D21F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5EC832FA-4BD1-466C-B221-21BAE5A3D21F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5EC832FA-4BD1-466C-B221-21BAE5A3D21F}.Debug|ARM.ActiveCfg = Debug|Any CPU + {5EC832FA-4BD1-466C-B221-21BAE5A3D21F}.Debug|ARM.Build.0 = Debug|Any CPU + {5EC832FA-4BD1-466C-B221-21BAE5A3D21F}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {5EC832FA-4BD1-466C-B221-21BAE5A3D21F}.Debug|ARM64.Build.0 = Debug|Any CPU + {5EC832FA-4BD1-466C-B221-21BAE5A3D21F}.Debug|x64.ActiveCfg = Debug|Any CPU + {5EC832FA-4BD1-466C-B221-21BAE5A3D21F}.Debug|x64.Build.0 = Debug|Any CPU + {5EC832FA-4BD1-466C-B221-21BAE5A3D21F}.Debug|x86.ActiveCfg = Debug|Any CPU + {5EC832FA-4BD1-466C-B221-21BAE5A3D21F}.Debug|x86.Build.0 = Debug|Any CPU + {5EC832FA-4BD1-466C-B221-21BAE5A3D21F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5EC832FA-4BD1-466C-B221-21BAE5A3D21F}.Release|Any CPU.Build.0 = Release|Any CPU + {5EC832FA-4BD1-466C-B221-21BAE5A3D21F}.Release|ARM.ActiveCfg = Release|Any CPU + {5EC832FA-4BD1-466C-B221-21BAE5A3D21F}.Release|ARM.Build.0 = Release|Any CPU + {5EC832FA-4BD1-466C-B221-21BAE5A3D21F}.Release|ARM64.ActiveCfg = Release|Any CPU + {5EC832FA-4BD1-466C-B221-21BAE5A3D21F}.Release|ARM64.Build.0 = Release|Any CPU + {5EC832FA-4BD1-466C-B221-21BAE5A3D21F}.Release|x64.ActiveCfg = Release|Any CPU + {5EC832FA-4BD1-466C-B221-21BAE5A3D21F}.Release|x64.Build.0 = Release|Any CPU + {5EC832FA-4BD1-466C-B221-21BAE5A3D21F}.Release|x86.ActiveCfg = Release|Any CPU + {5EC832FA-4BD1-466C-B221-21BAE5A3D21F}.Release|x86.Build.0 = Release|Any CPU + {58B91E08-B095-4598-A0A4-74E3882F1881}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {58B91E08-B095-4598-A0A4-74E3882F1881}.Debug|Any CPU.Build.0 = Debug|Any CPU + {58B91E08-B095-4598-A0A4-74E3882F1881}.Debug|ARM.ActiveCfg = Debug|Any CPU + {58B91E08-B095-4598-A0A4-74E3882F1881}.Debug|ARM.Build.0 = Debug|Any CPU + {58B91E08-B095-4598-A0A4-74E3882F1881}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {58B91E08-B095-4598-A0A4-74E3882F1881}.Debug|ARM64.Build.0 = Debug|Any CPU + {58B91E08-B095-4598-A0A4-74E3882F1881}.Debug|x64.ActiveCfg = Debug|Any CPU + {58B91E08-B095-4598-A0A4-74E3882F1881}.Debug|x64.Build.0 = Debug|Any CPU + {58B91E08-B095-4598-A0A4-74E3882F1881}.Debug|x86.ActiveCfg = Debug|Any CPU + {58B91E08-B095-4598-A0A4-74E3882F1881}.Debug|x86.Build.0 = Debug|Any CPU + {58B91E08-B095-4598-A0A4-74E3882F1881}.Release|Any CPU.ActiveCfg = Release|Any CPU + {58B91E08-B095-4598-A0A4-74E3882F1881}.Release|Any CPU.Build.0 = Release|Any CPU + {58B91E08-B095-4598-A0A4-74E3882F1881}.Release|ARM.ActiveCfg = Release|Any CPU + {58B91E08-B095-4598-A0A4-74E3882F1881}.Release|ARM.Build.0 = Release|Any CPU + {58B91E08-B095-4598-A0A4-74E3882F1881}.Release|ARM64.ActiveCfg = Release|Any CPU + {58B91E08-B095-4598-A0A4-74E3882F1881}.Release|ARM64.Build.0 = Release|Any CPU + {58B91E08-B095-4598-A0A4-74E3882F1881}.Release|x64.ActiveCfg = Release|Any CPU + {58B91E08-B095-4598-A0A4-74E3882F1881}.Release|x64.Build.0 = Release|Any CPU + {58B91E08-B095-4598-A0A4-74E3882F1881}.Release|x86.ActiveCfg = Release|Any CPU + {58B91E08-B095-4598-A0A4-74E3882F1881}.Release|x86.Build.0 = Release|Any CPU + {D651B7BC-B1B4-4D33-A409-3C8E6C52B207}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D651B7BC-B1B4-4D33-A409-3C8E6C52B207}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D651B7BC-B1B4-4D33-A409-3C8E6C52B207}.Debug|ARM.ActiveCfg = Debug|Any CPU + {D651B7BC-B1B4-4D33-A409-3C8E6C52B207}.Debug|ARM.Build.0 = Debug|Any CPU + {D651B7BC-B1B4-4D33-A409-3C8E6C52B207}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {D651B7BC-B1B4-4D33-A409-3C8E6C52B207}.Debug|ARM64.Build.0 = Debug|Any CPU + {D651B7BC-B1B4-4D33-A409-3C8E6C52B207}.Debug|x64.ActiveCfg = Debug|Any CPU + {D651B7BC-B1B4-4D33-A409-3C8E6C52B207}.Debug|x64.Build.0 = Debug|Any CPU + {D651B7BC-B1B4-4D33-A409-3C8E6C52B207}.Debug|x86.ActiveCfg = Debug|Any CPU + {D651B7BC-B1B4-4D33-A409-3C8E6C52B207}.Debug|x86.Build.0 = Debug|Any CPU + {D651B7BC-B1B4-4D33-A409-3C8E6C52B207}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D651B7BC-B1B4-4D33-A409-3C8E6C52B207}.Release|Any CPU.Build.0 = Release|Any CPU + {D651B7BC-B1B4-4D33-A409-3C8E6C52B207}.Release|ARM.ActiveCfg = Release|Any CPU + {D651B7BC-B1B4-4D33-A409-3C8E6C52B207}.Release|ARM.Build.0 = Release|Any CPU + {D651B7BC-B1B4-4D33-A409-3C8E6C52B207}.Release|ARM64.ActiveCfg = Release|Any CPU + {D651B7BC-B1B4-4D33-A409-3C8E6C52B207}.Release|ARM64.Build.0 = Release|Any CPU + {D651B7BC-B1B4-4D33-A409-3C8E6C52B207}.Release|x64.ActiveCfg = Release|Any CPU + {D651B7BC-B1B4-4D33-A409-3C8E6C52B207}.Release|x64.Build.0 = Release|Any CPU + {D651B7BC-B1B4-4D33-A409-3C8E6C52B207}.Release|x86.ActiveCfg = Release|Any CPU + {D651B7BC-B1B4-4D33-A409-3C8E6C52B207}.Release|x86.Build.0 = Release|Any CPU + {EFEDF229-0330-46B4-B32E-3CA6BEA61E39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EFEDF229-0330-46B4-B32E-3CA6BEA61E39}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EFEDF229-0330-46B4-B32E-3CA6BEA61E39}.Debug|ARM.ActiveCfg = Debug|Any CPU + {EFEDF229-0330-46B4-B32E-3CA6BEA61E39}.Debug|ARM.Build.0 = Debug|Any CPU + {EFEDF229-0330-46B4-B32E-3CA6BEA61E39}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {EFEDF229-0330-46B4-B32E-3CA6BEA61E39}.Debug|ARM64.Build.0 = Debug|Any CPU + {EFEDF229-0330-46B4-B32E-3CA6BEA61E39}.Debug|x64.ActiveCfg = Debug|Any CPU + {EFEDF229-0330-46B4-B32E-3CA6BEA61E39}.Debug|x64.Build.0 = Debug|Any CPU + {EFEDF229-0330-46B4-B32E-3CA6BEA61E39}.Debug|x86.ActiveCfg = Debug|Any CPU + {EFEDF229-0330-46B4-B32E-3CA6BEA61E39}.Debug|x86.Build.0 = Debug|Any CPU + {EFEDF229-0330-46B4-B32E-3CA6BEA61E39}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EFEDF229-0330-46B4-B32E-3CA6BEA61E39}.Release|Any CPU.Build.0 = Release|Any CPU + {EFEDF229-0330-46B4-B32E-3CA6BEA61E39}.Release|ARM.ActiveCfg = Release|Any CPU + {EFEDF229-0330-46B4-B32E-3CA6BEA61E39}.Release|ARM.Build.0 = Release|Any CPU + {EFEDF229-0330-46B4-B32E-3CA6BEA61E39}.Release|ARM64.ActiveCfg = Release|Any CPU + {EFEDF229-0330-46B4-B32E-3CA6BEA61E39}.Release|ARM64.Build.0 = Release|Any CPU + {EFEDF229-0330-46B4-B32E-3CA6BEA61E39}.Release|x64.ActiveCfg = Release|Any CPU + {EFEDF229-0330-46B4-B32E-3CA6BEA61E39}.Release|x64.Build.0 = Release|Any CPU + {EFEDF229-0330-46B4-B32E-3CA6BEA61E39}.Release|x86.ActiveCfg = Release|Any CPU + {EFEDF229-0330-46B4-B32E-3CA6BEA61E39}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {5EC832FA-4BD1-466C-B221-21BAE5A3D21F} = {A09E2512-EFE0-4E69-B7D1-B964B6358887} + {58B91E08-B095-4598-A0A4-74E3882F1881} = {A09E2512-EFE0-4E69-B7D1-B964B6358887} + {D651B7BC-B1B4-4D33-A409-3C8E6C52B207} = {8B78A8FF-D59D-4E86-91F3-0D5A4332E3B1} + {EFEDF229-0330-46B4-B32E-3CA6BEA61E39} = {8B78A8FF-D59D-4E86-91F3-0D5A4332E3B1} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {279F81E9-23B1-4D20-A450-2BADF996975B} + EndGlobalSection +EndGlobal diff --git a/ECMonitor/App.xaml b/ECMonitor/App.xaml new file mode 100644 index 0000000..56ec7b6 --- /dev/null +++ b/ECMonitor/App.xaml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #44494f + #40444d + #32363f + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ECMonitor/App.xaml.cs b/ECMonitor/App.xaml.cs new file mode 100644 index 0000000..1f3d71c --- /dev/null +++ b/ECMonitor/App.xaml.cs @@ -0,0 +1,91 @@ +using EC.UsingEventAggregator; +using EC.Utils; +using LibVLCSharp.Shared; +using Prism.Ioc; +using Prism.Modularity; +using Prism.Unity; +using System; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Threading; + +namespace ECMonitor +{ + /// + /// Interaction logic for App.xaml + /// + public partial class App : PrismApplication + { + protected override void OnStartup(StartupEventArgs e) + { + Core.Initialize(); + base.OnStartup(e); + RegisterEvents(); + LogFactory.GetLogger().Info("OnStartup"); + + // await new IpcInfoService().Test();//test sqlite + } + + protected override Window CreateShell() + { + return Container.Resolve(); + } + + protected override void RegisterTypes(IContainerRegistry containerRegistry) + { + } + + protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog) + { + moduleCatalog.AddModule(); + } + + //protected override IModuleCatalog CreateModuleCatalog() + //{ + // return new ConfigurationModuleCatalog(); + //} + protected override void OnExit(ExitEventArgs e) + { + base.OnExit(e); + } + + private void RegisterEvents() + { + //TaskScheduler.UnobservedTaskException += (sender, args) => + //{ + // MessageBox.Show(args.Exception.Message); + // args.SetObserved(); + //}; + DispatcherUnhandledException += App_DispatcherUnhandledException; + + TaskScheduler.UnobservedTaskException += new EventHandler< + UnobservedTaskExceptionEventArgs>(TaskScheduler_UnobservedTaskException); + + AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; + } + + private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) + { + FLogger.Error("Error encountered! Please contact support." + Environment.NewLine + e.Exception.Message); + + e.Handled = true; + } + + private static void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e) + { + foreach (Exception item in e.Exception.InnerExceptions) + { + FLogger.Error(string.Format("异常类型:{0}{1}来自:{2}{3}异常内容:{4}", + item.GetType(), Environment.NewLine, item.Source, + Environment.NewLine, item.Message)); + } + //将异常标识为已经观察到 + e.SetObserved(); + } + + private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) + { + FLogger.Error("Unhandled exception."); + } + } +} \ No newline at end of file diff --git a/ECMonitor/AssemblyInfo.cs b/ECMonitor/AssemblyInfo.cs new file mode 100644 index 0000000..8b5504e --- /dev/null +++ b/ECMonitor/AssemblyInfo.cs @@ -0,0 +1,10 @@ +using System.Windows; + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] diff --git a/ECMonitor/Code/Config/ConfigHelper.cs b/ECMonitor/Code/Config/ConfigHelper.cs new file mode 100644 index 0000000..02c91ae --- /dev/null +++ b/ECMonitor/Code/Config/ConfigHelper.cs @@ -0,0 +1,103 @@ +using EC.Utils.Config; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ECMonitor +{ + public class ConfigHelper : ConfigurationHelper + { + #region + /// + /// 自动关闭预警窗体 + /// + /// + public static bool? AutoWarningClose() + { + return GetValueInt("AutoWarningClose") == 1; + } + /// + /// AI 检索 + /// + /// + public static bool? VideoAIDetection() + { + return GetValueInt("VideoAIDetection") == 1; + } + + /// + /// WebSocketSvrPort + /// + /// + public static int WebSocketSvrPort() + { + return GetValueInt("WebSocketSvrPort"); + } + public static string APIServer() + { + return GetValue("APIServer"); + } + /// + /// 可选初始窗体图标 0:(1个窗体),1:4个窗体, 2:9个窗体 + /// + /// + public static int MainBarButtonSelectedIndex() + { + return GetValueInt("MainBarButtonSelectedIndex"); + } + public static string AIInputPath() + { + return GetValue("AIInputPath"); + } + public static string AIOutPath() + { + return GetValue("AIOutPath"); + } + +#endregion + #region ZMQ 配置 + + /// 发布地址 + /// + /// + public static string PUBServer() + { + return GetMQValue("PUBServer"); + } + /// + /// 订阅地址 + /// + /// + public static string SUBServer() + { + return GetMQValue("SUBServer"); + } + //AI服务地址 + public static string AISvrServer() + { + return GetMQValue("AISvrServer"); + } + /// + /// AI图片数据订阅 地址 + /// + /// + public static string SUBImageServer() + { + return GetMQValue("SUBImageServer"); + } + + #endregion + /// + /// 数据库服务地址 + /// + /// + public static string DBSvrServer() + { + return GetMQValue("DBSvrServer"); + } + + + } +} diff --git a/ECMonitor/Code/DB/DBDataHelper.cs b/ECMonitor/Code/DB/DBDataHelper.cs new file mode 100644 index 0000000..3a7c98d --- /dev/null +++ b/ECMonitor/Code/DB/DBDataHelper.cs @@ -0,0 +1,106 @@ + +using EC.Entity.PublicModel; +using EC.Entity.Video; +using EC.Entity.Warning; + +using EC.Utils; + +using EC.Utils.ZMQ; + +using NetMQ; +using NetMQ.Sockets; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ECMonitor.Code.DB +{ + public class DBDataHelper + { + //public static string _apiUrl = ConfigHelper.APIServer(); + public static string _dbSvrServer = ConfigHelper.DBSvrServer(); + public static ZMQRequestHelper requestHelper=null; + public static ZMQRequestHelper RequestContext() { + if (requestHelper == null) + { + requestHelper = new ZMQRequestHelper(_dbSvrServer); + + } + return requestHelper; + } + /// + /// 获取相机数据 + /// + /// + public static List LoadCameraData() + { + List msVideoRecorderList = new List(); + try + { + RequestModel requestModel = new RequestModel(); + requestModel.method = DBMethod.GetGroupAndCameraList; + requestModel.jsonstr = "all"; + + ResultModel resultModel = RequestContext().RequestFromServer(requestModel); + if (resultModel.result == DBMethod.Success) + { + msVideoRecorderList = resultModel.jsonstr.ToObject>(); + } + + } + catch (Exception ex) + { + LogFactory.GetLogger().Error(ex); + } + + return msVideoRecorderList; + } + + + + /// + /// 保存预警划线 + /// + /// + internal static bool SaveDrawShape(List drawShapeModelList) + { + RequestModel requestModel = new RequestModel(); + requestModel.method = DBMethod.SaveDrawShape; + requestModel.jsonstr = drawShapeModelList.ToJson(); + LogFactory.GetLogger().Debug(requestModel.jsonstr); + ResultModel resultModel =RequestContext().RequestFromServer(requestModel); + if (resultModel.result == DBMethod.Success) + { + return true; + }else + { + return false; + } + + } + internal static List GetDrawShape(string ip) + { + List drawShapeModelList = new List(); + try + { + RequestModel requestModel = new RequestModel(); + requestModel.method = DBMethod.GetDrawShape; + requestModel.jsonstr = ip; + LogFactory.GetLogger().Debug(requestModel.jsonstr); + ResultModel resultModel = RequestContext().RequestFromServer(requestModel); + if (resultModel.result == DBMethod.Success) + { + drawShapeModelList = Json.ToObject>(resultModel.jsonstr); + } + }catch(Exception ex) + { + LogFactory.GetLogger().Debug(ex); + } + + return drawShapeModelList; + + } + } +} diff --git a/ECMonitor/Code/DB/LoadFromAPIServer.cs b/ECMonitor/Code/DB/LoadFromAPIServer.cs new file mode 100644 index 0000000..7f83b9e --- /dev/null +++ b/ECMonitor/Code/DB/LoadFromAPIServer.cs @@ -0,0 +1,43 @@ +using EC.Entity.Video; +using EC.Utils; + +using System; +using System.Collections.Generic; + +namespace ECMonitor.Code +{ + public class LoadFromAPIServer + { + public static string _apiUrl = ConfigHelper.APIServer(); + + /// + /// 获取相机数据 + /// + /// + public static List LoadCameraData() + { + List msVideoRecorderList = new List(); + try + { + var respStr = HttpMethods.HttpGet(_apiUrl); + var respObj = Json.ToJObject(respStr); + var success = (bool)respObj["success"]; + if (success) + { + var message = (string)respObj["message"]; + var code = (int)respObj["code"]; + var timestamp = (string)respObj["timestamp"]; + msVideoRecorderList = Json.ToList(respObj["result"]?.ToString()); + } + } + catch (Exception ex) + { + LogFactory.GetLogger().Error(ex); + } + + return msVideoRecorderList; + } + + + } +} \ No newline at end of file diff --git a/ECMonitor/Code/DB/RequestModel.cs b/ECMonitor/Code/DB/RequestModel.cs new file mode 100644 index 0000000..3a7e411 --- /dev/null +++ b/ECMonitor/Code/DB/RequestModel.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ECMonitor.Code.ServerData +{ + public class RequestModel + { + public string Key { get; set; } + public string jsonstr { get; set; } + } +} diff --git a/ECMonitor/Code/Models/BaseModel.cs b/ECMonitor/Code/Models/BaseModel.cs new file mode 100644 index 0000000..3018ada --- /dev/null +++ b/ECMonitor/Code/Models/BaseModel.cs @@ -0,0 +1,89 @@ +using EC.UsingEventAggregator; +using Prism.Commands; +using Prism.Events; +using Prism.Mvvm; +using Prism.Regions; +using System.Collections.Specialized; + +namespace ECMonitor.Code.Models +{ + public class BaseModel : BindableBase + { + public IRegionManager _regionManager { get; set; } + public IEventAggregator _ea { get; set; } + + private string _title = ""; + + public string Title + { + get { return _title; } + set { SetProperty(ref _title, value); } + } + + public DelegateCommand SendMessageCommand { get; private set; } + + public BaseModel(IRegionManager regionManager, IEventAggregator ea) + { + _regionManager = regionManager; + _ea = ea; + _regionManager.Regions.CollectionChanged += Regions_CollectionChanged; + + SendMessageCommand = new DelegateCommand(SendMessage); + _ea.GetEvent().Subscribe(MessageReceived); + } + + public virtual void Regions_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) + { + if (e.Action == NotifyCollectionChangedAction.Add) + { + var region = (IRegion)e.NewItems[0]; + region.Views.CollectionChanged += Views_CollectionChanged; + } + } + + public virtual void Views_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) + { + if (e.Action == NotifyCollectionChangedAction.Add) + { + } + else if (e.Action == NotifyCollectionChangedAction.Remove) + { + } + } + + public virtual void SendMessage(string message) + { + SendMessage(new LogModel(1, message)); + } + + /// + /// 发送消息 + /// + /// + public virtual void SendMessage(LogModel log) + { + _ea.GetEvent().Publish(log); + } + + public virtual void MessageReceived(LogModel log) + { + //Messages.Add(message); + } + + #region 日志 + + public void Debug(string message) + { + } + + public void Info(string message) + { + } + + public void Error(string message) + { + } + + #endregion 日志 + } +} \ No newline at end of file diff --git a/ECMonitor/Code/Models/VideoShowModel.cs b/ECMonitor/Code/Models/VideoShowModel.cs new file mode 100644 index 0000000..e729ed8 --- /dev/null +++ b/ECMonitor/Code/Models/VideoShowModel.cs @@ -0,0 +1,46 @@ +using EC.Entity.Video; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ECMonitor.Code.Models +{ + public class VideoShowModel + { + public VideoShowModel() + { + UPDateTime(); + } + public string Message { get; set; } + public string CameraIp { get; set; } + public MonitorCamera Camera { get; set; } + /// + /// 控件注册名称 + /// + public string UCName { get; set; } + /// + /// 更新时间 + /// + private DateTime upDateTime; + public void UPDateTime() + { + upDateTime = new DateTime(); + } + /// + /// 判断预警是否接触 + /// + /// + public bool IsTimeOut() + { + DateTime now = new DateTime(); + double difSeconds = DateUnit.DateDiffSeconds(upDateTime, now); + return difSeconds > 30; + } + internal string RtspURL() + { + return Camera.RtspURL(); + } + } +} diff --git a/ECMonitor/Code/StaticData.cs b/ECMonitor/Code/StaticData.cs new file mode 100644 index 0000000..ea1a2fc --- /dev/null +++ b/ECMonitor/Code/StaticData.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ECMonitor.Code +{ + /// + /// 静态变量类 + /// + public class StaticData + { + /// + /// 选中的播放器的IP + /// + public static string MainPlayerIp { get; set; } + } +} diff --git a/ECMonitor/Code/SysemNotifyIcon/WPFSystemTray.cs b/ECMonitor/Code/SysemNotifyIcon/WPFSystemTray.cs new file mode 100644 index 0000000..c55fe2e --- /dev/null +++ b/ECMonitor/Code/SysemNotifyIcon/WPFSystemTray.cs @@ -0,0 +1,115 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ECMonitor.Code.SysemNotifyIcon +{ + public class WPFSystemTray + { + /// + /// 设置系统托盘 + /// + /// 最小化参数 + /// + /// + public static NotifyIcon SetSystemTray(SystemTrayParameter pars, List menuList) + { + NotifyIcon notifyIcon = new NotifyIcon(); + notifyIcon.Visible = true; + if (!string.IsNullOrWhiteSpace(pars.Icon)) + { + notifyIcon.Icon = new System.Drawing.Icon(pars.Icon);//程序图标 + } + if (!string.IsNullOrWhiteSpace(pars.MinText)) + { + notifyIcon.Text = pars.MinText;//最小化到托盘时,鼠标悬浮时显示的文字 + } + if (!string.IsNullOrWhiteSpace(pars.TipText)) + { + notifyIcon.BalloonTipText = pars.TipText; //设置系统托盘启动时显示的文本 + notifyIcon.ShowBalloonTip(pars.Time == 0 ? 100 : pars.Time);//显示时长 + } + notifyIcon.MouseDoubleClick += pars.dbClick; //双击事件 + notifyIcon.ContextMenuStrip = GetMenuStrip(menuList); + return notifyIcon; + } + /// + /// 设置系统托盘的菜单属性 + /// + /// + /// + static ContextMenuStrip GetMenuStrip(List menus) + { + ContextMenuStrip menu = new ContextMenuStrip(); + ToolStripMenuItem[] menuArray = new ToolStripMenuItem[menus.Count]; + int i = 0; + foreach (SystemTrayMenu item in menus) + { + ToolStripMenuItem menuItem = new ToolStripMenuItem(); + menuItem.Text = item.Txt; + menuItem.Click += item.Click; + if (!string.IsNullOrWhiteSpace(item.Icon) && System.IO.File.Exists(item.Icon)) { menuItem.Image = System.Drawing.Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + item.Icon); } + menuArray[i++] = menuItem; + } + menu.Items.AddRange(menuArray); + return menu; + } + } + + /// + /// 系统托盘参数 + /// + public class SystemTrayParameter + { + public SystemTrayParameter(string Icon, string MinText, string TipText, int Time, MouseEventHandler dbClick) + { + this.Icon = Icon; + this.MinText = MinText; + this.TipText = TipText; + this.Time = Time; + this.dbClick = dbClick; + } + /// + /// 托盘显示图标 + /// + public string Icon { get; set; } + /// + /// 最小化悬浮时文本 + /// + public string MinText { get; set; } + /// + /// 最小化启动时文本 + /// + public string TipText { get; set; } + /// + /// 最小化启动时文本显示时长 + /// + public int Time { get; set; } + /// + /// 最小化双击事件 + /// + public MouseEventHandler dbClick { get; set; } + } + /// + /// 右键菜单 + /// + public class SystemTrayMenu + { + /// + /// 菜单文本 + /// + public string Txt { get; set; } + /// + /// 菜单图标 + /// + public string Icon { get; set; } + /// + /// 菜单单击事件 + /// + public EventHandler Click { get; set; } + } + +} \ No newline at end of file diff --git a/ECMonitor/ECMonitor.csproj b/ECMonitor/ECMonitor.csproj new file mode 100644 index 0000000..9651365 --- /dev/null +++ b/ECMonitor/ECMonitor.csproj @@ -0,0 +1,161 @@ + + + + WinExe + net5.0-windows + true + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + + + $(DefaultXamlRuntime) + + + $(DefaultXamlRuntime) + Designer + + + $(DefaultXamlRuntime) + Designer + + + $(DefaultXamlRuntime) + + + + + + PreserveNewest + + + PreserveNewest + + + + + + + + + + + + + + diff --git a/ECMonitor/MVVM/ExtendCommand.cs b/ECMonitor/MVVM/ExtendCommand.cs new file mode 100644 index 0000000..0638e3f --- /dev/null +++ b/ECMonitor/MVVM/ExtendCommand.cs @@ -0,0 +1,81 @@ +using System; +using System.Windows.Input; + +namespace ECMonitor.MVVM +{ + public class ExtendCommand : ICommand + { + /// + /// 检查命令是否可以执行的事件,在UI事件发生导致控件状态或数据发生变化时触发 + /// + public event EventHandler CanExecuteChanged + { + add + { + if (_canExecute != null) + { + CommandManager.RequerySuggested += value; + } + } + remove + { + if (_canExecute != null) + { + CommandManager.RequerySuggested -= value; + } + } + } + + /// + /// 判断命令是否可以执行的方法 + /// + private Func _canExecute; + + /// + /// 命令需要执行的方法 + /// + private Action _execute; + + /// + /// 创建一个命令 + /// + /// 命令要执行的方法 + public ExtendCommand(Action execute) : this(execute, null) + { + } + + /// + /// 创建一个命令 + /// + /// 命令要执行的方法 + /// 判断命令是否能够执行的方法 + public ExtendCommand(Action execute, Func canExecute) + { + _execute = execute; + _canExecute = canExecute; + } + + /// + /// 判断命令是否可以执行 + /// + /// 命令传入的参数 + /// 是否可以执行 + public bool CanExecute(object parameter) + { + if (_canExecute == null) return true; + return _canExecute((T)parameter); + } + + /// + /// 执行命令 + /// + /// + public void Execute(object parameter) + { + if (_execute != null && CanExecute(parameter)) + { + _execute((T)parameter); + } + } + } +} \ No newline at end of file diff --git a/ECMonitor/MVVM/ExtendEventCommand.cs b/ECMonitor/MVVM/ExtendEventCommand.cs new file mode 100644 index 0000000..19a6b45 --- /dev/null +++ b/ECMonitor/MVVM/ExtendEventCommand.cs @@ -0,0 +1,45 @@ +using Microsoft.Xaml.Behaviors; +using System.Windows; +using System.Windows.Input; + +namespace ECMonitor.MVVM +{ + public class ExtendEventCommand : TriggerAction + { + /// + /// 事件要绑定的命令 + /// + public ICommand Command + { + get { return (ICommand)GetValue(CommandProperty); } + set { SetValue(CommandProperty, value); } + } + + // Using a DependencyProperty as the backing store for MsgName. This enables animation, styling, binding, etc... + public static readonly DependencyProperty CommandProperty = + DependencyProperty.Register("Command", typeof(ICommand), typeof(ExtendEventCommand), new PropertyMetadata(null)); + + /// + /// 绑定命令的参数,保持为空就是事件的参数 + /// + public object CommandParateter + { + get { return (object)GetValue(CommandParateterProperty); } + set { SetValue(CommandParateterProperty, value); } + } + + // Using a DependencyProperty as the backing store for CommandParateter. This enables animation, styling, binding, etc... + public static readonly DependencyProperty CommandParateterProperty = + DependencyProperty.Register("CommandParateter", typeof(object), typeof(ExtendEventCommand), new PropertyMetadata(null)); + + //执行事件 + protected override void Invoke(object parameter) + { + if (CommandParateter != null) + parameter = CommandParateter; + var cmd = Command; + if (cmd != null) + cmd.Execute(parameter); + } + } +} \ No newline at end of file diff --git a/ECMonitor/MVVM/PasswordBoxHelper.cs b/ECMonitor/MVVM/PasswordBoxHelper.cs new file mode 100644 index 0000000..fb6f9ce --- /dev/null +++ b/ECMonitor/MVVM/PasswordBoxHelper.cs @@ -0,0 +1,87 @@ +using System.Windows; +using System.Windows.Controls; + +namespace ECMonitor.MVVM +{ + public static class PasswordBoxHelper + { + public static readonly DependencyProperty PasswordProperty = + DependencyProperty.RegisterAttached("Password", + typeof(string), typeof(PasswordBoxHelper), + new FrameworkPropertyMetadata(string.Empty, OnPasswordPropertyChanged)); + + public static readonly DependencyProperty AttachProperty = + DependencyProperty.RegisterAttached("Attach", + typeof(bool), typeof(PasswordBoxHelper), new PropertyMetadata(false, Attach)); + + private static readonly DependencyProperty IsUpdatingProperty = + DependencyProperty.RegisterAttached("IsUpdating", typeof(bool), + typeof(PasswordBoxHelper)); + + public static void SetAttach(DependencyObject dp, bool value) + { + dp.SetValue(AttachProperty, value); + } + + public static bool GetAttach(DependencyObject dp) + { + return (bool)dp.GetValue(AttachProperty); + } + + public static string GetPassword(DependencyObject dp) + { + return (string)dp.GetValue(PasswordProperty); + } + + public static void SetPassword(DependencyObject dp, string value) + { + dp.SetValue(PasswordProperty, value); + } + + private static bool GetIsUpdating(DependencyObject dp) + { + return (bool)dp.GetValue(IsUpdatingProperty); + } + + private static void SetIsUpdating(DependencyObject dp, bool value) + { + dp.SetValue(IsUpdatingProperty, value); + } + + private static void OnPasswordPropertyChanged(DependencyObject sender, + DependencyPropertyChangedEventArgs e) + { + PasswordBox passwordBox = sender as PasswordBox; + passwordBox.PasswordChanged -= PasswordChanged; + if (!(bool)GetIsUpdating(passwordBox)) + { + passwordBox.Password = (string)e.NewValue; + } + passwordBox.PasswordChanged += PasswordChanged; + } + + private static void Attach(DependencyObject sender, + DependencyPropertyChangedEventArgs e) + { + PasswordBox passwordBox = sender as PasswordBox; + if (passwordBox == null) + return; + if ((bool)e.OldValue) + { + passwordBox.PasswordChanged -= PasswordChanged; + } + if ((bool)e.NewValue) + { + passwordBox.PasswordChanged += PasswordChanged; + } + } + + private static void PasswordChanged(object sender, RoutedEventArgs e) + { + PasswordBox passwordBox = sender as PasswordBox; + SetIsUpdating(passwordBox, true); + SetPassword(passwordBox, passwordBox.Password); + SetIsUpdating(passwordBox, false); + } + } +} \ No newline at end of file diff --git a/ECMonitor/MVVM/VerifyExceptionBehavior.cs b/ECMonitor/MVVM/VerifyExceptionBehavior.cs new file mode 100644 index 0000000..413d065 --- /dev/null +++ b/ECMonitor/MVVM/VerifyExceptionBehavior.cs @@ -0,0 +1,6 @@ +namespace ECMonitor.MVVM +{ + internal class VerifyExceptionBehavior + { + } +} \ No newline at end of file diff --git a/ECMonitor/MVVM/VerifyRule.cs b/ECMonitor/MVVM/VerifyRule.cs new file mode 100644 index 0000000..afd1b1e --- /dev/null +++ b/ECMonitor/MVVM/VerifyRule.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Windows.Controls; +using System.Windows.Data; + +namespace ECMonitor.MVVM +{ + public class VerifyRule : ValidationRule + { + public VerifyRuleType Type { get; set; } = VerifyRuleType.Unknown; + + public List WhatList { get; set; } + + public override ValidationResult Validate(object value, CultureInfo cultureInfo) + { + string strVal = value != null ? (string)value : string.Empty; + ValidationResult vRet = Type switch + { + VerifyRuleType.NotEmpty => VerifyNotEmpty(strVal), + VerifyRuleType.IP => VerifyIP(strVal), + VerifyRuleType.Unknown => VerifyUnkown(strVal), + VerifyRuleType.Temp => VerifyTemp(strVal), + _ => VerifyUnkown(strVal), + }; + + WhatList = new(); + WhatList.Add(new { Type, vRet.IsValid, value, strVal, vRet }); + return vRet; + } + + #region Verify Region + + private static ValidationResult VerifyNotEmpty(string value) + { + bool ret = !string.IsNullOrWhiteSpace(value); + string errMsg = "不能为空!"; + return ret ? ValidationResult.ValidResult : new ValidationResult(false, errMsg); + } + + private static ValidationResult VerifyIP(string value) + { + bool ret = VerifyUnit.CheckIp(value); + string errMsg = "IP格式错误!"; + return ret ? ValidationResult.ValidResult : new ValidationResult(false, errMsg); + } + + private static ValidationResult VerifyTemp(string value) + { + bool ret = !string.IsNullOrWhiteSpace(value); + string errMsg = "临时错误!"; + return ret ? ValidationResult.ValidResult : new ValidationResult(false, errMsg); + } + + private static ValidationResult VerifyUnkown(string value) + { + bool ret = false; + string errMsg = "未知错误!"; + return ret ? ValidationResult.ValidResult : new ValidationResult(false, errMsg); + } + + #endregion Verify Region + } +} \ No newline at end of file diff --git a/ECMonitor/MVVM/VerifyRuleType.cs b/ECMonitor/MVVM/VerifyRuleType.cs new file mode 100644 index 0000000..a566352 --- /dev/null +++ b/ECMonitor/MVVM/VerifyRuleType.cs @@ -0,0 +1,19 @@ +using System.ComponentModel; + +namespace ECMonitor.MVVM +{ + public enum VerifyRuleType + { + [Description("Temp")] + Temp = -2, + + [Description("Unknown")] + Unknown = -1, + + [Description("NotEmpty")] + NotEmpty = 1, + + [Description("IP")] + IP = 2, + } +} \ No newline at end of file diff --git a/ECMonitor/MVVM/WPFAssist.cs b/ECMonitor/MVVM/WPFAssist.cs new file mode 100644 index 0000000..5a6a677 --- /dev/null +++ b/ECMonitor/MVVM/WPFAssist.cs @@ -0,0 +1,50 @@ +using System.Windows.Controls; + +namespace ECMonitor.MVVM +{ + public class WPFAssist + { + /// + /// 获取DataGrid的所有行是否存在验证错误。 + /// + /// 要检查的DataGrid实例 + /// true 有错,false 无错 + public static bool GetDataGridRowsHasError(DataGrid dg) + { + bool hasError = false; + ValidationError err = null; + for (int i = 0; i < dg.Items.Count; i++) + { + DataGridRow row = (DataGridRow)dg.ItemContainerGenerator.ContainerFromIndex(i); + hasError = Validation.GetHasError(row); + if (hasError) + { + break; + } + } + return hasError; + } + + /// + /// 获取DataGrid的第一个被发现的验证错误结果。 + /// + /// 被检查的DataGrid实例。 + /// 错误结果。 + public static ValidationError GetDataGridRowsFirstError(DataGrid dg) + { + bool hasError = false; + ValidationError err = null; + for (int i = 0; i < dg.Items.Count; i++) + { + DataGridRow row = (DataGridRow)dg.ItemContainerGenerator.ContainerFromIndex(i); + hasError = Validation.GetHasError(row); + if (hasError) + { + err = Validation.GetErrors(row)[0]; + break; + } + } + return err; + } + } +} \ No newline at end of file diff --git a/ECMonitor/MainWindow.xaml b/ECMonitor/MainWindow.xaml new file mode 100644 index 0000000..2d8cc36 --- /dev/null +++ b/ECMonitor/MainWindow.xaml @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ECMonitor/MainWindow.xaml.cs b/ECMonitor/MainWindow.xaml.cs new file mode 100644 index 0000000..368f389 --- /dev/null +++ b/ECMonitor/MainWindow.xaml.cs @@ -0,0 +1,263 @@ +using EC.UsingEventAggregator; +using EC.Utils; +using ECMonitor.Code.SysemNotifyIcon; +using Prism.Events; +using Prism.Regions; +using System; +using System.Collections.Generic; +using System.ComponentModel; + +//using System.Drawing; +using System.Windows; +using System.Windows.Input; +using System.Windows.Media; + +namespace ECMonitor +{ + /// + /// Interaction logic for MainWindow.xaml + /// + public partial class MainWindow : Window + { + private IRegionManager _regionManager; + private IEventAggregator _ea; + + public MainWindow(IRegionManager regionManager, IEventAggregator ea) + { + _regionManager = regionManager; + _ea = ea; + this.ResizeMode = ResizeMode.CanMinimize; + + InitializeComponent(); + + //var paletteHelper = new PaletteHelper(); + //var theme = paletteHelper.GetTheme(); + //theme.SetBaseTheme(Theme.Dark); + //paletteHelper.SetTheme(theme); + + //系统托盘 + SystemTrayParameter pars = new SystemTrayParameter("zgx.ico", "守护中", "", 0, notifyIcon_MouseDoubleClick); + this.notifyIcon = WPFSystemTray.SetSystemTray(pars, GetList()); + + _ea.GetEvent().Subscribe(MessageReceived); + FLogger.SubLog += SubShowMessage; + FLogger.SubLog += SaveLog; + } + + #region PageEvent + + /// + /// 引发窗口关闭前响应,可阻止系统关闭 + /// + /// + protected override void OnClosing(CancelEventArgs e) + { + if (!EXIT_APP) + { + e.Cancel = true; + this.ShowInTaskbar = false; + HideWindow(); + } + } + + /// + /// 窗口关闭前响应,不可阻止系统关闭 + /// + /// + protected override void OnClosed(EventArgs e) + { + base.OnClosed(e); + //关闭系统托盘 + notifyIcon.Dispose(); + } + + #endregion PageEvent + + #region 系统托盘 + + private bool EXIT_APP = false; + private System.Windows.Forms.NotifyIcon notifyIcon; + + //托盘右键菜单集合 + private List GetList() + { + List ls = new List(); + ls.Add(new SystemTrayMenu() { Txt = "打开主面板", Icon = "", Click = mainWin_Click }); + ls.Add(new SystemTrayMenu() { Txt = "退出", Icon = "/img/exit.png", Click = Exit_Click }); + return ls; + } + + //双击事件 + private void notifyIcon_MouseDoubleClick(object sender, System.Windows.Forms.MouseEventArgs e) + { + ShowWindow(); + } + + #region 托盘右键菜单 + + //打开主面板 + private void mainWin_Click(object sender, EventArgs e) + { + ShowWindow(); + } + + //退出 + private void Exit_Click(object sender, EventArgs e) + { + EXIT_APP = true; + + this.Close(); + //System.Windows.Forms.Application.ExitThread(); + Environment.Exit(0); + // System.Windows.Application.Current.Shutdown(); + } + + public void ShowWindow() + { + this.Dispatcher.Invoke(new Action(() => + { + if (this.WindowState == WindowState.Minimized) + { + this.WindowState = WindowState.Normal; + } + this.ShowInTaskbar = true; + this.Show(); + this.Activate(); + })); + } + + private void HideWindow() + { + //this.WindowState = WindowState.Minimized; + + this.Hide(); + this.notifyIcon.ShowBalloonTip(3000, "", "程序在后台运行中,双击图标打开", System.Windows.Forms.ToolTipIcon.None); //弹出气泡提示 + } + + #endregion 托盘右键菜单 + + #endregion 系统托盘 + + #region 系统按钮 + + private void btnClose_Click(object sender, RoutedEventArgs e) + { + this.Close(); + // Exit_Click(sender, e); + } + + private void SetFormSize() + { + double x1 = SystemParameters.PrimaryScreenWidth;//得到屏幕整体宽度 + double y1 = SystemParameters.PrimaryScreenHeight;//得到屏幕整体高度 + double xy = x1 + y1; + x1 = x1 * 0.9; + y1 = y1 * 0.9; + this.Width = x1; + this.Height = y1; + } + + private void btnMax_Click(object sender, RoutedEventArgs e) + { + if (this.WindowState == WindowState.Maximized) + { + this.WindowState = WindowState.Normal; + } + else + { + this.WindowState = WindowState.Maximized; + } + } + + private void btnMin_Click(object sender, RoutedEventArgs e) + { + this.WindowState = WindowState.Minimized; + } + + private void DockPanel_MouseMove(object sender, MouseEventArgs e) + { + if (e.LeftButton == MouseButtonState.Pressed) + { + this.DragMove(); + } + } + + #endregion 系统按钮 + + #region top 按钮颜色 + + private SolidColorBrush barkgroudcolor = new SolidColorBrush(Color.FromRgb(0x4c, 0x8b, 0xb7)); + + private void btnVodieo_Click(object sender, RoutedEventArgs e) + { + btnVodieo.Background = barkgroudcolor; + btnSet.Background = Brushes.Transparent; + } + + private void btnSet_Click(object sender, RoutedEventArgs e) + { + btnVodieo.Background = Brushes.Transparent; + btnSet.Background = barkgroudcolor; + } + + #endregion top 按钮颜色 + + #region 统一底部 弹窗提示 + + public void MessageReceived(LogModel log) + { + MainSnackbar.MessageQueue?.Enqueue(log.message); + } + + //public async Task MessageTips(string message) + //{ + // var sampleMessageDialog = new SampleMessageDialog + // { + // Message = { Text = message } + // }; + // return await DialogHost.Show(sampleMessageDialog, "RootDialog"); + //} + + #endregion 统一底部 弹窗提示 + + #region 公共 基础函数 + + private int linenumber = 0; + + private void SubShowMessage(MyLogger log) + { + if (log.Level >= (LoggerLevel)0) + { + linenumber++; + this.Dispatcher.Invoke(new Action(() => + { + if (linenumber > 500) + { + //richText.Document.Blocks.Clear(); + } + // richText.AppendText(log.Message + '\n'); + })); + } + } + + private void SaveLog(MyLogger log) + { + switch (log.Level) + { + case LoggerLevel.Debug: + LogFactory.GetLogger().Debug(log.Message); + break; + + case LoggerLevel.Info: + LogFactory.GetLogger().Info(log.Message); + break; + + case LoggerLevel.Error: + LogFactory.GetLogger().Error(log.Message); + break; + } + } + + #endregion 公共 基础函数 + } +} \ No newline at end of file diff --git a/ECMonitor/MainWindowViewModel.cs b/ECMonitor/MainWindowViewModel.cs new file mode 100644 index 0000000..49c76c0 --- /dev/null +++ b/ECMonitor/MainWindowViewModel.cs @@ -0,0 +1,131 @@ +using EC.Entity.Warning; +using EC.UsingEventAggregator; +using EC.Utils; +using EC.Utils.ZMQ; +using ECMonitor.Code; +using ECMonitor.Code.Models; +using ECMonitor.Manager; +using ECMonitor.Page.Name; +using ECMonitor.Views; +using Prism.Commands; +using Prism.Events; +using Prism.Regions; +using System; +using System.Windows; + +namespace ECMonitor +{ + public class MainWindowViewModel : BaseModel + { + private MainWindow _w; + private ZMQManager _mqManager { get; set; } + private WebSocketManager _webSocketManager = null; + private FrmVideoPlayer _frmVideoPlayer; + private FrmVideoWanging _frmVideoWanging; + public DelegateCommand LoadCommand { get; private set; } + + public DelegateCommand NavigateCommand { get; private set; } + + public MainWindowViewModel(IRegionManager regionManager, IEventAggregator ea) : base(regionManager, ea) + { + MessageManager.Init(ea); + LoadCommand = new DelegateCommand(Load); + NavigateCommand = new DelegateCommand(Navigate); + regionManager.RegisterViewWithRegion(RegionsName.MainWindowCenter, typeof(Page.CameraMonitor.Main)); + + _mqManager = new ZMQManager(); + _mqManager.OnDataReceived += ZMQDataReceived; + _webSocketManager = new WebSocketManager(); + _webSocketManager.OnDataReceived += WebSocketDataReceived; + StartServer(); + _frmVideoPlayer = new FrmVideoPlayer(ea); + _frmVideoWanging = new FrmVideoWanging(ea); + } + + private void Navigate(string navigatePath) + { + if (navigatePath != null) + { + _regionManager.RequestNavigate(RegionsName.MainWindowCenter, navigatePath); + } + } + + //窗口载入 + private void Load(Window w) + { + _w = (MainWindow)w; + w.Closed += (sender, e) => + { + StopServer(); + }; + } + + private void StartServer() + { + _mqManager.Start(); + _webSocketManager.Start(); + } + + private void StopServer() + { + _mqManager?.Stop(); + _webSocketManager.Stop(); + } + + //关闭窗口 + private void CloseWindow() + { + // canClose = true; + _w.Close(); + } + + #region ZMQ WebSocket + + /// + /// ZMQ 消息 + /// + /// + /// + private void ZMQDataReceived(object sender, PubSubModel msgModel) + { + SubMessageIn(msgModel); + } + + private void SubMessageIn(PubSubModel msgModel) + { + if (msgModel.TopicLower().StartsWith(ZMQTopic.Show_Single_Video))//单个视频显示 + { + _frmVideoPlayer.Play(msgModel.msg); + } + else if (msgModel.TopicLower().StartsWith(ZMQTopic.MainFrom_Show_Video))//在主窗体显示 + { + _ea.GetEvent().Publish(msgModel.msg); + _w.ShowWindow(); + } + //else if (msgModel.TopicLower() == ZMQTopic.Warning_Show_Video)//预警视频只是显示 + //{ + // _frmVideoWanging.NewWarningPlay(msgModel.msg); + //} + else if (msgModel.TopicLower() == ZMQTopic.AI_Detect_Warning_Data)//视频预警输入 + { + try + { + WarningModel warningModel = msgModel.msg.ToObject(); + _frmVideoWanging.NewWarningPlay(warningModel.ip); + _ea.GetEvent().Publish(warningModel); + } + catch (Exception ex) + { + LogFactory.GetLogger().Error(ex); + } + } + } + + private void WebSocketDataReceived(object sender, PubSubModel pubSubModel) + { + SubMessageIn(pubSubModel); + } + + #endregion ZMQ WebSocket + } +} \ No newline at end of file diff --git a/ECMonitor/Manager/CameraManager.cs b/ECMonitor/Manager/CameraManager.cs new file mode 100644 index 0000000..0f2a280 --- /dev/null +++ b/ECMonitor/Manager/CameraManager.cs @@ -0,0 +1,61 @@ +using EC.Entity.Video; +using ECMonitor.Code.DB; +using System.Collections.Generic; + +namespace ECMonitor.Code +{ + public class CameraManager + { + public static List CameraList = new List(); + + public static List LoadData() + { + var msVideoRecorderList = DBDataHelper.LoadCameraData(); + ///添加测试 + //msVideoRecorderList.Add(TestMsVideoRecorder()); + + CameraList.Clear(); + foreach (MsVideoRecorder msVideoRecorder in msVideoRecorderList) + { + CameraList.AddRange(msVideoRecorder.MsCameraSettingList); + } + + return msVideoRecorderList; + } + + public static MsVideoRecorder TestMsVideoRecorder() + { + MsVideoRecorder msVideoRecorder = new MsVideoRecorder(); + msVideoRecorder.MsCameraSettingList.Add(new MonitorCamera("192.168.1.108", 37777, "admin", "hk123456", 2)); + msVideoRecorder.MsCameraSettingList.Add(new MonitorCamera("192.168.1.65", 80000, "admin", "hk123456", 5)); + msVideoRecorder.MsCameraSettingList.Add(new MonitorCamera("120.198.209.123", 80000, "admin", "hk123456", 5)); + msVideoRecorder.MsCameraSettingList.Add(new MonitorCamera("218.204.221.100", 80000, "admin", "hk123456", 5)); + msVideoRecorder.MsCameraSettingList.Add(new MonitorCamera("120.236.237.23", 80000, "admin", "hk123456", 5)); + + return msVideoRecorder; + } + public static void Add(MonitorCamera camera) + { + CameraList.Add(camera); + + } + public static MonitorCamera GetCamera(string cameraIp) + { + if (string.IsNullOrEmpty(cameraIp)) + { + return null; + } + if (CameraList.Count == 0) + { + LoadData(); + } + var tempCamera = CameraList.Find(c => c.Ip == cameraIp); + if (tempCamera == null)//获取 新更新 的相机 + { + LoadData(); + tempCamera = CameraList.Find(c => c.Ip == cameraIp); + } + return tempCamera; + } + } +} \ No newline at end of file diff --git a/ECMonitor/Manager/MessageManager.cs b/ECMonitor/Manager/MessageManager.cs new file mode 100644 index 0000000..d08b2ee --- /dev/null +++ b/ECMonitor/Manager/MessageManager.cs @@ -0,0 +1,56 @@ +using EC.UsingEventAggregator; +using ECMonitor.UC; +using MaterialDesignThemes.Wpf; +using Prism.Events; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ECMonitor.Manager +{ + public class MessageManager + { + static IEventAggregator _ea { get; set; } + public static void Init(IEventAggregator ea) + { + _ea = ea; + } + + + public static void ShowMessage( string msg, bool isErr=false) + { + int level = 0; + if (isErr) + { + level = 3; + } + LogModel log = new LogModel(level, msg); + _ea.GetEvent().Publish(log); + } + public static void ShowMessage( int level, string msg, string remark="") + { + + LogModel log = new LogModel(level, msg,remark); + _ea.GetEvent().Publish(log); + } + static object messageLock = new object(); + /// + /// 弹窗显示 + /// + /// + /// + public static Task MessageBox(string message) + { + lock (messageLock) + { + var sampleMessageDialog = new SampleMessageDialog + { + Message = { Text = message } + }; + return DialogHost.Show(sampleMessageDialog, "RootDialog"); + } + } + } +} diff --git a/ECMonitor/Manager/ShowVideoManager.cs b/ECMonitor/Manager/ShowVideoManager.cs new file mode 100644 index 0000000..2954d87 --- /dev/null +++ b/ECMonitor/Manager/ShowVideoManager.cs @@ -0,0 +1,50 @@ +using EC.Entity.Video; +using ECMonitor.Code.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ECMonitor.Code +{ + public class ShowVideoManager + { + public int UCVideoIndex = 0; + public List UCVideoList = new List(); + + public VideoShowModel CreateVideoShowModel(string cameraIp) + { + + VideoShowModel ucVideoShowModel = new VideoShowModel(); + ucVideoShowModel.CameraIp = cameraIp; + ucVideoShowModel.UCName = "UCRegVideo" + UCVideoIndex++; + MonitorCamera camera = CameraManager.GetCamera(cameraIp); + if (camera != null) + { + ucVideoShowModel.Camera = camera; + } + else { + ucVideoShowModel.Message = "没有视频"; + } + + + UCVideoList.Add(ucVideoShowModel); + return ucVideoShowModel; + } + /// + /// 获取显示模块 + /// + /// + /// + public VideoShowModel GetVideoShowModel(string cameraIp) + { + return UCVideoList.Find(c => c.CameraIp == cameraIp); + } + + internal void Remove(VideoShowModel videoShow) + { + UCVideoList.Remove(videoShow); + } + } +} diff --git a/ECMonitor/Manager/VideoPlayManager.cs b/ECMonitor/Manager/VideoPlayManager.cs new file mode 100644 index 0000000..6701d8b --- /dev/null +++ b/ECMonitor/Manager/VideoPlayManager.cs @@ -0,0 +1,133 @@ +using ECMonitor.UC.Videos; +using Prism.Events; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Controls; + +namespace ECMonitor.Manager +{ + public class VideoPlayManager + { + + private int _videoIndex = 0; + private List UCVideoList = new List(); + + /// + /// 获取显示模块 + /// + /// + /// + public UserControl GetUserControl(string cameraIp) + { + return UCVideoList.Find(c => c.GetCameraIp() == cameraIp).GetControl(); + } + public IUCPlayer GetUCVideo(string cameraIp) + { + return UCVideoList.Find(c => c.GetCameraIp() == cameraIp); + } + internal void Add(IUCPlayer videoShow) + { + videoShow.SetIndex(UCVideoList.Count); + UCVideoList.Add(videoShow); + + } + internal void Remove(IUCPlayer videoShow) + { + UCVideoList.Remove(videoShow); + int icont = UCVideoList.Count; + for(int i = 0; i < icont; i++) + { + UCVideoList[i].SetIndex(i); + } + } + + internal List GetUCVideoList() + { + return UCVideoList; + } + internal void SetALLUnSelected() + { + foreach (IUCPlayer videoPlay in UCVideoList) + { + videoPlay.SetSelected(false); + } + } + public IUCPlayer CreateVideo(IEventAggregator ea,double _videoWidth, double _videoHeight, int videoType=0,bool showCloseButton=true) + { + switch (videoType) + { + case 0://Rtsp + UCFFmpegPlayer rtspVideo = new UCFFmpegPlayer(ea,_videoWidth, _videoHeight, _videoIndex++, showCloseButton,true); + rtspVideo._videoType = videoType; + UCVideoList.Add(rtspVideo); + return rtspVideo; + + //case 1://海康直连 + // return null + // break; + default: + UCFFmpegPlayer defaultVideo = new UCFFmpegPlayer(ea,_videoWidth, _videoHeight, _videoIndex++, showCloseButton); + defaultVideo._videoType = videoType; + UCVideoList.Add(defaultVideo); + return defaultVideo; + + } + + } + /// + /// 创建视频预警线规划 + /// + /// + /// + /// + /// + /// + public IUCPlayer CreateWarnCreateLinePlayer(IEventAggregator ea, double _videoWidth, double _videoHeight, int videoType = 0 ) + { + + UCFFmpegPlayer rtspVideo = new UCFFmpegPlayer(ea, _videoWidth, _videoHeight, _videoIndex++, false, false); + rtspVideo._videoType = videoType; + UCVideoList.Add(rtspVideo); + return rtspVideo; + + + } + public IUCPlayer CreateWaringVideo(IEventAggregator ea, double _videoWidth, double _videoHeight, int videoType = 0, bool showCloseButton = false) + { + + UCAIWarningPlayer rtspVideo = new UCAIWarningPlayer(ea, _videoWidth, _videoHeight, _videoIndex++, showCloseButton); + rtspVideo._videoType = videoType; + UCVideoList.Add(rtspVideo); + return rtspVideo; + + + } + + + public IUCPlayer CreateVideoAI(double _videoWidth, double _videoHeight, int videoType = 0, bool showCloseButton = true) + { + switch (videoType) + { + case 0://Rtsp + UCFFmpegAIPlayer rtspVideo = new UCFFmpegAIPlayer(_videoWidth, _videoHeight, _videoIndex++, showCloseButton); + rtspVideo.VideoType = videoType; + UCVideoList.Add(rtspVideo); + return rtspVideo; + + //case 1://海康直连 + // return null + // break; + default: + rtspVideo = new UCFFmpegAIPlayer(_videoWidth, _videoHeight, _videoIndex++, showCloseButton); + rtspVideo.VideoType = videoType; + UCVideoList.Add(rtspVideo); + return rtspVideo; + + } + + } + } +} diff --git a/ECMonitor/Manager/WebSocketManager.cs b/ECMonitor/Manager/WebSocketManager.cs new file mode 100644 index 0000000..3214c32 --- /dev/null +++ b/ECMonitor/Manager/WebSocketManager.cs @@ -0,0 +1,81 @@ + +using EC.Utils.ZMQ; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + + +using EC.Utils; +using Fleck; + + +namespace ECMonitor.Manager +{ + public class WebSocketManager + { + WebSocketServer _webSocketServer = null; + List allSockets = new List(); + public event EventHandler OnDataReceived; //定义一个委托类型的事件 + public WebSocketManager( ) + { + FleckLog.Level = LogLevel.Debug; + + _webSocketServer = new WebSocketServer("ws://0.0.0.0:"+ ConfigHelper.WebSocketSvrPort()); + + + } + + public void Start() + { + + _webSocketServer.Start(socket => + { + socket.OnOpen = () => + { + // Console.WriteLine("Open!"); + allSockets.Add(socket); + }; + socket.OnClose = () => + { + Console.WriteLine("Close!"); + allSockets.Remove(socket); + }; + socket.OnMessage = message => + { + //Console.WriteLine(message); + // allSockets.ToList().ForEach(s => s.Send("Echo: " + message)); + WebSocketDataReceived(socket,message); + }; + }); + + } + public void Stop() + { + allSockets.ToList().ForEach(s => s.Close()); + _webSocketServer.Dispose(); + } + private void WebSocketDataReceived(object sender, string message) + { + try + { + if (message.IndexOf("topic") > 0) + { + PubSubModel pubSubModel = message.ToObject(); + if (pubSubModel != null) + { + OnDataReceived?.Invoke(this, pubSubModel); + } + } + } + catch(Exception ex) { + LogFactory.GetLogger().Error(ex); + } + + + } + + } +} diff --git a/ECMonitor/Manager/ZMQManager.cs b/ECMonitor/Manager/ZMQManager.cs new file mode 100644 index 0000000..077d1b7 --- /dev/null +++ b/ECMonitor/Manager/ZMQManager.cs @@ -0,0 +1,82 @@ +using EC.Utils.ZMQ; +using EC.UsingEventAggregator; +using EC.Utils.Config; + +using Prism.Events; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using EC.Utils; + +namespace ECMonitor.Code +{ + public class ZMQManager + { + /// + /// 通用zmq + /// + static ZMQHelper _zmqHelper; + + + public event EventHandler OnDataReceived; //定义一个委托类型的事件 + + public void Start() + { + try + { + string pubserver = ConfigHelper.PUBServer(); + string subserver = ConfigHelper.SUBServer(); + List topics = SUBTopicList(); + + _zmqHelper = new ZMQHelper(pubserver, subserver, topics); + _zmqHelper.OnSubData += SubDataReceived; + _zmqHelper.Start(); + }catch(Exception ex) + { + FLogger.Error(ex); + } + + + + + } + + internal static List SUBTopicList() + { + List topicList = new List(); + topicList.Add("Topic"); + topicList.Add(ZMQTopic.Show_Single_Video + ConfigHelper.AppId); + topicList.Add(ZMQTopic.MainFrom_Show_Video + ConfigHelper.AppId); + + topicList.Add(ZMQTopic.MainFrom_Show_Video); + + + topicList.Add(ZMQTopic.AI_Detect_Warning_Data); + return topicList; + } + + public void Stop() + { + _zmqHelper?.Stop(); + } + private void SubDataReceived(object sender, PubSubModel msgModel) + { + try + { + OnDataReceived?.Invoke(sender, msgModel); + } + catch (Exception ex) + { + LogFactory.GetLogger().Error(ex); + } + + } + public void Send(string topic, string msg) + { + _zmqHelper.Send( topic, msg); + } + + } +} diff --git a/ECMonitor/NavigationModule.cs b/ECMonitor/NavigationModule.cs new file mode 100644 index 0000000..621279b --- /dev/null +++ b/ECMonitor/NavigationModule.cs @@ -0,0 +1,24 @@ +using ECMonitor.Page.Name; +using Prism.Ioc; +using Prism.Modularity; + +namespace ECMonitor +{ + public class NavigationModule : IModule + { + public void OnInitialized(IContainerProvider containerProvider) + { + } + + public void RegisterTypes(IContainerRegistry containerRegistry) + { + containerRegistry.RegisterForNavigation(name: ViewsName.CameraMonitorMain); + + containerRegistry.RegisterForNavigation(name: ViewsName.SystemSetMain); + containerRegistry.RegisterForNavigation(name: ViewsName.SystemSetManageSet); + containerRegistry.RegisterForNavigation(name: ViewsName.SystemSetManageNvr); + containerRegistry.RegisterForNavigation(name: ViewsName.SystemSetManageIpc); + containerRegistry.RegisterForNavigation(name: ViewsName.SystemSetSearchIpc); + } + } +} \ No newline at end of file diff --git a/ECMonitor/Page/CameraMonitor/CameraAdjust.xaml b/ECMonitor/Page/CameraMonitor/CameraAdjust.xaml new file mode 100644 index 0000000..d7fa253 --- /dev/null +++ b/ECMonitor/Page/CameraMonitor/CameraAdjust.xaml @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ECMonitor/Page/CameraMonitor/CameraAdjust.xaml.cs b/ECMonitor/Page/CameraMonitor/CameraAdjust.xaml.cs new file mode 100644 index 0000000..b3f7b37 --- /dev/null +++ b/ECMonitor/Page/CameraMonitor/CameraAdjust.xaml.cs @@ -0,0 +1,135 @@ +using EC.Onvif; +using EC.UsingEventAggregator; +using Prism.Events; +using System.Windows; +using System.Windows.Controls; + +namespace ECMonitor.Page.CameraMonitor +{ + /// + /// UCMainRight.xaml 的交互逻辑 + /// + public partial class CameraAdjust : UserControl + { + private IEventAggregator _ea { get; set; } + + private OnvifClient _onvifClient { get; set; } + + public CameraAdjust(IEventAggregator ea) + { + InitializeComponent(); + + _ea = ea; + _ea.GetEvent().Subscribe(SetCurOnvifClient); + + InitBtnListenEvent(); + } + + #region Get & Set + + private void SetCurOnvifClient(OnvifClient obj) + { + _onvifClient = obj; + } + + #endregion Get & Set + + #region ListenEvent + + private void InitBtnListenEvent() + { + //luBtn.Click += OperateOnvifMouseDown; + //lBtn.Click += OperateOnvifMouseDown; + //ldBtn.Click += OperateOnvifMouseDown; + //uBtn.Click += OperateOnvifMouseDown; + //dBtn.Click += OperateOnvifMouseDown; + //ruBtn.Click += OperateOnvifMouseDown; + //rBtn.Click += OperateOnvifMouseDown; + //rdBtn.Click += OperateOnvifMouseDown; + + luBtn.AddHandler(MouseDownEvent, new RoutedEventHandler(OperateOnvifMouseDown), true); + lBtn.AddHandler(MouseDownEvent, new RoutedEventHandler(OperateOnvifMouseDown), true); + ldBtn.AddHandler(MouseDownEvent, new RoutedEventHandler(OperateOnvifMouseDown), true); + uBtn.AddHandler(MouseDownEvent, new RoutedEventHandler(OperateOnvifMouseDown), true); + cBtn.AddHandler(MouseDownEvent, new RoutedEventHandler(OperateOnvifMouseDown), true); + dBtn.AddHandler(MouseDownEvent, new RoutedEventHandler(OperateOnvifMouseDown), true); + ruBtn.AddHandler(MouseDownEvent, new RoutedEventHandler(OperateOnvifMouseDown), true); + rBtn.AddHandler(MouseDownEvent, new RoutedEventHandler(OperateOnvifMouseDown), true); + rdBtn.AddHandler(MouseDownEvent, new RoutedEventHandler(OperateOnvifMouseDown), true); + + luBtn.AddHandler(MouseUpEvent, new RoutedEventHandler(OperateOnvifMouseUp), true); + lBtn.AddHandler(MouseUpEvent, new RoutedEventHandler(OperateOnvifMouseUp), true); + ldBtn.AddHandler(MouseUpEvent, new RoutedEventHandler(OperateOnvifMouseUp), true); + uBtn.AddHandler(MouseUpEvent, new RoutedEventHandler(OperateOnvifMouseUp), true); + cBtn.AddHandler(MouseUpEvent, new RoutedEventHandler(OperateOnvifMouseUp), true); + dBtn.AddHandler(MouseUpEvent, new RoutedEventHandler(OperateOnvifMouseUp), true); + ruBtn.AddHandler(MouseUpEvent, new RoutedEventHandler(OperateOnvifMouseUp), true); + rBtn.AddHandler(MouseUpEvent, new RoutedEventHandler(OperateOnvifMouseUp), true); + rdBtn.AddHandler(MouseUpEvent, new RoutedEventHandler(OperateOnvifMouseUp), true); + } + + private bool IsOperateOnvif { get; set; } + + private void OperateOnvifMouseDown(object sender, RoutedEventArgs e) + { + if (_onvifClient == null || IsOperateOnvif) + return; + IsOperateOnvif = true; + var btnName = ((Button)sender).Name; + var step = (float)stepSlider.Value; + var dist = step * OnvifClient.atomDist; + var speed = step * OnvifClient.atomSpeed; + float[] ptz = new float[] { 0, 0, 0 };//ptx,pty,zx + switch (btnName) + { + case "luBtn": + ptz = new float[] { -1, 1, 0 }; + break; + + case "uBtn": + ptz = new float[] { 0, 1, 0 }; + break; + + case "ruBtn": + ptz = new float[] { 1, 1, 0 }; + break; + + case "lBtn": + ptz = new float[] { -1, 0, 0 }; + break; + + case "cBtn": + ptz = new float[] { 0, 0, 0 }; + break; + + case "rBtn": + ptz = new float[] { 1, 0, 0 }; + break; + + case "ldBtn": + ptz = new float[] { -1, -1, 0 }; + break; + + case "dBtn": + ptz = new float[] { 0, -1, 0 }; + break; + + case "rdBtn": + ptz = new float[] { 1, -1, 0 }; + break; + } + //_onvifClient.RelativeMoveAsync(ptz[0] * dist, ptz[1] * dist, ptz[2] * dist); + _onvifClient.ContinuousMoveAsync(ptz[0] * speed, ptz[1] * speed, ptz[2] * speed); + } + + private void OperateOnvifMouseUp(object sender, RoutedEventArgs e) + { + if (_onvifClient == null) + return; + IsOperateOnvif = false; + _onvifClient.StopAsync(); + } + + #endregion ListenEvent + } +} \ No newline at end of file diff --git a/ECMonitor/Page/CameraMonitor/CameraAdjustViewModel.cs b/ECMonitor/Page/CameraMonitor/CameraAdjustViewModel.cs new file mode 100644 index 0000000..0d67f93 --- /dev/null +++ b/ECMonitor/Page/CameraMonitor/CameraAdjustViewModel.cs @@ -0,0 +1,13 @@ +using ECMonitor.Code.Models; +using Prism.Events; +using Prism.Regions; + +namespace ECMonitor.Page.CameraMonitor +{ + public class CameraAdjustViewModel : BaseModel + { + public CameraAdjustViewModel(IRegionManager regionManager, IEventAggregator ea) : base(regionManager, ea) + { + } + } +} \ No newline at end of file diff --git a/ECMonitor/Page/CameraMonitor/CameraTree.xaml b/ECMonitor/Page/CameraMonitor/CameraTree.xaml new file mode 100644 index 0000000..60b0c80 --- /dev/null +++ b/ECMonitor/Page/CameraMonitor/CameraTree.xaml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ECMonitor/Page/CameraMonitor/CameraTree.xaml.cs b/ECMonitor/Page/CameraMonitor/CameraTree.xaml.cs new file mode 100644 index 0000000..1bb0be2 --- /dev/null +++ b/ECMonitor/Page/CameraMonitor/CameraTree.xaml.cs @@ -0,0 +1,49 @@ +using EC.Entity.Video; +using EC.UsingEventAggregator; +using Prism.Events; +using Prism.Regions; +using System.Windows.Controls; +using System.Windows.Input; + +namespace ECMonitor.Page.CameraMonitor +{ + /// + /// UCMainLeft.xaml 的交互逻辑 + /// + public partial class CameraTreeView : UserControl + { + public IRegionManager _regionManager { get; set; } + public IEventAggregator _ea { get; set; } + + public CameraTreeView(IRegionManager regionManager, IEventAggregator ea) + { + _regionManager = regionManager; + _ea = ea; + InitializeComponent(); + } + + /// + /// TreesView's SelectedItem is read-only. Hence we can't bind it. There is a way to obtain a selected item. + /// + /// + /// + private void TreeView_MouseDoubleClick(object sender, MouseButtonEventArgs mouseButtonEventArgs) + { + var node = (TreeView)sender; + var item = node.SelectedItem; + var type = item?.GetType(); + + if (type == null) + return; + if (type == typeof(MsVideoRecorder)) + { + var recoder = (MsVideoRecorder)item; + } + else if (type == typeof(MonitorCamera)) + { + var camera = (MonitorCamera)item; + _ea.GetEvent().Publish(camera.Ip); + } + } + } +} \ No newline at end of file diff --git a/ECMonitor/Page/CameraMonitor/CameraTreeViewModel.cs b/ECMonitor/Page/CameraMonitor/CameraTreeViewModel.cs new file mode 100644 index 0000000..4513111 --- /dev/null +++ b/ECMonitor/Page/CameraMonitor/CameraTreeViewModel.cs @@ -0,0 +1,26 @@ +using EC.Entity.Video; +using ECMonitor.Code; +using ECMonitor.Code.Models; +using Prism.Events; +using Prism.Regions; +using System.Collections.Generic; + +namespace ECMonitor.Page.CameraMonitor +{ + public class CameraTreeViewModel : BaseModel + { + private IEventAggregator _ea; + public List MsVideoRecorderList { get; set; } + + public CameraTreeViewModel(IRegionManager regionManager, IEventAggregator ea) : base(regionManager, ea) + { + _ea = ea; + LoadData(); + } + + private void LoadData() + { + MsVideoRecorderList = CameraManager.LoadData(); + } + } +} \ No newline at end of file diff --git a/ECMonitor/Page/CameraMonitor/CameraVideo.xaml b/ECMonitor/Page/CameraMonitor/CameraVideo.xaml new file mode 100644 index 0000000..1a84463 --- /dev/null +++ b/ECMonitor/Page/CameraMonitor/CameraVideo.xaml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ECMonitor/Page/CameraMonitor/CameraVideo.xaml.cs b/ECMonitor/Page/CameraMonitor/CameraVideo.xaml.cs new file mode 100644 index 0000000..eeea65e --- /dev/null +++ b/ECMonitor/Page/CameraMonitor/CameraVideo.xaml.cs @@ -0,0 +1,358 @@ +using EC.Entity.Video; +using EC.UsingEventAggregator; +using ECMonitor.Code; +using ECMonitor.Manager; +using ECMonitor.UC.Videos; +using Prism.Events; +using Prism.Regions; +using System.Linq; +using System.Threading; +using System.Windows; +using System.Windows.Controls; + +namespace ECMonitor.Page.CameraMonitor +{ + /// + /// MainVideo.xaml 的交互逻辑 + /// + public partial class CameraVideo : UserControl + { + public IRegionManager _regionManager { get; set; } + public IEventAggregator _ea { get; set; } + + private VideoPlayManager _videoPlayManager { get; set; } = new VideoPlayManager(); + private double _videoWidth = 400; + private double _videoHeight = 300; + + //窗体长宽比,防止窗体变化时 窗体变形 + private double _videoWH { get; set; } = -1; + + /// + /// 当前选中播放器好 + /// + private int _playerSelectIndex { get; set; } = 0; + + /// + /// 当天窗体内播放器数量 + /// + private int _videoNumber { get; set; } = 1; + + /// + /// 上一次选择 按钮 窗体数 1窗 4窗 + /// + private int _barButtonSelectedIndex = 0; + + public CameraVideo(IRegionManager regionManager, IEventAggregator ea) + { + _regionManager = regionManager; + _ea = ea; + InitializeComponent(); + _ea.GetEvent().Subscribe(PlayVideoReceived); + } + + private void BarButtons_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (barButtons.SelectedIndex == -1) + { + barButtons.SelectedIndex = _barButtonSelectedIndex; + return; + } + if (barButtons.SelectedIndex != _barButtonSelectedIndex) + { + BarButtonsSelectedChange(barButtons.SelectedIndex); + } + } + + private void BarButtonsSelectedChange(int selectedIndex) + { + if (_barButtonSelectedIndex == selectedIndex) + { + return; + } + _barButtonSelectedIndex = selectedIndex; + switch (selectedIndex) + { + case 0: + ChangePlayerGridByRowNum(1); + break; + + case 1: + ChangePlayerGridByRowNum(2); + break; + + case 2: + ChangePlayerGridByRowNum(3); + break; + } + _playerSelectIndex = 0; + _videoPlayManager.SetALLUnSelected(); + _videoPlayManager.GetUCVideoList()[_playerSelectIndex]?.SetSelected(true); + } + + /// + /// 设置窗体每行播放器数量 + /// + /// + private void ChangePlayerGridByRowNum(int rowNumber = 1) + { + if (_videoWH < 0) + { + return; + } + double width = panMain.ActualWidth; + double height = _videoWH * width; + //Padding =2,2,2,2 + width = width - 4; + height = height - 4; + _videoWidth = width / rowNumber - 4; + _videoHeight = height / rowNumber - 4; + int showVideoNumber = rowNumber * rowNumber; + _videoNumber = showVideoNumber; + int addedVideoNumber = _videoPlayManager.GetUCVideoList().Count(); + + int dif = showVideoNumber - addedVideoNumber; + //已经添加的 多余界面 + if (dif < 0) + { + //设置界面大小 + for (int i = 0; i < showVideoNumber; i++) + { + var videoPlay = _videoPlayManager.GetUCVideoList()[i]; + videoPlay.ReSetSize(_videoWidth, _videoHeight); + + string ucname = videoPlay.GetName(); + var rtspVideo = (UserControl)this.panMain.FindName(ucname); + if (rtspVideo == null)//如果没有添加的添加 + { + this.panMain.Children.Add(videoPlay.GetControl()); + this.panMain.RegisterName(videoPlay.GetName(), videoPlay.GetControl()); + } + } + //从界面删除 + for (int i = showVideoNumber; i < addedVideoNumber; i++) + { + var videoPlay = _videoPlayManager.GetUCVideoList()[i]; + string ucname = videoPlay.GetName(); + var rtspVideo = (UserControl)this.panMain.FindName(ucname); + if (rtspVideo != null) + { + videoPlay.Stop(); + // videoPlay.SetIsShow(false); + this.panMain.Children.Remove(rtspVideo); + this.panMain.UnregisterName(ucname); + } + } + } + else if (dif >= 0) ///已经添加的少于界面 + { + //设置界面大小 + for (int i = 0; i < addedVideoNumber; i++) + { + var videoPlay = _videoPlayManager.GetUCVideoList()[i]; + videoPlay.ReSetSize(_videoWidth, _videoHeight); + string ucname = videoPlay.GetName(); + var rtspVideo = (UserControl)this.panMain.FindName(ucname); + if (rtspVideo == null) + { + this.panMain.Children.Add(videoPlay.GetControl()); + this.panMain.RegisterName(videoPlay.GetName(), videoPlay.GetControl()); + } + } + //添加新的视频窗体 + for (int i = 0; i < dif; i++) + { + var iUCVideo = _videoPlayManager.CreateVideo(_ea, _videoWidth, _videoHeight); + var ucvideo = iUCVideo.GetControl(); + ucvideo.Margin = new Thickness(2, 2, 2, 2); + this.panMain.Children.Add(ucvideo); + this.panMain.RegisterName(ucvideo.Name, ucvideo); + iUCVideo.PlayerMouseDown += PlayerMouseDown; + iUCVideo.PlayerMouseDoubleClick += PlayerMouseDoubleClick; + iUCVideo.OnFromClose += OnFromClose; + } + } + } + + private void OnFromClose(object sender, int index) + { + StaticData.MainPlayerIp = ""; + } + + //双击 最大化、最小化 + private void PlayerMouseDoubleClick(object sender, int index) + { + IUCPlayer player = (sender as IUCPlayer); + + double width = panMain.ActualWidth; + double height = _videoWH * width; + //Padding =2,2,2,2 + width = width - 4; + height = height - 4; + + bool isMax = player.SetMaximized(width, height); + if (isMax) + { + this.panMain.Children.Remove(player.GetControl()); + this.panMain.UnregisterName(player.GetName()); + this.panMain1.Children.Add(player.GetControl()); + this.panMain1.RegisterName(player.GetName(), player.GetControl()); + } + else + { + this.panMain1.Children.Remove(player.GetControl()); + this.panMain1.UnregisterName(player.GetName()); + + this.panMain.Children.Insert(index, player.GetControl()); + this.panMain.RegisterName(player.GetName(), player.GetControl()); + } + } + + /// + /// 选中设置 + /// + /// + /// + private void PlayerMouseDown(object sender, int videoIndex) + { + _videoPlayManager.SetALLUnSelected(); + IUCPlayer ucPlayer = (sender as IUCPlayer); + ucPlayer.SetSelected(true); + _playerSelectIndex = videoIndex; + + //rightRegion. + if (ucPlayer.IsPlaying()) + { + //MonitorCamera curCamera = ucPlayer.GetCamera(); + var curOnvifClient = ucPlayer.GetOnvifClient(); + _ea.GetEvent().Publish(curOnvifClient); + } + else + { + _ea.GetEvent().Publish(null); + } + + /// + } + + //private void CreateVideo(string cameraIp) + //{ + // IUCVideo ucVideo = _videoPlayManager.GetUCVideo(cameraIp); + // if (ucVideo != null) + // { + // ucVideo.UPDateTime(); + // return; + // } + // MonitorCamera camera = CameraManager.GetCamera(cameraIp); + // if (camera == null) + // { + // ShowLog("相机Ip:" + cameraIp + "不存在", true); + // return; + // } + // UCRtspVlcVideo rtspVideo = new UCRtspVlcVideo(_videoWidth,_videoHeight); + + // this.panMain.Children.Add(rtspVideo); + // rtspVideo.Play(); + + // this.panMain.RegisterName(rtspVideo.Name, rtspVideo); + // _videoPlayManager.Add(ucVideo); + //} + + //private void btnStop_Click(object sender, RoutedEventArgs e) + //{ + // var rtspVideo = _videoPlayManager.GetUCVideo("192.168.1.65"); + // if (rtspVideo != null) + // { + // rtspVideo.Stop(); + + // } + + //} + + private void UserControl_Loaded(object sender, RoutedEventArgs e) + { + _videoWidth = panMain.ActualWidth; + _videoHeight = panMain.ActualHeight; + _videoWH = _videoHeight / _videoWidth; + barButtons.SelectedIndex = ConfigHelper.MainBarButtonSelectedIndex(); + } + + private void Button_Click(object sender, RoutedEventArgs e) + { + // await MessageManager.MessageBox("测试"); + + // Play("192.168.1.651"); + _ea.GetEvent().Publish("192.168.1.65"); + } + + public virtual void PlayVideoReceived(string cameraIp) + { + Play(cameraIp); + } + + private void Play(string ip) + { + var videoPlay = _videoPlayManager.GetUCVideoList()[_playerSelectIndex]; + if (videoPlay == null) + { + MessageManager.ShowMessage("当前选中的播放器 SelectIndex=" + _playerSelectIndex.ToString(), true); + + return; + } + if (!videoPlay.IsNullPlay()) + { + if (videoPlay.GetCameraIp() == ip) + { + if (videoPlay.IsPlaying()) + { + return; + } + } + videoPlay.Stop(); + Thread.Sleep(1000); + } + MonitorCamera camera = CameraManager.GetCamera(ip); + if (camera == null) + { + MessageManager.ShowMessage(ip + "相机不存在", true); + return; + } + + bool play = videoPlay.Play(camera); + AddSelectVideoIndex(); + } + + public void AddSelectVideoIndex() + { + _playerSelectIndex++; + if (_playerSelectIndex >= _videoNumber) + { + _playerSelectIndex = 0; + } + _videoPlayManager.SetALLUnSelected(); + var ucPlayer = _videoPlayManager.GetUCVideoList()[_playerSelectIndex]; + if (ucPlayer != null) + { + ucPlayer.SetSelected(true); + if (ucPlayer.IsPlaying()) + { + //MonitorCamera curCamera = ucPlayer.GetCamera(); + var curOnvifClient = ucPlayer.GetOnvifClient(); + _ea.GetEvent().Publish(curOnvifClient); + } + else + { + _ea.GetEvent().Publish(null); + } + } + } + + //窗体尺寸该表 + private void UserControl_SizeChanged(object sender, SizeChangedEventArgs e) + { + if (_videoWH < 0) return; + int toSelectIndex = _barButtonSelectedIndex; + _barButtonSelectedIndex = -1; + BarButtonsSelectedChange(toSelectIndex); + } + } +} \ No newline at end of file diff --git a/ECMonitor/Page/CameraMonitor/CameraVideoViewModel.cs b/ECMonitor/Page/CameraMonitor/CameraVideoViewModel.cs new file mode 100644 index 0000000..051a5a7 --- /dev/null +++ b/ECMonitor/Page/CameraMonitor/CameraVideoViewModel.cs @@ -0,0 +1,13 @@ +using ECMonitor.Code.Models; +using Prism.Events; +using Prism.Regions; + +namespace ECMonitor.Page.CameraMonitor +{ + public sealed class CameraVideoViewModel : BaseModel + { + public CameraVideoViewModel(IRegionManager regionManager, IEventAggregator ea) : base(regionManager, ea) + { + } + } +} \ No newline at end of file diff --git a/ECMonitor/Page/CameraMonitor/Main.xaml b/ECMonitor/Page/CameraMonitor/Main.xaml new file mode 100644 index 0000000..b0e4003 --- /dev/null +++ b/ECMonitor/Page/CameraMonitor/Main.xaml @@ -0,0 +1,21 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/ECMonitor/Page/CameraMonitor/Main.xaml.cs b/ECMonitor/Page/CameraMonitor/Main.xaml.cs new file mode 100644 index 0000000..5198af5 --- /dev/null +++ b/ECMonitor/Page/CameraMonitor/Main.xaml.cs @@ -0,0 +1,21 @@ +using ECMonitor.Page.Name; +using Prism.Events; +using Prism.Regions; +using System.Windows.Controls; + +namespace ECMonitor.Page.CameraMonitor +{ + /// + /// FrmMain.xaml 的交互逻辑 + /// + public partial class Main : UserControl + { + public Main(IRegionManager regionManager, IEventAggregator ea) + { + InitializeComponent(); + _ = regionManager.RegisterViewWithRegion(RegionsName.CameraMonitorLeft, typeof(CameraTreeView)); + _ = regionManager.RegisterViewWithRegion(RegionsName.CameraMonitorCenter, typeof(CameraVideo)); + _ = regionManager.RegisterViewWithRegion(RegionsName.CameraMonitorRight, typeof(CameraAdjust)); + } + } +} \ No newline at end of file diff --git a/ECMonitor/Page/CameraMonitor/MainViewModel.cs b/ECMonitor/Page/CameraMonitor/MainViewModel.cs new file mode 100644 index 0000000..1dd18c5 --- /dev/null +++ b/ECMonitor/Page/CameraMonitor/MainViewModel.cs @@ -0,0 +1,13 @@ +using ECMonitor.Code.Models; +using Prism.Events; +using Prism.Regions; + +namespace ECMonitor.Page.CameraMonitor +{ + public class MainViewModel : BaseModel + { + public MainViewModel(IRegionManager regionManager, IEventAggregator ea) : base(regionManager, ea) + { + } + } +} \ No newline at end of file diff --git a/ECMonitor/Page/Name/RegionsName.cs b/ECMonitor/Page/Name/RegionsName.cs new file mode 100644 index 0000000..09fc137 --- /dev/null +++ b/ECMonitor/Page/Name/RegionsName.cs @@ -0,0 +1,31 @@ +namespace ECMonitor.Page.Name +{ + public static class RegionsName + { + #region MainWindow + + public static string MainWindowTop { get; } = "MainWindowTopRegion"; + + public static string MainWindowCenter { get; } = "MainWindowCenterRegion"; + + #endregion MainWindow + + #region CameraMonitor + + public static string CameraMonitorLeft { get; } = "CameraMonitorLeftRegion"; + public static string CameraMonitorCenter { get; } = "CameraMonitorCenterRegion"; + public static string CameraMonitorRight { get; } = "CameraMonitorRightRegion"; + + #endregion CameraMonitor + + #region SystemSet + + public static string SystemSetLeft { get; } = "SystemSetLeftRegion"; + + public static string SystemSetCenter { get; } = "SystemSetCenterRegion"; + + public static string SystemSetManageIpcCenter { get; } = "SystemSetManageIpcCenterRegion"; + + #endregion SystemSet + } +} \ No newline at end of file diff --git a/ECMonitor/Page/Name/ViewsName.cs b/ECMonitor/Page/Name/ViewsName.cs new file mode 100644 index 0000000..ebdccd1 --- /dev/null +++ b/ECMonitor/Page/Name/ViewsName.cs @@ -0,0 +1,52 @@ +namespace ECMonitor.Page.Name +{ + public static class ViewsName + { + #region MainWindow + + public static string MainWindow { get; } = "MainWindow"; + + #endregion MainWindow + + #region CameraMonitor + + public static string CameraMonitorMain { get; } = "CameraMonitorMain"; + + public static string CameraMonitorTree { get; } = "CameraMonitorTree"; + + public static string CameraMonitorVideo { get; } = "CameraMonitorVideo"; + + public static string CameraMonitorAdjust { get; } = "CameraMonitorAdjust"; + + #endregion CameraMonitor + + #region SystemSet + + /// + /// 主页面 + /// + public static string SystemSetMain { get; } = "SystemSetMain"; + + /// + /// 系统设置页面 + /// + public static string SystemSetManageSet { get; } = "SystemSetManageSet"; + + /// + /// 录像机页面 + /// + public static string SystemSetManageNvr { get; } = "SystemSetManageNvr"; + + /// + /// 摄像机页面 + /// + public static string SystemSetManageIpc { get; } = "SystemSetManageIpc"; + + /// + /// 搜索摄像机页面 + /// + public static string SystemSetSearchIpc { get; } = "SystemSetSearchIpc"; + + #endregion SystemSet + } +} \ No newline at end of file diff --git a/ECMonitor/Page/SystemSet/Main.xaml b/ECMonitor/Page/SystemSet/Main.xaml new file mode 100644 index 0000000..18fd21f --- /dev/null +++ b/ECMonitor/Page/SystemSet/Main.xaml @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ECMonitor/Page/SystemSet/Main.xaml.cs b/ECMonitor/Page/SystemSet/Main.xaml.cs new file mode 100644 index 0000000..12b0466 --- /dev/null +++ b/ECMonitor/Page/SystemSet/Main.xaml.cs @@ -0,0 +1,44 @@ +using ECMonitor.Page.Name; +using Prism.Regions; +using System.Reflection; +using System.Windows; +using System.Windows.Controls; + +namespace ECMonitor.Page.SystemSet +{ + public partial class Main : UserControl + { + public Main(IRegionManager regionManager) + { + InitializeComponent(); + _ = regionManager.RegisterViewWithRegion(RegionsName.SystemSetCenter, typeof(ManageNvr)); + + InitPage(); + } + + #region Init + + private void InitPage() + { + } + + #endregion Init + + #region Event + + private void ListBoxItem_Selected(object sender, RoutedEventArgs e) + { + ListBoxItem item = (ListBoxItem)sender; + Button button = (Button)item.Content; + + //模拟按钮点击 + MethodInfo method = button.GetType().GetMethod("OnClick", BindingFlags.NonPublic | BindingFlags.Instance); + _ = (method?.Invoke(button, null)); + //模拟按钮点击 + //IInvokeProvider invokeProv = new ButtonAutomationPeer(button).GetPattern(PatternInterface.Invoke) as IInvokeProvider; + //invokeProv?.Invoke(); + } + + #endregion Event + } +} \ No newline at end of file diff --git a/ECMonitor/Page/SystemSet/MainViewModel.cs b/ECMonitor/Page/SystemSet/MainViewModel.cs new file mode 100644 index 0000000..16ae388 --- /dev/null +++ b/ECMonitor/Page/SystemSet/MainViewModel.cs @@ -0,0 +1,26 @@ +using ECMonitor.Code.Models; +using ECMonitor.Page.Name; +using Prism.Commands; +using Prism.Events; +using Prism.Regions; + +namespace ECMonitor.Page.SystemSet +{ + public class MainViewModel : BaseModel + { + public DelegateCommand NavigateCommand { get; private set; } + + public MainViewModel(IRegionManager regionManager, IEventAggregator ea) : base(regionManager, ea) + { + NavigateCommand = new DelegateCommand(Navigate); + } + + private void Navigate(string navigatePath) + { + if (navigatePath != null) + { + _regionManager.RequestNavigate(RegionsName.SystemSetCenter, navigatePath); + } + } + } +} \ No newline at end of file diff --git a/ECMonitor/Page/SystemSet/ManageIpc.xaml b/ECMonitor/Page/SystemSet/ManageIpc.xaml new file mode 100644 index 0000000..55ae8ed --- /dev/null +++ b/ECMonitor/Page/SystemSet/ManageIpc.xaml @@ -0,0 +1,345 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ECMonitor/Page/SystemSet/ManageIpc.xaml.cs b/ECMonitor/Page/SystemSet/ManageIpc.xaml.cs new file mode 100644 index 0000000..111d63b --- /dev/null +++ b/ECMonitor/Page/SystemSet/ManageIpc.xaml.cs @@ -0,0 +1,18 @@ +using ECMonitor.Page.Name; +using Prism.Regions; +using System.Windows.Controls; + +namespace ECMonitor.Page.SystemSet +{ + /// + /// ManageIpc.xaml 的交互逻辑 + /// + public partial class ManageIpc : UserControl + { + public ManageIpc(IRegionManager regionManager) + { + InitializeComponent(); + _ = regionManager.RegisterViewWithRegion(RegionsName.SystemSetManageIpcCenter, typeof(SearchIpc)); + } + } +} \ No newline at end of file diff --git a/ECMonitor/Page/SystemSet/ManageIpcViewModel.cs b/ECMonitor/Page/SystemSet/ManageIpcViewModel.cs new file mode 100644 index 0000000..a7e3f48 --- /dev/null +++ b/ECMonitor/Page/SystemSet/ManageIpcViewModel.cs @@ -0,0 +1,281 @@ +using EC.Entity.CameraInfo; +using EC.Service.CameraInfo; +using EC.UsingEventAggregator; +using ECMonitor.Code.Models; +using ECMonitor.MVVM; +using Prism.Commands; +using Prism.Events; +using Prism.Regions; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Threading; +using System.Windows.Controls; + +namespace ECMonitor.Page.SystemSet +{ + public class ManageIpcViewModel : BaseModel + { + private ManageIpc ThatPage { get; set; } + + public ObservableCollection InfoList { get; set; } = new(); + + private ReaderWriterLockSlim InfoListrwl { get; } = new(); + + private List AddNumberList { get; } = new(); + + private List UpdateNumberList { get; } = new(); + + public ObservableCollection NvrNameList { get; set; } = new(); + + #region Command + + public DelegateCommand LoadedCommand { get; private set; } + + public DelegateCommand AddCommand { get; private set; } + + public DelegateCommand DeleteCommand { get; private set; } + + public ExtendCommand UpdateCommand { get; private set; } + + public DelegateCommand SaveCommand { get; private set; } + + public DelegateCommand RevokeCommand { get; private set; } + + public DelegateCommand RefreshCommand { get; private set; } + + public DelegateCommand ImportCommand { get; private set; } + + public DelegateCommand ExportCommand { get; private set; } + + #endregion Command + + public ManageIpcViewModel(IRegionManager regionManager, IEventAggregator ea) : base(regionManager, ea) + { + LoadedCommand = new DelegateCommand(LoadedPageAction); + + AddCommand = new DelegateCommand(AddInfoAction); + DeleteCommand = new DelegateCommand(DeleteInfoAction); + UpdateCommand = new ExtendCommand(UpdateInfoAction); + SaveCommand = new DelegateCommand(SaveInfosAction); + RevokeCommand = new DelegateCommand(RevokeInfoAction); + RefreshCommand = new DelegateCommand(RefreshAction); + ImportCommand = new DelegateCommand(ImportInfosAction); + ExportCommand = new DelegateCommand(ExportInfosAction); + _ea.GetEvent().Subscribe(SubscribeIpcInfoListAction); + } + + #region Event Action + + private void LoadedPageAction(UserControl view) + { + if (ThatPage != null) { return; } + ThatPage = (ManageIpc)view; + RefreshAction(); + } + + #endregion Event Action + + #region Operate Action + + private void AddInfoAction() + { + IpcInfo info = new(); + info.Number = GetInfoNewNumber(); + info.IpcName = $"摄像机#{info.Number}"; + info.IpcEnableBool = true; + OperateInfoListByLock(() => { AddInfo(info); }); + + DataGrid infoGrid = ThatPage.InfoGrid; + infoGrid.SelectedIndex = infoGrid.Items.Count - 1; + } + + private async void DeleteInfoAction() + { + DataGrid infoGrid = ThatPage.InfoGrid; + IpcInfo info = (IpcInfo)infoGrid.SelectedItem; + int index = ThatPage.InfoGrid.SelectedIndex; + if (info == null) { return; } + + if (info.IpcId <= 0) + { + OperateInfoListByLock(() => { RemoveInfo(info); }); + infoGrid.SelectedIndex = (index < infoGrid.Items.Count) ? index : infoGrid.Items.Count - 1; + return; + } + + using IpcInfoContext ctx = new(); + _ = ctx.Remove(info); + int ret = await ctx.SaveChangesAsync(); + if (ret > 0) + { + OperateInfoListByLock(() => { RemoveInfo(info); }); + infoGrid.SelectedIndex = (index < infoGrid.Items.Count) ? index : infoGrid.Items.Count - 1; + } + } + + private void UpdateInfoAction(DataGridCellEditEndingEventArgs e) + { + if (e.EditAction != DataGridEditAction.Commit) { return; } + + var elm = e.EditingElement; + DataGridRow row = e.Row; + DataGridColumn column = e.Column; + IpcInfo info = (IpcInfo)row.Item; + if (info != null && info.IpcId > 0) + { + if (!UpdateNumberList.Exists(item => item.Equals(info.Number))) + { + UpdateNumberList.Add(info.Number); + } + } + } + + private async void SaveInfosAction() + { + //ValidationError validationError = WPFAssist.GetDataGridRowsFirstError(ThatPage.InfoGrid); + //if (WPFAssist.GetDataGridRowsHasError(ThatPage.InfoGrid)) { return; } + + List list = null; + using IpcInfoContext ctx = new(); + int ret = 0; + + if (AddNumberList.Count > 0) + { + list ??= GetInfoList(); + foreach (int number in AddNumberList) + { + IpcInfo info = list.Find(item => item.Number.Equals(number)); + if (info != null) { _ = ctx.Add(info); } + } + ret = await ctx.SaveChangesAsync(); + if (ret > 0) { AddNumberList.Clear(); } + else { return; } + } + + if (UpdateNumberList.Count > 0) + { + list ??= GetInfoList(); + foreach (int number in UpdateNumberList) + { + IpcInfo info = list.Find(item => item.Number.Equals(number)); + if (info != null) { _ = ctx.Update(info); } + } + ret = await ctx.SaveChangesAsync(); + if (ret > 0) { UpdateNumberList.Clear(); } + else { return; } + } + + RefreshAction(); + } + + private void RevokeInfoAction() + { + } + + private void RefreshAction() + { + OperateInfoListByLock(() => + { + AddNumberList.Clear(); + UpdateNumberList.Clear(); + + LoadNvrNameList(); + LoadInfoList(); + }); + } + + private void ImportInfosAction() + { + } + + private void ExportInfosAction() + { + } + + #endregion Operate Action + + #region Operate InfoList + + private void OperateInfoListByLock(Action action) + { + if (InfoListrwl.IsWriteLockHeld) { return; } + if (!InfoListrwl.TryEnterWriteLock(100)) { return; } + try + { + action?.Invoke(); + } + finally + { + InfoListrwl.ExitWriteLock(); + } + } + + private async void LoadInfoList() + { + InfoList.Clear(); + using IpcInfoContext ctx = new(); + List list = await ctx.GetListAsync(); + int number = 0; + foreach (IpcInfo info in list) + { + info.Number = ++number; + InfoList.Add(info); + } + } + + private void AddInfo(IpcInfo info) + { + InfoList.Add(info); + if (!AddNumberList.Exists(item => item.Equals(info.Number))) + { + AddNumberList.Add(info.Number); + } + } + + private void RemoveInfo(IpcInfo info) + { + _ = InfoList.Remove(info); + _ = AddNumberList.RemoveAll(item => item.Equals(info.Number)); + _ = UpdateNumberList.RemoveAll(item => item.Equals(info.Number)); + } + + private List GetInfoList() + { + return new(InfoList); + } + + private int GetInfoNewNumber() + { + int number = InfoList.Count > 0 ? InfoList[^1].Number + 1 : 1; + return number; + } + + private void SubscribeIpcInfoListAction(List infoList) + { + OperateInfoListByLock(() => + { + foreach (IpcInfo item in infoList) + { + item.Number = GetInfoNewNumber(); + item.IpcName = $"摄像机#{item.Number}"; + AddInfo(item); + } + }); + } + + #endregion Operate InfoList + + #region Operate OtherList + + private async void LoadNvrNameList() + { + NvrNameList.Clear(); + using NvrInfoContext ctx = new(); + List list = await ctx.GetNvrNameListAsync(); + list.ForEach(item => { NvrNameList.Add(item); }); + } + + #endregion Operate OtherList + } +} \ No newline at end of file diff --git a/ECMonitor/Page/SystemSet/ManageNvr.xaml b/ECMonitor/Page/SystemSet/ManageNvr.xaml new file mode 100644 index 0000000..a3b8682 --- /dev/null +++ b/ECMonitor/Page/SystemSet/ManageNvr.xaml @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ECMonitor/Page/SystemSet/ManageNvr.xaml.cs b/ECMonitor/Page/SystemSet/ManageNvr.xaml.cs new file mode 100644 index 0000000..d3151dc --- /dev/null +++ b/ECMonitor/Page/SystemSet/ManageNvr.xaml.cs @@ -0,0 +1,21 @@ +using System.Windows.Controls; + +namespace ECMonitor.Page.SystemSet +{ + /// + /// ManageNvr.xaml 的交互逻辑 + /// + public partial class ManageNvr : UserControl + { + public ManageNvr() + { + InitializeComponent(); + + Init(); + } + + private void Init() + { + } + } +} \ No newline at end of file diff --git a/ECMonitor/Page/SystemSet/ManageNvrViewModel.cs b/ECMonitor/Page/SystemSet/ManageNvrViewModel.cs new file mode 100644 index 0000000..d29b86f --- /dev/null +++ b/ECMonitor/Page/SystemSet/ManageNvrViewModel.cs @@ -0,0 +1,276 @@ +using EC.Entity.CameraInfo; +using EC.Service.CameraInfo; +using ECMonitor.Code.Models; +using ECMonitor.MVVM; +using Prism.Commands; +using Prism.Events; +using Prism.Regions; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Threading; +using System.Windows.Controls; + +namespace ECMonitor.Page.SystemSet +{ + public class ManageNvrViewModel : BaseModel + { + private ManageNvr ThatPage { get; set; } + + public ObservableCollection InfoList { get; set; } = new(); + + private ReaderWriterLockSlim InfoListrwl { get; } = new(); + + private List AddNumberList { get; } = new(); + + private List UpdateNumberList { get; } = new(); + + public ObservableCollection NvrDeviceList { get; set; } = new(); + + #region Command + + public DelegateCommand LoadedCommand { get; private set; } + + public DelegateCommand LoadedCommand2 { get; private set; } + + public DelegateCommand AddCommand { get; private set; } + + public DelegateCommand DeleteCommand { get; private set; } + + public ExtendCommand UpdateCommand { get; private set; } + + public DelegateCommand SaveCommand { get; private set; } + + public DelegateCommand RevokeCommand { get; private set; } + + public DelegateCommand RefreshCommand { get; private set; } + + public DelegateCommand ImportCommand { get; private set; } + + public DelegateCommand ExportCommand { get; private set; } + + #endregion Command + + public ManageNvrViewModel(IRegionManager regionManager, IEventAggregator ea) : base(regionManager, ea) + { + LoadedCommand = new DelegateCommand(LoadedPageAction); + + AddCommand = new DelegateCommand(AddInfoAction); + DeleteCommand = new DelegateCommand(DeleteInfoAction); + UpdateCommand = new ExtendCommand(UpdateInfoAction); + SaveCommand = new DelegateCommand(SaveInfosAction); + RevokeCommand = new DelegateCommand(RevokeInfoAction); + RefreshCommand = new DelegateCommand(RefreshAction); + ImportCommand = new DelegateCommand(ImportInfosAction); + ExportCommand = new DelegateCommand(ExportInfosAction); + } + + #region Event Action + + private void LoadedPageAction(UserControl view) + { + if (ThatPage != null) { return; } + ThatPage = (ManageNvr)view; + RefreshAction(); + } + + #endregion Event Action + + #region Operate Action + + private void AddInfoAction() + { + NvrInfo info = new(); + info.Number = GetInfoNewNumber(); + info.NvrName = $"录像机#{info.Number}"; + info.NvrEnableBool = true; + OperateInfoListByLock(() => { AddInfo(info); }); + + DataGrid infoGrid = ThatPage.InfoGrid; + infoGrid.SelectedIndex = infoGrid.Items.Count - 1; + } + + private async void DeleteInfoAction() + { + DataGrid infoGrid = ThatPage.InfoGrid; + NvrInfo info = (NvrInfo)infoGrid.SelectedItem; + int index = infoGrid.SelectedIndex; + if (info == null) { return; } + + if (info.NvrId <= 0) + { + OperateInfoListByLock(() => { RemoveInfo(info); }); + infoGrid.SelectedIndex = (index < infoGrid.Items.Count) ? index : infoGrid.Items.Count - 1; + return; + } + + int ret = 0; + using IpcInfoContext ctx1 = new(); + List ipcInfoList = await ctx1.GetListAsync(); + ipcInfoList.ForEach(ipc => { if (ipc.NvrName.Equals(info.NvrName)) { ctx1.Remove(ipc); } }); + ret = await ctx1.SaveChangesAsync(); + if (ret > 0) + { + using NvrInfoContext ctx2 = new(); + _ = ctx2.Remove(info); + ret = await ctx2.SaveChangesAsync(); + if (ret > 0) + { + OperateInfoListByLock(() => { RemoveInfo(info); }); + infoGrid.SelectedIndex = (index < infoGrid.Items.Count) ? index : infoGrid.Items.Count - 1; + } + } + } + + private void UpdateInfoAction(DataGridCellEditEndingEventArgs e) + { + if (e.EditAction != DataGridEditAction.Commit) { return; } + + var elm = e.EditingElement; + DataGridRow row = e.Row; + DataGridColumn column = e.Column; + NvrInfo info = (NvrInfo)row.Item; + if (info != null && info.NvrId > 0) + { + if (!UpdateNumberList.Exists(item => item.Equals(info.Number))) + { + UpdateNumberList.Add(info.Number); + } + } + } + + private async void SaveInfosAction() + { + //ValidationError validationError = WPFAssist.GetDataGridRowsFirstError(ThatPage.InfoGrid); + //if (WPFAssist.GetDataGridRowsHasError(ThatPage.InfoGrid)) { return; } + + List list = null; + using NvrInfoContext ctx = new(); + int ret = 0; + + if (AddNumberList.Count > 0) + { + list ??= GetInfoList(); + foreach (int number in AddNumberList) + { + NvrInfo info = list.Find(item => item.Number.Equals(number)); + if (info != null) { _ = ctx.Add(info); } + } + ret = await ctx.SaveChangesAsync(); + if (ret > 0) { AddNumberList.Clear(); } + else { return; } + } + + if (UpdateNumberList.Count > 0) + { + list ??= GetInfoList(); + foreach (int number in UpdateNumberList) + { + NvrInfo info = list.Find(item => item.Number.Equals(number)); + if (info != null) { _ = ctx.Update(info); } + } + ret = await ctx.SaveChangesAsync(); + if (ret > 0) { UpdateNumberList.Clear(); } + else { return; } + } + + RefreshAction(); + } + + private void RevokeInfoAction() + { + } + + private void RefreshAction() + { + OperateInfoListByLock(() => + { + AddNumberList.Clear(); + UpdateNumberList.Clear(); + + LoadNvrDeviceList(); + LoadInfoList(); + }); + } + + private void ImportInfosAction() + { + } + + private void ExportInfosAction() + { + } + + #endregion Operate Action + + #region Operate InfoList + + private void OperateInfoListByLock(Action action) + { + if (InfoListrwl.IsWriteLockHeld) { return; } + if (!InfoListrwl.TryEnterWriteLock(100)) { return; } + try + { + action?.Invoke(); + } + finally + { + InfoListrwl.ExitWriteLock(); + } + } + + private async void LoadInfoList() + { + InfoList.Clear(); + using NvrInfoContext ctx = new(); + List list = await ctx.GetListAsync(); + int number = 0; + foreach (NvrInfo info in list) + { + info.Number = ++number; + InfoList.Add(info); + } + } + + private void AddInfo(NvrInfo info) + { + InfoList.Add(info); + if (!AddNumberList.Exists(item => item.Equals(info.Number))) + { + AddNumberList.Add(info.Number); + } + } + + private void RemoveInfo(NvrInfo info) + { + _ = InfoList.Remove(info); + _ = AddNumberList.RemoveAll(item => item.Equals(info.Number)); + _ = UpdateNumberList.RemoveAll(item => item.Equals(info.Number)); + } + + private List GetInfoList() + { + return new(InfoList); + } + + private int GetInfoNewNumber() + { + int number = InfoList.Count > 0 ? InfoList[^1].Number + 1 : 1; + return number; + } + + #endregion Operate InfoList + + #region Operate OtherList + + private void LoadNvrDeviceList() + { + NvrDeviceList.Clear(); + using NvrInfoContext ctx = new(); + List list = ctx.GetNvrDeviceList(); + list.ForEach(item => { NvrDeviceList.Add(item); }); + } + + #endregion Operate OtherList + } +} \ No newline at end of file diff --git a/ECMonitor/Page/SystemSet/ManageSet.xaml b/ECMonitor/Page/SystemSet/ManageSet.xaml new file mode 100644 index 0000000..0816d7e --- /dev/null +++ b/ECMonitor/Page/SystemSet/ManageSet.xaml @@ -0,0 +1,16 @@ + + + + + + + + + + \ No newline at end of file diff --git a/ECMonitor/Page/SystemSet/ManageSet.xaml.cs b/ECMonitor/Page/SystemSet/ManageSet.xaml.cs new file mode 100644 index 0000000..2273c9a --- /dev/null +++ b/ECMonitor/Page/SystemSet/ManageSet.xaml.cs @@ -0,0 +1,15 @@ +using System.Windows.Controls; + +namespace ECMonitor.Page.SystemSet +{ + /// + /// ManageSet.xaml 的交互逻辑 + /// + public partial class ManageSet : UserControl + { + public ManageSet() + { + InitializeComponent(); + } + } +} \ No newline at end of file diff --git a/ECMonitor/Page/SystemSet/ManageSetViewModel.cs b/ECMonitor/Page/SystemSet/ManageSetViewModel.cs new file mode 100644 index 0000000..39c9753 --- /dev/null +++ b/ECMonitor/Page/SystemSet/ManageSetViewModel.cs @@ -0,0 +1,13 @@ +using ECMonitor.Code.Models; +using Prism.Events; +using Prism.Regions; + +namespace ECMonitor.Page.SystemSet +{ + public class ManageSetViewModel : BaseModel + { + public ManageSetViewModel(IRegionManager regionManager, IEventAggregator ea) : base(regionManager, ea) + { + } + } +} \ No newline at end of file diff --git a/ECMonitor/Page/SystemSet/SearchIpc.xaml b/ECMonitor/Page/SystemSet/SearchIpc.xaml new file mode 100644 index 0000000..adda520 --- /dev/null +++ b/ECMonitor/Page/SystemSet/SearchIpc.xaml @@ -0,0 +1,247 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ECMonitor/PlayerDraw/FrmWarningDraw.xaml.cs b/ECMonitor/PlayerDraw/FrmWarningDraw.xaml.cs new file mode 100644 index 0000000..096e7be --- /dev/null +++ b/ECMonitor/PlayerDraw/FrmWarningDraw.xaml.cs @@ -0,0 +1,402 @@ +using EC.Entity.Video; +using EC.Entity.Warning; +using ECMonitor.Code; +using ECMonitor.Code.DB; +using ECMonitor.Manager; +using ECMonitor.PlayerDraw.Code; + +using ECMonitor.UC.Videos; +using Prism.Events; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Shapes; +using System.Windows.Threading; + +namespace ECMonitor.PlayerDraw +{ + /// + /// FrmWarningDraw.xaml 的交互逻辑 + /// + public partial class FrmWarningDraw : Window + { + IEventAggregator _ea; + IUCPlayer _ucFFmpegPlayer; + ECDrawing draw; + private BlackboardData blackboardData; + VideoPlayManager _videoPlayManager { get; set; } = new VideoPlayManager(); + + public FrmWarningDraw(IEventAggregator ea) + { + InitializeComponent(); + + _ea = ea; + + + + + if (blackboardData == null) + { + blackboardData = new BlackboardData();// BlackboardData.Open(); + + } + this.DataContext = blackboardData; + + SetFormSize(); + contenter.Width = this.Width; + contenter.Height = this.Height - 40; + + + draw = new ECDrawing(blackboardData, contenter, writeBorad); + + writeBorad.PreviewMouseLeftButtonDown += draw.MouseDown; + contenter.MouseMove += draw.MouseMove; + contenter.PreviewMouseLeftButtonUp += draw.MouseLeftButtonUp; + + _ucFFmpegPlayer = _videoPlayManager.CreateWarnCreateLinePlayer(_ea, contenter.Width, contenter.Height, 0); + this.planMain.Children.Add(_ucFFmpegPlayer.GetControl()); + + + } + + + #region 系统按钮 + + private void btnClose_Click(object sender, RoutedEventArgs e) + { + this.Close(); + // Exit_Click(sender, e); + } + + private void SetFormSize() + { + double x1 = SystemParameters.PrimaryScreenWidth;//得到屏幕整体宽度 + double y1 = SystemParameters.PrimaryScreenHeight;//得到屏幕整体高度 + double xy = x1 + y1; + x1 = x1 * 0.9; + y1 = y1 * 0.9; + this.Width = x1; + this.Height = y1; + } + + private void btnMax_Click(object sender, RoutedEventArgs e) + { + if (this.WindowState == WindowState.Maximized) + { + this.WindowState = WindowState.Normal; + } + else + { + this.WindowState = WindowState.Maximized; + } + } + + private void btnMin_Click(object sender, RoutedEventArgs e) + { + this.WindowState = WindowState.Minimized; + } + private void DockPanel_MouseMove(object sender, MouseEventArgs e) + { + if (e.LeftButton == MouseButtonState.Pressed) + { + this.DragMove(); + } + } + #endregion 系统按钮 + + + private void Window_Loaded(object sender, RoutedEventArgs e) + { + } + public void Play(string cameraIp) + { + MonitorCamera camera = CameraManager.GetCamera(cameraIp); + Play( camera); + } + public void Play(MonitorCamera camera ) + { + + if (camera == null) + { + _ucFFmpegPlayer.ShowMsg("相机不存在IP=" + camera.Ip); + } + else + { + _ucFFmpegPlayer.Play(camera); + double width = this._ucFFmpegPlayer.GetControl().Width; + double height = this._ucFFmpegPlayer.GetControl().Height; + draw.LoadDrawShape(camera.Ip, width, height); + } + // ShowAndActive(); + } + + + private void Window_SizeChanged(object sender, SizeChangedEventArgs e) + { + // SizeChange(); + } + /// + /// 预警级别 + /// + private int _levelSelectIndex = 2; + /// + /// 形状 + /// + private int _shareSelectIndex = 0; + private void LevelButtons_SelectionChanged(object sender, RoutedEventArgs e) + { + int levelSelectIndex = this.barLevelButtons.SelectedIndex; + if (levelSelectIndex == -1) + { + this.barLevelButtons.SelectedIndex = _levelSelectIndex; + return; + } + _levelSelectIndex = levelSelectIndex; + writeBorad.DefaultDrawingAttributes.Color = BlackboardClass.ChangeColor((ColorEnum)levelSelectIndex); + //if (levelSelectIndex == -1) + //{ + // this.barLevelButtons.SelectedIndex = _levelSelectIndex; + // return; + //} + //_levelSelectIndex = this.barLevelButtons.SelectedIndex; + //if (IsLoaded == false) + //{ + // return; + //} + //switch (_levelSelectIndex) + //{ + // case 0: + // writeBorad.DefaultDrawingAttributes.Color = Colors.Green; + // break; + // case 1: + // writeBorad.DefaultDrawingAttributes.Color = Colors.Yellow; + // break; + // case 2: + // writeBorad.DefaultDrawingAttributes.Color = Colors.Red; + // break; + //} + } + + private void MenuOpened(object sender, RoutedEventArgs e) + { + //if (writeBorad.GetSelectedStrokes().Count <= 0) + //{ + // copy.IsEnabled = cut.IsEnabled = false; + //} + //else + // copy.IsEnabled = cut.IsEnabled = true; + //if (!writeBorad.CanPaste()) + // paste.IsEnabled = false; + //else + // paste.IsEnabled = true; + } + private void ShareButtons_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + + int shareSelectIndex = this.barShareButtons.SelectedIndex; + if (shareSelectIndex == -1) + { + this.barShareButtons.SelectedIndex = _shareSelectIndex; + return; + } + _shareSelectIndex = this.barShareButtons.SelectedIndex; + if (_shareSelectIndex < 4) + { + blackboardData.Draw = true; + this.writeBorad.EditingMode = InkCanvasEditingMode.None; + }else + { + this.writeBorad.EditingMode = InkCanvasEditingMode.Select; + + blackboardData.Draw = false; + } + + + + + } + private void btnSelect_Click(object sender, RoutedEventArgs e) + { + this.writeBorad.EditingMode = InkCanvasEditingMode.Select; + + blackboardData.Draw = false; + } + //private void ChangeEditingMode() + //{ + // if (_shareSelectIndex == 5) + // { + // this.writeBorad.EditingMode = InkCanvasEditingMode.Select; + + // blackboardData.Draw = false; + // } + // else + // { + // this.writeBorad.EditingMode = InkCanvasEditingMode.None; + // this.contenter.Cursor = Cursors.Pen; + // blackboardData.Draw = true; + // switch (_shareSelectIndex) + // { + // case 0: + // blackboardData.DrawType = (int)DrawTypes.线段; + // break; + // case 1: + // blackboardData.DrawType = (int)DrawTypes.折线; + // break; + // case 2: + // blackboardData.DrawType = (int)DrawTypes.多边形; + // break; + // case 3: + // blackboardData.DrawType = (int)DrawTypes.矩形; + // break; + // case 4: + // blackboardData.DrawType = (int)DrawTypes.圆; + // break; + // } + + // } + //} + #region 画图 事件 + //private static DependencyProperty IsDrawingProperty = DependencyProperty.Register( + // "IsDrawing", typeof(bool), typeof(FrmWarningDraw), new PropertyMetadata(false)); + + //private bool IsDrawing + //{ + // get { return (bool)GetValue(IsDrawingProperty); } + // set { SetValue(IsDrawingProperty, value); } + //} + + + private void writeBorad_PreviewMouseDown(object sender, MouseButtonEventArgs e) + { + //if (e != null && e.ClickCount == 2) + // writeBorad.ContextMenu.IsOpen = true; + //else + //{ + // //if (!undoStack.Contains(writeBorad.Strokes)) + // //{ + // // undoStack.Push(writeBorad.Strokes.Clone()); + // // if (undo.Visibility == Visibility.Collapsed) + // // undo.Visibility = Visibility.Visible; + // //} + //} + + + } + + //private void Execute(object sender, RoutedEventArgs e) + //{ + // var menuItem = sender as MenuItem; + // switch (menuItem.Header.ToString()) + // { + // case "打开": + // // OpenFile(); + // break; + // case "复制": + // writeBorad.CopySelection(); + // break; + // case "粘贴": + // writeBorad_PreviewMouseDown(null, null); + // writeBorad.Paste(Mouse.GetPosition(writeBorad)); + // break; + // case "剪切": + // writeBorad.CutSelection(); + // writeBorad_PreviewMouseDown(sender, null); + // break; + // case "删除": + // writeBorad_PreviewMouseDown(sender, null); + // foreach (Stroke item in writeBorad.GetSelectedStrokes()) + // writeBorad.Strokes.Remove(item); + + // break; + + // } + + //} + + + private void btnDelete_Click(object sender, RoutedEventArgs e) + { + writeBorad_PreviewMouseDown(sender, e as MouseButtonEventArgs); + + //if (choose.IsChecked == false) + //{ + // if (VerifyWindow.ShowDialog("确认清空黑板", "是否清空黑板?", this) == true) + // { + // writeBorad.Strokes.Clear(); + // contenter.Children.Clear(); + // contenter.Children.Add(writeBorad); + // contenter.Width = SystemParameters.PrimaryScreenWidth; + // contenter.Height = SystemParameters.PrimaryScreenHeight; + // IsWrote = false; + // } + + //} + //else + //{ + foreach (Stroke item in writeBorad.GetSelectedStrokes()) + writeBorad.Strokes.Remove(item); + //} + + } + #endregion + + + + private void btnSave_Click(object sender, RoutedEventArgs e) + { + StrokeCollection strokes = writeBorad.Strokes; + int icount = strokes.Count; + List drawShapeModelList = new List(); + for (int i= 0; i < icount;i++) + { + + StrokeEx storke = strokes[i] as StrokeEx; + var camera = _ucFFmpegPlayer.GetCamera(); + if (camera == null) { + MessageManager.ShowMessage("相机不存在"); + return; + } + var ip=camera.Ip; + drawShapeModelList.Add( CreateDrawShape(ip,storke)); + + } + + bool save= DBDataHelper.SaveDrawShape(drawShapeModelList); + if (save) + { + MessageManager.ShowMessage("保存成功"); + } + else + { + MessageManager.ShowMessage("保存失败"); + } + } + private DrawShape CreateDrawShape(string ip, StrokeEx storke) + { + DrawShape drawShape = new DrawShape(); + drawShape.Ip = ip; + drawShape.DrawType = (int)storke.DrawType; + drawShape.WarningLevel = (int)storke.WarningLevel; + double width = _ucFFmpegPlayer.GetControl().Width; + double height = _ucFFmpegPlayer.GetControl().Height; + foreach (var point in storke.StylusPoints) + { + DrawPoint DrawPoint = new DrawPoint(point.X/ width, point.Y/ height); + drawShape.PointList.Add(DrawPoint); + } + return drawShape; + } + + + } +} diff --git a/ECMonitor/PlayerDraw/UC/UCVideoDraw.xaml b/ECMonitor/PlayerDraw/UC/UCVideoDraw.xaml new file mode 100644 index 0000000..581313d --- /dev/null +++ b/ECMonitor/PlayerDraw/UC/UCVideoDraw.xaml @@ -0,0 +1,12 @@ + + + + + diff --git a/ECMonitor/PlayerDraw/UC/UCVideoDraw.xaml.cs b/ECMonitor/PlayerDraw/UC/UCVideoDraw.xaml.cs new file mode 100644 index 0000000..a7a27ac --- /dev/null +++ b/ECMonitor/PlayerDraw/UC/UCVideoDraw.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace ECMonitor.PlayerDraw.UC +{ + /// + /// UCVideoDraw.xaml 的交互逻辑 + /// + public partial class UCVideoDraw : UserControl + { + public UCVideoDraw() + { + InitializeComponent(); + } + } +} diff --git a/ECMonitor/PlayerDraw/close.png b/ECMonitor/PlayerDraw/close.png new file mode 100644 index 0000000000000000000000000000000000000000..63ec2dfa76709da6c26911b75286ba276453a385 GIT binary patch literal 1054 zcmV+(1mXLMP)Px&*hxe|RCr$Pnm2P4K@f%C`yC{N6omWJsR30n|;f zE`hoPj07aD2CxCZN&pW@em34(iJ7Ez0JZ`62;dXRAC|!85|H#5z(AAJ1(L@sK~mdD zng?*SDb5Fy>n(9j03>C*{yoRx9LW=wK&fmb%>p={<9`jwufDh@0GSg>8GsB#>ve?W zDPN!z|4TXy;AD>PpCngUVuk=%0I=wAIz#fTC15NYNz(w%IQ%V=Y%U3BSTlen6|{pe zMe=;C1l#$MGzs8b+2phPg8&#HOpv^o5`v_I09-N5JKtDiFaQIDagtY3K#+6*z~vY_ zUkZQ$!hVw1VnUEK2Hj|SIZ^VEgX)gemuVC3Xuc=T81V9)edAke* zNqYd?ioNrtOCSKkZjyJ4K#(*Hz;$n_osSB@&=ZD9-VcEwX(s^JJyDV`-2++^^7Mp3 zl8-D9B<;vPxKhbJY7Yp6u$|-+&r44BMdz}Kw)4?TAfP8~CHXuLf~0-`&#Kt@qyP*( zp^xOt7HGWyUR0TU^d1mc4m~7aFTvUj;P>yGE4u8H_JBYLo0ja~b|U%Y3TPzdc{;dy zV$z*Y-U9-a&}v>u@|7tdPzjYKUpWB7)1lJjD+eHH4uEfxJWn!j$l31wsqlZLzXq+5 zB^?1^ogmMW%o}!E!ED#a!V07?4+ zxF*BSN1X@40g|qvXkiG^0Z1AJ;F<_~pYt9FVOt z!g@F%bip17{UlvORcEMR0FrtD{4>#Q@}4YtV^8QM`6>i#5CBOXo8C4jGl5eaK z%m5^1X9VA+>h{(J8+H5CC5Qtj%$nT=oT?4&O+wiUy#~Il+!4Z%{(?bAqiW zMLV8+8whbvie`bj{;aU2p8iK0a})d@le4V324JDIoNa0aEa%;|Px$>q$gGR9HvtmOX1!Q4~ejDg+BVL9nw6DA-wPWg!F+Lhz#yj6^{&ibM-h3$;-Z zlpu+Pg25CbBBWEXu(h+%#=^oMAl4CK%au1WKISVknVBZ9e2;tfI_I9V&yz7fj#-~g zfU#8|$%OiKEC5M%0`Gv&BL_&b4R{M208Wns;0-VdTvQiF3XtR_a00ll-Ypg|GJqsc zfwRCp^;*M!MgoxJ0dN^uQZF={-_QY)+yrg`E9y+$d4~#+q-0&PUj>en+r>7?5^x?kslFH#B1xI?GV9-fDfLUI zm<3=rP_o|x%&054PqMeN*d4%O^?fff{!Kxx z66e$>y#%OwXjhf_1aM4!-Rs%^#;^u4r#|i$D9QFJ^L@aqy4>wdMAR-mlYRdsq0@ty!$K$KU--zU{yBLS#E6qh@s z{uore=L$50s-9R=i_dS!Gt~cqUI;e<#$JIxL#3}C|BADX00000NkvXXu0mjfoWJ$E literal 0 HcmV?d00001 diff --git a/ECMonitor/PlayerDraw/删 除 .png b/ECMonitor/PlayerDraw/删 除 .png new file mode 100644 index 0000000000000000000000000000000000000000..b3c97ac1dabf15c48ffe32a9f9816566936a9b62 GIT binary patch literal 731 zcmV<10wn#3P)Px%l}SWFR9HvtmrrQZa1_VCFD0qFdC-H*q*ZYHb>6(_MW`1M6j4!8^x#4K1Dj0r z;BE8dK}500U?5)XMG*#inF#hIc=OaHdZXD^852$GLwMf4Zd#6k^?X_4tImFov?ni#)3C9JJ<{W1`!xU;J=DM#c#pe3z4CH z4?3Wy!gfxYhPKKku?YBO7MLbrIxNMOp*>rRWw)3(LYuD>^9A5&_Okng}*v{cN03U{jwl-5u{|6>)MArl;XVhH^ z(;EP3zddaG=21ZwvKz9B=gHjhBMRd4qUt_e6F^Qb7}_lYZbWt1!+u`a&Vj#ey8fD3 zx>{hO@q{3XTFSY$y@I8_0iPx&-bqA3R9HvNmrZQcMij^Y&+8r2A~=D7kabciAzqLGp+efUL8KCu$_+udAjG97 zJ`ddB0367P9$KKMUZSdBNsyu*%OMrvD_xKP33iu6O5+4Lz=R=S^D$20j6^VJe#aKp^(Sdzsh z0vK<@@{+9`REYO8qchROgfWNdH&s~u?GtzrH>M##Q5UBfI0)b~caqyg_{S+bSHP(! zWLZz;@2qKSK;cG2dt(Z^`W2vD zi-MQ~;1^dNYHypdCKe*@jh$%L+DZzKhamz0GTY0xxGNJ*0UcXsS{D{W+?(T(t{rv2 zKLMCb3460V9RYy6t{tUH2O2d@OP=#uD`e6mAktF6_wAgAf&hh3^1?(z)i!nyZivv z(}5uXIm5KK)d2F%>JCzr5fJVhQ}(7g*}PU;M=AaTz?L`&zj!^+LW{Tu#zuCWo*F_l*GRnvD1xgzu6-L?&S| zlRnQxCy3D3F=d~M%7G|xuU|E+>0$rrh$~jb7IBUlCyDuoS`J97l~U*yfZK*?Zw&*~ z6ZiU#ug1!<5W`V*B3O<^P8yc7!(RkSaj`|*l9nr6iu0{YTFG%_j>tAB!yb1^++rmm zwg9+en6~GPDnqNrAFW>7j@?XabaY1p>@wubu z>sSt4Y&TR((im6N(2^~ND~fYNZUKu9m_HH=aYsHE6zPmVUR&1@lnU z!vsWoNuh3OINUkr|1hZ)824#L-~+N;H@Yd^|8orbb-_=wuvn#z6ZL{fg3NiGf;q>` egY`^}f6lj)1}xh;ie9Av0000X?%`YK{w`X-%?-pg^LzluM%Kl4}bb4u}E=0Yft?r)-%rTQnQZ z+_G{ittd-V+HG|~EmJFT-kF~6AD8DjoZmU;`@P@$ZSR2{0e+sk z+9uiv1VY!_%Oemzx5G!{jOp->U&b+G`MiE?p9IweqG03Il&BNKRBzKD`QMUCQ8;I;ZT7KI!&5yw(du4;$KFj@f8 z9TI{_BE|s?*b#_GM>59F!Ja@S+amEeI}#R0!rIxR?Hnis90iX@j(YX@pv?Bffgn5#qbTK3hh9K@lp#mmQknZm4!jO^kLpgjVBoQr8lN#RxdeFrn6@|y) z?a(+98jlOM!&C4$3ej;Pjzq!X#!P8&D=_I|`u7<_Ob#pYdrWCGiZ@>*rt<;N+k=XN zNntn~CWVN@gAPnbI-1BLv(Q8b0vS!hlSyct13&~p28l>u(MNf~`#m5aUY$Yp{;|$w zLI8|0nIsCHL1GdJ3>KOR04y{fB-o?rjw}#OWI8x7iA(~MNU)zk^A~d9;h}TCMpd(7 z!iXdyjt-Dv92OI_LpwMS@MsbpPe6kNJlPJW2imh3C?pf0upl9i4z~)2M`wdr0iTUR z{+o?E#D#=3hzaN1PTkNjIvj-;M+8?daePFAz_{@hmxCPbI|?08w>uRDsOt*r}J3Dhpps>NLoQp@pytv+;ZY7JO@O57*#? zL;X4az6PPDw=R3R-)J!Kn5MbQ)pl0X8nnr5eQxDJYELq)ir>iWFVbYp9{kk^QyuZ5 zet$OMLzu4VV4mr`xtvd-GnNMgFy^vS3#?4Mywc5CtZww{4(G1AT1nT?yDQmuUfsu8 zY;CW*mGmaGY-)0*ZjpS-Ro#L#6NP7LPvO$R<(4DIXGxp3JI8of5WjW1#;8c1oac3J zL&ck}!j3oBBkwZs!5k2?b0kD{R`?fnB#*hgW86c4yWo zgU*pmiOJTokmQmG=j6RoRhORaa|;=Dr(vb7z}L*YBcsK6%kVT~?Vc_tcg8q(S|=m- z!3DBHWgzR4H-8Lx`$#V#ClRRm zTwY_;%0A<=d`I!?&IN_kw@+Wx4Es#S*R^!F%snz?P18rl+3gY&_ONz#`l%n3zo(8A zwv}C~a{rRI5r$xIJxYrWy26&xY@RMS+lSK_Nb$35T=~;eN1XN5KEul5mM*J@xjah#KW8-2^)r^*Zwa3t`)VQ0*|@?sJtP;gcyO=#9F<`!>uqU^ z64NHWCU+wnw&I?tG>CakL&^@VL$`V8(zqi@2jXZg6iL8fIV-Xza&&iGBbC+F9TYXN)5&gL@#bj-S89Rl&HblNL=#MY53lRGtvPbfK0L!L%g-M$ zX}qY}Q8cVqKSzA;dQ{+N^EX#N)*fqYncFAX6Zz|IX@0iZDt)IU?R^yi@bG9^#lMqi zSQ&l_D_($*t}QEHr*VX|*TvJkDk*8o#acIMbN7(8m+ePcV9<|e{Lj{$7km&~#plD5 z_dN2IEJlkKpT@ZR*yu91QA_1rdF#l(qdr?dG#tLDuY^liX{QghBNeLmF+)|W5`Vpy+8G2qVn|03pg0)31&udh|LqN&*1V8?^xs&P)XmG4Q7dsA>qn9^=)Lm4HKzKM{G^R!?#a~WK?nR~`cch0HZ7__q!-m-`c#>a z#0e*nS7Wm_0?jAp9l7Uww|CpQ;AZrF>rcsOR+3AgWqS^xwRYvhk}uEJ;T%~V&M|Md>(!tjmyR}4LbfSKg#-5(#(%p~&)l-|+ z--*_A@-;GE52P;hz5iPJQE_Ru=ONxBURi`M4Mr8_OT{i7_g=MT zrv>QAu;=t+3@Z*f$_OP*@T9hGHY~JjsLwYV{*>KzxKAhNrE^YMruD_HkIAIv$ri#d zuF=&{W|k_oti;J8^uXznzJ14(MbwB&yc^+Jr0o3cq}r`XA@i;}!s6}Pb8ospcU2VC ztUc7gG{GgwU=Hx-`FS@Sb!zGyB=lp7+f5envH~`uFOlE&bY)5q0@t#6RTBAO0+=6D zR<3h-sGkwO`+@vs=Wtb3hHDfq{dh}P$-vVl;hxdV(dtL6bTpjSYbP6CT`sE^9uJSc zzIe~jECbzXUM=mwYiut@M$6a~Yupmvp5)q}wm4DC;bWXs z|I^)Bi{z_(fA*0+08(2Y#5Jc;ZK~|VQ0|z_ogDG8_jDH94=ez3+ZPgtWmETA1Sk`y zE^dedg=f2)D>Jexdwfp}fErdVdFxe(%b_vv0eHP8RXP=+@bohn9M0C;ifIeZPn8=0tmFA?cUUr;(qvfbJudA2=<^x99W1clqtiW}l&Z(dnt^TXM%aUqM`f>MmUTM>O zltxmtA6gYL6#gp04ITYj?}Ee5`8VXounz6Wa)x4T6t)M9b~G(JN z5yb0z18k^V51NJk%=pgLMx?bn18u6z+V#$7$2WY4)ynwIi+T7LN_^)7N^fek{6=97 zD(1}Ss}Am}y*s6bweg)H%ECL`pF-6zn1OS>tx?B!SNiA#TB4;(FI}Yc(k-uzaP?39 zzAfb+(PeY1+U^FE$MoD9Gon3|(h!=Nw&d032BSar@Q!PGw;!Dyr^xKn3Hj46a+7iI mPV2ZG(pgLX;-^T>7k%BWj<>cr2B`n^dN1+wC~;f!>%RaHUXXJD literal 0 HcmV?d00001 diff --git a/ECMonitor/Properties/Resources.Designer.cs b/ECMonitor/Properties/Resources.Designer.cs new file mode 100644 index 0000000..f14d0e9 --- /dev/null +++ b/ECMonitor/Properties/Resources.Designer.cs @@ -0,0 +1,83 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace ECMonitor.Properties { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ECMonitor.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 重写当前线程的 CurrentUICulture 属性,对 + /// 使用此强类型资源类的所有资源查找执行重写。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// 查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。 + /// + internal static System.Drawing.Icon zgx { + get { + object obj = ResourceManager.GetObject("zgx", resourceCulture); + return ((System.Drawing.Icon)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap 报警 { + get { + object obj = ResourceManager.GetObject("报警", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/ECMonitor/Properties/Resources.resx b/ECMonitor/Properties/Resources.resx new file mode 100644 index 0000000..dab2eee --- /dev/null +++ b/ECMonitor/Properties/Resources.resx @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\Images\zgx.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\报警.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/ECMonitor/Resources/Images/camera.png b/ECMonitor/Resources/Images/camera.png new file mode 100644 index 0000000000000000000000000000000000000000..fdf28e98bef077a0e4166f8026d44d80a9a1bdbb GIT binary patch literal 1567 zcmV+)2H^RLP)Px)*-1n}RCr$PS$pVSV;ui{T;?+O8LQPYa~m}_Y;H4ZhLBrUGO=VxRwBe7CSgM{ zm*z6eA9Kqs5jH|tGHWFFxzt3;WhQf3`skzQ=fTV2z91LJm`0Wh9 zzl{L=0N{H7p8|Lkz)K{5*$^+M<1QfS2mq&r-_S^4vGg8kdl6<48l4bmz0>Bn<4uE+i7v%{c={f*chP4Yw8mRS1lC9x!0Go%!;UvFl z3WSaT5F?zV(*Zmbc#kCcYS}(XZ-*FR3z$Okx0ric@pKIU3npnN0BcD)>bHsw4vZg% zfH|M!xvloZtTzHcNOhA)UK4X^yF8Lk0`OF<)x_M>6aWrjBLT#i@>l?e05~8OC~f|Z z^h-!CZ{Z4d8@tbwBu|Y|vZFyzl8c_3d;n{_~_Z2^+3yg^t%a(apKF90|?wZ1Bp!CQn>xOHmnMUuyqoV6sB)duVGZUdko zz<82N^MsLfR>vylz~&%0vyrjg!FZ2j-ZK)BuldZJV^4ZkkfAg zkTgt1atj>H;tZz#!A_yB~n0U>Zi!?RHyK7Xat*Bmxg1nfPVe zT;0RBGV>zgpCNf-4zMS?5)97=kzCuB_H~1xFO}rn??5$;$y??B{lS#gub5@dhyfi91Ns2u@;j0ZmumTS$oCX(@ zoKo=CJREi2kD=)#Jr2tP=^3H#+A&OwXT}^>#?ur4Q^P#pcU?vD`T`Jk18^IFV+(|O z9>7eJHu3c+)p$ABPAKB50!kwQ1S{~M!UGFaX>lUSK-jR@wFpVj_G@j;40Eo+A3GQuQ33^TiQ27{6vmiU#=pgq?-U- z8uqLvxowsGt#}&+Ab{ZXvS9*!!W}idyiWr5e@^l1%L;wQ80=T29W|90eNZuRC8^zW*03r2No&3ZJTVwQ9bU{Y|h|*?& zF!cc#ATOe8V)QMbYtRpni~ANZKwd=G#OPZ<*PtID7xyh-fV_yViP7^G@Hfn;=1|Yd RBMSfk002ovPDHLkV1g?0z^4EJ literal 0 HcmV?d00001 diff --git a/ECMonitor/Resources/Images/camera1.png b/ECMonitor/Resources/Images/camera1.png new file mode 100644 index 0000000000000000000000000000000000000000..6a7f8ad1ecc0c0bd29075f7f986cdb050f90fe74 GIT binary patch literal 2376 zcmV-O3Agr%P)Px;0!c(cRCr#+TM5v%QyIRlBvLc7j6^kL%~CTIB8tj7)=5fAnqfvomXM`MQ&~!7 zZ^GD#m~1VG$x=#9NMy?}q^M}jRFvv!uD|ov^PTT(&+|U-@1A+*`{sSlxzByB=RWtj zx0hH5BxzLuTLV}f!1Ceqn()^WJPF|U;jjOH5Wux0e=}?GIEw`&EeT*#0Gox4uRCy^ zUl|Ahw*a`6Z3y7#pz34D)XKw0<7kq%w@yfnn+gC)?+0)ifTbIS@R`03z+(V* z1h85(?_L1^2GD9Vo&oT2l9x2DKX2Gz03_`T;Pi%tzYk!+r)$+E{Sd%AqxpWLp9{Cf zHUK7{+A<#_`SseM(KJBPkpR9>SR+O9rvF{?yMUZ42PL2}TBHquNnu z0l-(w5s3v3CHduPb|A?S;R*l*;Bk_F9Kui1AppLVn0pLKU)fnI0uZde-~KBi4mXk9 zysxlf!`lORHvk*Im<+&Wj{Znq+J}GUTK#L#g6yqO1Hfm<(OpbClDxX7fS(1hPk7@k zQ-1;A43cNG43=aAZ9^TCqet7YB-H@;HGnrpGcP3hp%$SgVv!o?lKa(!@N-EX zcXDRzp8y;W;BElF1n?37>xWMadY8p!ByTOPFXBAYxlE(*PGGJW zjdhe~A$&JiNs_b5&IZSH1<741THqKV&Qc|>?i>II0{CjY0g@?qc+Rkb3LZu><*k*} z`O1(woBP(t+VyQW*l|La4kG!rRt-q0@ZBWeTzhqrJ^%xo$ypUwa=P>*l2*$iNjez734Mi5F)e`k7LxW9a{$=T zzCC*AN|Uo$b0~KNoNRE?p-Vp}S@q@$04z`PsTzQh1~^{$R$@*K0Ouj!8qK?iWb7qo zH6Y~#JxFqm+6D@5Z7Y)3*XBn6q~!3B+7Wml)FHdl7{NnG zrjAAy6G`6&FfR$px)F4N_0>Hzc`exmych4P%ZV zSt^M5*tlkqI-=PiuI5sveEQ=^#+p&GUpWR{tWHLFE5A@@0NV=IKNiB7O^D?FBT}fVEdoz)W`g%1Gxw^m0Ym;7rK6S?T zhID!?&iN$wEXmjcfK|(hMmIop$r+=qTi;Mhh%pKyA#dO}yhOBy8>yVYEgsb>0A?!5 z6`)TgHt{4$S9e}Cl9bCFoj}qRqaw8eU@Pie;3^4j50H! zni)yj7=Y`Bxx2l|XP5}s3xJ>rxm&@HZFoK(dW8NwCJK_43Yq55BnJT5z2IO`q$=2Adty>hFl|BHuJJn5D*{H4$ zvzY_X(TH3)os-v1Qp;vib=fYDp_})-QI9|@h$Pnnw@V1AEM^9PB)6)%x*Joq=}A(muwg#yk-W3_E(;T82|%hqX;IcD>F%>ENpce7 z+{A!ONRDb?X99qvT!!X!l6GmUB+18OjT{>iB~9) zjH(4w0U*g1J8qlv^>|$&PzSy6bEZ4FW)tRnv_SA04#n z_>;~C@RgcvNi91RfR;#b{B4#w4vGke0+1@0EbI-(>s8Cu{H$-NVyb>6sNczAjxlJ8{Ub%l`wN*Gg{EE0sh50000Px)*-1n}RCr$PS$pVSV;ui{T;?+O8LQPYa~m}_Y;H4ZhLBrUGO=VxRwBe7CSgM{ zm*z6eA9Kqs5jH|tGHWFFxzt3;WhQf3`skzQ=fTV2z91LJm`0Wh9 zzl{L=0N{H7p8|Lkz)K{5*$^+M<1QfS2mq&r-_S^4vGg8kdl6<48l4bmz0>Bn<4uE+i7v%{c={f*chP4Yw8mRS1lC9x!0Go%!;UvFl z3WSaT5F?zV(*Zmbc#kCcYS}(XZ-*FR3z$Okx0ric@pKIU3npnN0BcD)>bHsw4vZg% zfH|M!xvloZtTzHcNOhA)UK4X^yF8Lk0`OF<)x_M>6aWrjBLT#i@>l?e05~8OC~f|Z z^h-!CZ{Z4d8@tbwBu|Y|vZFyzl8c_3d;n{_~_Z2^+3yg^t%a(apKF90|?wZ1Bp!CQn>xOHmnMUuyqoV6sB)duVGZUdko zz<82N^MsLfR>vylz~&%0vyrjg!FZ2j-ZK)BuldZJV^4ZkkfAg zkTgt1atj>H;tZz#!A_yB~n0U>Zi!?RHyK7Xat*Bmxg1nfPVe zT;0RBGV>zgpCNf-4zMS?5)97=kzCuB_H~1xFO}rn??5$;$y??B{lS#gub5@dhyfi91Ns2u@;j0ZmumTS$oCX(@ zoKo=CJREi2kD=)#Jr2tP=^3H#+A&OwXT}^>#?ur4Q^P#pcU?vD`T`Jk18^IFV+(|O z9>7eJHu3c+)p$ABPAKB50!kwQ1S{~M!UGFaX>lUSK-jR@wFpVj_G@j;40Eo+A3GQuQ33^TiQ27{6vmiU#=pgq?-U- z8uqLvxowsGt#}&+Ab{ZXvS9*!!W}idyiWr5e@^l1%L;wQ80=T29W|90eNZuRC8^zW*03r2No&3ZJTVwQ9bU{Y|h|*?& zF!cc#ATOe8V)QMbYtRpni~ANZKwd=G#OPZ<*PtID7xyh-fV_yViP7^G@Hfn;=1|Yd RBMSfk002ovPDHLkV1g?0z^4EJ literal 0 HcmV?d00001 diff --git a/ECMonitor/Resources/Images/close.png b/ECMonitor/Resources/Images/close.png new file mode 100644 index 0000000000000000000000000000000000000000..63ec2dfa76709da6c26911b75286ba276453a385 GIT binary patch literal 1054 zcmV+(1mXLMP)Px&*hxe|RCr$Pnm2P4K@f%C`yC{N6omWJsR30n|;f zE`hoPj07aD2CxCZN&pW@em34(iJ7Ez0JZ`62;dXRAC|!85|H#5z(AAJ1(L@sK~mdD zng?*SDb5Fy>n(9j03>C*{yoRx9LW=wK&fmb%>p={<9`jwufDh@0GSg>8GsB#>ve?W zDPN!z|4TXy;AD>PpCngUVuk=%0I=wAIz#fTC15NYNz(w%IQ%V=Y%U3BSTlen6|{pe zMe=;C1l#$MGzs8b+2phPg8&#HOpv^o5`v_I09-N5JKtDiFaQIDagtY3K#+6*z~vY_ zUkZQ$!hVw1VnUEK2Hj|SIZ^VEgX)gemuVC3Xuc=T81V9)edAke* zNqYd?ioNrtOCSKkZjyJ4K#(*Hz;$n_osSB@&=ZD9-VcEwX(s^JJyDV`-2++^^7Mp3 zl8-D9B<;vPxKhbJY7Yp6u$|-+&r44BMdz}Kw)4?TAfP8~CHXuLf~0-`&#Kt@qyP*( zp^xOt7HGWyUR0TU^d1mc4m~7aFTvUj;P>yGE4u8H_JBYLo0ja~b|U%Y3TPzdc{;dy zV$z*Y-U9-a&}v>u@|7tdPzjYKUpWB7)1lJjD+eHH4uEfxJWn!j$l31wsqlZLzXq+5 zB^?1^ogmMW%o}!E!ED#a!V07?4+ zxF*BSN1X@40g|qvXkiG^0Z1AJ;F<_~pYt9FVOt z!g@F%bip17{UlvORcEMR0FrtD{4>#Q@}4YtV^8QM`6>i#5CBOXo8C4jGl5eaK z%m5^1X9VA+>h{(J8+H5CC5Qtj%$nT=oT?4&O+wiUy#~Il+!4Z%{(?bAqiW zMLV8+8whbvie`bj{;aU2p8iK0a})d@le4V324JDIoNa0aEa%;|Px+&q+iUF(eW`;;EZI7lA&T0 zC}}>y0i`I($*2??|0tg`+Dtk=b4mwHBAqEB-xY;oX@Y-`}9#2kpEV*u<8V4wKTe_Ml>0lXC7TYr;$WN7s`L=;Aa6G z2jBz%J9X^m4FGEZ+y~%Mk_M+&=?wr$y8<{b3}4u*mfIfouz>(@J;~Sl=%W_^B-!xu z0ep0XQXa`a0C*n2bMfup{#f?QKJ(-E5fz^EcK|;kdHuK`j0J$C(_+*Y6cl*}z(etQ zgya)l6qR%s0Iwg5;IUBINuLIAC4es#I{vFi2Ebh;|J_xovil@` z7{E#4X&*1NSqI>IB%f^CXKMf?oebax0J~?My&8twEnjb|M4R@Kb`B6cFWS~Ug*FhZo{8#)A6`%CGDR9kw5NClD}yB{Kf!Cx)8wkvj@Kd;4G4U zO-)QB`8E490J~*Me2e4{nkdx>07;htxIBB{W&le_`g`Ic=>Pz?0q}Q{%Sm2Qr(7)n zlDzQb^U48Qb0wC$&aC@(`76&s!g||)ZYSm7XM?Fndzo9%G z{#<;>C;--GLCy;Rjw1QbRvJvWv7|i#YyhxtsIrdamumrt@OD+!@Hmq9PuQML-AnpH zWRmIrWh7^W&9gi}lIMMj?H%A;(5d$+xk=IwBVe*d8%a99*eWvsh^)?$oyFm;7mwNq zFIL_qk+XkuNZTd-I9_$PHF?iR#OOgyVe|QU7P%FG$mhLMrj*vn#Z^s=k>vGZk7#Sf zmNvPsZ5v6yb^sRl{fngMd96sgG?F*Bbt=6e)e~|6@@UUlokzb>Vk60GhEwAty@OCN z-u>J_vXQq%0%b2qS>)CzF$dr=ul8Yqv#OP~&_)AEp8)VH0G}KJgc9Rh11#wqk;PiY z4J1F~A6o#Bylng0lk~9w;gCK-=)?H1(bL6+*X=^T`6QoD0OaUAM)K&U zqo22v z1<#Le{fwdwlCA-8QCwe5a&ZFS{{VK3KNgN#kB=zKo^WIrPw0E(GY@cRoD!oqNzP+z zTFkiEb@U6zq%`qVl6UkCKy%02Mvp`;gBu@%unT~+vHJR)0}x6SgB)M>)LTl@q4;1TX%+x;HU%n- zPX;?8H3)AHg+SR9n3F|tgz?_Yu;h#2y#c~oLx51W2oC-l9A$heoRqu<9jttXq@%W8 zMbfO-;Gls}o$<-K5)jshCwP(WO(e|!g+@D2FdhF z9J|9V5njnX<^&l8@Bfc2l3eCXq^*T19nLQv-j&jlYuCm23QzcbfH2nPOi*qfkAAic zb^_p+0G7oc7n58u4%FiqUjc%PnqMXPVprWHxftT2h-DSYIWLQQ#Z85aR%LN3GKBFJAUJxpC;X);2!*ov!z4|;+eVWs5DVIFj1>3ddrxdi z0KSK$`9ZbPbYsL+*RES*&j2_uH0j;=5uUJ#WJ=>JL1?r!7H(|HYuC-uvjN;cG>atI zA6}$?+Uw?MhVuJ&dpx|ro18g8;>1aF0c$7uhz7wST%G-0Pml-@a*B)zk;hC6C$K3P z!5uVhE)gi3QDg!D@9jA+Pki9bB-0|-RELSSle8%#PCAb`zKl#=MUyirI#3M|+G#kY3du+u> z)&XG8c`zvN<}anAwsrS4{(r1BplL7De0=^r?IO68=vbYb00000NkvXXu0mjf?vBP; literal 0 HcmV?d00001 diff --git a/ECMonitor/Resources/Images/logger.png b/ECMonitor/Resources/Images/logger.png new file mode 100644 index 0000000000000000000000000000000000000000..9b19dafbf4493b3084b78ae3e7ef6ea91a6f92b9 GIT binary patch literal 1483 zcmV;+1vL7JP)Px)g-Jv~RCr$Pnr-NxQy9lTU&=@l@j?=lki|qx9$t9b7{h2=Y8pZlVX{&ynNo@( zO=My6l$oa)HV-imFGeWCJeGM#$wPT%?S)I%x_|5Z@7?!(&iU>9_W%F;|IVws&ULQq z`hL%K&UKx0ZZW}|COCeE1Pmi!f-^8&0=WTTW^;j4fvLG;`;>oC(z5zkGn)=v2pkG* z0#-=+HrGa01en=O;PqT11>|p)bazjWncWU7t?B&}xJJ^;IrfqXFtfdYjldB(1`5e8 zm2`*eY60Ifvjw(8%7hpDIcy-Cul*jmf&Zvp=$Fi(<)_YTd>j;RQk5_C?L5qfJ)(4 z3C_Dy#Yl*xy2j171-$z{P13*p63|p|G&3nhqbY&NSf1~x7(qe{c$e)Ae;4RbR2B9RwujF z4Po4t>aLdbXe83gErHY-?wF0;f$xCBTV($63=@{E9UETKd1FjPfSJvyDz_f~FMwlf zWc*%TVs7XFf1RXv9A^ApiS-i0r87^~! zqz6*KyG&66%}0Rc&FmbYeqizHt$wOoBXm`j5a16=;9oE82<^P^Bw> zd~9nUhqG7xLE_I-Vf(Fmw_7dg{i29#%8C+@@khuqNjC-?kw<~=#$Md4l=Q(MK@Tho zn3-QJdY+E89SWh?fI;<_jsSmU^&6q^wYACj&NKR;z&7bEN`M=v{tfbq(A$VVM1c1^ z%)73gcP04B-@z0@xydyL)Nh2c@s`K_!QPJ%OKr0|({lfb>q6)OzobOh8p< z-wb45RSyVQidw&EI=4$Oi-3v*KN$Hj`REi6MoGpWWE{NzLEhQ235Y2iZ~a38#@mdQ l_IDTor5PP>`X+n?{0}}*#b1dy4I}^n002ovPDHLkV1jF#$Jzh@ literal 0 HcmV?d00001 diff --git a/ECMonitor/Resources/Images/logger1.png b/ECMonitor/Resources/Images/logger1.png new file mode 100644 index 0000000000000000000000000000000000000000..9b19dafbf4493b3084b78ae3e7ef6ea91a6f92b9 GIT binary patch literal 1483 zcmV;+1vL7JP)Px)g-Jv~RCr$Pnr-NxQy9lTU&=@l@j?=lki|qx9$t9b7{h2=Y8pZlVX{&ynNo@( zO=My6l$oa)HV-imFGeWCJeGM#$wPT%?S)I%x_|5Z@7?!(&iU>9_W%F;|IVws&ULQq z`hL%K&UKx0ZZW}|COCeE1Pmi!f-^8&0=WTTW^;j4fvLG;`;>oC(z5zkGn)=v2pkG* z0#-=+HrGa01en=O;PqT11>|p)bazjWncWU7t?B&}xJJ^;IrfqXFtfdYjldB(1`5e8 zm2`*eY60Ifvjw(8%7hpDIcy-Cul*jmf&Zvp=$Fi(<)_YTd>j;RQk5_C?L5qfJ)(4 z3C_Dy#Yl*xy2j171-$z{P13*p63|p|G&3nhqbY&NSf1~x7(qe{c$e)Ae;4RbR2B9RwujF z4Po4t>aLdbXe83gErHY-?wF0;f$xCBTV($63=@{E9UETKd1FjPfSJvyDz_f~FMwlf zWc*%TVs7XFf1RXv9A^ApiS-i0r87^~! zqz6*KyG&66%}0Rc&FmbYeqizHt$wOoBXm`j5a16=;9oE82<^P^Bw> zd~9nUhqG7xLE_I-Vf(Fmw_7dg{i29#%8C+@@khuqNjC-?kw<~=#$Md4l=Q(MK@Tho zn3-QJdY+E89SWh?fI;<_jsSmU^&6q^wYACj&NKR;z&7bEN`M=v{tfbq(A$VVM1c1^ z%)73gcP04B-@z0@xydyL)Nh2c@s`K_!QPJ%OKr0|({lfb>q6)OzobOh8p< z-wb45RSyVQidw&EI=4$Oi-3v*KN$Hj`REi6MoGpWWE{NzLEhQ235Y2iZ~a38#@mdQ l_IDTor5PP>`X+n?{0}}*#b1dy4I}^n002ovPDHLkV1jF#$Jzh@ literal 0 HcmV?d00001 diff --git a/ECMonitor/Resources/Images/logon.png b/ECMonitor/Resources/Images/logon.png new file mode 100644 index 0000000000000000000000000000000000000000..646f6af989359be72f6cea73f8522fde9e966a20 GIT binary patch literal 18527 zcmbTecU%)+w>~<6h=71nL_k19qzNchI?_dYm5%g|(pvx(MS2J6NbkLufQ4Q{?+~Oz z2%#lF0?Ci}yx;d6&%O8ax%YGb$jnYMduGipYd_Dk)=apjx)K=)JqZ8+WUrLvwE=)2 z*n=#GwELJ^^W+RvY`h6kW&5Yg9oH%-Uk2@H3vC4O-*|@Pd5*Hw|5U;$;mx@ z=k8|f;A{f`z6)78K5r7w?nyzF{S(Noka@&=qq_<(#IT892|uKh z5b%z96GtIq0feNv9b4j!N13S^tW?U|1gfLA0f7Eu{0H`hblmpV#-AjS?aw;_j7W4so=!L1kB5|$}$(a8| zq~D868K&&-n*9=t4@gK!;cS-QJD;sbO5p_lxUEJ8p|1bMF8Ut=@6%<{D!cPPUA=$n z>RqKBvpsY}_POiXHY>L8bMRFR=lGgnt;tiGh@&^*Et-$i`utk8-=rjoR<-vQ0LbTl;Hr5^bo&Q&MK^io55|seTKu;+tCS`mVDD&eTHMe6dB5We@r{@Lx2WE- zh<&|l88i22^cHPe%#BBHl?4+*3Lfr$rPg}X)9+q@Un=VuZ>r3C%;Qci8f_wjj$7=1 z$RBYT(V_G_=|i0s!4$riOlt`m4so02C2p z6*B&u+%{_dtw~gvf<^cn`X_z&tTx{W>BkCLF}@M;reWyLev7#E7(X(EYX6p5=$)U= zALHVb-l)EjD`DGbZJ=zsWkCEX^!ZQrM~NjG4Q&3D7r%Wi#cJc;C{{ciu9F}@}e?Nflh(c#2trB)hDnxmw}ayTXi874^!it<0#@Z z5-t5}ZFE0!rj~_sXYB8THyrg{wxjeY9gWAzJ47VDqbwXe+Y1 zFP{~2zbNPHS~d65MYG)N<+nL{BRk`+PXK%B^i9puxb9+K)teB*;LR7Hsw3x7W?Nw! zZ=1FCegu!aw|4bVbUssMlx37`G=PVIN1CU0#<9}2GN@8y!G8g~U*KDRA;LH493tzdq;#K=J;`R?+#64K=~A4$81m_dv)i#!v& zB^*cR{QQO0;c%SQj?*`Xmhr>TKP7jE?Azjh+vktJ%4ctRau8;>F62uqWn1C)z_LPc z#b(J#;;p3v|6;-Kf}Ra9=SY%Mx^3Hd!=&f%aR1Y#in)q`{TR{dOsDL(;Q5Zl%jnOA z3Yk4Bk;0LEDGMoqLxd@6DQ6Ym^riIu^pX0r6|ZJYU{7H#GX~C@3IojarglxYYlf<5C<^?3&|0l)OoQ&^FOHiOkPv z&seIQcbQrqmh1tQW7K#v7zRv#Ng`gJ9-h5fdq2FMRh&`$^CWJY&&=D*&6>P8hfd{0J%uW(}GNN(&;o%*KeLhpuAJ zyZ-nc-#bz#w7~m;w~5#Jf&N21ffE7qjkFtuL_&nogzY!^ZcEX~-X!v+s zxUdpfvU{37PBVBbi^hln{cQM&D$~r}m@kl9&^tkHMHi~O!%erot|~cyZDDqxOQXF2 zQFC(fm+|gtHRyQ0_dI(#Q?X%)vFnUEiY<+56<>60a`(2YaCFvow%X5V327;7`QRIN zu5gq}=}GmN7#_ayd+xVn___!FwsX2b=0>`1iln(7S*d``zn|w3P0CEl%-1G!NNM1neb&s;tYOQ|ok+Ifx8*X( zkQg?2w!wPgak5C`{8@E8zd^f7ll-14UkSIb@qJ_87UfQ5qbUKXEq3pMmGtAiz|OcD z&6b+_xfWl;qt!=U3hnn;BXwwfc%PeUw^{o-98Q3S?1$=7t~A%)XzLw2`Yj#DXn&e0 zER^H^Xdswenlv!vT6JpFYDM!l*;)_bm^y8&AIwFYY+muMqNM7)MzLjU%|P9JIuPmS zvaqnC(mV)h2t`%p7UDYa`jxVRjz8sQOG8{#3GMKxltayI+cSOdFG>i<65D2{$ zf*TJvRV*HV7tTldX9b%M>0ecrH-qP&EX;H*`vjbje`2H&UqK}8cQkVQ8aQ<-fRL^e z2OpPX=`9)By0(IrTada`2!3Im8x3J92^r_p{f zF`6+dftztbi0A88UVTEb2HCk;9Fj*D8y^$bi>-^Zv(%*}r_z@E&QvecoJ_S$JMH8k z+0wM02dd5HX9FiI+p(sH9q&#bomnojHNUQutddj;dUy3lx!TwbW^*+Il2f! zv>@7`eVxo{9G5a!&69DoRbTO##+lT1Aoh~)Ec67!HjyK6jW!=zDQl|%fIk}mgnR;k z3*7a77XZAT0l=OG0Em4909v;M^BzS2kc@gI|5Dd?VLvM%iFy{a-8H=|K*0Jvl~KCD z5AT!6z)`kyU9I4=XAd90V`>+*vwGb@{UIv!!D1a_WU~AXj$02x2_jrBe&Z7p@GC33 zCwO?Tzrg=6cBos|-q)V7y#5()>%(Onn;|74?V##v{j6PR3SPBacCeSN6fBLKnu5)M zE)ObqF_ln+SeM6%DsAW;*;_2vn_dZGeY}4auD|ILah~)E&6@mLc=+!h;-258k@@#= zxBgK4r^IrJr~F@auQ$>F@jsOhi5~t_ihKJz5`VAFggov)*WlOv@5BC|D%`;WkN>gf zCv(U@CE0U=|J1(~3{d`mwBrBe^!!}PY0@UMHZK2I)_?yC$$!lLpBwo9XHRXMB~4td zJZvot4~SLoybFx^oL1uj{ zaWlWL140zeje%}Sm{^~FU)mHN(Bkt)cRo0X09c*Zu?bqaJrDBkdsC{>nA&p!0F2Qf zwgsGWEyXS*md`oq3QYSeTFD>U6t)5W#Wx6ofM-ls0;N1jf!rfi)hj(X@+hnz*fYos z-B(UicIINlv`Pka&q|x;NiK6CQe93qu09G_d77}+M%kT7{mb~EtwqaVM|RVSTrINy z9t5S7B|yUSFT?i2!b`v1f6J7QQcI&(i#NK5hVX#18>5%a0AM?Uu>!gqZi+6noGX98 z92Z;JGHr`=5Cd~po7DhEKEI8C13h4&mC+!_3cd}@HMNLX`bB`i92CtWN}XEAXO3?Q z3k{Q^FI*NzT_z5eaV)Nda>+?bUA(6r??+nZeV-J) zf7ff*Aj!7upb^PGdv)Q?*)E2a+^Fti%}@bl7l|Wuu%6}*SO#;DY_dA@OpgZxw@)D3 z2wIvUC5h9N-N@*fp5P*cx#ZZxD~p-OdVt193m`EHvrhbz&|;F+266fLfR3~J1hW`R)?I0g-w};Hnn=(8ATI590L2%bLw8%I zut*(#xj@JhEg7?EfBUF6*?Dl~o7Lf2QsYW}c^>s?LApJ^80`vI_vbqxsF9-5xBlNX@kur}I(Drv(Ter;@#eGNaDf&1G^; z`%X|}JQS-W%u~kOJxNus%vQJ|$cU6+p8%`)n_P&rZE}^~1+Pnor^b5=!a-F7Jn@|X!#$8ewO8J&BnFLFVypr<_D2g>D~$<3eH1oDK1QD! zFmS3u$+KRelXi2M4k-R!NuK*zr6p}SidIF&uE6|WPhEX;f8ZQaza}UA-n+9;WzOXj z{{A=z7wK6?k=YK5lcw!(^#L5!=VNHqg|h&h8vN(1XsQ_w7icmE~r2V3hE) zt?uVqgX$VnSZ!+$LNv$CdmL3q=6i@VGHnE0BXL> zUCD9~SCJ>#M3wlv*ABaaUm3S=5J){)AHQlp_K6E;G(SN?Su-}S?mg~TH)(iq3$onQLyro87fU9;s3?0yJHeSyS@B?>~CLHtL*ip8YoYJHJcJ2i#xfBms zo=-HI2bLbVQL;JJj~4Lws@Tr>V>L$+JjUeKy)JMaddblT`aKq=_L~sPuA{q&$h_g( zjvlWgFYi7RfHq#e0=h|cY;HDO*hAwkvW0|j!&cTg1X%-16%jU<%59{ASA=XuGiUBE zY??IkZ4Mf3EsawHXM#<08ZH-@RRYwwg{{c6!AjW^-V^~jqf5{x;eH>@!HfNytyM}O zf_$zh$*i7b5qox>MiY_bX?3Rgr|Ul+wM)jT;NIxvE*tBW%4f79Y8GCKDBhchrClV^ z&)^u$czwDoQTHmTr$j}bm)~`{-H`e_p#qv-M2h1K5%6q-OpF}r7L4}?RQtBKTm-ZZ zEpug@W!AUBMsZm=k#cftkBXKHU-W+XadZ=W5-WIFA9Zr31k!jV<+|v~D7?v!$d_IJ zS)gzMWqmp5ri6XZ#v!)(y99Bfv;5vWl6xmwAB0lkaMIsqzd;WM zYGeujvq+ZR;0m$+=70w*wX5VMCU-nYX>>JP*L~&VGVr#;`eiAj)2|T=GA?u5FY_FD z{J;FfP-)L9`$oj%_H7o2cfNqK3#?`c>qR?X+ujfojggr ztZ|-aV;987Swk*TrD3dgieKl;B~_ii7B3Se>u8aadqqqvNa&$3_~`Iu9`tAjozrt; zyU0#HS3X@$t+oB|<80F&h4HL<6&ev!>Ep34Z)19mA5k&DQE;aC3qh6BTtp6Hl$oogRUDVO2`Y*XymcbzvJu}tdVPq?1k8__^B~)Bj z%aqNIh(^e?%eCI58E{j+Do3o{?Q{$)e1VXBy1vdzk%EyF5~FiwcYw$#pbKcDiwnvS zyF-7#4{n+BE@GpO4NTCjINVqK4!`=$V#*i%x&Pyi@M&cDhx`4FMqJ9i{>}4dP#aB*&R+L({-OgV|P zRT;8uP>_7+3evmbVM86|z*dbby6S7d(4`$ozf%EyI-n?_&AJfMGF6l0HC&`~I`Q3n zDlBF(4l^dJ?9h#QcU2RoybARnMcy20?BS%LifloNkJ+Z%cio3 zXAeFNqB7VTbv&nh5Mky6m>}2!AKb$}d!zlL=X*ZS!r-8%4)aRDE3_MgPETTS15{rk z2g1(WocjQ8m+}gYLXhRX8cAD@Kl7|d63bcXgqh_?w{BVXeR^`zBVPzYBPCC3pv7Ia zwF76tiW^v}RaWz|W7=~Z#1@8Q=K8>j&-EV=r_H8`_n7r|Ryat;R#8K#LmZ6sw*KOB zq;p~C`ioVduAC{ZRh*AL9bHtB#d8rMwLXJyp;xjbrF`SX6!^tVumEw8H93lKq!YixtJun=_+`h{f0cz@DF_z`O@88MXxbxZ$=@# zM+?W8cMF23Qv5efQA01Rxv4>XT{{T&L{(2q2XiVi_vMAP86wyM@723-7Xv&kc8_G2 z5uYDew%w6keYTUSvDxMF+0SQWR0PuRboW8;+c^ZB7D<Uot&jyxL}b5A#-I)oc3dOrA1|BI!{527 zjt`*CmU1s1uz3HusG`wSX)6rMne)^=YiFe!TX+Ed>YLnEHOj1vje53hn#nlqa8}JA zter1+?`a>`YX|8kNCBgK@05t6p830tqQ>&Ayijy%kWuQ_x(!b1&od0ue8j`FcQQmM zX3-W2T?BmTUK~PuHJk?Op7L7u8StIh6*MS#ziTvdf@Ak!?lELn5W&hVLd7s`(CG}G zMQ_R*OPH%CnHvhPhgA8raN}qtP_)vY(IdYVdeAMeKZ;6SIrc54Dq~ZU?k7(MLCCfy z<*TF5nbNH*ndetE5dA~an(Yr3d?xHMBYXKK&x``(TKK4C*xtSQzak6caiaF@$4|Om zF3W4j4hd(J5CGPhMxxmd_%K_(mK`ewtj6qrptE_cF-6<`*xWnYH@5Z%FWHvxS{D|J zY%)gdx$1I;%@Sbs1Z|x=i)ROrBBZFHnlxNvcEqu5zD!tkR!2X7CAC@9svco^V)LRF zP7HJpwhX>^X9p~f>RQm(%Yv@2@7K5=x&HC3my+!He(_rsRz(rLC{STz06Dw)?4?2@ z!6cIa9>8e(P(ll?VpT{_jXxeNEQ*p=4G1BaYs9$8PF92-o%e9%{@lU`(fI_d=iHMu$q>*>6fz+ z)rWa(&fbCLgLiDI4=FjWC#F|lt|JzrCsxZ-$`gFTlH3CFITW3yv(G{w%)~hBw$nd1 zH&d2guHNKEcG4rkRCwzV;;hzPT1G!(NI#S?x@GQ_Q>kpqiWqUWzziXh2KScT$E#W#Kuul>)NS4e$Ez~g}0QkfG z=b!ZLdT~O%T1m`*rXJ){nf(mzN<4;B6u}Hg7$G(_f;lhqFJC50YS4LNkfN!DcoW-r zz`!u!JS1}xw%L)G3?rgZlys$*YiU^fBX74q!xQ26<2m=B&AQ+b+>o~3$r8eHwCQWx zHJq7!Kts6oRTOGfHAUCMkFJaLwA?)h}3N}yYEP2O|ko7tGtEA~VMx{S#O$X9v0 z!yS|62#}I>XK#4DotYM?O~D(s%9qqh#_X_RhYx9MGf#%Vo}D!`J?Mv})uStYzqX9` zJeJ+NDAq|SzRH?)R2MdAzMkI~u)h)=a)orzop>~YRdp@(ioyblI-J@$sOp=;I_37) z(`+WH+YN%%;G-4QPe@Gaxm>x=a(F$6f17Q+xwzlZ_ipg@Y*6iDkEFhMY3y7IPu~4X zXfBFTf8dB3O495UuY!%aXo~$__{|BlKX+`1v$6Y4>vB}3b-Xf*GLybST%s^Fm(qtu zQ$Y?%UBwmlZD?#{)eR@#JS4R+(o5$vcXE)q!088sES19KNq9Xt&6^SDW|)5~ z{mS`gwV*#H22EKM<@P-|L(Pm0^Gc6Na(SiZ2bfH`G`p(WH@k#75o2 zS2}3nDAR1XTm(Tk5zlgj?RhAFuIUhroO)JSIjnW&x%}PXIX6S}HAmSCnnisFQMbpI z$j%9>ZtCP@B*$(`FN?|9rWh>I=`^&9+w}S?6z+32B&0xTZGJq`dYB#l!ehZl)wa%u zX^+%LF0m^cF2AmV(XA883);?}Znc1uOwO26x7>OS-= z`Dtbzopdn>=`YrI#%s1&t=DzC#Vh_a^+0ZdS76&%O1lkgW?eYSkkep}{Q!q?TzT~9 zw8<_LU{BAacvT>~17hSk53>1q@sl<5I&5h*^XTQOAn6{aaaTfL?+Gh)b=Nr5uE<5J zp$U~`1czF>ZqH#_qGknfTC>d(lLpo*AaKx}ui^v}9LSjx2N!m>$ENHKMwf35{mIhB za$Vz}f5ewkO0FtEEJh18r9|E~LY-#8@_}36)WtQ%Etl)l-Y5GeL!{b+l2-ku0jJXr zuFreF?)&|ahRlx1a|>yIALyG#FH!8ijg~4?dCQeQt|-YYtA+1Gv~m-ey4}IvM-)`p zbza|qe(_x3jpW_VU+Ih2+DQsb1Xp(XbWx}wf&cv%blLsQO}1!$pPJ^D%P zmiN6u1C8I_OMD~;q$hfK&WXoMB8Ik_pQszdQz$H;EL!?!U$Qu}c~k~TLiLPDIq1m} z5R77p1nsmL0nhhm}lO>ib;JYHsdjSj$InMX@RRf+*L6Y^-^ZzQr$0A z65)$Qh*lXWZ)eau6HVyGCW{hOCAju2`1koIN*ZoH6<04V^K1%uP#no$*gsUa@!ryo ztKutxaWTB`rnJEhMEk_~J=@Nm!a5^PH)~a-~NJ=m9 zTyS(rt9mvfLe`g)+as4an#pJq_ZsMK8M;;grcAM-z{6cL`nNo+5kF1KH!}{?wA^BO z{EKKhD}ea?A|c37M$iw>eXrOtP?jkBX<%nm2|nIP-dKeGnIS6?abA06rHV|oaehQ5)6x#Aqk|j3cl-MogYQJ z7=S-$sJ#2YN~@D#=_58>&Cy7M);dop!EmPA@Oe3w(BX{%x-sX03po z_3q6XDMz-zv9V$tg@b{5gC6YT^Lx|chizZJVY?pX)Bi6@@RWw;@FtDy@*Wx_L{L}t z_DUfwO{Ms;|4!k1egcnL^`<9-#af4}zcGtT1sQ6}ZE0<>1ORXOBSQne!S2v{94(-^ z$S3uYn9s*6XS_ zzg9}9&o!^AogOWDzjnnkHi+Rohc4vLo7sfhgnxN$3BoZi(-}okEt|25KA%R{z8vXm zb-6<7BWF;*83%J_X-QTaf~2bjY5j=g=2$2qjvoMGyc>lKQh zZ2_d3gip)Q>fHvT23F;#Hf%REaPkIIbP6KD;D#J(sIm1E=NZASj}walDj1fCLA%l` zAC;cKw}S$S%V!A2%3)qCq}oKO2=?4_0yJW^)K&t6F`wejs;5dlE#ichy& zapweYSfjLe#&N567iG`x;q!SXw{}jPM;j(^7I}IT$)5EiJGh?jYTJjYX5kkT^Jz8k z+4qW`2P&Dv*p>zNCS68EGBCG^QDcWx5!*P7UwUdfy0@YrFG$!o-exOn_z3JhhD^;>P*raR8 z2y)1F^wPAo`sbG8Vlw(G*-S*G1#uWfPrbT@o14uweYbC~9Ikb8i2ZDKp)dj4Pv$&B zBd7|H6_mr@_q zZLJx>N3_2=zZcO*Tc`{&if4Yk}H+8q{0H0Nc@wou5~j0RIyv7ZSqr?>OR5)^%a+u}OG+Y{FSvkQ zQ;^z1>g&@V-mswj%jM3>VSxd)vQ@0|0>$2m9mMyHG2W{|f|=8prM%(TMA*|*a*@cR znIoV$BO;M9eX(G^Lt>LLUB zpY)|RUe0g4pnrK=wN=TM%Z1SPDt!=rtm@Df9)0&C6}!T~u0(?QK&?ZEPSTIH=Bsu66_u140vPsrODU$t&Yq4Y|LJkF!0 zaOC+l%T&(|P2C`*vL)ao@!3mupqrsN{P@d5Lbtl5*14usE9i|o6?byxo`4I7#Gdg1H-C1_>~=jR3dHYo&dM+i(Yg`l5ca4{Fw% zb&Z)IM&1pfcuh6l*?mXekYkNF8iWQ*7F-ReVl6yX2XG5{AR3n(LFDd!m2+1cg09>| zk);)a$e{IU_)UceTlUkkhL_YRUT~M3mb<^riz_>}YhJ9w{BHJGlMI5guVc&Su{?*5mvuH*r#q07)G`p36I|2tHw zORQH8V2!#sKrXZjKQL#U*KGUzuA!UT5^@$FaO|BO;>-7t!L#ZzE4d~lVB}`EPwWS~=R{Sdwx` zr&3i-C?H;XByxOQlLA$dGj*H>2dm&hVEU@*QfIWDi*TMX>n(*DG3hLUAl@% z!)Q|eMlrMI(tQO~0?Rk|SgxR#T92aFPC_}T3#;-y^K@oj@3reBlVtr^JkBo>@GYz& zC?5P33nqDJaCh%yrno*&!BMwo(#9h50t+w!x9ju19=I{W71!P%5|V z7O(DS-#@2r`1ei1YVDsGtHc#vGOoO_VC0M5n_sbQ5(z7-uDhtar#W{MwDxgkT?ZAO z;P(c$$YK2%6PbjtDApRqUl4GY=F2_j?DcsEPsfK{mM&LzXi(o?-1Z$4(VSSE;YPMT zsxjXI`7B(C0r?M~@_D|M*hO^~sHjCwL7j&3t0LKjB=cQ%O2FTBCb7=dzYM6VweN!A89y6ltSZu|B5tR z2R`X->?{7*w@Ue`Cv~wge|7g+7owb=q~n9_ut}e?%m-bvw(&)ntvR;xzQ6L))}ZGR z#8g#4QYG1U|5RT04x!fYO{cWOg;q z3y=}(KhsE-^o__lmnf>!rYQYzo!sh`YQ0sAIyQEfI04UOEJ-g^JnD-=%Czod&S81> zFYS&yIqdkHZvYbX&9MfvXLvyHagQ7j(#ptBB_&XiXo}DRx=}7fKoX^zddDw+-CYLV z%qT>L*G1Yj{S0n3I}Yv`{^E5RKxuPOQ~BZ>O7y7;6qc2cGdBx^CD?aXU-r=2i2L0G zEYh?ZiUw^U!8ncqdwo+fws{1T*<-L+}WBA$YNVIniQBl;M1vH+%p_wk0n zf+^I}-f{;oxCYZSn!l1_zOvM4!CIn~ic=s{i!LXCN$I6SkXfLpWpDzK&znK>98@f# z+T6TA5)FqZT}!K2NV9S+xe6BL1B(o9xao5sRk-zN-Ie(xxMS>Si;w&qY9$sVRkgld z^Brva<5w<7apY=|y9~NJys=g@e9sxfkVRCJ| z3&c6b)6J(d^qf`O=Is~LZw9XY%Deq!kBz=0hp6f&M~O1xHgu z`Jc~!ttG7bc!Cl4Df2>YDE9=4Bfedvh<+cWjl#cqWa?2@Cw)}MVKNlVE9J^O)DJF) z-Jaf~Hc%_CxRvCX5StjyZ;#3i*tO4 z+=LrO6m*t9iwBGrJ?63(HZ0z(m<7#~7yPz+X6ljE^vyYeAaAvhpSFOhF4dD;DrlgA zE5uOLE$QXIr7vaV-(t&KW1?qHflCQ_`>n)!-Ja5kaXT4`7lV5j@`_1S)<)Dd>B9m3 zmmi;0P>hwNRdLzw7VNV-_U@h_L(!+Ar3EY7J8<{TaLT=@fs@XX^!2{oDwX)sBt(#P z{lyTxvU{5%V51UN3_D<38UnkE(Y7OfyUdEgQN2WW42=Z-on&RL{8y|fPUS`3gEW_= z({c^tB7M-j_S)-NbMA4WNg*oWHX0>L*HxXf-rwel+_uR|IZ9&<&?h4Gwb9qn~t$E)so+{8lv$ zouSjZ9A$F^fZ4L2L`s8M9}j4aul}Umm7m#k1O2|L9gkI3 z_0mUsBJ;YVgEf-6rpWR(Y@mKhO{wx1Ls6+5c@BE_skWzS5d>Ns@AW6%2eU=IUHh0F zCePZLt9J$6D_kNN@LW=p`6p*h?ys)Ap%GLE+9r9+9kk6Jhz~rAOYk~Tof>`cS%cW! zbja~^n4$}31<07<+QBETzwyas@&dsApElSp!25h154Gf~C%iDv{@iTERyLn1BJnC{ zKl8o+lqmuZOY_+T53^}KS#FlERn5T^?w3=38|TQ!9sY5`129!I%>8)HbCfhnQz*87 zle{R&zdH2JJl@FpVW;#T5j-FjW&?ZDcTwdLF|0XZyj>+d^D#XT(W>t5jqPv_M!>KA zHnWd9KG194aTn0UfH^{UVbgsGJ5Zfl*|0nd2=)|M%~K@oJe)MY&Qz3+Lt?TS_*5J; zIyqwL!W5PM-6(WSe_!1Y?{c+FAL#BW4`z_5i8Zgi&vsNHwcQq^HSsYoSh44v*E@on zDJV1f64%?Fx1k2UZo0#GQs#K`ez)mu5SY_vt4^Lm5*Oo4k(J1i-v`?SV;3G*M*SOG z^FR7)$&lUi?MJn$p#5TR805A7x%pDsVDCY^~CXkqKxR#vMWp8!B_4k86!nDbi7 z(oEz(p^9GmzY<@*Rsi(O5+a5~*SgA}iLjPI%5D0bj*5Ip`Seciy3|eJzR%Hhh97Y{ zU;eEx$Um(AFnh-jfBC^|{QLUPJ@~I78r2F03WO|ReXje~1oH}z5kAtwA)i;%+E2W0 zTVt3rpCti&tDA^{!=No%Afz0^MD(oWj(&UWLmI7rwEDm9EEC#k^Mw>>Y;0s>OHvPi z->nUevik)Hq zFLMhP{#4`tbNW(BOC7+4ciQAyPL9Pq16Bh;0>Hz3*g0Dr65y)7Etd8g2r<$FmMfh5 z%u{y0Uw1&AUe1r&ygM=X2;U7(bm0NcS+j9xfrvct7Q;)0JPg;V}Uz-1=Hu?*+Qm){rLNTmq@YsYI~bUGWP+$?e)!;tfmot5P6 zqq_(a&r{Pq0iEO0RW{_O_P z5)8YZqmlGb00;zC4ZrBLGm_^ z$-iBsLlrn%C^T4d#3m>eN>_Xn&`gYnZ>ER3Nwb@$I9gK=^-}7a6pefS;MVO}r{p_@HXvY5RTKOWge%A#k3lm?3r< z?F;VVqgJ3+nzn=05?nxt6dX~g;(oQg+EBg8xJ@1`mo!PUy!Yu+WMW0_`;gAU3r8i>r$K>V?Ib7~C^~U4rG6nUl!51V!jKTW8T&bpM zf;fKq%kPxNr$1lx867RrI=!t}TTk=LImVrX;QI1&5Da!o)PNA2I{pixhya{&Z4L2np$9;s)8el=*&WaPmHlW zy3jrGi>rM8U*|h=+F0Zmn%EF08Zo^TLN_Csr_8GP9^}#Q-xXY%L~A^x10jU7ZpY}1 zqhlA&@+rb8`P=m%##eSI!L;xLNp}u6T)p4sDnq*KI!&pGU(OWtY1TLbG@f%%(7zrp zbg~a}$Q9TDZPq5LoI#5G@;FvWvF}HRiczWRb6OEsSI6T*3DpJ_fxm@fZpKnz(Z0^5 z4egalsp+xtmdwdc%`L}j-@%+3ou7hu$z(thEVmFhktM!Y<}0 zndTn~s1q@#z)cKdx+eBxKYF1oQ;NOl+(+oR;>o&G`&SP17!R zuz)&Fn1V^9y~^^-FgetyPRB4btl&KR{e#hl_0pV0{^U-~eBHtDQ;+pw3x79ddx(@u3r{3KAB>D_X|$3bngK% zt_weODDM1-K&i)UYnf#+^U}U6&}=V2OGZkCQEB<(`X>oQK>M^v*}ram5$8K_ai0^V zRqD+xlylT%Ja^{h8^8ybT)%fe_BFPP#o3P(%X}B%t9^c@HUGZQ=zpzCMkJ2h_Sq|2 z6SowF_E-g%ISfAs)|gGF;lgYbT`kK&Cbka^4wBPm+kJuwff|m7MwYr#F4Xy@c(kX< z#py9_G==tGjtJX9Y{2U3FFEM!qDNT=(yR#i#XrEG%QC3Cgwo!&Z5F{}A#K(f{!!$r z-F-O^A0n#j+?kptgZWC9R=R9!ixPL$3rJYc8ROi2lEo6lX4ys*;~3DB?D`uey38tY zZhuRqSk{|T2X}kl$CSSY*=tQx7?b}#nj-$>x%Pg(HeA0nkbLpnAno$@ERJk52pR?o z)^#)~75)oW{_F9Gx8IGooc&pJj5hT{Nv_kVxwrbgHCZqz&f7z(`&H63Z1CN&i&Jj7 z$!R-_FMcs=7dwryDE|umOO(Kl$3@Pycol34?`;RiRa*ef26k|!U{jDJn4589GLG&~ zIDC)v;?hZ>5TjDu@N4k%n%oI7m0rVd&-G8<+VSr_r#AEDG52}AO&X&F#aXTH{;!ba z<6m;Aft$fK8hIi-ZN|18*=CIIdzW>(A7>egom{DmiR`U3?^D80Wa6|@Wy89ozIxOj zAlGc9n@+$6w_6nl)<89%lw0Xjdz!Xw$EaKw+%t~V;xy>&lh^U6$I^_c^QgIJg`?>` zf+Ttzu~QR!JT)ujsz=CP(%rE76ctIqw4IzDw5$=BtG-dvmOA6Q<JsP{5mK^^7gGV;WAm1K~bKzr;&5oK050k4a;qAq3>6Op|6GYm# zeaWWdn8yEmn|16APvnX63pfVCn+`fz5u0Jc_ctNIOBH?I3-Ub^UUT|JXJ#VS6jDZZ-(Va zQsk5@iLl_smK61jjwPEQ29GL(*)ANK_r^_fk*xXY=;Pn>DJlL6r!o6YchI$Z|bF_aP@kC=fzmfOGd^27?N0V7AuHUQ5@Sb508a z55OWjhI=#~;O+srJv5sLXvK9Hx7#3=@0toACp4~KT~JYwIB=eWxNY0tj94(f`t?5Z z`8<>BA+sN!=jt1HDUPDO4$gemiF9vbx1IW}J{F>lBu({?< z0RxV-ea(m(SlrvcsbbRAHSdjj_qc6oTX1jrJDD!FU-@VCX3NZx^)gwV+90Yq`w|~m zZ9-hq0Tz&q>$gcPBL-1$>A+jSVLo~I+Ib~y@NHlRqO9xK$2c}MiN5a_<5VCyI~XQl z?cL|=1h{H`==^0^zUc{#_pcfqg3Iw{j(~hqBB>j9*!$P9^LJkExyIdXY z;xf&?(!6shrL71-|z&5!Q6!DxR2^BTW-U2-L?>G=bK> zWvN%ef^z=@=x-?E{Y$|pyWY!zBOZ-ymYhf3J3{W#-h)!`_vzr zxD(&l=x&;IOX+;N^_ttxs-0gygr+f>_f#!}BlMMCQ53%Y|JlxemHQej_0q#cPHnvO z@2Ga*&&Nxu0%NzzP4>L0Cba4A{LDb6`t4!2o~qjmt8V!DtIF5)_Wj8UbCY=c{!W>~ zi(00G9j3+2`p=Q8vh{Utso&j??|0AKl0SQepsN1FNuT|~rmBb6To3{-H_0=4x*aZRJ`JyukKr&+GfM%FbqOx!RMLeI?y^>FqVy>n{J^ zEE!+@%tmcV{3?0+#lB$e*T+>SZz?s}>vB#1=goa}>!i&dCtq2vqyB59@J3Z& zm+EV-@HGDTV_Vk0Q}5+o5S;bDxPAHmP5;A1k!t7(C%kb_vlkE_XpN9u?FYrcP)7Lm}jTA){Wv%=5vIX z-Q=1Tzw%Pljk>e{;_o6g&>sYil^+o7`Jip zlDl_<&Z@0Zc^$GM!Y}o=?%9$My4}MtZx>;83Q@9PHpa$;G1Z|ZKJ@H^yO4{5_6$QyV76Hc@ z>$mMOo%{V~-(J5tp|;Z=Jn3`fmbo^`QgpxJ0`VQHU+))5*Sv8oJZ-RO%J$>CC1Tm6 z^!6h~G9*cbD6TU#&7X2$hs~Tj2iZecxrDj>Jr%ukQ{av{j@&%EoZmg0*SC}5@Uz{K z9zUgLpG!(yyn7ex+g&@}2~3&qu-oWV@tN2DyACo3RUT)~j?wu4S$oQVrO&>IlBDIz z1AdRT=b-WJRc$hkht6)duGl&GdjW^ZU9P{gABNm1*UR~-qk5rtTAknSqm$pxshPTZ zE|+FP-i=Sw*E3IvnCMs7ufOZ=nRU@g@9r*qduXe5Smm$t58h8K>gRqp;jMj8J)h{Q g`YSd6|1&b!RCE8B<@4(-a1S?wr>mdKI;Vst0EZQ2F#rGn literal 0 HcmV?d00001 diff --git a/ECMonitor/Resources/Images/map.png b/ECMonitor/Resources/Images/map.png new file mode 100644 index 0000000000000000000000000000000000000000..b69d90ca87b291dcee094ece3fa76d9be2b62c52 GIT binary patch literal 2368 zcmV-G3BUGPx-`bk7VRCr$Hn+fo}7+mVC|m^}g40&wbzfd+&SS`l6I;-Pwcp`(l`?BD>{zKx`}R0|JPAA;hD1Q2fr{xJl@n#Z63 z*uJZzRh7DTk@K>u)5cvoOZv8?-GN_q?7wWc!2qzmp`;5W1qe;_qpJN}N#6l}P-i<+!RyE z_O6mXmpUENR||RpVEZnTE|pa7{yD%?rb%Cod$*)G(@k`eq*nsJUWU(CBt5z46I!qd z@Wo zE(6*e7ukN6q|eMK+~a}oP66R3k{(dBpA5wDn2BZv!1k>r{Y}zsiu9mcMc5UlM+wZA7 zy0U+Sx(5KU$k343$ym_#iElVj;SElZ?QomJ^)6|9;LEe9Kpy~JA*no{e+BL^MODMF z?NYRd=eBtcZ>#Y6n@Ll?1ne+{cf1x&vTk55wE^Z%~g;yC~JPJE|bud(m|prjpvFD@E@+f{x*InN$ItCwdxvNvss zjW&5d50tmZSU=nOHj4JOfbcIm)65zWoNb3!7v5b>#{+vzQPpsUV%KM(R;{XJ$hPQo z;Ayi=5Pkas@G?msNt4Ch{;eq>gvy46f9f(q{!r2mKwNQ+WIH0s@EJ;qAnHRa1wd0S zV5-5Y1*=qdA4!o3uHESfi6go^2`CM08vyyX=$#Yjr2&-+HW|0hM#y$7K3VOtA%T2Hr9EiVFs|-xP0yL+*Yn0JgV`=chE; z&*NiH_-fVs(b?E2Rvg%eg&WVmw$P%XpE%d$*R(Sb=erZx-l94R zw@L$c0&*UqZ5Nx8Bat@<)&E8(L2fdh5l)xsw;O@6XZ*1vVEaCjevu~F6!>1(NuyuO zyI~xmt(PlmsOk;QuHFjDX=nEMs_Qd9u518|Lh}s3=8`hP>-2eZvz?Qtv6wFJhfP=B z%*oDbBcd)bzZ!1=j6&%Q!1E-Pe*Dz5^faxo9cS%~loF32#{i9wqqYy1l+)T_lePuo zduFm74pX@7HH~GjG5|T@Ibk(tk)YuW*2511#vCWxFOu}J2L8JOC(kl(+1GYKIr0O zj;byx7g>y|Pf88QbwAeu5nT;VwxhrzCr^(6BCjww*^WxpGD?kt>!p&N5`ZX4J*=4h z5+JPfLdbR$P1liH{4t`ueFmM=cCIHn7zn3p41h>n>|4xy3h?wnB}vRG5Z0YmU^T@2 zwj-xd{#)fJVCjz>r3U1T&cal(UR3q}f;E6_e1}-~h==W*c|36Q*;|k1w+Sm+OT?3F)N3rNZ{_JowLa$7YhFDAP zb`8J*k|rJ*Zbrf{LX-o6BWeKp6f-YEsFmco7qF@Zpid3YN(#G(xi*Yi<(vZ&0C0000Px+)=5M`RCr$Png^^cRTYN6KN^kLkk}KVv4hx^A|hZz6N*R?qmg1k0l@}{L_wlJ zuwVtn0*VC$5kv!aG>U?vf*M277<(5J4JyiSezNE0ymM#H%sDf2xbeM}+`POqd#}CL zzt>)Sl`YnD(t55x8vxi~0ZT@}_Rhc)fx7{BFU$V{_#^Nw;37%?T$Wf%IRdsH1MCaz z0o=PqxxWMF0q02i?ASnz3V`j00|x^yo>Jrz;J3hU%I^W?Uce4h<1PeF8xx4p0I(fp zJ~pxAUj|MuCjOVYowdCQ@C@L2z|$wj94+biF|1(}0E+ToEdu`=c&((j&ZB_s=L1Io z4=wYKmGp*rcyt*%H~_Y{1HN7s{}ph6q%U?6W_pb6`vUO;6$pDvI%g4HO>+hX!1l9% zPnE^4ko4FggtZ-Os{F&CAPfz_rNB18UxCdf{cZ>V!eau2tAMQ~-7p02!2qzm7x2j< zRLnjOZ!juX>30jmBPE?Q1oI&Q$d#2KC-?W>LkL&n6W&*@)L#QzNV>l7I)eaUdvoB& zMVM_QeS4N*wvPc49OW-`1@IH#L`gY5wPbti5-sNY?vl=5D*!~HV}a`=J#dBs33fhS z6Yx}1;xl%Z6hN9lxE6Q-@ODYBSStX06L>suiljt-tH|~}OZ1m-zW`1JehSBu0p@h?D$N%^9zNJYCWO4SWs( z-UVDMDZurjp?pBj?Z&{KlBzghMKIgX1U_AU*rh49x1A#rFz+yfR}!jof$JsRrI+?F zOhLqU%=J#dZjwGzv$HYpHvvD8^r%@v+m3Qk@_0!{*YMg2xEQ!W(nf0qfP}hFDPH`j z8lf)$cJ1Q0Z0CMI9Qd51T&wGl?H2$a0Irhsh_wR13BYTBOC;@BBXo6tpD$_m77O@b zd<1ZYr2T7nRX5Igl42>nXeb}>T;QX{qu*XqJo}^%s2o=UmxRcv1=N!5%9;+B^p+X` zz6azOoh<2T)A8%i)pzZep2Nr3Ml62w}NT&cVEx#QkDRII&R3gX(TvtkZWG~Ij z$cD0Zx^aP7 zNiigrHV6$0KoK^D%hv;GZp0V-u#cp+Z&S|x7Qk_m5(f-MV*rrScB~-DQEzj#otq&? zE5|9jUt3aN6p_IJC{|DfKKbvql2R+2n{4OoCyUIL*O+O}&3IzMC;$`?s?@eM{B2Ue zb`@d|lKa=KGbRAf2F@yr?kDNP^X!!E?UP%SIr~UDd!G4S$BqU-v4Yg>b_0F{JfW$| zQzxwL&jU{bE|8Q6a}*jIfF}Xz35MP%>2+PSu$@}p+sfEgxkVQqUB`?HK(T`N11|*r zRUBet!Ly9ttT?{AChwQ@qOQs;GHw|F+y_W@ct7B5N&Cza)b^RBJDk4a_CtldO>2%0 zK-tx_yQ5fWe@SOFocsMs3q7A-A}NKGQE4dv6cA1WV$MGYc9fKVSEzJ?(*#Xsc&?A$+}F@^2U0OVE5tg_pr4)Xx;2_OzEwZ9ZDXOg5Uh*@Wx?KCwK zD&Kq*%E!v|FP4-iGOMV(I%!+BdX@4jN!2wvTh2C)<^0|QxD1F#KUh+dlZB|f1B#%j z1ys&37LdwNynaIHg=pd!eP7a}yD;fw0k#v(C93-mu$82$Fxh2|y4{@Y6jk4QzX7tH zUg0+i!;QK;qUZ`hm6Uu<()3fdMM0>VoSA>2q%=-?(}b^RY{5+~(iMQ5=OibMwZ26p zw|yOOyQI64@=~-n+0G-XJ%JBNN};x&53rr~Q=X>Wx~ccqwn)==+gk!L)mn$S2;Yf^ zS~p5cHK{iMspY4p|I57S7;2~51Y7jG?Np~znh$L!sqzW6EL)F&?d0)!w0M@J=PWAN zGUwU8sJt{iM$&P!)}9G~?Y!7X_LkPyp^|ckuX(avRgo{3v{fGfQjkbtA{6uQb^R?1 zIoo-l`JJ-f!z863Gyf5=U6r_7kzAH?UDvUFd73l8VUpgtC;+MEq^grv)~c5uU4@w% z_vfZwLC0{n>#~U}Qdyc=Qfu@9w(|ff&r)yOb;XY3Qs_8DQeKU$knKZ(cXZ@2&#-?a z1C^9@SJ5m0@=BvM>6u58sj(|rpY62DkLYalcR2;pfvCGsjrIYQE#$69L^ z-&+iT0z&-EO-)78WdL%E0Px(yGcYrRCr$PntRBfV;IN3pJi!kwKR=Z#?mybp~KX32*T=#un zpYMIX?iY=7W1RD=6QCOb<6MDm3XJms&@F=96v$x;nAw$*&KO`UJ0$G{o~WyHkB)5%?>60r~|u zvvVYE=}~?X@cU2-Pyzq0q{AZM$-pl|CqM=K`;xwpbaDhd1^8*G1gL=jP|{*aH%mG- z0-g$dKQsbVz<(_1EZ{9Od%Sd>m{US}Q;W{MP~g#WI+g zZIX0;^!Hi72dxyK0{*)I|NKZ$X0}n%^61-a;JwxfPyzo#fPbzE$jmlKx+wZS2Y9Dd z0#v~JVP*;NY%dryyF=1tkG?>2 zwUX9EWflS>?ihtn7AHY7^OgGW5R_+d9RA@Z@L>vgUeWIZ{~A!sSL@I;h<^Od?AnkK z@&#)X;78iVW@esV^X$?bN%sQR*Hw~*0Chp`&hMQ7De6Xfd%tXK0e(y=SN1V8Pgkvw zynR3IG$~U%0?cf(q_-s<6e?Z}Jldp@us|IuX{)3oLRlAJUekI8?VlpRLP`G8 zQrKF+7p-J7vqJ*>+^Enlpb#Uuu0cDd2(UoX3sJ*20@tJlVrB;i_@hf@u1i^^Q`_m+ zFGYa)l3tD)SO=_5Y0%6L4DiR4{MP_Cq|~vyeNqJQdHP@4Nz$!AeBK^0Ml+i(X`7^D zOAc29eq_zUQUo|s(i>5<>w);j^*<0Z+dse`SNgabSeFHP2qHxQKUMiIP}rToj zwby(8_>#{m;Fg@=J(d&!W=rxXr@}S>BR*uB*}jte4DUNfY*zrc{QrB z;DR!YnN119{-n~kmB9KO;Zp^eDe0pKU^B2R1`3BIANHq|Kvw{srpne*roaqIpGE`^ z0OuCJo7q00=T9q9UJCflENe>429av;$djv^33M5-xlQn?0{C^F*|ViN3zD`tx;P>9xc*YTarD@EXj_Uu4VkzP9oN zhq*v}(Ml*XSeH}*JO$>5pW^Xiv{CpJ*aoZ`ZAGIkpCrI&8_BtRCqT}(n+oZI*ZVHt){b==z$00000NkvXXu0mjfY${$3 literal 0 HcmV?d00001 diff --git a/ECMonitor/Resources/Images/max2.png b/ECMonitor/Resources/Images/max2.png new file mode 100644 index 0000000000000000000000000000000000000000..6b4aa7f203b7a1f2a393b66bf1ae3737afe31b38 GIT binary patch literal 660 zcmV;F0&D$=P)Px%PDw;TRCr$P+uf@TQ5eVZ??Xf)l6Q&7OC%y9FE{RSbN&Dq{td^Kzrlrnz`1en zT!@H>yhNfSd235VBBGy0(%y4s@7?Tm&g|3tW-j;awVr1_vu5qJTh9cEhop1BNnlH2 zS5-BC3*3%~6IsAWi7M#=a4MybVYZFz7&HM%$AHU&wx1#G#!>)I1LtSRg$$ZTD+S;T zFxnP*G$PIpnn_jdB&j`?6@a8!z;9=O*}yMnfH}ZVXMnlD4`+aRz;|bW`M@`4fCa$U zLI6n@fg`|*s(zEFC{D-PzE_`;76M-;0pu44QMPw$l@E zEFwm_buDQz@F@@Q23S2k`BdI(D&^g&fNRbGhk>ik07roo*e`8OjVRj`uV+#^V8{>=zT6>LVpkOfk2VDkv13J!Sylq!`i$~7ASHpSB2 u0Bp+T3jwkZU0#^z3h)o1_OHwo0sH}(f^B2}VT+^y0000-xb86T^8O6+d_a9<;Ko-Vt*ro~MCh0n_*>?z xzq7WF=_#{HeqHbH&ujt?42&!S4iAv{4&s_ye`8++Yk~4h z%P)=Ex68N5|L1*RvSyVqW4QL#4L`fzZl6DICsSf{&US9bw-ehqog8i)y7kt{p?XPT zlYqds4Q0CpF34rhP+)1%U2|8DWsAF%8V6${cQ$_I4=R}UF?`z~b<}F?hQA KxvXPx(X-PyuRCr$PnM=raQxwO4-ptC=h=EhKJwpEKFzyLJt6bDF)_P7L))%1K%tLn)Sn*vPF;kxv;oAjMwvuVI&AX zOAsbY4*>otMx9+zRS@)|@vn!MNqF3~VZ7^o##eN+5tTio~45;xX)#V~0iy#P=-ze7|I^z$>He7`?GlN<~%ya1ZceX@?(K z0f57gO_RA`S$X_l0btFKAtvk-l#t7S&(|zv<_$yU^t9hZ8!d8NjtVl`k)tK+B zpCfK;aJ``y0KO+YHZ-`{5WP@(f~?aIz`el7m7*~Q54F{kK~Kc z5Sk4|Jpj-+&;K%2^E~f;W7=$+C3lDXx?9mcORP zt7tC(e6}8w>V`vI3Wt6e3DD}bQ39pC&#c2{W3T58Jpovz*bo45t=WO+I>>Ar0KFL% zL5llvQZz&kM79Nhr$=^*hDR2Yr1w^p$!6ee3xH+@OnuM{z*GcxegDjWUH9Nr{bvSD zMR3>m&kWdg4^Gv8X24VgcYXiNfL-_CRQ+cLOhs_l_sP)Px+qDe$SRCr$PTLq}5MHD?pL{uykMMX>uY_QhEz{0>>6$4`pY+b=bSL{~IHP#Lc z>{u6dZ7^3+!9Yb&5m8VP#o)+!JKsA0y!q;nx4Qc-JQntwxifR-&h4KV5J@@v4&x0H%^WyGK6R=^O-8^OW=gfX(~F|3i|i_lZ{rn?VAger}lLK=wKira=Nm0f;4_ z?F~xm0I==+rqVZJ643SlqX3LbK=)5T(((Z2Bl&*aQ>c9cl5ETG2k-!Zr%B#g$26w| zN8$-c+6KVs05${g9e^W9K2o*cN&qA+0N}O6nRy7nnIu1|V%+N+PUi#IgygHaH6<+w z;0ypKCEq^;uo20h%l29afW5g1naRHcxG?9PNjeOG|JLcJ6$rd;18^+KUkctqLazs~ zNXa25RC$r507zOD!0P}k1!eRmfCDWJlGX%p2>^>>O07LPN$&z!yJTVC^y2`0@GWbe zq;G%2GKsAM;AQ}aM9kj+uznfJC6eOdZv!}$o#E}5jD&aXyCrNq~z|PV5$s~vEcNhSY zEcO=vn6@D4u(X3D?F---02_o4&s!UlwC?CDNwShV*QPCDY^!u0N$ZRm6ii}zA8Zi(C9MqLWdMst{5#Cz3;;^Z-guIi4`Op8#WQ54Vqd1iEXDw&X73#UV@Uov zQkxybI+ErB@D_kIBK|YX;t&8OW^XT&jsf~cl9mIo6#y$wo2n%O^KSus1K@4|&yoD1 zZ;MVppY_J=3C|(3SOAcky~jz$CZwnRNU~d8xX4X-*>|uHVPB#zBJL_|r&U(B<5YX_7Xz)kt`aGXVDh*eCj6m-iZyclNq)MgeuhvND)y z%23jN!Dorx`KboL3Zf%&3ry``Tut)Dri;YmqC7%6-KN!En$45{Ouile+1p$=v))*e z&PTK+NgD$=y2O2-W&j*ZU+JhW!~HKy1At3Oe%*BS@a7F{OtvOh2T;Gv@shMG0E>Js z)>yZVPLN~;dprO;adT$Yn*?BdYz8eNX98F;GuRt82-h|NLDIya^y1;`khE!SM45z$ zm16AGmGY5vR5-X(V=4KG+jV}-A9AknMHzp)U{d=YC9MP?b%~wC@a;DyNhbhEov@Wj zep1Cmk|nt;ZFe%si{trK;qavZ(sI;wB#mwr`r|Dv(SRu=b4ij)FhcM%4Zu>-z>`Q` zRGRl4i1#L_6*~YRT4V08-g+3wa0H;a`VA2igMZ3q3q^=W7oIX za94>DNehKamVuZ%BM}p3i-d?Ix9hp2w@U)T5CFMKP(M>*MT12*maywYNQq_nAnA1& zH#;Rot>EKs)9Fc3BQ=6)aR*5|h0<0oE&hb-{&g{bTTzmT6-^0<(=SyP&gjuRM8qVa*^Cl4h`Qm68oa+j!ERRca#>Nd3 zE?2)m(ixe7Qqyw0B=-`zZ>gZ_@^}EDQG9kYMyE2>i062l#b$?I_UdR%k2VkBI zu=fGDh@_LK1prrtHlE_YnzhIT^var~TpT&aO%n}ocO)C7T*Pq*@BNJlZuT6}KASg5 z1rXY_$<^V}O*m}#)d$Lz?W)#uC~gVdH5$~eO)db?q*2mCA0Rnak~iz8k)t0;mUVJw zCsZ^_{t-%f4tWRHC>cN~YnAoquiTp(7cC_%?H1ak+B|f?UYn%@O4cb8;}YAzT4e(O zIkV_b*OPSLUfJ#0?iQ8begUvCNjGi}qk%O`2N2wn=H#S(_g6xb^pkauzTe&AO(ZC3 zmv=h-xS|MJw%^*{3j`3{VDuA7i+v-S82~ieSTd*)0NpSi1)#^@{PYT7(@PtbfTl>b z9hd3wXv?Bwd=n+u%>pAP0o`map7VbMV7CA9^#9`L^Zx+LEZw`Q`Xk{00000Px$<4Ht8RA@u(Sv^j}FckKC*^m%x?5ZmRhz+R{7l56Oi5oC*fEKZ(5@O{BT!D#^ zc0k>@Kr8zOovJ(((Ns>FG)e7{M0H2U@8|ozXTK*GSjT_R@%)(s(6oY10jGc=1BX*W zQpzJC#L|#3>*iYuD5cJb=!G$MZ9STSLjahrR;!18zdzO8Bmm6k^MU7i6N5Oln*zW& z=lmxQlmMWVnh?>T_AJZ-dqHa*2ztHV ztSpdL0az!!1b~2u#${$HYXJ6XWN8Ibtj`cJC@QN)53vpa07hXL-U7gd4kRioM10og z8U1^!0C3Kq7K_C_BEB-lPP9b7g%FoHmq4X)#%d!=E3gLeh=@bR*zsln1Nh>cU$q`U z7>0KMaN5Zd%3$|@53!9t(C9U413>2*Sp>Q@qr^Uqtn9e3YhR;%zybIx!R8v7Q{dng zD0Px%b4f%&RA@u(nm>yaK@i1%PmMGa{0s($YGiaEieTzSYGSOI8hL&KMMF(gR8aiG zDIzLz;3bN1i3lbpVj_Zx8mT3H%s_AN-uCp|jJGq>4Z907wcYjJR8?2?lqiOo9Rtn* zyMgWH^`8Cy1U>+_C0%mZ(mlODas<2u_V*NE4A!b6 z;0LfHkbDU&NxBlwU}olDleFeWn>EbrH?Y-Pf19K~zCLDl2sjR$2=x5r2p9td+>~^3 zJwRO~zzg&*fP-TXa0&s3B|Yyc0jGh>GYN>9beAol*zv|)I2BN;eA}_1N(>0%K_(!( zfXBeZE|6nDWM9uQpo57}4uT#76Be9m(y8*D+Xhn=js;CG4c!ZTlJq@wjal+$=JNh6 zb?2N`3na~zK)^e|k#Nm@B)v&mXdPiQ`&*uC)S2&p5)c+$*9#(6>L~76R%Zz)G2AMM zSgu1v<1P?0>AFF1O4S+Sy;~6BO4iDwGqpek0!q*i3nHFYVWE!%l(-)OXC!@&>;lmf zp}9ze5-h;icUjWHkO{aaX*5&<9uzL{WoQH}0aqnG8Cnp$Uqt_BRe*bmP_scWWpO7P z%NsmJ!%VQeb*BLSDs^oq-*_UFs>B8exKRLqow{bQt#u|9eh=&!axruO_$cYyMxJ>1 z-^N`aX3}+QfhIu*F3@Zc%mn09;n}advkT;7@$NN9%tbkzcY&4|=*)>wOZZ(a&}<$6 z47){Uh)q&ofn9-#4ysMgy{bCZmXFT)ylah;M}fz4u4r58jdHWJcVx8>aE;SPfSqko fzRB}Ww9Eek2bJ&D5iz1+00000NkvXXu0mjf!-y>m literal 0 HcmV?d00001 diff --git a/ECMonitor/Resources/Images/top.png b/ECMonitor/Resources/Images/top.png new file mode 100644 index 0000000000000000000000000000000000000000..aa6e37b4c71591d8512ffe7e6a54423382d0fe4a GIT binary patch literal 3046 zcmZ{mXHXN`7Df+EdXW~2NE5C~ljcQ~E)tX)I*2ssghYDif)qs{NRui}DF#GDh)4hh zq=c@7E*-=Gp$L)wxNqjZ@y}Z``+T$K%$jp%|Jsj@40M;EKnm$AW5!*B1@Q96Fy*(zL!JL!pY%bKSEoztn znioG;a1raO@g&|l!R)Tmy5MB#`>;@Sk02+5y<0LIs8URjVCRyg>j;fE<>-z}_)?65U`VZUKZ+ zz>Em{G9v{V20EopJ2^oo52!YIcb@^I0pNuS)f530%wYAGt||=}El-_#L&jjC6rcs4-kW)6NS+g$KEM~awJ|d%Jonk_t)>Iy5}OPC zf=F&=jwlConM$vZ2>`ym!B59ZYUt&qh1n&SWiQgN_M&6Y4TOlQ@aFV!<5Nm%z-G`- z8n;_qBv2tcD60LNJbxOvj)9SJP0X#~m>dM@g3k z=M>)FmE?M|Y55pyB%>oKM6FpKqwu~+*D_}&~k%K^UOlzIfg=>3=Lk>7Ufau_tjK<1!uEo*=j$@ zDlsq5u-|=1L_*Hk^W=Z#X^f?(*65_;a1d6GKkJw@D$+*>$x5OYaeyj3i!2dZiRUyH zY47wYp)A+*NU?>AZb|uYUQ4{IzK@>h6q0*#_@q%sHtk`JG1WIpfAtS#f_zWD6!;GM zDX`i`W)yi2^3|SKiL5Is9lZ0y-w%X6NpgxDlx1;wI_7ZqX`HtGV@p2q4sNGKOGWc! zMJEBvzXQ1VTk;)9bQdTSA~{y+?mc4r>=lJZ>sabpYL$ttiq^6>&{@z&Ka&0Ymq==v zVXas&`(9g+qw-s{c(y6}17e6f3fv2fU>LNBm%JzFqf5Eetr=`!kiLMNb7B_<`R zLu~H3dg4ShyzBb{T}>oLC^MxV&5AaBcF@(jP|vB{9zUl?UvvRhlE!{p(OGSg`sE8b z&8&h7a1 z@ThdD46poqJb1im+;PokjeCtaPVz_Qspm=N?I^>Q$^P^WR~w8QVj3p=`+ur_bt0lx z=y$qzSXQP6b#~ytigzGCNd(fM;NMpi=&qu9y=0Y~HhR!bKRlniV+S`L&6b_TyEUY= zxfKuU7XO76UypO0R}6xvx?m9J95D*tohLnSI5@h?O_a2iv@bMW>P_>^c4-)_{p#1# z(6B7;+&5;la*ueZ&N)g?P0GE^rdt7yKGxkNE*L3$d+>t zdgk*=b4ovNqnBmw1>Cc`cYr%@_%2sGpKt}YR=S=29S z6=@P_KAw?bQsvTQqGz@e^hrguK(_ezoa856C9?;)y6N(`toiq^^oZ-7C!9@+?Wdb& z3rD=#(_87Oql=%>@ruU^y7Oj1_QE(XU6!km{%Krm;`hLhEJ?sDSRJ_Hk~WjepMJPL z;Zf%k;EM6^f_XWu=3pbS71)PCalf@UGuiz(F3_(%UT7O_Q+Yh^OS$ZoEuXuPZJOcd zRJAx+^Z~N8(udCvykVtig$`AUdCs0$qqZ0=q-i9>W4KuAtuMf_^(ZICP`jxpvB>ys zJ@)pEXG?kJ>AOl(*Tb~--C_-I`G1k8H-t%`Qh1+z5Z%@{ze)Ix=^uMACUq?>H!Zgq z#_XO^D=~7V{$jnMi-bff^8#uK-p!vH*G*m!-Sgd^;PQ&m8!WDcRT;5x>&cW!1ljP| z1Yw~#sP#AbX_w=ld!md{+@UyhwGp=Z-6%H5YI8=US^FcmXo3kOP+Ha&)^I<_ePbvL z?}o3*I5L{Egqdx5peDDHV9`S_UusE2Stz8Jr*+}ItA1I3aN=@Ezi&qJ$Q-sYkGKp; zx5FSYWmUhcZ(*0_EDY?1Lw8W{@$v7s>$}&8P+|$u8$-5gesde=p)ouVyTM$^znQqm zZwJ5q-LEj%V<)M%wzs>NO3^`a&8DXgGqF{8wRkr;FTxgYepLCozG+N+oX|WK7_!Y0 zEx>jCJ1K3o@x4Tlg(prsY{z?OJ!&eM&yl~Oc`1Afs}pG0o}V1@GK6+ln?&^RLwHTT zX>P8ehr_NWo`)(U7jq&J<2h^Df$x#lmsvh*EPncH`c-JiywQ)szShas-s!A}`W-qV z6eTgF-0Y8$Dux%R6yiufo)+f`+!N4gsy_)Q$<90ZcPJ)X!RN35Hh)SI=yKJoe>>1)KkN6WD9$nOzp+ZQMt>B}mAy|?((IjmU2&hLQT zHAo=Cy56L1aB|R_!=~}0pS1g|KO<_7-#WLzXMWqa*!Q0$41+O`%WFD1BPVP<CC*k;K|Ic$l{P(pN#UXL) z|0+1rO~S1DQt;^~>x21Q($dG7C-VY*5TiZI^(nDO(S_slcrea<<*_c`Z1 z=e&bNHuyI#mhi5kvm=SR6Hy2l2bKV_%S$za$fK(fg8^^MY{ja9H3qCPV2uH53|M2p z8UxlCu*SgeF|ajRMHa>h{*@pYOawV#71#@of$zW%-~=cI#aBV{l!F>@2GoNJPz{QJ z_}T|ngV|sNkg|P27hnf0-DY$C{ZV!_xD{lBb>J}g9DEN7KqY7Z+)mEp{3>t?oCKoF z7vO8~F?b8?0vo{7;2|LO>I*!8Eil)Pj<7qx|1dBMECXA?e}ERWx9yjoFPci6y$)7` zyTNo22f~2Fg(pyePQVd#1+Ksicmc^H*RD6{33`BzjwA8s4Q>Y#7oP%&h0EL0p0vb+ z1{?&B0_lh2fn0AXwHO5?dJ5#-AS88|Kou;JSsh+fRh9_-L_M{z6>`8W@H8Ymb(rNj$ zXxs)$9k7O`^i81g!8x>Ij58h1_As2gJ*5ZbCk0-!?&j)q6?+W6F9Gep$o;7wP4rS6W|G`;U}T9+`CcBcB$ds+6hZH7PPCtFM>nOC$|n_Bo-1X`R^yq=_@ z{TV8HCDEJi8$O!i{J*D2-%<*3si1KG^E7SJMas!&q^vX}nQ3~OlU7SJCYRCpAsPyG z`x&|{B7emL)Xna%6w;L`$f=H!LpRadNh4`XQZIu>EnSxmu$_R9_UQ9(oFCOvJ@OGp zZ_H3(+>qE&k=osXI?-Ob$(t#%M=6E57SheVil9R|EtpkFbJMOQ8TQNd@pD;DUXJ%u zw7ZVNx)qYjsh-qbwDi)n2=rI4Kg4WHb-E6l%)zf$AJMjtxiYsw8_{J-KNWeqsPHtP zGX=Z7N`rhaQFMesb^qWz2PlO~oc=FO~Bnq;`Fk26n$h zQGP{(BfJV%jf^P$Xy)w|+QnIwT4~rWQ52hQakLW%Od<)tVM?WEdcVPCq9m!TvVz^NoN1Gt%1f`re_}uKzn`8TyaN@*r zoTG7kAu$h&;O{#tiCRbYgg9HBXJ#@V#@ZIQQPu zy!Ht#uUk{cJM-&#-=1^4^_8=nw_3~3tkgogYG_ocpBPu9za{DnN2}_}LR@|u8?HeA zaw(;LiV}KpS|s|H#m1lJ?UT9OJ>Wx73R=@@8@_i2&3za?AIehE+*m(yu@5I#`&4D9 z^7Lmhed_qO(IvW!#0uT=h1I<7X)SNtT+avIKF9CxZ{YXe1vrXM`Os-KVrp?#6{k%t zZ=4iYrVsNkVzv9JGXuR&3<+|%L_>W)$9%CD?MU%yu@2_y)w!(7p!#{P+bv z@k=8Y7BuqDKVIVFA73zN^gQC|v1K*9Fr!jG`Ia(Ws9%x3xAG*by)SGY()$O@dwSEJ zG`IhUHqFa)ga%$Y<+xd`7G1GdQ03 z^%B3i<4S!d4lC2e^eNUWU6~UHY}o(Ve4^K;hXkVxxxY*YvRAhlEC=a8?7e|pt7~b` zjmjg}(hh41+k=@NHtQ1R+QbB$Kj`OL!qMtt-L!EUos7*-Aue8AU&kLHe!l+lB9|03 za)n06rw~hD9KXo>_nzatHClf1p;}%v`^xx<>iOl-ElFxq{77sEfjA%2%e2RE59{x#T_4@M zm`4vP<-`f)y8Gr;W4>b?qyPTG8Q$}TQ76%5Q(m3n9xr3~B8*is_QXY&aJYXlhq!;Y zG1}`hM<1*$?v0y{80tdX%(pKEZLbH-H8On`{WRc3AbDk;V^Lj9{y)V0Flm4a>L^HI z7f<~ar#nS@6+S$;Z%Kp9e=??5@O|^DaDO^&xX;U+XB}9NKDBar4L^AIXrLn+#JVsvLiRlsnq1!DG>7?74|z?ZIj%4O?q7Icm#PTn%ZE=;}!bY z$5Vt`4TZU!vhD9tI4mZxV0U~}-HD`0HJqJV&dV?tS~|Cy|AJV#JG+YS$LFjWl{|G! zscua4`SK{$S36YB8%M-+KTitBQP8FfboV0%3ZP9_*XLLp^b!3ofMu4{MtrxVkF1*_ zl!X-O+Ca+A_XG!f?3_C+xNhq$14=#~6}$<_7_iuGY~>l|;0Nvu}L$61B-d#mwtE9!C)TrF-|`hLD8HEKX(J8lSx8c4O=sEg@&y z$7rDMaO@YR(&JYnB2rU`y}LwxRd4BpzJp-3)w&7W-#8 z(4HiFJoB=Frrsp^Tk$E+T^<9Ufws2aT>dlgwHA1S*2?}fekW_Xo?sr3-vU$vbM0)a z{WN^N1V(~CW82NusT=Am&o1u6Rrm`zRGXRO#2dTZFfug z>)=nGBWwmUfIO?Q#QIaTQ34gX2@C;oKw>`{gadgF76@cNDx!&49Hmds1WUmS;BD|V zr~r+irFON|CVmQm#M>e8EJy@$e|7=QuaPA_cR@McK=erlxnLvM4L$`0pa!(HZP%J# z#^YbXH()==2dh9PkZTYC9DpU-e!V^wsE;q`2L^-NKn_>{9srL6*{9wFwu4<@XA8(Y z^)>K3kaL!U#b7oV4@~={a(&!^Ex6t~x9L3V-+x*E{>>T#))=tHfHelJF<^}WYYbRp zpjiyyqgV|8SAeC{D1{u2Wfe%;#*l85WK;SGQgKc7LDErbgyVT2NlDi>nI(P1nA>2_ zg$q+2Qx?fXgda4>%aD#UB#r46Oe;)wZlnNXI+wWCP%!czAub?0qrH|^95ECDyPg7m zPxBENY;ZCTtd}%eAZbRe@t-#s)5vAhNO1-`e8TEzO51U+oiSaDs^-dX$xx!+=*5uc zqXx&uG^48WLLR)J#_#DPm!+lXraZ{rHh*Xi0@7S literal 0 HcmV?d00001 diff --git a/ECMonitor/Resources/Images/报警.png b/ECMonitor/Resources/Images/报警.png new file mode 100644 index 0000000000000000000000000000000000000000..2cdedf2e174171814fb01c860db4c4007137d510 GIT binary patch literal 7366 zcmV;%9695OP)Py6fJsC_RCr$PT?v#NRn`7(_0;PmfZ_rgGF_cOlCDmG{0J)RZvq4mAs{FM%JK)4 zRZxs-yAA_0N0s1aFYQ$#@aO_6<5mP}Vq0;H=a5e^&y1(L3wuKS-FGGP*Csj9B( ze%1ZzoE$i3?)ts^b#+z0cP~L*3IT<{kO+{%Mj@aO7#aaZ5LF!tfng9(1d*gXiiSAd zWlYlun=`N>n4cx!C1&jov!`;mBw@B)7>XcGUh<{cF=JP{)$2eseV7~l<)&RZs>z|Y zrF%t?CNBG8Lrkdwi~NK@%$MZK)$jU|RWi{bpa>EjmVqq2Iv%4OS3JYORKJP@J|t&X zul6giq0;gq%QcvD|-*+44e_vLZ#xY zJMDG67gSHlheJRSBphyaYgvZ44Zxm34H5Gfa^>pNLG_e;I0O_y!r@l8mX*;T8vf1I z;4av8XXJZ&|5|qd%78Bf6hVB!6upolNc5P-VNnqz4pe>ER0Qz>k^~}(AWd2XMUW-| zAJDBLNI<}%5?2I?3dwlwD1yX`?~v9NL7D`7K(~q@0Rf9jToEKHB;&P{Xo3{79ouTG z&17bqH0`zCbt(@`?Sd08WYJh}2ZD5E_0OeTn#4q(A$EIvS-W>?Pi09o2sXw_A_-D7 z^n+Z`j|rGK5GDc&F5}vK**Uv0@P+r%$^?0S+~`iB)s82^aR9_Xl$h~E2jQ?uw$l|J zy~b%Kjv&QM`UECEe>jK;^y{2m`A*|t4DP8_3DUQHAH8>jvH4J_5U@xC_Dcdu5=D?g zR_sfRKl&<1!dYg?In9@B6NFlkAkS#5n|<>=#BRce{M4_c6cn&5%nBL9EX7ZqWFyKp-*h zGRw~Hfpi)q+-d|V82Xk3dK`f67eWHg$=S}Se&w4Xml%Q+4gFvST@@500)HoGSAQK; zFK+o(BZ!p|zX##KAh4Ok38K?z*#r?poXo&EfdOK4*Vx%+Y7hP$ST{z6Rw76- zE56E%KZStnUek7V4WZXCmE;g4)3F1S_HYRY(+cSz3bjNL#7np+li!4YeZhQ#GY({}a`soPMs#1UlGv&bI+d@U4GjML1r zb5jh1e!4Ku_>W)G6nk}Dbf_(76u0IISj8H%_A8nSamxa=8L#3jTzJkG_&eR34Bk@b*9O-Pb*|Dv8q|wju~Jr)X@P3uFBiap|J)Slkvn8#KWav zh${&QwE)aKKVPo?ASQfU#%$5h?_ZVeXVSaYh<(fzrz_y{rDl)wf*+vTUFL)RS9A=(+mD0=F)zrKtH+Kc zmxRB!96>zLyA1s@4RqvS3&6k~DQFi?wpZStgawi<#%?2hoD24ff6`#F5m2sZ*k$vj zj(7Sq@mEU{WRW4JrhxkZj2*B-FM@EcS#o}#_*H9i0xuZ&gkbRl5WKnVA6qM&lT6$B zd6Pqo%zaA|#6zc$5vLNtJNMx|XUto!ITy}Yij|QerwpMmE-YE^xno=VNztQ1L*&6 z|NrX@tk8(xXO~uh`W|}w{t@t&OI!q_2$zeaI?~pJrSHAgfHd0Dg(64{%ih(Qo}`hx zGlOOl^$n8QBnCIDO%m`914RITBWU*sZRMjA)Em13BmlLAb30xNVZ{ENYbBr1}|_AcahN7b5-^fP)4k_#81^t5qx4PI?V*BsK9MaW9^T zbgiP#29bBH_X|OEWtJu2FJLUpm7PD!9A}iVd8bcZrmr*lxMx^^fsbe@rbs8^p62m?~3j(Z<3LXc{e?ywtfq zTD$UCD~!XZv<`6s7$-0=YKX|5tJG3^O`^nYLH+w2R zwwU{|*nF9;?3l5d+dG>G9x;L+HEn(hVIz19#0$+*^|xUS$f#E^^dpGKBgf>)x1t{*$f{|j&xBm=x4<|bE1ZkWH}T()HkzVV=s?((~&tXlL=zW>J*zp!+8L938JTDKSaPAq?)sxP`$FE z!qMwA?~;2wgS_+czJBly;QMCNcKRlm4QjZaF5V*tL4ODM64Q2W8d)}43GXYF3!F!w z&qQmv9j);LH5aEgdX(BTTS8y=&Gh%!!Gl|2sk5W zJ7@Om4|!`UZiG*Bhw$1)M*7`ut-#+0aB;OawP3U5E6QP$8c9z*Z;XUcoqs3%*ep3e zt<%bo>V<5_Hsor@f^cA5K33f=)*#1_caVWW6td|#V0TW;UrQ_|UXU+U!%d4C1~n@q z7KVNw9_MPbm~8_6DrZ-Yh%zm2%$}>&jwQf*&R91}+XHPe<4Kn=f9fD#`+Ys!bQ_~K zcBwW8Oh?5QB;lL+l5<^@_KR8Z1T(%ErA=jPSOg;Pl5ZLMg#aBN6Yj4u(fK!)D)Y|( z+`)YKB1petmyw>SfxXGHk-h=)x*g_i$8SGfUszd&co)DrzJ!%fWC%n(i*WI{(Vewa z?Vt7j@V9n?1iskSQuFgmS1uhc`9K8eH`HzDM=)p(0~4b_mf-FXLcsR;tJMEh>(#cNx;&cBhnA84HNb}l0YJ&dhk#48$COg#jwn174gC-X z{Vs&9_rN&k-|WoaHbhI*x(TxS`6MIu*9aa_{>N_;1e}tyok(t-mLX0AaIRn9O0F>o zFuB`C^;?%^h3>M!`t$L0})V*7-pV+Pukj#q022*A+QIylA|A zGBu6og7JStMaL1n)?Kx?>Q41gURNE&t32R*MZJzJLtMR9kA#6HmooV5yj=}EhHt32 zVj)Psv&EV8E-qm%ga3D608F?cUvdtp7p!t8M!!e;ogkWCudM{=duMCB1{#UH7<_Tw zu6ny}>$sxECx1SFkYt$4lZ>8p(yG6tkbz>#ShhMw&qd;^TfQ=YO%879R6MoSOUn7ZV_gtxRS3T>$q%%FSSL5r5adzBiQyNB)en7naHT9lK zvoh&fAilL8kdva@*ENQ53W%OgO3cH>$-ol5H?`x$7&oUziBrP~5=HQqk@n7%j5uvI z3SZ5((c#jhUX8t1=YME+EYbPri%h#3*Z!*L!mR5T@JPe(Z>*R}pTNZD``1XWWdF&% z?reIF%j}(kY@LhT9nDhjL$W87s5^+29W?>$dY#G#POp_6E z{LLbcBojlBZX-R@1>YM72ol;{{ps3w2KxPX1ZzOfa{l-m)p5HW_aIU(pc1W8jb$#$d42ZZvIYe_3*t zk|2ewem*fp)|pQhum{G$L_f@zD&8r`RP4$^cF*F))5>mYu^!vTb#y zcZ0@tH8&W^hs1whX4+1t4DrcF5JQ|pfY%he6|ZHr6^=Re4S1s&hP|vzU#lc3H}H)V zdlY|TzSK2-2eCnitpBbvB*a1;=lJEY5apQ)A8d-Nvuoq{$6-fUMCu$VCuCcI=Xv z*C;M13|`Zn%T2oy+vssW0m(*?8UW2t;0chafO&hfTzw{Jti_CYoC#Y8)oVTZ=D*33 zh9G@YsfgkSLdCh0fIB@Ox9Qpf9V-;_%tf{1I9Jmwg{W2WuY zJ%!dXgtrxbou*WSgic-JEvJ;K&owJFc?gmbcY^TcW&sg_-~CM6se6u~+N8MlO1Rrc zF)}>t`btC){UH!d51U9+^_Ui#<;vmp#$ZiI=g{j0+Llt6&jjGjt~(>&GyL)7x-b|) zSrMd8bP4EzhMCR$o*XoVB=y@;1X;DZRwkKu5F(nBD^(IRb+k z6NJI{=L4J)4EjkQhrE>$3qhD2hwV6QDuN`KAVl<)T&Z$r9EA~wP0J8p2XIpyw&Sv? z2$E2OF!&<$w2$JyA+82+P?BO+ z1X*jf67rh2!mhhpGk>@WTI7YSIFJ~>52`1Nyt;!V=ng`_yqxVMW+ZdTz$aFcxQiK5 zj#&0XLPe0|5agfLl(XAruOcx+H4BC~gMich6r!v$iXaIg2!RjD*;Vhmd?K!{@%q*& zmmXmtm56|c2vQLw0R&;j_4%@MV3G>0m=)JC)RRTU31Fx9tXi3Jrw6hT&(CxH*n*;Vgk zW$4Swil2coH?#rC6cs@fK~|Tf%h+s6*?B2!jke9`IKopp?>kUGGjIZ^*#ZhseNqY zAekbFBFHKP=nB)W92us_EJK_N;KVSxvg;^Qg}rw`l11GRXJz+@SWGEw2co2-1hZyBj!St7lOSQji5hKY~Dw z>!TGUxQJvGK@>qe1l~4n=MzC{s%yfitX6ZM2k`MAdP$R21W^R>5D5GRt7zyKG3dKV zEBK)CDuO72cnDl$+Rnj#i>KR2&ve1}`jt>jtIA>SBG+0qDngWq}SG)|Mv(<_|NIr@n zZA=jF4Ea#wql;N_7Bfx_QcSHVs|eE01OZMmZRh7}7j{=hY^o7nY{h~Pnv)_(8xzEJ zvCotq=OfP;1w+4&KsyI5rdE_!1ZiV}XwWv9Y_EJ}U||;x{U8PzW{tJ?!rroeMOMAB?v!c+SMJ`xO-&ui<#)yq!e!>;#34_TY{|F z2dkLTKhH#gyP7njNSoTM?vP2?Cmxw=1`M z>9^Y{!5~Cb1Zh)(AVsG6YNhzh#`ySpz2YrzOM8&QX%|^VkoF|VQqy)Oc&Qf*aTNi+ zJDRi$G5YgV1ZhKpF!;W_UEQT{F?b9C!=5B;H!=*CuOdhr5`>6$XXZN<0Y*kZ5u_an!nlPAUmdwTl!PKk zn-PS7B@9edrSA^`MUXZl2!Le(#`!A`C8Y?`egsif9{>SG5Jivx<wkXkc%rgWmh2}5d!}L=w*%g!pSA)=7DjoL6GM@iw(x;`c3MST%x5@ zp)?c$X1*j}uC5-Ax|$$`PO%wjc%h-uC}#=*IT5(ow4JYcp{*u}W$3R1w4t2ws;CqK zjYXjUsM-Y8XM3W4SzK)@pJ4)SLJdo?En>N1YmvrHE7XN&*(ooSV1mZ!U)~jWwE?;S{v02f| ziXs@3<8i61Dg=^&00C#@Z0Afb+K+5^w=(){B3i(}sAQz0qErY(g#bNDHTRg@vg-5w z76&~KQXHpGgQo4s#M=Py{$_f~auhLO>BjuJusSNQS`w1F$zwtD!oQ`v3p{07*qoM6N<$f`(hfnE(I) literal 0 HcmV?d00001 diff --git a/ECMonitor/Resources/Themes/Theme.DarkBule.xaml b/ECMonitor/Resources/Themes/Theme.DarkBule.xaml new file mode 100644 index 0000000..d58b84e --- /dev/null +++ b/ECMonitor/Resources/Themes/Theme.DarkBule.xaml @@ -0,0 +1,55 @@ + + + + #f44336 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ECMonitor/Resources/Themes/Themes.xaml b/ECMonitor/Resources/Themes/Themes.xaml new file mode 100644 index 0000000..e74dc78 --- /dev/null +++ b/ECMonitor/Resources/Themes/Themes.xaml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/ECMonitor/UC/SampleMessageDialog.xaml b/ECMonitor/UC/SampleMessageDialog.xaml new file mode 100644 index 0000000..f102da2 --- /dev/null +++ b/ECMonitor/UC/SampleMessageDialog.xaml @@ -0,0 +1,19 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/ECMonitor/UC/SampleMessageDialog.xaml.cs b/ECMonitor/UC/SampleMessageDialog.xaml.cs new file mode 100644 index 0000000..8920ac3 --- /dev/null +++ b/ECMonitor/UC/SampleMessageDialog.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace ECMonitor.UC +{ + /// + /// SampleMessageDialog.xaml 的交互逻辑 + /// + public partial class SampleMessageDialog : UserControl + { + public SampleMessageDialog() + { + InitializeComponent(); + } + } +} diff --git a/ECMonitor/UC/Videos/IUCPlayer.cs b/ECMonitor/UC/Videos/IUCPlayer.cs new file mode 100644 index 0000000..35deefb --- /dev/null +++ b/ECMonitor/UC/Videos/IUCPlayer.cs @@ -0,0 +1,78 @@ +using EC.Entity.Video; +using EC.Onvif; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Controls; + +namespace ECMonitor.UC.Videos +{ + public interface IUCPlayer + { + string GetMessage(); + string GetName(); + int GetPlayerType(); + MonitorCamera GetCamera(); + OnvifClient GetOnvifClient(); + string GetCameraIp(); + UserControl GetControl(); + + /// + /// 从0开始 + /// + /// + int GetIndex(); + void SetIndex(int index); + + //bool GetIsShow(); + //void SetIsShow(bool isShow); + /// + /// 设置窗体大小 + /// + /// + /// + void ReSetSize(double videoWidth, double videoHeight); + /// + /// 播放 + /// + /// + /// 正在播放是否重新加载 + /// + bool Play(MonitorCamera camera, bool replay = false); + + void Stop(); + void UPDateTime(); + + /// 判断预警是否接触 + /// + /// + bool IsTimeOut(); + /// + /// 是否是空的播放器 + /// + /// + bool IsNullPlay(); + /// + /// 是否正在播放 + /// + /// + bool IsPlaying(); + void SetSelected(bool selected); + event EventHandler PlayerMouseDown; //定义一个委托类型的事件 + event EventHandler PlayerMouseDoubleClick;//委托一个双击事件 + event EventHandler OnFromClose; + //event EventHandler OnFromClose; + /// + /// 设置最大化或正常 + /// + /// + /// + /// + bool SetMaximized(double width, double height); + + void ShowMsg(string message); + + } +} diff --git a/ECMonitor/UC/Videos/UCAIFilePlayer.xaml b/ECMonitor/UC/Videos/UCAIFilePlayer.xaml new file mode 100644 index 0000000..8609b39 --- /dev/null +++ b/ECMonitor/UC/Videos/UCAIFilePlayer.xaml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ECMonitor/UC/Videos/UCAIFilePlayer.xaml.cs b/ECMonitor/UC/Videos/UCAIFilePlayer.xaml.cs new file mode 100644 index 0000000..57f9db7 --- /dev/null +++ b/ECMonitor/UC/Videos/UCAIFilePlayer.xaml.cs @@ -0,0 +1,430 @@ +using EC.Entity.Video; +using EC.Entity.Warning; +using EC.FFmpegAutoGen; +using EC.Onvif; +using EC.UsingEventAggregator; +using EC.Utils; +using EC.Utils.Config; +using EC.Utils.ZMQ; + +using NetMQ; +using NetMQ.Sockets; +using Prism.Events; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Threading; +using Brushes = System.Windows.Media.Brushes; +using Rectangle = System.Windows.Shapes.Rectangle; + +namespace ECMonitor.UC.Videos +{ + /// + /// UCFFmpegPlayer.xaml 的交互逻辑 + /// + public partial class UCAIFilePlayer : UserControl, IUCPlayer + { + /// + /// 相机IP + /// + private string _cameraIp { get; set; } + /// + /// 视频播放器序号 + /// + private int _videoIndex { get; set; } = 0; + private string _message { get; set; } + private string _ucName { get; set; } + + public MonitorCamera _camera { get; set; } + private OnvifClient _onvifClient { get; set; } + public int _videoType { get; set; } + /// + /// 更新时间 + /// + private DateTime _upDateTime { get; set; } + + /// + /// 最大化最小化用 + /// + double _normaWidth = 0; + double _normaHeight = 0; + /// + /// 窗体大小 + /// + double _playWidth = 0; + double _playHeight = 0; + /// + /// 最大化 + /// + bool _windowStateMax = false; + + public event EventHandler OnFromClose; + IEventAggregator _ea; + //SubscriberSocket Sub_Scriber { get; set; } = null; + string subServerAddress = ConfigHelper.SUBImageServer(); + public UCAIFilePlayer(IEventAggregator ea, double width, double height, int videoIndex, bool showCloseButton = false) + { + _ea = ea; + + InitializeComponent(); + this.Name = "UCPlayer" + videoIndex; + _ucName = this.Name; + this.topPlane.Visibility = showCloseButton ? Visibility.Visible : Visibility.Hidden; + ReSetSize(width, height); + ShowMsg("没有视频"); + _videoIndex = videoIndex; + + } + + event EventHandler IUCPlayer.OnFromClose + { + add + { + throw new NotImplementedException(); + } + + remove + { + throw new NotImplementedException(); + } + } + + + + + + /// + /// 设置窗体大小 + /// + /// + /// + public void ReSetSize(double width, double height) + { + this.Width = width; + this.Height = height; + this._playWidth = width; + this._playHeight = height; + + this.imgPlayer.Height = height; + + SetSelected(false); + + } + + + + public bool Play(MonitorCamera camera,bool replay = false) + { + if (IsPlaying()) + { + LogFactory.GetLogger().Debug(" 并行冲突old " +_camera.Ip+"正在播放" +"new Ip="+ camera.Ip ); + return false; + + } + _camera = camera; + if (_camera == null) + { + return false; + } + + _playing = true; + Task.Factory.StartNew(() => Play()); + return true; + + + } + object lockplayer { get; set; } = new object(); + public void Stop() + { + lock (lockplayer) + { + _playing = false; + _camera = null; + SetImageSource(null); + Task.Factory.StartNew(() => { + + Thread.Sleep(2000); + // SetImageSource(null); + ShowMsg("目标消失"); + }); + + OnFromClose?.Invoke(this, null); + } + + + + } + + + + public void UPDateTime() + { + _upDateTime = DateTime.Now; + + } + /// + /// 判断预警是否接触 + /// + /// + public bool IsTimeOut() + { + DateTime now = DateTime.Now; + double difSeconds = DateUnit.DateDiffSeconds(_upDateTime, now); + return difSeconds > 3; + } + public string GetCameraIp() + { + if (_camera != null) + { + return _camera.Ip; + } + return ""; + } + /// + /// 播放器类型 + /// + /// + public int GetPlayerType() + { + return _videoType; + } + /// + /// 相机 + /// + /// + public MonitorCamera GetCamera() + { + return _camera; + } + + public OnvifClient GetOnvifClient() + { + return _onvifClient; + } + + public UserControl GetControl() + { + return this; + } + + public string GetMessage() + { + return _message; + } + + public string GetName() + { + return _ucName; + } + /// + /// 是否是空播放器 + /// + /// + public bool IsNullPlay() + { + return _camera == null; + } + /// + /// 是否播放 + /// + bool _playing { get; set; } = false; + ///// + ///// 播放成功 + ///// + //bool _playingSuccess = false; + /// + /// 是否正在播放 + /// + /// + public bool IsPlaying() + { + if (_camera == null) + { + return false; + } + return _playing;//&& _playingSuccess; + } + private int listIndex = 0; + public int GetIndex() + { + return listIndex; + } + + public void SetIndex(int index) + { + listIndex = index; + } + /// + /// 是否显示 + /// + private bool IsShow = false; + + public bool GetIsShow() + { + return IsShow; + } + public void SetIsShow(bool isShow) + { + IsShow = isShow; + } + private void btnClose_Click(object sender, RoutedEventArgs e) + { + Stop(); + OnFromClose?.Invoke(sender, e); + } + + + public delegate void dlgtSetImage(byte[] ms); + void SetImageSource(byte[] ms) + { + this.imgPlayer.Dispatcher.Invoke(new dlgtSetImage(SetImage), ms); + } + void SetImage(byte[] ms) + { + + ShowMsg(""); + if (!_playing|| ms == null) + { + imgPlayer.Source = null; // done! + return; + } + + BitmapImage bi = new BitmapImage(); + bi.BeginInit(); + bi.StreamSource = new MemoryStream(ms); // 不要直接使用 ms + bi.EndInit(); + + imgPlayer.Source = bi; // done! + + } + + + + private void Play() + { + using SubscriberSocket Sub_Scriber = new SubscriberSocket(); + lock (lockplayer) + { + if (_camera == null) + { + return; + } + + UPDateTime(); + + + Sub_Scriber.Connect(subServerAddress); + string topic = ZMQTopic.AI_Detect_Warning_Image + _camera.Ip.Replace('.', '_'); + Sub_Scriber.Subscribe(topic); + } + while (_playing) + { + + try + { + bool more = false; + var timeout = new TimeSpan(0, 0, 2); + var rectopic = ""; + Sub_Scriber.TryReceiveFrameString(timeout, out rectopic, out more); + if (_playing&&more) + { + byte[] data = Sub_Scriber.ReceiveFrameBytes(); + UPDateTime(); + SetImageSource(data); + } + } + catch (Exception ex) + { + LogFactory.GetLogger().Error(ex); + } + + + } + LogFactory.GetLogger().Info("跟踪结束了--------------"); + + } + + + public void ShowMsg(string message) + { + this.txtShow.Dispatcher.Invoke(new Action(() => { this.txtShow.Text = message; })); + } + private void Log(string message, bool isErr = false) + { + ShowMsg(message); + } + public void SetSelected(bool selected) + { + Thickness thickness = new Thickness(0); + if (selected) + { + thickness = new Thickness(1); + } + this.playerBorder.Dispatcher.Invoke(new Action(() => { playerBorder.BorderThickness = thickness; })); + + + } + #region 事件 + public event EventHandler PlayerMouseDown; + public event EventHandler PlayerMouseDoubleClick; + + + + + private void UserControl_MouseDown(object sender, MouseButtonEventArgs e) + { + PlayerMouseDown?.Invoke(this, _videoIndex); + } + + private void UserControl_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + PlayerMouseDoubleClick?.Invoke(this, _videoIndex); + } + + /// + /// 设置最大化 + /// + /// + /// + /// + public bool SetMaximized(double width, double height) + { + if (_windowStateMax == false) + { + _normaWidth = this.Width; + _normaHeight = this.Height; + _windowStateMax = true; + ReSetSize(width, height); + + } + else + { + _windowStateMax = false; + ReSetSize(_normaWidth, _normaHeight); + } + return _windowStateMax; + + + } + + #endregion + + } +} diff --git a/ECMonitor/UC/Videos/UCAIWarningPlayer.xaml b/ECMonitor/UC/Videos/UCAIWarningPlayer.xaml new file mode 100644 index 0000000..0737ac5 --- /dev/null +++ b/ECMonitor/UC/Videos/UCAIWarningPlayer.xaml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ECMonitor/UC/Videos/UCAIWarningPlayer.xaml.cs b/ECMonitor/UC/Videos/UCAIWarningPlayer.xaml.cs new file mode 100644 index 0000000..bdc723f --- /dev/null +++ b/ECMonitor/UC/Videos/UCAIWarningPlayer.xaml.cs @@ -0,0 +1,420 @@ +using EC.Entity.Video; +using EC.Entity.Warning; +using EC.FFmpegAutoGen; +using EC.Onvif; +using EC.UsingEventAggregator; +using EC.Utils; + +using EC.Utils.ZMQ; +using NetMQ; +using NetMQ.Sockets; +using Prism.Events; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Threading; +using Brushes = System.Windows.Media.Brushes; +using Rectangle = System.Windows.Shapes.Rectangle; + +namespace ECMonitor.UC.Videos +{ + /// + /// UCFFmpegPlayer.xaml 的交互逻辑 + /// + public partial class UCAIWarningPlayer : UserControl, IUCPlayer + { + /// + /// 相机IP + /// + private string _cameraIp { get; set; } + /// + /// 视频播放器序号 + /// + private int _videoIndex { get; set; } = 0; + private string _message { get; set; } + private string _ucName { get; set; } + + public MonitorCamera _camera { get; set; } + private OnvifClient _onvifClient { get; set; } + public int _videoType { get; set; } + /// + /// 更新时间 + /// + private DateTime _upDateTime { get; set; } + + /// + /// 最大化最小化用 + /// + double _normaWidth = 0; + double _normaHeight = 0; + /// + /// 窗体大小 + /// + double _playWidth = 0; + double _playHeight = 0; + /// + /// 最大化 + /// + bool _windowStateMax = false; + + public event EventHandler OnFromClose; + IEventAggregator _ea; + //SubscriberSocket Sub_Scriber { get; set; } = null; + string subServerAddress = ConfigHelper.SUBImageServer(); + public UCAIWarningPlayer(IEventAggregator ea, double width, double height, int videoIndex, bool showCloseButton = false) + { + _ea = ea; + + + InitializeComponent(); + this.Name = "UCPlayer" + videoIndex; + _ucName = this.Name; + this.topPlane.Visibility = showCloseButton ? Visibility.Visible : Visibility.Hidden; + ReSetSize(width, height); + ShowMsg("没有视频"); + _videoIndex = videoIndex; + + } + + + + + + + + + /// + /// 设置窗体大小 + /// + /// + /// + public void ReSetSize(double width, double height) + { + this.Width = width; + this.Height = height; + this._playWidth = width; + this._playHeight = height; + + this.imgPlayer.Height = height; + + SetSelected(false); + + } + + + + public bool Play(MonitorCamera camera,bool replay = false) + { + if (IsPlaying()) + { + LogFactory.GetLogger().Debug(" 并行冲突old " +_camera.Ip+"正在播放" +"new Ip="+ camera.Ip ); + return false; + + } + _camera = camera; + if (_camera == null) + { + return false; + } + + _playing = true; + Task.Factory.StartNew(() => Play()); + return true; + + + } + object lockplayer { get; set; } = new object(); + public void Stop() + { + lock (lockplayer) + { + _playing = false; + _camera = null; + + Task.Factory.StartNew(() => { + + Thread.Sleep(2000); + //SetImageSource(null); + ShowMsg("目标消失"); + }); + + OnFromClose?.Invoke(this, _videoIndex); + } + + + + } + + + + public void UPDateTime() + { + _upDateTime = DateTime.Now; + + } + /// + /// 判断预警是否接触 + /// + /// + public bool IsTimeOut() + { + DateTime now = DateTime.Now; + double difSeconds = DateUnit.DateDiffSeconds(_upDateTime, now); + return difSeconds > 4; + } + public string GetCameraIp() + { + if (_camera != null) + { + return _camera.Ip; + } + return ""; + } + /// + /// 播放器类型 + /// + /// + public int GetPlayerType() + { + return _videoType; + } + /// + /// 相机 + /// + /// + public MonitorCamera GetCamera() + { + return _camera; + } + + public OnvifClient GetOnvifClient() + { + return _onvifClient; + } + + public UserControl GetControl() + { + return this; + } + + public string GetMessage() + { + return _message; + } + + public string GetName() + { + return _ucName; + } + /// + /// 是否是空播放器 + /// + /// + public bool IsNullPlay() + { + return _camera == null; + } + /// + /// 是否播放 + /// + bool _playing { get; set; } = false; + ///// + ///// 播放成功 + ///// + //bool _playingSuccess = false; + /// + /// 是否正在播放 + /// + /// + public bool IsPlaying() + { + if (_camera == null) + { + return false; + } + return _playing;//&& _playingSuccess; + } + private int listIndex = 0; + public int GetIndex() + { + return listIndex; + } + + public void SetIndex(int index) + { + listIndex = index; + } + /// + /// 是否显示 + /// + private bool IsShow = false; + + public bool GetIsShow() + { + return IsShow; + } + public void SetIsShow(bool isShow) + { + IsShow = isShow; + } + private void btnClose_Click(object sender, RoutedEventArgs e) + { + Stop(); + OnFromClose?.Invoke(sender, _videoIndex); + } + + + public delegate void dlgtSetImage(byte[] ms); + void SetImageSource(byte[] ms) + { + this.imgPlayer.Dispatcher.Invoke(new dlgtSetImage(SetImage), ms); + } + void SetImage(byte[] ms) + { + + ShowMsg(""); + if (!_playing|| ms == null) + { + imgPlayer.Source = null; // done! + return; + } + + BitmapImage bi = new BitmapImage(); + bi.BeginInit(); + bi.StreamSource = new MemoryStream(ms); // 不要直接使用 ms + bi.EndInit(); + + imgPlayer.Source = bi; // done! + + } + + + + private void Play() + { + using SubscriberSocket Sub_Scriber = new SubscriberSocket(); + lock (lockplayer) + { + if (_camera == null) + { + return; + } + + UPDateTime(); + + + Sub_Scriber.Connect(subServerAddress); + string topic = ZMQTopic.AI_Detect_Warning_Image + _camera.Ip.Replace('.', '_'); + Sub_Scriber.Subscribe(topic); + } + while (_playing) + { + + try + { + bool more = false; + var timeout = new TimeSpan(0, 0, 2); + var rectopic = ""; + Sub_Scriber.TryReceiveFrameString(timeout, out rectopic, out more); + if (_playing&&more) + { + byte[] data = Sub_Scriber.ReceiveFrameBytes(); + UPDateTime(); + SetImageSource(data); + } + } + catch (Exception ex) + { + LogFactory.GetLogger().Error(ex); + } + + + } + LogFactory.GetLogger().Info("跟踪结束了--------------"); + + } + + + public void ShowMsg(string message) + { + this.txtShow.Dispatcher.Invoke(new Action(() => { this.txtShow.Text = message; })); + } + private void Log(string message, bool isErr = false) + { + ShowMsg(message); + } + public void SetSelected(bool selected) + { + Thickness thickness = new Thickness(0); + if (selected) + { + thickness = new Thickness(1); + } + this.playerBorder.Dispatcher.Invoke(new Action(() => { playerBorder.BorderThickness = thickness; })); + + + } + #region 事件 + public event EventHandler PlayerMouseDown; + public event EventHandler PlayerMouseDoubleClick; + + + + + private void UserControl_MouseDown(object sender, MouseButtonEventArgs e) + { + PlayerMouseDown?.Invoke(this, _videoIndex); + } + + private void UserControl_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + PlayerMouseDoubleClick?.Invoke(this, _videoIndex); + } + + /// + /// 设置最大化 + /// + /// + /// + /// + public bool SetMaximized(double width, double height) + { + if (_windowStateMax == false) + { + _normaWidth = this.Width; + _normaHeight = this.Height; + _windowStateMax = true; + ReSetSize(width, height); + + } + else + { + _windowStateMax = false; + ReSetSize(_normaWidth, _normaHeight); + } + return _windowStateMax; + + + } + + #endregion + + } +} diff --git a/ECMonitor/UC/Videos/UCFFmpegAIBoxPlayer.xaml b/ECMonitor/UC/Videos/UCFFmpegAIBoxPlayer.xaml new file mode 100644 index 0000000..ee4d5dc --- /dev/null +++ b/ECMonitor/UC/Videos/UCFFmpegAIBoxPlayer.xaml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ECMonitor/UC/Videos/UCFFmpegAIBoxPlayer.xaml.cs b/ECMonitor/UC/Videos/UCFFmpegAIBoxPlayer.xaml.cs new file mode 100644 index 0000000..739dce3 --- /dev/null +++ b/ECMonitor/UC/Videos/UCFFmpegAIBoxPlayer.xaml.cs @@ -0,0 +1,663 @@ +using EC.Entity.Video; +using EC.FFmpegAutoGen; +using EC.Utils.Config; + +using ECMonitor.Code; +using ECMonitor.Code.Config; +using ECMonitor.Manager; +using FFmpeg.AutoGen; + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using NetMQ.Sockets; +using NetMQ; +using EC.Utils.ImageHelpers; +using EC.Utils; + +namespace ECMonitor.UC.Videos +{ + /// + /// UCFFmpegPlayer.xaml 的交互逻辑 + /// + public partial class UCFFmpegAIBoxPlayer : UserControl, IUCPlayer + { + /// + /// 视频播放器序号 + /// + int _videoIndex = 0; + private string Message { get; set; } + private string UcName { get; set; } + + public MonitorCamera Camera { get; set; } + public int VideoType { get; set; } + /// + /// 更新时间 + /// + private DateTime upDateTime; + + public event EventHandler OnFromClose; + /// + /// + /// + double NormaWidth { get; set; } = 0; + double NormaHeight { get; set; } = 0; + /// + /// 最大化 + /// + bool WindowStateMax { get; set; } = false; + string inputpath = ConfigHelper.AIInputPath(); + string outpath = ConfigHelper.AIOutPath(); + string _aiServer = ConfigHelper.AISvrServer(); + + + + public UCFFmpegAIBoxPlayer(double width, double height, int videoIndex, bool showCloseButton = true, string aspectRatio = "4:3") + { + this.Width = width; + this.Height = height; + InitializeComponent(); + this.Name = "UCPlayer" + videoIndex; + UcName = this.Name; + this.btnClose.Visibility = showCloseButton ? Visibility.Visible : Visibility.Hidden; + ReSetSize(width, height); + ShowMsg("没有视频"); + _videoIndex = videoIndex; + + + + } + + + + /// + /// 设置窗体大小 + /// + /// + /// + public void ReSetSize(double width, double height) + { + Width = width; + Height = height; + //显示内容 + //double messageWidht = 40; + //double left = width / 2 - messageWidht / 2; + //double top = height / 2 - 20; + ////double right = width-(left + messageWidht); + ////double bottom = height / 2 - 10; + //this.txtShow.Margin = new Thickness(left, top, right, bottom); + this.imgPlayer.Height = height; + + SetSelected(false); + + } + + + + public bool Play(MonitorCamera camera, bool replay = false) + { + if (IsPlaying()) + { + if (replay == false) + { + if (camera.Ip == Camera.Ip) + { + return true; + } + } + Stop(); + + } + Camera = camera; + if (Camera == null) + { + return false; + } + + return Play(); + + + } + + public void Stop() + { + try + { + if (_playing == false) + { + return; + } + _playing = false; + Camera = null; + MemoryStream ms = null; + Task.Factory.StartNew(() => { Thread.Sleep(1000); SetImageSource(ms); _playingSuccess = false; }); + ShowMsg("视频已经关闭"); + OnFromClose?.Invoke(this, null); + } + catch (Exception ex) + { + LogFactory.GetLogger().Error(ex); + } + } + + public void UPDateTime() + { + upDateTime = DateTime.Now; + + } + /// + /// 判断预警是否接触 + /// + /// + public bool IsTimeOut() + { + DateTime now = DateTime.Now; + double difSeconds = DateUnit.DateDiffSeconds(upDateTime, now); + return difSeconds > 6; + } + public string GetCameraIp() + { + if (Camera != null) + { + return Camera.Ip; + } + return ""; + } + /// + /// 播放器类型 + /// + /// + public int GetPlayerType() + { + return VideoType; + } + /// + /// 相机 + /// + /// + public MonitorCamera GetCamera() + { + return Camera; + } + + public UserControl GetControl() + { + return this; + } + + public string GetMessage() + { + return Message; + } + + public string GetName() + { + return UcName; + } + /// + /// 是否是空播放器 + /// + /// + public bool IsNullPlay() + { + return Camera == null; + } + /// + /// 是否播放 + /// + bool _playing = false; + /// + /// 播放成功 + /// + bool _playingSuccess = false; + /// + /// 是否正在播放 + /// + /// + public bool IsPlaying() + { + if (Camera == null) + { + return false; + } + return _playing;//&& _playingSuccess; + } + private int listIndex = 0; + public int GetIndex() + { + return listIndex; + } + + public void SetIndex(int index) + { + listIndex = index; + } + /// + /// 是否显示 + /// + private bool IsShow = false; + + + + public bool GetIsShow() + { + return IsShow; + } + public void SetIsShow(bool isShow) + { + IsShow = isShow; + } + + + private void btnClose_Click(object sender, RoutedEventArgs e) + { + Stop(); + OnFromClose?.Invoke(sender, e); + } + + + #region FFmpeg + + public delegate void dlgtSetImage(MemoryStream ms); + public delegate void dlgtSetImageByte(byte[] ms); + void SetImageSource(MemoryStream ms) + { + this.imgPlayer.Dispatcher.Invoke(new dlgtSetImage(SetImage), ms); + } + void SetImage(MemoryStream ms) + { + //if (this.imgPlayer.Dispatcher.CheckAccess()) + //{ + // this.imgPlayer.Dispatcher.Invoke(new dlgtSetImage(setImage), ms); + // return; + //} + ShowMsg(""); + if (ms == null) + { + imgPlayer.Source = null; // done! + return; + } + + BitmapImage bi = new BitmapImage(); + bi.BeginInit(); + bi.StreamSource = new MemoryStream(ms.ToArray()); // 不要直接使用 ms + bi.EndInit(); + // Guid photoID = System.Guid.NewGuid(); + //string photolocation = $"img//" + DateTime.Now.ToString("MMddHHmmssfff") + ".jpg"; //file name + //FileStream filestream = new FileStream(photolocation, FileMode.Create); + //JpegBitmapEncoder encoder = new JpegBitmapEncoder(); + //encoder.Frames.Add(BitmapFrame.Create(bi)); + //encoder.Save(filestream); + + imgPlayer.Source = bi; // done! + + // ms.Close(); + + //} + } + + void SetImageSource(byte[] ms) + { + this.imgPlayer.Dispatcher.Invoke(new dlgtSetImageByte(SetImage), ms); + } + void SetImage(byte[] ms) + { + + ShowMsg(""); + if (ms == null) + { + imgPlayer.Source = null; // done! + return; + } + + BitmapImage bi = new BitmapImage(); + bi.BeginInit(); + bi.StreamSource = new MemoryStream(ms); // 不要直接使用 ms + bi.EndInit(); + //// Guid photoID = System.Guid.NewGuid(); + //string photolocation = $"img//" + DateTime.Now.ToString("MMddHHmmssfff") + ".jpg"; //file name + //FileStream filestream = new FileStream(photolocation, FileMode.Create); + //JpegBitmapEncoder encoder = new JpegBitmapEncoder(); + //encoder.Frames.Add(BitmapFrame.Create(bi)); + //encoder.Save(filestream); + + imgPlayer.Source = bi; // done! + + // ms.Close(); + + //} + } + + public bool Play() + { + Message = ""; + try + { + Task.Factory.StartNew(() => PlayThread()); + CheckPlaySuccessed(); + + + } + catch (System.Exception ex) + { + ShowMsg(ex.Message); + } + finally + { + } + return true; + } + + + + public bool PlayThread() + { + if (Camera == null) + { + return false; + } + _playing = true; + UPDateTime(); + //string url = "rtsp://admin:hk123456@192.168.1.108:554/cam/realmonitor?channel=1&subtype=1&unicast=true&proto=Onvif"; + // string url = "rtsp://admin:hk123456@192.168.1.65:554/Streaming/Channels/102?transportmode=unicast&profile=Profile_2"; + string url = Camera.RtspURL(); + FFmpegBinariesHelper.RegisterFFmpegBinaries(); + + // Console.WriteLine($"FFmpeg version info: {ffmpeg.av_version_info()}"); + + SetupLogging(); + // ConfigureHWDecoder(out var deviceType); + + var deviceType = AVHWDeviceType.AV_HWDEVICE_TYPE_DXVA2; + DecodeAllFramesToImages(deviceType, url); + + return true; + } + /// + /// 判断是否播放成功,因为播放没有返回,只能从有没有图片返回判断 + /// + public void CheckPlaySuccessed() + { + Task.Factory.StartNew(() => + { + Thread.Sleep(5000); + if (_playingSuccess == false) + { + _playing = false; + if (Camera != null) + { + ShowMsg(Camera.Ip + "播放失败"); + } + + } + }); + } + + + + private unsafe void SetupLogging() + { + ffmpeg.av_log_set_level(ffmpeg.AV_LOG_VERBOSE); + + // do not convert to local function + av_log_set_callback_callback logCallback = (p0, level, format, vl) => + { + if (level > ffmpeg.av_log_get_level()) return; + + var lineSize = 1024; + var lineBuffer = stackalloc byte[lineSize]; + var printPrefix = 1; + ffmpeg.av_log_format_line(p0, level, format, vl, lineBuffer, lineSize, &printPrefix); + var line = Marshal.PtrToStringAnsi((IntPtr)lineBuffer); + + LogFactory.GetLogger().Debug(line); + + }; + + ffmpeg.av_log_set_callback(logCallback); + } + + private unsafe void DecodeAllFramesToImages(AVHWDeviceType HWDevice, string url) + { + // decode all frames from url, please not it might local resorce, e.g. string url = "../../sample_mpeg4.mp4"; + //*var url = "http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4*/"; // be advised this file holds 1440 frames + + using var vsd = new VideoStreamDecoder(url, HWDevice); + + Console.WriteLine($"codec name: {vsd.CodecName}"); + + var info = vsd.GetContextInfo(); + info.ToList().ForEach(x => Console.WriteLine($"{x.Key} = {x.Value}")); + + var sourceSize = vsd.FrameSize; + var sourcePixelFormat = HWDevice == AVHWDeviceType.AV_HWDEVICE_TYPE_NONE + ? vsd.PixelFormat + : FFmpegHelper.GetHWPixelFormat(HWDevice); + var destinationSize = sourceSize; + var destinationPixelFormat = AVPixelFormat.AV_PIX_FMT_BGR24; + using var vfc = + new VideoFrameConverter(sourceSize, sourcePixelFormat, destinationSize, destinationPixelFormat); + + var frameNumber = 0; + int imageNumber = 0; + while (_playing && vsd.TryDecodeNextFrame(out var frame)) + { + var convertedFrame = vfc.Convert(frame); + + var bitmap = new Bitmap(convertedFrame.width, + convertedFrame.height, + convertedFrame.linesize[0], + System.Drawing.Imaging.PixelFormat.Format24bppRgb, + (IntPtr)convertedFrame.data[0]); + + + //IntPtr hBitmap = bitmap.GetHbitmap(); + //System.Windows.Media.ImageSource bitmapSource = Imaging.CreateBitmapSourceFromHBitmap(hBitmap, IntPtr.Zero, Int32Rect.Empty, + //BitmapSizeOptions.FromEmptyOptions()); + // bitmapSource.Freeze(); + + _playingSuccess = true; + imageNumber++; + imageNumber = imageNumber % 100; + var x = imageNumber % 3; + if (x == 0) + { + continue; + } + //if (x==2) + //{ + // string filename = imageNumber + ".jpg"; + // string fullfileName = inputpath + filename; + // bitmap.Save(fullfileName, ImageFormat.Jpeg); + // bitmap.Dispose(); + // PubToAI(filename); + //} + if (x == 2) + { + PubToAI(bitmap); + //PubToAI(filename); + } + else + { + //MemoryStream stream = new MemoryStream(); + //bitmap.Save(stream, ImageFormat.Bmp); + //SetImageSource(stream); + //bitmap.Dispose(); + } + + + Console.WriteLine($"frame: {frameNumber}"); + frameNumber++; + } + + } + + //将Bitmap对象转换成bitmapImage对象 + //public BitmapImage ConvertBitmapToBitmapImage(Bitmap bitmap) + //{ + // MemoryStream stream = new MemoryStream(); + // bitmap.Save(stream, ImageFormat.Bmp); + // BitmapImage image = new BitmapImage(); + // image.BeginInit(); + // image.StreamSource = stream; + // image.EndInit(); + // return image; + //} + + + #endregion + + public void ShowMsg(string message) + { + this.txtShow.Dispatcher.Invoke(new Action(() => { this.txtShow.Text = message; })); + } + private void Log(string message, bool isErr = false) + { + ShowMsg(message); + } + public void SetSelected(bool selected) + { + Thickness thickness = new Thickness(0); + if (selected) + { + thickness = new Thickness(1); + } + this.playerBorder.Dispatcher.Invoke(new Action(() => { playerBorder.BorderThickness = thickness; })); + + + } + #region 事件 + public event EventHandler PlayerMouseDown; + public event EventHandler PlayerMouseDoubleClick; + + + + + private void UserControl_MouseDown(object sender, MouseButtonEventArgs e) + { + PlayerMouseDown?.Invoke(this, _videoIndex); + } + + private void UserControl_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + PlayerMouseDoubleClick?.Invoke(this, _videoIndex); + } + + /// + /// 设置最大化 + /// + /// + /// + /// + public bool SetMaximized(double width, double height) + { + if (WindowStateMax == false) + { + NormaWidth = this.Width; + NormaHeight = this.Height; + WindowStateMax = true; + ReSetSize(width, height); + + } + else + { + WindowStateMax = false; + ReSetSize(NormaWidth, NormaHeight); + } + return WindowStateMax; + + + } + + #endregion + + #region ZMQ + + private void PubToAI(Bitmap inbitmap) + { + Task.Factory.StartNew(() => + { + try + { + if (_playing == false) + { + return; + } + byte[] data = ImageHelper.ImageToByteArray(inbitmap); + inbitmap.Dispose(); + if (data == null) return; + using (var requestSocket = new RequestSocket(_aiServer)) + { + requestSocket.SendFrame(data); + var timeout = new TimeSpan(0, 0, 1); + byte[] recdata = new byte[0]; + bool recSuccess = requestSocket.TryReceiveFrameBytes(timeout, out recdata); + // byte[] recdata = requestSocket.ReceiveFrameBytes(); + if (recSuccess) + { + SetImageSource(recdata); + } + + + } + } + catch (Exception ex) + { + ShowMsg(ex.Message); + LogFactory.GetLogger().Error(ex); + } + + + }); + + } + + //private void PubToAI(string fileName) + //{ + + // Task.Factory.StartNew(() => + // { + // try + // { + // using (var requestSocket = new RequestSocket(_aiServer)) + // { + // requestSocket.SendFrame(fileName); + // var recfileName = requestSocket.ReceiveFrameString(); + // string fullFileName = outpath + recfileName; + // System.Drawing.Image bitmap = System.Drawing.Bitmap.FromFile(fullFileName); + // MemoryStream stream = new MemoryStream(); + // bitmap.Save(stream, ImageFormat.Bmp); + // SetImageSource(stream); + + // } + // } + // catch (Exception ex) + // { + // ShowMsg(ex.Message); + // LogFactory.GetLogger().Error(ex); + // } + + + // }); + + // } + #endregion + } +} diff --git a/ECMonitor/UC/Videos/UCFFmpegAIPlayer.xaml b/ECMonitor/UC/Videos/UCFFmpegAIPlayer.xaml new file mode 100644 index 0000000..411d635 --- /dev/null +++ b/ECMonitor/UC/Videos/UCFFmpegAIPlayer.xaml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ECMonitor/UC/Videos/UCFFmpegAIPlayer.xaml.cs b/ECMonitor/UC/Videos/UCFFmpegAIPlayer.xaml.cs new file mode 100644 index 0000000..b04564c --- /dev/null +++ b/ECMonitor/UC/Videos/UCFFmpegAIPlayer.xaml.cs @@ -0,0 +1,675 @@ +using EC.Entity.Video; +using EC.FFmpegAutoGen; +using EC.Utils.Config; + +using ECMonitor.Code; + +using ECMonitor.Manager; +using FFmpeg.AutoGen; + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using NetMQ.Sockets; +using NetMQ; +using EC.Utils.ImageHelpers; +using EC.Utils; +using EC.Onvif; + +namespace ECMonitor.UC.Videos +{ + /// + /// UCFFmpegPlayer.xaml 的交互逻辑 + /// + public partial class UCFFmpegAIPlayer : UserControl, IUCPlayer + { + /// + /// 视频播放器序号 + /// + int _videoIndex = 0; + private string Message { get; set; } + private string UcName { get; set; } + + public MonitorCamera Camera { get; set; } + private OnvifClient _onvifClient { get; set; } + public int VideoType { get; set; } + /// + /// 更新时间 + /// + private DateTime upDateTime; + + + /// + /// + /// + double NormaWidth { get; set; } = 0; + double NormaHeight { get; set; } = 0; + /// + /// 最大化 + /// + bool WindowStateMax { get; set; } = false; + string inputpath = ConfigHelper.AIInputPath(); + string outpath = ConfigHelper.AIOutPath(); + string _aiServer = ConfigHelper.AISvrServer(); + public event EventHandler OnFromClose; + + + public UCFFmpegAIPlayer(double width, double height, int videoIndex, bool showCloseButton = true, string aspectRatio = "4:3") + { + this.Width = width; + this.Height = height; + InitializeComponent(); + this.Name = "UCPlayer" + videoIndex; + UcName = this.Name; + this.btnClose.Visibility = showCloseButton ? Visibility.Visible : Visibility.Hidden; + ReSetSize(width, height); + ShowMsg("没有视频"); + _videoIndex = videoIndex; + + + + } + + + + + + /// + /// 设置窗体大小 + /// + /// + /// + public void ReSetSize(double width, double height) + { + Width = width; + Height = height; + //显示内容 + //double messageWidht = 40; + //double left = width / 2 - messageWidht / 2; + //double top = height / 2 - 20; + //double right = width-(left + messageWidht); + //double bottom = height / 2 - 10; + //this.txtShow.Margin = new Thickness(left, top, right, bottom); + this.imgPlayer.Height = height; + //this.txtShow.Margin = new Thickness(left, top, 0, 0); + SetSelected(false); + + } + + + + public bool Play(MonitorCamera camera, bool replay = false) + { + if (IsPlaying()) + { + if (replay == false) + { + if (camera.Ip == Camera.Ip) + { + return true; + } + } + Stop(); + + } + Camera = camera; + if (Camera == null) + { + return false; + } + + return Play(); + + + } + + public void Stop() + { + try + { + if (_playing == false) + { + return; + } + _playing = false; + Camera = null; + MemoryStream nullms = null; + //Task.Factory.StartNew(() => { Thread.Sleep(1000); SetImageSource(ms); _playingSuccess = false; }); + Thread.Sleep(1000); + SetImageSource(nullms); + _playingSuccess = false; + ShowMsg("视频已经关闭"); + OnFromClose?.Invoke(this, _videoIndex); + } + catch (Exception ex) + { + LogFactory.GetLogger().Error(ex); + } + } + + public void UPDateTime() + { + upDateTime = DateTime.Now; + + } + /// + /// 判断预警是否接触 + /// + /// + public bool IsTimeOut() + { + DateTime now = DateTime.Now; + double difSeconds = DateUnit.DateDiffSeconds(upDateTime, now); + return difSeconds > 6; + } + public string GetCameraIp() + { + if (Camera != null) + { + return Camera.Ip; + } + return ""; + } + /// + /// 播放器类型 + /// + /// + public int GetPlayerType() + { + return VideoType; + } + /// + /// 相机 + /// + /// + public MonitorCamera GetCamera() + { + return Camera; + } + + public OnvifClient GetOnvifClient() + { + return _onvifClient; + } + + public UserControl GetControl() + { + return this; + } + + public string GetMessage() + { + return Message; + } + + public string GetName() + { + return UcName; + } + /// + /// 是否是空播放器 + /// + /// + public bool IsNullPlay() + { + return Camera == null; + } + /// + /// 是否播放 + /// + bool _playing = false; + /// + /// 播放成功 + /// + bool _playingSuccess = false; + /// + /// 是否正在播放 + /// + /// + public bool IsPlaying() + { + if (Camera == null) + { + return false; + } + return _playing;//&& _playingSuccess; + } + private int listIndex = 0; + public int GetIndex() + { + return listIndex; + } + + public void SetIndex(int index) + { + listIndex = index; + } + /// + /// 是否显示 + /// + private bool IsShow = false; + + + + public bool GetIsShow() + { + return IsShow; + } + public void SetIsShow(bool isShow) + { + IsShow = isShow; + } + + + private void btnClose_Click(object sender, RoutedEventArgs e) + { + Stop(); + OnFromClose?.Invoke(sender, _videoIndex); + } + + + #region FFmpeg + + public delegate void dlgtSetImage(MemoryStream ms); + public delegate void dlgtSetImageByte(byte[] ms); + void SetImageSource(MemoryStream ms) + { + this.imgPlayer.Dispatcher.Invoke(new dlgtSetImage(SetImage), ms); + } + void SetImage(MemoryStream ms) + { + //if (this.imgPlayer.Dispatcher.CheckAccess()) + //{ + // this.imgPlayer.Dispatcher.Invoke(new dlgtSetImage(setImage), ms); + // return; + //} + ShowMsg(""); + if (ms == null) + { + imgPlayer.Source = null; // done! + return; + } + + BitmapImage bi = new BitmapImage(); + bi.BeginInit(); + bi.StreamSource = new MemoryStream(ms.ToArray()); // 不要直接使用 ms + bi.EndInit(); + // Guid photoID = System.Guid.NewGuid(); + //string photolocation = $"img//" + DateTime.Now.ToString("MMddHHmmssfff") + ".jpg"; //file name + //FileStream filestream = new FileStream(photolocation, FileMode.Create); + //JpegBitmapEncoder encoder = new JpegBitmapEncoder(); + //encoder.Frames.Add(BitmapFrame.Create(bi)); + //encoder.Save(filestream); + + imgPlayer.Source = bi; // done! + + // ms.Close(); + + //} + } + + void SetImageSource(byte[] ms) + { + this.imgPlayer.Dispatcher.Invoke(new dlgtSetImageByte(SetImage), ms); + } + void SetImage(byte[] ms) + { + + ShowMsg(""); + if (ms == null) + { + imgPlayer.Source = null; // done! + return; + } + + BitmapImage bi = new BitmapImage(); + bi.BeginInit(); + bi.StreamSource = new MemoryStream(ms); // 不要直接使用 ms + bi.EndInit(); + //// Guid photoID = System.Guid.NewGuid(); + //string photolocation = $"img//" + DateTime.Now.ToString("MMddHHmmssfff") + ".jpg"; //file name + //FileStream filestream = new FileStream(photolocation, FileMode.Create); + //JpegBitmapEncoder encoder = new JpegBitmapEncoder(); + //encoder.Frames.Add(BitmapFrame.Create(bi)); + //encoder.Save(filestream); + + imgPlayer.Source = bi; // done! + + // ms.Close(); + + //} + } + + public bool Play() + { + Message = ""; + try + { + Task.Factory.StartNew(() => PlayThread()); + CheckPlaySuccessed(); + + + } + catch (System.Exception ex) + { + ShowMsg(ex.Message); + } + finally + { + } + return true; + } + + + + public bool PlayThread() + { + if (Camera == null) + { + return false; + } + _playing = true; + UPDateTime(); + //string url = "rtsp://admin:hk123456@192.168.1.108:554/cam/realmonitor?channel=1&subtype=1&unicast=true&proto=Onvif"; + // string url = "rtsp://admin:hk123456@192.168.1.65:554/Streaming/Channels/102?transportmode=unicast&profile=Profile_2"; + string url = Camera.RtspURL(); + FFmpegBinariesHelper.RegisterFFmpegBinaries(); + + // Console.WriteLine($"FFmpeg version info: {ffmpeg.av_version_info()}"); + + SetupLogging(); + // ConfigureHWDecoder(out var deviceType); + + var deviceType = AVHWDeviceType.AV_HWDEVICE_TYPE_DXVA2; + DecodeAllFramesToImages(deviceType, url); + + return true; + } + /// + /// 判断是否播放成功,因为播放没有返回,只能从有没有图片返回判断 + /// + public void CheckPlaySuccessed() + { + Task.Factory.StartNew(() => + { + Thread.Sleep(5000); + if (_playingSuccess == false) + { + _playing = false; + if (Camera != null) + { + ShowMsg(Camera.Ip + "播放失败"); + } + + } + }); + } + + + + private unsafe void SetupLogging() + { + ffmpeg.av_log_set_level(ffmpeg.AV_LOG_VERBOSE); + + // do not convert to local function + av_log_set_callback_callback logCallback = (p0, level, format, vl) => + { + if (level > ffmpeg.av_log_get_level()) return; + + var lineSize = 1024; + var lineBuffer = stackalloc byte[lineSize]; + var printPrefix = 1; + ffmpeg.av_log_format_line(p0, level, format, vl, lineBuffer, lineSize, &printPrefix); + var line = Marshal.PtrToStringAnsi((IntPtr)lineBuffer); + + LogFactory.GetLogger().Debug(line); + + }; + + ffmpeg.av_log_set_callback(logCallback); + } + + private unsafe void DecodeAllFramesToImages(AVHWDeviceType HWDevice, string url) + { + // decode all frames from url, please not it might local resorce, e.g. string url = "../../sample_mpeg4.mp4"; + //*var url = "http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4*/"; // be advised this file holds 1440 frames + + using var vsd = new VideoStreamDecoder(url, HWDevice); + + Console.WriteLine($"codec name: {vsd.CodecName}"); + + var info = vsd.GetContextInfo(); + info.ToList().ForEach(x => Console.WriteLine($"{x.Key} = {x.Value}")); + + var sourceSize = vsd.FrameSize; + var sourcePixelFormat = HWDevice == AVHWDeviceType.AV_HWDEVICE_TYPE_NONE + ? vsd.PixelFormat + : FFmpegHelper.GetHWPixelFormat(HWDevice); + var destinationSize = sourceSize; + var destinationPixelFormat = AVPixelFormat.AV_PIX_FMT_BGR24; + using var vfc = + new VideoFrameConverter(sourceSize, sourcePixelFormat, destinationSize, destinationPixelFormat); + + var frameNumber = 0; + int imageNumber = 0; + while (_playing && vsd.TryDecodeNextFrame(out var frame)) + { + var convertedFrame = vfc.Convert(frame); + + var bitmap = new Bitmap(convertedFrame.width, + convertedFrame.height, + convertedFrame.linesize[0], + System.Drawing.Imaging.PixelFormat.Format24bppRgb, + (IntPtr)convertedFrame.data[0]); + + + //IntPtr hBitmap = bitmap.GetHbitmap(); + //System.Windows.Media.ImageSource bitmapSource = Imaging.CreateBitmapSourceFromHBitmap(hBitmap, IntPtr.Zero, Int32Rect.Empty, + //BitmapSizeOptions.FromEmptyOptions()); + // bitmapSource.Freeze(); + + _playingSuccess = true; + imageNumber++; + imageNumber = imageNumber % 100; + var x = imageNumber % 3; + if (x == 0) + { + continue; + } + //if (x==2) + //{ + // string filename = imageNumber + ".jpg"; + // string fullfileName = inputpath + filename; + // bitmap.Save(fullfileName, ImageFormat.Jpeg); + // bitmap.Dispose(); + // PubToAI(filename); + //} + if (x == 2) + { + PubToAI(bitmap); + //PubToAI(filename); + } + else + { + //MemoryStream stream = new MemoryStream(); + //bitmap.Save(stream, ImageFormat.Bmp); + //SetImageSource(stream); + //bitmap.Dispose(); + } + + + Console.WriteLine($"frame: {frameNumber}"); + frameNumber++; + } + + } + + //将Bitmap对象转换成bitmapImage对象 + //public BitmapImage ConvertBitmapToBitmapImage(Bitmap bitmap) + //{ + // MemoryStream stream = new MemoryStream(); + // bitmap.Save(stream, ImageFormat.Bmp); + // BitmapImage image = new BitmapImage(); + // image.BeginInit(); + // image.StreamSource = stream; + // image.EndInit(); + // return image; + //} + + + #endregion + + public void ShowMsg(string message) + { + this.txtShow.Dispatcher.Invoke(new Action(() => { this.txtShow.Text = message; })); + } + private void Log(string message, bool isErr = false) + { + ShowMsg(message); + } + public void SetSelected(bool selected) + { + Thickness thickness = new Thickness(0); + if (selected) + { + thickness = new Thickness(1); + } + this.playerBorder.Dispatcher.Invoke(new Action(() => { playerBorder.BorderThickness = thickness; })); + + + } + #region 事件 + public event EventHandler PlayerMouseDown; + public event EventHandler PlayerMouseDoubleClick; + + + + + private void UserControl_MouseDown(object sender, MouseButtonEventArgs e) + { + PlayerMouseDown?.Invoke(this, _videoIndex); + } + + private void UserControl_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + PlayerMouseDoubleClick?.Invoke(this, _videoIndex); + } + + /// + /// 设置最大化 + /// + /// + /// + /// + public bool SetMaximized(double width, double height) + { + if (WindowStateMax == false) + { + NormaWidth = this.Width; + NormaHeight = this.Height; + WindowStateMax = true; + ReSetSize(width, height); + + } + else + { + WindowStateMax = false; + ReSetSize(NormaWidth, NormaHeight); + } + return WindowStateMax; + + + } + + #endregion + + #region ZMQ + + private void PubToAI(Bitmap inbitmap) + { + Task.Factory.StartNew(() => + { + try + { + if (_playing == false) + { + return; + } + byte[] data = ImageHelper.ImageToByteArray(inbitmap); + inbitmap.Dispose(); + if (data == null) return; + using (var requestSocket = new RequestSocket(_aiServer)) + { + requestSocket.SendFrame(data); + var timeout = new TimeSpan(0, 0, 1); + byte[] recdata = new byte[0]; + bool recSuccess = requestSocket.TryReceiveFrameBytes(timeout, out recdata); + // byte[] recdata = requestSocket.ReceiveFrameBytes(); + if (recSuccess) + { + SetImageSource(recdata); + } + + + } + } + catch (Exception ex) + { + ShowMsg(ex.Message); + LogFactory.GetLogger().Error(ex); + } + + + }); + + } + + //private void PubToAI(string fileName) + //{ + + // Task.Factory.StartNew(() => + // { + // try + // { + // using (var requestSocket = new RequestSocket(_aiServer)) + // { + // requestSocket.SendFrame(fileName); + // var recfileName = requestSocket.ReceiveFrameString(); + // string fullFileName = outpath + recfileName; + // System.Drawing.Image bitmap = System.Drawing.Bitmap.FromFile(fullFileName); + // MemoryStream stream = new MemoryStream(); + // bitmap.Save(stream, ImageFormat.Bmp); + // SetImageSource(stream); + + // } + // } + // catch (Exception ex) + // { + // ShowMsg(ex.Message); + // LogFactory.GetLogger().Error(ex); + // } + + + // }); + + //} + #endregion + } +} diff --git a/ECMonitor/UC/Videos/UCFFmpegPlayer.xaml b/ECMonitor/UC/Videos/UCFFmpegPlayer.xaml new file mode 100644 index 0000000..13af0e4 --- /dev/null +++ b/ECMonitor/UC/Videos/UCFFmpegPlayer.xaml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ECMonitor/UC/Videos/UCFFmpegPlayer.xaml.cs b/ECMonitor/UC/Videos/UCFFmpegPlayer.xaml.cs new file mode 100644 index 0000000..4f92da8 --- /dev/null +++ b/ECMonitor/UC/Videos/UCFFmpegPlayer.xaml.cs @@ -0,0 +1,699 @@ +using EC.Entity.Video; +using EC.Entity.Warning; +using EC.FFmpegAutoGen; +using EC.Onvif; +using EC.UsingEventAggregator; +using ECMonitor.Manager; +using ECMonitor.PlayerDraw; +using ECMonitor.PlayerDraw.Code; +using FFmpeg.AutoGen; +using Prism.Events; +using System; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Threading; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Input; +using System.Windows.Interop; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Threading; +using Brushes = System.Windows.Media.Brushes; +using Rectangle = System.Windows.Shapes.Rectangle; + +namespace ECMonitor.UC.Videos +{ + /// + /// UCFFmpegPlayer.xaml 的交互逻辑 + /// + public partial class UCFFmpegPlayer : UserControl, IUCPlayer + { + /// + /// 视频播放器序号 + /// + private int _videoIndex = 0; + + private string _message { get; set; } + private string _ucName { get; set; } + + public MonitorCamera _camera { get; set; } + private OnvifClient _onvifClient { get; set; } + public int _videoType { get; set; } + + /// + /// 更新时间 + /// + private DateTime _upDateTime { get; set; } + + /// + /// 最大化最小化用 + /// + private double _normaWidth = 0; + + private double _normaHeight = 0; + + /// + /// 窗体大小 + /// + private double _playWidth = 0; + + private double _playHeight = 0; + + /// + /// 最大化 + /// + private bool _windowStateMax = false; + + /// + ///划AI 框 + /// + private bool _drawAiBox = false; + + private IEventAggregator _ea; + + public UCFFmpegPlayer(IEventAggregator ea, double width, double height, int videoIndex, bool showCloseButton = true, bool drawAiBox = false, string aspectRatio = "4:3") + { + _ea = ea; + _drawAiBox = drawAiBox; + + InitializeComponent(); + this.Name = "UCPlayer" + videoIndex; + _ucName = this.Name; + this.topPlane.Visibility = showCloseButton ? Visibility.Visible : Visibility.Hidden; + ReSetSize(width, height); + ShowMsg("没有视频"); + _videoIndex = videoIndex; + //先屏蔽掉 + //_ea.GetEvent().Subscribe(VoideWaningRec); + + timer.Interval = new TimeSpan(0, 0, 1);//设置的间隔为一分钟 + timer.Tick += timer_Tick; + timer.IsEnabled = false; + if (_drawAiBox) + { + InitDraw(); + } + } + + #region 画预警线 + + private ECDrawing _ecDrawing { get; set; } = null; + + private void InitDraw() + { + contenter.Width = this.Width; + contenter.Height = this.Height; + + var blackboardData = new BlackboardData();// BlackboardData.Open(); + _ecDrawing = new ECDrawing(blackboardData, contenter, writeBorad); + } + + #endregion 画预警线 + + /// + /// 设置窗体大小 + /// + /// + /// + public void ReSetSize(double width, double height) + { + this.Width = width; + this.Height = height; + this._playWidth = width; + this._playHeight = height; + this.contenter.Width = width; + this.contenter.Height = height; + //显示内容 + //double messageWidht = 40; + //double left = width / 2 - messageWidht / 2; + //double top = height / 2 - 20; + //double right = width-(left + messageWidht); + //double bottom = height / 2 - 10; + //this.txtShow.Margin = new Thickness(left, top, right, bottom); + this.imgPlayer.Height = height; + + SetSelected(false); + if (_camera != null) + { + _ecDrawing?.LoadDrawShape(_camera.Ip, width, height); + } + } + public bool NeedNewPlayer(MonitorCamera camera, bool replay = false) + { + if (IsPlaying()) + { + if (replay == false) + { + if (camera.Ip == _camera.Ip) + { + return false; + } + } + + } + return true; + } + //public bool Play(MonitorCamera camera, bool replay = false) + //{ + // //GetOnvifClient();//Init OnvifClient + // if (IsPlaying()) + // { + // if (replay == false) + // { + // if (camera.Ip == _camera.Ip) + // { + // return true; + // } + // } + // Stop(); + // } + // _camera = camera; + // if (_camera == null) + // { + // return false; + // } + + // return Play(); + //} + public bool Play(MonitorCamera camera, bool replay = false) + { + + _camera = camera; + _message = ""; + try + { + Task.Factory.StartNew(() => PlayThread()); + if (_camera != null) + { + _ecDrawing?.LoadDrawShape(_camera.Ip, this.Width, this.Height); + } + CheckPlaySuccessed(); + //需要判断是不是球机 + InitOnvifClient(); + } + catch (System.Exception ex) + { + ShowMsg(ex.Message); + } + finally + { + } + return true; + } + public void Stop() + { + if (_playing == false) + { + return; + } + _playing = false; + _camera = null; + _onvifClient = null; + Task.Factory.StartNew(() => { Thread.Sleep(1000); SetImageSource(null); _playingSuccess = false; }); + ShowMsg("视频已经关闭"); + //OnFromClose?.Invoke(this, _videoIndex); + ClearAIBox(); + _ecDrawing?.ClearSharpe(); + } + + + + public void UPDateTime() + { + _upDateTime = DateTime.Now; + + } + /// + /// 判断预警是否结束 + /// + /// + public bool IsTimeOut() + { + DateTime now = DateTime.Now; + double difSeconds = DateUnit.DateDiffSeconds(_upDateTime, now); + return difSeconds > 2; + } + public string GetCameraIp() + { + if (_camera != null) + { + return _camera.Ip; + } + return ""; + } + /// + /// 播放器类型 + /// + /// + public int GetPlayerType() + { + return _videoType; + } + /// + /// 相机 + /// + /// + public MonitorCamera GetCamera() + { + return _camera; + } + /// + /// 初始化Onvif + /// + public void InitOnvifClient() + { + Task.Factory.StartNew(GetOnvifClient); + } + public OnvifClient GetOnvifClient() + { + lock (this) + { + if (_onvifClient == null && _camera != null) + _onvifClient = new OnvifClient(_camera.Ip, _camera.User, _camera.Password); + return _onvifClient; + } + } + + public UserControl GetControl() + { + return this; + } + + public string GetMessage() + { + return _message; + } + + public string GetName() + { + return _ucName; + } + + /// + /// 是否是空播放器 + /// + /// + public bool IsNullPlay() + { + return _camera == null; + } + + /// + /// 是否播放 + /// + private bool _playing = false; + + /// + /// 播放成功 + /// + private bool _playingSuccess = false; + + /// + /// 是否正在播放 + /// + /// + public bool IsPlaying() + { + if (_camera == null) + { + return false; + } + return _playing;//&& _playingSuccess; + } + + private int listIndex = 0; + + public int GetIndex() + { + return listIndex; + } + + public void SetIndex(int index) + { + listIndex = index; + } + + /// + /// 是否显示 + /// + private bool IsShow = false; + + public bool GetIsShow() + { + return IsShow; + } + + public void SetIsShow(bool isShow) + { + IsShow = isShow; + } + + private void btnClose_Click(object sender, RoutedEventArgs e) + { + Stop(); + OnFromClose?.Invoke(sender, _videoIndex); + } + + #region FFmpeg + + + + + private void SetImageSource(ImageSource bitmapSource) + { + this.imgPlayer.Dispatcher.Invoke(new Action(() => + { + ShowMsg(""); + _playingSuccess = true; + this.imgPlayer.Source = bitmapSource; + })); + } + + + + + public bool PlayThread() + { + try + { + if (_camera == null) + { + return false; + } + ClearAIBox(); + _playing = true; + UPDateTime(); + //string url = "rtsp://admin:hk123456@192.168.1.108:554/cam/realmonitor?channel=1&subtype=1&unicast=true&proto=Onvif"; + // string url = "rtsp://admin:hk123456@192.168.1.65:554/Streaming/Channels/102?transportmode=unicast&profile=Profile_2"; + string url = _camera.RtspURL(); + FFmpegBinariesHelper.RegisterFFmpegBinaries(); + + // Console.WriteLine($"FFmpeg version info: {ffmpeg.av_version_info()}"); + + // SetupLogging(); + // ConfigureHWDecoder(out var deviceType); + + var deviceType = AVHWDeviceType.AV_HWDEVICE_TYPE_DXVA2; + DecodeAllFramesToImages(deviceType, url); + + return true; + }catch(Exception ex) + { + FLogger.Error(ex); + return false; + } + } + + /// + /// 判断是否播放成功,因为播放没有返回,只能从有没有图片返回判断 + /// + public void CheckPlaySuccessed() + { + Task.Factory.StartNew(() => + { + Thread.Sleep(5000); + if (_playingSuccess == false) + { + _playing = false; + if (_camera != null) + { + ShowMsg(_camera.Ip + "播放失败"); + FLogger.Info(_camera.Ip +" Play:"+ _camera.RtspURL() + "播放失败"); + } + } + }); + } + + private unsafe void SetupLogging() + { + ffmpeg.av_log_set_level(ffmpeg.AV_LOG_VERBOSE); + + // do not convert to local function + av_log_set_callback_callback logCallback = (p0, level, format, vl) => + { + if (level > ffmpeg.av_log_get_level()) return; + + var lineSize = 1024; + var lineBuffer = stackalloc byte[lineSize]; + var printPrefix = 1; + ffmpeg.av_log_format_line(p0, level, format, vl, lineBuffer, lineSize, &printPrefix); + var line = Marshal.PtrToStringAnsi((IntPtr)lineBuffer); + + Log(line); + }; + + ffmpeg.av_log_set_callback(logCallback); + } + [DllImport("gdi32")] static extern int DeleteObject(IntPtr o); + private unsafe void DecodeAllFramesToImages(AVHWDeviceType HWDevice, string url) + { + // decode all frames from url, please not it might local resorce, e.g. string url = "../../sample_mpeg4.mp4"; + //*var url = "http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4*/"; // be advised this file holds 1440 frames + + using var vsd = new VideoStreamDecoder(url, HWDevice); + + Console.WriteLine($"codec name: {vsd.CodecName}"); + + var info = vsd.GetContextInfo(); + info.ToList().ForEach(x => Console.WriteLine($"{x.Key} = {x.Value}")); + + var sourceSize = vsd.FrameSize; + var sourcePixelFormat = HWDevice == AVHWDeviceType.AV_HWDEVICE_TYPE_NONE + ? vsd.PixelFormat + : FFmpegHelper.GetHWPixelFormat(HWDevice); + var destinationSize = sourceSize; + var destinationPixelFormat = AVPixelFormat.AV_PIX_FMT_BGR24; + using var vfc = + new VideoFrameConverter(sourceSize, sourcePixelFormat, destinationSize, destinationPixelFormat); + + var frameNumber = 0; + + while (_playing && vsd.TryDecodeNextFrame(out var frame)) + { + var convertedFrame = vfc.Convert(frame); + + using (var bitmap = new Bitmap(convertedFrame.width, + convertedFrame.height, + convertedFrame.linesize[0], + System.Drawing.Imaging.PixelFormat.Format24bppRgb, + (IntPtr)convertedFrame.data[0])) + { + // bitmap.Save($"img//" + DateTime.Now.ToString("MMddHHmmssfff") + ".jpg", ImageFormat.Jpeg); + + IntPtr hBitmap = bitmap.GetHbitmap(); + System.Windows.Media.ImageSource bitmapSource = Imaging.CreateBitmapSourceFromHBitmap(hBitmap, IntPtr.Zero, Int32Rect.Empty, + BitmapSizeOptions.FromEmptyOptions()); + bitmapSource.Freeze(); + DeleteObject(hBitmap); + //this.imgPlayer.Dispatcher.Invoke(new Action(() => { + + // this.imgPlayer.Source = bitmapSource; + //})); + //MemoryStream stream = new MemoryStream(); + //bitmap.Save(stream, ImageFormat.Bmp); + SetImageSource(bitmapSource); + } + + Console.WriteLine($"frame: {frameNumber}"); + frameNumber++; + } + } + + //将Bitmap对象转换成bitmapImage对象 + //public BitmapImage ConvertBitmapToBitmapImage(Bitmap bitmap) + //{ + // MemoryStream stream = new MemoryStream(); + // bitmap.Save(stream, ImageFormat.Bmp); + // BitmapImage image = new BitmapImage(); + // image.BeginInit(); + // image.StreamSource = stream; + // image.EndInit(); + // return image; + //} + + #endregion FFmpeg + + public void ShowMsg(string message) + { + this.txtShow.Dispatcher.Invoke(new Action(() => { this.txtShow.Text = message; })); + } + + private void Log(string message, bool isErr = false) + { + ShowMsg(message); + } + + public void SetSelected(bool selected) + { + Thickness thickness = new Thickness(0); + if (selected) + { + thickness = new Thickness(1); + } + this.playerBorder.Dispatcher.Invoke(new Action(() => { playerBorder.BorderThickness = thickness; })); + } + + #region 事件 + + public event EventHandler PlayerMouseDown; + + public event EventHandler PlayerMouseDoubleClick; + + public event EventHandler OnFromClose; + + private void UserControl_MouseDown(object sender, MouseButtonEventArgs e) + { + PlayerMouseDown?.Invoke(this, _videoIndex); + } + + private void UserControl_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + PlayerMouseDoubleClick?.Invoke(this, _videoIndex); + } + + /// + /// 设置最大化 + /// + /// + /// + /// + public bool SetMaximized(double width, double height) + { + if (_windowStateMax == false) + { + _normaWidth = this.Width; + _normaHeight = this.Height; + _windowStateMax = true; + ReSetSize(width, height); + } + else + { + _windowStateMax = false; + ReSetSize(_normaWidth, _normaHeight); + } + return _windowStateMax; + } + + #endregion 事件 + + #region AI 画 Box + + private void VoideWaningRec(WarningModel warningModel) + { + if (_drawAiBox == false) return; + if (!IsPlaying()) return; + + if (warningModel.ip != this._camera.Ip) + { + return; + } + UpAiUpDateTime(); + this.canvasMain.Dispatcher.Invoke(new Action(() => + { + this.canvasMain.Children.Clear(); + + double playerWidth = this._playWidth; + double playHeight = this._playHeight; + + foreach (WarningBoxModel box in warningModel.boxs) + { + double left = box.x * playerWidth; + double left1 = box.x1 * playerWidth; + double top = box.y * playHeight; + double top1 = box.y1 * playHeight; + double width = left1 - left; + double height = top1 - top; + Rectangle rectangle = new Rectangle() { Stroke = Brushes.Maroon, StrokeThickness = 2 }; + rectangle.Width = width; + rectangle.Height = height; + + this.canvasMain.Children.Add(rectangle); + Canvas.SetLeft(rectangle, left); + Canvas.SetTop(rectangle, top); + } + })); + } + + private DispatcherTimer timer = new DispatcherTimer(); + private DateTime _aiUpDateTime = DateTime.Now; + + private void timer_Tick(object sender, EventArgs e) + { + AutoClearAiBox(); + } + + private void UpAiUpDateTime() + { + _aiUpDateTime = DateTime.Now; + timer.IsEnabled = true; + } + + private void AutoClearAiBox() + { + DateTime now = DateTime.Now; + double difSeconds = DateUnit.DateDiffSeconds(_aiUpDateTime, now); + if (difSeconds > 2) + { + timer.IsEnabled = false; + ClearAIBox(); + } + } + + private void ClearAIBox() + { + this.Dispatcher.Invoke(new Action(() => + { + this.canvasMain.Children.Clear(); + })); ; + } + + #endregion AI 画 Box + + private void Grid_MouseRightButtonDown(object sender, MouseButtonEventArgs e) + { + //var drawFinished = new Button + // { + // Content = "完成", + // Background = Brushes.Green, + // BorderBrush = Brushes.Black, + // BorderThickness = new Thickness(1), + // FontSize = 18, + // Foreground = Brushes.Black, + // VerticalAlignment = VerticalAlignment.Top, + // HorizontalAlignment = HorizontalAlignment.Left, + // }; + // Panel.SetZIndex(drawFinished, 20); + // drawFinished.Click += + // delegate (object a, RoutedEventArgs b) + // { + // drawFinished = null; + // }; + // canvasMain.Children.Add(drawFinished); + // var ponit = e.GetPosition(e.Source as FrameworkElement); + // drawFinished.Margin = new Thickness(ponit.X, ponit.Y, 0, 0); + } + + private void menuOpenDraw_Click(object sender, RoutedEventArgs e) + { + if (_camera == null) + { + MessageManager.ShowMessage("相机为空"); + return; + } + if (!IsPlaying()) + { + MessageManager.ShowMessage("相机没有播放"); + return; + } + var draw = new FrmWarningDraw(_ea); + draw.Play(_camera); + draw.ShowDialog(); + _ecDrawing?.LoadDrawShape(_camera.Ip, this.Width, this.Height); + } + } +} \ No newline at end of file diff --git a/ECMonitor/UC/Videos/UCRtspVlcVideo.xaml b/ECMonitor/UC/Videos/UCRtspVlcVideo.xaml new file mode 100644 index 0000000..af8f71d --- /dev/null +++ b/ECMonitor/UC/Videos/UCRtspVlcVideo.xaml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/ECMonitor/UC/Videos/UCRtspVlcVideo.xaml.cs b/ECMonitor/UC/Videos/UCRtspVlcVideo.xaml.cs new file mode 100644 index 0000000..9da4aec --- /dev/null +++ b/ECMonitor/UC/Videos/UCRtspVlcVideo.xaml.cs @@ -0,0 +1,272 @@ +using EC.Entity.Video; +using EC.Onvif; +using LibVLCSharp.Shared; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; + + +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace ECMonitor.UC.Videos +{ + /// + /// UCRtspVlcVideo.xaml 的交互逻辑 + /// + public partial class UCRtspVlcVideo : UserControl,IUCPlayer + { + + LibVLC _libVLC; + MediaPlayer _mediaPlayer; + public string Message { get; set; } + + public MonitorCamera Camera { get; set; } + private OnvifClient _onvifClient { get; set; } + public int VideoType { get; set; } + /// + /// 更新时间 + /// + private DateTime upDateTime; + + public UCRtspVlcVideo(double width, double height, int index, string aspectRatio = "4:3") + { + this.Width = width; + this.Height = height; + InitializeComponent(); + this.Name = "UCVideoPlay" +index; + + // "--no-audio" 没有声音 + _libVLC = new LibVLC(enableDebugLogs: true, "--rtsp-frame-buffer-size=0", "--no-audio", "--quiet-synchro"); + _mediaPlayer = new MediaPlayer(_libVLC); + _mediaPlayer.AspectRatio = aspectRatio; + + videoView1.MediaPlayer = _mediaPlayer; + + + + + } + + + + + public void ReSetSize(double width, double height) + { + Width = width; + Height = height; + } + + + + /// + /// 播放 + /// + /// IP地址 + /// 用户 + /// 密码 + //public void Play(string ip,string userName,string passWord) + //{ + // this.Ip = ip; + // string url = string.Format(RTSPUrlFormat, userName, passWord, ip); + // Play(url); + //} + public bool Play(MonitorCamera camera) + { + if (IsPlaying()) + { + Stop(); + } + Camera = camera; + if (Camera == null) + { + return false; + } + videoView1.Height = this.ActualHeight - 3; + videoView1.Width = this.ActualWidth - 3; + + string url = Camera.RtspURL(); + var media = new Media(_libVLC, new Uri(url), "--newwork-caching=0", "--rtsp-frame-buffer-size=0", "--no-audio"); + bool play= _mediaPlayer.Play(media); + //_mediaPlayer.ToggleFullscreen(); + + return play; + + + } + public bool Play() + { + + if (Camera == null) + { + return false; + } + bool play = _mediaPlayer.Play(); + _mediaPlayer.ToggleFullscreen(); + return play; + } + public void Stop() + { + _mediaPlayer?.Stop(); + } + + public void UPDateTime() + { + upDateTime = new DateTime(); + } + /// + /// 判断预警是否接触 + /// + /// + public bool IsTimeOut() + { + DateTime now = new DateTime(); + double difSeconds = DateUnit.DateDiffSeconds(upDateTime, now); + return difSeconds > 30; + } + public string GetCameraIp() { + if (Camera != null) + { + return Camera.Ip; + } + return ""; + } + /// + /// 播放器类型 + /// + /// + public int GetPlayerType() + { + return VideoType; + } + + + /// + /// 相机 + /// + /// + public MonitorCamera GetCamera() + { + return Camera; + } + + public OnvifClient GetOnvifClient() + { + return _onvifClient; + } + + public UserControl GetControl() + { + return this; + } + + public string GetMessage() + { + return Message; + } + + public string GetName() + { + return this.Name; + } + /// + /// 是否是空播放器 + /// + /// + public bool IsNullPlay() + { + return Camera == null; + } + /// + /// 是否正在播放 + /// + /// + public bool IsPlaying() + { + if (Camera == null|| _mediaPlayer==null) + { + return false; + } + return _mediaPlayer.IsPlaying; + } + private int listIndex = 0; + public int GetIndex() + { + return listIndex; + } + + public void SetIndex(int index) + { + listIndex = index; + } + /// + /// 是否显示 + /// + private bool IsShow = false; + + public event EventHandler PlayerMouseDown; + public event EventHandler PlayerMouseDoubleClick; + public event EventHandler OnFromClose; + + public bool GetIsShow() + { + return IsShow; + } + public void SetIsShow(bool isShow) + { + IsShow = isShow; + } + /// + /// 设置窗体大小 + /// + /// + /// + public void SetSize(double videoWidth, double videoHeight) + { + this.Width = videoWidth; + this.Height = videoHeight; + } + + private void btnClose_Click(object sender, RoutedEventArgs e) + { + Stop(); + } + + private void btnPlay_Click(object sender, RoutedEventArgs e) + { + + } + + public void SetSelected(bool selected) + { + throw new NotImplementedException(); + } + + public bool Play(MonitorCamera camera, bool replay = false) + { + throw new NotImplementedException(); + } + + public bool SetMaximized(double width, double height) + { + throw new NotImplementedException(); + } + + public bool IxMaximized() + { + throw new NotImplementedException(); + } + + public void ShowMsg(string message) + { + throw new NotImplementedException(); + } + } +} diff --git a/ECMonitor/UC/Videos/pen.png b/ECMonitor/UC/Videos/pen.png new file mode 100644 index 0000000000000000000000000000000000000000..bd4e9e1915ce3df278cb846c9a1e5baf7905aefc GIT binary patch literal 874 zcmV-w1C{)VP)Px&BuPX;R5(v{ls#-5MHq&kZ})agqCkZBQHXte3C8kWPT&S18bk^N5+o>goCpej zszem2Qc)lr3FHEif`8F~n*dIM5Rrg}K!*gbg1vWf$j|x*hy@Y?l6dcKJ~XS{%VuM? z8tpgp%sbz_?+Ar23e86Xj|+S_8Yjn!weonOYM$}X!vZHqmpbp|b;$><(9F8ACo-ex zD=1(6AG95sS5d~S+P6Htz zG`lP~F)379)!NA{()u?J9EIi-@M9y}y%h%UgWL&B3QXmjhA+69{ zP}O6NrOwCcQGlWr zw~E~_ zM;SK13*-Oetfs%#^K%hoMj^O?X<(a;+zY=>qV*sJ30tzWu!p$v-#xdT7=)I;uZ z7ubVS0y9OMU5{SPye7&%+mngL%KF)xdbWdYz70+Ya<_wx#K}Ud8a#-|mjWN$5WOfg z&P$W|#4>DgaMMuFx1R`ld#0?Z)~+>{yWd4amEGcbUkDseqnGvVoWgL?`Tb1SZrLf; zonEd%u*jh2k)9(2?jmR2s4PgxB0pMaiPIi`I8^u(i3GAo@$)5Xu;d1)g zq|Xk_2{PBSGPjX!Hd3l^2$&13935U>UvzW+1KbIRfKoDUWdHyG07*qoM6N<$f}z>% literal 0 HcmV?d00001 diff --git a/ECMonitor/UC/Videos/画板 10 副本 48.png b/ECMonitor/UC/Videos/画板 10 副本 48.png new file mode 100644 index 0000000000000000000000000000000000000000..a96f84b9b278e6417b3fa15098e770d5c95f7f80 GIT binary patch literal 2792 zcmVP)PxG89u$<#boT^Ac1Z{*iLBz2Ga%r>A%}9wAxB6MazF?W z#1K?Kg%uDGcjbn7purUs5Dlw{2P;Na1mwPvBSBY4GTjqh7iGHkRnJVEk%Y{2_rPqu zH*Y%W|N6fAtGc@CAHr2=PNy?Y5QKXeV|M_kLqv5LV|Dp80RCMAz#$?!$QaYVHBCDt z%kt@PhezRXP+nf%^wOnEiA2-}KqmkR2K}5TqQ7gJwqBOy&kfqRqMD@yD2mdbh(rq!ZwUcqWo1c%AdCcXzg2-<$qr-eOPkF$&u+KBYu2AB0u)6_ z1Hgf|H5-T#eIk0@?RL+1I2`+p=yM%I1eBJR+HE#l9)N*H9b2Wx7%LY9VV=w7njaGr z^K+KMbtq$Ob#;a! z^nRu!NlUL3+Z8iFRn_i{u@52?Tu@;VQ4>)VPgEsbB>}3cw$?Q5Ga{-Tl&8oQIx9(1 z!;lClDk{1mDk`cFK=a7O6?|ljv4yfMkFQLl(hN{lbsA%AM({2oUy_K%i=w#j_mN&k zKv`K?Ga@P^qNvD+6GJX)aqjznLzX4ftIM|y z%s0l^Vp*26swBYWa`n|TZG(AN<}9pUyACfcd%40$*G~6hWYQ2cj*B&C82DKbgcf$Y z{fN&{Kn6ISPM-RAoAqKwf90yx$Xn%EcGSKp8b6&c)vp`H#bVa2Hr5)lW>U!? z{PUyZk-O}eZm~(%_GmURaBK0$A4>7BW%+QOJCD?qVMt3EX4pI5rMBDc+w>uzC<+IE z)pvLN!Ou)>f}U;b=mdPc(=+ikzOOCr8rmxWWbux@*pasu?GsyL!R%)Z6W|*LJ_49w zO9mDF!A~D?3;J}pNe8bnhHkArMDP~Zp%q#r_p9)-_pJh){B%3|KGXwGJT}gtcYPRq zDT-oyayp$2i74y`5dM++gMT8aF$UaMPX~O-%`i7J0XBl31wImD+cih4M+e~CuKoCG z`CGcFsX5u`)#Cxf1aL(`5bBc4x6a{iiiSh(D? z!W%!JAyT^k5jjhb;^HqHd;)4-?*YGcPZ=gJJ%%nV9q7~|x*`+!y^KePW90B5L3*rK zY!)es@+5%gsueXUux8yxELgl;w=$-03{oFzfC+y)j7u8yp1-k{O~1EouTux#xs?Nd zNo^7^6f#psAZ6$vlac(U&KUbECxAzlZkg3e482?M0cJ1oyoqM?Zh-XOG02#A5Q0E> zeoO-FH+sMq?pKhz?5N)BGe+GS0Dk=FQ5ZI;ztv%`-~@zqw|CP=A7jRx1p(kwX6;AK z8iGFINq^u6!@yUER7_rS6rEc|gFhAgC&7thGcdS+AFILhCqaH#3E1-4=a@QkP5}5J z&+bL-S~kob6Ay>|di~zlM^x{akH%BUjRU|>${LM95BIhlyw~7*PQW?<4_ocwpM~2o zdD_eX@cpKK1F80P;48kHWDoe=$6OUX&mW2YJwG{nEc*9;(CX0q?QJGiRo`HYC0XfZ z`;MK+o}#~NRE+rtb9SMQbiEG#=4j6ve(wnva+Vy|C%oLDjRL?=nV5xsy~1(I9)NVS z<&)s9J^PUP*pvY9owL72{pgzdg!iX99`Fag{ZW4ec5WH1uLrJj&-++d!B>JW5>d7l z8Q^xiF)%qz-^$|cg{%ZjU3na_^=e^GMm%Ec-Jt*f(CMF$v*ZZ6w2H>WL4n{WjT?qmWg0zzY0u5YN1tp(?!GguN7egZG*oO^C1vNM5lt*szT7IsOU2| z1vP5a!1~p%;D-w(a7YqPoH~W<+-Z1w#$CwqKIb$0#sq+$FeVj42U`9hsumJsEY9~j z%y&tRR&wc%)~w%%1&fyBq3#c0{&Pz9`gLa72&4?LZfzf8 z{CScjrRfAXoz4+N^lFF(D#Xtgox{MCG&E`$i-NcFVY7MG_P=i%H+_iQ>7K>W=#j~I zG-PjDxgi*;ujk+_f#~3>x%W^YrsA5}ORn<*K3mgZfq~lCcG1le3g4>%W;Mj?i zDEMFt3N~-SciuGtch)qa3EH=9V`?+gGhzh22JJ_{5=oNA`V&$a0lfY)nhOv@q{Evp6x0BIiWI>yck*#go6=S4{Vfy-J&So zO+*)iB7h6=qG-k#-!T1uZ%#oFdfDxEUiEfatFBNo(u<>m>6}L-NviVXyV_deaBrIj zgTRDLnj}g5cMVmxY6h*C!!U0 zyS>1uEmH*e5y3NoPm+m70|`aX3gA9}mJr}G=B+mELqxs9QFCY|@URfz-;3VbLtc7k zru^<(#u%?(F0|Qfg;7ya2SUk|U}P=LfT|ppl$12J*=$XT=r$s1${5o>MD!~F{+e1s uM7&b9gkLkp4hw>??MlD(2?ks+GXDeDCm@1Kb`bCY0000Px&>PbXFR9Hu?mrrOMRUF4ZzuDc{+7d)iC?z|4X~`x*L|SWms6^CL^-@TL21P4g z1W$sf7wbU-o zt-!ws%*W?{0uutKr#j(VqXgaO?ZAIi;dJ7gg<2~ADI(uddp*c8yOys*1? z;5UBH3QZnFmUte7v;+S&g?AAy?dgRlE4R3l73(}txZ-gRExR5_gXnqsptJ(N4%}aW z*#n($#dW(tBbj_@5J}6OTp9tP?@Oyvx`N1@qKBqC-S2Hk1ZF%~aG}z2!konkHXxP< z(VQ&KiRWDb-jjAvdRCEhs$84C86Ghoy5ehrKNG=xmM3DUR7=Ed=fYYu#>zj3LPhng+1}&j1P?|ycDbRBQ_oPAOtz>qT+bt>5^i0!5?a!@Zf(< zXxC#A(RqQrF2p!Xsf93Gl<{a%d^IRP8KIv6B~f`r+7g?k zEqo{(mC{2hatYYymbx?p{|kZRri=vnBSN159*HUY)i=(q$iD1)B9iDubMC3Pq_98P zXQWvvJtrc4%bj|^4b%lLuSfdj?5*y#QSI1$o^d%Hnk}1KvFaQ`9pNV;>b;3>eRhR# qE27DFS1YCGRXC~0jKG<+8}`3g0j>ifgd)rU0000 + + + + + + + + + + + + + + + + + + diff --git a/ECMonitor/Views/FrmVideoPlayer.xaml.cs b/ECMonitor/Views/FrmVideoPlayer.xaml.cs new file mode 100644 index 0000000..e05d43c --- /dev/null +++ b/ECMonitor/Views/FrmVideoPlayer.xaml.cs @@ -0,0 +1,134 @@ +using EC.Entity.Video; +using EC.Utils.Config; +using ECMonitor.Code; +using ECMonitor.Manager; +using ECMonitor.UC.Videos; +using Prism.Events; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Shapes; + +namespace ECMonitor.Views +{ + /// + /// FrmVideoPlayer.xaml 的交互逻辑 + /// + public partial class FrmVideoPlayer : Window + { + IEventAggregator _ea; + VideoPlayManager _videoPlayManager { get; set; } = new VideoPlayManager(); + IUCPlayer _ucFFmpegPlayer; + public FrmVideoPlayer(IEventAggregator ea) + { + InitializeComponent(); + _ea = ea; + if (ConfigHelper.VideoAIDetection()==true) + { + _ucFFmpegPlayer = _videoPlayManager.CreateVideoAI(600, 400, 0, false); + } + else + { + _ucFFmpegPlayer = _videoPlayManager.CreateVideo(_ea,800, 530, 0, false); + } + + + this.planMain.Children.Add(_ucFFmpegPlayer.GetControl()); + + } + + private void Window_Loaded(object sender, RoutedEventArgs e) + { + //double x1 = SystemParameters.PrimaryScreenWidth;//得到屏幕整体宽度 + //double y1 = SystemParameters.PrimaryScreenHeight;//得到屏幕整体高度 + + //x1 = x1 * 0.5; + //y1 = y1 * 0.5; + //this.Width = x1; + //this.Height = y1; + SizeChange(); + } + + private void SizeChange() + { + double x1 = this.ActualWidth - 4;//得到窗体整体宽度 + double y1 = this.ActualHeight - 4;//得到窗体整体高度 + + _ucFFmpegPlayer.ReSetSize(x1, y1);//Margin="1,1,1,1" + } + + public void Play(string cameraIp) { + MonitorCamera camera = CameraManager.GetCamera(cameraIp); + if (camera == null) { + _ucFFmpegPlayer.ShowMsg("相机不存在IP=" + cameraIp); + } + else + { + _ucFFmpegPlayer.Play(camera); + } + ShowAndActive(); + } + public void ShowAndActive() + { + this.Dispatcher.Invoke(new Action(() => + { + this.Show(); + this.Activate(); + + })); + + + } + + private void Window_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + if (this.WindowState == WindowState.Maximized) + { + this.WindowState = WindowState.Normal; + } + else + { + this.WindowState = WindowState.Maximized; + } + } + + private void Window_SizeChanged(object sender, SizeChangedEventArgs e) + { + SizeChange(); + } + + private void Window_KeyDown(object sender, KeyEventArgs e) + { + if(e.Key== Key.Escape) + { + if (this.WindowState == WindowState.Maximized) + { + this.WindowState = WindowState.Normal; + } + } + } + + private void btnClose_Click(object sender, RoutedEventArgs e) + { + _ucFFmpegPlayer.Stop(); + this.Hide(); + } + + private void Window_MouseMove(object sender, MouseEventArgs e) + { + if (e.LeftButton == MouseButtonState.Pressed) + { + this.DragMove(); + } + } + } +} diff --git a/ECMonitor/Views/FrmVideoWanging.xaml b/ECMonitor/Views/FrmVideoWanging.xaml new file mode 100644 index 0000000..96cfce8 --- /dev/null +++ b/ECMonitor/Views/FrmVideoWanging.xaml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ECMonitor/Views/FrmVideoWanging.xaml.cs b/ECMonitor/Views/FrmVideoWanging.xaml.cs new file mode 100644 index 0000000..6023971 --- /dev/null +++ b/ECMonitor/Views/FrmVideoWanging.xaml.cs @@ -0,0 +1,486 @@ +using EC.Entity.Video; +using EC.Utils; +using EC.Utils.Config; +using ECMonitor.Code; + +using ECMonitor.Manager; +using ECMonitor.UC.Videos; +using Prism.Events; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Shapes; + +namespace ECMonitor.Views +{ + /// + /// FrmVideoWanging.xaml 的交互逻辑 + /// + public partial class FrmVideoWanging : Window + { + VideoPlayManager _videoPlayManager { get; set; } = new VideoPlayManager(); + + double _videoWidth = 400; + double _videoHeight = 300; + /// + /// 正在播放的视频数量 + /// + private int _playerNumber { get; set; } = 0; + /// + ///当前窗体类型1,2(4),3(9),4(16) + /// + private int _playerRowNumber = 0; + /// + /// 播放器窗体数量 + /// + private int _playerWindowsNumber = 0; + /// + /// 自动运行 + /// + bool _running = true; + /// + /// 自动关闭窗体 + /// + bool? _autoClose { get; set; } = true; + bool _formIsShow = false; + IEventAggregator _ea; + public FrmVideoWanging(IEventAggregator ea) + { + InitializeComponent(); + _ea = ea; + _autoClose = ConfigHelper.AutoWarningClose(); + chkAutoClose.IsChecked = _autoClose; + } + #region 系统设置 + private void Window_Loaded(object sender, RoutedEventArgs e) + { + ChangePlayerGridByRowNum(1); + RunAutoClosePlayerServer(); + + } + + private void btnClose_Click(object sender, RoutedEventArgs e) + { + FormHide(); + } + public void ShowAndActive() + { + if (_formIsShow == false) + { + this.Dispatcher.Invoke(new Action(() => + { + this.Show(); + this.Activate(); + if (this.WindowState == WindowState.Minimized) + { + this.WindowState = WindowState.Normal; + } + })); + + _formIsShow = true; + } + + + + + } + public void FormHide() + { + this.Dispatcher.Invoke(new Action(() => + { + this.Hide(); + })); + + _formIsShow = false; + + } + private void Window_MouseMove(object sender, MouseEventArgs e) + { + if (e.LeftButton == MouseButtonState.Pressed) + { + this.DragMove(); + } + } + #endregion + /// + /// 设置窗体每行播放器数量 + /// + /// + private void ChangePlayerGridByRowNum(int rowNumber = 1) + { + this.Dispatcher.Invoke(new Action(() => + { + ChangePlayerGridByRowNumInvoke(rowNumber); + })); + } + private void ChangePlayerGridByRowNumInvoke(int rowNumber = 1) + { + if (_playerRowNumber == rowNumber) + { + return; + } + _playerRowNumber = rowNumber; + double width = 900; + double height = 645; + #region 计算窗体大小 + double screenWidth = SystemParameters.PrimaryScreenWidth;//得到屏幕整体宽度 + double screenHeight = SystemParameters.PrimaryScreenHeight;//得到屏幕整体高度 + + if (rowNumber < 4) + { + width = 900; + height = 645; + } + else + { + width = 1200; + height = 845; + } + + this.Width = width; + this.Height = height; + this.Left = (screenWidth - width) / 2 - 10; + double top = (screenHeight - height) / 2 - 20; + if (top < 10) top = 10; + this.Top = top; + + + + #endregion + + //Padding =2,2,2,2 + width = width - 4; + height = height - 4-45; + _videoWidth = width / rowNumber - 5; + _videoHeight = height / rowNumber - 5; + int showVideoNumber = rowNumber * rowNumber; + _playerWindowsNumber = showVideoNumber; + int addedVideoNumber = _videoPlayManager.GetUCVideoList().Count(); + + + int dif = showVideoNumber - addedVideoNumber; + //已经添加的 多余界面 + if (dif < 0) + { + //设置界面大小 + for (int i = 0; i < showVideoNumber; i++) + { + var videoPlay = _videoPlayManager.GetUCVideoList()[i]; + videoPlay.ReSetSize(_videoWidth, _videoHeight); + + string ucname = videoPlay.GetName(); + var rtspVideo = (UserControl)this.panMain.FindName(ucname); + if (rtspVideo == null)//如果没有添加的添加 + { + this.panMain.Children.Add(videoPlay.GetControl()); + this.panMain.RegisterName(videoPlay.GetName(), videoPlay.GetControl()); + } + } + //从界面删除 + for (int i = showVideoNumber; i < addedVideoNumber; i++) + { + var videoPlay = _videoPlayManager.GetUCVideoList()[i]; + RemoveFromView(videoPlay.GetName()); + + } + + } + else if (dif >= 0) ///已经添加的少于界面 + { + //设置界面大小 + for (int i = 0; i < addedVideoNumber; i++) + { + var videoPlay = _videoPlayManager.GetUCVideoList()[i]; + videoPlay.ReSetSize(_videoWidth, _videoHeight); + string ucname = videoPlay.GetName(); + var rtspVideo = (UserControl)this.panMain.FindName(ucname); + if (rtspVideo == null) + { + this.panMain.Children.Add(videoPlay.GetControl()); + this.panMain.RegisterName(videoPlay.GetName(), videoPlay.GetControl()); + } + } + //添加新的视频窗体 + for (int i = 0; i < dif; i++) + { + var iUCVideo = _videoPlayManager.CreateWaringVideo(_ea,_videoWidth, _videoHeight,0,false); + var ucvideo = iUCVideo.GetControl(); + ucvideo.Margin = new Thickness(2, 2, 2, 2); + this.panMain.Children.Add(ucvideo); + this.panMain.RegisterName(ucvideo.Name, ucvideo); + iUCVideo.PlayerMouseDown += PlayerMouseDown; + } + + } + + } + /// + /// 选中设置 + /// + /// + /// + private void PlayerMouseDown(object sender, int videoIndex) + { + _videoPlayManager.SetALLUnSelected(); + (sender as IUCPlayer).SetSelected(true); + + } + private void Play(string ip, int playNumber) + { + try + { + int playerIndex = playNumber - 1; + var ucVideoList = _videoPlayManager.GetUCVideoList(); + int icount = ucVideoList.Count(); + if(icount< playNumber){ + LogFactory.GetLogger().Debug("videoPlayManager.GetUCVideoList count ="+ icount); + return; + + } + var videoPlay = ucVideoList[playerIndex]; + if (videoPlay == null) + { + MessageManager.ShowMessage("当前选中的播放器 SelectIndex=" + playerIndex.ToString(), true); + + return; + } + + MonitorCamera camera = CameraManager.GetCamera(ip); + if (camera == null) + { + MessageManager.ShowMessage(ip + "相机没有在系统登记 临时创建 ", true); + camera = new MonitorCamera(ip, 8000, "admin", "hk123456"); + } + bool play = videoPlay.Play(camera); + + }catch(Exception ex) + { + LogFactory.GetLogger().Debug(ex.Message); + } + + + + + } + + + public void NewWarningPlay(string cameaIp) + { + lock (this) + { + int playNumber = 0; + List playerList = _videoPlayManager.GetUCVideoList(); + + foreach (IUCPlayer player in playerList) + { + if (player.IsPlaying()) + { + playNumber++; + if (player.GetCameraIp() == cameaIp)//发现已经在播放列表 + { + player.UPDateTime(); + ShowAndActive(); + LogFactory.GetLogger().Debug("return ameaIp==" + cameaIp); + return; + } + } + } + playNumber++; + ChangePlayerGridByAllPlayerNumber(playNumber); + LogFactory.GetLogger().Debug(" Play--------cameaIp=" + cameaIp + ", playNumber="+ playNumber + " "); + Play(cameaIp, playNumber); + _playerNumber = playNumber; + if (playNumber > 0) + { + ShowAndActive(); + } + } + } + /// + ///通过播放器数量 修改播放排列表格 + /// + /// + public void ChangePlayerGridByAllPlayerNumber(int playNumber) + { + if (playNumber <= _playerWindowsNumber) + { + return; + } + if (playNumber <= 1) + { + ChangePlayerGridByRowNum(1); + } + else if (playNumber <= 4) + { + ChangePlayerGridByRowNum(2); + } + else if (playNumber <= 9) + { + ChangePlayerGridByRowNum(3); + } + else if (playNumber <= 16) + { + ChangePlayerGridByRowNum(4); + } + else//太多预警没法显示 + { + return; + } + } + + private void Button_Click(object sender, RoutedEventArgs e) + { + NewWarningPlay("192.168.1.65"); + NewWarningPlay("192.168.1.108"); + //PlalersNumberChange(tmpplayerRowNumber); + //tmpplayerRowNumber++; + //if (tmpplayerRowNumber > 4) + //{ + // tmpplayerRowNumber = 1; + //} + } + + + private void chkAutoClose_Click(object sender, RoutedEventArgs e) + { + _autoClose = chkAutoClose.IsChecked; + //if (_autoClose == true) + //{ + // RunAutoClosePlayerServer(); + //} + } + private void RunAutoClosePlayerServer() + { + Task.Factory.StartNew(() => + { + while (_running) + { + try + { + lock (this) + { + if (_playerNumber > 0) + { + AutoClose(); + } + + } + }catch(Exception ex) + { + LogFactory.GetLogger().Error(ex.Message); + } + + Thread.Sleep(1000); + } + }); + } + private void AutoClose() + { + + int playNumber = 0; + List playerList = _videoPlayManager.GetUCVideoList(); + int icount = playerList.Count(); + for (int i = icount - 1; i >= 0; i--) + { + IUCPlayer player = playerList[i]; + if (player.IsPlaying()) + { + if (player.IsTimeOut()) + { + player.Stop(); + //if (i > 0) + //{ + RemoveFromView(player.GetName()); + playerList.RemoveAt(i); + //} + playerList.Add(player); + AddToView(player); + continue; + } + playNumber++; + } + + } + if(playNumber<4 ) + { + if( _playerRowNumber >= 9) + { + ChangePlayerGridByAllPlayerNumber(playNumber); + } + + } + else if (playNumber < 8) + { + if ( _playerRowNumber >= 16) + { + ChangePlayerGridByAllPlayerNumber(playNumber); + } + + } + if (playNumber == 0)//关闭窗体时才修改窗体大小 + { + if (_autoClose==true) + { + FormHide(); + ChangePlayerGridByAllPlayerNumber(playNumber); + } + + } + _playerNumber = playNumber; + + } + + /// + /// 从窗体删除 + /// + /// + private void RemoveFromView(string ucname) + { + this.panMain.Dispatcher.Invoke(new Action(() => + { + var uiplayer = (UserControl)this.panMain.FindName(ucname); + if (uiplayer != null) + { + this.panMain.Children.Remove(uiplayer); + this.panMain.UnregisterName(ucname); + + } + })); + + } + + /// + /// 从窗体删除 + /// + /// + private void AddToView(IUCPlayer videoPlay) + { + this.panMain.Dispatcher.Invoke(new Action(() => + { + + if (videoPlay != null) + { + this.panMain.Children.Add(videoPlay.GetControl()); + this.panMain.RegisterName(videoPlay.GetName(), videoPlay.GetControl()); + + } + })); + + } + + private void Window_Closed(object sender, EventArgs e) + { + _running = false; + } + } +} diff --git a/ECMonitor/Views/RtspMonitor.xaml b/ECMonitor/Views/RtspMonitor.xaml new file mode 100644 index 0000000..32112ec --- /dev/null +++ b/ECMonitor/Views/RtspMonitor.xaml @@ -0,0 +1,26 @@ + + + + + + + + + +
+ + +

websocket 调用:

+
+ //弹出单一窗体显示,下一个视频代替前一个
+ {"topic":"Show_Single_Video","msg":"192.168.1.65"}
+ //主窗体显示
+ {"topic":"MainFrom_Show_Video","msg":"192.168.1.65"}
+

+ ZMQ 发送消息
+ +

+
+ //弹出单一窗体显示,下一个视频代替前一个
+ "topic":"Show_Single_Video","msg":"192.168.1.65"
+ //主窗体显示
+ "topic":"MainFrom_Show_Video","msg":"192.168.1.65"
+ //预警
+ "topic":"Warning_Show_Video","msg":"192.168.1.65"
+ \ No newline at end of file diff --git a/公共库/EC.NetLogger/EC.NetLogger.csproj b/公共库/EC.NetLogger/EC.NetLogger.csproj new file mode 100644 index 0000000..29941fa --- /dev/null +++ b/公共库/EC.NetLogger/EC.NetLogger.csproj @@ -0,0 +1,70 @@ + + + + + Debug + AnyCPU + {87459A73-3726-4652-B051-DD407C51F3D8} + Library + Properties + EC.NetLogger + EC.NetLogger + v4.5 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\Dll\EC.UsingEventAggregator.dll + + + ..\..\Dll\EC.Util.dll + + + False + ..\..\Common\EC.Utils\bin\Debug\NetMQ.dll + + + + + + + + + + + + + + + + + + + {d2a884b9-132f-470b-b36f-8c6723c19a7e} + EC.Entity + + + {8edae882-b40e-493c-8858-450411335d4b} + EC.Utils + + + + \ No newline at end of file diff --git a/公共库/EC.NetLogger/ECLoggerManager.cs b/公共库/EC.NetLogger/ECLoggerManager.cs new file mode 100644 index 0000000..47ea4c3 --- /dev/null +++ b/公共库/EC.NetLogger/ECLoggerManager.cs @@ -0,0 +1,38 @@ +using EC.NetLogger; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EC.NetLogger +{ + public class ECLoggerManager + { + public static void Init() + { + ECLogger.SubLog += ECLogger_SubLog; + } + + private static void ECLogger_SubLog(ECLoggerModel log) + { + switch (log.Level) + { + case ECLoggerLevel.Debug: + LogUnit.Debug(log.Message); + break; + case ECLoggerLevel.Info: + LogUnit.Info(log.Message); + break; + case ECLoggerLevel.Warning: + LogUnit.Warn(log.Message); + NetLoggerManger.SendFileLogger("warning",log.Message); + break; + case ECLoggerLevel.Error: + LogUnit.Error(log.Message); + NetLoggerManger.SendFileLogger("error", log.Message); + break; + } + } + } +} diff --git a/公共库/EC.NetLogger/NetLoggerManger.cs b/公共库/EC.NetLogger/NetLoggerManger.cs new file mode 100644 index 0000000..4887c98 --- /dev/null +++ b/公共库/EC.NetLogger/NetLoggerManger.cs @@ -0,0 +1,20 @@ +using EC.Entity.BaseData; + +using System; + +using EC.Util.NetLogger; + +namespace EC.NetLogger +{ + public class NetLoggerManger: MQLoggerManger + { + + public static void SendCommandLogger(CommandJsonDataEntity entity) + { + Send("cmd", JsonUnit.ObjectToJson(entity)); + + + } + + } +} diff --git a/公共库/EC.NetLogger/Properties/AssemblyInfo.cs b/公共库/EC.NetLogger/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..11c390f --- /dev/null +++ b/公共库/EC.NetLogger/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("EC.NetLogger")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("EC.NetLogger")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("87459a73-3726-4652-b051-dd407c51f3d8")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/公共库/EC.NetLogger/TCPLoggerManger.cs b/公共库/EC.NetLogger/TCPLoggerManger.cs new file mode 100644 index 0000000..c861298 --- /dev/null +++ b/公共库/EC.NetLogger/TCPLoggerManger.cs @@ -0,0 +1,59 @@ +using EC.Entity.BaseData; +using EC.Util.NetLogger; +using EC.Utils.SocketHelper; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EC.NetLogger +{ + public class TCPLoggerManger + { + static SocketClient Socket_Client = null; + + public static bool Init(string ip, int port) + { + Socket_Client = new SocketClient(ip, port); + return Socket_Client.Start(); + } + + public static void SendCommandLogger(CommandJsonDataEntity entity) + { + Task.Factory.StartNew(() => + { + if (Socket_Client == null) return ; + if (entity == null) return ; + + string sendStr = NetLoggerKey.CommandKey + JsonUnit.ObjectToJson(entity); + bool send= Socket_Client.SendToService(sendStr); + if (!send) + { + LogUnit.Error("发送网络日志失败"); + } + }); + + } + public static void SendFileLogger(CommandJsonDataEntity entity) + { + Task.Factory.StartNew(() => + { + if (Socket_Client == null) return; + if (entity == null) return; + + string sendStr = NetLoggerKey.CommandKey + JsonUnit.ObjectToJson(entity); + bool send = Socket_Client.SendToService(sendStr); + if (!send) + { + LogUnit.Error("发送网络日志失败"); + } + }); + + } + public static void Stop() + { + Socket_Client?.Stop(); + } + } +} diff --git a/公共库/EC.Onvif/Camera/Camera.cs b/公共库/EC.Onvif/Camera/Camera.cs new file mode 100644 index 0000000..980a38a --- /dev/null +++ b/公共库/EC.Onvif/Camera/Camera.cs @@ -0,0 +1,47 @@ +namespace EC.Onvif.Camera +{ + public class Camera + { + public Camera() + { + } + + public Camera(string cameraIp, int port, string userName, string passWord) + { + CameraCode = cameraIp; + CameraIp = cameraIp; + Port = port; + UserName = userName; + PassWord = passWord; + } + + public string CameraCode { get; set; } + public string CameraIp { get; set; } + public int Port { get; set; } + public string UserName { get; set; } + public string PassWord { get; set; } + public int CameraType { get; set; } + public bool IsPtz { get; set; } + + public string PTZUrl { get; set; } + + /// + /// 是否登录 + /// + public bool logined { get; set; } + + public bool isConnected { get; set; } + public bool dataLoaded { get; set; } + + public object device { get; set; } + + public object media { get; set; } + public object ptz { get; set; } + public object imaging { get; set; } + public object caps { get; set; } + public bool absolute_move { get; set; } + public bool relative_move { get; set; } + public bool continuous_move { get; set; } + public bool focus { get; set; } + } +} \ No newline at end of file diff --git a/公共库/EC.Onvif/Camera/CameraManager.cs b/公共库/EC.Onvif/Camera/CameraManager.cs new file mode 100644 index 0000000..22075bd --- /dev/null +++ b/公共库/EC.Onvif/Camera/CameraManager.cs @@ -0,0 +1,41 @@ +using System.Collections.Generic; + +namespace EC.Onvif.Camera +{ + public class CameraManager + { + private Dictionary CameraList = new Dictionary(); + + public bool Add(Camera camera) + { + if (CameraList.ContainsKey(camera.CameraCode)) + { + return false; + } + else + { + CameraList.Add(camera.CameraCode, camera); + return true; + } + } + + public Camera GetCameraByCode(string cameraCode) + { + if (CameraList.ContainsKey(cameraCode)) + { + return CameraList[cameraCode]; + } + return null; + } + + public void Remove(Camera camera) + { + CameraList.Remove(camera.CameraCode); + } + + public void Remove(string cameraCode) + { + CameraList.Remove(cameraCode); + } + } +} \ No newline at end of file diff --git a/公共库/EC.Onvif/Common/DataTypes.cs b/公共库/EC.Onvif/Common/DataTypes.cs new file mode 100644 index 0000000..c514398 --- /dev/null +++ b/公共库/EC.Onvif/Common/DataTypes.cs @@ -0,0 +1,23302 @@ +using EC.Onvif.Device; + +namespace EC.Onvif.Common +{ + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class OnvifVersion + { + + private int majorField; + + private int minorField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public int Major + { + get + { + return this.majorField; + } + set + { + this.majorField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public int Minor + { + get + { + return this.minorField; + } + set + { + this.minorField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class LocalOrientation + { + + private System.Xml.Linq.XElement[] anyField; + + private float panField; + + private bool panFieldSpecified; + + private float tiltField; + + private bool tiltFieldSpecified; + + private float rollField; + + private bool rollFieldSpecified; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float pan + { + get + { + return this.panField; + } + set + { + this.panField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool panSpecified + { + get + { + return this.panFieldSpecified; + } + set + { + this.panFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float tilt + { + get + { + return this.tiltField; + } + set + { + this.tiltField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool tiltSpecified + { + get + { + return this.tiltFieldSpecified; + } + set + { + this.tiltFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float roll + { + get + { + return this.rollField; + } + set + { + this.rollField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool rollSpecified + { + get + { + return this.rollFieldSpecified; + } + set + { + this.rollFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class LocalLocation + { + + private System.Xml.Linq.XElement[] anyField; + + private float xField; + + private bool xFieldSpecified; + + private float yField; + + private bool yFieldSpecified; + + private float zField; + + private bool zFieldSpecified; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float x + { + get + { + return this.xField; + } + set + { + this.xField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool xSpecified + { + get + { + return this.xFieldSpecified; + } + set + { + this.xFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float y + { + get + { + return this.yField; + } + set + { + this.yField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool ySpecified + { + get + { + return this.yFieldSpecified; + } + set + { + this.yFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float z + { + get + { + return this.zField; + } + set + { + this.zField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool zSpecified + { + get + { + return this.zFieldSpecified; + } + set + { + this.zFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class GeoOrientation + { + + private System.Xml.Linq.XElement[] anyField; + + private float rollField; + + private bool rollFieldSpecified; + + private float pitchField; + + private bool pitchFieldSpecified; + + private float yawField; + + private bool yawFieldSpecified; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float roll + { + get + { + return this.rollField; + } + set + { + this.rollField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool rollSpecified + { + get + { + return this.rollFieldSpecified; + } + set + { + this.rollFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float pitch + { + get + { + return this.pitchField; + } + set + { + this.pitchField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool pitchSpecified + { + get + { + return this.pitchFieldSpecified; + } + set + { + this.pitchFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float yaw + { + get + { + return this.yawField; + } + set + { + this.yawField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool yawSpecified + { + get + { + return this.yawFieldSpecified; + } + set + { + this.yawFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class GeoLocation + { + + private System.Xml.Linq.XElement[] anyField; + + private double lonField; + + private bool lonFieldSpecified; + + private double latField; + + private bool latFieldSpecified; + + private float elevationField; + + private bool elevationFieldSpecified; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public double lon + { + get + { + return this.lonField; + } + set + { + this.lonField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool lonSpecified + { + get + { + return this.lonFieldSpecified; + } + set + { + this.lonFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public double lat + { + get + { + return this.latField; + } + set + { + this.latField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool latSpecified + { + get + { + return this.latFieldSpecified; + } + set + { + this.latFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float elevation + { + get + { + return this.elevationField; + } + set + { + this.elevationField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool elevationSpecified + { + get + { + return this.elevationFieldSpecified; + } + set + { + this.elevationFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class LocationEntity + { + + private GeoLocation geoLocationField; + + private GeoOrientation geoOrientationField; + + private LocalLocation localLocationField; + + private LocalOrientation localOrientationField; + + private string entityField; + + private string tokenField; + + private bool fixedField; + + private bool fixedFieldSpecified; + + private string geoSourceField; + + private bool autoGeoField; + + private bool autoGeoFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public GeoLocation GeoLocation + { + get + { + return this.geoLocationField; + } + set + { + this.geoLocationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public GeoOrientation GeoOrientation + { + get + { + return this.geoOrientationField; + } + set + { + this.geoOrientationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public LocalLocation LocalLocation + { + get + { + return this.localLocationField; + } + set + { + this.localLocationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public LocalOrientation LocalOrientation + { + get + { + return this.localOrientationField; + } + set + { + this.localOrientationField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string Entity + { + get + { + return this.entityField; + } + set + { + this.entityField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string Token + { + get + { + return this.tokenField; + } + set + { + this.tokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool Fixed + { + get + { + return this.fixedField; + } + set + { + this.fixedField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool FixedSpecified + { + get + { + return this.fixedFieldSpecified; + } + set + { + this.fixedFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType = "anyURI")] + public string GeoSource + { + get + { + return this.geoSourceField; + } + set + { + this.geoSourceField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool AutoGeo + { + get + { + return this.autoGeoField; + } + set + { + this.autoGeoField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool AutoGeoSpecified + { + get + { + return this.autoGeoFieldSpecified; + } + set + { + this.autoGeoFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class SystemLogUri + { + + private SystemLogType typeField; + + private string uriField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public SystemLogType Type + { + get + { + return this.typeField; + } + set + { + this.typeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 1)] + public string Uri + { + get + { + return this.uriField; + } + set + { + this.uriField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum SystemLogType + { + + /// + System, + + /// + Access, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Dot11AvailableNetworksExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Dot11AvailableNetworks + { + + private byte[] sSIDField; + + private string bSSIDField; + + private Dot11AuthAndMangementSuite[] authAndMangementSuiteField; + + private Dot11Cipher[] pairCipherField; + + private Dot11Cipher[] groupCipherField; + + private Dot11SignalStrength signalStrengthField; + + private bool signalStrengthFieldSpecified; + + private Dot11AvailableNetworksExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "hexBinary", Order = 0)] + public byte[] SSID + { + get + { + return this.sSIDField; + } + set + { + this.sSIDField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public string BSSID + { + get + { + return this.bSSIDField; + } + set + { + this.bSSIDField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("AuthAndMangementSuite", Order = 2)] + public Dot11AuthAndMangementSuite[] AuthAndMangementSuite + { + get + { + return this.authAndMangementSuiteField; + } + set + { + this.authAndMangementSuiteField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("PairCipher", Order = 3)] + public Dot11Cipher[] PairCipher + { + get + { + return this.pairCipherField; + } + set + { + this.pairCipherField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("GroupCipher", Order = 4)] + public Dot11Cipher[] GroupCipher + { + get + { + return this.groupCipherField; + } + set + { + this.groupCipherField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public Dot11SignalStrength SignalStrength + { + get + { + return this.signalStrengthField; + } + set + { + this.signalStrengthField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool SignalStrengthSpecified + { + get + { + return this.signalStrengthFieldSpecified; + } + set + { + this.signalStrengthFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 6)] + public Dot11AvailableNetworksExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum Dot11AuthAndMangementSuite + { + + /// + None, + + /// + Dot1X, + + /// + PSK, + + /// + Extended, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum Dot11Cipher + { + + /// + CCMP, + + /// + TKIP, + + /// + Any, + + /// + Extended, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum Dot11SignalStrength + { + + /// + None, + + /// + [System.Xml.Serialization.XmlEnumAttribute("Very Bad")] + VeryBad, + + /// + Bad, + + /// + Good, + + /// + [System.Xml.Serialization.XmlEnumAttribute("Very Good")] + VeryGood, + + /// + Extended, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Dot11Status + { + + private byte[] sSIDField; + + private string bSSIDField; + + private Dot11Cipher pairCipherField; + + private bool pairCipherFieldSpecified; + + private Dot11Cipher groupCipherField; + + private bool groupCipherFieldSpecified; + + private Dot11SignalStrength signalStrengthField; + + private bool signalStrengthFieldSpecified; + + private string activeConfigAliasField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "hexBinary", Order = 0)] + public byte[] SSID + { + get + { + return this.sSIDField; + } + set + { + this.sSIDField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public string BSSID + { + get + { + return this.bSSIDField; + } + set + { + this.bSSIDField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public Dot11Cipher PairCipher + { + get + { + return this.pairCipherField; + } + set + { + this.pairCipherField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool PairCipherSpecified + { + get + { + return this.pairCipherFieldSpecified; + } + set + { + this.pairCipherFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public Dot11Cipher GroupCipher + { + get + { + return this.groupCipherField; + } + set + { + this.groupCipherField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool GroupCipherSpecified + { + get + { + return this.groupCipherFieldSpecified; + } + set + { + this.groupCipherFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public Dot11SignalStrength SignalStrength + { + get + { + return this.signalStrengthField; + } + set + { + this.signalStrengthField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool SignalStrengthSpecified + { + get + { + return this.signalStrengthFieldSpecified; + } + set + { + this.signalStrengthFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public string ActiveConfigAlias + { + get + { + return this.activeConfigAliasField; + } + set + { + this.activeConfigAliasField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 6)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Dot11Capabilities + { + + private bool tKIPField; + + private bool scanAvailableNetworksField; + + private bool multipleConfigurationField; + + private bool adHocStationModeField; + + private bool wEPField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public bool TKIP + { + get + { + return this.tKIPField; + } + set + { + this.tKIPField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool ScanAvailableNetworks + { + get + { + return this.scanAvailableNetworksField; + } + set + { + this.scanAvailableNetworksField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public bool MultipleConfiguration + { + get + { + return this.multipleConfigurationField; + } + set + { + this.multipleConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public bool AdHocStationMode + { + get + { + return this.adHocStationModeField; + } + set + { + this.adHocStationModeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public bool WEP + { + get + { + return this.wEPField; + } + set + { + this.wEPField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 5)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Dot1XConfigurationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class EapMethodExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class TLSConfiguration + { + + private string certificateIDField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "token", Order = 0)] + public string CertificateID + { + get + { + return this.certificateIDField; + } + set + { + this.certificateIDField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 1)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class EAPMethodConfiguration + { + + private TLSConfiguration tLSConfigurationField; + + private string passwordField; + + private EapMethodExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public TLSConfiguration TLSConfiguration + { + get + { + return this.tLSConfigurationField; + } + set + { + this.tLSConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public string Password + { + get + { + return this.passwordField; + } + set + { + this.passwordField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public EapMethodExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Dot1XConfiguration + { + + private string dot1XConfigurationTokenField; + + private string identityField; + + private string anonymousIDField; + + private int eAPMethodField; + + private string[] cACertificateIDField; + + private EAPMethodConfiguration eAPMethodConfigurationField; + + private Dot1XConfigurationExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string Dot1XConfigurationToken + { + get + { + return this.dot1XConfigurationTokenField; + } + set + { + this.dot1XConfigurationTokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public string Identity + { + get + { + return this.identityField; + } + set + { + this.identityField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public string AnonymousID + { + get + { + return this.anonymousIDField; + } + set + { + this.anonymousIDField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public int EAPMethod + { + get + { + return this.eAPMethodField; + } + set + { + this.eAPMethodField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("CACertificateID", DataType = "token", Order = 4)] + public string[] CACertificateID + { + get + { + return this.cACertificateIDField; + } + set + { + this.cACertificateIDField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public EAPMethodConfiguration EAPMethodConfiguration + { + get + { + return this.eAPMethodConfigurationField; + } + set + { + this.eAPMethodConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 6)] + public Dot1XConfigurationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class CertificateInformationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class DateTimeRange + { + + private System.DateTime fromField; + + private System.DateTime untilField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public System.DateTime From + { + get + { + return this.fromField; + } + set + { + this.fromField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public System.DateTime Until + { + get + { + return this.untilField; + } + set + { + this.untilField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class CertificateUsage + { + + private bool criticalField; + + private string valueField; + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool Critical + { + get + { + return this.criticalField; + } + set + { + this.criticalField = value; + } + } + + /// + [System.Xml.Serialization.XmlTextAttribute()] + public string Value + { + get + { + return this.valueField; + } + set + { + this.valueField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class CertificateInformation + { + + private string certificateIDField; + + private string issuerDNField; + + private string subjectDNField; + + private CertificateUsage keyUsageField; + + private CertificateUsage extendedKeyUsageField; + + private int keyLengthField; + + private bool keyLengthFieldSpecified; + + private string versionField; + + private string serialNumField; + + private string signatureAlgorithmField; + + private DateTimeRange validityField; + + private CertificateInformationExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "token", Order = 0)] + public string CertificateID + { + get + { + return this.certificateIDField; + } + set + { + this.certificateIDField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public string IssuerDN + { + get + { + return this.issuerDNField; + } + set + { + this.issuerDNField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public string SubjectDN + { + get + { + return this.subjectDNField; + } + set + { + this.subjectDNField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public CertificateUsage KeyUsage + { + get + { + return this.keyUsageField; + } + set + { + this.keyUsageField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public CertificateUsage ExtendedKeyUsage + { + get + { + return this.extendedKeyUsageField; + } + set + { + this.extendedKeyUsageField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public int KeyLength + { + get + { + return this.keyLengthField; + } + set + { + this.keyLengthField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool KeyLengthSpecified + { + get + { + return this.keyLengthFieldSpecified; + } + set + { + this.keyLengthFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 6)] + public string Version + { + get + { + return this.versionField; + } + set + { + this.versionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 7)] + public string SerialNum + { + get + { + return this.serialNumField; + } + set + { + this.serialNumField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 8)] + public string SignatureAlgorithm + { + get + { + return this.signatureAlgorithmField; + } + set + { + this.signatureAlgorithmField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 9)] + public DateTimeRange Validity + { + get + { + return this.validityField; + } + set + { + this.validityField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 10)] + public CertificateInformationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class CertificateWithPrivateKey + { + + private string certificateIDField; + + private BinaryData certificateField; + + private BinaryData privateKeyField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "token", Order = 0)] + public string CertificateID + { + get + { + return this.certificateIDField; + } + set + { + this.certificateIDField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public BinaryData Certificate + { + get + { + return this.certificateField; + } + set + { + this.certificateField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public BinaryData PrivateKey + { + get + { + return this.privateKeyField; + } + set + { + this.privateKeyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 3)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class BinaryData + { + + private byte[] dataField; + + private string contentTypeField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "base64Binary", Order = 0)] + public byte[] Data + { + get + { + return this.dataField; + } + set + { + this.dataField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "http://www.w3.org/2005/05/xmlmime")] + public string contentType + { + get + { + return this.contentTypeField; + } + set + { + this.contentTypeField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class CertificateStatus + { + + private string certificateIDField; + + private bool statusField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "token", Order = 0)] + public string CertificateID + { + get + { + return this.certificateIDField; + } + set + { + this.certificateIDField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool Status + { + get + { + return this.statusField; + } + set + { + this.statusField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Certificate + { + + private string certificateIDField; + + private BinaryData certificate1Field; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "token", Order = 0)] + public string CertificateID + { + get + { + return this.certificateIDField; + } + set + { + this.certificateIDField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Certificate", Order = 1)] + public BinaryData Certificate1 + { + get + { + return this.certificate1Field; + } + set + { + this.certificate1Field = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class IPAddressFilterExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class IPAddressFilter + { + + private IPAddressFilterType typeField; + + private PrefixedIPv4Address[] iPv4AddressField; + + private PrefixedIPv6Address[] iPv6AddressField; + + private IPAddressFilterExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public IPAddressFilterType Type + { + get + { + return this.typeField; + } + set + { + this.typeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("IPv4Address", Order = 1)] + public PrefixedIPv4Address[] IPv4Address + { + get + { + return this.iPv4AddressField; + } + set + { + this.iPv4AddressField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("IPv6Address", Order = 2)] + public PrefixedIPv6Address[] IPv6Address + { + get + { + return this.iPv6AddressField; + } + set + { + this.iPv6AddressField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public IPAddressFilterExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum IPAddressFilterType + { + + /// + Allow, + + /// + Deny, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PrefixedIPv4Address + { + + private string addressField; + + private int prefixLengthField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "token", Order = 0)] + public string Address + { + get + { + return this.addressField; + } + set + { + this.addressField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public int PrefixLength + { + get + { + return this.prefixLengthField; + } + set + { + this.prefixLengthField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PrefixedIPv6Address + { + + private string addressField; + + private int prefixLengthField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "token", Order = 0)] + public string Address + { + get + { + return this.addressField; + } + set + { + this.addressField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public int PrefixLength + { + get + { + return this.prefixLengthField; + } + set + { + this.prefixLengthField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NetworkZeroConfigurationExtension2 + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NetworkZeroConfigurationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + private NetworkZeroConfiguration[] additionalField; + + private NetworkZeroConfigurationExtension2 extensionField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Additional", Order = 1)] + public NetworkZeroConfiguration[] Additional + { + get + { + return this.additionalField; + } + set + { + this.additionalField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public NetworkZeroConfigurationExtension2 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NetworkZeroConfiguration + { + + private string interfaceTokenField; + + private bool enabledField; + + private string[] addressesField; + + private NetworkZeroConfigurationExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string InterfaceToken + { + get + { + return this.interfaceTokenField; + } + set + { + this.interfaceTokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool Enabled + { + get + { + return this.enabledField; + } + set + { + this.enabledField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Addresses", DataType = "token", Order = 2)] + public string[] Addresses + { + get + { + return this.addressesField; + } + set + { + this.addressesField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public NetworkZeroConfigurationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NetworkGateway + { + + private string[] iPv4AddressField; + + private string[] iPv6AddressField; + + /// + [System.Xml.Serialization.XmlElementAttribute("IPv4Address", DataType = "token", Order = 0)] + public string[] IPv4Address + { + get + { + return this.iPv4AddressField; + } + set + { + this.iPv4AddressField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("IPv6Address", DataType = "token", Order = 1)] + public string[] IPv6Address + { + get + { + return this.iPv6AddressField; + } + set + { + this.iPv6AddressField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NetworkProtocolExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NetworkProtocol + { + + private NetworkProtocolType nameField; + + private bool enabledField; + + private int[] portField; + + private NetworkProtocolExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public NetworkProtocolType Name + { + get + { + return this.nameField; + } + set + { + this.nameField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool Enabled + { + get + { + return this.enabledField; + } + set + { + this.enabledField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Port", Order = 2)] + public int[] Port + { + get + { + return this.portField; + } + set + { + this.portField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public NetworkProtocolExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum NetworkProtocolType + { + + /// + HTTP, + + /// + HTTPS, + + /// + RTSP, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NetworkInterfaceSetConfigurationExtension2 + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NetworkInterfaceSetConfigurationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + private Dot3Configuration[] dot3Field; + + private Dot11Configuration[] dot11Field; + + private NetworkInterfaceSetConfigurationExtension2 extensionField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Dot3", Order = 1)] + public Dot3Configuration[] Dot3 + { + get + { + return this.dot3Field; + } + set + { + this.dot3Field = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Dot11", Order = 2)] + public Dot11Configuration[] Dot11 + { + get + { + return this.dot11Field; + } + set + { + this.dot11Field = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public NetworkInterfaceSetConfigurationExtension2 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Dot3Configuration + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Dot11Configuration + { + + private byte[] sSIDField; + + private Dot11StationMode modeField; + + private string aliasField; + + private string priorityField; + + private Dot11SecurityConfiguration securityField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "hexBinary", Order = 0)] + public byte[] SSID + { + get + { + return this.sSIDField; + } + set + { + this.sSIDField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public Dot11StationMode Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public string Alias + { + get + { + return this.aliasField; + } + set + { + this.aliasField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "integer", Order = 3)] + public string Priority + { + get + { + return this.priorityField; + } + set + { + this.priorityField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public Dot11SecurityConfiguration Security + { + get + { + return this.securityField; + } + set + { + this.securityField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 5)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum Dot11StationMode + { + + /// + [System.Xml.Serialization.XmlEnumAttribute("Ad-hoc")] + Adhoc, + + /// + Infrastructure, + + /// + Extended, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Dot11SecurityConfiguration + { + + private Dot11SecurityMode modeField; + + private Dot11Cipher algorithmField; + + private bool algorithmFieldSpecified; + + private Dot11PSKSet pSKField; + + private string dot1XField; + + private Dot11SecurityConfigurationExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public Dot11SecurityMode Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public Dot11Cipher Algorithm + { + get + { + return this.algorithmField; + } + set + { + this.algorithmField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool AlgorithmSpecified + { + get + { + return this.algorithmFieldSpecified; + } + set + { + this.algorithmFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public Dot11PSKSet PSK + { + get + { + return this.pSKField; + } + set + { + this.pSKField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public string Dot1X + { + get + { + return this.dot1XField; + } + set + { + this.dot1XField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public Dot11SecurityConfigurationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum Dot11SecurityMode + { + + /// + None, + + /// + WEP, + + /// + PSK, + + /// + Dot1X, + + /// + Extended, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Dot11PSKSet + { + + private byte[] keyField; + + private string passphraseField; + + private Dot11PSKSetExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "hexBinary", Order = 0)] + public byte[] Key + { + get + { + return this.keyField; + } + set + { + this.keyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public string Passphrase + { + get + { + return this.passphraseField; + } + set + { + this.passphraseField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public Dot11PSKSetExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Dot11PSKSetExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Dot11SecurityConfigurationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class IPv6NetworkInterfaceSetConfiguration + { + + private bool enabledField; + + private bool enabledFieldSpecified; + + private bool acceptRouterAdvertField; + + private bool acceptRouterAdvertFieldSpecified; + + private PrefixedIPv6Address[] manualField; + + private IPv6DHCPConfiguration dHCPField; + + private bool dHCPFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public bool Enabled + { + get + { + return this.enabledField; + } + set + { + this.enabledField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool EnabledSpecified + { + get + { + return this.enabledFieldSpecified; + } + set + { + this.enabledFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool AcceptRouterAdvert + { + get + { + return this.acceptRouterAdvertField; + } + set + { + this.acceptRouterAdvertField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool AcceptRouterAdvertSpecified + { + get + { + return this.acceptRouterAdvertFieldSpecified; + } + set + { + this.acceptRouterAdvertFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Manual", Order = 2)] + public PrefixedIPv6Address[] Manual + { + get + { + return this.manualField; + } + set + { + this.manualField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public IPv6DHCPConfiguration DHCP + { + get + { + return this.dHCPField; + } + set + { + this.dHCPField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool DHCPSpecified + { + get + { + return this.dHCPFieldSpecified; + } + set + { + this.dHCPFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum IPv6DHCPConfiguration + { + + /// + Auto, + + /// + Stateful, + + /// + Stateless, + + /// + Off, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class IPv4NetworkInterfaceSetConfiguration + { + + private bool enabledField; + + private bool enabledFieldSpecified; + + private PrefixedIPv4Address[] manualField; + + private bool dHCPField; + + private bool dHCPFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public bool Enabled + { + get + { + return this.enabledField; + } + set + { + this.enabledField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool EnabledSpecified + { + get + { + return this.enabledFieldSpecified; + } + set + { + this.enabledFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Manual", Order = 1)] + public PrefixedIPv4Address[] Manual + { + get + { + return this.manualField; + } + set + { + this.manualField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public bool DHCP + { + get + { + return this.dHCPField; + } + set + { + this.dHCPField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool DHCPSpecified + { + get + { + return this.dHCPFieldSpecified; + } + set + { + this.dHCPFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NetworkInterfaceSetConfiguration + { + + private bool enabledField; + + private bool enabledFieldSpecified; + + private NetworkInterfaceConnectionSetting linkField; + + private int mTUField; + + private bool mTUFieldSpecified; + + private IPv4NetworkInterfaceSetConfiguration iPv4Field; + + private IPv6NetworkInterfaceSetConfiguration iPv6Field; + + private NetworkInterfaceSetConfigurationExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public bool Enabled + { + get + { + return this.enabledField; + } + set + { + this.enabledField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool EnabledSpecified + { + get + { + return this.enabledFieldSpecified; + } + set + { + this.enabledFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public NetworkInterfaceConnectionSetting Link + { + get + { + return this.linkField; + } + set + { + this.linkField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public int MTU + { + get + { + return this.mTUField; + } + set + { + this.mTUField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool MTUSpecified + { + get + { + return this.mTUFieldSpecified; + } + set + { + this.mTUFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public IPv4NetworkInterfaceSetConfiguration IPv4 + { + get + { + return this.iPv4Field; + } + set + { + this.iPv4Field = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public IPv6NetworkInterfaceSetConfiguration IPv6 + { + get + { + return this.iPv6Field; + } + set + { + this.iPv6Field = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public NetworkInterfaceSetConfigurationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NetworkInterfaceConnectionSetting + { + + private bool autoNegotiationField; + + private int speedField; + + private Duplex duplexField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public bool AutoNegotiation + { + get + { + return this.autoNegotiationField; + } + set + { + this.autoNegotiationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public int Speed + { + get + { + return this.speedField; + } + set + { + this.speedField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public Duplex Duplex + { + get + { + return this.duplexField; + } + set + { + this.duplexField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum Duplex + { + + /// + Full, + + /// + Half, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class OSDConfigurationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class OSDImgConfigurationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class OSDImgConfiguration + { + + private string imgPathField; + + private OSDImgConfigurationExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 0)] + public string ImgPath + { + get + { + return this.imgPathField; + } + set + { + this.imgPathField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public OSDImgConfigurationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class OSDTextConfigurationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Color + { + + private float xField; + + private float yField; + + private float zField; + + private string colorspaceField; + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float X + { + get + { + return this.xField; + } + set + { + this.xField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float Y + { + get + { + return this.yField; + } + set + { + this.yField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float Z + { + get + { + return this.zField; + } + set + { + this.zField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType = "anyURI")] + public string Colorspace + { + get + { + return this.colorspaceField; + } + set + { + this.colorspaceField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class OSDColor + { + + private Color colorField; + + private int transparentField; + + private bool transparentFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public Color Color + { + get + { + return this.colorField; + } + set + { + this.colorField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int Transparent + { + get + { + return this.transparentField; + } + set + { + this.transparentField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool TransparentSpecified + { + get + { + return this.transparentFieldSpecified; + } + set + { + this.transparentFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class OSDTextConfiguration + { + + private string typeField; + + private string dateFormatField; + + private string timeFormatField; + + private int fontSizeField; + + private bool fontSizeFieldSpecified; + + private OSDColor fontColorField; + + private OSDColor backgroundColorField; + + private string plainTextField; + + private OSDTextConfigurationExtension extensionField; + + private bool isPersistentTextField; + + private bool isPersistentTextFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string Type + { + get + { + return this.typeField; + } + set + { + this.typeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public string DateFormat + { + get + { + return this.dateFormatField; + } + set + { + this.dateFormatField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public string TimeFormat + { + get + { + return this.timeFormatField; + } + set + { + this.timeFormatField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public int FontSize + { + get + { + return this.fontSizeField; + } + set + { + this.fontSizeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool FontSizeSpecified + { + get + { + return this.fontSizeFieldSpecified; + } + set + { + this.fontSizeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public OSDColor FontColor + { + get + { + return this.fontColorField; + } + set + { + this.fontColorField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public OSDColor BackgroundColor + { + get + { + return this.backgroundColorField; + } + set + { + this.backgroundColorField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 6)] + public string PlainText + { + get + { + return this.plainTextField; + } + set + { + this.plainTextField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 7)] + public OSDTextConfigurationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool IsPersistentText + { + get + { + return this.isPersistentTextField; + } + set + { + this.isPersistentTextField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool IsPersistentTextSpecified + { + get + { + return this.isPersistentTextFieldSpecified; + } + set + { + this.isPersistentTextFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class OSDPosConfigurationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Vector + { + + private float xField; + + private bool xFieldSpecified; + + private float yField; + + private bool yFieldSpecified; + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float x + { + get + { + return this.xField; + } + set + { + this.xField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool xSpecified + { + get + { + return this.xFieldSpecified; + } + set + { + this.xFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float y + { + get + { + return this.yField; + } + set + { + this.yField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool ySpecified + { + get + { + return this.yFieldSpecified; + } + set + { + this.yFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class OSDPosConfiguration + { + + private string typeField; + + private Vector posField; + + private OSDPosConfigurationExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string Type + { + get + { + return this.typeField; + } + set + { + this.typeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public Vector Pos + { + get + { + return this.posField; + } + set + { + this.posField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public OSDPosConfigurationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class OSDReference + { + + private string valueField; + + /// + [System.Xml.Serialization.XmlTextAttribute()] + public string Value + { + get + { + return this.valueField; + } + set + { + this.valueField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZNodeExtension2 + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZPresetTourSupportedExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZPresetTourSupported + { + + private int maximumNumberOfPresetToursField; + + private PTZPresetTourOperation[] pTZPresetTourOperationField; + + private PTZPresetTourSupportedExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public int MaximumNumberOfPresetTours + { + get + { + return this.maximumNumberOfPresetToursField; + } + set + { + this.maximumNumberOfPresetToursField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("PTZPresetTourOperation", Order = 1)] + public PTZPresetTourOperation[] PTZPresetTourOperation + { + get + { + return this.pTZPresetTourOperationField; + } + set + { + this.pTZPresetTourOperationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public PTZPresetTourSupportedExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum PTZPresetTourOperation + { + + /// + Start, + + /// + Stop, + + /// + Pause, + + /// + Extended, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZNodeExtension + { + + private System.Xml.Linq.XElement[] anyField; + + private PTZPresetTourSupported supportedPresetTourField; + + private PTZNodeExtension2 extensionField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public PTZPresetTourSupported SupportedPresetTour + { + get + { + return this.supportedPresetTourField; + } + set + { + this.supportedPresetTourField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public PTZNodeExtension2 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZSpacesExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Space1DDescription + { + + private string uRIField; + + private FloatRange xRangeField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 0)] + public string URI + { + get + { + return this.uRIField; + } + set + { + this.uRIField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public FloatRange XRange + { + get + { + return this.xRangeField; + } + set + { + this.xRangeField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class FloatRange + { + + private float minField; + + private float maxField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public float Min + { + get + { + return this.minField; + } + set + { + this.minField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public float Max + { + get + { + return this.maxField; + } + set + { + this.maxField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Space2DDescription + { + + private string uRIField; + + private FloatRange xRangeField; + + private FloatRange yRangeField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 0)] + public string URI + { + get + { + return this.uRIField; + } + set + { + this.uRIField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public FloatRange XRange + { + get + { + return this.xRangeField; + } + set + { + this.xRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public FloatRange YRange + { + get + { + return this.yRangeField; + } + set + { + this.yRangeField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZSpaces + { + + private Space2DDescription[] absolutePanTiltPositionSpaceField; + + private Space1DDescription[] absoluteZoomPositionSpaceField; + + private Space2DDescription[] relativePanTiltTranslationSpaceField; + + private Space1DDescription[] relativeZoomTranslationSpaceField; + + private Space2DDescription[] continuousPanTiltVelocitySpaceField; + + private Space1DDescription[] continuousZoomVelocitySpaceField; + + private Space1DDescription[] panTiltSpeedSpaceField; + + private Space1DDescription[] zoomSpeedSpaceField; + + private PTZSpacesExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute("AbsolutePanTiltPositionSpace", Order = 0)] + public Space2DDescription[] AbsolutePanTiltPositionSpace + { + get + { + return this.absolutePanTiltPositionSpaceField; + } + set + { + this.absolutePanTiltPositionSpaceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("AbsoluteZoomPositionSpace", Order = 1)] + public Space1DDescription[] AbsoluteZoomPositionSpace + { + get + { + return this.absoluteZoomPositionSpaceField; + } + set + { + this.absoluteZoomPositionSpaceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("RelativePanTiltTranslationSpace", Order = 2)] + public Space2DDescription[] RelativePanTiltTranslationSpace + { + get + { + return this.relativePanTiltTranslationSpaceField; + } + set + { + this.relativePanTiltTranslationSpaceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("RelativeZoomTranslationSpace", Order = 3)] + public Space1DDescription[] RelativeZoomTranslationSpace + { + get + { + return this.relativeZoomTranslationSpaceField; + } + set + { + this.relativeZoomTranslationSpaceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("ContinuousPanTiltVelocitySpace", Order = 4)] + public Space2DDescription[] ContinuousPanTiltVelocitySpace + { + get + { + return this.continuousPanTiltVelocitySpaceField; + } + set + { + this.continuousPanTiltVelocitySpaceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("ContinuousZoomVelocitySpace", Order = 5)] + public Space1DDescription[] ContinuousZoomVelocitySpace + { + get + { + return this.continuousZoomVelocitySpaceField; + } + set + { + this.continuousZoomVelocitySpaceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("PanTiltSpeedSpace", Order = 6)] + public Space1DDescription[] PanTiltSpeedSpace + { + get + { + return this.panTiltSpeedSpaceField; + } + set + { + this.panTiltSpeedSpaceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("ZoomSpeedSpace", Order = 7)] + public Space1DDescription[] ZoomSpeedSpace + { + get + { + return this.zoomSpeedSpaceField; + } + set + { + this.zoomSpeedSpaceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 8)] + public PTZSpacesExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class RelayOutputSettings + { + + private RelayMode modeField; + + private string delayTimeField; + + private RelayIdleState idleStateField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public RelayMode Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "duration", Order = 1)] + public string DelayTime + { + get + { + return this.delayTimeField; + } + set + { + this.delayTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public RelayIdleState IdleState + { + get + { + return this.idleStateField; + } + set + { + this.idleStateField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum RelayMode + { + + /// + Monostable, + + /// + Bistable, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum RelayIdleState + { + + /// + closed, + + /// + open, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NetworkInterfaceExtension2 + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NetworkInterfaceExtension + { + + private System.Xml.Linq.XElement[] anyField; + + private int interfaceTypeField; + + private Dot3Configuration[] dot3Field; + + private Dot11Configuration[] dot11Field; + + private NetworkInterfaceExtension2 extensionField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public int InterfaceType + { + get + { + return this.interfaceTypeField; + } + set + { + this.interfaceTypeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Dot3", Order = 2)] + public Dot3Configuration[] Dot3 + { + get + { + return this.dot3Field; + } + set + { + this.dot3Field = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Dot11", Order = 3)] + public Dot11Configuration[] Dot11 + { + get + { + return this.dot11Field; + } + set + { + this.dot11Field = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public NetworkInterfaceExtension2 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class IPv6ConfigurationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class IPv6Configuration + { + + private bool acceptRouterAdvertField; + + private bool acceptRouterAdvertFieldSpecified; + + private IPv6DHCPConfiguration dHCPField; + + private PrefixedIPv6Address[] manualField; + + private PrefixedIPv6Address[] linkLocalField; + + private PrefixedIPv6Address[] fromDHCPField; + + private PrefixedIPv6Address[] fromRAField; + + private IPv6ConfigurationExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public bool AcceptRouterAdvert + { + get + { + return this.acceptRouterAdvertField; + } + set + { + this.acceptRouterAdvertField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool AcceptRouterAdvertSpecified + { + get + { + return this.acceptRouterAdvertFieldSpecified; + } + set + { + this.acceptRouterAdvertFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public IPv6DHCPConfiguration DHCP + { + get + { + return this.dHCPField; + } + set + { + this.dHCPField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Manual", Order = 2)] + public PrefixedIPv6Address[] Manual + { + get + { + return this.manualField; + } + set + { + this.manualField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("LinkLocal", Order = 3)] + public PrefixedIPv6Address[] LinkLocal + { + get + { + return this.linkLocalField; + } + set + { + this.linkLocalField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("FromDHCP", Order = 4)] + public PrefixedIPv6Address[] FromDHCP + { + get + { + return this.fromDHCPField; + } + set + { + this.fromDHCPField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("FromRA", Order = 5)] + public PrefixedIPv6Address[] FromRA + { + get + { + return this.fromRAField; + } + set + { + this.fromRAField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 6)] + public IPv6ConfigurationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class IPv6NetworkInterface + { + + private bool enabledField; + + private IPv6Configuration configField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public bool Enabled + { + get + { + return this.enabledField; + } + set + { + this.enabledField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public IPv6Configuration Config + { + get + { + return this.configField; + } + set + { + this.configField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class IPv4Configuration + { + + private PrefixedIPv4Address[] manualField; + + private PrefixedIPv4Address linkLocalField; + + private PrefixedIPv4Address fromDHCPField; + + private bool dHCPField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute("Manual", Order = 0)] + public PrefixedIPv4Address[] Manual + { + get + { + return this.manualField; + } + set + { + this.manualField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public PrefixedIPv4Address LinkLocal + { + get + { + return this.linkLocalField; + } + set + { + this.linkLocalField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public PrefixedIPv4Address FromDHCP + { + get + { + return this.fromDHCPField; + } + set + { + this.fromDHCPField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public bool DHCP + { + get + { + return this.dHCPField; + } + set + { + this.dHCPField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 4)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class IPv4NetworkInterface + { + + private bool enabledField; + + private IPv4Configuration configField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public bool Enabled + { + get + { + return this.enabledField; + } + set + { + this.enabledField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public IPv4Configuration Config + { + get + { + return this.configField; + } + set + { + this.configField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NetworkInterfaceLink + { + + private NetworkInterfaceConnectionSetting adminSettingsField; + + private NetworkInterfaceConnectionSetting operSettingsField; + + private int interfaceTypeField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public NetworkInterfaceConnectionSetting AdminSettings + { + get + { + return this.adminSettingsField; + } + set + { + this.adminSettingsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public NetworkInterfaceConnectionSetting OperSettings + { + get + { + return this.operSettingsField; + } + set + { + this.operSettingsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public int InterfaceType + { + get + { + return this.interfaceTypeField; + } + set + { + this.interfaceTypeField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NetworkInterfaceInfo + { + + private string nameField; + + private string hwAddressField; + + private int mTUField; + + private bool mTUFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string Name + { + get + { + return this.nameField; + } + set + { + this.nameField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "token", Order = 1)] + public string HwAddress + { + get + { + return this.hwAddressField; + } + set + { + this.hwAddressField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public int MTU + { + get + { + return this.mTUField; + } + set + { + this.mTUField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool MTUSpecified + { + get + { + return this.mTUFieldSpecified; + } + set + { + this.mTUFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoOutputExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class LayoutExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PaneLayout + { + + private string paneField; + + private Rectangle areaField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string Pane + { + get + { + return this.paneField; + } + set + { + this.paneField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public Rectangle Area + { + get + { + return this.areaField; + } + set + { + this.areaField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Rectangle + { + + private float bottomField; + + private bool bottomFieldSpecified; + + private float topField; + + private bool topFieldSpecified; + + private float rightField; + + private bool rightFieldSpecified; + + private float leftField; + + private bool leftFieldSpecified; + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float bottom + { + get + { + return this.bottomField; + } + set + { + this.bottomField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool bottomSpecified + { + get + { + return this.bottomFieldSpecified; + } + set + { + this.bottomFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float top + { + get + { + return this.topField; + } + set + { + this.topField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool topSpecified + { + get + { + return this.topFieldSpecified; + } + set + { + this.topFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float right + { + get + { + return this.rightField; + } + set + { + this.rightField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool rightSpecified + { + get + { + return this.rightFieldSpecified; + } + set + { + this.rightFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float left + { + get + { + return this.leftField; + } + set + { + this.leftField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool leftSpecified + { + get + { + return this.leftFieldSpecified; + } + set + { + this.leftFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Layout + { + + private PaneLayout[] paneLayoutField; + + private LayoutExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute("PaneLayout", Order = 0)] + public PaneLayout[] PaneLayout + { + get + { + return this.paneLayoutField; + } + set + { + this.paneLayoutField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public LayoutExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoSourceExtension2 + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ImagingSettingsExtension204 + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NoiseReduction + { + + private float levelField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public float Level + { + get + { + return this.levelField; + } + set + { + this.levelField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 1)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class DefoggingExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Defogging + { + + private string modeField; + + private float levelField; + + private bool levelFieldSpecified; + + private DefoggingExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public float Level + { + get + { + return this.levelField; + } + set + { + this.levelField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool LevelSpecified + { + get + { + return this.levelFieldSpecified; + } + set + { + this.levelFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public DefoggingExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ToneCompensationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ToneCompensation + { + + private string modeField; + + private float levelField; + + private bool levelFieldSpecified; + + private ToneCompensationExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public float Level + { + get + { + return this.levelField; + } + set + { + this.levelField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool LevelSpecified + { + get + { + return this.levelFieldSpecified; + } + set + { + this.levelFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public ToneCompensationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ImagingSettingsExtension203 + { + + private ToneCompensation toneCompensationField; + + private Defogging defoggingField; + + private NoiseReduction noiseReductionField; + + private ImagingSettingsExtension204 extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public ToneCompensation ToneCompensation + { + get + { + return this.toneCompensationField; + } + set + { + this.toneCompensationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public Defogging Defogging + { + get + { + return this.defoggingField; + } + set + { + this.defoggingField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public NoiseReduction NoiseReduction + { + get + { + return this.noiseReductionField; + } + set + { + this.noiseReductionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public ImagingSettingsExtension204 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class IrCutFilterAutoAdjustmentExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class IrCutFilterAutoAdjustment + { + + private string boundaryTypeField; + + private float boundaryOffsetField; + + private bool boundaryOffsetFieldSpecified; + + private string responseTimeField; + + private IrCutFilterAutoAdjustmentExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string BoundaryType + { + get + { + return this.boundaryTypeField; + } + set + { + this.boundaryTypeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public float BoundaryOffset + { + get + { + return this.boundaryOffsetField; + } + set + { + this.boundaryOffsetField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool BoundaryOffsetSpecified + { + get + { + return this.boundaryOffsetFieldSpecified; + } + set + { + this.boundaryOffsetFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "duration", Order = 2)] + public string ResponseTime + { + get + { + return this.responseTimeField; + } + set + { + this.responseTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public IrCutFilterAutoAdjustmentExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ImagingSettingsExtension202 + { + + private IrCutFilterAutoAdjustment[] irCutFilterAutoAdjustmentField; + + private ImagingSettingsExtension203 extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute("IrCutFilterAutoAdjustment", Order = 0)] + public IrCutFilterAutoAdjustment[] IrCutFilterAutoAdjustment + { + get + { + return this.irCutFilterAutoAdjustmentField; + } + set + { + this.irCutFilterAutoAdjustmentField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public ImagingSettingsExtension203 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ImageStabilizationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ImageStabilization + { + + private ImageStabilizationMode modeField; + + private float levelField; + + private bool levelFieldSpecified; + + private ImageStabilizationExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public ImageStabilizationMode Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public float Level + { + get + { + return this.levelField; + } + set + { + this.levelField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool LevelSpecified + { + get + { + return this.levelFieldSpecified; + } + set + { + this.levelFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public ImageStabilizationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum ImageStabilizationMode + { + + /// + OFF, + + /// + ON, + + /// + AUTO, + + /// + Extended, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ImagingSettingsExtension20 + { + + private System.Xml.Linq.XElement[] anyField; + + private ImageStabilization imageStabilizationField; + + private ImagingSettingsExtension202 extensionField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public ImageStabilization ImageStabilization + { + get + { + return this.imageStabilizationField; + } + set + { + this.imageStabilizationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public ImagingSettingsExtension202 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class WhiteBalance20Extension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class WhiteBalance20 + { + + private WhiteBalanceMode modeField; + + private float crGainField; + + private bool crGainFieldSpecified; + + private float cbGainField; + + private bool cbGainFieldSpecified; + + private WhiteBalance20Extension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public WhiteBalanceMode Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public float CrGain + { + get + { + return this.crGainField; + } + set + { + this.crGainField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool CrGainSpecified + { + get + { + return this.crGainFieldSpecified; + } + set + { + this.crGainFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public float CbGain + { + get + { + return this.cbGainField; + } + set + { + this.cbGainField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool CbGainSpecified + { + get + { + return this.cbGainFieldSpecified; + } + set + { + this.cbGainFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public WhiteBalance20Extension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum WhiteBalanceMode + { + + /// + AUTO, + + /// + MANUAL, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class WideDynamicRange20 + { + + private WideDynamicMode modeField; + + private float levelField; + + private bool levelFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public WideDynamicMode Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public float Level + { + get + { + return this.levelField; + } + set + { + this.levelField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool LevelSpecified + { + get + { + return this.levelFieldSpecified; + } + set + { + this.levelFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum WideDynamicMode + { + + /// + OFF, + + /// + ON, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class FocusConfiguration20Extension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class FocusConfiguration20 + { + + private AutoFocusMode autoFocusModeField; + + private float defaultSpeedField; + + private bool defaultSpeedFieldSpecified; + + private float nearLimitField; + + private bool nearLimitFieldSpecified; + + private float farLimitField; + + private bool farLimitFieldSpecified; + + private FocusConfiguration20Extension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public AutoFocusMode AutoFocusMode + { + get + { + return this.autoFocusModeField; + } + set + { + this.autoFocusModeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public float DefaultSpeed + { + get + { + return this.defaultSpeedField; + } + set + { + this.defaultSpeedField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool DefaultSpeedSpecified + { + get + { + return this.defaultSpeedFieldSpecified; + } + set + { + this.defaultSpeedFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public float NearLimit + { + get + { + return this.nearLimitField; + } + set + { + this.nearLimitField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool NearLimitSpecified + { + get + { + return this.nearLimitFieldSpecified; + } + set + { + this.nearLimitFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public float FarLimit + { + get + { + return this.farLimitField; + } + set + { + this.farLimitField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool FarLimitSpecified + { + get + { + return this.farLimitFieldSpecified; + } + set + { + this.farLimitFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public FocusConfiguration20Extension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum AutoFocusMode + { + + /// + AUTO, + + /// + MANUAL, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Exposure20 + { + + private ExposureMode modeField; + + private ExposurePriority priorityField; + + private bool priorityFieldSpecified; + + private Rectangle windowField; + + private float minExposureTimeField; + + private bool minExposureTimeFieldSpecified; + + private float maxExposureTimeField; + + private bool maxExposureTimeFieldSpecified; + + private float minGainField; + + private bool minGainFieldSpecified; + + private float maxGainField; + + private bool maxGainFieldSpecified; + + private float minIrisField; + + private bool minIrisFieldSpecified; + + private float maxIrisField; + + private bool maxIrisFieldSpecified; + + private float exposureTimeField; + + private bool exposureTimeFieldSpecified; + + private float gainField; + + private bool gainFieldSpecified; + + private float irisField; + + private bool irisFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public ExposureMode Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public ExposurePriority Priority + { + get + { + return this.priorityField; + } + set + { + this.priorityField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool PrioritySpecified + { + get + { + return this.priorityFieldSpecified; + } + set + { + this.priorityFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public Rectangle Window + { + get + { + return this.windowField; + } + set + { + this.windowField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public float MinExposureTime + { + get + { + return this.minExposureTimeField; + } + set + { + this.minExposureTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool MinExposureTimeSpecified + { + get + { + return this.minExposureTimeFieldSpecified; + } + set + { + this.minExposureTimeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public float MaxExposureTime + { + get + { + return this.maxExposureTimeField; + } + set + { + this.maxExposureTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool MaxExposureTimeSpecified + { + get + { + return this.maxExposureTimeFieldSpecified; + } + set + { + this.maxExposureTimeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public float MinGain + { + get + { + return this.minGainField; + } + set + { + this.minGainField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool MinGainSpecified + { + get + { + return this.minGainFieldSpecified; + } + set + { + this.minGainFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 6)] + public float MaxGain + { + get + { + return this.maxGainField; + } + set + { + this.maxGainField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool MaxGainSpecified + { + get + { + return this.maxGainFieldSpecified; + } + set + { + this.maxGainFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 7)] + public float MinIris + { + get + { + return this.minIrisField; + } + set + { + this.minIrisField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool MinIrisSpecified + { + get + { + return this.minIrisFieldSpecified; + } + set + { + this.minIrisFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 8)] + public float MaxIris + { + get + { + return this.maxIrisField; + } + set + { + this.maxIrisField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool MaxIrisSpecified + { + get + { + return this.maxIrisFieldSpecified; + } + set + { + this.maxIrisFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 9)] + public float ExposureTime + { + get + { + return this.exposureTimeField; + } + set + { + this.exposureTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool ExposureTimeSpecified + { + get + { + return this.exposureTimeFieldSpecified; + } + set + { + this.exposureTimeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 10)] + public float Gain + { + get + { + return this.gainField; + } + set + { + this.gainField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool GainSpecified + { + get + { + return this.gainFieldSpecified; + } + set + { + this.gainFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 11)] + public float Iris + { + get + { + return this.irisField; + } + set + { + this.irisField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool IrisSpecified + { + get + { + return this.irisFieldSpecified; + } + set + { + this.irisFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum ExposureMode + { + + /// + AUTO, + + /// + MANUAL, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum ExposurePriority + { + + /// + LowNoise, + + /// + FrameRate, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class BacklightCompensation20 + { + + private BacklightCompensationMode modeField; + + private float levelField; + + private bool levelFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public BacklightCompensationMode Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public float Level + { + get + { + return this.levelField; + } + set + { + this.levelField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool LevelSpecified + { + get + { + return this.levelFieldSpecified; + } + set + { + this.levelFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum BacklightCompensationMode + { + + /// + OFF, + + /// + ON, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ImagingSettings20 + { + + private BacklightCompensation20 backlightCompensationField; + + private float brightnessField; + + private bool brightnessFieldSpecified; + + private float colorSaturationField; + + private bool colorSaturationFieldSpecified; + + private float contrastField; + + private bool contrastFieldSpecified; + + private Exposure20 exposureField; + + private FocusConfiguration20 focusField; + + private IrCutFilterMode irCutFilterField; + + private bool irCutFilterFieldSpecified; + + private float sharpnessField; + + private bool sharpnessFieldSpecified; + + private WideDynamicRange20 wideDynamicRangeField; + + private WhiteBalance20 whiteBalanceField; + + private ImagingSettingsExtension20 extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public BacklightCompensation20 BacklightCompensation + { + get + { + return this.backlightCompensationField; + } + set + { + this.backlightCompensationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public float Brightness + { + get + { + return this.brightnessField; + } + set + { + this.brightnessField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool BrightnessSpecified + { + get + { + return this.brightnessFieldSpecified; + } + set + { + this.brightnessFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public float ColorSaturation + { + get + { + return this.colorSaturationField; + } + set + { + this.colorSaturationField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool ColorSaturationSpecified + { + get + { + return this.colorSaturationFieldSpecified; + } + set + { + this.colorSaturationFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public float Contrast + { + get + { + return this.contrastField; + } + set + { + this.contrastField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool ContrastSpecified + { + get + { + return this.contrastFieldSpecified; + } + set + { + this.contrastFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public Exposure20 Exposure + { + get + { + return this.exposureField; + } + set + { + this.exposureField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public FocusConfiguration20 Focus + { + get + { + return this.focusField; + } + set + { + this.focusField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 6)] + public IrCutFilterMode IrCutFilter + { + get + { + return this.irCutFilterField; + } + set + { + this.irCutFilterField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool IrCutFilterSpecified + { + get + { + return this.irCutFilterFieldSpecified; + } + set + { + this.irCutFilterFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 7)] + public float Sharpness + { + get + { + return this.sharpnessField; + } + set + { + this.sharpnessField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool SharpnessSpecified + { + get + { + return this.sharpnessFieldSpecified; + } + set + { + this.sharpnessFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 8)] + public WideDynamicRange20 WideDynamicRange + { + get + { + return this.wideDynamicRangeField; + } + set + { + this.wideDynamicRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 9)] + public WhiteBalance20 WhiteBalance + { + get + { + return this.whiteBalanceField; + } + set + { + this.whiteBalanceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 10)] + public ImagingSettingsExtension20 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum IrCutFilterMode + { + + /// + ON, + + /// + OFF, + + /// + AUTO, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoSourceExtension + { + + private System.Xml.Linq.XElement[] anyField; + + private ImagingSettings20 imagingField; + + private VideoSourceExtension2 extensionField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public ImagingSettings20 Imaging + { + get + { + return this.imagingField; + } + set + { + this.imagingField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public VideoSourceExtension2 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ImagingSettingsExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class WhiteBalance + { + + private WhiteBalanceMode modeField; + + private float crGainField; + + private float cbGainField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public WhiteBalanceMode Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public float CrGain + { + get + { + return this.crGainField; + } + set + { + this.crGainField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public float CbGain + { + get + { + return this.cbGainField; + } + set + { + this.cbGainField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 3)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class WideDynamicRange + { + + private WideDynamicMode modeField; + + private float levelField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public WideDynamicMode Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public float Level + { + get + { + return this.levelField; + } + set + { + this.levelField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class FocusConfiguration + { + + private AutoFocusMode autoFocusModeField; + + private float defaultSpeedField; + + private float nearLimitField; + + private float farLimitField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public AutoFocusMode AutoFocusMode + { + get + { + return this.autoFocusModeField; + } + set + { + this.autoFocusModeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public float DefaultSpeed + { + get + { + return this.defaultSpeedField; + } + set + { + this.defaultSpeedField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public float NearLimit + { + get + { + return this.nearLimitField; + } + set + { + this.nearLimitField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public float FarLimit + { + get + { + return this.farLimitField; + } + set + { + this.farLimitField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 4)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Exposure + { + + private ExposureMode modeField; + + private ExposurePriority priorityField; + + private Rectangle windowField; + + private float minExposureTimeField; + + private float maxExposureTimeField; + + private float minGainField; + + private float maxGainField; + + private float minIrisField; + + private float maxIrisField; + + private float exposureTimeField; + + private float gainField; + + private float irisField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public ExposureMode Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public ExposurePriority Priority + { + get + { + return this.priorityField; + } + set + { + this.priorityField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public Rectangle Window + { + get + { + return this.windowField; + } + set + { + this.windowField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public float MinExposureTime + { + get + { + return this.minExposureTimeField; + } + set + { + this.minExposureTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public float MaxExposureTime + { + get + { + return this.maxExposureTimeField; + } + set + { + this.maxExposureTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public float MinGain + { + get + { + return this.minGainField; + } + set + { + this.minGainField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 6)] + public float MaxGain + { + get + { + return this.maxGainField; + } + set + { + this.maxGainField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 7)] + public float MinIris + { + get + { + return this.minIrisField; + } + set + { + this.minIrisField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 8)] + public float MaxIris + { + get + { + return this.maxIrisField; + } + set + { + this.maxIrisField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 9)] + public float ExposureTime + { + get + { + return this.exposureTimeField; + } + set + { + this.exposureTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 10)] + public float Gain + { + get + { + return this.gainField; + } + set + { + this.gainField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 11)] + public float Iris + { + get + { + return this.irisField; + } + set + { + this.irisField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class BacklightCompensation + { + + private BacklightCompensationMode modeField; + + private float levelField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public BacklightCompensationMode Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public float Level + { + get + { + return this.levelField; + } + set + { + this.levelField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ImagingSettings + { + + private BacklightCompensation backlightCompensationField; + + private float brightnessField; + + private bool brightnessFieldSpecified; + + private float colorSaturationField; + + private bool colorSaturationFieldSpecified; + + private float contrastField; + + private bool contrastFieldSpecified; + + private Exposure exposureField; + + private FocusConfiguration focusField; + + private IrCutFilterMode irCutFilterField; + + private bool irCutFilterFieldSpecified; + + private float sharpnessField; + + private bool sharpnessFieldSpecified; + + private WideDynamicRange wideDynamicRangeField; + + private WhiteBalance whiteBalanceField; + + private ImagingSettingsExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public BacklightCompensation BacklightCompensation + { + get + { + return this.backlightCompensationField; + } + set + { + this.backlightCompensationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public float Brightness + { + get + { + return this.brightnessField; + } + set + { + this.brightnessField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool BrightnessSpecified + { + get + { + return this.brightnessFieldSpecified; + } + set + { + this.brightnessFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public float ColorSaturation + { + get + { + return this.colorSaturationField; + } + set + { + this.colorSaturationField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool ColorSaturationSpecified + { + get + { + return this.colorSaturationFieldSpecified; + } + set + { + this.colorSaturationFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public float Contrast + { + get + { + return this.contrastField; + } + set + { + this.contrastField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool ContrastSpecified + { + get + { + return this.contrastFieldSpecified; + } + set + { + this.contrastFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public Exposure Exposure + { + get + { + return this.exposureField; + } + set + { + this.exposureField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public FocusConfiguration Focus + { + get + { + return this.focusField; + } + set + { + this.focusField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 6)] + public IrCutFilterMode IrCutFilter + { + get + { + return this.irCutFilterField; + } + set + { + this.irCutFilterField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool IrCutFilterSpecified + { + get + { + return this.irCutFilterFieldSpecified; + } + set + { + this.irCutFilterFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 7)] + public float Sharpness + { + get + { + return this.sharpnessField; + } + set + { + this.sharpnessField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool SharpnessSpecified + { + get + { + return this.sharpnessFieldSpecified; + } + set + { + this.sharpnessFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 8)] + public WideDynamicRange WideDynamicRange + { + get + { + return this.wideDynamicRangeField; + } + set + { + this.wideDynamicRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 9)] + public WhiteBalance WhiteBalance + { + get + { + return this.whiteBalanceField; + } + set + { + this.whiteBalanceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 10)] + public ImagingSettingsExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoResolution + { + + private int widthField; + + private int heightField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public int Width + { + get + { + return this.widthField; + } + set + { + this.widthField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public int Height + { + get + { + return this.heightField; + } + set + { + this.heightField = value; + } + } + } + + /// + [System.Xml.Serialization.XmlIncludeAttribute(typeof(OSDConfiguration))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(PTZNode))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(DigitalInput))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(RelayOutput))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(NetworkInterface))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(AudioOutput))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(VideoOutput))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(AudioSource))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(VideoSource))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(StorageConfiguration))] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class DeviceEntity + { + + private string tokenField; + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string token + { + get + { + return this.tokenField; + } + set + { + this.tokenField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class OSDConfiguration : DeviceEntity + { + + private OSDReference videoSourceConfigurationTokenField; + + private OSDType typeField; + + private OSDPosConfiguration positionField; + + private OSDTextConfiguration textStringField; + + private OSDImgConfiguration imageField; + + private OSDConfigurationExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public OSDReference VideoSourceConfigurationToken + { + get + { + return this.videoSourceConfigurationTokenField; + } + set + { + this.videoSourceConfigurationTokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public OSDType Type + { + get + { + return this.typeField; + } + set + { + this.typeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public OSDPosConfiguration Position + { + get + { + return this.positionField; + } + set + { + this.positionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public OSDTextConfiguration TextString + { + get + { + return this.textStringField; + } + set + { + this.textStringField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public OSDImgConfiguration Image + { + get + { + return this.imageField; + } + set + { + this.imageField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public OSDConfigurationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum OSDType + { + + /// + Text, + + /// + Image, + + /// + Extended, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZNode : DeviceEntity + { + + private string nameField; + + private PTZSpaces supportedPTZSpacesField; + + private int maximumNumberOfPresetsField; + + private bool homeSupportedField; + + private string[] auxiliaryCommandsField; + + private PTZNodeExtension extensionField; + + private bool fixedHomePositionField; + + private bool fixedHomePositionFieldSpecified; + + private bool geoMoveField; + + private bool geoMoveFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string Name + { + get + { + return this.nameField; + } + set + { + this.nameField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public PTZSpaces SupportedPTZSpaces + { + get + { + return this.supportedPTZSpacesField; + } + set + { + this.supportedPTZSpacesField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public int MaximumNumberOfPresets + { + get + { + return this.maximumNumberOfPresetsField; + } + set + { + this.maximumNumberOfPresetsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public bool HomeSupported + { + get + { + return this.homeSupportedField; + } + set + { + this.homeSupportedField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("AuxiliaryCommands", Order = 4)] + public string[] AuxiliaryCommands + { + get + { + return this.auxiliaryCommandsField; + } + set + { + this.auxiliaryCommandsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public PTZNodeExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool FixedHomePosition + { + get + { + return this.fixedHomePositionField; + } + set + { + this.fixedHomePositionField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool FixedHomePositionSpecified + { + get + { + return this.fixedHomePositionFieldSpecified; + } + set + { + this.fixedHomePositionFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool GeoMove + { + get + { + return this.geoMoveField; + } + set + { + this.geoMoveField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool GeoMoveSpecified + { + get + { + return this.geoMoveFieldSpecified; + } + set + { + this.geoMoveFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class DigitalInput : DeviceEntity + { + + private System.Xml.Linq.XElement[] anyField; + + private DigitalIdleState idleStateField; + + private bool idleStateFieldSpecified; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public DigitalIdleState IdleState + { + get + { + return this.idleStateField; + } + set + { + this.idleStateField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool IdleStateSpecified + { + get + { + return this.idleStateFieldSpecified; + } + set + { + this.idleStateFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum DigitalIdleState + { + + /// + closed, + + /// + open, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class RelayOutput : DeviceEntity + { + + private RelayOutputSettings propertiesField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public RelayOutputSettings Properties + { + get + { + return this.propertiesField; + } + set + { + this.propertiesField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 1)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NetworkInterface : DeviceEntity + { + + private bool enabledField; + + private NetworkInterfaceInfo infoField; + + private NetworkInterfaceLink linkField; + + private IPv4NetworkInterface iPv4Field; + + private IPv6NetworkInterface iPv6Field; + + private NetworkInterfaceExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public bool Enabled + { + get + { + return this.enabledField; + } + set + { + this.enabledField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public NetworkInterfaceInfo Info + { + get + { + return this.infoField; + } + set + { + this.infoField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public NetworkInterfaceLink Link + { + get + { + return this.linkField; + } + set + { + this.linkField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public IPv4NetworkInterface IPv4 + { + get + { + return this.iPv4Field; + } + set + { + this.iPv4Field = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public IPv6NetworkInterface IPv6 + { + get + { + return this.iPv6Field; + } + set + { + this.iPv6Field = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public NetworkInterfaceExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AudioOutput : DeviceEntity + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoOutput : DeviceEntity + { + + private Layout layoutField; + + private VideoResolution resolutionField; + + private float refreshRateField; + + private bool refreshRateFieldSpecified; + + private float aspectRatioField; + + private bool aspectRatioFieldSpecified; + + private VideoOutputExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public Layout Layout + { + get + { + return this.layoutField; + } + set + { + this.layoutField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public VideoResolution Resolution + { + get + { + return this.resolutionField; + } + set + { + this.resolutionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public float RefreshRate + { + get + { + return this.refreshRateField; + } + set + { + this.refreshRateField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool RefreshRateSpecified + { + get + { + return this.refreshRateFieldSpecified; + } + set + { + this.refreshRateFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public float AspectRatio + { + get + { + return this.aspectRatioField; + } + set + { + this.aspectRatioField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool AspectRatioSpecified + { + get + { + return this.aspectRatioFieldSpecified; + } + set + { + this.aspectRatioFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public VideoOutputExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AudioSource : DeviceEntity + { + + private int channelsField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public int Channels + { + get + { + return this.channelsField; + } + set + { + this.channelsField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 1)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoSource : DeviceEntity + { + + private float framerateField; + + private VideoResolution resolutionField; + + private ImagingSettings imagingField; + + private VideoSourceExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public float Framerate + { + get + { + return this.framerateField; + } + set + { + this.framerateField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public VideoResolution Resolution + { + get + { + return this.resolutionField; + } + set + { + this.resolutionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public ImagingSettings Imaging + { + get + { + return this.imagingField; + } + set + { + this.imagingField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public VideoSourceExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class DynamicDNSInformationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class DynamicDNSInformation + { + + private DynamicDNSType typeField; + + private string nameField; + + private string tTLField; + + private DynamicDNSInformationExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public DynamicDNSType Type + { + get + { + return this.typeField; + } + set + { + this.typeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "token", Order = 1)] + public string Name + { + get + { + return this.nameField; + } + set + { + this.nameField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "duration", Order = 2)] + public string TTL + { + get + { + return this.tTLField; + } + set + { + this.tTLField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public DynamicDNSInformationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum DynamicDNSType + { + + /// + NoUpdate, + + /// + ClientUpdates, + + /// + ServerUpdates, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NTPInformationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NTPInformation + { + + private bool fromDHCPField; + + private NetworkHost[] nTPFromDHCPField; + + private NetworkHost[] nTPManualField; + + private NTPInformationExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public bool FromDHCP + { + get + { + return this.fromDHCPField; + } + set + { + this.fromDHCPField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("NTPFromDHCP", Order = 1)] + public NetworkHost[] NTPFromDHCP + { + get + { + return this.nTPFromDHCPField; + } + set + { + this.nTPFromDHCPField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("NTPManual", Order = 2)] + public NetworkHost[] NTPManual + { + get + { + return this.nTPManualField; + } + set + { + this.nTPManualField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public NTPInformationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NetworkHost + { + + private NetworkHostType typeField; + + private string iPv4AddressField; + + private string iPv6AddressField; + + private string dNSnameField; + + private NetworkHostExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public NetworkHostType Type + { + get + { + return this.typeField; + } + set + { + this.typeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "token", Order = 1)] + public string IPv4Address + { + get + { + return this.iPv4AddressField; + } + set + { + this.iPv4AddressField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "token", Order = 2)] + public string IPv6Address + { + get + { + return this.iPv6AddressField; + } + set + { + this.iPv6AddressField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "token", Order = 3)] + public string DNSname + { + get + { + return this.dNSnameField; + } + set + { + this.dNSnameField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public NetworkHostExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum NetworkHostType + { + + /// + IPv4, + + /// + IPv6, + + /// + DNS, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NetworkHostExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class DNSInformationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class IPAddress + { + + private IPType typeField; + + private string iPv4AddressField; + + private string iPv6AddressField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public IPType Type + { + get + { + return this.typeField; + } + set + { + this.typeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "token", Order = 1)] + public string IPv4Address + { + get + { + return this.iPv4AddressField; + } + set + { + this.iPv4AddressField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "token", Order = 2)] + public string IPv6Address + { + get + { + return this.iPv6AddressField; + } + set + { + this.iPv6AddressField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum IPType + { + + /// + IPv4, + + /// + IPv6, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class DNSInformation + { + + private bool fromDHCPField; + + private string[] searchDomainField; + + private IPAddress[] dNSFromDHCPField; + + private IPAddress[] dNSManualField; + + private DNSInformationExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public bool FromDHCP + { + get + { + return this.fromDHCPField; + } + set + { + this.fromDHCPField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("SearchDomain", DataType = "token", Order = 1)] + public string[] SearchDomain + { + get + { + return this.searchDomainField; + } + set + { + this.searchDomainField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("DNSFromDHCP", Order = 2)] + public IPAddress[] DNSFromDHCP + { + get + { + return this.dNSFromDHCPField; + } + set + { + this.dNSFromDHCPField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("DNSManual", Order = 3)] + public IPAddress[] DNSManual + { + get + { + return this.dNSManualField; + } + set + { + this.dNSManualField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public DNSInformationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class HostnameInformationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class HostnameInformation + { + + private bool fromDHCPField; + + private string nameField; + + private HostnameInformationExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public bool FromDHCP + { + get + { + return this.fromDHCPField; + } + set + { + this.fromDHCPField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "token", Order = 1)] + public string Name + { + get + { + return this.nameField; + } + set + { + this.nameField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public HostnameInformationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class CapabilitiesExtension2 + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AnalyticsDeviceExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AnalyticsDeviceCapabilities + { + + private string xAddrField; + + private bool ruleSupportField; + + private bool ruleSupportFieldSpecified; + + private AnalyticsDeviceExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 0)] + public string XAddr + { + get + { + return this.xAddrField; + } + set + { + this.xAddrField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool RuleSupport + { + get + { + return this.ruleSupportField; + } + set + { + this.ruleSupportField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool RuleSupportSpecified + { + get + { + return this.ruleSupportFieldSpecified; + } + set + { + this.ruleSupportFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public AnalyticsDeviceExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ReceiverCapabilities + { + + private string xAddrField; + + private bool rTP_MulticastField; + + private bool rTP_TCPField; + + private bool rTP_RTSP_TCPField; + + private int supportedReceiversField; + + private int maximumRTSPURILengthField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 0)] + public string XAddr + { + get + { + return this.xAddrField; + } + set + { + this.xAddrField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool RTP_Multicast + { + get + { + return this.rTP_MulticastField; + } + set + { + this.rTP_MulticastField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public bool RTP_TCP + { + get + { + return this.rTP_TCPField; + } + set + { + this.rTP_TCPField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public bool RTP_RTSP_TCP + { + get + { + return this.rTP_RTSP_TCPField; + } + set + { + this.rTP_RTSP_TCPField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public int SupportedReceivers + { + get + { + return this.supportedReceiversField; + } + set + { + this.supportedReceiversField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public int MaximumRTSPURILength + { + get + { + return this.maximumRTSPURILengthField; + } + set + { + this.maximumRTSPURILengthField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 6)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ReplayCapabilities + { + + private string xAddrField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 0)] + public string XAddr + { + get + { + return this.xAddrField; + } + set + { + this.xAddrField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 1)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class SearchCapabilities + { + + private string xAddrField; + + private bool metadataSearchField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 0)] + public string XAddr + { + get + { + return this.xAddrField; + } + set + { + this.xAddrField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool MetadataSearch + { + get + { + return this.metadataSearchField; + } + set + { + this.metadataSearchField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class RecordingCapabilities + { + + private string xAddrField; + + private bool receiverSourceField; + + private bool mediaProfileSourceField; + + private bool dynamicRecordingsField; + + private bool dynamicTracksField; + + private int maxStringLengthField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 0)] + public string XAddr + { + get + { + return this.xAddrField; + } + set + { + this.xAddrField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool ReceiverSource + { + get + { + return this.receiverSourceField; + } + set + { + this.receiverSourceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public bool MediaProfileSource + { + get + { + return this.mediaProfileSourceField; + } + set + { + this.mediaProfileSourceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public bool DynamicRecordings + { + get + { + return this.dynamicRecordingsField; + } + set + { + this.dynamicRecordingsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public bool DynamicTracks + { + get + { + return this.dynamicTracksField; + } + set + { + this.dynamicTracksField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public int MaxStringLength + { + get + { + return this.maxStringLengthField; + } + set + { + this.maxStringLengthField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 6)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class DisplayCapabilities + { + + private string xAddrField; + + private bool fixedLayoutField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 0)] + public string XAddr + { + get + { + return this.xAddrField; + } + set + { + this.xAddrField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool FixedLayout + { + get + { + return this.fixedLayoutField; + } + set + { + this.fixedLayoutField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class DeviceIOCapabilities + { + + private string xAddrField; + + private int videoSourcesField; + + private int videoOutputsField; + + private int audioSourcesField; + + private int audioOutputsField; + + private int relayOutputsField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 0)] + public string XAddr + { + get + { + return this.xAddrField; + } + set + { + this.xAddrField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public int VideoSources + { + get + { + return this.videoSourcesField; + } + set + { + this.videoSourcesField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public int VideoOutputs + { + get + { + return this.videoOutputsField; + } + set + { + this.videoOutputsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public int AudioSources + { + get + { + return this.audioSourcesField; + } + set + { + this.audioSourcesField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public int AudioOutputs + { + get + { + return this.audioOutputsField; + } + set + { + this.audioOutputsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public int RelayOutputs + { + get + { + return this.relayOutputsField; + } + set + { + this.relayOutputsField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 6)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class CapabilitiesExtension + { + + private System.Xml.Linq.XElement[] anyField; + + private DeviceIOCapabilities deviceIOField; + + private DisplayCapabilities displayField; + + private RecordingCapabilities recordingField; + + private SearchCapabilities searchField; + + private ReplayCapabilities replayField; + + private ReceiverCapabilities receiverField; + + private AnalyticsDeviceCapabilities analyticsDeviceField; + + private CapabilitiesExtension2 extensionsField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public DeviceIOCapabilities DeviceIO + { + get + { + return this.deviceIOField; + } + set + { + this.deviceIOField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public DisplayCapabilities Display + { + get + { + return this.displayField; + } + set + { + this.displayField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public RecordingCapabilities Recording + { + get + { + return this.recordingField; + } + set + { + this.recordingField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public SearchCapabilities Search + { + get + { + return this.searchField; + } + set + { + this.searchField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public ReplayCapabilities Replay + { + get + { + return this.replayField; + } + set + { + this.replayField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 6)] + public ReceiverCapabilities Receiver + { + get + { + return this.receiverField; + } + set + { + this.receiverField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 7)] + public AnalyticsDeviceCapabilities AnalyticsDevice + { + get + { + return this.analyticsDeviceField; + } + set + { + this.analyticsDeviceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 8)] + public CapabilitiesExtension2 Extensions + { + get + { + return this.extensionsField; + } + set + { + this.extensionsField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZCapabilities + { + + private string xAddrField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 0)] + public string XAddr + { + get + { + return this.xAddrField; + } + set + { + this.xAddrField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 1)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ProfileCapabilities + { + + private int maximumNumberOfProfilesField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public int MaximumNumberOfProfiles + { + get + { + return this.maximumNumberOfProfilesField; + } + set + { + this.maximumNumberOfProfilesField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 1)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class MediaCapabilitiesExtension + { + + private ProfileCapabilities profileCapabilitiesField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public ProfileCapabilities ProfileCapabilities + { + get + { + return this.profileCapabilitiesField; + } + set + { + this.profileCapabilitiesField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 1)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class RealTimeStreamingCapabilitiesExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class RealTimeStreamingCapabilities + { + + private bool rTPMulticastField; + + private bool rTPMulticastFieldSpecified; + + private bool rTP_TCPField; + + private bool rTP_TCPFieldSpecified; + + private bool rTP_RTSP_TCPField; + + private bool rTP_RTSP_TCPFieldSpecified; + + private RealTimeStreamingCapabilitiesExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public bool RTPMulticast + { + get + { + return this.rTPMulticastField; + } + set + { + this.rTPMulticastField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool RTPMulticastSpecified + { + get + { + return this.rTPMulticastFieldSpecified; + } + set + { + this.rTPMulticastFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool RTP_TCP + { + get + { + return this.rTP_TCPField; + } + set + { + this.rTP_TCPField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool RTP_TCPSpecified + { + get + { + return this.rTP_TCPFieldSpecified; + } + set + { + this.rTP_TCPFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public bool RTP_RTSP_TCP + { + get + { + return this.rTP_RTSP_TCPField; + } + set + { + this.rTP_RTSP_TCPField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool RTP_RTSP_TCPSpecified + { + get + { + return this.rTP_RTSP_TCPFieldSpecified; + } + set + { + this.rTP_RTSP_TCPFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public RealTimeStreamingCapabilitiesExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class MediaCapabilities + { + + private string xAddrField; + + private RealTimeStreamingCapabilities streamingCapabilitiesField; + + private System.Xml.Linq.XElement[] anyField; + + private MediaCapabilitiesExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 0)] + public string XAddr + { + get + { + return this.xAddrField; + } + set + { + this.xAddrField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public RealTimeStreamingCapabilities StreamingCapabilities + { + get + { + return this.streamingCapabilitiesField; + } + set + { + this.streamingCapabilitiesField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public MediaCapabilitiesExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ImagingCapabilities + { + + private string xAddrField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 0)] + public string XAddr + { + get + { + return this.xAddrField; + } + set + { + this.xAddrField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class EventCapabilities + { + + private string xAddrField; + + private bool wSSubscriptionPolicySupportField; + + private bool wSPullPointSupportField; + + private bool wSPausableSubscriptionManagerInterfaceSupportField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 0)] + public string XAddr + { + get + { + return this.xAddrField; + } + set + { + this.xAddrField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool WSSubscriptionPolicySupport + { + get + { + return this.wSSubscriptionPolicySupportField; + } + set + { + this.wSSubscriptionPolicySupportField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public bool WSPullPointSupport + { + get + { + return this.wSPullPointSupportField; + } + set + { + this.wSPullPointSupportField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public bool WSPausableSubscriptionManagerInterfaceSupport + { + get + { + return this.wSPausableSubscriptionManagerInterfaceSupportField; + } + set + { + this.wSPausableSubscriptionManagerInterfaceSupportField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 4)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class DeviceCapabilitiesExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class SecurityCapabilitiesExtension2 + { + + private bool dot1XField; + + private int[] supportedEAPMethodField; + + private bool remoteUserHandlingField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public bool Dot1X + { + get + { + return this.dot1XField; + } + set + { + this.dot1XField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("SupportedEAPMethod", Order = 1)] + public int[] SupportedEAPMethod + { + get + { + return this.supportedEAPMethodField; + } + set + { + this.supportedEAPMethodField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public bool RemoteUserHandling + { + get + { + return this.remoteUserHandlingField; + } + set + { + this.remoteUserHandlingField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 3)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class SecurityCapabilitiesExtension + { + + private bool tLS10Field; + + private SecurityCapabilitiesExtension2 extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute("TLS1.0", Order = 0)] + public bool TLS10 + { + get + { + return this.tLS10Field; + } + set + { + this.tLS10Field = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public SecurityCapabilitiesExtension2 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(TypeName = "SecurityCapabilities", Namespace = "http://www.onvif.org/ver10/schema")] + public partial class SecurityCapabilities1 + { + + private bool tLS11Field; + + private bool tLS12Field; + + private bool onboardKeyGenerationField; + + private bool accessPolicyConfigField; + + private bool x509TokenField; + + private bool sAMLTokenField; + + private bool kerberosTokenField; + + private bool rELTokenField; + + private System.Xml.Linq.XElement[] anyField; + + private SecurityCapabilitiesExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute("TLS1.1", Order = 0)] + public bool TLS11 + { + get + { + return this.tLS11Field; + } + set + { + this.tLS11Field = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("TLS1.2", Order = 1)] + public bool TLS12 + { + get + { + return this.tLS12Field; + } + set + { + this.tLS12Field = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public bool OnboardKeyGeneration + { + get + { + return this.onboardKeyGenerationField; + } + set + { + this.onboardKeyGenerationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public bool AccessPolicyConfig + { + get + { + return this.accessPolicyConfigField; + } + set + { + this.accessPolicyConfigField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("X.509Token", Order = 4)] + public bool X509Token + { + get + { + return this.x509TokenField; + } + set + { + this.x509TokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public bool SAMLToken + { + get + { + return this.sAMLTokenField; + } + set + { + this.sAMLTokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 6)] + public bool KerberosToken + { + get + { + return this.kerberosTokenField; + } + set + { + this.kerberosTokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 7)] + public bool RELToken + { + get + { + return this.rELTokenField; + } + set + { + this.rELTokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 8)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 9)] + public SecurityCapabilitiesExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class IOCapabilitiesExtension2 + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class IOCapabilitiesExtension + { + + private System.Xml.Linq.XElement[] anyField; + + private bool auxiliaryField; + + private bool auxiliaryFieldSpecified; + + private string[] auxiliaryCommandsField; + + private IOCapabilitiesExtension2 extensionField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool Auxiliary + { + get + { + return this.auxiliaryField; + } + set + { + this.auxiliaryField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool AuxiliarySpecified + { + get + { + return this.auxiliaryFieldSpecified; + } + set + { + this.auxiliaryFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("AuxiliaryCommands", Order = 2)] + public string[] AuxiliaryCommands + { + get + { + return this.auxiliaryCommandsField; + } + set + { + this.auxiliaryCommandsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public IOCapabilitiesExtension2 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class IOCapabilities + { + + private int inputConnectorsField; + + private bool inputConnectorsFieldSpecified; + + private int relayOutputsField; + + private bool relayOutputsFieldSpecified; + + private IOCapabilitiesExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public int InputConnectors + { + get + { + return this.inputConnectorsField; + } + set + { + this.inputConnectorsField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool InputConnectorsSpecified + { + get + { + return this.inputConnectorsFieldSpecified; + } + set + { + this.inputConnectorsFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public int RelayOutputs + { + get + { + return this.relayOutputsField; + } + set + { + this.relayOutputsField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool RelayOutputsSpecified + { + get + { + return this.relayOutputsFieldSpecified; + } + set + { + this.relayOutputsFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public IOCapabilitiesExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class SystemCapabilitiesExtension2 + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class SystemCapabilitiesExtension + { + + private System.Xml.Linq.XElement[] anyField; + + private bool httpFirmwareUpgradeField; + + private bool httpFirmwareUpgradeFieldSpecified; + + private bool httpSystemBackupField; + + private bool httpSystemBackupFieldSpecified; + + private bool httpSystemLoggingField; + + private bool httpSystemLoggingFieldSpecified; + + private bool httpSupportInformationField; + + private bool httpSupportInformationFieldSpecified; + + private SystemCapabilitiesExtension2 extensionField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool HttpFirmwareUpgrade + { + get + { + return this.httpFirmwareUpgradeField; + } + set + { + this.httpFirmwareUpgradeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool HttpFirmwareUpgradeSpecified + { + get + { + return this.httpFirmwareUpgradeFieldSpecified; + } + set + { + this.httpFirmwareUpgradeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public bool HttpSystemBackup + { + get + { + return this.httpSystemBackupField; + } + set + { + this.httpSystemBackupField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool HttpSystemBackupSpecified + { + get + { + return this.httpSystemBackupFieldSpecified; + } + set + { + this.httpSystemBackupFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public bool HttpSystemLogging + { + get + { + return this.httpSystemLoggingField; + } + set + { + this.httpSystemLoggingField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool HttpSystemLoggingSpecified + { + get + { + return this.httpSystemLoggingFieldSpecified; + } + set + { + this.httpSystemLoggingFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public bool HttpSupportInformation + { + get + { + return this.httpSupportInformationField; + } + set + { + this.httpSupportInformationField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool HttpSupportInformationSpecified + { + get + { + return this.httpSupportInformationFieldSpecified; + } + set + { + this.httpSupportInformationFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public SystemCapabilitiesExtension2 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(TypeName = "SystemCapabilities", Namespace = "http://www.onvif.org/ver10/schema")] + public partial class SystemCapabilities1 + { + + private bool discoveryResolveField; + + private bool discoveryByeField; + + private bool remoteDiscoveryField; + + private bool systemBackupField; + + private bool systemLoggingField; + + private bool firmwareUpgradeField; + + private OnvifVersion[] supportedVersionsField; + + private SystemCapabilitiesExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public bool DiscoveryResolve + { + get + { + return this.discoveryResolveField; + } + set + { + this.discoveryResolveField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool DiscoveryBye + { + get + { + return this.discoveryByeField; + } + set + { + this.discoveryByeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public bool RemoteDiscovery + { + get + { + return this.remoteDiscoveryField; + } + set + { + this.remoteDiscoveryField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public bool SystemBackup + { + get + { + return this.systemBackupField; + } + set + { + this.systemBackupField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public bool SystemLogging + { + get + { + return this.systemLoggingField; + } + set + { + this.systemLoggingField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public bool FirmwareUpgrade + { + get + { + return this.firmwareUpgradeField; + } + set + { + this.firmwareUpgradeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("SupportedVersions", Order = 6)] + public OnvifVersion[] SupportedVersions + { + get + { + return this.supportedVersionsField; + } + set + { + this.supportedVersionsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 7)] + public SystemCapabilitiesExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NetworkCapabilitiesExtension2 + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NetworkCapabilitiesExtension + { + + private System.Xml.Linq.XElement[] anyField; + + private bool dot11ConfigurationField; + + private bool dot11ConfigurationFieldSpecified; + + private NetworkCapabilitiesExtension2 extensionField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool Dot11Configuration + { + get + { + return this.dot11ConfigurationField; + } + set + { + this.dot11ConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool Dot11ConfigurationSpecified + { + get + { + return this.dot11ConfigurationFieldSpecified; + } + set + { + this.dot11ConfigurationFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public NetworkCapabilitiesExtension2 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(TypeName = "NetworkCapabilities", Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NetworkCapabilities1 + { + + private bool iPFilterField; + + private bool iPFilterFieldSpecified; + + private bool zeroConfigurationField; + + private bool zeroConfigurationFieldSpecified; + + private bool iPVersion6Field; + + private bool iPVersion6FieldSpecified; + + private bool dynDNSField; + + private bool dynDNSFieldSpecified; + + private NetworkCapabilitiesExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public bool IPFilter + { + get + { + return this.iPFilterField; + } + set + { + this.iPFilterField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool IPFilterSpecified + { + get + { + return this.iPFilterFieldSpecified; + } + set + { + this.iPFilterFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool ZeroConfiguration + { + get + { + return this.zeroConfigurationField; + } + set + { + this.zeroConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool ZeroConfigurationSpecified + { + get + { + return this.zeroConfigurationFieldSpecified; + } + set + { + this.zeroConfigurationFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public bool IPVersion6 + { + get + { + return this.iPVersion6Field; + } + set + { + this.iPVersion6Field = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool IPVersion6Specified + { + get + { + return this.iPVersion6FieldSpecified; + } + set + { + this.iPVersion6FieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public bool DynDNS + { + get + { + return this.dynDNSField; + } + set + { + this.dynDNSField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool DynDNSSpecified + { + get + { + return this.dynDNSFieldSpecified; + } + set + { + this.dynDNSFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public NetworkCapabilitiesExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class DeviceCapabilities + { + + private string xAddrField; + + private NetworkCapabilities1 networkField; + + private SystemCapabilities1 systemField; + + private IOCapabilities ioField; + + private SecurityCapabilities1 securityField; + + private DeviceCapabilitiesExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 0)] + public string XAddr + { + get + { + return this.xAddrField; + } + set + { + this.xAddrField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public NetworkCapabilities1 Network + { + get + { + return this.networkField; + } + set + { + this.networkField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public SystemCapabilities1 System + { + get + { + return this.systemField; + } + set + { + this.systemField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public IOCapabilities IO + { + get + { + return this.ioField; + } + set + { + this.ioField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public SecurityCapabilities1 Security + { + get + { + return this.securityField; + } + set + { + this.securityField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public DeviceCapabilitiesExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AnalyticsCapabilities + { + + private string xAddrField; + + private bool ruleSupportField; + + private bool analyticsModuleSupportField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 0)] + public string XAddr + { + get + { + return this.xAddrField; + } + set + { + this.xAddrField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool RuleSupport + { + get + { + return this.ruleSupportField; + } + set + { + this.ruleSupportField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public bool AnalyticsModuleSupport + { + get + { + return this.analyticsModuleSupportField; + } + set + { + this.analyticsModuleSupportField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 3)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Capabilities + { + + private AnalyticsCapabilities analyticsField; + + private DeviceCapabilities deviceField; + + private EventCapabilities eventsField; + + private ImagingCapabilities imagingField; + + private MediaCapabilities mediaField; + + private PTZCapabilities pTZField; + + private CapabilitiesExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public AnalyticsCapabilities Analytics + { + get + { + return this.analyticsField; + } + set + { + this.analyticsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public DeviceCapabilities Device + { + get + { + return this.deviceField; + } + set + { + this.deviceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public EventCapabilities Events + { + get + { + return this.eventsField; + } + set + { + this.eventsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public ImagingCapabilities Imaging + { + get + { + return this.imagingField; + } + set + { + this.imagingField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public MediaCapabilities Media + { + get + { + return this.mediaField; + } + set + { + this.mediaField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public PTZCapabilities PTZ + { + get + { + return this.pTZField; + } + set + { + this.pTZField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 6)] + public CapabilitiesExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class UserExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class User + { + + private string usernameField; + + private string passwordField; + + private UserLevel userLevelField; + + private UserExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string Username + { + get + { + return this.usernameField; + } + set + { + this.usernameField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public string Password + { + get + { + return this.passwordField; + } + set + { + this.passwordField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public UserLevel UserLevel + { + get + { + return this.userLevelField; + } + set + { + this.userLevelField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public UserExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum UserLevel + { + + /// + Administrator, + + /// + Operator, + + /// + User, + + /// + Anonymous, + + /// + Extended, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class RemoteUser + { + + private string usernameField; + + private string passwordField; + + private bool useDerivedPasswordField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string Username + { + get + { + return this.usernameField; + } + set + { + this.usernameField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public string Password + { + get + { + return this.passwordField; + } + set + { + this.passwordField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public bool UseDerivedPassword + { + get + { + return this.useDerivedPasswordField; + } + set + { + this.useDerivedPasswordField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 3)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Scope + { + + private ScopeDefinition scopeDefField; + + private string scopeItemField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public ScopeDefinition ScopeDef + { + get + { + return this.scopeDefField; + } + set + { + this.scopeDefField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 1)] + public string ScopeItem + { + get + { + return this.scopeItemField; + } + set + { + this.scopeItemField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum ScopeDefinition + { + + /// + Fixed, + + /// + Configurable, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class SupportInformation + { + + private AttachmentData binaryField; + + private string stringField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public AttachmentData Binary + { + get + { + return this.binaryField; + } + set + { + this.binaryField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public string String + { + get + { + return this.stringField; + } + set + { + this.stringField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AttachmentData + { + + private Include includeField; + + private string contentTypeField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Namespace = "http://www.w3.org/2004/08/xop/include", Order = 0)] + public Include Include + { + get + { + return this.includeField; + } + set + { + this.includeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "http://www.w3.org/2005/05/xmlmime")] + public string contentType + { + get + { + return this.contentTypeField; + } + set + { + this.contentTypeField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.w3.org/2004/08/xop/include")] + public partial class Include + { + + private System.Xml.Linq.XElement[] anyField; + + private string hrefField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType = "anyURI")] + public string href + { + get + { + return this.hrefField; + } + set + { + this.hrefField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class SystemLog + { + + private AttachmentData binaryField; + + private string stringField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public AttachmentData Binary + { + get + { + return this.binaryField; + } + set + { + this.binaryField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public string String + { + get + { + return this.stringField; + } + set + { + this.stringField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class BackupFile + { + + private string nameField; + + private AttachmentData dataField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string Name + { + get + { + return this.nameField; + } + set + { + this.nameField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public AttachmentData Data + { + get + { + return this.dataField; + } + set + { + this.dataField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class SystemDateTimeExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class SystemDateTime + { + + private SetDateTimeType dateTimeTypeField; + + private bool daylightSavingsField; + + private TimeZone timeZoneField; + + private DateTime uTCDateTimeField; + + private DateTime localDateTimeField; + + private SystemDateTimeExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public SetDateTimeType DateTimeType + { + get + { + return this.dateTimeTypeField; + } + set + { + this.dateTimeTypeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool DaylightSavings + { + get + { + return this.daylightSavingsField; + } + set + { + this.daylightSavingsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public TimeZone TimeZone + { + get + { + return this.timeZoneField; + } + set + { + this.timeZoneField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public DateTime UTCDateTime + { + get + { + return this.uTCDateTimeField; + } + set + { + this.uTCDateTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public DateTime LocalDateTime + { + get + { + return this.localDateTimeField; + } + set + { + this.localDateTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public SystemDateTimeExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum SetDateTimeType + { + + /// + Manual, + + /// + NTP, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class TimeZone + { + + private string tzField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "token", Order = 0)] + public string TZ + { + get + { + return this.tzField; + } + set + { + this.tzField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class DateTime + { + + private Time timeField; + + private Date dateField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public Time Time + { + get + { + return this.timeField; + } + set + { + this.timeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public Date Date + { + get + { + return this.dateField; + } + set + { + this.dateField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Time + { + + private int hourField; + + private int minuteField; + + private int secondField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public int Hour + { + get + { + return this.hourField; + } + set + { + this.hourField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public int Minute + { + get + { + return this.minuteField; + } + set + { + this.minuteField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public int Second + { + get + { + return this.secondField; + } + set + { + this.secondField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Date + { + + private int yearField; + + private int monthField; + + private int dayField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public int Year + { + get + { + return this.yearField; + } + set + { + this.yearField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public int Month + { + get + { + return this.monthField; + } + set + { + this.monthField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public int Day + { + get + { + return this.dayField; + } + set + { + this.dayField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum FactoryDefaultType + { + + /// + Hard, + + /// + Soft, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum DiscoveryMode + { + + /// + Discoverable, + + /// + NonDiscoverable, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum CapabilityCategory + { + + /// + All, + + /// + Analytics, + + /// + Device, + + /// + Events, + + /// + Imaging, + + /// + Media, + + /// + PTZ, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum RelayLogicalState + { + + /// + active, + + /// + inactive, + } + + + + + + + + + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class OSDConfigurationOptionsExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class OSDImgOptionsExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class OSDImgOptions + { + + private string[] imagePathField; + + private OSDImgOptionsExtension extensionField; + + private string[] formatsSupportedField; + + private int maxSizeField; + + private bool maxSizeFieldSpecified; + + private int maxWidthField; + + private bool maxWidthFieldSpecified; + + private int maxHeightField; + + private bool maxHeightFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute("ImagePath", DataType = "anyURI", Order = 0)] + public string[] ImagePath + { + get + { + return this.imagePathField; + } + set + { + this.imagePathField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public OSDImgOptionsExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string[] FormatsSupported + { + get + { + return this.formatsSupportedField; + } + set + { + this.formatsSupportedField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int MaxSize + { + get + { + return this.maxSizeField; + } + set + { + this.maxSizeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool MaxSizeSpecified + { + get + { + return this.maxSizeFieldSpecified; + } + set + { + this.maxSizeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int MaxWidth + { + get + { + return this.maxWidthField; + } + set + { + this.maxWidthField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool MaxWidthSpecified + { + get + { + return this.maxWidthFieldSpecified; + } + set + { + this.maxWidthFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int MaxHeight + { + get + { + return this.maxHeightField; + } + set + { + this.maxHeightField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool MaxHeightSpecified + { + get + { + return this.maxHeightFieldSpecified; + } + set + { + this.maxHeightFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class OSDTextOptionsExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class OSDColorOptionsExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ColorspaceRange + { + + private FloatRange xField; + + private FloatRange yField; + + private FloatRange zField; + + private string colorspaceField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public FloatRange X + { + get + { + return this.xField; + } + set + { + this.xField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public FloatRange Y + { + get + { + return this.yField; + } + set + { + this.yField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public FloatRange Z + { + get + { + return this.zField; + } + set + { + this.zField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 3)] + public string Colorspace + { + get + { + return this.colorspaceField; + } + set + { + this.colorspaceField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ColorOptions + { + + private object[] itemsField; + + /// + [System.Xml.Serialization.XmlElementAttribute("ColorList", typeof(Color), Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("ColorspaceRange", typeof(ColorspaceRange), Order = 0)] + public object[] Items + { + get + { + return this.itemsField; + } + set + { + this.itemsField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class OSDColorOptions + { + + private ColorOptions colorField; + + private IntRange transparentField; + + private OSDColorOptionsExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public ColorOptions Color + { + get + { + return this.colorField; + } + set + { + this.colorField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public IntRange Transparent + { + get + { + return this.transparentField; + } + set + { + this.transparentField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public OSDColorOptionsExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class IntRange + { + + private int minField; + + private int maxField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public int Min + { + get + { + return this.minField; + } + set + { + this.minField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public int Max + { + get + { + return this.maxField; + } + set + { + this.maxField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class OSDTextOptions + { + + private string[] typeField; + + private IntRange fontSizeRangeField; + + private string[] dateFormatField; + + private string[] timeFormatField; + + private OSDColorOptions fontColorField; + + private OSDColorOptions backgroundColorField; + + private OSDTextOptionsExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute("Type", Order = 0)] + public string[] Type + { + get + { + return this.typeField; + } + set + { + this.typeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public IntRange FontSizeRange + { + get + { + return this.fontSizeRangeField; + } + set + { + this.fontSizeRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("DateFormat", Order = 2)] + public string[] DateFormat + { + get + { + return this.dateFormatField; + } + set + { + this.dateFormatField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("TimeFormat", Order = 3)] + public string[] TimeFormat + { + get + { + return this.timeFormatField; + } + set + { + this.timeFormatField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public OSDColorOptions FontColor + { + get + { + return this.fontColorField; + } + set + { + this.fontColorField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public OSDColorOptions BackgroundColor + { + get + { + return this.backgroundColorField; + } + set + { + this.backgroundColorField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 6)] + public OSDTextOptionsExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class MaximumNumberOfOSDs + { + + private int totalField; + + private int imageField; + + private bool imageFieldSpecified; + + private int plainTextField; + + private bool plainTextFieldSpecified; + + private int dateField; + + private bool dateFieldSpecified; + + private int timeField; + + private bool timeFieldSpecified; + + private int dateAndTimeField; + + private bool dateAndTimeFieldSpecified; + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int Total + { + get + { + return this.totalField; + } + set + { + this.totalField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int Image + { + get + { + return this.imageField; + } + set + { + this.imageField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool ImageSpecified + { + get + { + return this.imageFieldSpecified; + } + set + { + this.imageFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int PlainText + { + get + { + return this.plainTextField; + } + set + { + this.plainTextField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool PlainTextSpecified + { + get + { + return this.plainTextFieldSpecified; + } + set + { + this.plainTextFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int Date + { + get + { + return this.dateField; + } + set + { + this.dateField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool DateSpecified + { + get + { + return this.dateFieldSpecified; + } + set + { + this.dateFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int Time + { + get + { + return this.timeField; + } + set + { + this.timeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool TimeSpecified + { + get + { + return this.timeFieldSpecified; + } + set + { + this.timeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int DateAndTime + { + get + { + return this.dateAndTimeField; + } + set + { + this.dateAndTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool DateAndTimeSpecified + { + get + { + return this.dateAndTimeFieldSpecified; + } + set + { + this.dateAndTimeFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class OSDConfigurationOptions + { + + private MaximumNumberOfOSDs maximumNumberOfOSDsField; + + private OSDType[] typeField; + + private string[] positionOptionField; + + private OSDTextOptions textOptionField; + + private OSDImgOptions imageOptionField; + + private OSDConfigurationOptionsExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public MaximumNumberOfOSDs MaximumNumberOfOSDs + { + get + { + return this.maximumNumberOfOSDsField; + } + set + { + this.maximumNumberOfOSDsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Type", Order = 1)] + public OSDType[] Type + { + get + { + return this.typeField; + } + set + { + this.typeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("PositionOption", Order = 2)] + public string[] PositionOption + { + get + { + return this.positionOptionField; + } + set + { + this.positionOptionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public OSDTextOptions TextOption + { + get + { + return this.textOptionField; + } + set + { + this.textOptionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public OSDImgOptions ImageOption + { + get + { + return this.imageOptionField; + } + set + { + this.imageOptionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public OSDConfigurationOptionsExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class MediaUri + { + + private string uriField; + + private bool invalidAfterConnectField; + + private bool invalidAfterRebootField; + + private string timeoutField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 0)] + public string Uri + { + get + { + return this.uriField; + } + set + { + this.uriField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool InvalidAfterConnect + { + get + { + return this.invalidAfterConnectField; + } + set + { + this.invalidAfterConnectField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public bool InvalidAfterReboot + { + get + { + return this.invalidAfterRebootField; + } + set + { + this.invalidAfterRebootField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "duration", Order = 3)] + public string Timeout + { + get + { + return this.timeoutField; + } + set + { + this.timeoutField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 4)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Transport + { + + private TransportProtocol protocolField; + + private Transport tunnelField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public TransportProtocol Protocol + { + get + { + return this.protocolField; + } + set + { + this.protocolField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public Transport Tunnel + { + get + { + return this.tunnelField; + } + set + { + this.tunnelField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum TransportProtocol + { + + /// + UDP, + + /// + TCP, + + /// + RTSP, + + /// + HTTP, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class StreamSetup + { + + private StreamType streamField; + + private Transport transportField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public StreamType Stream + { + get + { + return this.streamField; + } + set + { + this.streamField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public Transport Transport + { + get + { + return this.transportField; + } + set + { + this.transportField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum StreamType + { + + /// + [System.Xml.Serialization.XmlEnumAttribute("RTP-Unicast")] + RTPUnicast, + + /// + [System.Xml.Serialization.XmlEnumAttribute("RTP-Multicast")] + RTPMulticast, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AudioDecoderConfigurationOptionsExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class G726DecOptions + { + + private int[] bitrateField; + + private int[] sampleRateRangeField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlArrayAttribute(Order = 0)] + [System.Xml.Serialization.XmlArrayItemAttribute("Items", IsNullable = false)] + public int[] Bitrate + { + get + { + return this.bitrateField; + } + set + { + this.bitrateField = value; + } + } + + /// + [System.Xml.Serialization.XmlArrayAttribute(Order = 1)] + [System.Xml.Serialization.XmlArrayItemAttribute("Items", IsNullable = false)] + public int[] SampleRateRange + { + get + { + return this.sampleRateRangeField; + } + set + { + this.sampleRateRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class G711DecOptions + { + + private int[] bitrateField; + + private int[] sampleRateRangeField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlArrayAttribute(Order = 0)] + [System.Xml.Serialization.XmlArrayItemAttribute("Items", IsNullable = false)] + public int[] Bitrate + { + get + { + return this.bitrateField; + } + set + { + this.bitrateField = value; + } + } + + /// + [System.Xml.Serialization.XmlArrayAttribute(Order = 1)] + [System.Xml.Serialization.XmlArrayItemAttribute("Items", IsNullable = false)] + public int[] SampleRateRange + { + get + { + return this.sampleRateRangeField; + } + set + { + this.sampleRateRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AACDecOptions + { + + private int[] bitrateField; + + private int[] sampleRateRangeField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlArrayAttribute(Order = 0)] + [System.Xml.Serialization.XmlArrayItemAttribute("Items", IsNullable = false)] + public int[] Bitrate + { + get + { + return this.bitrateField; + } + set + { + this.bitrateField = value; + } + } + + /// + [System.Xml.Serialization.XmlArrayAttribute(Order = 1)] + [System.Xml.Serialization.XmlArrayItemAttribute("Items", IsNullable = false)] + public int[] SampleRateRange + { + get + { + return this.sampleRateRangeField; + } + set + { + this.sampleRateRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AudioDecoderConfigurationOptions + { + + private AACDecOptions aACDecOptionsField; + + private G711DecOptions g711DecOptionsField; + + private G726DecOptions g726DecOptionsField; + + private AudioDecoderConfigurationOptionsExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public AACDecOptions AACDecOptions + { + get + { + return this.aACDecOptionsField; + } + set + { + this.aACDecOptionsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public G711DecOptions G711DecOptions + { + get + { + return this.g711DecOptionsField; + } + set + { + this.g711DecOptionsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public G726DecOptions G726DecOptions + { + get + { + return this.g726DecOptionsField; + } + set + { + this.g726DecOptionsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public AudioDecoderConfigurationOptionsExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AudioOutputConfigurationOptions + { + + private string[] outputTokensAvailableField; + + private string[] sendPrimacyOptionsField; + + private IntRange outputLevelRangeField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute("OutputTokensAvailable", Order = 0)] + public string[] OutputTokensAvailable + { + get + { + return this.outputTokensAvailableField; + } + set + { + this.outputTokensAvailableField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("SendPrimacyOptions", DataType = "anyURI", Order = 1)] + public string[] SendPrimacyOptions + { + get + { + return this.sendPrimacyOptionsField; + } + set + { + this.sendPrimacyOptionsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public IntRange OutputLevelRange + { + get + { + return this.outputLevelRangeField; + } + set + { + this.outputLevelRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 3)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class MetadataConfigurationOptionsExtension2 + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class MetadataConfigurationOptionsExtension + { + + private string[] compressionTypeField; + + private MetadataConfigurationOptionsExtension2 extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute("CompressionType", Order = 0)] + public string[] CompressionType + { + get + { + return this.compressionTypeField; + } + set + { + this.compressionTypeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public MetadataConfigurationOptionsExtension2 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZStatusFilterOptionsExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZStatusFilterOptions + { + + private bool panTiltStatusSupportedField; + + private bool zoomStatusSupportedField; + + private System.Xml.Linq.XElement[] anyField; + + private bool panTiltPositionSupportedField; + + private bool panTiltPositionSupportedFieldSpecified; + + private bool zoomPositionSupportedField; + + private bool zoomPositionSupportedFieldSpecified; + + private PTZStatusFilterOptionsExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public bool PanTiltStatusSupported + { + get + { + return this.panTiltStatusSupportedField; + } + set + { + this.panTiltStatusSupportedField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool ZoomStatusSupported + { + get + { + return this.zoomStatusSupportedField; + } + set + { + this.zoomStatusSupportedField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public bool PanTiltPositionSupported + { + get + { + return this.panTiltPositionSupportedField; + } + set + { + this.panTiltPositionSupportedField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool PanTiltPositionSupportedSpecified + { + get + { + return this.panTiltPositionSupportedFieldSpecified; + } + set + { + this.panTiltPositionSupportedFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public bool ZoomPositionSupported + { + get + { + return this.zoomPositionSupportedField; + } + set + { + this.zoomPositionSupportedField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool ZoomPositionSupportedSpecified + { + get + { + return this.zoomPositionSupportedFieldSpecified; + } + set + { + this.zoomPositionSupportedFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public PTZStatusFilterOptionsExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class MetadataConfigurationOptions + { + + private PTZStatusFilterOptions pTZStatusFilterOptionsField; + + private System.Xml.Linq.XElement[] anyField; + + private MetadataConfigurationOptionsExtension extensionField; + + private bool geoLocationField; + + private bool geoLocationFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public PTZStatusFilterOptions PTZStatusFilterOptions + { + get + { + return this.pTZStatusFilterOptionsField; + } + set + { + this.pTZStatusFilterOptionsField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 1)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public MetadataConfigurationOptionsExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool GeoLocation + { + get + { + return this.geoLocationField; + } + set + { + this.geoLocationField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool GeoLocationSpecified + { + get + { + return this.geoLocationFieldSpecified; + } + set + { + this.geoLocationFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AudioEncoderConfigurationOption + { + + private AudioEncoding encodingField; + + private int[] bitrateListField; + + private int[] sampleRateListField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public AudioEncoding Encoding + { + get + { + return this.encodingField; + } + set + { + this.encodingField = value; + } + } + + /// + [System.Xml.Serialization.XmlArrayAttribute(Order = 1)] + [System.Xml.Serialization.XmlArrayItemAttribute("Items", IsNullable = false)] + public int[] BitrateList + { + get + { + return this.bitrateListField; + } + set + { + this.bitrateListField = value; + } + } + + /// + [System.Xml.Serialization.XmlArrayAttribute(Order = 2)] + [System.Xml.Serialization.XmlArrayItemAttribute("Items", IsNullable = false)] + public int[] SampleRateList + { + get + { + return this.sampleRateListField; + } + set + { + this.sampleRateListField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 3)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum AudioEncoding + { + + /// + G711, + + /// + G726, + + /// + AAC, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AudioEncoderConfigurationOptions + { + + private AudioEncoderConfigurationOption[] optionsField; + + /// + [System.Xml.Serialization.XmlElementAttribute("Options", Order = 0)] + public AudioEncoderConfigurationOption[] Options + { + get + { + return this.optionsField; + } + set + { + this.optionsField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AudioSourceOptionsExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AudioSourceConfigurationOptions + { + + private string[] inputTokensAvailableField; + + private AudioSourceOptionsExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute("InputTokensAvailable", Order = 0)] + public string[] InputTokensAvailable + { + get + { + return this.inputTokensAvailableField; + } + set + { + this.inputTokensAvailableField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public AudioSourceOptionsExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoEncoderOptionsExtension2 + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoEncoderOptionsExtension + { + + private System.Xml.Linq.XElement[] anyField; + + private JpegOptions2 jPEGField; + + private Mpeg4Options2 mPEG4Field; + + private H264Options2 h264Field; + + private VideoEncoderOptionsExtension2 extensionField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public JpegOptions2 JPEG + { + get + { + return this.jPEGField; + } + set + { + this.jPEGField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public Mpeg4Options2 MPEG4 + { + get + { + return this.mPEG4Field; + } + set + { + this.mPEG4Field = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public H264Options2 H264 + { + get + { + return this.h264Field; + } + set + { + this.h264Field = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public VideoEncoderOptionsExtension2 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class JpegOptions2 : JpegOptions + { + + private IntRange bitrateRangeField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public IntRange BitrateRange + { + get + { + return this.bitrateRangeField; + } + set + { + this.bitrateRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 1)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.Xml.Serialization.XmlIncludeAttribute(typeof(JpegOptions2))] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class JpegOptions + { + + private VideoResolution[] resolutionsAvailableField; + + private IntRange frameRateRangeField; + + private IntRange encodingIntervalRangeField; + + /// + [System.Xml.Serialization.XmlElementAttribute("ResolutionsAvailable", Order = 0)] + public VideoResolution[] ResolutionsAvailable + { + get + { + return this.resolutionsAvailableField; + } + set + { + this.resolutionsAvailableField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public IntRange FrameRateRange + { + get + { + return this.frameRateRangeField; + } + set + { + this.frameRateRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public IntRange EncodingIntervalRange + { + get + { + return this.encodingIntervalRangeField; + } + set + { + this.encodingIntervalRangeField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Mpeg4Options2 : Mpeg4Options + { + + private IntRange bitrateRangeField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public IntRange BitrateRange + { + get + { + return this.bitrateRangeField; + } + set + { + this.bitrateRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 1)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.Xml.Serialization.XmlIncludeAttribute(typeof(Mpeg4Options2))] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Mpeg4Options + { + + private VideoResolution[] resolutionsAvailableField; + + private IntRange govLengthRangeField; + + private IntRange frameRateRangeField; + + private IntRange encodingIntervalRangeField; + + private Mpeg4Profile[] mpeg4ProfilesSupportedField; + + /// + [System.Xml.Serialization.XmlElementAttribute("ResolutionsAvailable", Order = 0)] + public VideoResolution[] ResolutionsAvailable + { + get + { + return this.resolutionsAvailableField; + } + set + { + this.resolutionsAvailableField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public IntRange GovLengthRange + { + get + { + return this.govLengthRangeField; + } + set + { + this.govLengthRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public IntRange FrameRateRange + { + get + { + return this.frameRateRangeField; + } + set + { + this.frameRateRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public IntRange EncodingIntervalRange + { + get + { + return this.encodingIntervalRangeField; + } + set + { + this.encodingIntervalRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Mpeg4ProfilesSupported", Order = 4)] + public Mpeg4Profile[] Mpeg4ProfilesSupported + { + get + { + return this.mpeg4ProfilesSupportedField; + } + set + { + this.mpeg4ProfilesSupportedField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum Mpeg4Profile + { + + /// + SP, + + /// + ASP, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class H264Options2 : H264Options + { + + private IntRange bitrateRangeField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public IntRange BitrateRange + { + get + { + return this.bitrateRangeField; + } + set + { + this.bitrateRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 1)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.Xml.Serialization.XmlIncludeAttribute(typeof(H264Options2))] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class H264Options + { + + private VideoResolution[] resolutionsAvailableField; + + private IntRange govLengthRangeField; + + private IntRange frameRateRangeField; + + private IntRange encodingIntervalRangeField; + + private H264Profile[] h264ProfilesSupportedField; + + /// + [System.Xml.Serialization.XmlElementAttribute("ResolutionsAvailable", Order = 0)] + public VideoResolution[] ResolutionsAvailable + { + get + { + return this.resolutionsAvailableField; + } + set + { + this.resolutionsAvailableField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public IntRange GovLengthRange + { + get + { + return this.govLengthRangeField; + } + set + { + this.govLengthRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public IntRange FrameRateRange + { + get + { + return this.frameRateRangeField; + } + set + { + this.frameRateRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public IntRange EncodingIntervalRange + { + get + { + return this.encodingIntervalRangeField; + } + set + { + this.encodingIntervalRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("H264ProfilesSupported", Order = 4)] + public H264Profile[] H264ProfilesSupported + { + get + { + return this.h264ProfilesSupportedField; + } + set + { + this.h264ProfilesSupportedField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum H264Profile + { + + /// + Baseline, + + /// + Main, + + /// + Extended, + + /// + High, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoEncoderConfigurationOptions + { + + private IntRange qualityRangeField; + + private JpegOptions jPEGField; + + private Mpeg4Options mPEG4Field; + + private H264Options h264Field; + + private VideoEncoderOptionsExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public IntRange QualityRange + { + get + { + return this.qualityRangeField; + } + set + { + this.qualityRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public JpegOptions JPEG + { + get + { + return this.jPEGField; + } + set + { + this.jPEGField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public Mpeg4Options MPEG4 + { + get + { + return this.mPEG4Field; + } + set + { + this.mPEG4Field = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public H264Options H264 + { + get + { + return this.h264Field; + } + set + { + this.h264Field = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public VideoEncoderOptionsExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoSourceConfigurationOptionsExtension2 + { + + private SceneOrientationMode[] sceneOrientationModeField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute("SceneOrientationMode", Order = 0)] + public SceneOrientationMode[] SceneOrientationMode + { + get + { + return this.sceneOrientationModeField; + } + set + { + this.sceneOrientationModeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 1)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum SceneOrientationMode + { + + /// + MANUAL, + + /// + AUTO, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class RotateOptionsExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class RotateOptions + { + + private RotateMode[] modeField; + + private int[] degreeListField; + + private RotateOptionsExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute("Mode", Order = 0)] + public RotateMode[] Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlArrayAttribute(Order = 1)] + [System.Xml.Serialization.XmlArrayItemAttribute("Items", IsNullable = false)] + public int[] DegreeList + { + get + { + return this.degreeListField; + } + set + { + this.degreeListField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public RotateOptionsExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum RotateMode + { + + /// + OFF, + + /// + ON, + + /// + AUTO, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoSourceConfigurationOptionsExtension + { + + private System.Xml.Linq.XElement[] anyField; + + private RotateOptions rotateField; + + private VideoSourceConfigurationOptionsExtension2 extensionField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public RotateOptions Rotate + { + get + { + return this.rotateField; + } + set + { + this.rotateField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public VideoSourceConfigurationOptionsExtension2 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class IntRectangleRange + { + + private IntRange xRangeField; + + private IntRange yRangeField; + + private IntRange widthRangeField; + + private IntRange heightRangeField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public IntRange XRange + { + get + { + return this.xRangeField; + } + set + { + this.xRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public IntRange YRange + { + get + { + return this.yRangeField; + } + set + { + this.yRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public IntRange WidthRange + { + get + { + return this.widthRangeField; + } + set + { + this.widthRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public IntRange HeightRange + { + get + { + return this.heightRangeField; + } + set + { + this.heightRangeField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoSourceConfigurationOptions + { + + private IntRectangleRange boundsRangeField; + + private string[] videoSourceTokensAvailableField; + + private VideoSourceConfigurationOptionsExtension extensionField; + + private int maximumNumberOfProfilesField; + + private bool maximumNumberOfProfilesFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public IntRectangleRange BoundsRange + { + get + { + return this.boundsRangeField; + } + set + { + this.boundsRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("VideoSourceTokensAvailable", Order = 1)] + public string[] VideoSourceTokensAvailable + { + get + { + return this.videoSourceTokensAvailableField; + } + set + { + this.videoSourceTokensAvailableField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public VideoSourceConfigurationOptionsExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int MaximumNumberOfProfiles + { + get + { + return this.maximumNumberOfProfilesField; + } + set + { + this.maximumNumberOfProfilesField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool MaximumNumberOfProfilesSpecified + { + get + { + return this.maximumNumberOfProfilesFieldSpecified; + } + set + { + this.maximumNumberOfProfilesFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ProfileExtension2 + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ProfileExtension + { + + private System.Xml.Linq.XElement[] anyField; + + private AudioOutputConfiguration audioOutputConfigurationField; + + private AudioDecoderConfiguration audioDecoderConfigurationField; + + private ProfileExtension2 extensionField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public AudioOutputConfiguration AudioOutputConfiguration + { + get + { + return this.audioOutputConfigurationField; + } + set + { + this.audioOutputConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public AudioDecoderConfiguration AudioDecoderConfiguration + { + get + { + return this.audioDecoderConfigurationField; + } + set + { + this.audioDecoderConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public ProfileExtension2 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AudioOutputConfiguration : ConfigurationEntity + { + + private string outputTokenField; + + private string sendPrimacyField; + + private int outputLevelField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string OutputToken + { + get + { + return this.outputTokenField; + } + set + { + this.outputTokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 1)] + public string SendPrimacy + { + get + { + return this.sendPrimacyField; + } + set + { + this.sendPrimacyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public int OutputLevel + { + get + { + return this.outputLevelField; + } + set + { + this.outputLevelField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 3)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.Xml.Serialization.XmlIncludeAttribute(typeof(AnalyticsEngineControl))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(AnalyticsEngineInput))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(AnalyticsEngine))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(PTZConfiguration))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(AudioDecoderConfiguration))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(AudioOutputConfiguration))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(VideoOutputConfiguration))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(MetadataConfiguration))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(VideoAnalyticsConfiguration))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(AudioEncoder2Configuration))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(AudioEncoderConfiguration))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(AudioSourceConfiguration))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(VideoEncoder2Configuration))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(VideoEncoderConfiguration))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(VideoSourceConfiguration))] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ConfigurationEntity + { + + private string nameField; + + private int useCountField; + + private string tokenField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string Name + { + get + { + return this.nameField; + } + set + { + this.nameField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public int UseCount + { + get + { + return this.useCountField; + } + set + { + this.useCountField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string token + { + get + { + return this.tokenField; + } + set + { + this.tokenField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AnalyticsEngineControl : ConfigurationEntity + { + + private string engineTokenField; + + private string engineConfigTokenField; + + private string[] inputTokenField; + + private string[] receiverTokenField; + + private MulticastConfiguration multicastField; + + private Config subscriptionField; + + private ModeOfOperation modeField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string EngineToken + { + get + { + return this.engineTokenField; + } + set + { + this.engineTokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public string EngineConfigToken + { + get + { + return this.engineConfigTokenField; + } + set + { + this.engineConfigTokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("InputToken", Order = 2)] + public string[] InputToken + { + get + { + return this.inputTokenField; + } + set + { + this.inputTokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("ReceiverToken", Order = 3)] + public string[] ReceiverToken + { + get + { + return this.receiverTokenField; + } + set + { + this.receiverTokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public MulticastConfiguration Multicast + { + get + { + return this.multicastField; + } + set + { + this.multicastField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public Config Subscription + { + get + { + return this.subscriptionField; + } + set + { + this.subscriptionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 6)] + public ModeOfOperation Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 7)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class MulticastConfiguration + { + + private IPAddress addressField; + + private int portField; + + private int tTLField; + + private bool autoStartField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public IPAddress Address + { + get + { + return this.addressField; + } + set + { + this.addressField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public int Port + { + get + { + return this.portField; + } + set + { + this.portField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public int TTL + { + get + { + return this.tTLField; + } + set + { + this.tTLField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public bool AutoStart + { + get + { + return this.autoStartField; + } + set + { + this.autoStartField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 4)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Config + { + + private ItemList parametersField; + + private string nameField; + + private System.Xml.XmlQualifiedName typeField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public ItemList Parameters + { + get + { + return this.parametersField; + } + set + { + this.parametersField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string Name + { + get + { + return this.nameField; + } + set + { + this.nameField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public System.Xml.XmlQualifiedName Type + { + get + { + return this.typeField; + } + set + { + this.typeField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ItemList + { + + private ItemListSimpleItem[] simpleItemField; + + private ItemListElementItem[] elementItemField; + + private ItemListExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute("SimpleItem", Order = 0)] + public ItemListSimpleItem[] SimpleItem + { + get + { + return this.simpleItemField; + } + set + { + this.simpleItemField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("ElementItem", Order = 1)] + public ItemListElementItem[] ElementItem + { + get + { + return this.elementItemField; + } + set + { + this.elementItemField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public ItemListExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ItemListSimpleItem + { + + private string nameField; + + private string valueField; + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string Name + { + get + { + return this.nameField; + } + set + { + this.nameField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string Value + { + get + { + return this.valueField; + } + set + { + this.valueField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ItemListElementItem + { + + private System.Xml.Linq.XElement anyField; + + private string nameField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string Name + { + get + { + return this.nameField; + } + set + { + this.nameField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ItemListExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum ModeOfOperation + { + + /// + Idle, + + /// + Active, + + /// + Unknown, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AnalyticsEngineInput : ConfigurationEntity + { + + private SourceIdentification sourceIdentificationField; + + private VideoEncoderConfiguration videoInputField; + + private MetadataInput metadataInputField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public SourceIdentification SourceIdentification + { + get + { + return this.sourceIdentificationField; + } + set + { + this.sourceIdentificationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public VideoEncoderConfiguration VideoInput + { + get + { + return this.videoInputField; + } + set + { + this.videoInputField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public MetadataInput MetadataInput + { + get + { + return this.metadataInputField; + } + set + { + this.metadataInputField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 3)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class SourceIdentification + { + + private string nameField; + + private string[] tokenField; + + private SourceIdentificationExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string Name + { + get + { + return this.nameField; + } + set + { + this.nameField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Token", Order = 1)] + public string[] Token + { + get + { + return this.tokenField; + } + set + { + this.tokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public SourceIdentificationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class SourceIdentificationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoEncoderConfiguration : ConfigurationEntity + { + + private VideoEncoding encodingField; + + private VideoResolution resolutionField; + + private float qualityField; + + private VideoRateControl rateControlField; + + private Mpeg4Configuration mPEG4Field; + + private H264Configuration h264Field; + + private MulticastConfiguration multicastField; + + private string sessionTimeoutField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public VideoEncoding Encoding + { + get + { + return this.encodingField; + } + set + { + this.encodingField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public VideoResolution Resolution + { + get + { + return this.resolutionField; + } + set + { + this.resolutionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public float Quality + { + get + { + return this.qualityField; + } + set + { + this.qualityField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public VideoRateControl RateControl + { + get + { + return this.rateControlField; + } + set + { + this.rateControlField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public Mpeg4Configuration MPEG4 + { + get + { + return this.mPEG4Field; + } + set + { + this.mPEG4Field = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public H264Configuration H264 + { + get + { + return this.h264Field; + } + set + { + this.h264Field = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 6)] + public MulticastConfiguration Multicast + { + get + { + return this.multicastField; + } + set + { + this.multicastField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "duration", Order = 7)] + public string SessionTimeout + { + get + { + return this.sessionTimeoutField; + } + set + { + this.sessionTimeoutField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 8)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum VideoEncoding + { + + /// + JPEG, + + /// + MPEG4, + + /// + H264, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoRateControl + { + + private int frameRateLimitField; + + private int encodingIntervalField; + + private int bitrateLimitField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public int FrameRateLimit + { + get + { + return this.frameRateLimitField; + } + set + { + this.frameRateLimitField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public int EncodingInterval + { + get + { + return this.encodingIntervalField; + } + set + { + this.encodingIntervalField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public int BitrateLimit + { + get + { + return this.bitrateLimitField; + } + set + { + this.bitrateLimitField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Mpeg4Configuration + { + + private int govLengthField; + + private Mpeg4Profile mpeg4ProfileField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public int GovLength + { + get + { + return this.govLengthField; + } + set + { + this.govLengthField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public Mpeg4Profile Mpeg4Profile + { + get + { + return this.mpeg4ProfileField; + } + set + { + this.mpeg4ProfileField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class H264Configuration + { + + private int govLengthField; + + private H264Profile h264ProfileField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public int GovLength + { + get + { + return this.govLengthField; + } + set + { + this.govLengthField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public H264Profile H264Profile + { + get + { + return this.h264ProfileField; + } + set + { + this.h264ProfileField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class MetadataInput + { + + private Config[] metadataConfigField; + + private MetadataInputExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute("MetadataConfig", Order = 0)] + public Config[] MetadataConfig + { + get + { + return this.metadataConfigField; + } + set + { + this.metadataConfigField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public MetadataInputExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class MetadataInputExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AnalyticsEngine : ConfigurationEntity + { + + private AnalyticsDeviceEngineConfiguration analyticsEngineConfigurationField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public AnalyticsDeviceEngineConfiguration AnalyticsEngineConfiguration + { + get + { + return this.analyticsEngineConfigurationField; + } + set + { + this.analyticsEngineConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 1)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AnalyticsDeviceEngineConfiguration + { + + private EngineConfiguration[] engineConfigurationField; + + private AnalyticsDeviceEngineConfigurationExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute("EngineConfiguration", Order = 0)] + public EngineConfiguration[] EngineConfiguration + { + get + { + return this.engineConfigurationField; + } + set + { + this.engineConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public AnalyticsDeviceEngineConfigurationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class EngineConfiguration + { + + private VideoAnalyticsConfiguration videoAnalyticsConfigurationField; + + private AnalyticsEngineInputInfo analyticsEngineInputInfoField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public VideoAnalyticsConfiguration VideoAnalyticsConfiguration + { + get + { + return this.videoAnalyticsConfigurationField; + } + set + { + this.videoAnalyticsConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public AnalyticsEngineInputInfo AnalyticsEngineInputInfo + { + get + { + return this.analyticsEngineInputInfoField; + } + set + { + this.analyticsEngineInputInfoField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoAnalyticsConfiguration : ConfigurationEntity + { + + private AnalyticsEngineConfiguration analyticsEngineConfigurationField; + + private RuleEngineConfiguration ruleEngineConfigurationField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public AnalyticsEngineConfiguration AnalyticsEngineConfiguration + { + get + { + return this.analyticsEngineConfigurationField; + } + set + { + this.analyticsEngineConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public RuleEngineConfiguration RuleEngineConfiguration + { + get + { + return this.ruleEngineConfigurationField; + } + set + { + this.ruleEngineConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AnalyticsEngineConfiguration + { + + private Config[] analyticsModuleField; + + private AnalyticsEngineConfigurationExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute("AnalyticsModule", Order = 0)] + public Config[] AnalyticsModule + { + get + { + return this.analyticsModuleField; + } + set + { + this.analyticsModuleField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public AnalyticsEngineConfigurationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AnalyticsEngineConfigurationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class RuleEngineConfiguration + { + + private Config[] ruleField; + + private RuleEngineConfigurationExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute("Rule", Order = 0)] + public Config[] Rule + { + get + { + return this.ruleField; + } + set + { + this.ruleField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public RuleEngineConfigurationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class RuleEngineConfigurationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AnalyticsEngineInputInfo + { + + private Config inputInfoField; + + private AnalyticsEngineInputInfoExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public Config InputInfo + { + get + { + return this.inputInfoField; + } + set + { + this.inputInfoField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public AnalyticsEngineInputInfoExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AnalyticsEngineInputInfoExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AnalyticsDeviceEngineConfigurationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZConfiguration : ConfigurationEntity + { + + private string nodeTokenField; + + private string defaultAbsolutePantTiltPositionSpaceField; + + private string defaultAbsoluteZoomPositionSpaceField; + + private string defaultRelativePanTiltTranslationSpaceField; + + private string defaultRelativeZoomTranslationSpaceField; + + private string defaultContinuousPanTiltVelocitySpaceField; + + private string defaultContinuousZoomVelocitySpaceField; + + private PTZSpeed defaultPTZSpeedField; + + private string defaultPTZTimeoutField; + + private PanTiltLimits panTiltLimitsField; + + private ZoomLimits zoomLimitsField; + + private PTZConfigurationExtension extensionField; + + private int moveRampField; + + private bool moveRampFieldSpecified; + + private int presetRampField; + + private bool presetRampFieldSpecified; + + private int presetTourRampField; + + private bool presetTourRampFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string NodeToken + { + get + { + return this.nodeTokenField; + } + set + { + this.nodeTokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 1)] + public string DefaultAbsolutePantTiltPositionSpace + { + get + { + return this.defaultAbsolutePantTiltPositionSpaceField; + } + set + { + this.defaultAbsolutePantTiltPositionSpaceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 2)] + public string DefaultAbsoluteZoomPositionSpace + { + get + { + return this.defaultAbsoluteZoomPositionSpaceField; + } + set + { + this.defaultAbsoluteZoomPositionSpaceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 3)] + public string DefaultRelativePanTiltTranslationSpace + { + get + { + return this.defaultRelativePanTiltTranslationSpaceField; + } + set + { + this.defaultRelativePanTiltTranslationSpaceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 4)] + public string DefaultRelativeZoomTranslationSpace + { + get + { + return this.defaultRelativeZoomTranslationSpaceField; + } + set + { + this.defaultRelativeZoomTranslationSpaceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 5)] + public string DefaultContinuousPanTiltVelocitySpace + { + get + { + return this.defaultContinuousPanTiltVelocitySpaceField; + } + set + { + this.defaultContinuousPanTiltVelocitySpaceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 6)] + public string DefaultContinuousZoomVelocitySpace + { + get + { + return this.defaultContinuousZoomVelocitySpaceField; + } + set + { + this.defaultContinuousZoomVelocitySpaceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 7)] + public PTZSpeed DefaultPTZSpeed + { + get + { + return this.defaultPTZSpeedField; + } + set + { + this.defaultPTZSpeedField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "duration", Order = 8)] + public string DefaultPTZTimeout + { + get + { + return this.defaultPTZTimeoutField; + } + set + { + this.defaultPTZTimeoutField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 9)] + public PanTiltLimits PanTiltLimits + { + get + { + return this.panTiltLimitsField; + } + set + { + this.panTiltLimitsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 10)] + public ZoomLimits ZoomLimits + { + get + { + return this.zoomLimitsField; + } + set + { + this.zoomLimitsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 11)] + public PTZConfigurationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int MoveRamp + { + get + { + return this.moveRampField; + } + set + { + this.moveRampField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool MoveRampSpecified + { + get + { + return this.moveRampFieldSpecified; + } + set + { + this.moveRampFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int PresetRamp + { + get + { + return this.presetRampField; + } + set + { + this.presetRampField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool PresetRampSpecified + { + get + { + return this.presetRampFieldSpecified; + } + set + { + this.presetRampFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int PresetTourRamp + { + get + { + return this.presetTourRampField; + } + set + { + this.presetTourRampField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool PresetTourRampSpecified + { + get + { + return this.presetTourRampFieldSpecified; + } + set + { + this.presetTourRampFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZSpeed + { + + private Vector2D panTiltField; + + private Vector1D zoomField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public Vector2D PanTilt + { + get + { + return this.panTiltField; + } + set + { + this.panTiltField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public Vector1D Zoom + { + get + { + return this.zoomField; + } + set + { + this.zoomField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Vector2D + { + + private float xField; + + private float yField; + + private string spaceField; + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float x + { + get + { + return this.xField; + } + set + { + this.xField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float y + { + get + { + return this.yField; + } + set + { + this.yField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType = "anyURI")] + public string space + { + get + { + return this.spaceField; + } + set + { + this.spaceField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Vector1D + { + + private float xField; + + private string spaceField; + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float x + { + get + { + return this.xField; + } + set + { + this.xField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute(DataType = "anyURI")] + public string space + { + get + { + return this.spaceField; + } + set + { + this.spaceField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PanTiltLimits + { + + private Space2DDescription rangeField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public Space2DDescription Range + { + get + { + return this.rangeField; + } + set + { + this.rangeField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ZoomLimits + { + + private Space1DDescription rangeField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public Space1DDescription Range + { + get + { + return this.rangeField; + } + set + { + this.rangeField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZConfigurationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + private PTControlDirection pTControlDirectionField; + + private PTZConfigurationExtension2 extensionField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public PTControlDirection PTControlDirection + { + get + { + return this.pTControlDirectionField; + } + set + { + this.pTControlDirectionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public PTZConfigurationExtension2 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTControlDirection + { + + private EFlip eFlipField; + + private Reverse reverseField; + + private PTControlDirectionExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public EFlip EFlip + { + get + { + return this.eFlipField; + } + set + { + this.eFlipField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public Reverse Reverse + { + get + { + return this.reverseField; + } + set + { + this.reverseField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public PTControlDirectionExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class EFlip + { + + private EFlipMode modeField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public EFlipMode Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 1)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum EFlipMode + { + + /// + OFF, + + /// + ON, + + /// + Extended, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Reverse + { + + private ReverseMode modeField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public ReverseMode Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 1)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum ReverseMode + { + + /// + OFF, + + /// + ON, + + /// + AUTO, + + /// + Extended, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTControlDirectionExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZConfigurationExtension2 + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AudioDecoderConfiguration : ConfigurationEntity + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoOutputConfiguration : ConfigurationEntity + { + + private string outputTokenField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string OutputToken + { + get + { + return this.outputTokenField; + } + set + { + this.outputTokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 1)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class MetadataConfiguration : ConfigurationEntity + { + + private PTZFilter pTZStatusField; + + private EventSubscription eventsField; + + private bool analyticsField; + + private bool analyticsFieldSpecified; + + private MulticastConfiguration multicastField; + + private string sessionTimeoutField; + + private System.Xml.Linq.XElement[] anyField; + + private AnalyticsEngineConfiguration analyticsEngineConfigurationField; + + private MetadataConfigurationExtension extensionField; + + private string compressionTypeField; + + private bool geoLocationField; + + private bool geoLocationFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public PTZFilter PTZStatus + { + get + { + return this.pTZStatusField; + } + set + { + this.pTZStatusField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public EventSubscription Events + { + get + { + return this.eventsField; + } + set + { + this.eventsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public bool Analytics + { + get + { + return this.analyticsField; + } + set + { + this.analyticsField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool AnalyticsSpecified + { + get + { + return this.analyticsFieldSpecified; + } + set + { + this.analyticsFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public MulticastConfiguration Multicast + { + get + { + return this.multicastField; + } + set + { + this.multicastField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "duration", Order = 4)] + public string SessionTimeout + { + get + { + return this.sessionTimeoutField; + } + set + { + this.sessionTimeoutField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 5)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 6)] + public AnalyticsEngineConfiguration AnalyticsEngineConfiguration + { + get + { + return this.analyticsEngineConfigurationField; + } + set + { + this.analyticsEngineConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 7)] + public MetadataConfigurationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string CompressionType + { + get + { + return this.compressionTypeField; + } + set + { + this.compressionTypeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool GeoLocation + { + get + { + return this.geoLocationField; + } + set + { + this.geoLocationField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool GeoLocationSpecified + { + get + { + return this.geoLocationFieldSpecified; + } + set + { + this.geoLocationFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZFilter + { + + private bool statusField; + + private bool positionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public bool Status + { + get + { + return this.statusField; + } + set + { + this.statusField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool Position + { + get + { + return this.positionField; + } + set + { + this.positionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class EventSubscription + { + + private FilterType filterField; + + private EventSubscriptionSubscriptionPolicy subscriptionPolicyField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public FilterType Filter + { + get + { + return this.filterField; + } + set + { + this.filterField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public EventSubscriptionSubscriptionPolicy SubscriptionPolicy + { + get + { + return this.subscriptionPolicyField; + } + set + { + this.subscriptionPolicyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.Xml.Serialization.XmlIncludeAttribute(typeof(EventFilter))] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://docs.oasis-open.org/wsn/b-2")] + public partial class FilterType + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class EventFilter : FilterType + { + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.onvif.org/ver10/schema")] + public partial class EventSubscriptionSubscriptionPolicy + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class MetadataConfigurationExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AudioEncoder2Configuration : ConfigurationEntity + { + + private string encodingField; + + private MulticastConfiguration multicastField; + + private int bitrateField; + + private int sampleRateField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string Encoding + { + get + { + return this.encodingField; + } + set + { + this.encodingField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public MulticastConfiguration Multicast + { + get + { + return this.multicastField; + } + set + { + this.multicastField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public int Bitrate + { + get + { + return this.bitrateField; + } + set + { + this.bitrateField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public int SampleRate + { + get + { + return this.sampleRateField; + } + set + { + this.sampleRateField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 4)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AudioEncoderConfiguration : ConfigurationEntity + { + + private AudioEncoding encodingField; + + private int bitrateField; + + private int sampleRateField; + + private MulticastConfiguration multicastField; + + private string sessionTimeoutField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public AudioEncoding Encoding + { + get + { + return this.encodingField; + } + set + { + this.encodingField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public int Bitrate + { + get + { + return this.bitrateField; + } + set + { + this.bitrateField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public int SampleRate + { + get + { + return this.sampleRateField; + } + set + { + this.sampleRateField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public MulticastConfiguration Multicast + { + get + { + return this.multicastField; + } + set + { + this.multicastField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "duration", Order = 4)] + public string SessionTimeout + { + get + { + return this.sessionTimeoutField; + } + set + { + this.sessionTimeoutField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 5)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AudioSourceConfiguration : ConfigurationEntity + { + + private string sourceTokenField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string SourceToken + { + get + { + return this.sourceTokenField; + } + set + { + this.sourceTokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 1)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoEncoder2Configuration : ConfigurationEntity + { + + private string encodingField; + + private VideoResolution2 resolutionField; + + private VideoRateControl2 rateControlField; + + private MulticastConfiguration multicastField; + + private float qualityField; + + private System.Xml.Linq.XElement[] anyField; + + private int govLengthField; + + private bool govLengthFieldSpecified; + + private string profileField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string Encoding + { + get + { + return this.encodingField; + } + set + { + this.encodingField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public VideoResolution2 Resolution + { + get + { + return this.resolutionField; + } + set + { + this.resolutionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public VideoRateControl2 RateControl + { + get + { + return this.rateControlField; + } + set + { + this.rateControlField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public MulticastConfiguration Multicast + { + get + { + return this.multicastField; + } + set + { + this.multicastField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public float Quality + { + get + { + return this.qualityField; + } + set + { + this.qualityField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 5)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int GovLength + { + get + { + return this.govLengthField; + } + set + { + this.govLengthField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool GovLengthSpecified + { + get + { + return this.govLengthFieldSpecified; + } + set + { + this.govLengthFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string Profile + { + get + { + return this.profileField; + } + set + { + this.profileField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoResolution2 + { + + private int widthField; + + private int heightField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public int Width + { + get + { + return this.widthField; + } + set + { + this.widthField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public int Height + { + get + { + return this.heightField; + } + set + { + this.heightField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoRateControl2 + { + + private float frameRateLimitField; + + private int bitrateLimitField; + + private System.Xml.Linq.XElement[] anyField; + + private bool constantBitRateField; + + private bool constantBitRateFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public float FrameRateLimit + { + get + { + return this.frameRateLimitField; + } + set + { + this.frameRateLimitField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public int BitrateLimit + { + get + { + return this.bitrateLimitField; + } + set + { + this.bitrateLimitField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool ConstantBitRate + { + get + { + return this.constantBitRateField; + } + set + { + this.constantBitRateField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool ConstantBitRateSpecified + { + get + { + return this.constantBitRateFieldSpecified; + } + set + { + this.constantBitRateFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoSourceConfiguration : ConfigurationEntity + { + + private string sourceTokenField; + + private IntRectangle boundsField; + + private System.Xml.Linq.XElement[] anyField; + + private VideoSourceConfigurationExtension extensionField; + + private string viewModeField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string SourceToken + { + get + { + return this.sourceTokenField; + } + set + { + this.sourceTokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public IntRectangle Bounds + { + get + { + return this.boundsField; + } + set + { + this.boundsField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public VideoSourceConfigurationExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string ViewMode + { + get + { + return this.viewModeField; + } + set + { + this.viewModeField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class IntRectangle + { + + private int xField; + + private int yField; + + private int widthField; + + private int heightField; + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int x + { + get + { + return this.xField; + } + set + { + this.xField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int y + { + get + { + return this.yField; + } + set + { + this.yField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int width + { + get + { + return this.widthField; + } + set + { + this.widthField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int height + { + get + { + return this.heightField; + } + set + { + this.heightField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoSourceConfigurationExtension + { + + private Rotate rotateField; + + private VideoSourceConfigurationExtension2 extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public Rotate Rotate + { + get + { + return this.rotateField; + } + set + { + this.rotateField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public VideoSourceConfigurationExtension2 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Rotate + { + + private RotateMode modeField; + + private int degreeField; + + private bool degreeFieldSpecified; + + private RotateExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public RotateMode Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public int Degree + { + get + { + return this.degreeField; + } + set + { + this.degreeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool DegreeSpecified + { + get + { + return this.degreeFieldSpecified; + } + set + { + this.degreeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public RotateExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class RotateExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class VideoSourceConfigurationExtension2 + { + + private LensDescription[] lensDescriptionField; + + private SceneOrientation sceneOrientationField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute("LensDescription", Order = 0)] + public LensDescription[] LensDescription + { + get + { + return this.lensDescriptionField; + } + set + { + this.lensDescriptionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public SceneOrientation SceneOrientation + { + get + { + return this.sceneOrientationField; + } + set + { + this.sceneOrientationField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class LensDescription + { + + private LensOffset offsetField; + + private LensProjection[] projectionField; + + private float xFactorField; + + private System.Xml.Linq.XElement[] anyField; + + private float focalLengthField; + + private bool focalLengthFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public LensOffset Offset + { + get + { + return this.offsetField; + } + set + { + this.offsetField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Projection", Order = 1)] + public LensProjection[] Projection + { + get + { + return this.projectionField; + } + set + { + this.projectionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public float XFactor + { + get + { + return this.xFactorField; + } + set + { + this.xFactorField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 3)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float FocalLength + { + get + { + return this.focalLengthField; + } + set + { + this.focalLengthField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool FocalLengthSpecified + { + get + { + return this.focalLengthFieldSpecified; + } + set + { + this.focalLengthFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class LensOffset + { + + private float xField; + + private bool xFieldSpecified; + + private float yField; + + private bool yFieldSpecified; + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float x + { + get + { + return this.xField; + } + set + { + this.xField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool xSpecified + { + get + { + return this.xFieldSpecified; + } + set + { + this.xFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public float y + { + get + { + return this.yField; + } + set + { + this.yField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool ySpecified + { + get + { + return this.yFieldSpecified; + } + set + { + this.yFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class LensProjection + { + + private float angleField; + + private float radiusField; + + private float transmittanceField; + + private bool transmittanceFieldSpecified; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public float Angle + { + get + { + return this.angleField; + } + set + { + this.angleField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public float Radius + { + get + { + return this.radiusField; + } + set + { + this.radiusField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public float Transmittance + { + get + { + return this.transmittanceField; + } + set + { + this.transmittanceField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool TransmittanceSpecified + { + get + { + return this.transmittanceFieldSpecified; + } + set + { + this.transmittanceFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 3)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class SceneOrientation + { + + private SceneOrientationMode modeField; + + private string orientationField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public SceneOrientationMode Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public string Orientation + { + get + { + return this.orientationField; + } + set + { + this.orientationField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class Profile + { + + private string nameField; + + private VideoSourceConfiguration videoSourceConfigurationField; + + private AudioSourceConfiguration audioSourceConfigurationField; + + private VideoEncoderConfiguration videoEncoderConfigurationField; + + private AudioEncoderConfiguration audioEncoderConfigurationField; + + private VideoAnalyticsConfiguration videoAnalyticsConfigurationField; + + private PTZConfiguration pTZConfigurationField; + + private MetadataConfiguration metadataConfigurationField; + + private ProfileExtension extensionField; + + private string tokenField; + + private bool fixedField; + + private bool fixedFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string Name + { + get + { + return this.nameField; + } + set + { + this.nameField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public VideoSourceConfiguration VideoSourceConfiguration + { + get + { + return this.videoSourceConfigurationField; + } + set + { + this.videoSourceConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public AudioSourceConfiguration AudioSourceConfiguration + { + get + { + return this.audioSourceConfigurationField; + } + set + { + this.audioSourceConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public VideoEncoderConfiguration VideoEncoderConfiguration + { + get + { + return this.videoEncoderConfigurationField; + } + set + { + this.videoEncoderConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public AudioEncoderConfiguration AudioEncoderConfiguration + { + get + { + return this.audioEncoderConfigurationField; + } + set + { + this.audioEncoderConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public VideoAnalyticsConfiguration VideoAnalyticsConfiguration + { + get + { + return this.videoAnalyticsConfigurationField; + } + set + { + this.videoAnalyticsConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 6)] + public PTZConfiguration PTZConfiguration + { + get + { + return this.pTZConfigurationField; + } + set + { + this.pTZConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 7)] + public MetadataConfiguration MetadataConfiguration + { + get + { + return this.metadataConfigurationField; + } + set + { + this.metadataConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 8)] + public ProfileExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string token + { + get + { + return this.tokenField; + } + set + { + this.tokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool @fixed + { + get + { + return this.fixedField; + } + set + { + this.fixedField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool fixedSpecified + { + get + { + return this.fixedFieldSpecified; + } + set + { + this.fixedFieldSpecified = value; + } + } + } + + + + + + + + + + + + + + + + + + + + + + + + + + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZPresetTourPresetDetailOptionsExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZPresetTourPresetDetailOptions + { + + private string[] presetTokenField; + + private bool homeField; + + private bool homeFieldSpecified; + + private Space2DDescription panTiltPositionSpaceField; + + private Space1DDescription zoomPositionSpaceField; + + private PTZPresetTourPresetDetailOptionsExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute("PresetToken", Order = 0)] + public string[] PresetToken + { + get + { + return this.presetTokenField; + } + set + { + this.presetTokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool Home + { + get + { + return this.homeField; + } + set + { + this.homeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool HomeSpecified + { + get + { + return this.homeFieldSpecified; + } + set + { + this.homeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public Space2DDescription PanTiltPositionSpace + { + get + { + return this.panTiltPositionSpaceField; + } + set + { + this.panTiltPositionSpaceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public Space1DDescription ZoomPositionSpace + { + get + { + return this.zoomPositionSpaceField; + } + set + { + this.zoomPositionSpaceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public PTZPresetTourPresetDetailOptionsExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZPresetTourSpotOptions + { + + private PTZPresetTourPresetDetailOptions presetDetailField; + + private DurationRange stayTimeField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public PTZPresetTourPresetDetailOptions PresetDetail + { + get + { + return this.presetDetailField; + } + set + { + this.presetDetailField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public DurationRange StayTime + { + get + { + return this.stayTimeField; + } + set + { + this.stayTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class DurationRange + { + + private string minField; + + private string maxField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "duration", Order = 0)] + public string Min + { + get + { + return this.minField; + } + set + { + this.minField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "duration", Order = 1)] + public string Max + { + get + { + return this.maxField; + } + set + { + this.maxField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZPresetTourStartingConditionOptionsExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZPresetTourStartingConditionOptions + { + + private IntRange recurringTimeField; + + private DurationRange recurringDurationField; + + private PTZPresetTourDirection[] directionField; + + private PTZPresetTourStartingConditionOptionsExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public IntRange RecurringTime + { + get + { + return this.recurringTimeField; + } + set + { + this.recurringTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public DurationRange RecurringDuration + { + get + { + return this.recurringDurationField; + } + set + { + this.recurringDurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Direction", Order = 2)] + public PTZPresetTourDirection[] Direction + { + get + { + return this.directionField; + } + set + { + this.directionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public PTZPresetTourStartingConditionOptionsExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum PTZPresetTourDirection + { + + /// + Forward, + + /// + Backward, + + /// + Extended, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZPresetTourOptions + { + + private bool autoStartField; + + private PTZPresetTourStartingConditionOptions startingConditionField; + + private PTZPresetTourSpotOptions tourSpotField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public bool AutoStart + { + get + { + return this.autoStartField; + } + set + { + this.autoStartField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public PTZPresetTourStartingConditionOptions StartingCondition + { + get + { + return this.startingConditionField; + } + set + { + this.startingConditionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public PTZPresetTourSpotOptions TourSpot + { + get + { + return this.tourSpotField; + } + set + { + this.tourSpotField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 3)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZPresetTourExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZPresetTourStartingConditionExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZPresetTourStartingCondition + { + + private int recurringTimeField; + + private bool recurringTimeFieldSpecified; + + private string recurringDurationField; + + private PTZPresetTourDirection directionField; + + private bool directionFieldSpecified; + + private PTZPresetTourStartingConditionExtension extensionField; + + private bool randomPresetOrderField; + + private bool randomPresetOrderFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public int RecurringTime + { + get + { + return this.recurringTimeField; + } + set + { + this.recurringTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool RecurringTimeSpecified + { + get + { + return this.recurringTimeFieldSpecified; + } + set + { + this.recurringTimeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "duration", Order = 1)] + public string RecurringDuration + { + get + { + return this.recurringDurationField; + } + set + { + this.recurringDurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public PTZPresetTourDirection Direction + { + get + { + return this.directionField; + } + set + { + this.directionField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool DirectionSpecified + { + get + { + return this.directionFieldSpecified; + } + set + { + this.directionFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public PTZPresetTourStartingConditionExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool RandomPresetOrder + { + get + { + return this.randomPresetOrderField; + } + set + { + this.randomPresetOrderField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool RandomPresetOrderSpecified + { + get + { + return this.randomPresetOrderFieldSpecified; + } + set + { + this.randomPresetOrderFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZPresetTourStatusExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZPresetTourSpotExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZPresetTourTypeExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZPresetTourPresetDetail + { + + private object itemField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute("Home", typeof(bool), Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("PTZPosition", typeof(PTZVector), Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("PresetToken", typeof(string), Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("TypeExtension", typeof(PTZPresetTourTypeExtension), Order = 0)] + public object Item + { + get + { + return this.itemField; + } + set + { + this.itemField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 1)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZVector + { + + private Vector2D panTiltField; + + private Vector1D zoomField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public Vector2D PanTilt + { + get + { + return this.panTiltField; + } + set + { + this.panTiltField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public Vector1D Zoom + { + get + { + return this.zoomField; + } + set + { + this.zoomField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZPresetTourSpot + { + + private PTZPresetTourPresetDetail presetDetailField; + + private PTZSpeed speedField; + + private string stayTimeField; + + private PTZPresetTourSpotExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public PTZPresetTourPresetDetail PresetDetail + { + get + { + return this.presetDetailField; + } + set + { + this.presetDetailField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public PTZSpeed Speed + { + get + { + return this.speedField; + } + set + { + this.speedField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "duration", Order = 2)] + public string StayTime + { + get + { + return this.stayTimeField; + } + set + { + this.stayTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public PTZPresetTourSpotExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZPresetTourStatus + { + + private PTZPresetTourState stateField; + + private PTZPresetTourSpot currentTourSpotField; + + private PTZPresetTourStatusExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public PTZPresetTourState State + { + get + { + return this.stateField; + } + set + { + this.stateField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public PTZPresetTourSpot CurrentTourSpot + { + get + { + return this.currentTourSpotField; + } + set + { + this.currentTourSpotField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public PTZPresetTourStatusExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum PTZPresetTourState + { + + /// + Idle, + + /// + Touring, + + /// + Paused, + + /// + Extended, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PresetTour + { + + private string nameField; + + private PTZPresetTourStatus statusField; + + private bool autoStartField; + + private PTZPresetTourStartingCondition startingConditionField; + + private PTZPresetTourSpot[] tourSpotField; + + private PTZPresetTourExtension extensionField; + + private string tokenField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string Name + { + get + { + return this.nameField; + } + set + { + this.nameField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public PTZPresetTourStatus Status + { + get + { + return this.statusField; + } + set + { + this.statusField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public bool AutoStart + { + get + { + return this.autoStartField; + } + set + { + this.autoStartField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public PTZPresetTourStartingCondition StartingCondition + { + get + { + return this.startingConditionField; + } + set + { + this.startingConditionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("TourSpot", Order = 4)] + public PTZPresetTourSpot[] TourSpot + { + get + { + return this.tourSpotField; + } + set + { + this.tourSpotField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public PTZPresetTourExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string token + { + get + { + return this.tokenField; + } + set + { + this.tokenField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZMoveStatus + { + + private MoveStatus panTiltField; + + private bool panTiltFieldSpecified; + + private MoveStatus zoomField; + + private bool zoomFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public MoveStatus PanTilt + { + get + { + return this.panTiltField; + } + set + { + this.panTiltField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool PanTiltSpecified + { + get + { + return this.panTiltFieldSpecified; + } + set + { + this.panTiltFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public MoveStatus Zoom + { + get + { + return this.zoomField; + } + set + { + this.zoomField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool ZoomSpecified + { + get + { + return this.zoomFieldSpecified; + } + set + { + this.zoomFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public enum MoveStatus + { + + /// + IDLE, + + /// + MOVING, + + /// + UNKNOWN, + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZStatus + { + + private PTZVector positionField; + + private PTZMoveStatus moveStatusField; + + private string errorField; + + private System.DateTime utcTimeField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public PTZVector Position + { + get + { + return this.positionField; + } + set + { + this.positionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public PTZMoveStatus MoveStatus + { + get + { + return this.moveStatusField; + } + set + { + this.moveStatusField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public string Error + { + get + { + return this.errorField; + } + set + { + this.errorField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public System.DateTime UtcTime + { + get + { + return this.utcTimeField; + } + set + { + this.utcTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 4)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZPreset + { + + private string nameField; + + private PTZVector pTZPositionField; + + private string tokenField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string Name + { + get + { + return this.nameField; + } + set + { + this.nameField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public PTZVector PTZPosition + { + get + { + return this.pTZPositionField; + } + set + { + this.pTZPositionField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string token + { + get + { + return this.tokenField; + } + set + { + this.tokenField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZConfigurationOptions2 + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTControlDirectionOptionsExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ReverseOptionsExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ReverseOptions + { + + private ReverseMode[] modeField; + + private ReverseOptionsExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute("Mode", Order = 0)] + public ReverseMode[] Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public ReverseOptionsExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class EFlipOptionsExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class EFlipOptions + { + + private EFlipMode[] modeField; + + private EFlipOptionsExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute("Mode", Order = 0)] + public EFlipMode[] Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public EFlipOptionsExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTControlDirectionOptions + { + + private EFlipOptions eFlipField; + + private ReverseOptions reverseField; + + private PTControlDirectionOptionsExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public EFlipOptions EFlip + { + get + { + return this.eFlipField; + } + set + { + this.eFlipField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public ReverseOptions Reverse + { + get + { + return this.reverseField; + } + set + { + this.reverseField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public PTControlDirectionOptionsExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class PTZConfigurationOptions + { + + private PTZSpaces spacesField; + + private DurationRange pTZTimeoutField; + + private System.Xml.Linq.XElement[] anyField; + + private PTControlDirectionOptions pTControlDirectionField; + + private PTZConfigurationOptions2 extensionField; + + private int[] pTZRampsField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public PTZSpaces Spaces + { + get + { + return this.spacesField; + } + set + { + this.spacesField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public DurationRange PTZTimeout + { + get + { + return this.pTZTimeoutField; + } + set + { + this.pTZTimeoutField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public PTControlDirectionOptions PTControlDirection + { + get + { + return this.pTControlDirectionField; + } + set + { + this.pTControlDirectionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public PTZConfigurationOptions2 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int[] PTZRamps + { + get + { + return this.pTZRampsField; + } + set + { + this.pTZRampsField = value; + } + } + } + + + + + + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ImagingStatus20Extension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class FocusStatus20Extension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class FocusStatus20 + { + + private float positionField; + + private MoveStatus moveStatusField; + + private string errorField; + + private FocusStatus20Extension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public float Position + { + get + { + return this.positionField; + } + set + { + this.positionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public MoveStatus MoveStatus + { + get + { + return this.moveStatusField; + } + set + { + this.moveStatusField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public string Error + { + get + { + return this.errorField; + } + set + { + this.errorField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public FocusStatus20Extension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ImagingStatus20 + { + + private FocusStatus20 focusStatus20Field; + + private ImagingStatus20Extension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public FocusStatus20 FocusStatus20 + { + get + { + return this.focusStatus20Field; + } + set + { + this.focusStatus20Field = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public ImagingStatus20Extension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ContinuousFocusOptions + { + + private FloatRange speedField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public FloatRange Speed + { + get + { + return this.speedField; + } + set + { + this.speedField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class RelativeFocusOptions20 + { + + private FloatRange distanceField; + + private FloatRange speedField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public FloatRange Distance + { + get + { + return this.distanceField; + } + set + { + this.distanceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public FloatRange Speed + { + get + { + return this.speedField; + } + set + { + this.speedField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AbsoluteFocusOptions + { + + private FloatRange positionField; + + private FloatRange speedField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public FloatRange Position + { + get + { + return this.positionField; + } + set + { + this.positionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public FloatRange Speed + { + get + { + return this.speedField; + } + set + { + this.speedField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class MoveOptions20 + { + + private AbsoluteFocusOptions absoluteField; + + private RelativeFocusOptions20 relativeField; + + private ContinuousFocusOptions continuousField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public AbsoluteFocusOptions Absolute + { + get + { + return this.absoluteField; + } + set + { + this.absoluteField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public RelativeFocusOptions20 Relative + { + get + { + return this.relativeField; + } + set + { + this.relativeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public ContinuousFocusOptions Continuous + { + get + { + return this.continuousField; + } + set + { + this.continuousField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ContinuousFocus + { + + private float speedField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public float Speed + { + get + { + return this.speedField; + } + set + { + this.speedField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class RelativeFocus + { + + private float distanceField; + + private float speedField; + + private bool speedFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public float Distance + { + get + { + return this.distanceField; + } + set + { + this.distanceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public float Speed + { + get + { + return this.speedField; + } + set + { + this.speedField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool SpeedSpecified + { + get + { + return this.speedFieldSpecified; + } + set + { + this.speedFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class AbsoluteFocus + { + + private float positionField; + + private float speedField; + + private bool speedFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public float Position + { + get + { + return this.positionField; + } + set + { + this.positionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public float Speed + { + get + { + return this.speedField; + } + set + { + this.speedField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool SpeedSpecified + { + get + { + return this.speedFieldSpecified; + } + set + { + this.speedFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class FocusMove + { + + private AbsoluteFocus absoluteField; + + private RelativeFocus relativeField; + + private ContinuousFocus continuousField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public AbsoluteFocus Absolute + { + get + { + return this.absoluteField; + } + set + { + this.absoluteField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public RelativeFocus Relative + { + get + { + return this.relativeField; + } + set + { + this.relativeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public ContinuousFocus Continuous + { + get + { + return this.continuousField; + } + set + { + this.continuousField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ImagingOptions20Extension4 + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class NoiseReductionOptions + { + + private bool levelField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public bool Level + { + get + { + return this.levelField; + } + set + { + this.levelField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 1)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class DefoggingOptions + { + + private string[] modeField; + + private bool levelField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute("Mode", Order = 0)] + public string[] Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool Level + { + get + { + return this.levelField; + } + set + { + this.levelField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ToneCompensationOptions + { + + private string[] modeField; + + private bool levelField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute("Mode", Order = 0)] + public string[] Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool Level + { + get + { + return this.levelField; + } + set + { + this.levelField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ImagingOptions20Extension3 + { + + private ToneCompensationOptions toneCompensationOptionsField; + + private DefoggingOptions defoggingOptionsField; + + private NoiseReductionOptions noiseReductionOptionsField; + + private ImagingOptions20Extension4 extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public ToneCompensationOptions ToneCompensationOptions + { + get + { + return this.toneCompensationOptionsField; + } + set + { + this.toneCompensationOptionsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public DefoggingOptions DefoggingOptions + { + get + { + return this.defoggingOptionsField; + } + set + { + this.defoggingOptionsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public NoiseReductionOptions NoiseReductionOptions + { + get + { + return this.noiseReductionOptionsField; + } + set + { + this.noiseReductionOptionsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public ImagingOptions20Extension4 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class IrCutFilterAutoAdjustmentOptionsExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Namespace = "http://www.onvif.org/ver10/schema", Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class IrCutFilterAutoAdjustmentOptions + { + + private string[] boundaryTypeField; + + private bool boundaryOffsetField; + + private bool boundaryOffsetFieldSpecified; + + private DurationRange responseTimeRangeField; + + private IrCutFilterAutoAdjustmentOptionsExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute("BoundaryType", Order = 0)] + public string[] BoundaryType + { + get + { + return this.boundaryTypeField; + } + set + { + this.boundaryTypeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public bool BoundaryOffset + { + get + { + return this.boundaryOffsetField; + } + set + { + this.boundaryOffsetField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool BoundaryOffsetSpecified + { + get + { + return this.boundaryOffsetFieldSpecified; + } + set + { + this.boundaryOffsetFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public DurationRange ResponseTimeRange + { + get + { + return this.responseTimeRangeField; + } + set + { + this.responseTimeRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public IrCutFilterAutoAdjustmentOptionsExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ImagingOptions20Extension2 + { + + private IrCutFilterAutoAdjustmentOptions irCutFilterAutoAdjustmentField; + + private ImagingOptions20Extension3 extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public IrCutFilterAutoAdjustmentOptions IrCutFilterAutoAdjustment + { + get + { + return this.irCutFilterAutoAdjustmentField; + } + set + { + this.irCutFilterAutoAdjustmentField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public ImagingOptions20Extension3 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ImageStabilizationOptionsExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ImageStabilizationOptions + { + + private ImageStabilizationMode[] modeField; + + private FloatRange levelField; + + private ImageStabilizationOptionsExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute("Mode", Order = 0)] + public ImageStabilizationMode[] Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public FloatRange Level + { + get + { + return this.levelField; + } + set + { + this.levelField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public ImageStabilizationOptionsExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ImagingOptions20Extension + { + + private System.Xml.Linq.XElement[] anyField; + + private ImageStabilizationOptions imageStabilizationField; + + private ImagingOptions20Extension2 extensionField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public ImageStabilizationOptions ImageStabilization + { + get + { + return this.imageStabilizationField; + } + set + { + this.imageStabilizationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public ImagingOptions20Extension2 Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class WhiteBalanceOptions20Extension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class WhiteBalanceOptions20 + { + + private WhiteBalanceMode[] modeField; + + private FloatRange yrGainField; + + private FloatRange ybGainField; + + private WhiteBalanceOptions20Extension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute("Mode", Order = 0)] + public WhiteBalanceMode[] Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public FloatRange YrGain + { + get + { + return this.yrGainField; + } + set + { + this.yrGainField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public FloatRange YbGain + { + get + { + return this.ybGainField; + } + set + { + this.ybGainField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public WhiteBalanceOptions20Extension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class WideDynamicRangeOptions20 + { + + private WideDynamicMode[] modeField; + + private FloatRange levelField; + + /// + [System.Xml.Serialization.XmlElementAttribute("Mode", Order = 0)] + public WideDynamicMode[] Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public FloatRange Level + { + get + { + return this.levelField; + } + set + { + this.levelField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class FocusOptions20Extension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class FocusOptions20 + { + + private AutoFocusMode[] autoFocusModesField; + + private FloatRange defaultSpeedField; + + private FloatRange nearLimitField; + + private FloatRange farLimitField; + + private FocusOptions20Extension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute("AutoFocusModes", Order = 0)] + public AutoFocusMode[] AutoFocusModes + { + get + { + return this.autoFocusModesField; + } + set + { + this.autoFocusModesField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public FloatRange DefaultSpeed + { + get + { + return this.defaultSpeedField; + } + set + { + this.defaultSpeedField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public FloatRange NearLimit + { + get + { + return this.nearLimitField; + } + set + { + this.nearLimitField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public FloatRange FarLimit + { + get + { + return this.farLimitField; + } + set + { + this.farLimitField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public FocusOptions20Extension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ExposureOptions20 + { + + private ExposureMode[] modeField; + + private ExposurePriority[] priorityField; + + private FloatRange minExposureTimeField; + + private FloatRange maxExposureTimeField; + + private FloatRange minGainField; + + private FloatRange maxGainField; + + private FloatRange minIrisField; + + private FloatRange maxIrisField; + + private FloatRange exposureTimeField; + + private FloatRange gainField; + + private FloatRange irisField; + + /// + [System.Xml.Serialization.XmlElementAttribute("Mode", Order = 0)] + public ExposureMode[] Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("Priority", Order = 1)] + public ExposurePriority[] Priority + { + get + { + return this.priorityField; + } + set + { + this.priorityField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public FloatRange MinExposureTime + { + get + { + return this.minExposureTimeField; + } + set + { + this.minExposureTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public FloatRange MaxExposureTime + { + get + { + return this.maxExposureTimeField; + } + set + { + this.maxExposureTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public FloatRange MinGain + { + get + { + return this.minGainField; + } + set + { + this.minGainField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public FloatRange MaxGain + { + get + { + return this.maxGainField; + } + set + { + this.maxGainField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 6)] + public FloatRange MinIris + { + get + { + return this.minIrisField; + } + set + { + this.minIrisField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 7)] + public FloatRange MaxIris + { + get + { + return this.maxIrisField; + } + set + { + this.maxIrisField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 8)] + public FloatRange ExposureTime + { + get + { + return this.exposureTimeField; + } + set + { + this.exposureTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 9)] + public FloatRange Gain + { + get + { + return this.gainField; + } + set + { + this.gainField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 10)] + public FloatRange Iris + { + get + { + return this.irisField; + } + set + { + this.irisField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class BacklightCompensationOptions20 + { + + private BacklightCompensationMode[] modeField; + + private FloatRange levelField; + + /// + [System.Xml.Serialization.XmlElementAttribute("Mode", Order = 0)] + public BacklightCompensationMode[] Mode + { + get + { + return this.modeField; + } + set + { + this.modeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public FloatRange Level + { + get + { + return this.levelField; + } + set + { + this.levelField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/schema")] + public partial class ImagingOptions20 + { + + private BacklightCompensationOptions20 backlightCompensationField; + + private FloatRange brightnessField; + + private FloatRange colorSaturationField; + + private FloatRange contrastField; + + private ExposureOptions20 exposureField; + + private FocusOptions20 focusField; + + private IrCutFilterMode[] irCutFilterModesField; + + private FloatRange sharpnessField; + + private WideDynamicRangeOptions20 wideDynamicRangeField; + + private WhiteBalanceOptions20 whiteBalanceField; + + private ImagingOptions20Extension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public BacklightCompensationOptions20 BacklightCompensation + { + get + { + return this.backlightCompensationField; + } + set + { + this.backlightCompensationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public FloatRange Brightness + { + get + { + return this.brightnessField; + } + set + { + this.brightnessField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public FloatRange ColorSaturation + { + get + { + return this.colorSaturationField; + } + set + { + this.colorSaturationField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public FloatRange Contrast + { + get + { + return this.contrastField; + } + set + { + this.contrastField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public ExposureOptions20 Exposure + { + get + { + return this.exposureField; + } + set + { + this.exposureField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public FocusOptions20 Focus + { + get + { + return this.focusField; + } + set + { + this.focusField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute("IrCutFilterModes", Order = 6)] + public IrCutFilterMode[] IrCutFilterModes + { + get + { + return this.irCutFilterModesField; + } + set + { + this.irCutFilterModesField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 7)] + public FloatRange Sharpness + { + get + { + return this.sharpnessField; + } + set + { + this.sharpnessField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 8)] + public WideDynamicRangeOptions20 WideDynamicRange + { + get + { + return this.wideDynamicRangeField; + } + set + { + this.wideDynamicRangeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 9)] + public WhiteBalanceOptions20 WhiteBalance + { + get + { + return this.whiteBalanceField; + } + set + { + this.whiteBalanceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 10)] + public ImagingOptions20Extension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } +} \ No newline at end of file diff --git a/公共库/EC.Onvif/Device/DataTypes.cs b/公共库/EC.Onvif/Device/DataTypes.cs new file mode 100644 index 0000000..bf3c591 --- /dev/null +++ b/公共库/EC.Onvif/Device/DataTypes.cs @@ -0,0 +1,1748 @@ +using EC.Onvif.Common; + +namespace EC.Onvif.Device +{ + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl")] + public partial class Service + { + + private string namespaceField; + + private string xAddrField; + + private System.Xml.Linq.XElement capabilitiesField; + + private OnvifVersion versionField; + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 0)] + public string Namespace + { + get + { + return this.namespaceField; + } + set + { + this.namespaceField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 1)] + public string XAddr + { + get + { + return this.xAddrField; + } + set + { + this.xAddrField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public System.Xml.Linq.XElement Capabilities + { + get + { + return this.capabilitiesField; + } + set + { + this.capabilitiesField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public OnvifVersion Version + { + get + { + return this.versionField; + } + set + { + this.versionField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 4)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl")] + public partial class UserCredential + { + + private string userNameField; + + private string passwordField; + + private UserCredentialExtension extensionField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string UserName + { + get + { + return this.userNameField; + } + set + { + this.userNameField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public string Password + { + get + { + return this.passwordField; + } + set + { + this.passwordField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public UserCredentialExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.onvif.org/ver10/device/wsdl")] + public partial class UserCredentialExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl")] + public partial class StorageConfigurationData + { + + private string localPathField; + + private string storageUriField; + + private UserCredential userField; + + private StorageConfigurationDataExtension extensionField; + + private string typeField; + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 0)] + public string LocalPath + { + get + { + return this.localPathField; + } + set + { + this.localPathField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI", Order = 1)] + public string StorageUri + { + get + { + return this.storageUriField; + } + set + { + this.storageUriField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public UserCredential User + { + get + { + return this.userField; + } + set + { + this.userField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public StorageConfigurationDataExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string type + { + get + { + return this.typeField; + } + set + { + this.typeField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.onvif.org/ver10/device/wsdl")] + public partial class StorageConfigurationDataExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl")] + public partial class StorageConfiguration : DeviceEntity + { + + private StorageConfigurationData dataField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public StorageConfigurationData Data + { + get + { + return this.dataField; + } + set + { + this.dataField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl")] + public partial class MiscCapabilities + { + + private string[] auxiliaryCommandsField; + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string[] AuxiliaryCommands + { + get + { + return this.auxiliaryCommandsField; + } + set + { + this.auxiliaryCommandsField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl")] + public partial class SystemCapabilities + { + + private bool discoveryResolveField; + + private bool discoveryResolveFieldSpecified; + + private bool discoveryByeField; + + private bool discoveryByeFieldSpecified; + + private bool remoteDiscoveryField; + + private bool remoteDiscoveryFieldSpecified; + + private bool systemBackupField; + + private bool systemBackupFieldSpecified; + + private bool systemLoggingField; + + private bool systemLoggingFieldSpecified; + + private bool firmwareUpgradeField; + + private bool firmwareUpgradeFieldSpecified; + + private bool httpFirmwareUpgradeField; + + private bool httpFirmwareUpgradeFieldSpecified; + + private bool httpSystemBackupField; + + private bool httpSystemBackupFieldSpecified; + + private bool httpSystemLoggingField; + + private bool httpSystemLoggingFieldSpecified; + + private bool httpSupportInformationField; + + private bool httpSupportInformationFieldSpecified; + + private bool storageConfigurationField; + + private bool storageConfigurationFieldSpecified; + + private int maxStorageConfigurationsField; + + private bool maxStorageConfigurationsFieldSpecified; + + private int geoLocationEntriesField; + + private bool geoLocationEntriesFieldSpecified; + + private string[] autoGeoField; + + private string[] storageTypesSupportedField; + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool DiscoveryResolve + { + get + { + return this.discoveryResolveField; + } + set + { + this.discoveryResolveField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool DiscoveryResolveSpecified + { + get + { + return this.discoveryResolveFieldSpecified; + } + set + { + this.discoveryResolveFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool DiscoveryBye + { + get + { + return this.discoveryByeField; + } + set + { + this.discoveryByeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool DiscoveryByeSpecified + { + get + { + return this.discoveryByeFieldSpecified; + } + set + { + this.discoveryByeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool RemoteDiscovery + { + get + { + return this.remoteDiscoveryField; + } + set + { + this.remoteDiscoveryField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool RemoteDiscoverySpecified + { + get + { + return this.remoteDiscoveryFieldSpecified; + } + set + { + this.remoteDiscoveryFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool SystemBackup + { + get + { + return this.systemBackupField; + } + set + { + this.systemBackupField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool SystemBackupSpecified + { + get + { + return this.systemBackupFieldSpecified; + } + set + { + this.systemBackupFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool SystemLogging + { + get + { + return this.systemLoggingField; + } + set + { + this.systemLoggingField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool SystemLoggingSpecified + { + get + { + return this.systemLoggingFieldSpecified; + } + set + { + this.systemLoggingFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool FirmwareUpgrade + { + get + { + return this.firmwareUpgradeField; + } + set + { + this.firmwareUpgradeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool FirmwareUpgradeSpecified + { + get + { + return this.firmwareUpgradeFieldSpecified; + } + set + { + this.firmwareUpgradeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool HttpFirmwareUpgrade + { + get + { + return this.httpFirmwareUpgradeField; + } + set + { + this.httpFirmwareUpgradeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool HttpFirmwareUpgradeSpecified + { + get + { + return this.httpFirmwareUpgradeFieldSpecified; + } + set + { + this.httpFirmwareUpgradeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool HttpSystemBackup + { + get + { + return this.httpSystemBackupField; + } + set + { + this.httpSystemBackupField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool HttpSystemBackupSpecified + { + get + { + return this.httpSystemBackupFieldSpecified; + } + set + { + this.httpSystemBackupFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool HttpSystemLogging + { + get + { + return this.httpSystemLoggingField; + } + set + { + this.httpSystemLoggingField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool HttpSystemLoggingSpecified + { + get + { + return this.httpSystemLoggingFieldSpecified; + } + set + { + this.httpSystemLoggingFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool HttpSupportInformation + { + get + { + return this.httpSupportInformationField; + } + set + { + this.httpSupportInformationField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool HttpSupportInformationSpecified + { + get + { + return this.httpSupportInformationFieldSpecified; + } + set + { + this.httpSupportInformationFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool StorageConfiguration + { + get + { + return this.storageConfigurationField; + } + set + { + this.storageConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool StorageConfigurationSpecified + { + get + { + return this.storageConfigurationFieldSpecified; + } + set + { + this.storageConfigurationFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int MaxStorageConfigurations + { + get + { + return this.maxStorageConfigurationsField; + } + set + { + this.maxStorageConfigurationsField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool MaxStorageConfigurationsSpecified + { + get + { + return this.maxStorageConfigurationsFieldSpecified; + } + set + { + this.maxStorageConfigurationsFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int GeoLocationEntries + { + get + { + return this.geoLocationEntriesField; + } + set + { + this.geoLocationEntriesField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool GeoLocationEntriesSpecified + { + get + { + return this.geoLocationEntriesFieldSpecified; + } + set + { + this.geoLocationEntriesFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string[] AutoGeo + { + get + { + return this.autoGeoField; + } + set + { + this.autoGeoField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string[] StorageTypesSupported + { + get + { + return this.storageTypesSupportedField; + } + set + { + this.storageTypesSupportedField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl")] + public partial class SecurityCapabilities + { + + private bool tLS10Field; + + private bool tLS10FieldSpecified; + + private bool tLS11Field; + + private bool tLS11FieldSpecified; + + private bool tLS12Field; + + private bool tLS12FieldSpecified; + + private bool onboardKeyGenerationField; + + private bool onboardKeyGenerationFieldSpecified; + + private bool accessPolicyConfigField; + + private bool accessPolicyConfigFieldSpecified; + + private bool defaultAccessPolicyField; + + private bool defaultAccessPolicyFieldSpecified; + + private bool dot1XField; + + private bool dot1XFieldSpecified; + + private bool remoteUserHandlingField; + + private bool remoteUserHandlingFieldSpecified; + + private bool x509TokenField; + + private bool x509TokenFieldSpecified; + + private bool sAMLTokenField; + + private bool sAMLTokenFieldSpecified; + + private bool kerberosTokenField; + + private bool kerberosTokenFieldSpecified; + + private bool usernameTokenField; + + private bool usernameTokenFieldSpecified; + + private bool httpDigestField; + + private bool httpDigestFieldSpecified; + + private bool rELTokenField; + + private bool rELTokenFieldSpecified; + + private int[] supportedEAPMethodsField; + + private int maxUsersField; + + private bool maxUsersFieldSpecified; + + private int maxUserNameLengthField; + + private bool maxUserNameLengthFieldSpecified; + + private int maxPasswordLengthField; + + private bool maxPasswordLengthFieldSpecified; + + /// + [System.Xml.Serialization.XmlAttributeAttribute("TLS1.0")] + public bool TLS10 + { + get + { + return this.tLS10Field; + } + set + { + this.tLS10Field = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool TLS10Specified + { + get + { + return this.tLS10FieldSpecified; + } + set + { + this.tLS10FieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("TLS1.1")] + public bool TLS11 + { + get + { + return this.tLS11Field; + } + set + { + this.tLS11Field = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool TLS11Specified + { + get + { + return this.tLS11FieldSpecified; + } + set + { + this.tLS11FieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("TLS1.2")] + public bool TLS12 + { + get + { + return this.tLS12Field; + } + set + { + this.tLS12Field = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool TLS12Specified + { + get + { + return this.tLS12FieldSpecified; + } + set + { + this.tLS12FieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool OnboardKeyGeneration + { + get + { + return this.onboardKeyGenerationField; + } + set + { + this.onboardKeyGenerationField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool OnboardKeyGenerationSpecified + { + get + { + return this.onboardKeyGenerationFieldSpecified; + } + set + { + this.onboardKeyGenerationFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool AccessPolicyConfig + { + get + { + return this.accessPolicyConfigField; + } + set + { + this.accessPolicyConfigField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool AccessPolicyConfigSpecified + { + get + { + return this.accessPolicyConfigFieldSpecified; + } + set + { + this.accessPolicyConfigFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool DefaultAccessPolicy + { + get + { + return this.defaultAccessPolicyField; + } + set + { + this.defaultAccessPolicyField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool DefaultAccessPolicySpecified + { + get + { + return this.defaultAccessPolicyFieldSpecified; + } + set + { + this.defaultAccessPolicyFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool Dot1X + { + get + { + return this.dot1XField; + } + set + { + this.dot1XField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool Dot1XSpecified + { + get + { + return this.dot1XFieldSpecified; + } + set + { + this.dot1XFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool RemoteUserHandling + { + get + { + return this.remoteUserHandlingField; + } + set + { + this.remoteUserHandlingField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool RemoteUserHandlingSpecified + { + get + { + return this.remoteUserHandlingFieldSpecified; + } + set + { + this.remoteUserHandlingFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("X.509Token")] + public bool X509Token + { + get + { + return this.x509TokenField; + } + set + { + this.x509TokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool X509TokenSpecified + { + get + { + return this.x509TokenFieldSpecified; + } + set + { + this.x509TokenFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool SAMLToken + { + get + { + return this.sAMLTokenField; + } + set + { + this.sAMLTokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool SAMLTokenSpecified + { + get + { + return this.sAMLTokenFieldSpecified; + } + set + { + this.sAMLTokenFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool KerberosToken + { + get + { + return this.kerberosTokenField; + } + set + { + this.kerberosTokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool KerberosTokenSpecified + { + get + { + return this.kerberosTokenFieldSpecified; + } + set + { + this.kerberosTokenFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool UsernameToken + { + get + { + return this.usernameTokenField; + } + set + { + this.usernameTokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool UsernameTokenSpecified + { + get + { + return this.usernameTokenFieldSpecified; + } + set + { + this.usernameTokenFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool HttpDigest + { + get + { + return this.httpDigestField; + } + set + { + this.httpDigestField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool HttpDigestSpecified + { + get + { + return this.httpDigestFieldSpecified; + } + set + { + this.httpDigestFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool RELToken + { + get + { + return this.rELTokenField; + } + set + { + this.rELTokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool RELTokenSpecified + { + get + { + return this.rELTokenFieldSpecified; + } + set + { + this.rELTokenFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int[] SupportedEAPMethods + { + get + { + return this.supportedEAPMethodsField; + } + set + { + this.supportedEAPMethodsField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int MaxUsers + { + get + { + return this.maxUsersField; + } + set + { + this.maxUsersField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool MaxUsersSpecified + { + get + { + return this.maxUsersFieldSpecified; + } + set + { + this.maxUsersFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int MaxUserNameLength + { + get + { + return this.maxUserNameLengthField; + } + set + { + this.maxUserNameLengthField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool MaxUserNameLengthSpecified + { + get + { + return this.maxUserNameLengthFieldSpecified; + } + set + { + this.maxUserNameLengthFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int MaxPasswordLength + { + get + { + return this.maxPasswordLengthField; + } + set + { + this.maxPasswordLengthField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool MaxPasswordLengthSpecified + { + get + { + return this.maxPasswordLengthFieldSpecified; + } + set + { + this.maxPasswordLengthFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl")] + public partial class NetworkCapabilities + { + + private bool iPFilterField; + + private bool iPFilterFieldSpecified; + + private bool zeroConfigurationField; + + private bool zeroConfigurationFieldSpecified; + + private bool iPVersion6Field; + + private bool iPVersion6FieldSpecified; + + private bool dynDNSField; + + private bool dynDNSFieldSpecified; + + private bool dot11ConfigurationField; + + private bool dot11ConfigurationFieldSpecified; + + private int dot1XConfigurationsField; + + private bool dot1XConfigurationsFieldSpecified; + + private bool hostnameFromDHCPField; + + private bool hostnameFromDHCPFieldSpecified; + + private int nTPField; + + private bool nTPFieldSpecified; + + private bool dHCPv6Field; + + private bool dHCPv6FieldSpecified; + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool IPFilter + { + get + { + return this.iPFilterField; + } + set + { + this.iPFilterField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool IPFilterSpecified + { + get + { + return this.iPFilterFieldSpecified; + } + set + { + this.iPFilterFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool ZeroConfiguration + { + get + { + return this.zeroConfigurationField; + } + set + { + this.zeroConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool ZeroConfigurationSpecified + { + get + { + return this.zeroConfigurationFieldSpecified; + } + set + { + this.zeroConfigurationFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool IPVersion6 + { + get + { + return this.iPVersion6Field; + } + set + { + this.iPVersion6Field = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool IPVersion6Specified + { + get + { + return this.iPVersion6FieldSpecified; + } + set + { + this.iPVersion6FieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool DynDNS + { + get + { + return this.dynDNSField; + } + set + { + this.dynDNSField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool DynDNSSpecified + { + get + { + return this.dynDNSFieldSpecified; + } + set + { + this.dynDNSFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool Dot11Configuration + { + get + { + return this.dot11ConfigurationField; + } + set + { + this.dot11ConfigurationField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool Dot11ConfigurationSpecified + { + get + { + return this.dot11ConfigurationFieldSpecified; + } + set + { + this.dot11ConfigurationFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int Dot1XConfigurations + { + get + { + return this.dot1XConfigurationsField; + } + set + { + this.dot1XConfigurationsField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool Dot1XConfigurationsSpecified + { + get + { + return this.dot1XConfigurationsFieldSpecified; + } + set + { + this.dot1XConfigurationsFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool HostnameFromDHCP + { + get + { + return this.hostnameFromDHCPField; + } + set + { + this.hostnameFromDHCPField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool HostnameFromDHCPSpecified + { + get + { + return this.hostnameFromDHCPFieldSpecified; + } + set + { + this.hostnameFromDHCPFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int NTP + { + get + { + return this.nTPField; + } + set + { + this.nTPField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool NTPSpecified + { + get + { + return this.nTPFieldSpecified; + } + set + { + this.nTPFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool DHCPv6 + { + get + { + return this.dHCPv6Field; + } + set + { + this.dHCPv6Field = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool DHCPv6Specified + { + get + { + return this.dHCPv6FieldSpecified; + } + set + { + this.dHCPv6FieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl")] + public partial class DeviceServiceCapabilities + { + + private NetworkCapabilities networkField; + + private SecurityCapabilities securityField; + + private SystemCapabilities systemField; + + private MiscCapabilities miscField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public NetworkCapabilities Network + { + get + { + return this.networkField; + } + set + { + this.networkField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public SecurityCapabilities Security + { + get + { + return this.securityField; + } + set + { + this.securityField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public SystemCapabilities System + { + get + { + return this.systemField; + } + set + { + this.systemField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public MiscCapabilities Misc + { + get + { + return this.miscField; + } + set + { + this.miscField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.onvif.org/ver10/device/wsdl")] + public partial class GetSystemUrisResponseExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } +} \ No newline at end of file diff --git a/公共库/EC.Onvif/Device/DeviceClient.cs b/公共库/EC.Onvif/Device/DeviceClient.cs new file mode 100644 index 0000000..0c27e74 --- /dev/null +++ b/公共库/EC.Onvif/Device/DeviceClient.cs @@ -0,0 +1,3032 @@ +using EC.Onvif.Common; + +namespace EC.Onvif.Device +{ + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.ServiceContractAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", ConfigurationName = "EC.Onvif.Device.Device")] + public interface Device + { + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetServices", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetServicesAsync(GetServicesRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetServiceCapabilities", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Capabilities")] + System.Threading.Tasks.Task GetServiceCapabilitiesAsync(); + + // CODEGEN: Generating message contract since the operation has multiple return values. + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetDeviceInformation", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetDeviceInformationAsync(GetDeviceInformationRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetSystemDateAndTime", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetSystemDateAndTimeAsync(SetDateTimeType DateTimeType, bool DaylightSavings, TimeZone TimeZone, DateTime UTCDateTime); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetSystemDateAndTime", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "SystemDateAndTime")] + System.Threading.Tasks.Task GetSystemDateAndTimeAsync(); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetSystemFactoryDefault", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetSystemFactoryDefaultAsync(FactoryDefaultType FactoryDefault); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/UpgradeSystemFirmware", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Message")] + System.Threading.Tasks.Task UpgradeSystemFirmwareAsync(AttachmentData Firmware); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SystemReboot", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Message")] + System.Threading.Tasks.Task SystemRebootAsync(); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/RestoreSystem", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task RestoreSystemAsync(RestoreSystemRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetSystemBackup", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetSystemBackupAsync(GetSystemBackupRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetSystemLog", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "SystemLog")] + System.Threading.Tasks.Task GetSystemLogAsync(SystemLogType LogType); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetSystemSupportInformation", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "SupportInformation")] + System.Threading.Tasks.Task GetSystemSupportInformationAsync(); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetScopes", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetScopesAsync(GetScopesRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetScopes", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetScopesAsync(SetScopesRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/AddScopes", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task AddScopesAsync(AddScopesRequest request); + + // CODEGEN: Generating message contract since the operation has multiple return values. + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/RemoveScopes", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task RemoveScopesAsync(RemoveScopesRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetDiscoveryMode", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "DiscoveryMode")] + System.Threading.Tasks.Task GetDiscoveryModeAsync(); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetDiscoveryMode", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetDiscoveryModeAsync(DiscoveryMode DiscoveryMode); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetRemoteDiscoveryMode", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "RemoteDiscoveryMode")] + System.Threading.Tasks.Task GetRemoteDiscoveryModeAsync(); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetRemoteDiscoveryMode", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetRemoteDiscoveryModeAsync(DiscoveryMode RemoteDiscoveryMode); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetDPAddresses", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetDPAddressesAsync(GetDPAddressesRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetDPAddresses", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetDPAddressesAsync(SetDPAddressesRequest request); + + // CODEGEN: Generating message contract since the operation has multiple return values. + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetEndpointReference", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetEndpointReferenceAsync(GetEndpointReferenceRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetRemoteUser", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "RemoteUser")] + System.Threading.Tasks.Task GetRemoteUserAsync(); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetRemoteUser", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetRemoteUserAsync(RemoteUser RemoteUser); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetUsers", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetUsersAsync(GetUsersRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/CreateUsers", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task CreateUsersAsync(CreateUsersRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/DeleteUsers", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task DeleteUsersAsync(DeleteUsersRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetUser", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetUserAsync(SetUserRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetWsdlUrl", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetWsdlUrlAsync(GetWsdlUrlRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetCapabilities", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetCapabilitiesAsync(GetCapabilitiesRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetHostname", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "HostnameInformation")] + System.Threading.Tasks.Task GetHostnameAsync(); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetHostname", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetHostnameAsync(SetHostnameRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetHostnameFromDHCP", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "RebootNeeded")] + System.Threading.Tasks.Task SetHostnameFromDHCPAsync(bool FromDHCP); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetDNS", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "DNSInformation")] + System.Threading.Tasks.Task GetDNSAsync(); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetDNS", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetDNSAsync(SetDNSRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetNTP", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "NTPInformation")] + System.Threading.Tasks.Task GetNTPAsync(); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetNTP", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetNTPAsync(SetNTPRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetDynamicDNS", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "DynamicDNSInformation")] + System.Threading.Tasks.Task GetDynamicDNSAsync(); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetDynamicDNS", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetDynamicDNSAsync(SetDynamicDNSRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetNetworkInterfaces", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetNetworkInterfacesAsync(GetNetworkInterfacesRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetNetworkInterfaces", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "RebootNeeded")] + System.Threading.Tasks.Task SetNetworkInterfacesAsync(string InterfaceToken, NetworkInterfaceSetConfiguration NetworkInterface); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetNetworkProtocols", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetNetworkProtocolsAsync(GetNetworkProtocolsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetNetworkProtocols", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetNetworkProtocolsAsync(SetNetworkProtocolsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetNetworkDefaultGateway", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "NetworkGateway")] + System.Threading.Tasks.Task GetNetworkDefaultGatewayAsync(); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetNetworkDefaultGateway", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetNetworkDefaultGatewayAsync(SetNetworkDefaultGatewayRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetZeroConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "ZeroConfiguration")] + System.Threading.Tasks.Task GetZeroConfigurationAsync(); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetZeroConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetZeroConfigurationAsync(string InterfaceToken, bool Enabled); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetIPAddressFilter", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "IPAddressFilter")] + System.Threading.Tasks.Task GetIPAddressFilterAsync(); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetIPAddressFilter", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetIPAddressFilterAsync(IPAddressFilter IPAddressFilter); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/AddIPAddressFilter", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task AddIPAddressFilterAsync(IPAddressFilter IPAddressFilter); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/RemoveIPAddressFilter", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task RemoveIPAddressFilterAsync(IPAddressFilter IPAddressFilter); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetAccessPolicy", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "PolicyFile")] + System.Threading.Tasks.Task GetAccessPolicyAsync(); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetAccessPolicy", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetAccessPolicyAsync(BinaryData PolicyFile); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/CreateCertificate", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task CreateCertificateAsync(CreateCertificateRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetCertificates", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetCertificatesAsync(GetCertificatesRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetCertificatesStatus", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetCertificatesStatusAsync(GetCertificatesStatusRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetCertificatesStatus", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetCertificatesStatusAsync(SetCertificatesStatusRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/DeleteCertificates", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task DeleteCertificatesAsync(DeleteCertificatesRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetPkcs10Request", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetPkcs10RequestAsync(GetPkcs10RequestRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/LoadCertificates", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task LoadCertificatesAsync(LoadCertificatesRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetClientCertificateMode", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Enabled")] + System.Threading.Tasks.Task GetClientCertificateModeAsync(); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetClientCertificateMode", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetClientCertificateModeAsync(bool Enabled); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetRelayOutputs", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetRelayOutputsAsync(GetRelayOutputsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetRelayOutputSettings", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetRelayOutputSettingsAsync(string RelayOutputToken, RelayOutputSettings Properties); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetRelayOutputState", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetRelayOutputStateAsync(string RelayOutputToken, RelayLogicalState LogicalState); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SendAuxiliaryCommand", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "AuxiliaryCommandResponse")] + System.Threading.Tasks.Task SendAuxiliaryCommandAsync(string AuxiliaryCommand); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetCACertificates", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetCACertificatesAsync(GetCACertificatesRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/LoadCertificateWithPrivateKey", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task LoadCertificateWithPrivateKeyAsync(LoadCertificateWithPrivateKeyRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetCertificateInformation", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetCertificateInformationAsync(GetCertificateInformationRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/LoadCACertificates", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task LoadCACertificatesAsync(LoadCACertificatesRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/CreateDot1XConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task CreateDot1XConfigurationAsync(Dot1XConfiguration Dot1XConfiguration); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetDot1XConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetDot1XConfigurationAsync(Dot1XConfiguration Dot1XConfiguration); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetDot1XConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Dot1XConfiguration")] + System.Threading.Tasks.Task GetDot1XConfigurationAsync(string Dot1XConfigurationToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetDot1XConfigurations", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetDot1XConfigurationsAsync(GetDot1XConfigurationsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/DeleteDot1XConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task DeleteDot1XConfigurationAsync(DeleteDot1XConfigurationRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetDot11Capabilities", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetDot11CapabilitiesAsync(GetDot11CapabilitiesRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetDot11Status", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Status")] + System.Threading.Tasks.Task GetDot11StatusAsync(string InterfaceToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/ScanAvailableDot11Networks", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task ScanAvailableDot11NetworksAsync(ScanAvailableDot11NetworksRequest request); + + // CODEGEN: Generating message contract since the operation has multiple return values. + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetSystemUris", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetSystemUrisAsync(GetSystemUrisRequest request); + + // CODEGEN: Generating message contract since the operation has multiple return values. + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/StartFirmwareUpgrade", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task StartFirmwareUpgradeAsync(StartFirmwareUpgradeRequest request); + + // CODEGEN: Generating message contract since the operation has multiple return values. + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/StartSystemRestore", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task StartSystemRestoreAsync(StartSystemRestoreRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetStorageConfigurations", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetStorageConfigurationsAsync(GetStorageConfigurationsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/CreateStorageConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Token")] + System.Threading.Tasks.Task CreateStorageConfigurationAsync(StorageConfigurationData StorageConfiguration); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetStorageConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "StorageConfiguration")] + System.Threading.Tasks.Task GetStorageConfigurationAsync(string Token); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetStorageConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetStorageConfigurationAsync(StorageConfiguration StorageConfiguration); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/DeleteStorageConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task DeleteStorageConfigurationAsync(string Token); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/GetGeoLocation", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetGeoLocationAsync(GetGeoLocationRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/SetGeoLocation", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetGeoLocationAsync(SetGeoLocationRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/device/wsdl/DeleteGeoLocation", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task DeleteGeoLocationAsync(DeleteGeoLocationRequest request); + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetServices", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetServicesRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + public bool IncludeCapability; + + public GetServicesRequest() + { + } + + public GetServicesRequest(bool IncludeCapability) + { + this.IncludeCapability = IncludeCapability; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetServicesResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetServicesResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Service")] + public Service[] Service; + + public GetServicesResponse() + { + } + + public GetServicesResponse(Service[] Service) + { + this.Service = Service; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetDeviceInformation", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetDeviceInformationRequest + { + + public GetDeviceInformationRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetDeviceInformationResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetDeviceInformationResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + public string Manufacturer; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 1)] + public string Model; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 2)] + public string FirmwareVersion; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 3)] + public string SerialNumber; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 4)] + public string HardwareId; + + public GetDeviceInformationResponse() + { + } + + public GetDeviceInformationResponse(string Manufacturer, string Model, string FirmwareVersion, string SerialNumber, string HardwareId) + { + this.Manufacturer = Manufacturer; + this.Model = Model; + this.FirmwareVersion = FirmwareVersion; + this.SerialNumber = SerialNumber; + this.HardwareId = HardwareId; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "RestoreSystem", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class RestoreSystemRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("BackupFiles")] + public BackupFile[] BackupFiles; + + public RestoreSystemRequest() + { + } + + public RestoreSystemRequest(BackupFile[] BackupFiles) + { + this.BackupFiles = BackupFiles; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "RestoreSystemResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class RestoreSystemResponse + { + + public RestoreSystemResponse() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetSystemBackup", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetSystemBackupRequest + { + + public GetSystemBackupRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetSystemBackupResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetSystemBackupResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("BackupFiles")] + public BackupFile[] BackupFiles; + + public GetSystemBackupResponse() + { + } + + public GetSystemBackupResponse(BackupFile[] BackupFiles) + { + this.BackupFiles = BackupFiles; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetScopes", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetScopesRequest + { + + public GetScopesRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetScopesResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetScopesResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Scopes")] + public Scope[] Scopes; + + public GetScopesResponse() + { + } + + public GetScopesResponse(Scope[] Scopes) + { + this.Scopes = Scopes; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetScopes", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetScopesRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Scopes", DataType = "anyURI")] + public string[] Scopes; + + public SetScopesRequest() + { + } + + public SetScopesRequest(string[] Scopes) + { + this.Scopes = Scopes; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetScopesResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetScopesResponse + { + + public SetScopesResponse() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "AddScopes", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class AddScopesRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("ScopeItem", DataType = "anyURI")] + public string[] ScopeItem; + + public AddScopesRequest() + { + } + + public AddScopesRequest(string[] ScopeItem) + { + this.ScopeItem = ScopeItem; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "AddScopesResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class AddScopesResponse + { + + public AddScopesResponse() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "RemoveScopes", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class RemoveScopesRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("ScopeItem", DataType = "anyURI")] + public string[] ScopeItem; + + public RemoveScopesRequest() + { + } + + public RemoveScopesRequest(string[] ScopeItem) + { + this.ScopeItem = ScopeItem; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "RemoveScopesResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class RemoveScopesResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("ScopeItem", DataType = "anyURI")] + public string[] ScopeItem; + + public RemoveScopesResponse() + { + } + + public RemoveScopesResponse(string[] ScopeItem) + { + this.ScopeItem = ScopeItem; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetDPAddresses", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetDPAddressesRequest + { + + public GetDPAddressesRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetDPAddressesResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetDPAddressesResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("DPAddress")] + public NetworkHost[] DPAddress; + + public GetDPAddressesResponse() + { + } + + public GetDPAddressesResponse(NetworkHost[] DPAddress) + { + this.DPAddress = DPAddress; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetDPAddresses", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetDPAddressesRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("DPAddress")] + public NetworkHost[] DPAddress; + + public SetDPAddressesRequest() + { + } + + public SetDPAddressesRequest(NetworkHost[] DPAddress) + { + this.DPAddress = DPAddress; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetDPAddressesResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetDPAddressesResponse + { + + public SetDPAddressesResponse() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetEndpointReference", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetEndpointReferenceRequest + { + + public GetEndpointReferenceRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetEndpointReferenceResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetEndpointReferenceResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + public string GUID; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "", Order = 1)] + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.Linq.XElement[] Any; + + public GetEndpointReferenceResponse() + { + } + + public GetEndpointReferenceResponse(string GUID, System.Xml.Linq.XElement[] Any) + { + this.GUID = GUID; + this.Any = Any; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetUsers", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetUsersRequest + { + + public GetUsersRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetUsersResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetUsersResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("User")] + public User[] User; + + public GetUsersResponse() + { + } + + public GetUsersResponse(User[] User) + { + this.User = User; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "CreateUsers", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class CreateUsersRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("User")] + public User[] User; + + public CreateUsersRequest() + { + } + + public CreateUsersRequest(User[] User) + { + this.User = User; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "CreateUsersResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class CreateUsersResponse + { + + public CreateUsersResponse() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "DeleteUsers", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class DeleteUsersRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Username")] + public string[] Username; + + public DeleteUsersRequest() + { + } + + public DeleteUsersRequest(string[] Username) + { + this.Username = Username; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "DeleteUsersResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class DeleteUsersResponse + { + + public DeleteUsersResponse() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetUser", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetUserRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("User")] + public User[] User; + + public SetUserRequest() + { + } + + public SetUserRequest(User[] User) + { + this.User = User; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetUserResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetUserResponse + { + + public SetUserResponse() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetWsdlUrl", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetWsdlUrlRequest + { + + public GetWsdlUrlRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetWsdlUrlResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetWsdlUrlResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI")] + public string WsdlUrl; + + public GetWsdlUrlResponse() + { + } + + public GetWsdlUrlResponse(string WsdlUrl) + { + this.WsdlUrl = WsdlUrl; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCapabilities", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetCapabilitiesRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Category")] + public CapabilityCategory[] Category; + + public GetCapabilitiesRequest() + { + } + + public GetCapabilitiesRequest(CapabilityCategory[] Category) + { + this.Category = Category; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCapabilitiesResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetCapabilitiesResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + public Capabilities Capabilities; + + public GetCapabilitiesResponse() + { + } + + public GetCapabilitiesResponse(Capabilities Capabilities) + { + this.Capabilities = Capabilities; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetHostname", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetHostnameRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute(DataType = "token")] + public string Name; + + public SetHostnameRequest() + { + } + + public SetHostnameRequest(string Name) + { + this.Name = Name; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetHostnameResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetHostnameResponse + { + + public SetHostnameResponse() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetDNS", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetDNSRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + public bool FromDHCP; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 1)] + [System.Xml.Serialization.XmlElementAttribute("SearchDomain", DataType = "token")] + public string[] SearchDomain; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 2)] + [System.Xml.Serialization.XmlElementAttribute("DNSManual")] + public IPAddress[] DNSManual; + + public SetDNSRequest() + { + } + + public SetDNSRequest(bool FromDHCP, string[] SearchDomain, IPAddress[] DNSManual) + { + this.FromDHCP = FromDHCP; + this.SearchDomain = SearchDomain; + this.DNSManual = DNSManual; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetDNSResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetDNSResponse + { + + public SetDNSResponse() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetNTP", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetNTPRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + public bool FromDHCP; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 1)] + [System.Xml.Serialization.XmlElementAttribute("NTPManual")] + public NetworkHost[] NTPManual; + + public SetNTPRequest() + { + } + + public SetNTPRequest(bool FromDHCP, NetworkHost[] NTPManual) + { + this.FromDHCP = FromDHCP; + this.NTPManual = NTPManual; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetNTPResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetNTPResponse + { + + public SetNTPResponse() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetDynamicDNS", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetDynamicDNSRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + public DynamicDNSType Type; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 1)] + [System.Xml.Serialization.XmlElementAttribute(DataType = "token")] + public string Name; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 2)] + [System.Xml.Serialization.XmlElementAttribute(DataType = "duration")] + public string TTL; + + public SetDynamicDNSRequest() + { + } + + public SetDynamicDNSRequest(DynamicDNSType Type, string Name, string TTL) + { + this.Type = Type; + this.Name = Name; + this.TTL = TTL; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetDynamicDNSResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetDynamicDNSResponse + { + + public SetDynamicDNSResponse() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetNetworkInterfaces", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetNetworkInterfacesRequest + { + + public GetNetworkInterfacesRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetNetworkInterfacesResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetNetworkInterfacesResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("NetworkInterfaces")] + public NetworkInterface[] NetworkInterfaces; + + public GetNetworkInterfacesResponse() + { + } + + public GetNetworkInterfacesResponse(NetworkInterface[] NetworkInterfaces) + { + this.NetworkInterfaces = NetworkInterfaces; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetNetworkProtocols", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetNetworkProtocolsRequest + { + + public GetNetworkProtocolsRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetNetworkProtocolsResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetNetworkProtocolsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("NetworkProtocols")] + public NetworkProtocol[] NetworkProtocols; + + public GetNetworkProtocolsResponse() + { + } + + public GetNetworkProtocolsResponse(NetworkProtocol[] NetworkProtocols) + { + this.NetworkProtocols = NetworkProtocols; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetNetworkProtocols", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetNetworkProtocolsRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("NetworkProtocols")] + public NetworkProtocol[] NetworkProtocols; + + public SetNetworkProtocolsRequest() + { + } + + public SetNetworkProtocolsRequest(NetworkProtocol[] NetworkProtocols) + { + this.NetworkProtocols = NetworkProtocols; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetNetworkProtocolsResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetNetworkProtocolsResponse + { + + public SetNetworkProtocolsResponse() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetNetworkDefaultGateway", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetNetworkDefaultGatewayRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("IPv4Address", DataType = "token")] + public string[] IPv4Address; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 1)] + [System.Xml.Serialization.XmlElementAttribute("IPv6Address", DataType = "token")] + public string[] IPv6Address; + + public SetNetworkDefaultGatewayRequest() + { + } + + public SetNetworkDefaultGatewayRequest(string[] IPv4Address, string[] IPv6Address) + { + this.IPv4Address = IPv4Address; + this.IPv6Address = IPv6Address; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetNetworkDefaultGatewayResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetNetworkDefaultGatewayResponse + { + + public SetNetworkDefaultGatewayResponse() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "CreateCertificate", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class CreateCertificateRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute(DataType = "token")] + public string CertificateID; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 1)] + public string Subject; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 2)] + public System.DateTime ValidNotBefore; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 3)] + public System.DateTime ValidNotAfter; + + public CreateCertificateRequest() + { + } + + public CreateCertificateRequest(string CertificateID, string Subject, System.DateTime ValidNotBefore, System.DateTime ValidNotAfter) + { + this.CertificateID = CertificateID; + this.Subject = Subject; + this.ValidNotBefore = ValidNotBefore; + this.ValidNotAfter = ValidNotAfter; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "CreateCertificateResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class CreateCertificateResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + public Certificate NvtCertificate; + + public CreateCertificateResponse() + { + } + + public CreateCertificateResponse(Certificate NvtCertificate) + { + this.NvtCertificate = NvtCertificate; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCertificates", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetCertificatesRequest + { + + public GetCertificatesRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCertificatesResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetCertificatesResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("NvtCertificate")] + public Certificate[] NvtCertificate; + + public GetCertificatesResponse() + { + } + + public GetCertificatesResponse(Certificate[] NvtCertificate) + { + this.NvtCertificate = NvtCertificate; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCertificatesStatus", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetCertificatesStatusRequest + { + + public GetCertificatesStatusRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCertificatesStatusResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetCertificatesStatusResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("CertificateStatus")] + public CertificateStatus[] CertificateStatus; + + public GetCertificatesStatusResponse() + { + } + + public GetCertificatesStatusResponse(CertificateStatus[] CertificateStatus) + { + this.CertificateStatus = CertificateStatus; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetCertificatesStatus", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetCertificatesStatusRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("CertificateStatus")] + public CertificateStatus[] CertificateStatus; + + public SetCertificatesStatusRequest() + { + } + + public SetCertificatesStatusRequest(CertificateStatus[] CertificateStatus) + { + this.CertificateStatus = CertificateStatus; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetCertificatesStatusResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetCertificatesStatusResponse + { + + public SetCertificatesStatusResponse() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "DeleteCertificates", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class DeleteCertificatesRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("CertificateID", DataType = "token")] + public string[] CertificateID; + + public DeleteCertificatesRequest() + { + } + + public DeleteCertificatesRequest(string[] CertificateID) + { + this.CertificateID = CertificateID; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "DeleteCertificatesResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class DeleteCertificatesResponse + { + + public DeleteCertificatesResponse() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetPkcs10Request", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetPkcs10RequestRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute(DataType = "token")] + public string CertificateID; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 1)] + public string Subject; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 2)] + public BinaryData Attributes; + + public GetPkcs10RequestRequest() + { + } + + public GetPkcs10RequestRequest(string CertificateID, string Subject, BinaryData Attributes) + { + this.CertificateID = CertificateID; + this.Subject = Subject; + this.Attributes = Attributes; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetPkcs10RequestResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetPkcs10RequestResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + public BinaryData Pkcs10Request; + + public GetPkcs10RequestResponse() + { + } + + public GetPkcs10RequestResponse(BinaryData Pkcs10Request) + { + this.Pkcs10Request = Pkcs10Request; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "LoadCertificates", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class LoadCertificatesRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("NVTCertificate")] + public Certificate[] NVTCertificate; + + public LoadCertificatesRequest() + { + } + + public LoadCertificatesRequest(Certificate[] NVTCertificate) + { + this.NVTCertificate = NVTCertificate; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "LoadCertificatesResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class LoadCertificatesResponse + { + + public LoadCertificatesResponse() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetRelayOutputs", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetRelayOutputsRequest + { + + public GetRelayOutputsRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetRelayOutputsResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetRelayOutputsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("RelayOutputs")] + public RelayOutput[] RelayOutputs; + + public GetRelayOutputsResponse() + { + } + + public GetRelayOutputsResponse(RelayOutput[] RelayOutputs) + { + this.RelayOutputs = RelayOutputs; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCACertificates", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetCACertificatesRequest + { + + public GetCACertificatesRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCACertificatesResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetCACertificatesResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("CACertificate")] + public Certificate[] CACertificate; + + public GetCACertificatesResponse() + { + } + + public GetCACertificatesResponse(Certificate[] CACertificate) + { + this.CACertificate = CACertificate; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "LoadCertificateWithPrivateKey", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class LoadCertificateWithPrivateKeyRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("CertificateWithPrivateKey")] + public CertificateWithPrivateKey[] CertificateWithPrivateKey; + + public LoadCertificateWithPrivateKeyRequest() + { + } + + public LoadCertificateWithPrivateKeyRequest(CertificateWithPrivateKey[] CertificateWithPrivateKey) + { + this.CertificateWithPrivateKey = CertificateWithPrivateKey; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "LoadCertificateWithPrivateKeyResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class LoadCertificateWithPrivateKeyResponse + { + + public LoadCertificateWithPrivateKeyResponse() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCertificateInformation", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetCertificateInformationRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute(DataType = "token")] + public string CertificateID; + + public GetCertificateInformationRequest() + { + } + + public GetCertificateInformationRequest(string CertificateID) + { + this.CertificateID = CertificateID; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCertificateInformationResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetCertificateInformationResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + public CertificateInformation CertificateInformation; + + public GetCertificateInformationResponse() + { + } + + public GetCertificateInformationResponse(CertificateInformation CertificateInformation) + { + this.CertificateInformation = CertificateInformation; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "LoadCACertificates", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class LoadCACertificatesRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("CACertificate")] + public Certificate[] CACertificate; + + public LoadCACertificatesRequest() + { + } + + public LoadCACertificatesRequest(Certificate[] CACertificate) + { + this.CACertificate = CACertificate; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "LoadCACertificatesResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class LoadCACertificatesResponse + { + + public LoadCACertificatesResponse() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetDot1XConfigurations", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetDot1XConfigurationsRequest + { + + public GetDot1XConfigurationsRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetDot1XConfigurationsResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetDot1XConfigurationsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Dot1XConfiguration")] + public Dot1XConfiguration[] Dot1XConfiguration; + + public GetDot1XConfigurationsResponse() + { + } + + public GetDot1XConfigurationsResponse(Dot1XConfiguration[] Dot1XConfiguration) + { + this.Dot1XConfiguration = Dot1XConfiguration; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "DeleteDot1XConfiguration", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class DeleteDot1XConfigurationRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Dot1XConfigurationToken")] + public string[] Dot1XConfigurationToken; + + public DeleteDot1XConfigurationRequest() + { + } + + public DeleteDot1XConfigurationRequest(string[] Dot1XConfigurationToken) + { + this.Dot1XConfigurationToken = Dot1XConfigurationToken; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "DeleteDot1XConfigurationResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class DeleteDot1XConfigurationResponse + { + + public DeleteDot1XConfigurationResponse() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetDot11Capabilities", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetDot11CapabilitiesRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "", Order = 0)] + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.Linq.XElement[] Any; + + public GetDot11CapabilitiesRequest() + { + } + + public GetDot11CapabilitiesRequest(System.Xml.Linq.XElement[] Any) + { + this.Any = Any; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetDot11CapabilitiesResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetDot11CapabilitiesResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + public Dot11Capabilities Capabilities; + + public GetDot11CapabilitiesResponse() + { + } + + public GetDot11CapabilitiesResponse(Dot11Capabilities Capabilities) + { + this.Capabilities = Capabilities; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "ScanAvailableDot11Networks", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class ScanAvailableDot11NetworksRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + public string InterfaceToken; + + public ScanAvailableDot11NetworksRequest() + { + } + + public ScanAvailableDot11NetworksRequest(string InterfaceToken) + { + this.InterfaceToken = InterfaceToken; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "ScanAvailableDot11NetworksResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class ScanAvailableDot11NetworksResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Networks")] + public Dot11AvailableNetworks[] Networks; + + public ScanAvailableDot11NetworksResponse() + { + } + + public ScanAvailableDot11NetworksResponse(Dot11AvailableNetworks[] Networks) + { + this.Networks = Networks; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetSystemUris", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetSystemUrisRequest + { + + public GetSystemUrisRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetSystemUrisResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetSystemUrisResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlArrayItemAttribute("SystemLog", Namespace = "http://www.onvif.org/ver10/schema", IsNullable = false)] + public SystemLogUri[] SystemLogUris; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 1)] + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI")] + public string SupportInfoUri; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 2)] + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI")] + public string SystemBackupUri; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 3)] + public GetSystemUrisResponseExtension Extension; + + public GetSystemUrisResponse() + { + } + + public GetSystemUrisResponse(SystemLogUri[] SystemLogUris, string SupportInfoUri, string SystemBackupUri, GetSystemUrisResponseExtension Extension) + { + this.SystemLogUris = SystemLogUris; + this.SupportInfoUri = SupportInfoUri; + this.SystemBackupUri = SystemBackupUri; + this.Extension = Extension; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "StartFirmwareUpgrade", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class StartFirmwareUpgradeRequest + { + + public StartFirmwareUpgradeRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "StartFirmwareUpgradeResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class StartFirmwareUpgradeResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI")] + public string UploadUri; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 1)] + [System.Xml.Serialization.XmlElementAttribute(DataType = "duration")] + public string UploadDelay; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 2)] + [System.Xml.Serialization.XmlElementAttribute(DataType = "duration")] + public string ExpectedDownTime; + + public StartFirmwareUpgradeResponse() + { + } + + public StartFirmwareUpgradeResponse(string UploadUri, string UploadDelay, string ExpectedDownTime) + { + this.UploadUri = UploadUri; + this.UploadDelay = UploadDelay; + this.ExpectedDownTime = ExpectedDownTime; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "StartSystemRestore", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class StartSystemRestoreRequest + { + + public StartSystemRestoreRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "StartSystemRestoreResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class StartSystemRestoreResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI")] + public string UploadUri; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 1)] + [System.Xml.Serialization.XmlElementAttribute(DataType = "duration")] + public string ExpectedDownTime; + + public StartSystemRestoreResponse() + { + } + + public StartSystemRestoreResponse(string UploadUri, string ExpectedDownTime) + { + this.UploadUri = UploadUri; + this.ExpectedDownTime = ExpectedDownTime; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetStorageConfigurations", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetStorageConfigurationsRequest + { + + public GetStorageConfigurationsRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetStorageConfigurationsResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetStorageConfigurationsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("StorageConfigurations")] + public StorageConfiguration[] StorageConfigurations; + + public GetStorageConfigurationsResponse() + { + } + + public GetStorageConfigurationsResponse(StorageConfiguration[] StorageConfigurations) + { + this.StorageConfigurations = StorageConfigurations; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetGeoLocation", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetGeoLocationRequest + { + + public GetGeoLocationRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetGeoLocationResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class GetGeoLocationResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Location")] + public LocationEntity[] Location; + + public GetGeoLocationResponse() + { + } + + public GetGeoLocationResponse(LocationEntity[] Location) + { + this.Location = Location; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetGeoLocation", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetGeoLocationRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Location")] + public LocationEntity[] Location; + + public SetGeoLocationRequest() + { + } + + public SetGeoLocationRequest(LocationEntity[] Location) + { + this.Location = Location; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetGeoLocationResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class SetGeoLocationResponse + { + + public SetGeoLocationResponse() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "DeleteGeoLocation", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class DeleteGeoLocationRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/device/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Location")] + public LocationEntity[] Location; + + public DeleteGeoLocationRequest() + { + } + + public DeleteGeoLocationRequest(LocationEntity[] Location) + { + this.Location = Location; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "DeleteGeoLocationResponse", WrapperNamespace = "http://www.onvif.org/ver10/device/wsdl", IsWrapped = true)] + public partial class DeleteGeoLocationResponse + { + + public DeleteGeoLocationResponse() + { + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + public interface DeviceChannel : Device, System.ServiceModel.IClientChannel + { + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + public partial class DeviceClient : System.ServiceModel.ClientBase, Device + { + + internal DeviceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : + base(binding, remoteAddress) + { + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.GetServicesAsync(GetServicesRequest request) + { + return base.Channel.GetServicesAsync(request); + } + + public System.Threading.Tasks.Task GetServicesAsync(bool IncludeCapability) + { + GetServicesRequest inValue = new GetServicesRequest(); + inValue.IncludeCapability = IncludeCapability; + return ((Device)(this)).GetServicesAsync(inValue); + } + + public System.Threading.Tasks.Task GetServiceCapabilitiesAsync() + { + return base.Channel.GetServiceCapabilitiesAsync(); + } + + public System.Threading.Tasks.Task GetDeviceInformationAsync(GetDeviceInformationRequest request) + { + return base.Channel.GetDeviceInformationAsync(request); + } + + public System.Threading.Tasks.Task SetSystemDateAndTimeAsync(SetDateTimeType DateTimeType, bool DaylightSavings, TimeZone TimeZone, DateTime UTCDateTime) + { + return base.Channel.SetSystemDateAndTimeAsync(DateTimeType, DaylightSavings, TimeZone, UTCDateTime); + } + + public System.Threading.Tasks.Task GetSystemDateAndTimeAsync() + { + return base.Channel.GetSystemDateAndTimeAsync(); + } + + public System.Threading.Tasks.Task SetSystemFactoryDefaultAsync(FactoryDefaultType FactoryDefault) + { + return base.Channel.SetSystemFactoryDefaultAsync(FactoryDefault); + } + + public System.Threading.Tasks.Task UpgradeSystemFirmwareAsync(AttachmentData Firmware) + { + return base.Channel.UpgradeSystemFirmwareAsync(Firmware); + } + + public System.Threading.Tasks.Task SystemRebootAsync() + { + return base.Channel.SystemRebootAsync(); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.RestoreSystemAsync(RestoreSystemRequest request) + { + return base.Channel.RestoreSystemAsync(request); + } + + public System.Threading.Tasks.Task RestoreSystemAsync(BackupFile[] BackupFiles) + { + RestoreSystemRequest inValue = new RestoreSystemRequest(); + inValue.BackupFiles = BackupFiles; + return ((Device)(this)).RestoreSystemAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.GetSystemBackupAsync(GetSystemBackupRequest request) + { + return base.Channel.GetSystemBackupAsync(request); + } + + public System.Threading.Tasks.Task GetSystemBackupAsync() + { + GetSystemBackupRequest inValue = new GetSystemBackupRequest(); + return ((Device)(this)).GetSystemBackupAsync(inValue); + } + + public System.Threading.Tasks.Task GetSystemLogAsync(SystemLogType LogType) + { + return base.Channel.GetSystemLogAsync(LogType); + } + + public System.Threading.Tasks.Task GetSystemSupportInformationAsync() + { + return base.Channel.GetSystemSupportInformationAsync(); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.GetScopesAsync(GetScopesRequest request) + { + return base.Channel.GetScopesAsync(request); + } + + public System.Threading.Tasks.Task GetScopesAsync() + { + GetScopesRequest inValue = new GetScopesRequest(); + return ((Device)(this)).GetScopesAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.SetScopesAsync(SetScopesRequest request) + { + return base.Channel.SetScopesAsync(request); + } + + public System.Threading.Tasks.Task SetScopesAsync(string[] Scopes) + { + SetScopesRequest inValue = new SetScopesRequest(); + inValue.Scopes = Scopes; + return ((Device)(this)).SetScopesAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.AddScopesAsync(AddScopesRequest request) + { + return base.Channel.AddScopesAsync(request); + } + + public System.Threading.Tasks.Task AddScopesAsync(string[] ScopeItem) + { + AddScopesRequest inValue = new AddScopesRequest(); + inValue.ScopeItem = ScopeItem; + return ((Device)(this)).AddScopesAsync(inValue); + } + + public System.Threading.Tasks.Task RemoveScopesAsync(RemoveScopesRequest request) + { + return base.Channel.RemoveScopesAsync(request); + } + + public System.Threading.Tasks.Task GetDiscoveryModeAsync() + { + return base.Channel.GetDiscoveryModeAsync(); + } + + public System.Threading.Tasks.Task SetDiscoveryModeAsync(DiscoveryMode DiscoveryMode) + { + return base.Channel.SetDiscoveryModeAsync(DiscoveryMode); + } + + public System.Threading.Tasks.Task GetRemoteDiscoveryModeAsync() + { + return base.Channel.GetRemoteDiscoveryModeAsync(); + } + + public System.Threading.Tasks.Task SetRemoteDiscoveryModeAsync(DiscoveryMode RemoteDiscoveryMode) + { + return base.Channel.SetRemoteDiscoveryModeAsync(RemoteDiscoveryMode); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.GetDPAddressesAsync(GetDPAddressesRequest request) + { + return base.Channel.GetDPAddressesAsync(request); + } + + public System.Threading.Tasks.Task GetDPAddressesAsync() + { + GetDPAddressesRequest inValue = new GetDPAddressesRequest(); + return ((Device)(this)).GetDPAddressesAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.SetDPAddressesAsync(SetDPAddressesRequest request) + { + return base.Channel.SetDPAddressesAsync(request); + } + + public System.Threading.Tasks.Task SetDPAddressesAsync(NetworkHost[] DPAddress) + { + SetDPAddressesRequest inValue = new SetDPAddressesRequest(); + inValue.DPAddress = DPAddress; + return ((Device)(this)).SetDPAddressesAsync(inValue); + } + + public System.Threading.Tasks.Task GetEndpointReferenceAsync(GetEndpointReferenceRequest request) + { + return base.Channel.GetEndpointReferenceAsync(request); + } + + public System.Threading.Tasks.Task GetRemoteUserAsync() + { + return base.Channel.GetRemoteUserAsync(); + } + + public System.Threading.Tasks.Task SetRemoteUserAsync(RemoteUser RemoteUser) + { + return base.Channel.SetRemoteUserAsync(RemoteUser); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.GetUsersAsync(GetUsersRequest request) + { + return base.Channel.GetUsersAsync(request); + } + + public System.Threading.Tasks.Task GetUsersAsync() + { + GetUsersRequest inValue = new GetUsersRequest(); + return ((Device)(this)).GetUsersAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.CreateUsersAsync(CreateUsersRequest request) + { + return base.Channel.CreateUsersAsync(request); + } + + public System.Threading.Tasks.Task CreateUsersAsync(User[] User) + { + CreateUsersRequest inValue = new CreateUsersRequest(); + inValue.User = User; + return ((Device)(this)).CreateUsersAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.DeleteUsersAsync(DeleteUsersRequest request) + { + return base.Channel.DeleteUsersAsync(request); + } + + public System.Threading.Tasks.Task DeleteUsersAsync(string[] Username) + { + DeleteUsersRequest inValue = new DeleteUsersRequest(); + inValue.Username = Username; + return ((Device)(this)).DeleteUsersAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.SetUserAsync(SetUserRequest request) + { + return base.Channel.SetUserAsync(request); + } + + public System.Threading.Tasks.Task SetUserAsync(User[] User) + { + SetUserRequest inValue = new SetUserRequest(); + inValue.User = User; + return ((Device)(this)).SetUserAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.GetWsdlUrlAsync(GetWsdlUrlRequest request) + { + return base.Channel.GetWsdlUrlAsync(request); + } + + public System.Threading.Tasks.Task GetWsdlUrlAsync() + { + GetWsdlUrlRequest inValue = new GetWsdlUrlRequest(); + return ((Device)(this)).GetWsdlUrlAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.GetCapabilitiesAsync(GetCapabilitiesRequest request) + { + return base.Channel.GetCapabilitiesAsync(request); + } + + public System.Threading.Tasks.Task GetCapabilitiesAsync(CapabilityCategory[] Category) + { + GetCapabilitiesRequest inValue = new GetCapabilitiesRequest(); + inValue.Category = Category; + return ((Device)(this)).GetCapabilitiesAsync(inValue); + } + + public System.Threading.Tasks.Task GetHostnameAsync() + { + return base.Channel.GetHostnameAsync(); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.SetHostnameAsync(SetHostnameRequest request) + { + return base.Channel.SetHostnameAsync(request); + } + + public System.Threading.Tasks.Task SetHostnameAsync(string Name) + { + SetHostnameRequest inValue = new SetHostnameRequest(); + inValue.Name = Name; + return ((Device)(this)).SetHostnameAsync(inValue); + } + + public System.Threading.Tasks.Task SetHostnameFromDHCPAsync(bool FromDHCP) + { + return base.Channel.SetHostnameFromDHCPAsync(FromDHCP); + } + + public System.Threading.Tasks.Task GetDNSAsync() + { + return base.Channel.GetDNSAsync(); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.SetDNSAsync(SetDNSRequest request) + { + return base.Channel.SetDNSAsync(request); + } + + public System.Threading.Tasks.Task SetDNSAsync(bool FromDHCP, string[] SearchDomain, IPAddress[] DNSManual) + { + SetDNSRequest inValue = new SetDNSRequest(); + inValue.FromDHCP = FromDHCP; + inValue.SearchDomain = SearchDomain; + inValue.DNSManual = DNSManual; + return ((Device)(this)).SetDNSAsync(inValue); + } + + public System.Threading.Tasks.Task GetNTPAsync() + { + return base.Channel.GetNTPAsync(); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.SetNTPAsync(SetNTPRequest request) + { + return base.Channel.SetNTPAsync(request); + } + + public System.Threading.Tasks.Task SetNTPAsync(bool FromDHCP, NetworkHost[] NTPManual) + { + SetNTPRequest inValue = new SetNTPRequest(); + inValue.FromDHCP = FromDHCP; + inValue.NTPManual = NTPManual; + return ((Device)(this)).SetNTPAsync(inValue); + } + + public System.Threading.Tasks.Task GetDynamicDNSAsync() + { + return base.Channel.GetDynamicDNSAsync(); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.SetDynamicDNSAsync(SetDynamicDNSRequest request) + { + return base.Channel.SetDynamicDNSAsync(request); + } + + public System.Threading.Tasks.Task SetDynamicDNSAsync(DynamicDNSType Type, string Name, string TTL) + { + SetDynamicDNSRequest inValue = new SetDynamicDNSRequest(); + inValue.Type = Type; + inValue.Name = Name; + inValue.TTL = TTL; + return ((Device)(this)).SetDynamicDNSAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.GetNetworkInterfacesAsync(GetNetworkInterfacesRequest request) + { + return base.Channel.GetNetworkInterfacesAsync(request); + } + + public System.Threading.Tasks.Task GetNetworkInterfacesAsync() + { + GetNetworkInterfacesRequest inValue = new GetNetworkInterfacesRequest(); + return ((Device)(this)).GetNetworkInterfacesAsync(inValue); + } + + public System.Threading.Tasks.Task SetNetworkInterfacesAsync(string InterfaceToken, NetworkInterfaceSetConfiguration NetworkInterface) + { + return base.Channel.SetNetworkInterfacesAsync(InterfaceToken, NetworkInterface); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.GetNetworkProtocolsAsync(GetNetworkProtocolsRequest request) + { + return base.Channel.GetNetworkProtocolsAsync(request); + } + + public System.Threading.Tasks.Task GetNetworkProtocolsAsync() + { + GetNetworkProtocolsRequest inValue = new GetNetworkProtocolsRequest(); + return ((Device)(this)).GetNetworkProtocolsAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.SetNetworkProtocolsAsync(SetNetworkProtocolsRequest request) + { + return base.Channel.SetNetworkProtocolsAsync(request); + } + + public System.Threading.Tasks.Task SetNetworkProtocolsAsync(NetworkProtocol[] NetworkProtocols) + { + SetNetworkProtocolsRequest inValue = new SetNetworkProtocolsRequest(); + inValue.NetworkProtocols = NetworkProtocols; + return ((Device)(this)).SetNetworkProtocolsAsync(inValue); + } + + public System.Threading.Tasks.Task GetNetworkDefaultGatewayAsync() + { + return base.Channel.GetNetworkDefaultGatewayAsync(); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.SetNetworkDefaultGatewayAsync(SetNetworkDefaultGatewayRequest request) + { + return base.Channel.SetNetworkDefaultGatewayAsync(request); + } + + public System.Threading.Tasks.Task SetNetworkDefaultGatewayAsync(string[] IPv4Address, string[] IPv6Address) + { + SetNetworkDefaultGatewayRequest inValue = new SetNetworkDefaultGatewayRequest(); + inValue.IPv4Address = IPv4Address; + inValue.IPv6Address = IPv6Address; + return ((Device)(this)).SetNetworkDefaultGatewayAsync(inValue); + } + + public System.Threading.Tasks.Task GetZeroConfigurationAsync() + { + return base.Channel.GetZeroConfigurationAsync(); + } + + public System.Threading.Tasks.Task SetZeroConfigurationAsync(string InterfaceToken, bool Enabled) + { + return base.Channel.SetZeroConfigurationAsync(InterfaceToken, Enabled); + } + + public System.Threading.Tasks.Task GetIPAddressFilterAsync() + { + return base.Channel.GetIPAddressFilterAsync(); + } + + public System.Threading.Tasks.Task SetIPAddressFilterAsync(IPAddressFilter IPAddressFilter) + { + return base.Channel.SetIPAddressFilterAsync(IPAddressFilter); + } + + public System.Threading.Tasks.Task AddIPAddressFilterAsync(IPAddressFilter IPAddressFilter) + { + return base.Channel.AddIPAddressFilterAsync(IPAddressFilter); + } + + public System.Threading.Tasks.Task RemoveIPAddressFilterAsync(IPAddressFilter IPAddressFilter) + { + return base.Channel.RemoveIPAddressFilterAsync(IPAddressFilter); + } + + public System.Threading.Tasks.Task GetAccessPolicyAsync() + { + return base.Channel.GetAccessPolicyAsync(); + } + + public System.Threading.Tasks.Task SetAccessPolicyAsync(BinaryData PolicyFile) + { + return base.Channel.SetAccessPolicyAsync(PolicyFile); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.CreateCertificateAsync(CreateCertificateRequest request) + { + return base.Channel.CreateCertificateAsync(request); + } + + public System.Threading.Tasks.Task CreateCertificateAsync(string CertificateID, string Subject, System.DateTime ValidNotBefore, System.DateTime ValidNotAfter) + { + CreateCertificateRequest inValue = new CreateCertificateRequest(); + inValue.CertificateID = CertificateID; + inValue.Subject = Subject; + inValue.ValidNotBefore = ValidNotBefore; + inValue.ValidNotAfter = ValidNotAfter; + return ((Device)(this)).CreateCertificateAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.GetCertificatesAsync(GetCertificatesRequest request) + { + return base.Channel.GetCertificatesAsync(request); + } + + public System.Threading.Tasks.Task GetCertificatesAsync() + { + GetCertificatesRequest inValue = new GetCertificatesRequest(); + return ((Device)(this)).GetCertificatesAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.GetCertificatesStatusAsync(GetCertificatesStatusRequest request) + { + return base.Channel.GetCertificatesStatusAsync(request); + } + + public System.Threading.Tasks.Task GetCertificatesStatusAsync() + { + GetCertificatesStatusRequest inValue = new GetCertificatesStatusRequest(); + return ((Device)(this)).GetCertificatesStatusAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.SetCertificatesStatusAsync(SetCertificatesStatusRequest request) + { + return base.Channel.SetCertificatesStatusAsync(request); + } + + public System.Threading.Tasks.Task SetCertificatesStatusAsync(CertificateStatus[] CertificateStatus) + { + SetCertificatesStatusRequest inValue = new SetCertificatesStatusRequest(); + inValue.CertificateStatus = CertificateStatus; + return ((Device)(this)).SetCertificatesStatusAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.DeleteCertificatesAsync(DeleteCertificatesRequest request) + { + return base.Channel.DeleteCertificatesAsync(request); + } + + public System.Threading.Tasks.Task DeleteCertificatesAsync(string[] CertificateID) + { + DeleteCertificatesRequest inValue = new DeleteCertificatesRequest(); + inValue.CertificateID = CertificateID; + return ((Device)(this)).DeleteCertificatesAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.GetPkcs10RequestAsync(GetPkcs10RequestRequest request) + { + return base.Channel.GetPkcs10RequestAsync(request); + } + + public System.Threading.Tasks.Task GetPkcs10RequestAsync(string CertificateID, string Subject, BinaryData Attributes) + { + GetPkcs10RequestRequest inValue = new GetPkcs10RequestRequest(); + inValue.CertificateID = CertificateID; + inValue.Subject = Subject; + inValue.Attributes = Attributes; + return ((Device)(this)).GetPkcs10RequestAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.LoadCertificatesAsync(LoadCertificatesRequest request) + { + return base.Channel.LoadCertificatesAsync(request); + } + + public System.Threading.Tasks.Task LoadCertificatesAsync(Certificate[] NVTCertificate) + { + LoadCertificatesRequest inValue = new LoadCertificatesRequest(); + inValue.NVTCertificate = NVTCertificate; + return ((Device)(this)).LoadCertificatesAsync(inValue); + } + + public System.Threading.Tasks.Task GetClientCertificateModeAsync() + { + return base.Channel.GetClientCertificateModeAsync(); + } + + public System.Threading.Tasks.Task SetClientCertificateModeAsync(bool Enabled) + { + return base.Channel.SetClientCertificateModeAsync(Enabled); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.GetRelayOutputsAsync(GetRelayOutputsRequest request) + { + return base.Channel.GetRelayOutputsAsync(request); + } + + public System.Threading.Tasks.Task GetRelayOutputsAsync() + { + GetRelayOutputsRequest inValue = new GetRelayOutputsRequest(); + return ((Device)(this)).GetRelayOutputsAsync(inValue); + } + + public System.Threading.Tasks.Task SetRelayOutputSettingsAsync(string RelayOutputToken, RelayOutputSettings Properties) + { + return base.Channel.SetRelayOutputSettingsAsync(RelayOutputToken, Properties); + } + + public System.Threading.Tasks.Task SetRelayOutputStateAsync(string RelayOutputToken, RelayLogicalState LogicalState) + { + return base.Channel.SetRelayOutputStateAsync(RelayOutputToken, LogicalState); + } + + public System.Threading.Tasks.Task SendAuxiliaryCommandAsync(string AuxiliaryCommand) + { + return base.Channel.SendAuxiliaryCommandAsync(AuxiliaryCommand); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.GetCACertificatesAsync(GetCACertificatesRequest request) + { + return base.Channel.GetCACertificatesAsync(request); + } + + public System.Threading.Tasks.Task GetCACertificatesAsync() + { + GetCACertificatesRequest inValue = new GetCACertificatesRequest(); + return ((Device)(this)).GetCACertificatesAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.LoadCertificateWithPrivateKeyAsync(LoadCertificateWithPrivateKeyRequest request) + { + return base.Channel.LoadCertificateWithPrivateKeyAsync(request); + } + + public System.Threading.Tasks.Task LoadCertificateWithPrivateKeyAsync(CertificateWithPrivateKey[] CertificateWithPrivateKey) + { + LoadCertificateWithPrivateKeyRequest inValue = new LoadCertificateWithPrivateKeyRequest(); + inValue.CertificateWithPrivateKey = CertificateWithPrivateKey; + return ((Device)(this)).LoadCertificateWithPrivateKeyAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.GetCertificateInformationAsync(GetCertificateInformationRequest request) + { + return base.Channel.GetCertificateInformationAsync(request); + } + + public System.Threading.Tasks.Task GetCertificateInformationAsync(string CertificateID) + { + GetCertificateInformationRequest inValue = new GetCertificateInformationRequest(); + inValue.CertificateID = CertificateID; + return ((Device)(this)).GetCertificateInformationAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.LoadCACertificatesAsync(LoadCACertificatesRequest request) + { + return base.Channel.LoadCACertificatesAsync(request); + } + + public System.Threading.Tasks.Task LoadCACertificatesAsync(Certificate[] CACertificate) + { + LoadCACertificatesRequest inValue = new LoadCACertificatesRequest(); + inValue.CACertificate = CACertificate; + return ((Device)(this)).LoadCACertificatesAsync(inValue); + } + + public System.Threading.Tasks.Task CreateDot1XConfigurationAsync(Dot1XConfiguration Dot1XConfiguration) + { + return base.Channel.CreateDot1XConfigurationAsync(Dot1XConfiguration); + } + + public System.Threading.Tasks.Task SetDot1XConfigurationAsync(Dot1XConfiguration Dot1XConfiguration) + { + return base.Channel.SetDot1XConfigurationAsync(Dot1XConfiguration); + } + + public System.Threading.Tasks.Task GetDot1XConfigurationAsync(string Dot1XConfigurationToken) + { + return base.Channel.GetDot1XConfigurationAsync(Dot1XConfigurationToken); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.GetDot1XConfigurationsAsync(GetDot1XConfigurationsRequest request) + { + return base.Channel.GetDot1XConfigurationsAsync(request); + } + + public System.Threading.Tasks.Task GetDot1XConfigurationsAsync() + { + GetDot1XConfigurationsRequest inValue = new GetDot1XConfigurationsRequest(); + return ((Device)(this)).GetDot1XConfigurationsAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.DeleteDot1XConfigurationAsync(DeleteDot1XConfigurationRequest request) + { + return base.Channel.DeleteDot1XConfigurationAsync(request); + } + + public System.Threading.Tasks.Task DeleteDot1XConfigurationAsync(string[] Dot1XConfigurationToken) + { + DeleteDot1XConfigurationRequest inValue = new DeleteDot1XConfigurationRequest(); + inValue.Dot1XConfigurationToken = Dot1XConfigurationToken; + return ((Device)(this)).DeleteDot1XConfigurationAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.GetDot11CapabilitiesAsync(GetDot11CapabilitiesRequest request) + { + return base.Channel.GetDot11CapabilitiesAsync(request); + } + + public System.Threading.Tasks.Task GetDot11CapabilitiesAsync(System.Xml.Linq.XElement[] Any) + { + GetDot11CapabilitiesRequest inValue = new GetDot11CapabilitiesRequest(); + inValue.Any = Any; + return ((Device)(this)).GetDot11CapabilitiesAsync(inValue); + } + + public System.Threading.Tasks.Task GetDot11StatusAsync(string InterfaceToken) + { + return base.Channel.GetDot11StatusAsync(InterfaceToken); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.ScanAvailableDot11NetworksAsync(ScanAvailableDot11NetworksRequest request) + { + return base.Channel.ScanAvailableDot11NetworksAsync(request); + } + + public System.Threading.Tasks.Task ScanAvailableDot11NetworksAsync(string InterfaceToken) + { + ScanAvailableDot11NetworksRequest inValue = new ScanAvailableDot11NetworksRequest(); + inValue.InterfaceToken = InterfaceToken; + return ((Device)(this)).ScanAvailableDot11NetworksAsync(inValue); + } + + public System.Threading.Tasks.Task GetSystemUrisAsync(GetSystemUrisRequest request) + { + return base.Channel.GetSystemUrisAsync(request); + } + + public System.Threading.Tasks.Task StartFirmwareUpgradeAsync(StartFirmwareUpgradeRequest request) + { + return base.Channel.StartFirmwareUpgradeAsync(request); + } + + public System.Threading.Tasks.Task StartSystemRestoreAsync(StartSystemRestoreRequest request) + { + return base.Channel.StartSystemRestoreAsync(request); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.GetStorageConfigurationsAsync(GetStorageConfigurationsRequest request) + { + return base.Channel.GetStorageConfigurationsAsync(request); + } + + public System.Threading.Tasks.Task GetStorageConfigurationsAsync() + { + GetStorageConfigurationsRequest inValue = new GetStorageConfigurationsRequest(); + return ((Device)(this)).GetStorageConfigurationsAsync(inValue); + } + + public System.Threading.Tasks.Task CreateStorageConfigurationAsync(StorageConfigurationData StorageConfiguration) + { + return base.Channel.CreateStorageConfigurationAsync(StorageConfiguration); + } + + public System.Threading.Tasks.Task GetStorageConfigurationAsync(string Token) + { + return base.Channel.GetStorageConfigurationAsync(Token); + } + + public System.Threading.Tasks.Task SetStorageConfigurationAsync(StorageConfiguration StorageConfiguration) + { + return base.Channel.SetStorageConfigurationAsync(StorageConfiguration); + } + + public System.Threading.Tasks.Task DeleteStorageConfigurationAsync(string Token) + { + return base.Channel.DeleteStorageConfigurationAsync(Token); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.GetGeoLocationAsync(GetGeoLocationRequest request) + { + return base.Channel.GetGeoLocationAsync(request); + } + + public System.Threading.Tasks.Task GetGeoLocationAsync() + { + GetGeoLocationRequest inValue = new GetGeoLocationRequest(); + return ((Device)(this)).GetGeoLocationAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.SetGeoLocationAsync(SetGeoLocationRequest request) + { + return base.Channel.SetGeoLocationAsync(request); + } + + public System.Threading.Tasks.Task SetGeoLocationAsync(LocationEntity[] Location) + { + SetGeoLocationRequest inValue = new SetGeoLocationRequest(); + inValue.Location = Location; + return ((Device)(this)).SetGeoLocationAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Device.DeleteGeoLocationAsync(DeleteGeoLocationRequest request) + { + return base.Channel.DeleteGeoLocationAsync(request); + } + + public System.Threading.Tasks.Task DeleteGeoLocationAsync(LocationEntity[] Location) + { + DeleteGeoLocationRequest inValue = new DeleteGeoLocationRequest(); + inValue.Location = Location; + return ((Device)(this)).DeleteGeoLocationAsync(inValue); + } + + public virtual System.Threading.Tasks.Task OpenAsync() + { + return System.Threading.Tasks.Task.Factory.FromAsync(((System.ServiceModel.ICommunicationObject)(this)).BeginOpen(null, null), new System.Action(((System.ServiceModel.ICommunicationObject)(this)).EndOpen)); + } + + public virtual System.Threading.Tasks.Task CloseAsync() + { + return System.Threading.Tasks.Task.Factory.FromAsync(((System.ServiceModel.ICommunicationObject)(this)).BeginClose(null, null), new System.Action(((System.ServiceModel.ICommunicationObject)(this)).EndClose)); + } + } +} diff --git a/公共库/EC.Onvif/EC.Onvif.csproj b/公共库/EC.Onvif/EC.Onvif.csproj new file mode 100644 index 0000000..2614d5b --- /dev/null +++ b/公共库/EC.Onvif/EC.Onvif.csproj @@ -0,0 +1,12 @@ + + + + net5.0-windows7.0 + + + + + + + + diff --git a/公共库/EC.Onvif/Imaging/DataTypes.cs b/公共库/EC.Onvif/Imaging/DataTypes.cs new file mode 100644 index 0000000..71b3cd1 --- /dev/null +++ b/公共库/EC.Onvif/Imaging/DataTypes.cs @@ -0,0 +1,146 @@ +namespace EC.Onvif.Imaging +{ + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver20/imaging/wsdl")] + public partial class Capabilities + { + + private System.Xml.Linq.XElement[] anyField; + + private bool imageStabilizationField; + + private bool imageStabilizationFieldSpecified; + + private bool presetsField; + + private bool presetsFieldSpecified; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool ImageStabilization + { + get + { + return this.imageStabilizationField; + } + set + { + this.imageStabilizationField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool ImageStabilizationSpecified + { + get + { + return this.imageStabilizationFieldSpecified; + } + set + { + this.imageStabilizationFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool Presets + { + get + { + return this.presetsField; + } + set + { + this.presetsField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool PresetsSpecified + { + get + { + return this.presetsFieldSpecified; + } + set + { + this.presetsFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver20/imaging/wsdl")] + public partial class ImagingPreset + { + + private string nameField; + + private string tokenField; + + private string typeField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public string Name + { + get + { + return this.nameField; + } + set + { + this.nameField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string token + { + get + { + return this.tokenField; + } + set + { + this.tokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string type + { + get + { + return this.typeField; + } + set + { + this.typeField = value; + } + } + } +} \ No newline at end of file diff --git a/公共库/EC.Onvif/Imaging/ImagingClient.cs b/公共库/EC.Onvif/Imaging/ImagingClient.cs new file mode 100644 index 0000000..e731f01 --- /dev/null +++ b/公共库/EC.Onvif/Imaging/ImagingClient.cs @@ -0,0 +1,190 @@ +using EC.Onvif.Common; + +namespace EC.Onvif.Imaging +{ + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.ServiceContractAttribute(Namespace = "http://www.onvif.org/ver20/imaging/wsdl", ConfigurationName = "EC.Onvif.Imaging.Imaging")] + public interface Imaging + { + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/imaging/wsdl/GetServiceCapabilities", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Capabilities")] + System.Threading.Tasks.Task GetServiceCapabilitiesAsync(); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/imaging/wsdl/GetImagingSettings", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [return: System.ServiceModel.MessageParameterAttribute(Name = "ImagingSettings")] + System.Threading.Tasks.Task GetImagingSettingsAsync(string VideoSourceToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/imaging/wsdl/SetImagingSettings", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + System.Threading.Tasks.Task SetImagingSettingsAsync(string VideoSourceToken, ImagingSettings20 ImagingSettings, bool ForcePersistence); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/imaging/wsdl/GetOptions", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [return: System.ServiceModel.MessageParameterAttribute(Name = "ImagingOptions")] + System.Threading.Tasks.Task GetOptionsAsync(string VideoSourceToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/imaging/wsdl/Move", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + System.Threading.Tasks.Task MoveAsync(string VideoSourceToken, FocusMove Focus); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/imaging/wsdl/GetMoveOptions", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [return: System.ServiceModel.MessageParameterAttribute(Name = "MoveOptions")] + System.Threading.Tasks.Task GetMoveOptionsAsync(string VideoSourceToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/imaging/wsdl/FocusStop", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + System.Threading.Tasks.Task StopAsync(string VideoSourceToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/imaging/wsdl/GetStatus", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Status")] + System.Threading.Tasks.Task GetStatusAsync(string VideoSourceToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/imaging/wsdl/GetPresets", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + System.Threading.Tasks.Task GetPresetsAsync(GetPresetsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/imaging/wsdl/GetCurrentPreset", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Preset")] + System.Threading.Tasks.Task GetCurrentPresetAsync(string VideoSourceToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/imaging/wsdl/SetCurrentPreset", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + System.Threading.Tasks.Task SetCurrentPresetAsync(string VideoSourceToken, string PresetToken); + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetPresets", WrapperNamespace = "http://www.onvif.org/ver20/imaging/wsdl", IsWrapped = true)] + public partial class GetPresetsRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver20/imaging/wsdl", Order = 0)] + public string VideoSourceToken; + + public GetPresetsRequest() + { + } + + public GetPresetsRequest(string VideoSourceToken) + { + this.VideoSourceToken = VideoSourceToken; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetPresetsResponse", WrapperNamespace = "http://www.onvif.org/ver20/imaging/wsdl", IsWrapped = true)] + public partial class GetPresetsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver20/imaging/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Preset")] + public ImagingPreset[] Preset; + + public GetPresetsResponse() + { + } + + public GetPresetsResponse(ImagingPreset[] Preset) + { + this.Preset = Preset; + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + public interface ImagingChannel : Imaging, System.ServiceModel.IClientChannel + { + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + public partial class ImagingClient : System.ServiceModel.ClientBase, Imaging + { + + internal ImagingClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : + base(binding, remoteAddress) + { + } + + public System.Threading.Tasks.Task GetServiceCapabilitiesAsync() + { + return base.Channel.GetServiceCapabilitiesAsync(); + } + + public System.Threading.Tasks.Task GetImagingSettingsAsync(string VideoSourceToken) + { + return base.Channel.GetImagingSettingsAsync(VideoSourceToken); + } + + public System.Threading.Tasks.Task SetImagingSettingsAsync(string VideoSourceToken, ImagingSettings20 ImagingSettings, bool ForcePersistence) + { + return base.Channel.SetImagingSettingsAsync(VideoSourceToken, ImagingSettings, ForcePersistence); + } + + public System.Threading.Tasks.Task GetOptionsAsync(string VideoSourceToken) + { + return base.Channel.GetOptionsAsync(VideoSourceToken); + } + + public System.Threading.Tasks.Task MoveAsync(string VideoSourceToken, FocusMove Focus) + { + return base.Channel.MoveAsync(VideoSourceToken, Focus); + } + + public System.Threading.Tasks.Task GetMoveOptionsAsync(string VideoSourceToken) + { + return base.Channel.GetMoveOptionsAsync(VideoSourceToken); + } + + public System.Threading.Tasks.Task StopAsync(string VideoSourceToken) + { + return base.Channel.StopAsync(VideoSourceToken); + } + + public System.Threading.Tasks.Task GetStatusAsync(string VideoSourceToken) + { + return base.Channel.GetStatusAsync(VideoSourceToken); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Imaging.GetPresetsAsync(GetPresetsRequest request) + { + return base.Channel.GetPresetsAsync(request); + } + + public System.Threading.Tasks.Task GetPresetsAsync(string VideoSourceToken) + { + GetPresetsRequest inValue = new GetPresetsRequest(); + inValue.VideoSourceToken = VideoSourceToken; + return ((Imaging)(this)).GetPresetsAsync(inValue); + } + + public System.Threading.Tasks.Task GetCurrentPresetAsync(string VideoSourceToken) + { + return base.Channel.GetCurrentPresetAsync(VideoSourceToken); + } + + public System.Threading.Tasks.Task SetCurrentPresetAsync(string VideoSourceToken, string PresetToken) + { + return base.Channel.SetCurrentPresetAsync(VideoSourceToken, PresetToken); + } + + public virtual System.Threading.Tasks.Task OpenAsync() + { + return System.Threading.Tasks.Task.Factory.FromAsync(((System.ServiceModel.ICommunicationObject)(this)).BeginOpen(null, null), new System.Action(((System.ServiceModel.ICommunicationObject)(this)).EndOpen)); + } + + public virtual System.Threading.Tasks.Task CloseAsync() + { + return System.Threading.Tasks.Task.Factory.FromAsync(((System.ServiceModel.ICommunicationObject)(this)).BeginClose(null, null), new System.Action(((System.ServiceModel.ICommunicationObject)(this)).EndClose)); + } + } +} diff --git a/公共库/EC.Onvif/Media/DataTypes.cs b/公共库/EC.Onvif/Media/DataTypes.cs new file mode 100644 index 0000000..899f65b --- /dev/null +++ b/公共库/EC.Onvif/Media/DataTypes.cs @@ -0,0 +1,670 @@ +using EC.Onvif.Common; + +namespace EC.Onvif.Media +{ + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl")] + public partial class Capabilities + { + + private ProfileCapabilities profileCapabilitiesField; + + private StreamingCapabilities streamingCapabilitiesField; + + private System.Xml.Linq.XElement[] anyField; + + private bool snapshotUriField; + + private bool snapshotUriFieldSpecified; + + private bool rotationField; + + private bool rotationFieldSpecified; + + private bool videoSourceModeField; + + private bool videoSourceModeFieldSpecified; + + private bool oSDField; + + private bool oSDFieldSpecified; + + private bool temporaryOSDTextField; + + private bool temporaryOSDTextFieldSpecified; + + private bool eXICompressionField; + + private bool eXICompressionFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public ProfileCapabilities ProfileCapabilities + { + get + { + return this.profileCapabilitiesField; + } + set + { + this.profileCapabilitiesField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public StreamingCapabilities StreamingCapabilities + { + get + { + return this.streamingCapabilitiesField; + } + set + { + this.streamingCapabilitiesField = value; + } + } + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 2)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool SnapshotUri + { + get + { + return this.snapshotUriField; + } + set + { + this.snapshotUriField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool SnapshotUriSpecified + { + get + { + return this.snapshotUriFieldSpecified; + } + set + { + this.snapshotUriFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool Rotation + { + get + { + return this.rotationField; + } + set + { + this.rotationField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool RotationSpecified + { + get + { + return this.rotationFieldSpecified; + } + set + { + this.rotationFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool VideoSourceMode + { + get + { + return this.videoSourceModeField; + } + set + { + this.videoSourceModeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool VideoSourceModeSpecified + { + get + { + return this.videoSourceModeFieldSpecified; + } + set + { + this.videoSourceModeFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool OSD + { + get + { + return this.oSDField; + } + set + { + this.oSDField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool OSDSpecified + { + get + { + return this.oSDFieldSpecified; + } + set + { + this.oSDFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool TemporaryOSDText + { + get + { + return this.temporaryOSDTextField; + } + set + { + this.temporaryOSDTextField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool TemporaryOSDTextSpecified + { + get + { + return this.temporaryOSDTextFieldSpecified; + } + set + { + this.temporaryOSDTextFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool EXICompression + { + get + { + return this.eXICompressionField; + } + set + { + this.eXICompressionField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool EXICompressionSpecified + { + get + { + return this.eXICompressionFieldSpecified; + } + set + { + this.eXICompressionFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl")] + public partial class ProfileCapabilities + { + + private System.Xml.Linq.XElement[] anyField; + + private int maximumNumberOfProfilesField; + + private bool maximumNumberOfProfilesFieldSpecified; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int MaximumNumberOfProfiles + { + get + { + return this.maximumNumberOfProfilesField; + } + set + { + this.maximumNumberOfProfilesField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool MaximumNumberOfProfilesSpecified + { + get + { + return this.maximumNumberOfProfilesFieldSpecified; + } + set + { + this.maximumNumberOfProfilesFieldSpecified = value; + } + } + } + + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl")] + public partial class VideoSourceModeExtension + { + + private System.Xml.Linq.XElement[] anyField; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl")] + public partial class VideoSourceMode + { + + private float maxFramerateField; + + private VideoResolution maxResolutionField; + + private string encodingsField; + + private bool rebootField; + + private string descriptionField; + + private VideoSourceModeExtension extensionField; + + private string tokenField; + + private bool enabledField; + + private bool enabledFieldSpecified; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 0)] + public float MaxFramerate + { + get + { + return this.maxFramerateField; + } + set + { + this.maxFramerateField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 1)] + public VideoResolution MaxResolution + { + get + { + return this.maxResolutionField; + } + set + { + this.maxResolutionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 2)] + public string Encodings + { + get + { + return this.encodingsField; + } + set + { + this.encodingsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 3)] + public bool Reboot + { + get + { + return this.rebootField; + } + set + { + this.rebootField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 4)] + public string Description + { + get + { + return this.descriptionField; + } + set + { + this.descriptionField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order = 5)] + public VideoSourceModeExtension Extension + { + get + { + return this.extensionField; + } + set + { + this.extensionField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string token + { + get + { + return this.tokenField; + } + set + { + this.tokenField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool Enabled + { + get + { + return this.enabledField; + } + set + { + this.enabledField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool EnabledSpecified + { + get + { + return this.enabledFieldSpecified; + } + set + { + this.enabledFieldSpecified = value; + } + } + } + + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl")] + public partial class StreamingCapabilities + { + + private System.Xml.Linq.XElement[] anyField; + + private bool rTPMulticastField; + + private bool rTPMulticastFieldSpecified; + + private bool rTP_TCPField; + + private bool rTP_TCPFieldSpecified; + + private bool rTP_RTSP_TCPField; + + private bool rTP_RTSP_TCPFieldSpecified; + + private bool nonAggregateControlField; + + private bool nonAggregateControlFieldSpecified; + + private bool noRTSPStreamingField; + + private bool noRTSPStreamingFieldSpecified; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool RTPMulticast + { + get + { + return this.rTPMulticastField; + } + set + { + this.rTPMulticastField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool RTPMulticastSpecified + { + get + { + return this.rTPMulticastFieldSpecified; + } + set + { + this.rTPMulticastFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool RTP_TCP + { + get + { + return this.rTP_TCPField; + } + set + { + this.rTP_TCPField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool RTP_TCPSpecified + { + get + { + return this.rTP_TCPFieldSpecified; + } + set + { + this.rTP_TCPFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool RTP_RTSP_TCP + { + get + { + return this.rTP_RTSP_TCPField; + } + set + { + this.rTP_RTSP_TCPField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool RTP_RTSP_TCPSpecified + { + get + { + return this.rTP_RTSP_TCPFieldSpecified; + } + set + { + this.rTP_RTSP_TCPFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool NonAggregateControl + { + get + { + return this.nonAggregateControlField; + } + set + { + this.nonAggregateControlField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool NonAggregateControlSpecified + { + get + { + return this.nonAggregateControlFieldSpecified; + } + set + { + this.nonAggregateControlFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool NoRTSPStreaming + { + get + { + return this.noRTSPStreamingField; + } + set + { + this.noRTSPStreamingField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool NoRTSPStreamingSpecified + { + get + { + return this.noRTSPStreamingFieldSpecified; + } + set + { + this.noRTSPStreamingFieldSpecified = value; + } + } + } +} \ No newline at end of file diff --git a/公共库/EC.Onvif/Media/MediaClient.cs b/公共库/EC.Onvif/Media/MediaClient.cs new file mode 100644 index 0000000..0689040 --- /dev/null +++ b/公共库/EC.Onvif/Media/MediaClient.cs @@ -0,0 +1,2185 @@ +using EC.Onvif.Common; + +namespace EC.Onvif.Media +{ + + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.ServiceContractAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", ConfigurationName = "EC.Onvif.Media.Media")] + public interface Media + { + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetServiceCapabilities", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Capabilities")] + System.Threading.Tasks.Task GetServiceCapabilitiesAsync(); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdlGetVideoSources/", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetVideoSourcesAsync(Onvif.Media.GetVideoSourcesRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetAudioSources", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetAudioSourcesAsync(Onvif.Media.GetAudioSourcesRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetAudioOutputs", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetAudioOutputsAsync(Onvif.Media.GetAudioOutputsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/CreateProfile", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Profile")] + System.Threading.Tasks.Task CreateProfileAsync(string Name, string Token); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdlGetProfile/", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Profile")] + System.Threading.Tasks.Task GetProfileAsync(string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetProfiles", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetProfilesAsync(Onvif.Media.GetProfilesRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/AddVideoEncoderConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task AddVideoEncoderConfigurationAsync(string ProfileToken, string ConfigurationToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/RemoveVideoEncoderConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task RemoveVideoEncoderConfigurationAsync(string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/AddVideoSourceConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task AddVideoSourceConfigurationAsync(string ProfileToken, string ConfigurationToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/RemoveVideoSourceConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task RemoveVideoSourceConfigurationAsync(string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/AddAudioEncoderConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task AddAudioEncoderConfigurationAsync(string ProfileToken, string ConfigurationToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/RemoveAudioEncoderConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task RemoveAudioEncoderConfigurationAsync(string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/AddAudioSourceConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task AddAudioSourceConfigurationAsync(string ProfileToken, string ConfigurationToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/RemoveAudioSourceConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task RemoveAudioSourceConfigurationAsync(string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/AddPTZConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task AddPTZConfigurationAsync(string ProfileToken, string ConfigurationToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/RemovePTZConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task RemovePTZConfigurationAsync(string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/AddVideoAnalyticsConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task AddVideoAnalyticsConfigurationAsync(string ProfileToken, string ConfigurationToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/RemoveVideoAnalyticsConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task RemoveVideoAnalyticsConfigurationAsync(string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/AddMetadataConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task AddMetadataConfigurationAsync(string ProfileToken, string ConfigurationToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/RemoveMetadataConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task RemoveMetadataConfigurationAsync(string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/AddAudioOutputConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task AddAudioOutputConfigurationAsync(string ProfileToken, string ConfigurationToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/RemoveAudioOutputConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task RemoveAudioOutputConfigurationAsync(string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/AddAudioDecoderConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task AddAudioDecoderConfigurationAsync(string ProfileToken, string ConfigurationToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/RemoveAudioDecoderConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task RemoveAudioDecoderConfigurationAsync(string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/DeleteProfile", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task DeleteProfileAsync(string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetVideoSourceConfigurations", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetVideoSourceConfigurationsAsync(Onvif.Media.GetVideoSourceConfigurationsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetVideoEncoderConfigurations", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetVideoEncoderConfigurationsAsync(Onvif.Media.GetVideoEncoderConfigurationsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdlGetAudioSourceConfigurations/", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetAudioSourceConfigurationsAsync(Onvif.Media.GetAudioSourceConfigurationsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetAudioEncoderConfigurations", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetAudioEncoderConfigurationsAsync(Onvif.Media.GetAudioEncoderConfigurationsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetVideoAnalyticsConfigurations", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetVideoAnalyticsConfigurationsAsync(Onvif.Media.GetVideoAnalyticsConfigurationsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetMetadataConfigurations", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetMetadataConfigurationsAsync(Onvif.Media.GetMetadataConfigurationsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetAudioOutputConfigurations", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetAudioOutputConfigurationsAsync(Onvif.Media.GetAudioOutputConfigurationsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetAudioDecoderConfigurations", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetAudioDecoderConfigurationsAsync(Onvif.Media.GetAudioDecoderConfigurationsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetVideoSourceConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Configuration")] + System.Threading.Tasks.Task GetVideoSourceConfigurationAsync(string ConfigurationToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetVideoEncoderConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Configuration")] + System.Threading.Tasks.Task GetVideoEncoderConfigurationAsync(string ConfigurationToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetAudioSourceConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Configuration")] + System.Threading.Tasks.Task GetAudioSourceConfigurationAsync(string ConfigurationToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetAudioEncoderConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Configuration")] + System.Threading.Tasks.Task GetAudioEncoderConfigurationAsync(string ConfigurationToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetVideoAnalyticsConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Configuration")] + System.Threading.Tasks.Task GetVideoAnalyticsConfigurationAsync(string ConfigurationToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetMetadataConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Configuration")] + System.Threading.Tasks.Task GetMetadataConfigurationAsync(string ConfigurationToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetAudioOutputConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Configuration")] + System.Threading.Tasks.Task GetAudioOutputConfigurationAsync(string ConfigurationToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetAudioDecoderConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Configuration")] + System.Threading.Tasks.Task GetAudioDecoderConfigurationAsync(string ConfigurationToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetCompatibleVideoEncoderConfigurations", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetCompatibleVideoEncoderConfigurationsAsync(Onvif.Media.GetCompatibleVideoEncoderConfigurationsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetCompatibleVideoSourceConfigurations", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetCompatibleVideoSourceConfigurationsAsync(Onvif.Media.GetCompatibleVideoSourceConfigurationsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetCompatibleAudioEncoderConfigurations", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetCompatibleAudioEncoderConfigurationsAsync(Onvif.Media.GetCompatibleAudioEncoderConfigurationsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetCompatibleAudioSourceConfigurations", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetCompatibleAudioSourceConfigurationsAsync(Onvif.Media.GetCompatibleAudioSourceConfigurationsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetCompatibleVideoAnalyticsConfigurations", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetCompatibleVideoAnalyticsConfigurationsAsync(Onvif.Media.GetCompatibleVideoAnalyticsConfigurationsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetCompatibleMetadataConfigurations", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetCompatibleMetadataConfigurationsAsync(Onvif.Media.GetCompatibleMetadataConfigurationsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetCompatibleAudioOutputConfigurations", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetCompatibleAudioOutputConfigurationsAsync(Onvif.Media.GetCompatibleAudioOutputConfigurationsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetCompatibleAudioDecoderConfigurations", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetCompatibleAudioDecoderConfigurationsAsync(Onvif.Media.GetCompatibleAudioDecoderConfigurationsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/SetVideoSourceConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetVideoSourceConfigurationAsync(VideoSourceConfiguration Configuration, bool ForcePersistence); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/SetVideoEncoderConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetVideoEncoderConfigurationAsync(VideoEncoderConfiguration Configuration, bool ForcePersistence); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/SetAudioSourceConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetAudioSourceConfigurationAsync(AudioSourceConfiguration Configuration, bool ForcePersistence); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/SetAudioEncoderConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetAudioEncoderConfigurationAsync(AudioEncoderConfiguration Configuration, bool ForcePersistence); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/SetVideoAnalyticsConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetVideoAnalyticsConfigurationAsync(VideoAnalyticsConfiguration Configuration, bool ForcePersistence); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/SetMetadataConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetMetadataConfigurationAsync(MetadataConfiguration Configuration, bool ForcePersistence); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/SetAudioOutputConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetAudioOutputConfigurationAsync(AudioOutputConfiguration Configuration, bool ForcePersistence); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/SetAudioDecoderConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetAudioDecoderConfigurationAsync(AudioDecoderConfiguration Configuration, bool ForcePersistence); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdlGetVideoSourceConfigurationOptions/", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Options")] + System.Threading.Tasks.Task GetVideoSourceConfigurationOptionsAsync(string ConfigurationToken, string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetVideoEncoderConfigurationOptions", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Options")] + System.Threading.Tasks.Task GetVideoEncoderConfigurationOptionsAsync(string ConfigurationToken, string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetAudioSourceConfigurationOptions", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Options")] + System.Threading.Tasks.Task GetAudioSourceConfigurationOptionsAsync(string ConfigurationToken, string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetAudioEncoderConfigurationOptions", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Options")] + System.Threading.Tasks.Task GetAudioEncoderConfigurationOptionsAsync(string ConfigurationToken, string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetMetadataConfigurationOptions", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Options")] + System.Threading.Tasks.Task GetMetadataConfigurationOptionsAsync(string ConfigurationToken, string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetAudioOutputConfigurationOptions", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Options")] + System.Threading.Tasks.Task GetAudioOutputConfigurationOptionsAsync(string ConfigurationToken, string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetAudioDecoderConfigurationOptions", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Options")] + System.Threading.Tasks.Task GetAudioDecoderConfigurationOptionsAsync(string ConfigurationToken, string ProfileToken); + + // CODEGEN: Generating message contract since the operation has multiple return values. + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetGuaranteedNumberOfVideoEncoderInstances", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetGuaranteedNumberOfVideoEncoderInstancesAsync(Onvif.Media.GetGuaranteedNumberOfVideoEncoderInstancesRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetStreamUri", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "MediaUri")] + System.Threading.Tasks.Task GetStreamUriAsync(StreamSetup StreamSetup, string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/StartMulticastStreaming", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task StartMulticastStreamingAsync(string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/StopMulticastStreaming", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task StopMulticastStreamingAsync(string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/SetSynchronizationPoint", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetSynchronizationPointAsync(string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetSnapshotUri", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "MediaUri")] + System.Threading.Tasks.Task GetSnapshotUriAsync(string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetVideoSourceModes", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetVideoSourceModesAsync(Onvif.Media.GetVideoSourceModesRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/SetVideoSourceMode", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Reboot")] + System.Threading.Tasks.Task SetVideoSourceModeAsync(string VideoSourceToken, string VideoSourceModeToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetOSDs", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetOSDsAsync(Onvif.Media.GetOSDsRequest request); + + // CODEGEN: Generating message contract since the operation has multiple return values. + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetOSD", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetOSDAsync(Onvif.Media.GetOSDRequest request); + + // CODEGEN: Generating message contract since the operation has multiple return values. + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/GetOSDOptions", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetOSDOptionsAsync(Onvif.Media.GetOSDOptionsRequest request); + + // CODEGEN: Generating message contract since the operation has multiple return values. + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/SetOSD", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetOSDAsync(Onvif.Media.SetOSDRequest request); + + // CODEGEN: Generating message contract since the operation has multiple return values. + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/CreateOSD", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task CreateOSDAsync(Onvif.Media.CreateOSDRequest request); + + // CODEGEN: Generating message contract since the operation has multiple return values. + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver10/media/wsdl/DeleteOSD", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task DeleteOSDAsync(Onvif.Media.DeleteOSDRequest request); + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetVideoSources", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetVideoSourcesRequest + { + + public GetVideoSourcesRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetVideoSourcesResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetVideoSourcesResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("VideoSources")] + public VideoSource[] VideoSources; + + public GetVideoSourcesResponse() + { + } + + public GetVideoSourcesResponse(VideoSource[] VideoSources) + { + this.VideoSources = VideoSources; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetAudioSources", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetAudioSourcesRequest + { + + public GetAudioSourcesRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetAudioSourcesResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetAudioSourcesResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("AudioSources")] + public AudioSource[] AudioSources; + + public GetAudioSourcesResponse() + { + } + + public GetAudioSourcesResponse(AudioSource[] AudioSources) + { + this.AudioSources = AudioSources; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetAudioOutputs", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetAudioOutputsRequest + { + + public GetAudioOutputsRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetAudioOutputsResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetAudioOutputsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("AudioOutputs")] + public AudioOutput[] AudioOutputs; + + public GetAudioOutputsResponse() + { + } + + public GetAudioOutputsResponse(AudioOutput[] AudioOutputs) + { + this.AudioOutputs = AudioOutputs; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetProfiles", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetProfilesRequest + { + + public GetProfilesRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetProfilesResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetProfilesResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Profiles")] + public Profile[] Profiles; + + public GetProfilesResponse() + { + } + + public GetProfilesResponse(Profile[] Profiles) + { + this.Profiles = Profiles; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetVideoSourceConfigurations", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetVideoSourceConfigurationsRequest + { + + public GetVideoSourceConfigurationsRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetVideoSourceConfigurationsResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetVideoSourceConfigurationsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Configurations")] + public VideoSourceConfiguration[] Configurations; + + public GetVideoSourceConfigurationsResponse() + { + } + + public GetVideoSourceConfigurationsResponse(VideoSourceConfiguration[] Configurations) + { + this.Configurations = Configurations; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetVideoEncoderConfigurations", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetVideoEncoderConfigurationsRequest + { + + public GetVideoEncoderConfigurationsRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetVideoEncoderConfigurationsResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetVideoEncoderConfigurationsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Configurations")] + public VideoEncoderConfiguration[] Configurations; + + public GetVideoEncoderConfigurationsResponse() + { + } + + public GetVideoEncoderConfigurationsResponse(VideoEncoderConfiguration[] Configurations) + { + this.Configurations = Configurations; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetAudioSourceConfigurations", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetAudioSourceConfigurationsRequest + { + + public GetAudioSourceConfigurationsRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetAudioSourceConfigurationsResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetAudioSourceConfigurationsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Configurations")] + public AudioSourceConfiguration[] Configurations; + + public GetAudioSourceConfigurationsResponse() + { + } + + public GetAudioSourceConfigurationsResponse(AudioSourceConfiguration[] Configurations) + { + this.Configurations = Configurations; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetAudioEncoderConfigurations", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetAudioEncoderConfigurationsRequest + { + + public GetAudioEncoderConfigurationsRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetAudioEncoderConfigurationsResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetAudioEncoderConfigurationsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Configurations")] + public AudioEncoderConfiguration[] Configurations; + + public GetAudioEncoderConfigurationsResponse() + { + } + + public GetAudioEncoderConfigurationsResponse(AudioEncoderConfiguration[] Configurations) + { + this.Configurations = Configurations; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetVideoAnalyticsConfigurations", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetVideoAnalyticsConfigurationsRequest + { + + public GetVideoAnalyticsConfigurationsRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetVideoAnalyticsConfigurationsResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetVideoAnalyticsConfigurationsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Configurations")] + public VideoAnalyticsConfiguration[] Configurations; + + public GetVideoAnalyticsConfigurationsResponse() + { + } + + public GetVideoAnalyticsConfigurationsResponse(VideoAnalyticsConfiguration[] Configurations) + { + this.Configurations = Configurations; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetMetadataConfigurations", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetMetadataConfigurationsRequest + { + + public GetMetadataConfigurationsRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetMetadataConfigurationsResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetMetadataConfigurationsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Configurations")] + public MetadataConfiguration[] Configurations; + + public GetMetadataConfigurationsResponse() + { + } + + public GetMetadataConfigurationsResponse(MetadataConfiguration[] Configurations) + { + this.Configurations = Configurations; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetAudioOutputConfigurations", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetAudioOutputConfigurationsRequest + { + + public GetAudioOutputConfigurationsRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetAudioOutputConfigurationsResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetAudioOutputConfigurationsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Configurations")] + public AudioOutputConfiguration[] Configurations; + + public GetAudioOutputConfigurationsResponse() + { + } + + public GetAudioOutputConfigurationsResponse(AudioOutputConfiguration[] Configurations) + { + this.Configurations = Configurations; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetAudioDecoderConfigurations", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetAudioDecoderConfigurationsRequest + { + + public GetAudioDecoderConfigurationsRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetAudioDecoderConfigurationsResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetAudioDecoderConfigurationsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Configurations")] + public AudioDecoderConfiguration[] Configurations; + + public GetAudioDecoderConfigurationsResponse() + { + } + + public GetAudioDecoderConfigurationsResponse(AudioDecoderConfiguration[] Configurations) + { + this.Configurations = Configurations; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCompatibleVideoEncoderConfigurations", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetCompatibleVideoEncoderConfigurationsRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + public string ProfileToken; + + public GetCompatibleVideoEncoderConfigurationsRequest() + { + } + + public GetCompatibleVideoEncoderConfigurationsRequest(string ProfileToken) + { + this.ProfileToken = ProfileToken; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCompatibleVideoEncoderConfigurationsResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetCompatibleVideoEncoderConfigurationsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Configurations")] + public VideoEncoderConfiguration[] Configurations; + + public GetCompatibleVideoEncoderConfigurationsResponse() + { + } + + public GetCompatibleVideoEncoderConfigurationsResponse(VideoEncoderConfiguration[] Configurations) + { + this.Configurations = Configurations; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCompatibleVideoSourceConfigurations", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetCompatibleVideoSourceConfigurationsRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + public string ProfileToken; + + public GetCompatibleVideoSourceConfigurationsRequest() + { + } + + public GetCompatibleVideoSourceConfigurationsRequest(string ProfileToken) + { + this.ProfileToken = ProfileToken; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCompatibleVideoSourceConfigurationsResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetCompatibleVideoSourceConfigurationsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Configurations")] + public VideoSourceConfiguration[] Configurations; + + public GetCompatibleVideoSourceConfigurationsResponse() + { + } + + public GetCompatibleVideoSourceConfigurationsResponse(VideoSourceConfiguration[] Configurations) + { + this.Configurations = Configurations; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCompatibleAudioEncoderConfigurations", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetCompatibleAudioEncoderConfigurationsRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + public string ProfileToken; + + public GetCompatibleAudioEncoderConfigurationsRequest() + { + } + + public GetCompatibleAudioEncoderConfigurationsRequest(string ProfileToken) + { + this.ProfileToken = ProfileToken; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCompatibleAudioEncoderConfigurationsResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetCompatibleAudioEncoderConfigurationsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Configurations")] + public AudioEncoderConfiguration[] Configurations; + + public GetCompatibleAudioEncoderConfigurationsResponse() + { + } + + public GetCompatibleAudioEncoderConfigurationsResponse(AudioEncoderConfiguration[] Configurations) + { + this.Configurations = Configurations; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCompatibleAudioSourceConfigurations", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetCompatibleAudioSourceConfigurationsRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + public string ProfileToken; + + public GetCompatibleAudioSourceConfigurationsRequest() + { + } + + public GetCompatibleAudioSourceConfigurationsRequest(string ProfileToken) + { + this.ProfileToken = ProfileToken; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCompatibleAudioSourceConfigurationsResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetCompatibleAudioSourceConfigurationsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Configurations")] + public AudioSourceConfiguration[] Configurations; + + public GetCompatibleAudioSourceConfigurationsResponse() + { + } + + public GetCompatibleAudioSourceConfigurationsResponse(AudioSourceConfiguration[] Configurations) + { + this.Configurations = Configurations; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCompatibleVideoAnalyticsConfigurations", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetCompatibleVideoAnalyticsConfigurationsRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + public string ProfileToken; + + public GetCompatibleVideoAnalyticsConfigurationsRequest() + { + } + + public GetCompatibleVideoAnalyticsConfigurationsRequest(string ProfileToken) + { + this.ProfileToken = ProfileToken; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCompatibleVideoAnalyticsConfigurationsResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetCompatibleVideoAnalyticsConfigurationsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Configurations")] + public VideoAnalyticsConfiguration[] Configurations; + + public GetCompatibleVideoAnalyticsConfigurationsResponse() + { + } + + public GetCompatibleVideoAnalyticsConfigurationsResponse(VideoAnalyticsConfiguration[] Configurations) + { + this.Configurations = Configurations; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCompatibleMetadataConfigurations", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetCompatibleMetadataConfigurationsRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + public string ProfileToken; + + public GetCompatibleMetadataConfigurationsRequest() + { + } + + public GetCompatibleMetadataConfigurationsRequest(string ProfileToken) + { + this.ProfileToken = ProfileToken; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCompatibleMetadataConfigurationsResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetCompatibleMetadataConfigurationsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Configurations")] + public MetadataConfiguration[] Configurations; + + public GetCompatibleMetadataConfigurationsResponse() + { + } + + public GetCompatibleMetadataConfigurationsResponse(MetadataConfiguration[] Configurations) + { + this.Configurations = Configurations; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCompatibleAudioOutputConfigurations", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetCompatibleAudioOutputConfigurationsRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + public string ProfileToken; + + public GetCompatibleAudioOutputConfigurationsRequest() + { + } + + public GetCompatibleAudioOutputConfigurationsRequest(string ProfileToken) + { + this.ProfileToken = ProfileToken; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCompatibleAudioOutputConfigurationsResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetCompatibleAudioOutputConfigurationsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Configurations")] + public AudioOutputConfiguration[] Configurations; + + public GetCompatibleAudioOutputConfigurationsResponse() + { + } + + public GetCompatibleAudioOutputConfigurationsResponse(AudioOutputConfiguration[] Configurations) + { + this.Configurations = Configurations; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCompatibleAudioDecoderConfigurations", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetCompatibleAudioDecoderConfigurationsRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + public string ProfileToken; + + public GetCompatibleAudioDecoderConfigurationsRequest() + { + } + + public GetCompatibleAudioDecoderConfigurationsRequest(string ProfileToken) + { + this.ProfileToken = ProfileToken; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCompatibleAudioDecoderConfigurationsResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetCompatibleAudioDecoderConfigurationsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Configurations")] + public AudioDecoderConfiguration[] Configurations; + + public GetCompatibleAudioDecoderConfigurationsResponse() + { + } + + public GetCompatibleAudioDecoderConfigurationsResponse(AudioDecoderConfiguration[] Configurations) + { + this.Configurations = Configurations; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetGuaranteedNumberOfVideoEncoderInstances", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetGuaranteedNumberOfVideoEncoderInstancesRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + public string ConfigurationToken; + + public GetGuaranteedNumberOfVideoEncoderInstancesRequest() + { + } + + public GetGuaranteedNumberOfVideoEncoderInstancesRequest(string ConfigurationToken) + { + this.ConfigurationToken = ConfigurationToken; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetGuaranteedNumberOfVideoEncoderInstancesResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetGuaranteedNumberOfVideoEncoderInstancesResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + public int TotalNumber; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 1)] + public int JPEG; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 2)] + public int H264; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 3)] + public int MPEG4; + + public GetGuaranteedNumberOfVideoEncoderInstancesResponse() + { + } + + public GetGuaranteedNumberOfVideoEncoderInstancesResponse(int TotalNumber, int JPEG, int H264, int MPEG4) + { + this.TotalNumber = TotalNumber; + this.JPEG = JPEG; + this.H264 = H264; + this.MPEG4 = MPEG4; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetVideoSourceModes", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetVideoSourceModesRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + public string VideoSourceToken; + + public GetVideoSourceModesRequest() + { + } + + public GetVideoSourceModesRequest(string VideoSourceToken) + { + this.VideoSourceToken = VideoSourceToken; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetVideoSourceModesResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetVideoSourceModesResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("VideoSourceModes")] + public VideoSourceMode[] VideoSourceModes; + + public GetVideoSourceModesResponse() + { + } + + public GetVideoSourceModesResponse(VideoSourceMode[] VideoSourceModes) + { + this.VideoSourceModes = VideoSourceModes; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetOSDs", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetOSDsRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + public string ConfigurationToken; + + public GetOSDsRequest() + { + } + + public GetOSDsRequest(string ConfigurationToken) + { + this.ConfigurationToken = ConfigurationToken; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetOSDsResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetOSDsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("OSDs")] + public OSDConfiguration[] OSDs; + + public GetOSDsResponse() + { + } + + public GetOSDsResponse(OSDConfiguration[] OSDs) + { + this.OSDs = OSDs; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetOSD", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetOSDRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + public string OSDToken; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "", Order = 1)] + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.Linq.XElement[] Any; + + public GetOSDRequest() + { + } + + public GetOSDRequest(string OSDToken, System.Xml.Linq.XElement[] Any) + { + this.OSDToken = OSDToken; + this.Any = Any; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetOSDResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetOSDResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + public OSDConfiguration OSD; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "", Order = 1)] + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.Linq.XElement[] Any; + + public GetOSDResponse() + { + } + + public GetOSDResponse(OSDConfiguration OSD, System.Xml.Linq.XElement[] Any) + { + this.OSD = OSD; + this.Any = Any; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetOSDOptions", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetOSDOptionsRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + public string ConfigurationToken; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "", Order = 1)] + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.Linq.XElement[] Any; + + public GetOSDOptionsRequest() + { + } + + public GetOSDOptionsRequest(string ConfigurationToken, System.Xml.Linq.XElement[] Any) + { + this.ConfigurationToken = ConfigurationToken; + this.Any = Any; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetOSDOptionsResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class GetOSDOptionsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + public OSDConfigurationOptions OSDOptions; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "", Order = 1)] + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.Linq.XElement[] Any; + + public GetOSDOptionsResponse() + { + } + + public GetOSDOptionsResponse(OSDConfigurationOptions OSDOptions, System.Xml.Linq.XElement[] Any) + { + this.OSDOptions = OSDOptions; + this.Any = Any; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetOSD", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class SetOSDRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + public OSDConfiguration OSD; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "", Order = 1)] + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.Linq.XElement[] Any; + + public SetOSDRequest() + { + } + + public SetOSDRequest(OSDConfiguration OSD, System.Xml.Linq.XElement[] Any) + { + this.OSD = OSD; + this.Any = Any; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetOSDResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class SetOSDResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "", Order = 0)] + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.Linq.XElement[] Any; + + public SetOSDResponse() + { + } + + public SetOSDResponse(System.Xml.Linq.XElement[] Any) + { + this.Any = Any; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "CreateOSD", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class CreateOSDRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + public OSDConfiguration OSD; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "", Order = 1)] + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.Linq.XElement[] Any; + + public CreateOSDRequest() + { + } + + public CreateOSDRequest(OSDConfiguration OSD, System.Xml.Linq.XElement[] Any) + { + this.OSD = OSD; + this.Any = Any; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "CreateOSDResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class CreateOSDResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + public string OSDToken; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "", Order = 1)] + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.Linq.XElement[] Any; + + public CreateOSDResponse() + { + } + + public CreateOSDResponse(string OSDToken, System.Xml.Linq.XElement[] Any) + { + this.OSDToken = OSDToken; + this.Any = Any; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "DeleteOSD", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class DeleteOSDRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver10/media/wsdl", Order = 0)] + public string OSDToken; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "", Order = 1)] + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.Linq.XElement[] Any; + + public DeleteOSDRequest() + { + } + + public DeleteOSDRequest(string OSDToken, System.Xml.Linq.XElement[] Any) + { + this.OSDToken = OSDToken; + this.Any = Any; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "DeleteOSDResponse", WrapperNamespace = "http://www.onvif.org/ver10/media/wsdl", IsWrapped = true)] + public partial class DeleteOSDResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "", Order = 0)] + [System.Xml.Serialization.XmlAnyElementAttribute()] + public System.Xml.Linq.XElement[] Any; + + public DeleteOSDResponse() + { + } + + public DeleteOSDResponse(System.Xml.Linq.XElement[] Any) + { + this.Any = Any; + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + public interface MediaChannel : Onvif.Media.Media, System.ServiceModel.IClientChannel + { + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + public partial class MediaClient : System.ServiceModel.ClientBase, Onvif.Media.Media + { + + internal MediaClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : + base(binding, remoteAddress) + { + } + + public System.Threading.Tasks.Task GetServiceCapabilitiesAsync() + { + return base.Channel.GetServiceCapabilitiesAsync(); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetVideoSourcesAsync(Onvif.Media.GetVideoSourcesRequest request) + { + return base.Channel.GetVideoSourcesAsync(request); + } + + public System.Threading.Tasks.Task GetVideoSourcesAsync() + { + Onvif.Media.GetVideoSourcesRequest inValue = new Onvif.Media.GetVideoSourcesRequest(); + return ((Onvif.Media.Media)(this)).GetVideoSourcesAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetAudioSourcesAsync(Onvif.Media.GetAudioSourcesRequest request) + { + return base.Channel.GetAudioSourcesAsync(request); + } + + public System.Threading.Tasks.Task GetAudioSourcesAsync() + { + Onvif.Media.GetAudioSourcesRequest inValue = new Onvif.Media.GetAudioSourcesRequest(); + return ((Onvif.Media.Media)(this)).GetAudioSourcesAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetAudioOutputsAsync(Onvif.Media.GetAudioOutputsRequest request) + { + return base.Channel.GetAudioOutputsAsync(request); + } + + public System.Threading.Tasks.Task GetAudioOutputsAsync() + { + Onvif.Media.GetAudioOutputsRequest inValue = new Onvif.Media.GetAudioOutputsRequest(); + return ((Onvif.Media.Media)(this)).GetAudioOutputsAsync(inValue); + } + + public System.Threading.Tasks.Task CreateProfileAsync(string Name, string Token) + { + return base.Channel.CreateProfileAsync(Name, Token); + } + + public System.Threading.Tasks.Task GetProfileAsync(string ProfileToken) + { + return base.Channel.GetProfileAsync(ProfileToken); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetProfilesAsync(Onvif.Media.GetProfilesRequest request) + { + return base.Channel.GetProfilesAsync(request); + } + + public System.Threading.Tasks.Task GetProfilesAsync() + { + Onvif.Media.GetProfilesRequest inValue = new Onvif.Media.GetProfilesRequest(); + return ((Onvif.Media.Media)(this)).GetProfilesAsync(inValue); + } + + public System.Threading.Tasks.Task AddVideoEncoderConfigurationAsync(string ProfileToken, string ConfigurationToken) + { + return base.Channel.AddVideoEncoderConfigurationAsync(ProfileToken, ConfigurationToken); + } + + public System.Threading.Tasks.Task RemoveVideoEncoderConfigurationAsync(string ProfileToken) + { + return base.Channel.RemoveVideoEncoderConfigurationAsync(ProfileToken); + } + + public System.Threading.Tasks.Task AddVideoSourceConfigurationAsync(string ProfileToken, string ConfigurationToken) + { + return base.Channel.AddVideoSourceConfigurationAsync(ProfileToken, ConfigurationToken); + } + + public System.Threading.Tasks.Task RemoveVideoSourceConfigurationAsync(string ProfileToken) + { + return base.Channel.RemoveVideoSourceConfigurationAsync(ProfileToken); + } + + public System.Threading.Tasks.Task AddAudioEncoderConfigurationAsync(string ProfileToken, string ConfigurationToken) + { + return base.Channel.AddAudioEncoderConfigurationAsync(ProfileToken, ConfigurationToken); + } + + public System.Threading.Tasks.Task RemoveAudioEncoderConfigurationAsync(string ProfileToken) + { + return base.Channel.RemoveAudioEncoderConfigurationAsync(ProfileToken); + } + + public System.Threading.Tasks.Task AddAudioSourceConfigurationAsync(string ProfileToken, string ConfigurationToken) + { + return base.Channel.AddAudioSourceConfigurationAsync(ProfileToken, ConfigurationToken); + } + + public System.Threading.Tasks.Task RemoveAudioSourceConfigurationAsync(string ProfileToken) + { + return base.Channel.RemoveAudioSourceConfigurationAsync(ProfileToken); + } + + public System.Threading.Tasks.Task AddPTZConfigurationAsync(string ProfileToken, string ConfigurationToken) + { + return base.Channel.AddPTZConfigurationAsync(ProfileToken, ConfigurationToken); + } + + public System.Threading.Tasks.Task RemovePTZConfigurationAsync(string ProfileToken) + { + return base.Channel.RemovePTZConfigurationAsync(ProfileToken); + } + + public System.Threading.Tasks.Task AddVideoAnalyticsConfigurationAsync(string ProfileToken, string ConfigurationToken) + { + return base.Channel.AddVideoAnalyticsConfigurationAsync(ProfileToken, ConfigurationToken); + } + + public System.Threading.Tasks.Task RemoveVideoAnalyticsConfigurationAsync(string ProfileToken) + { + return base.Channel.RemoveVideoAnalyticsConfigurationAsync(ProfileToken); + } + + public System.Threading.Tasks.Task AddMetadataConfigurationAsync(string ProfileToken, string ConfigurationToken) + { + return base.Channel.AddMetadataConfigurationAsync(ProfileToken, ConfigurationToken); + } + + public System.Threading.Tasks.Task RemoveMetadataConfigurationAsync(string ProfileToken) + { + return base.Channel.RemoveMetadataConfigurationAsync(ProfileToken); + } + + public System.Threading.Tasks.Task AddAudioOutputConfigurationAsync(string ProfileToken, string ConfigurationToken) + { + return base.Channel.AddAudioOutputConfigurationAsync(ProfileToken, ConfigurationToken); + } + + public System.Threading.Tasks.Task RemoveAudioOutputConfigurationAsync(string ProfileToken) + { + return base.Channel.RemoveAudioOutputConfigurationAsync(ProfileToken); + } + + public System.Threading.Tasks.Task AddAudioDecoderConfigurationAsync(string ProfileToken, string ConfigurationToken) + { + return base.Channel.AddAudioDecoderConfigurationAsync(ProfileToken, ConfigurationToken); + } + + public System.Threading.Tasks.Task RemoveAudioDecoderConfigurationAsync(string ProfileToken) + { + return base.Channel.RemoveAudioDecoderConfigurationAsync(ProfileToken); + } + + public System.Threading.Tasks.Task DeleteProfileAsync(string ProfileToken) + { + return base.Channel.DeleteProfileAsync(ProfileToken); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetVideoSourceConfigurationsAsync(Onvif.Media.GetVideoSourceConfigurationsRequest request) + { + return base.Channel.GetVideoSourceConfigurationsAsync(request); + } + + public System.Threading.Tasks.Task GetVideoSourceConfigurationsAsync() + { + Onvif.Media.GetVideoSourceConfigurationsRequest inValue = new Onvif.Media.GetVideoSourceConfigurationsRequest(); + return ((Onvif.Media.Media)(this)).GetVideoSourceConfigurationsAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetVideoEncoderConfigurationsAsync(Onvif.Media.GetVideoEncoderConfigurationsRequest request) + { + return base.Channel.GetVideoEncoderConfigurationsAsync(request); + } + + public System.Threading.Tasks.Task GetVideoEncoderConfigurationsAsync() + { + Onvif.Media.GetVideoEncoderConfigurationsRequest inValue = new Onvif.Media.GetVideoEncoderConfigurationsRequest(); + return ((Onvif.Media.Media)(this)).GetVideoEncoderConfigurationsAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetAudioSourceConfigurationsAsync(Onvif.Media.GetAudioSourceConfigurationsRequest request) + { + return base.Channel.GetAudioSourceConfigurationsAsync(request); + } + + public System.Threading.Tasks.Task GetAudioSourceConfigurationsAsync() + { + Onvif.Media.GetAudioSourceConfigurationsRequest inValue = new Onvif.Media.GetAudioSourceConfigurationsRequest(); + return ((Onvif.Media.Media)(this)).GetAudioSourceConfigurationsAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetAudioEncoderConfigurationsAsync(Onvif.Media.GetAudioEncoderConfigurationsRequest request) + { + return base.Channel.GetAudioEncoderConfigurationsAsync(request); + } + + public System.Threading.Tasks.Task GetAudioEncoderConfigurationsAsync() + { + Onvif.Media.GetAudioEncoderConfigurationsRequest inValue = new Onvif.Media.GetAudioEncoderConfigurationsRequest(); + return ((Onvif.Media.Media)(this)).GetAudioEncoderConfigurationsAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetVideoAnalyticsConfigurationsAsync(Onvif.Media.GetVideoAnalyticsConfigurationsRequest request) + { + return base.Channel.GetVideoAnalyticsConfigurationsAsync(request); + } + + public System.Threading.Tasks.Task GetVideoAnalyticsConfigurationsAsync() + { + Onvif.Media.GetVideoAnalyticsConfigurationsRequest inValue = new Onvif.Media.GetVideoAnalyticsConfigurationsRequest(); + return ((Onvif.Media.Media)(this)).GetVideoAnalyticsConfigurationsAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetMetadataConfigurationsAsync(Onvif.Media.GetMetadataConfigurationsRequest request) + { + return base.Channel.GetMetadataConfigurationsAsync(request); + } + + public System.Threading.Tasks.Task GetMetadataConfigurationsAsync() + { + Onvif.Media.GetMetadataConfigurationsRequest inValue = new Onvif.Media.GetMetadataConfigurationsRequest(); + return ((Onvif.Media.Media)(this)).GetMetadataConfigurationsAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetAudioOutputConfigurationsAsync(Onvif.Media.GetAudioOutputConfigurationsRequest request) + { + return base.Channel.GetAudioOutputConfigurationsAsync(request); + } + + public System.Threading.Tasks.Task GetAudioOutputConfigurationsAsync() + { + Onvif.Media.GetAudioOutputConfigurationsRequest inValue = new Onvif.Media.GetAudioOutputConfigurationsRequest(); + return ((Onvif.Media.Media)(this)).GetAudioOutputConfigurationsAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetAudioDecoderConfigurationsAsync(Onvif.Media.GetAudioDecoderConfigurationsRequest request) + { + return base.Channel.GetAudioDecoderConfigurationsAsync(request); + } + + public System.Threading.Tasks.Task GetAudioDecoderConfigurationsAsync() + { + Onvif.Media.GetAudioDecoderConfigurationsRequest inValue = new Onvif.Media.GetAudioDecoderConfigurationsRequest(); + return ((Onvif.Media.Media)(this)).GetAudioDecoderConfigurationsAsync(inValue); + } + + public System.Threading.Tasks.Task GetVideoSourceConfigurationAsync(string ConfigurationToken) + { + return base.Channel.GetVideoSourceConfigurationAsync(ConfigurationToken); + } + + public System.Threading.Tasks.Task GetVideoEncoderConfigurationAsync(string ConfigurationToken) + { + return base.Channel.GetVideoEncoderConfigurationAsync(ConfigurationToken); + } + + public System.Threading.Tasks.Task GetAudioSourceConfigurationAsync(string ConfigurationToken) + { + return base.Channel.GetAudioSourceConfigurationAsync(ConfigurationToken); + } + + public System.Threading.Tasks.Task GetAudioEncoderConfigurationAsync(string ConfigurationToken) + { + return base.Channel.GetAudioEncoderConfigurationAsync(ConfigurationToken); + } + + public System.Threading.Tasks.Task GetVideoAnalyticsConfigurationAsync(string ConfigurationToken) + { + return base.Channel.GetVideoAnalyticsConfigurationAsync(ConfigurationToken); + } + + public System.Threading.Tasks.Task GetMetadataConfigurationAsync(string ConfigurationToken) + { + return base.Channel.GetMetadataConfigurationAsync(ConfigurationToken); + } + + public System.Threading.Tasks.Task GetAudioOutputConfigurationAsync(string ConfigurationToken) + { + return base.Channel.GetAudioOutputConfigurationAsync(ConfigurationToken); + } + + public System.Threading.Tasks.Task GetAudioDecoderConfigurationAsync(string ConfigurationToken) + { + return base.Channel.GetAudioDecoderConfigurationAsync(ConfigurationToken); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetCompatibleVideoEncoderConfigurationsAsync(Onvif.Media.GetCompatibleVideoEncoderConfigurationsRequest request) + { + return base.Channel.GetCompatibleVideoEncoderConfigurationsAsync(request); + } + + public System.Threading.Tasks.Task GetCompatibleVideoEncoderConfigurationsAsync(string ProfileToken) + { + Onvif.Media.GetCompatibleVideoEncoderConfigurationsRequest inValue = new Onvif.Media.GetCompatibleVideoEncoderConfigurationsRequest(); + inValue.ProfileToken = ProfileToken; + return ((Onvif.Media.Media)(this)).GetCompatibleVideoEncoderConfigurationsAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetCompatibleVideoSourceConfigurationsAsync(Onvif.Media.GetCompatibleVideoSourceConfigurationsRequest request) + { + return base.Channel.GetCompatibleVideoSourceConfigurationsAsync(request); + } + + public System.Threading.Tasks.Task GetCompatibleVideoSourceConfigurationsAsync(string ProfileToken) + { + Onvif.Media.GetCompatibleVideoSourceConfigurationsRequest inValue = new Onvif.Media.GetCompatibleVideoSourceConfigurationsRequest(); + inValue.ProfileToken = ProfileToken; + return ((Onvif.Media.Media)(this)).GetCompatibleVideoSourceConfigurationsAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetCompatibleAudioEncoderConfigurationsAsync(Onvif.Media.GetCompatibleAudioEncoderConfigurationsRequest request) + { + return base.Channel.GetCompatibleAudioEncoderConfigurationsAsync(request); + } + + public System.Threading.Tasks.Task GetCompatibleAudioEncoderConfigurationsAsync(string ProfileToken) + { + Onvif.Media.GetCompatibleAudioEncoderConfigurationsRequest inValue = new Onvif.Media.GetCompatibleAudioEncoderConfigurationsRequest(); + inValue.ProfileToken = ProfileToken; + return ((Onvif.Media.Media)(this)).GetCompatibleAudioEncoderConfigurationsAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetCompatibleAudioSourceConfigurationsAsync(Onvif.Media.GetCompatibleAudioSourceConfigurationsRequest request) + { + return base.Channel.GetCompatibleAudioSourceConfigurationsAsync(request); + } + + public System.Threading.Tasks.Task GetCompatibleAudioSourceConfigurationsAsync(string ProfileToken) + { + Onvif.Media.GetCompatibleAudioSourceConfigurationsRequest inValue = new Onvif.Media.GetCompatibleAudioSourceConfigurationsRequest(); + inValue.ProfileToken = ProfileToken; + return ((Onvif.Media.Media)(this)).GetCompatibleAudioSourceConfigurationsAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetCompatibleVideoAnalyticsConfigurationsAsync(Onvif.Media.GetCompatibleVideoAnalyticsConfigurationsRequest request) + { + return base.Channel.GetCompatibleVideoAnalyticsConfigurationsAsync(request); + } + + public System.Threading.Tasks.Task GetCompatibleVideoAnalyticsConfigurationsAsync(string ProfileToken) + { + Onvif.Media.GetCompatibleVideoAnalyticsConfigurationsRequest inValue = new Onvif.Media.GetCompatibleVideoAnalyticsConfigurationsRequest(); + inValue.ProfileToken = ProfileToken; + return ((Onvif.Media.Media)(this)).GetCompatibleVideoAnalyticsConfigurationsAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetCompatibleMetadataConfigurationsAsync(Onvif.Media.GetCompatibleMetadataConfigurationsRequest request) + { + return base.Channel.GetCompatibleMetadataConfigurationsAsync(request); + } + + public System.Threading.Tasks.Task GetCompatibleMetadataConfigurationsAsync(string ProfileToken) + { + Onvif.Media.GetCompatibleMetadataConfigurationsRequest inValue = new Onvif.Media.GetCompatibleMetadataConfigurationsRequest(); + inValue.ProfileToken = ProfileToken; + return ((Onvif.Media.Media)(this)).GetCompatibleMetadataConfigurationsAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetCompatibleAudioOutputConfigurationsAsync(Onvif.Media.GetCompatibleAudioOutputConfigurationsRequest request) + { + return base.Channel.GetCompatibleAudioOutputConfigurationsAsync(request); + } + + public System.Threading.Tasks.Task GetCompatibleAudioOutputConfigurationsAsync(string ProfileToken) + { + Onvif.Media.GetCompatibleAudioOutputConfigurationsRequest inValue = new Onvif.Media.GetCompatibleAudioOutputConfigurationsRequest(); + inValue.ProfileToken = ProfileToken; + return ((Onvif.Media.Media)(this)).GetCompatibleAudioOutputConfigurationsAsync(inValue); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetCompatibleAudioDecoderConfigurationsAsync(Onvif.Media.GetCompatibleAudioDecoderConfigurationsRequest request) + { + return base.Channel.GetCompatibleAudioDecoderConfigurationsAsync(request); + } + + public System.Threading.Tasks.Task GetCompatibleAudioDecoderConfigurationsAsync(string ProfileToken) + { + Onvif.Media.GetCompatibleAudioDecoderConfigurationsRequest inValue = new Onvif.Media.GetCompatibleAudioDecoderConfigurationsRequest(); + inValue.ProfileToken = ProfileToken; + return ((Onvif.Media.Media)(this)).GetCompatibleAudioDecoderConfigurationsAsync(inValue); + } + + public System.Threading.Tasks.Task SetVideoSourceConfigurationAsync(VideoSourceConfiguration Configuration, bool ForcePersistence) + { + return base.Channel.SetVideoSourceConfigurationAsync(Configuration, ForcePersistence); + } + + public System.Threading.Tasks.Task SetVideoEncoderConfigurationAsync(VideoEncoderConfiguration Configuration, bool ForcePersistence) + { + return base.Channel.SetVideoEncoderConfigurationAsync(Configuration, ForcePersistence); + } + + public System.Threading.Tasks.Task SetAudioSourceConfigurationAsync(AudioSourceConfiguration Configuration, bool ForcePersistence) + { + return base.Channel.SetAudioSourceConfigurationAsync(Configuration, ForcePersistence); + } + + public System.Threading.Tasks.Task SetAudioEncoderConfigurationAsync(AudioEncoderConfiguration Configuration, bool ForcePersistence) + { + return base.Channel.SetAudioEncoderConfigurationAsync(Configuration, ForcePersistence); + } + + public System.Threading.Tasks.Task SetVideoAnalyticsConfigurationAsync(VideoAnalyticsConfiguration Configuration, bool ForcePersistence) + { + return base.Channel.SetVideoAnalyticsConfigurationAsync(Configuration, ForcePersistence); + } + + public System.Threading.Tasks.Task SetMetadataConfigurationAsync(MetadataConfiguration Configuration, bool ForcePersistence) + { + return base.Channel.SetMetadataConfigurationAsync(Configuration, ForcePersistence); + } + + public System.Threading.Tasks.Task SetAudioOutputConfigurationAsync(AudioOutputConfiguration Configuration, bool ForcePersistence) + { + return base.Channel.SetAudioOutputConfigurationAsync(Configuration, ForcePersistence); + } + + public System.Threading.Tasks.Task SetAudioDecoderConfigurationAsync(AudioDecoderConfiguration Configuration, bool ForcePersistence) + { + return base.Channel.SetAudioDecoderConfigurationAsync(Configuration, ForcePersistence); + } + + public System.Threading.Tasks.Task GetVideoSourceConfigurationOptionsAsync(string ConfigurationToken, string ProfileToken) + { + return base.Channel.GetVideoSourceConfigurationOptionsAsync(ConfigurationToken, ProfileToken); + } + + public System.Threading.Tasks.Task GetVideoEncoderConfigurationOptionsAsync(string ConfigurationToken, string ProfileToken) + { + return base.Channel.GetVideoEncoderConfigurationOptionsAsync(ConfigurationToken, ProfileToken); + } + + public System.Threading.Tasks.Task GetAudioSourceConfigurationOptionsAsync(string ConfigurationToken, string ProfileToken) + { + return base.Channel.GetAudioSourceConfigurationOptionsAsync(ConfigurationToken, ProfileToken); + } + + public System.Threading.Tasks.Task GetAudioEncoderConfigurationOptionsAsync(string ConfigurationToken, string ProfileToken) + { + return base.Channel.GetAudioEncoderConfigurationOptionsAsync(ConfigurationToken, ProfileToken); + } + + public System.Threading.Tasks.Task GetMetadataConfigurationOptionsAsync(string ConfigurationToken, string ProfileToken) + { + return base.Channel.GetMetadataConfigurationOptionsAsync(ConfigurationToken, ProfileToken); + } + + public System.Threading.Tasks.Task GetAudioOutputConfigurationOptionsAsync(string ConfigurationToken, string ProfileToken) + { + return base.Channel.GetAudioOutputConfigurationOptionsAsync(ConfigurationToken, ProfileToken); + } + + public System.Threading.Tasks.Task GetAudioDecoderConfigurationOptionsAsync(string ConfigurationToken, string ProfileToken) + { + return base.Channel.GetAudioDecoderConfigurationOptionsAsync(ConfigurationToken, ProfileToken); + } + + public System.Threading.Tasks.Task GetGuaranteedNumberOfVideoEncoderInstancesAsync(Onvif.Media.GetGuaranteedNumberOfVideoEncoderInstancesRequest request) + { + return base.Channel.GetGuaranteedNumberOfVideoEncoderInstancesAsync(request); + } + + public System.Threading.Tasks.Task GetStreamUriAsync(StreamSetup StreamSetup, string ProfileToken) + { + return base.Channel.GetStreamUriAsync(StreamSetup, ProfileToken); + } + + public System.Threading.Tasks.Task StartMulticastStreamingAsync(string ProfileToken) + { + return base.Channel.StartMulticastStreamingAsync(ProfileToken); + } + + public System.Threading.Tasks.Task StopMulticastStreamingAsync(string ProfileToken) + { + return base.Channel.StopMulticastStreamingAsync(ProfileToken); + } + + public System.Threading.Tasks.Task SetSynchronizationPointAsync(string ProfileToken) + { + return base.Channel.SetSynchronizationPointAsync(ProfileToken); + } + + public System.Threading.Tasks.Task GetSnapshotUriAsync(string ProfileToken) + { + return base.Channel.GetSnapshotUriAsync(ProfileToken); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetVideoSourceModesAsync(Onvif.Media.GetVideoSourceModesRequest request) + { + return base.Channel.GetVideoSourceModesAsync(request); + } + + public System.Threading.Tasks.Task GetVideoSourceModesAsync(string VideoSourceToken) + { + Onvif.Media.GetVideoSourceModesRequest inValue = new Onvif.Media.GetVideoSourceModesRequest(); + inValue.VideoSourceToken = VideoSourceToken; + return ((Onvif.Media.Media)(this)).GetVideoSourceModesAsync(inValue); + } + + public System.Threading.Tasks.Task SetVideoSourceModeAsync(string VideoSourceToken, string VideoSourceModeToken) + { + return base.Channel.SetVideoSourceModeAsync(VideoSourceToken, VideoSourceModeToken); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task Onvif.Media.Media.GetOSDsAsync(Onvif.Media.GetOSDsRequest request) + { + return base.Channel.GetOSDsAsync(request); + } + + public System.Threading.Tasks.Task GetOSDsAsync(string ConfigurationToken) + { + Onvif.Media.GetOSDsRequest inValue = new Onvif.Media.GetOSDsRequest(); + inValue.ConfigurationToken = ConfigurationToken; + return ((Onvif.Media.Media)(this)).GetOSDsAsync(inValue); + } + + public System.Threading.Tasks.Task GetOSDAsync(Onvif.Media.GetOSDRequest request) + { + return base.Channel.GetOSDAsync(request); + } + + public System.Threading.Tasks.Task GetOSDOptionsAsync(Onvif.Media.GetOSDOptionsRequest request) + { + return base.Channel.GetOSDOptionsAsync(request); + } + + public System.Threading.Tasks.Task SetOSDAsync(Onvif.Media.SetOSDRequest request) + { + return base.Channel.SetOSDAsync(request); + } + + public System.Threading.Tasks.Task CreateOSDAsync(Onvif.Media.CreateOSDRequest request) + { + return base.Channel.CreateOSDAsync(request); + } + + public System.Threading.Tasks.Task DeleteOSDAsync(Onvif.Media.DeleteOSDRequest request) + { + return base.Channel.DeleteOSDAsync(request); + } + + public virtual System.Threading.Tasks.Task OpenAsync() + { + return System.Threading.Tasks.Task.Factory.FromAsync(((System.ServiceModel.ICommunicationObject)(this)).BeginOpen(null, null), new System.Action(((System.ServiceModel.ICommunicationObject)(this)).EndOpen)); + } + + public virtual System.Threading.Tasks.Task CloseAsync() + { + return System.Threading.Tasks.Task.Factory.FromAsync(((System.ServiceModel.ICommunicationObject)(this)).BeginClose(null, null), new System.Action(((System.ServiceModel.ICommunicationObject)(this)).EndClose)); + } + } +} \ No newline at end of file diff --git a/公共库/EC.Onvif/OnvifClient.cs b/公共库/EC.Onvif/OnvifClient.cs new file mode 100644 index 0000000..46edfc4 --- /dev/null +++ b/公共库/EC.Onvif/OnvifClient.cs @@ -0,0 +1,204 @@ +using EC.Onvif.Common; +using EC.Onvif.Device; +using EC.Onvif.Imaging; +using EC.Onvif.Media; +using EC.Onvif.PTZ; +using System; +using Capabilities = EC.Onvif.Common.Capabilities; + +namespace EC.Onvif +{ + public class OnvifClient + { + private string Hostname { get; set; } + + private string Username { get; set; } + + private string Password { get; set; } + + private DeviceClient device { get; set; } + + private MediaClient media { get; set; } + + private PTZClient ptz { get; set; } + + private ImagingClient imaging { get; set; } + + private Capabilities caps { get; set; } + + private string profileToken { get; set; } + + public static float atomDist { get; set; } = 0.01f; + + public static float atomSpeed { get; set; } = 0.1f; + + public OnvifClient(string hostname, string username, string password) + { + Hostname = hostname; + Username = username; + Password = password; + InitAsync(); + + } + + public async void InitAsync() + { + try + { + device = await OnvifClientFactory.CreateDeviceClientAsync(Hostname, Username, Password); + } + catch (Exception e) + { + Console.WriteLine($"Exception Message : {e.Message}"); + return; + } + + media = await OnvifClientFactory.CreateMediaClientAsync(Hostname, Username, Password); + ptz = await OnvifClientFactory.CreatePTZClientAsync(Hostname, Username, Password); + var profiles = await media.GetProfilesAsync(); + foreach (var profile in profiles.Profiles) + { + if (string.IsNullOrEmpty(profileToken)) + { + profileToken = profile.token; + break; + } + } + + caps = (await device.GetCapabilitiesAsync(new CapabilityCategory[] { CapabilityCategory.All })).Capabilities; + Console.WriteLine("Capabilities"); + Console.WriteLine("\tDevice: " + caps.Device.XAddr); + Console.WriteLine("\tEvents: " + caps.Events.XAddr); + Console.WriteLine("\tImaging: " + caps.Imaging.XAddr); + Console.WriteLine("\tMedia: " + caps.Media.XAddr); + Console.WriteLine("\tPTZ: " + caps.PTZ.XAddr); + } + + #region DeviceClient + + public bool IsDeviceContected() + { + return device != null; + } + + #endregion DeviceClient + + #region MediaClient + + public bool IsMediaContected() + { + var r = IsDeviceContected(); + return r; + } + + #endregion MediaClient + + #region PTZClient + + public bool IsPTZContected() + { + var r = IsDeviceContected() && (ptz != null) && !string.IsNullOrEmpty(profileToken); + return r; + } + + public void AbsoluteMoveAsync(float ptx, float pty, float zx) + { + if (!IsPTZContected()) + return; + ptz.AbsoluteMoveAsync(profileToken, new PTZVector + { + PanTilt = new Vector2D + { + x = ptx, + y = pty + }, + Zoom = new Vector1D + { + x = zx + } + }, null); + //new PTZSpeed + //{ + // PanTilt = new Vector2D + // { + // x = 0.1f, + // y = 0.1f + // }, + // Zoom = new Vector1D + // { + // x = 0.1f + // } + //} + } + + public void RelativeMoveAsync(float ptx, float pty, float zx) + { + if (!IsPTZContected()) + return; + ptz.RelativeMoveAsync(profileToken, new PTZVector + { + PanTilt = new Vector2D + { + x = ptx, + y = pty + }, + Zoom = new Vector1D + { + x = zx + } + }, null); + } + + /// + /// + /// + /// 0~100 + /// 0~100 + /// 0~100 + public void ContinuousMoveAsync(float ptx, float pty, float zx) + { + if (!IsPTZContected()) + return; + + ptz.ContinuousMoveAsync(profileToken, new PTZSpeed + { + PanTilt = new Vector2D + { + x = ptx, + y = pty + }, + Zoom = new Vector1D + { + x = zx + } + }, null); + } + + public void StopAsync() + { + if (!IsPTZContected()) + return; + ptz.StopAsync(profileToken, true, true); + } + + public PTZStatus GetStatusAsync() + { + if (!IsPTZContected()) + return null; + var ptz_status = ptz.GetStatusAsync(profileToken).Result; + return ptz_status; + } + + #endregion PTZClient + + #region ImagingClient + + public bool IsImagingContected() + { + var r = IsDeviceContected(); + return r; + } + + #endregion ImagingClient + } +} \ No newline at end of file diff --git a/公共库/EC.Onvif/OnvifClientFactory.cs b/公共库/EC.Onvif/OnvifClientFactory.cs new file mode 100644 index 0000000..147b7ed --- /dev/null +++ b/公共库/EC.Onvif/OnvifClientFactory.cs @@ -0,0 +1,117 @@ +using System; +using System.ServiceModel; +using System.ServiceModel.Channels; +using System.Threading.Tasks; +using EC.Onvif.Common; +using EC.Onvif.Device; +using EC.Onvif.Media; +using EC.Onvif.Imaging; +using EC.Onvif.PTZ; +using EC.Onvif.Security; + +namespace EC.Onvif +{ + public static class OnvifClientFactory + { + static Binding CreateBinding() + { + var binding = new CustomBinding(); + var textBindingElement = new TextMessageEncodingBindingElement + { + MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap12, AddressingVersion.None) + }; + var httpBindingElement = new HttpTransportBindingElement + { + AllowCookies = true, + MaxBufferSize = int.MaxValue, + MaxReceivedMessageSize = int.MaxValue + }; + + binding.Elements.Add(textBindingElement); + binding.Elements.Add(httpBindingElement); + + return binding; + } + + public static async Task CreateDeviceClientAsync(string host, string username, string password) + { + return await CreateDeviceClientAsync(new Uri($"http://{host}/onvif/device_service"), username, password); + } + + public static async Task CreateDeviceClientAsync(Uri uri, string username, string password) + { + var binding = CreateBinding(); + var endpoint = new EndpointAddress(uri); + var device = new DeviceClient(binding, endpoint); + var time_shift = await GetDeviceTimeShift(device); + + device = new DeviceClient(binding, endpoint); + device.ChannelFactory.Endpoint.EndpointBehaviors.Clear(); + device.ChannelFactory.Endpoint.EndpointBehaviors.Add(new SoapSecurityHeaderBehavior(username, password, time_shift)); + + // Connectivity Test + await device.OpenAsync(); + + return device; + } + + public static async Task CreateMediaClientAsync(string host, string username, string password) + { + var binding = CreateBinding(); + var device = await CreateDeviceClientAsync(host, username, password); + var caps = await device.GetCapabilitiesAsync(new CapabilityCategory[] { CapabilityCategory.Media }); + var media = new MediaClient(binding, new EndpointAddress(new Uri(caps.Capabilities.Media.XAddr))); + + var time_shift = await GetDeviceTimeShift(device); + media.ChannelFactory.Endpoint.EndpointBehaviors.Clear(); + media.ChannelFactory.Endpoint.EndpointBehaviors.Add(new SoapSecurityHeaderBehavior(username, password, time_shift)); + + // Connectivity Test + await media.OpenAsync(); + + return media; + } + + public static async Task CreatePTZClientAsync(string host, string username, string password) + { + var binding = CreateBinding(); + var device = await CreateDeviceClientAsync(host, username, password); + var caps = await device.GetCapabilitiesAsync(new CapabilityCategory[] { CapabilityCategory.PTZ }); + var ptz = new PTZClient(binding, new EndpointAddress(new Uri(caps.Capabilities.PTZ.XAddr))); + + var time_shift = await GetDeviceTimeShift(device); + ptz.ChannelFactory.Endpoint.EndpointBehaviors.Clear(); + ptz.ChannelFactory.Endpoint.EndpointBehaviors.Add(new SoapSecurityHeaderBehavior(username, password, time_shift)); + + // Connectivity Test + await ptz.OpenAsync(); + + return ptz; + } + + public static async Task CreateImagingClientAsync(string host, string username, string password) + { + var binding = CreateBinding(); + var device = await CreateDeviceClientAsync(host, username, password); + var caps = await device.GetCapabilitiesAsync(new CapabilityCategory[] { CapabilityCategory.Imaging }); + var imaging = new ImagingClient(binding, new EndpointAddress(new Uri(caps.Capabilities.Imaging.XAddr))); + + var time_shift = await GetDeviceTimeShift(device); + imaging.ChannelFactory.Endpoint.EndpointBehaviors.Clear(); + imaging.ChannelFactory.Endpoint.EndpointBehaviors.Add(new SoapSecurityHeaderBehavior(username, password, time_shift)); + + // Connectivity Test + await imaging.OpenAsync(); + + return imaging; + } + + static async Task GetDeviceTimeShift(DeviceClient device) + { + var utc = (await device.GetSystemDateAndTimeAsync()).UTCDateTime; + var dt = new System.DateTime(utc.Date.Year, utc.Date.Month, utc.Date.Day, + utc.Time.Hour, utc.Time.Minute, utc.Time.Second); + return dt - System.DateTime.UtcNow; + } + } +} diff --git a/公共库/EC.Onvif/OnvifUtil.cs b/公共库/EC.Onvif/OnvifUtil.cs new file mode 100644 index 0000000..e2baac5 --- /dev/null +++ b/公共库/EC.Onvif/OnvifUtil.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EC.Onvif +{ + public class OnvifUtil + { + public OnvifUtil() + { + } + } +} diff --git a/公共库/EC.Onvif/PTZ/DataTypes.cs b/公共库/EC.Onvif/PTZ/DataTypes.cs new file mode 100644 index 0000000..508e961 --- /dev/null +++ b/公共库/EC.Onvif/PTZ/DataTypes.cs @@ -0,0 +1,186 @@ +namespace EC.Onvif.PTZ +{ + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.onvif.org/ver20/ptz/wsdl")] + public partial class Capabilities + { + + private System.Xml.Linq.XElement[] anyField; + + private bool eFlipField; + + private bool eFlipFieldSpecified; + + private bool reverseField; + + private bool reverseFieldSpecified; + + private bool getCompatibleConfigurationsField; + + private bool getCompatibleConfigurationsFieldSpecified; + + private bool moveStatusField; + + private bool moveStatusFieldSpecified; + + private bool statusPositionField; + + private bool statusPositionFieldSpecified; + + /// + [System.Xml.Serialization.XmlAnyElementAttribute(Order = 0)] + public System.Xml.Linq.XElement[] Any + { + get + { + return this.anyField; + } + set + { + this.anyField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool EFlip + { + get + { + return this.eFlipField; + } + set + { + this.eFlipField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool EFlipSpecified + { + get + { + return this.eFlipFieldSpecified; + } + set + { + this.eFlipFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool Reverse + { + get + { + return this.reverseField; + } + set + { + this.reverseField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool ReverseSpecified + { + get + { + return this.reverseFieldSpecified; + } + set + { + this.reverseFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool GetCompatibleConfigurations + { + get + { + return this.getCompatibleConfigurationsField; + } + set + { + this.getCompatibleConfigurationsField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool GetCompatibleConfigurationsSpecified + { + get + { + return this.getCompatibleConfigurationsFieldSpecified; + } + set + { + this.getCompatibleConfigurationsFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool MoveStatus + { + get + { + return this.moveStatusField; + } + set + { + this.moveStatusField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool MoveStatusSpecified + { + get + { + return this.moveStatusFieldSpecified; + } + set + { + this.moveStatusFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public bool StatusPosition + { + get + { + return this.statusPositionField; + } + set + { + this.statusPositionField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool StatusPositionSpecified + { + get + { + return this.statusPositionFieldSpecified; + } + set + { + this.statusPositionFieldSpecified = value; + } + } + } +} \ No newline at end of file diff --git a/公共库/EC.Onvif/PTZ/PTZClient.cs b/公共库/EC.Onvif/PTZ/PTZClient.cs new file mode 100644 index 0000000..303f9a3 --- /dev/null +++ b/公共库/EC.Onvif/PTZ/PTZClient.cs @@ -0,0 +1,678 @@ +using EC.Onvif.Common; + +namespace EC.Onvif.PTZ +{ + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.ServiceContractAttribute(Namespace = "http://www.onvif.org/ver20/ptz/wsdl", ConfigurationName = "EC.Onvif.PTZ.PTZ")] + public interface PTZ + { + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/GetServiceCapabilities", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Capabilities")] + System.Threading.Tasks.Task GetServiceCapabilitiesAsync(); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/GetNodes", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetNodesAsync(GetNodesRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/GetNode", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "PTZNode")] + System.Threading.Tasks.Task GetNodeAsync(string NodeToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/GetConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "PTZConfiguration")] + System.Threading.Tasks.Task GetConfigurationAsync(string PTZConfigurationToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/GetConfigurations", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetConfigurationsAsync(GetConfigurationsRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/SetConfiguration", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetConfigurationAsync(PTZConfiguration PTZConfiguration, bool ForcePersistence); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/GetConfigurationOptions", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "PTZConfigurationOptions")] + System.Threading.Tasks.Task GetConfigurationOptionsAsync(string ConfigurationToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/SendAuxiliaryCommand", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "AuxiliaryResponse")] + System.Threading.Tasks.Task SendAuxiliaryCommandAsync(string ProfileToken, string AuxiliaryData); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/GetPresets", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetPresetsAsync(GetPresetsRequest request); + + // CODEGEN: Generating message contract since the operation has multiple return values. + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/SetPreset", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetPresetAsync(SetPresetRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/RemovePreset", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task RemovePresetAsync(string ProfileToken, string PresetToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/GotoPreset", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GotoPresetAsync(string ProfileToken, string PresetToken, PTZSpeed Speed); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/GotoHomePosition", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GotoHomePositionAsync(string ProfileToken, PTZSpeed Speed); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/SetHomePosition", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task SetHomePositionAsync(string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/ContinuousMove", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task ContinuousMoveAsync(ContinuousMoveRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/RelativeMove", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task RelativeMoveAsync(string ProfileToken, PTZVector Translation, PTZSpeed Speed); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/GetStatus", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "PTZStatus")] + System.Threading.Tasks.Task GetStatusAsync(string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/AbsoluteMove", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task AbsoluteMoveAsync(string ProfileToken, PTZVector Position, PTZSpeed Speed); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/GeoMove", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GeoMoveAsync(string ProfileToken, GeoLocation Target, PTZSpeed Speed, float AreaHeight, float AreaWidth); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/Stop", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task StopAsync(string ProfileToken, bool PanTilt, bool Zoom); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/GetPresetTours", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetPresetToursAsync(GetPresetToursRequest request); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/GetPresetTour", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "PresetTour")] + System.Threading.Tasks.Task GetPresetTourAsync(string ProfileToken, string PresetTourToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/GetPresetTourOptions", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "Options")] + System.Threading.Tasks.Task GetPresetTourOptionsAsync(string ProfileToken, string PresetTourToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/CreatePresetTour", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + [return: System.ServiceModel.MessageParameterAttribute(Name = "PresetTourToken")] + System.Threading.Tasks.Task CreatePresetTourAsync(string ProfileToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/ModifyPresetTour", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task ModifyPresetTourAsync(string ProfileToken, PresetTour PresetTour); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/OperatePresetTour", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task OperatePresetTourAsync(string ProfileToken, string PresetTourToken, PTZPresetTourOperation Operation); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/RemovePresetTour", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task RemovePresetTourAsync(string ProfileToken, string PresetTourToken); + + [System.ServiceModel.OperationContractAttribute(Action = "http://www.onvif.org/ver20/ptz/wsdl/GetCompatibleConfigurations", ReplyAction = "*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ConfigurationEntity))] + [System.ServiceModel.ServiceKnownTypeAttribute(typeof(DeviceEntity))] + System.Threading.Tasks.Task GetCompatibleConfigurationsAsync(GetCompatibleConfigurationsRequest request); + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetNodes", WrapperNamespace = "http://www.onvif.org/ver20/ptz/wsdl", IsWrapped = true)] + public partial class GetNodesRequest + { + + public GetNodesRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetNodesResponse", WrapperNamespace = "http://www.onvif.org/ver20/ptz/wsdl", IsWrapped = true)] + public partial class GetNodesResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver20/ptz/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("PTZNode")] + public PTZNode[] PTZNode; + + public GetNodesResponse() + { + } + + public GetNodesResponse(PTZNode[] PTZNode) + { + this.PTZNode = PTZNode; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetConfigurations", WrapperNamespace = "http://www.onvif.org/ver20/ptz/wsdl", IsWrapped = true)] + public partial class GetConfigurationsRequest + { + + public GetConfigurationsRequest() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetConfigurationsResponse", WrapperNamespace = "http://www.onvif.org/ver20/ptz/wsdl", IsWrapped = true)] + public partial class GetConfigurationsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver20/ptz/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("PTZConfiguration")] + public PTZConfiguration[] PTZConfiguration; + + public GetConfigurationsResponse() + { + } + + public GetConfigurationsResponse(PTZConfiguration[] PTZConfiguration) + { + this.PTZConfiguration = PTZConfiguration; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetPresets", WrapperNamespace = "http://www.onvif.org/ver20/ptz/wsdl", IsWrapped = true)] + public partial class GetPresetsRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver20/ptz/wsdl", Order = 0)] + public string ProfileToken; + + public GetPresetsRequest() + { + } + + public GetPresetsRequest(string ProfileToken) + { + this.ProfileToken = ProfileToken; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetPresetsResponse", WrapperNamespace = "http://www.onvif.org/ver20/ptz/wsdl", IsWrapped = true)] + public partial class GetPresetsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver20/ptz/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("Preset")] + public PTZPreset[] Preset; + + public GetPresetsResponse() + { + } + + public GetPresetsResponse(PTZPreset[] Preset) + { + this.Preset = Preset; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetPreset", WrapperNamespace = "http://www.onvif.org/ver20/ptz/wsdl", IsWrapped = true)] + public partial class SetPresetRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver20/ptz/wsdl", Order = 0)] + public string ProfileToken; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver20/ptz/wsdl", Order = 1)] + public string PresetName; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver20/ptz/wsdl", Order = 2)] + public string PresetToken; + + public SetPresetRequest() + { + } + + public SetPresetRequest(string ProfileToken, string PresetName, string PresetToken) + { + this.ProfileToken = ProfileToken; + this.PresetName = PresetName; + this.PresetToken = PresetToken; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ServiceModel.MessageContractAttribute(WrapperName = "SetPresetResponse", WrapperNamespace = "http://www.onvif.org/ver20/ptz/wsdl", IsWrapped = true)] + public partial class SetPresetResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver20/ptz/wsdl", Order = 0)] + public string PresetToken; + + public SetPresetResponse() + { + } + + public SetPresetResponse(string PresetToken) + { + this.PresetToken = PresetToken; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "ContinuousMove", WrapperNamespace = "http://www.onvif.org/ver20/ptz/wsdl", IsWrapped = true)] + public partial class ContinuousMoveRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver20/ptz/wsdl", Order = 0)] + public string ProfileToken; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver20/ptz/wsdl", Order = 1)] + public PTZSpeed Velocity; + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver20/ptz/wsdl", Order = 2)] + [System.Xml.Serialization.XmlElementAttribute(DataType = "duration")] + public string Timeout; + + public ContinuousMoveRequest() + { + } + + public ContinuousMoveRequest(string ProfileToken, PTZSpeed Velocity, string Timeout) + { + this.ProfileToken = ProfileToken; + this.Velocity = Velocity; + this.Timeout = Timeout; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "ContinuousMoveResponse", WrapperNamespace = "http://www.onvif.org/ver20/ptz/wsdl", IsWrapped = true)] + public partial class ContinuousMoveResponse + { + + public ContinuousMoveResponse() + { + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetPresetTours", WrapperNamespace = "http://www.onvif.org/ver20/ptz/wsdl", IsWrapped = true)] + public partial class GetPresetToursRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver20/ptz/wsdl", Order = 0)] + public string ProfileToken; + + public GetPresetToursRequest() + { + } + + public GetPresetToursRequest(string ProfileToken) + { + this.ProfileToken = ProfileToken; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetPresetToursResponse", WrapperNamespace = "http://www.onvif.org/ver20/ptz/wsdl", IsWrapped = true)] + public partial class GetPresetToursResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver20/ptz/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("PresetTour")] + public PresetTour[] PresetTour; + + public GetPresetToursResponse() + { + } + + public GetPresetToursResponse(PresetTour[] PresetTour) + { + this.PresetTour = PresetTour; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCompatibleConfigurations", WrapperNamespace = "http://www.onvif.org/ver20/ptz/wsdl", IsWrapped = true)] + public partial class GetCompatibleConfigurationsRequest + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver20/ptz/wsdl", Order = 0)] + public string ProfileToken; + + public GetCompatibleConfigurationsRequest() + { + } + + public GetCompatibleConfigurationsRequest(string ProfileToken) + { + this.ProfileToken = ProfileToken; + } + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + [System.ServiceModel.MessageContractAttribute(WrapperName = "GetCompatibleConfigurationsResponse", WrapperNamespace = "http://www.onvif.org/ver20/ptz/wsdl", IsWrapped = true)] + public partial class GetCompatibleConfigurationsResponse + { + + [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://www.onvif.org/ver20/ptz/wsdl", Order = 0)] + [System.Xml.Serialization.XmlElementAttribute("PTZConfiguration")] + public PTZConfiguration[] PTZConfiguration; + + public GetCompatibleConfigurationsResponse() + { + } + + public GetCompatibleConfigurationsResponse(PTZConfiguration[] PTZConfiguration) + { + this.PTZConfiguration = PTZConfiguration; + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + public interface PTZChannel : PTZ, System.ServiceModel.IClientChannel + { + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "1.0.3")] + public partial class PTZClient : System.ServiceModel.ClientBase, PTZ + { + + internal PTZClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : + base(binding, remoteAddress) + { + } + + public System.Threading.Tasks.Task GetServiceCapabilitiesAsync() + { + return base.Channel.GetServiceCapabilitiesAsync(); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task PTZ.GetNodesAsync(GetNodesRequest request) + { + return base.Channel.GetNodesAsync(request); + } + + public System.Threading.Tasks.Task GetNodesAsync() + { + GetNodesRequest inValue = new GetNodesRequest(); + return ((PTZ)(this)).GetNodesAsync(inValue); + } + + public System.Threading.Tasks.Task GetNodeAsync(string NodeToken) + { + return base.Channel.GetNodeAsync(NodeToken); + } + + public System.Threading.Tasks.Task GetConfigurationAsync(string PTZConfigurationToken) + { + return base.Channel.GetConfigurationAsync(PTZConfigurationToken); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task PTZ.GetConfigurationsAsync(GetConfigurationsRequest request) + { + return base.Channel.GetConfigurationsAsync(request); + } + + public System.Threading.Tasks.Task GetConfigurationsAsync() + { + GetConfigurationsRequest inValue = new GetConfigurationsRequest(); + return ((PTZ)(this)).GetConfigurationsAsync(inValue); + } + + public System.Threading.Tasks.Task SetConfigurationAsync(PTZConfiguration PTZConfiguration, bool ForcePersistence) + { + return base.Channel.SetConfigurationAsync(PTZConfiguration, ForcePersistence); + } + + public System.Threading.Tasks.Task GetConfigurationOptionsAsync(string ConfigurationToken) + { + return base.Channel.GetConfigurationOptionsAsync(ConfigurationToken); + } + + public System.Threading.Tasks.Task SendAuxiliaryCommandAsync(string ProfileToken, string AuxiliaryData) + { + return base.Channel.SendAuxiliaryCommandAsync(ProfileToken, AuxiliaryData); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task PTZ.GetPresetsAsync(GetPresetsRequest request) + { + return base.Channel.GetPresetsAsync(request); + } + + public System.Threading.Tasks.Task GetPresetsAsync(string ProfileToken) + { + GetPresetsRequest inValue = new GetPresetsRequest(); + inValue.ProfileToken = ProfileToken; + return ((PTZ)(this)).GetPresetsAsync(inValue); + } + + public System.Threading.Tasks.Task SetPresetAsync(SetPresetRequest request) + { + return base.Channel.SetPresetAsync(request); + } + + public System.Threading.Tasks.Task RemovePresetAsync(string ProfileToken, string PresetToken) + { + return base.Channel.RemovePresetAsync(ProfileToken, PresetToken); + } + + public System.Threading.Tasks.Task GotoPresetAsync(string ProfileToken, string PresetToken, PTZSpeed Speed) + { + return base.Channel.GotoPresetAsync(ProfileToken, PresetToken, Speed); + } + + public System.Threading.Tasks.Task GotoHomePositionAsync(string ProfileToken, PTZSpeed Speed) + { + return base.Channel.GotoHomePositionAsync(ProfileToken, Speed); + } + + public System.Threading.Tasks.Task SetHomePositionAsync(string ProfileToken) + { + return base.Channel.SetHomePositionAsync(ProfileToken); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task PTZ.ContinuousMoveAsync(ContinuousMoveRequest request) + { + return base.Channel.ContinuousMoveAsync(request); + } + + public System.Threading.Tasks.Task ContinuousMoveAsync(string ProfileToken, PTZSpeed Velocity, string Timeout) + { + ContinuousMoveRequest inValue = new ContinuousMoveRequest(); + inValue.ProfileToken = ProfileToken; + inValue.Velocity = Velocity; + inValue.Timeout = Timeout; + return ((PTZ)(this)).ContinuousMoveAsync(inValue); + } + + public System.Threading.Tasks.Task RelativeMoveAsync(string ProfileToken, PTZVector Translation, PTZSpeed Speed) + { + return base.Channel.RelativeMoveAsync(ProfileToken, Translation, Speed); + } + + public System.Threading.Tasks.Task GetStatusAsync(string ProfileToken) + { + return base.Channel.GetStatusAsync(ProfileToken); + } + + public System.Threading.Tasks.Task AbsoluteMoveAsync(string ProfileToken, PTZVector Position, PTZSpeed Speed) + { + return base.Channel.AbsoluteMoveAsync(ProfileToken, Position, Speed); + } + + public System.Threading.Tasks.Task GeoMoveAsync(string ProfileToken, GeoLocation Target, PTZSpeed Speed, float AreaHeight, float AreaWidth) + { + return base.Channel.GeoMoveAsync(ProfileToken, Target, Speed, AreaHeight, AreaWidth); + } + + public System.Threading.Tasks.Task StopAsync(string ProfileToken, bool PanTilt, bool Zoom) + { + return base.Channel.StopAsync(ProfileToken, PanTilt, Zoom); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task PTZ.GetPresetToursAsync(GetPresetToursRequest request) + { + return base.Channel.GetPresetToursAsync(request); + } + + public System.Threading.Tasks.Task GetPresetToursAsync(string ProfileToken) + { + GetPresetToursRequest inValue = new GetPresetToursRequest(); + inValue.ProfileToken = ProfileToken; + return ((PTZ)(this)).GetPresetToursAsync(inValue); + } + + public System.Threading.Tasks.Task GetPresetTourAsync(string ProfileToken, string PresetTourToken) + { + return base.Channel.GetPresetTourAsync(ProfileToken, PresetTourToken); + } + + public System.Threading.Tasks.Task GetPresetTourOptionsAsync(string ProfileToken, string PresetTourToken) + { + return base.Channel.GetPresetTourOptionsAsync(ProfileToken, PresetTourToken); + } + + public System.Threading.Tasks.Task CreatePresetTourAsync(string ProfileToken) + { + return base.Channel.CreatePresetTourAsync(ProfileToken); + } + + public System.Threading.Tasks.Task ModifyPresetTourAsync(string ProfileToken, PresetTour PresetTour) + { + return base.Channel.ModifyPresetTourAsync(ProfileToken, PresetTour); + } + + public System.Threading.Tasks.Task OperatePresetTourAsync(string ProfileToken, string PresetTourToken, PTZPresetTourOperation Operation) + { + return base.Channel.OperatePresetTourAsync(ProfileToken, PresetTourToken, Operation); + } + + public System.Threading.Tasks.Task RemovePresetTourAsync(string ProfileToken, string PresetTourToken) + { + return base.Channel.RemovePresetTourAsync(ProfileToken, PresetTourToken); + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + System.Threading.Tasks.Task PTZ.GetCompatibleConfigurationsAsync(GetCompatibleConfigurationsRequest request) + { + return base.Channel.GetCompatibleConfigurationsAsync(request); + } + + public System.Threading.Tasks.Task GetCompatibleConfigurationsAsync(string ProfileToken) + { + GetCompatibleConfigurationsRequest inValue = new GetCompatibleConfigurationsRequest(); + inValue.ProfileToken = ProfileToken; + return ((PTZ)(this)).GetCompatibleConfigurationsAsync(inValue); + } + + public virtual System.Threading.Tasks.Task OpenAsync() + { + return System.Threading.Tasks.Task.Factory.FromAsync(((System.ServiceModel.ICommunicationObject)(this)).BeginOpen(null, null), new System.Action(((System.ServiceModel.ICommunicationObject)(this)).EndOpen)); + } + + public virtual System.Threading.Tasks.Task CloseAsync() + { + return System.Threading.Tasks.Task.Factory.FromAsync(((System.ServiceModel.ICommunicationObject)(this)).BeginClose(null, null), new System.Action(((System.ServiceModel.ICommunicationObject)(this)).EndClose)); + } + } +} diff --git a/公共库/EC.Onvif/RemoteDiscovery/Constants.cs b/公共库/EC.Onvif/RemoteDiscovery/Constants.cs new file mode 100644 index 0000000..43b111a --- /dev/null +++ b/公共库/EC.Onvif/RemoteDiscovery/Constants.cs @@ -0,0 +1,27 @@ +namespace EC.Onvif.RemoteDiscovery +{ + public static class Constants + { + public static string WS_MULTICAST_ADDRESS { get; } = "239.255.255.250"; + public static int WS_MULTICAST_PORT { get; } = 3702; + + public static string WS_PROBE_MESSAGE { get; } = + "" + + "" + + "" + + "uuid:{0}" + + "urn:schemas-xmlsoap-org:ws:2005:04:discovery " + + "http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe" + + "" + + "" + + "dn:NetworkVideoTransmitter" + + "" + + ""; + + public static string PATTERN { get; } = @"^((onvif[s]?|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?$"; + } +} \ No newline at end of file diff --git a/公共库/EC.Onvif/RemoteDiscovery/Discovery.cs b/公共库/EC.Onvif/RemoteDiscovery/Discovery.cs new file mode 100644 index 0000000..d625b0a --- /dev/null +++ b/公共库/EC.Onvif/RemoteDiscovery/Discovery.cs @@ -0,0 +1,187 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Net.NetworkInformation; +using System.Net.Sockets; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; +using System.Xml; +using System.Xml.Serialization; + +namespace EC.Onvif.RemoteDiscovery +{ + public class Discovery + { + #region Discover + + /// + /// Discover new onvif devices on the network + /// + /// A timeout in seconds to wait for onvif devices + /// A cancellation token + /// a list of + /// Use the + /// overload (with an action as a parameter) if you want to retrieve devices as they reply. + public async Task> DiscoverByAdapter(IEnumerable adapterList, + int timeout, CancellationToken cancellationToken = default) + { + List deviceList = new(); + await Discover(adapterList, d => deviceList.Add(d), timeout, cancellationToken); + deviceList.Sort((a, b) => CastIp(a.Address).CompareTo(CastIp(b.Address))); + return deviceList; + } + + /// + /// Discover new onvif devices on the network + /// + /// A timeout in seconds to wait for onvif devices + /// A cancellation token + /// a list of + /// Use the + /// overload (with an action as a parameter) if you want to retrieve devices as they reply. + public async Task> DiscoverAll(int timeout, CancellationToken cancellationToken = default) + { + IEnumerable adapterList = OnvifUdpClient.GetVaildNetworkAdapters(); + IEnumerable deviceList = await DiscoverByAdapter(adapterList, timeout, cancellationToken); + return deviceList; + } + + /// + /// Discover new onvif devices on the network passing a callback + /// to retrieve devices as they reply + /// + /// A method that is called each time a new device replies. + /// A timeout in seconds to wait for onvif devices + /// A cancellation token + /// The Task to be awaited + private async Task Discover(IEnumerable adapterList, Action onDeviceDiscovered, + int timeout, CancellationToken cancellationToken = default) + { + IEnumerable clientList = OnvifUdpClient.CreateClientList(adapterList); + if (!clientList.Any()) + { + throw new Exception("Missing valid NetworkInterfaces, UdpClients could not be created"); + } + Task[] discoveries = clientList.Select(client => Discover(client, onDeviceDiscovered, timeout, cancellationToken)).ToArray(); + await Task.WhenAll(discoveries); + } + + private async Task Discover(OnvifUdpClient client, Action onDeviceDiscovered, int timeout, CancellationToken cancellationToken = default) + { + Guid messageId = Guid.NewGuid(); + List responseList = new(); + CancellationTokenSource cts = new(TimeSpan.FromSeconds(timeout)); + + try + { + await OnvifUdpClient.SendProbe(client, messageId); + while (true) + { + if (client.IsClosed) { return; } + if (cts.IsCancellationRequested || cancellationToken.IsCancellationRequested) { break; } + try + { + UdpReceiveResult response = await client.ReceiveAsync().WithCancellation(cancellationToken).WithCancellation(cts.Token); + if (responseList.Exists(resp => resp.RemoteEndPoint.Address.Equals(response.RemoteEndPoint.Address))) { continue; } + responseList.Add(response); + DiscoveryDevice discoveredDevice = ProcessResponse(response, messageId); + if (discoveredDevice != null) + { + await Task.Run(() => onDeviceDiscovered(discoveredDevice), cancellationToken); + } + } + catch (OperationCanceledException) + { + // Either the user canceled the action or the timeout has fired + } + catch (Exception) + { + // we catch all exceptions ! + // Something might be bad in the response of a camera when call ReceiveAsync (BeginReceive in socket) fail + } + } + } + finally + { + client.Close(); + } + } + + #endregion Discover + + #region Discover Helper + + private DiscoveryDevice ProcessResponse(UdpReceiveResult response, Guid messageId) + { + if (response.Buffer == null) { return null; } + string strResponse = Encoding.UTF8.GetString(response.Buffer); + XmlProbeReponse xmlResponse = DeserializeResponse(strResponse); + if (xmlResponse.Header.RelatesTo.Contains(messageId.ToString()) + && xmlResponse.Body.ProbeMatches.Any() + && !string.IsNullOrEmpty(xmlResponse.Body.ProbeMatches[0].Scopes)) + { + return CreateDevice(xmlResponse.Body.ProbeMatches[0], response.RemoteEndPoint); + } + return null; + } + + private XmlProbeReponse DeserializeResponse(string xml) + { + XmlSerializer serializer = new(typeof(XmlProbeReponse)); + XmlReaderSettings settings = new(); + using StringReader textReader = new(xml); + using XmlReader xmlReader = XmlReader.Create(textReader, settings); + return (XmlProbeReponse)serializer.Deserialize(xmlReader); + } + + private DiscoveryDevice CreateDevice(ProbeMatch probeMatch, IPEndPoint remoteEndpoint) + { + string scopes = probeMatch.Scopes; + DiscoveryDevice discoveryDevice = new(); + discoveryDevice.Address = remoteEndpoint.Address.ToString(); + discoveryDevice.Model = Regex.Match(scopes, "(?<=hardware/).*?(?= )")?.Value; + discoveryDevice.Mfr = ParseMfrFromScopes(scopes); + discoveryDevice.XAdresses = ConvertToList(probeMatch.XAddrs); + discoveryDevice.Types = ConvertToList(probeMatch.Types); + return discoveryDevice; + } + + private string ParseMfrFromScopes(string scopes) + { + string name = Regex.Match(scopes, "(?<=name/).*?(?= )")?.Value; + if (!string.IsNullOrEmpty(name)) { return name; } + string mfr = Regex.Match(scopes, "(?<=mfr/).*?(?= )")?.Value; + if (!string.IsNullOrEmpty(mfr)) { return mfr; } + return string.Empty; + } + + private List ConvertToList(string spacedListString) + { + string[] strings = spacedListString.Split(null); + List list = new(); + strings.ToList().ForEach(str => list.Add(str.Trim())); + return list; + } + + private long CastIp(string ip) + { + byte[] addressBytes = IPAddress.Parse(ip).GetAddressBytes(); + if (addressBytes.Length != 4) + { + return 0; + throw new ArgumentException("Must be an IPv4 address"); + } + uint networkOrder = BitConverter.ToUInt32(addressBytes, 0); + return networkOrder; + //byte[] addressBytes = address.GetAddressBytes(); + //int networkOrder = BitConverter.ToInt32(addressBytes, 0); + //return (uint)IPAddress.NetworkToHostOrder(networkOrder); + } + + #endregion Discover Helper + } +} \ No newline at end of file diff --git a/公共库/EC.Onvif/RemoteDiscovery/DiscoveryDevice.cs b/公共库/EC.Onvif/RemoteDiscovery/DiscoveryDevice.cs new file mode 100644 index 0000000..bcf4d47 --- /dev/null +++ b/公共库/EC.Onvif/RemoteDiscovery/DiscoveryDevice.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; + +namespace EC.Onvif.RemoteDiscovery +{ + public class DiscoveryDevice + { + /// + /// The types of this onvif device. ex: NetworkVideoTransmitter + /// + public List Types { get; internal set; } + + /// + /// The XAddresses of this device, the url on which the device has the webservices. + /// Normally in the form of: http://{IP}:{Port}/onvif/device_service + /// + public List XAdresses { get; internal set; } + + /// + /// The onvif device model + /// + public string Model { get; internal set; } + + /// + /// The device manufacturer + /// + public string Mfr { get; internal set; } + + /// + /// The device IP address + /// + public string Address { get; internal set; } + } +} \ No newline at end of file diff --git a/公共库/EC.Onvif/RemoteDiscovery/ExtensionMethods.cs b/公共库/EC.Onvif/RemoteDiscovery/ExtensionMethods.cs new file mode 100644 index 0000000..5b6d3a5 --- /dev/null +++ b/公共库/EC.Onvif/RemoteDiscovery/ExtensionMethods.cs @@ -0,0 +1,25 @@ +using System; +using System.Threading; +using System.Threading.Tasks; + +namespace EC.Onvif.RemoteDiscovery +{ + internal static class ExtensionMethods + { + /// + /// Used to provide cancellation possibility to any Async Methods returning a Task + /// + internal static async Task WithCancellation(this Task task, CancellationToken cancellationToken) + { + var tcs = new TaskCompletionSource(); + using (cancellationToken.Register(s => ((TaskCompletionSource)s).TrySetResult(true), tcs)) + { + if (task != await Task.WhenAny(task, tcs.Task)) + { + throw new OperationCanceledException(cancellationToken); + } + } + return await task; + } + } +} \ No newline at end of file diff --git a/公共库/EC.Onvif/RemoteDiscovery/OnvifUdpClient.cs b/公共库/EC.Onvif/RemoteDiscovery/OnvifUdpClient.cs new file mode 100644 index 0000000..3036f95 --- /dev/null +++ b/公共库/EC.Onvif/RemoteDiscovery/OnvifUdpClient.cs @@ -0,0 +1,140 @@ +using System; +using System.Collections.Generic; +using System.Net; +using System.Net.NetworkInformation; +using System.Net.Sockets; +using System.Text; +using System.Threading.Tasks; + +namespace EC.Onvif.RemoteDiscovery +{ + public class OnvifUdpClient + { + private UdpClient client { get; set; } + + public bool IsClosed { get; set; } + + public OnvifUdpClient(IPEndPoint localpoint) + { + client = new UdpClient(localpoint) + { + EnableBroadcast = true + }; + } + + public async Task SendProbeAsync(Guid messageId, IPEndPoint endPoint) + { + byte[] datagram = NewProbeMessage(messageId); + return await client?.SendAsync(datagram, datagram.Length, endPoint); + } + + public async Task ReceiveAsync() + { + return await client.ReceiveAsync(); + } + + public void Close() + { + client?.Close(); + IsClosed = true; + } + + public static byte[] NewProbeMessage(Guid messageId) + { + if (messageId == Guid.Empty) + { + throw new ArgumentException("messageId could not be Empty"); + } + var probeMessagewithguid = string.Format(Constants.WS_PROBE_MESSAGE, messageId.ToString()); + return Encoding.ASCII.GetBytes(probeMessagewithguid); + } + + #region CreateClient + + public static OnvifUdpClient CreateClient(NetworkInterface adapter) + { + if (!IsValidAdapter(adapter)) { return null; } + + OnvifUdpClient client = null; + IPInterfaceProperties adapterProperties = adapter.GetIPProperties(); + foreach (UnicastIPAddressInformation ua in adapterProperties.UnicastAddresses) + { + if (ua.Address.AddressFamily != AddressFamily.InterNetwork) { continue; } + IPEndPoint myLocalEndPoint = new(ua.Address, 0); // port does not matter + try + { + client = new(myLocalEndPoint); + } + catch (SocketException) + { + throw; + } + break; + } + + return client; + } + + public static IEnumerable CreateClientList(IEnumerable adapterList) + { + List clientList = new(); + foreach (NetworkInterface adapter in adapterList) + { + OnvifUdpClient client = CreateClient(adapter); + if (client != null) { clientList.Add(client); } + } + return clientList; + } + + public static IEnumerable CreateClientList() + { + IEnumerable adapterList = GetVaildNetworkAdapters(); + return CreateClientList(adapterList); + } + + #endregion CreateClient + + #region ClientHelper + + public static List GetNetworkAdapters() + { + NetworkInterface[] nifs = NetworkInterface.GetAllNetworkInterfaces(); + return new(nifs); + } + + public static List GetVaildNetworkAdapters() + { + NetworkInterface[] nifs = NetworkInterface.GetAllNetworkInterfaces(); + List list = new(); + foreach (NetworkInterface nif in nifs) + { + if (IsValidAdapter(nif)) { list.Add(nif); } + } + return list; + } + + public static bool IsValidAdapter(NetworkInterface adapter) + { + // Only select interfaces that are Ethernet type and support IPv4 (important to minimize waiting time) + if (adapter.NetworkInterfaceType != NetworkInterfaceType.Ethernet && + !adapter.NetworkInterfaceType.ToString().ToLower().StartsWith("wireless")) return false; + if (adapter.OperationalStatus == OperationalStatus.Down) { return false; } + if (!adapter.Supports(NetworkInterfaceComponent.IPv4)) { return false; } + return true; + } + + /// + /// 广播 + /// + /// + /// + /// + public static async Task SendProbe(OnvifUdpClient client, Guid messageId) + { + IPEndPoint multicastEndpoint = new(IPAddress.Parse(Constants.WS_MULTICAST_ADDRESS), Constants.WS_MULTICAST_PORT); + await client.SendProbeAsync(messageId, multicastEndpoint); + } + + #endregion ClientHelper + } +} \ No newline at end of file diff --git a/公共库/EC.Onvif/RemoteDiscovery/XmlProbeReponse.cs b/公共库/EC.Onvif/RemoteDiscovery/XmlProbeReponse.cs new file mode 100644 index 0000000..7611920 --- /dev/null +++ b/公共库/EC.Onvif/RemoteDiscovery/XmlProbeReponse.cs @@ -0,0 +1,113 @@ +using System.Xml.Serialization; + +namespace EC.Onvif.RemoteDiscovery +{ + /// + /// The probe response + /// + [XmlRoot("Envelope", Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public class XmlProbeReponse + { + /// + /// The Header of the probe response + /// + [XmlElement(Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public Header Header { get; set; } + + /// + /// The Body of the probe response + /// + [XmlElement(Namespace = "http://www.w3.org/2003/05/soap-envelope")] + public Body Body { get; set; } + } + + /// + /// The Header of the probe response + /// + public class Header + { + /// + /// The message id + /// + [XmlElement(Namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing")] + public string MessageID { get; set; } + + /// + /// The message id that relates to + /// + [XmlElement(Namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing")] + public string RelatesTo { get; set; } + + /// + /// To + /// + [XmlElement(Namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing")] + public string To { get; set; } + + /// + /// App sequence + /// + [XmlElement(Namespace = "http://schemas.xmlsoap.org/ws/2005/04/discovery")] + public string AppSequence { get; set; } + } + + /// + /// The Body of the probe response + /// + public class Body + { + /// + /// An array of probe matches + /// + [XmlArray(Namespace = "http://schemas.xmlsoap.org/ws/2005/04/discovery")] + public ProbeMatch[] ProbeMatches { get; set; } + } + + /// + /// A probe match + /// + public class ProbeMatch + { + /// + /// The endpoint reference + /// + [XmlElement(Namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing")] + public EndpointReference EndpointReference { get; set; } + + /// + /// The types + /// + [XmlElement(Namespace = "http://schemas.xmlsoap.org/ws/2005/04/discovery")] + public string Types { get; set; } + + /// + /// The scopes + /// + [XmlElement(Namespace = "http://schemas.xmlsoap.org/ws/2005/04/discovery")] + public string Scopes { get; set; } + + /// + /// The XAddrs + /// + [XmlElement(Namespace = "http://schemas.xmlsoap.org/ws/2005/04/discovery")] + public string XAddrs { get; set; } + + /// + /// The metadata version + /// + [XmlElement(Namespace = "http://schemas.xmlsoap.org/ws/2005/04/discovery")] + public string MetadataVersion { get; set; } + } + + /// + /// The endpoint reference + /// + public class EndpointReference + { + /// + /// The address + /// + [XmlElement(Namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing")] + public string Address { get; set; } + } +} \ No newline at end of file diff --git a/公共库/EC.Onvif/Security/SoapSecurityHeader.cs b/公共库/EC.Onvif/Security/SoapSecurityHeader.cs new file mode 100644 index 0000000..e203de3 --- /dev/null +++ b/公共库/EC.Onvif/Security/SoapSecurityHeader.cs @@ -0,0 +1,82 @@ +using System; +using System.Security.Cryptography; +using System.ServiceModel.Channels; +using System.Text; +using System.Xml; + +namespace EC.Onvif.Security +{ + public class SoapSecurityHeader : MessageHeader + { + const string ns_wsu = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"; + readonly string username; + readonly string password; + readonly TimeSpan time_shift; + + public override string Name { get; } = "Security"; + public override string Namespace { get; } = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"; + + public SoapSecurityHeader(string username, string password, TimeSpan timeShift) + { + this.username = username; + this.password = password; + time_shift = timeShift; + } + + protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion) + { + var nonce = GetNonce(); + var created = DateTime.UtcNow.Add(time_shift).ToString("yyyy-MM-ddTHH:mm:ss.fffZ"); + var nonce_str = Convert.ToBase64String(nonce); + string password_hash = PasswordDigest(nonce, created, password); + + writer.WriteStartElement("UsernameToken"); + + writer.WriteStartElement("Username"); + writer.WriteValue(username); + writer.WriteEndElement(); + + writer.WriteStartElement("Password"); + writer.WriteAttributeString("Type", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"); + writer.WriteValue(password_hash); + writer.WriteEndElement(); + + writer.WriteStartElement("Nonce"); + writer.WriteAttributeString("EncodingType", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"); + writer.WriteValue(nonce_str); + writer.WriteEndElement(); + + writer.WriteStartElement("Created"); + writer.WriteXmlnsAttribute("", ns_wsu); + writer.WriteValue(created); + writer.WriteEndElement(); + + writer.WriteEndElement(); + } + + protected override void OnWriteStartHeader(XmlDictionaryWriter writer, MessageVersion messageVersion) + { + writer.WriteStartElement("", Name, Namespace); + writer.WriteAttributeString("s", "mustUnderstand", "http://www.w3.org/2003/05/soap-envelope", "1"); + writer.WriteXmlnsAttribute("", Namespace); + } + + string PasswordDigest(byte[] nonce, string created, string secret) + { + byte[] buffer = new byte[nonce.Length + Encoding.ASCII.GetByteCount(created + secret)]; + + nonce.CopyTo(buffer, 0); + Encoding.ASCII.GetBytes(created + password).CopyTo(buffer, nonce.Length); + + return Convert.ToBase64String(SHA1.Create().ComputeHash(buffer)); + } + + byte[] GetNonce() + { + byte[] nonce = new byte[0x10]; + var generator = new RNGCryptoServiceProvider(); + generator.GetBytes(nonce); + return nonce; + } + } +} \ No newline at end of file diff --git a/公共库/EC.Onvif/Security/SoapSecurityHeaderBehavior.cs b/公共库/EC.Onvif/Security/SoapSecurityHeaderBehavior.cs new file mode 100644 index 0000000..abf7898 --- /dev/null +++ b/公共库/EC.Onvif/Security/SoapSecurityHeaderBehavior.cs @@ -0,0 +1,45 @@ +using System; +using System.ServiceModel.Channels; +using System.ServiceModel.Description; +using System.ServiceModel.Dispatcher; + +namespace EC.Onvif.Security +{ + public class SoapSecurityHeaderBehavior : IEndpointBehavior + { + readonly string username; + readonly string password; + readonly TimeSpan time_shift; + + public SoapSecurityHeaderBehavior(string username, string password) : this(username, password, TimeSpan.FromMilliseconds(0)) + { + } + + public SoapSecurityHeaderBehavior(string username, string password, TimeSpan timeShift) + { + this.username = username; + this.password = password; + time_shift = timeShift; + } + + public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters) + { + + } + + public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime) + { + clientRuntime.ClientMessageInspectors.Add(new SoapSecurityHeaderInspector(username, password, time_shift)); + } + + public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher) + { + + } + + public void Validate(ServiceEndpoint endpoint) + { + + } + } +} \ No newline at end of file diff --git a/公共库/EC.Onvif/Security/SoapSecurityHeaderInspector.cs b/公共库/EC.Onvif/Security/SoapSecurityHeaderInspector.cs new file mode 100644 index 0000000..812b4db --- /dev/null +++ b/公共库/EC.Onvif/Security/SoapSecurityHeaderInspector.cs @@ -0,0 +1,33 @@ +using System; +using System.ServiceModel; +using System.ServiceModel.Channels; +using System.ServiceModel.Dispatcher; + +namespace EC.Onvif.Security +{ + public class SoapSecurityHeaderInspector : IClientMessageInspector + { + readonly string username; + readonly string password; + readonly TimeSpan time_shift; + + public SoapSecurityHeaderInspector(string username, string password, TimeSpan timeShift) + { + this.username = username; + this.password = password; + time_shift = timeShift; + } + + public void AfterReceiveReply(ref Message reply, object correlationState) + { + + } + + public object BeforeSendRequest(ref Message request, IClientChannel channel) + { + request.Headers.Add(new SoapSecurityHeader(username, password, time_shift)); + + return null; + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Config/ConfigHelper.cs b/公共库/EC.Utils/Config/ConfigHelper.cs new file mode 100644 index 0000000..fd72990 --- /dev/null +++ b/公共库/EC.Utils/Config/ConfigHelper.cs @@ -0,0 +1,148 @@ +using Microsoft.Extensions.Configuration; +using System.IO; + +namespace EC.Utils.Config +{ + public partial class ConfigHelper + { + + public static IConfiguration configuration = null; + + public static IConfiguration Configuration() + { + if (configuration == null) + { + var buiider = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json"); + configuration = buiider.Build(); + } + return configuration; + + + } + #region 程序配置 + public static string GetValue(string key) + { + return Configuration().GetValue("EC_App:" + key); + } + public static int GetValueInt(string key) + { + return Configuration().GetValue("EC_App:" + key); + } + + /// + /// 客户端序列号 + /// + /// + public static string AppId = GetValue("AppId"); + + //软件名称 + public static string SoftName() + { + return GetValue("SoftName"); + } + //软件全称 + public static string SoftFullName() + { + return GetValue("SoftFullName"); + } + //软件版本 + public static string SoftVersion() + { + return GetValue("SoftVersion"); + } + /// + /// 自动关闭预警窗体 + /// + /// + public static bool? AutoWarningClose() + { + return GetValueInt("AutoWarningClose")==1; + } + /// + /// AI 检索 + /// + /// + public static bool? VideoAIDetection() + { + return GetValueInt("VideoAIDetection") == 1; + } + + /// + /// WebSocketSvrPort + /// + /// + public static int WebSocketSvrPort() + { + return GetValueInt("WebSocketSvrPort"); + } + public static string APIServer() + { + return GetValue("APIServer"); + } + /// + /// 可选初始窗体图标 0:(1个窗体),1:4个窗体, 2:9个窗体 + /// + /// + public static int MainBarButtonSelectedIndex() + { + return GetValueInt("MainBarButtonSelectedIndex"); + } + public static string AIInputPath() + { + return GetValue("AIInputPath"); + } + public static string AIOutPath() + { + return GetValue("AIOutPath"); + } + + #endregion + #region ZMQ 配置 + + public static string GetMQValue(string key) + { + + return Configuration().GetValue("ZMQ:" + key); + } + /// + /// 发布地址 + /// + /// + public static string PUBServer() + { + return GetMQValue("PUBServer"); + } + /// + /// 订阅地址 + /// + /// + public static string SUBServer() + { + return GetMQValue("SUBServer"); + } + //AI服务地址 + public static string AISvrServer() + { + return GetMQValue("AISvrServer"); + } + /// + /// AI图片数据订阅 地址 + /// + /// + public static string SUBImageServer() + { + return GetMQValue("SUBImageServer"); + } + /// + /// 数据库服务地址 + /// + /// + public static string DBSvrServer() + { + return GetMQValue("DBSvrServer"); + } + + #endregion + +} +} diff --git a/公共库/EC.Utils/Config/ConfigurationHelper.cs b/公共库/EC.Utils/Config/ConfigurationHelper.cs new file mode 100644 index 0000000..13bce82 --- /dev/null +++ b/公共库/EC.Utils/Config/ConfigurationHelper.cs @@ -0,0 +1,74 @@ +using Microsoft.Extensions.Configuration; +using System.IO; + +namespace EC.Utils.Config +{ + public partial class ConfigurationHelper + { + public static IConfiguration configuration = null; + + public static IConfiguration Configuration() + { + if (configuration == null) + { + var buiider = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json"); + configuration = buiider.Build(); + } + return configuration; + } + + #region 程序配置 + + public static string GetValue(string key) + { + return Configuration().GetValue("EC_App:" + key); + } + + public static int GetValueInt(string key) + { + return Configuration().GetValue("EC_App:" + key); + } + + /// + /// 客户端序列号 + /// + /// + public static string AppId = GetValue("AppId"); + + //软件名称 + public static string SoftName() + { + return GetValue("SoftName"); + } + + //软件全称 + public static string SoftFullName() + { + return GetValue("SoftFullName"); + } + + //软件版本 + public static string SoftVersion() + { + return GetValue("SoftVersion"); + } + + #endregion 程序配置 + + public static string GetMQValue(string key) + { + return Configuration().GetValue("ZMQ:" + key); + } + + /// + + #region 数据库 + + public static string GetDbConnection(string key) + { + return Configuration().GetValue("DB_Default:" + key); + } + + #endregion 数据库 + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/EC.Utils.csproj b/公共库/EC.Utils/EC.Utils.csproj new file mode 100644 index 0000000..cd6b592 --- /dev/null +++ b/公共库/EC.Utils/EC.Utils.csproj @@ -0,0 +1,28 @@ + + + + net5.0-windows7.0 + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/公共库/EC.Utils/ECBase/ChinaDate.cs b/公共库/EC.Utils/ECBase/ChinaDate.cs new file mode 100644 index 0000000..0b0a1a9 --- /dev/null +++ b/公共库/EC.Utils/ECBase/ChinaDate.cs @@ -0,0 +1,237 @@ +using System.Collections; +using System.Globalization; + +namespace System +{ + public partial class ChinaDate + { + private static ChineseLunisolarCalendar china = new ChineseLunisolarCalendar(); + private static Hashtable gHoliday = new Hashtable(); + private static Hashtable nHoliday = new Hashtable(); + private static string[] JQ = { "小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑", "白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪", "冬至" }; + private static int[] JQData = { 0, 21208, 42467, 63836, 85337, 107014, 128867, 150921, 173149, 195551, 218072, 240693, 263343, 285989, 308563, 331033, 353350, 375494, 397447, 419210, 440795, 462224, 483532, 504758 }; + + static ChinaDate() + { + //公历节日 + gHoliday.Add("0101", "元旦"); + gHoliday.Add("0214", "情人节"); + gHoliday.Add("0305", "雷锋日"); + gHoliday.Add("0308", "妇女节"); + gHoliday.Add("0312", "植树节"); + gHoliday.Add("0315", "消权日"); + gHoliday.Add("0401", "愚人节"); + gHoliday.Add("0501", "劳动节"); + gHoliday.Add("0504", "青年节"); + gHoliday.Add("0601", "儿童节"); + gHoliday.Add("0701", "建党节"); + gHoliday.Add("0801", "建军节"); + gHoliday.Add("0910", "教师节"); + gHoliday.Add("1001", "国庆节"); + gHoliday.Add("1224", "平安夜"); + gHoliday.Add("1225", "圣诞节"); + + //农历节日 + nHoliday.Add("0101", "春节"); + nHoliday.Add("0115", "元宵节"); + nHoliday.Add("0505", "端午节"); + nHoliday.Add("0815", "中秋节"); + nHoliday.Add("0909", "重阳节"); + nHoliday.Add("1208", "腊八节"); + } + + /// + /// 获取农历 + /// + /// + /// + public static string GetChinaDate(DateTime dt) + { + if (dt > china.MaxSupportedDateTime || dt < china.MinSupportedDateTime) + { + //日期范围:1901 年 2 月 19 日 - 2101 年 1 月 28 日 + throw new Exception(string.Format("日期超出范围!必须在{0}到{1}之间!", china.MinSupportedDateTime.ToString("yyyy-MM-dd"), china.MaxSupportedDateTime.ToString("yyyy-MM-dd"))); + } + string str = string.Format("{0} {1}{2}", GetYear(dt), GetMonth(dt), GetDay(dt)); + string strJQ = GetSolarTerm(dt); + if (strJQ != "") + { + str += " (" + strJQ + ")"; + } + string strHoliday = GetHoliday(dt); + if (strHoliday != "") + { + str += " " + strHoliday; + } + string strChinaHoliday = GetChinaHoliday(dt); + if (strChinaHoliday != "") + { + str += " " + strChinaHoliday; + } + + return str; + } + + /// + /// 获取农历年份 + /// + /// + /// + public static string GetYear(DateTime dt) + { + int yearIndex = china.GetSexagenaryYear(dt); + string yearTG = " 甲乙丙丁戊己庚辛壬癸"; + string yearDZ = " 子丑寅卯辰巳午未申酉戌亥"; + string yearSX = " 鼠牛虎兔龙蛇马羊猴鸡狗猪"; + int year = china.GetYear(dt); + int yTG = china.GetCelestialStem(yearIndex); + int yDZ = china.GetTerrestrialBranch(yearIndex); + + string str = string.Format("[{1}]{2}{3}{0}", year, yearSX[yDZ], yearTG[yTG], yearDZ[yDZ]); + return str; + } + + /// + /// 获取农历月份 + /// + /// + /// + public static string GetMonth(DateTime dt) + { + int year = china.GetYear(dt); + int iMonth = china.GetMonth(dt); + int leapMonth = china.GetLeapMonth(year); + bool isLeapMonth = iMonth == leapMonth; + if (leapMonth != 0 && iMonth >= leapMonth) + { + iMonth--; + } + + string szText = "正二三四五六七八九十"; + string strMonth = isLeapMonth ? "闰" : ""; + if (iMonth <= 10) + { + strMonth += szText.Substring(iMonth - 1, 1); + } + else if (iMonth == 11) + { + strMonth += "十一"; + } + else + { + strMonth += "腊"; + } + return strMonth + "月"; + } + + /// + /// 获取农历日期 + /// + /// + /// + public static string GetDay(DateTime dt) + { + int iDay = china.GetDayOfMonth(dt); + string szText1 = "初十廿三"; + string szText2 = "一二三四五六七八九十"; + string strDay; + if (iDay == 20) + { + strDay = "二十"; + } + else if (iDay == 30) + { + strDay = "三十"; + } + else + { + strDay = szText1.Substring((iDay - 1) / 10, 1); + strDay = strDay + szText2.Substring((iDay - 1) % 10, 1); + } + return strDay; + } + + /// + /// 获取节气 + /// + /// + /// + public static string GetSolarTerm(DateTime dt) + { + DateTime dtBase = new DateTime(1900, 1, 6, 2, 5, 0); + DateTime dtNew; + double num; + int y; + string strReturn = ""; + + y = dt.Year; + for (int i = 1; i <= 24; i++) + { + num = 525948.76 * (y - 1900) + JQData[i - 1]; + dtNew = dtBase.AddMinutes(num); + if (dtNew.DayOfYear == dt.DayOfYear) + { + strReturn = JQ[i - 1]; + } + } + + return strReturn; + } + + /// + /// 获取公历节日 + /// + /// + /// + public static string GetHoliday(DateTime dt) + { + string strReturn = ""; + object g = gHoliday[dt.Month.ToString("00") + dt.Day.ToString("00")]; + if (g != null) + { + strReturn = g.ToString(); + } + + return strReturn; + } + + /// + /// 获取农历节日 + /// + /// + /// + public static string GetChinaHoliday(DateTime dt) + { + string strReturn = ""; + int year = china.GetYear(dt); + int iMonth = china.GetMonth(dt); + int leapMonth = china.GetLeapMonth(year); + int iDay = china.GetDayOfMonth(dt); + if (china.GetDayOfYear(dt) == china.GetDaysInYear(year)) + { + strReturn = "除夕"; + } + else if (leapMonth != iMonth) + { + if (leapMonth != 0 && iMonth >= leapMonth) + { + iMonth--; + } + object n = nHoliday[iMonth.ToString("00") + iDay.ToString("00")]; + if (n != null) + { + if (strReturn == "") + { + strReturn = n.ToString(); + } + else + { + strReturn += " " + n.ToString(); + } + } + } + + return strReturn; + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/ECBase/DateUnit.cs b/公共库/EC.Utils/ECBase/DateUnit.cs new file mode 100644 index 0000000..039541b --- /dev/null +++ b/公共库/EC.Utils/ECBase/DateUnit.cs @@ -0,0 +1,420 @@ +/*******************************************************/ +/*Project:基础类库 +Module :时间函数库 +Description : +Date : 2008-6-3 15:09:12 +Create : Lxc +Update : 2015-12-31 +TODO : */ +/*******************************************************/ + +namespace System +{ + /// + /// 日期时间操作单元 + /// + public partial class DateUnit + { + /// + /// 1970-1-1 + /// + public static DateTime InitDate() + { + return new DateTime(1970, 1, 1); + } + + /// + /// 默认当前日期 + /// + public static DateTime DefDate() + { + return DateTime.Now; + } + + /// + /// 格式化后的当前日期 + /// + public static string DefFormatDate() + { + return FormatDate(DefDate()); + } + + /// + ///格式化当前时间 + /// + public static string DefFormatDateTime() + { + return FormatDateTime(DefDate()); + } + + /// + /// 格式化后的 当前月1号 日期格式yyyy-MM-01 + /// + public static string DefMonthBegFormat() + { + return DefDate().ToString("yyyy-MM-01"); + } + + /// + /// 字符串格式->格式化为当前日期 + /// + /// + /// + public static string FormatDate(string Indate) + { + DateTime nowDate = DefDate(); + + if (Indate != null && Indate != "") + { + nowDate = ToDate(Indate); + } + + return FormatDate(nowDate); + } + + /// + /// 格式化为 日期格式yyyy-MM-dd + /// + /// + /// + public static string FormatDate(DateTime Indate) + { + if (!Indate.Equals(null)) + { + return Indate.ToString("yyyy-MM-dd"); + } + else + { + return DefFormatDate(); + } + } + + /// + /// 格式化为 日期时间格式yyyy-MM-dd HH:mm:ss + /// + /// + /// + public static string FormatDateTime(DateTime Indate) + { + if (!Indate.Equals(null)) + { + return Indate.ToString("yyyy-MM-dd HH:mm:ss"); + } + else + { + return DefFormatDate(); + } + } + + /// + /// 格式化时间 毫秒 + /// + /// + /// + public static string FormatDateTimefff(DateTime Indate) + { + if (!Indate.Equals(null)) + { + return Indate.ToString("yyyy-MM-dd HH:mm:ss fff"); + } + else + { + return DefFormatDate(); + } + } + + #region 时间函数 + + /// + /// 是不是时间格式 + /// + /// + /// + public static bool IsDate(string datetm) + { + bool result = false; + try + { + DateTime dateTime = Convert.ToDateTime(datetm); + result = true; + } + catch + { + result = false; + } + return result; + } + + /// + /// 将字符串转化成日期,如果输入的字符串不是日期时,则返回1970-1-1 + /// + /// + /// + public static DateTime ToDate(string str) + { + if (str == null || str == "") + return DefDate(); + else + { + DateTime dt = DefDate(); + if (DateTime.TryParse(str, out dt) == false) + return DefDate(); + else + return dt; + } + } + + /// + /// 将对象转化成日期,如果输入的对象不是日期时,则返回1970-1-1 + /// + /// + /// + public static DateTime ToDate(object obj) + { + DateTime Result = DefDate(); + if (!obj.Equals(null)) + { + try + { + Result = (DateTime)obj; + } + catch (Exception ex) + { + return DefDate(); + } + //if (DateTime.TryParse(obj.ToString(), out Result) == false) + // return DefDate; + } + return Result; + } + + /// + /// 将对象转化成日期,如果输入的对象不是日期时,则返回1900-1-1 + /// + /// + /// + public static DateTime ToDate(System.Nullable obj) + { + if (!obj.Equals(null)) + { + return (DateTime)obj; + } + else + { + return DefDate(); + } + } + + /// + /// 20070101-->2007-01-01 + /// + /// + /// + public static string StrTodate(string Str) + { + string stryear, strmon, strday; + try + { + stryear = Str.Remove(4, 4); + Str = Str.Remove(0, 4); + strmon = Str.Remove(2, 2); + strday = Str.Remove(0, 2); + stryear = stryear + "-" + strmon + "-" + strday; + return stryear; + } + catch + { + return DefFormatDate(); + } + } + + #endregion 时间函数 + + #region 周计算 + + /// + /// 周几 + /// + /// + /// + public static string DayOfWeek(DateTime curDay) + { + string[] weekdays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; + string week = weekdays[Convert.ToInt32(curDay.DayOfWeek)]; + + return week; + } + + /// + /// 第几周 + /// + /// + /// + public static int WeekOfYear(DateTime curDay) + { + int firstdayofweek = Convert.ToInt32(Convert.ToDateTime(curDay.Year.ToString() + "-" + "1-1").DayOfWeek); + + int days = curDay.DayOfYear; + int daysOutOneWeek = days - (7 - firstdayofweek); + + if (daysOutOneWeek <= 0) + { + return 1; + } + else + { + int weeks = daysOutOneWeek / 7; + if (daysOutOneWeek % 7 != 0) + weeks++; + + return weeks + 1; + } + } + + #region 返回某年某月最后一天 + + /// + /// 返回某年某月最后一天 + /// + /// 年份 + /// 月份 + /// + public static int GetMonthLastDate(int year, int month) + { + DateTime lastDay = new DateTime(year, month, new System.Globalization.GregorianCalendar().GetDaysInMonth(year, month)); + int Day = lastDay.Day; + return Day; + } + + #endregion 返回某年某月最后一天 + + #endregion 周计算 + + #region 返回时间差 + + /// + /// 返回时间差 秒 + /// + /// + /// + /// + public static double DateDiffSeconds(DateTime begDateTime, DateTime endDateTime) + { + try + { + TimeSpan ts = endDateTime - begDateTime; + return ts.TotalSeconds; + } + catch (Exception) + { + return 0; + } + } + + /// + /// 返回时间差 分钟 + /// + /// + /// + /// + public static double DateDiffMinutes(DateTime begDateTime, DateTime endDateTime) + { + try + { + TimeSpan ts = endDateTime - begDateTime; + return ts.TotalMinutes; + } + catch (Exception) + { + return 0; + } + } + + public static double DateDiffHours(DateTime begDateTime, DateTime endDateTime) + { + try + { + TimeSpan ts = endDateTime - begDateTime; + return ts.TotalHours; + } + catch (Exception) + { + return 0; + } + } + + public static double DateDifDays(DateTime begDateTime, DateTime endDateTime) + { + try + { + TimeSpan ts = endDateTime - begDateTime; + return ts.TotalDays; + } + catch (Exception) + { + return 0; + } + } + + #endregion 返回时间差 + + /// + /// Unix时间戳 + /// + /// 毫秒 + public static long UnixTime() + { + System.DateTime time = DateTime.Now; + System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0)); + long t = (time.Ticks - startTime.Ticks) / 10000; //除10000调整为13位 + return t; + } + + /// + /// 将c# DateTime时间格式转换为Unix时间戳格式 + /// + /// 时间 + /// 毫秒 + public static long DateTimeToUnixTime(System.DateTime time) + { + System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0)); + long t = (time.Ticks - startTime.Ticks) / 10000; //除10000调整为13位 + return t; + } + + /// + /// 时间戳转为C#格式时间 + /// + /// + /// + public static DateTime UnixTimeToDateTime(long timeStamp) + { + DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); + long lTime = timeStamp * 10000; + TimeSpan toNow = new TimeSpan(lTime); + return dtStart.Add(toNow); + } + + /// + /// Unix时间戳 时间格式化 为日期 + /// + /// + /// + public static string FormatDateUnixTime(long timeStamp) + { + DateTime dtStart = UnixTimeToDateTime(timeStamp); + return FormatDate(dtStart); + } + + /// + /// Unix时间戳 时间格式化 为时间 + /// + /// + /// + public static string FormatDateTimeUnixTime(long timeStamp) + { + DateTime dtStart = UnixTimeToDateTime(timeStamp); + return FormatDateTime(dtStart); + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/ECBase/FileUnit.cs b/公共库/EC.Utils/ECBase/FileUnit.cs new file mode 100644 index 0000000..ef9bab1 --- /dev/null +++ b/公共库/EC.Utils/ECBase/FileUnit.cs @@ -0,0 +1,293 @@ +using System.Collections.Generic; +using System.IO; +using System.Text; + +/*******************************************************/ +/*Project:基础类库 +Module :文件操作库 +Description : 文本读写,日志 +Date : 2008-6-3 15:09:12 +Create : Lxc +Update : 2014-12-31 +TODO : */ +/*******************************************************/ + +namespace System +{ + /// + /// 文件操作单元 + /// + public partial class FileUnit + { + private static readonly string AppFilepatch = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase; + + /// + /// 创建目录 + /// + /// + /// + public static bool CreateDir(string fullPath) + { + if (!Directory.Exists(fullPath)) + { + try + { + Directory.CreateDirectory(fullPath); + return true; + } + catch (Exception ex) + { + return false; + } + } + return true; + } + + //删除文件名 获取路径 + public static string GetDirectory(string fullPath) + { + return Path.GetDirectoryName(fullPath); + } + + /// + /// 得到文件名称 + /// + /// + /// + public static string GetFileName(string fullPath) + { + return Path.GetFileName(fullPath); + } + + /// + /// 得到扩展名 + /// + /// + /// + public static string GetFileExt(string fullPath) + { + return Path.GetExtension(fullPath); + } + + /// + /// 得到名称没有扩展名 + /// + /// + /// + public static string GetFileNameNoExt(string fullPath) + { + return Path.GetFileNameWithoutExtension(fullPath); + } + + /// + /// 复制文件 + /// + /// + /// + /// + public static string CopyFile(string sourceFileName, string destFileName) + { + try + { + if (File.Exists(sourceFileName)) + { + string destDirectory = GetDirectory(destFileName);// destFileName.Substring(0, destFileName.LastIndexOf('\\'));//删除文件名 获取路径 + bool createDir = CreateDir(destDirectory); + if (createDir) + { + File.Copy(sourceFileName, destFileName); + } + else + { + return "文件路径" + destFileName + "不正确!"; + } + } + else + { + return "文件路径" + sourceFileName + "不存在!"; + } + return ""; + } + catch (Exception ex) + { + return ex.Message; + } + } + + /// + /// 得到路径 没有扩展名 + /// + /// + /// + public static string GetPathNoExt(string rptPath) + { + string rtpDir = GetDirectory(rptPath); + string disFileName = GetFileNameNoExt(rptPath); + string disPatch = Path.Combine(rtpDir, disFileName);// +".docx"; + return disPatch; + } + + /// + /// 读取文本 + /// + /// + /// + public static string ReadtxtFile(string filename) + { + if (File.Exists(filename)) + { + // Create an instance of StreamReader to read from a file. + // The using statement also closes the StreamReader. + using (StreamReader sr = new StreamReader(filename, System.Text.Encoding.UTF8)) + { + return sr.ReadToEnd(); + } + } + else throw new Exception("no exists " + filename); + } + + /// + /// 读取多行文本 + /// + /// + /// + public static List ReadtxtLinesFile(string filename) + { + List filtxtLines = new List(); + + if (File.Exists(filename)) + { + // Create an instance of StreamReader to read from a file. + // The using statement also closes the StreamReader. + using (StreamReader sr = new StreamReader(filename, System.Text.Encoding.UTF8)) + { + String line; + // Read and display lines from the file until the end of + // the file is reached. + while ((line = sr.ReadLine()) != null) + { + filtxtLines.Add(line); + } + } + } + return filtxtLines; + } + + /// + /// 读取多行文本 + /// + /// + /// + /// + /// + public static bool WritetxtFileLine(string filepatch, string filename, List txtLines) + { + List filtxtLines = new List(); + + if (!Directory.Exists(filepatch)) + { + Directory.CreateDirectory(filepatch); + } + using (StreamWriter sw = new StreamWriter(Path.Combine(filepatch, filename), false, System.Text.Encoding.UTF8)) + { + foreach (string str in txtLines) + { + sw.WriteLine(str); + } + sw.Close(); + } + + return true; + } + + /// + /// 写入文本 + /// + /// + /// + /// + /// + public static bool WritetxtFile(string filepatch, string filename, string text) + { + List filtxtLines = new List(); + + if (!Directory.Exists(filepatch)) + { + Directory.CreateDirectory(filepatch); + } + + using (StreamWriter sw = new StreamWriter(Path.Combine(filepatch, filename), false, System.Text.Encoding.UTF8)) + { + sw.Write(text); + + sw.Close(); + } + + return true; + } + + private static bool Log(string subfilepatch, string logmessage) + { + try + { + string logfilePath = Path.Combine(AppFilepatch, "Log", subfilepatch); + if (!Directory.Exists(logfilePath)) + { + Directory.CreateDirectory(logfilePath); + } + string fullFileName = Path.Combine(logfilePath, DateTime.Now.ToString("yyyyMMdd") + ".txt"); + using (StreamWriter sw = new StreamWriter(fullFileName, true, Encoding.UTF8)) + { + sw.WriteLine(DateTime.Now.ToString() + " : " + logmessage); + sw.Close(); + } + } + catch (Exception e) + { + return false; + } + return true; + } + + //写入日志 + public static void Log(string log) + { + string path = ""; + Log(path, log); + } + + public static void WebLog(string log) + { + Log(log); + } + + //public static void WebLog(string log) + //{ + // string path = HttpContext.Current.Server.MapPath(".")+"Web\\"; + // Log(path, log); + //} + + public static void ErrLog(string log) + { + string subpath = "ErrLog"; + Log(subpath, log); + } + + public static bool Exists(string path) + { + return File.Exists(path); + } + + public static void DeleteFile(string path) + { + if (File.Exists(path)) + { + File.Delete(path); + } + else + { + throw new Exception("路径不存在" + path); + } + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/ECBase/FormatCom.cs b/公共库/EC.Utils/ECBase/FormatCom.cs new file mode 100644 index 0000000..702414a --- /dev/null +++ b/公共库/EC.Utils/ECBase/FormatCom.cs @@ -0,0 +1,710 @@ +namespace System +{ + /// + /// ʽת Ԫ + /// + public partial class FormatCom + { + private const string Dateformat = "yyyy-MM-dd"; + + #region ToDecimal + + /// + /// תΪ ʮƱʾ + /// + /// ַ + /// + public static Decimal ToDecimal(string inStr) + { + Decimal Result = 0; + if (inStr != null) + { + if (Decimal.TryParse(inStr, out Result) == false) + return 0; + } + return Result; + } + + /// + /// תΪ ʮƱʾ + /// + /// ҪתĶ + /// + public static Decimal ToDecimal(object obj) + { + Decimal Result = 0; + if (null != obj) + { + if (Decimal.TryParse(obj.ToString(), out Result) == false) + return 0; + } + return Result; + } + + #endregion ToDecimal + + #region ToInt + + /// + /// ַתΪ ֱʾ + /// + /// Ҫתַ + /// + public static int ToInt(string inStr) + { + int Result = 0; + if (inStr != null) + { + int pos = inStr.IndexOf('.'); + if (pos > 0) + { + inStr = inStr.Substring(0, pos); + } + if (int.TryParse(inStr, out Result) == false) + return 0; + } + return Result; + } + + /// + /// Decimal תΪ ֱʾ + /// + /// Ҫתʮ + /// + public static int ToInt(Decimal inDec) + { + return ToInt(inDec.ToString()); + } + + /// + /// Decimal תΪ ֱʾ + /// + /// Ҫתʮ + /// + public static int ToInt(double dounumber) + { + return ToInt(dounumber.ToString()); + } + + /// + /// object תΪ ֱʾ + /// + /// ҪתĶ + /// + public static int ToInt(object obj) + { + if (obj == null) return 0; + return ToInt(obj.ToString()); + } + + #endregion ToInt + + #region ToInt32 + + /// + /// ַתΪ ֱʾ + /// + /// Ҫתַ + /// + public static int ToInt32(string inStr) + { + int Result = 0; + if (inStr != null) + { + int pos = inStr.IndexOf('.'); + if (pos > 0) + { + inStr = inStr.Substring(0, pos); + } + if (int.TryParse(inStr, out Result) == false) + return 0; + } + return Result; + } + + /// + /// Decimal תΪ ֱʾ + /// + /// Ҫתʮ + /// + public static int ToInt32(Decimal inDec) + { + return ToInt(inDec.ToString()); + } + + /// + /// Decimal תΪ ֱʾ + /// + /// Ҫתʮ + /// + public static int ToInt32(double dounumber) + { + return ToInt(dounumber.ToString()); + } + + /// + /// object תΪ ֱʾ + /// + /// ҪתĶ + /// + public static int ToInt32(object obj) + { + if (obj == null) return 0; + return ToInt(obj.ToString()); + } + + #endregion ToInt32 + + #region ToLong + + /// + /// ַתΪ longֱʾ + /// + /// Ҫתַ + /// + public static long ToLong(string inStr) + { + long Result = 0; + if (inStr != null) + { + if (long.TryParse(inStr, out Result) == false) + return 0; + } + return Result; + } + + /// + /// Decimal תΪ longֱʾ + /// + /// Ҫתʮ + /// + public static long ToLong(Decimal inDec) + { + long Result = 0; + string inStr = inDec.ToString(); + int pos = inStr.IndexOf('.'); + inStr = inStr.Substring(0, pos); + if (inStr != null) + { + if (long.TryParse(inStr, out Result) == false) + return 0; + } + return Result; + } + + /// + /// object תΪ longֱʾ + /// + /// ҪתĶ + /// + public static long ToLong(object obj) + { + long Result = 0; + if (null != obj) + { + if (long.TryParse(obj.ToString(), out Result) == false) + return 0; + } + return Result; + } + + #endregion ToLong + + #region toShort + + /// + /// ַתΪ ʾ + /// + /// + /// + public static short ToShort(string inStr) + { + short Result = 0; + if (inStr != null) + { + if (short.TryParse(inStr, out Result) == false) + return 0; + } + return Result; + } + + /// + /// Decimal תΪ ʾ + /// + /// + /// + public static short ToShort(Decimal inDec) + { + short Result = 0; + string inStr = inDec.ToString(); + int pos = inStr.IndexOf('.'); + inStr = inStr.Substring(0, pos); + if (inStr != null) + { + if (short.TryParse(inStr, out Result) == false) + return 0; + } + return Result; + } + + /// + /// object תΪ ʾ + /// + /// + /// + public static short ToShort(object obj) + { + short Result = 0; + if (!obj.Equals(null)) + { + if (short.TryParse(obj.ToString(), out Result) == false) + return 0; + } + return Result; + } + + #endregion toShort + + #region toString() + + /// + /// ַ + /// + /// + /// + public static string String(string str) + { + if (str != null) + { + str = str.Replace("&", "&"); + str = str.Replace(" ", " "); + str = str.Replace("
", "\n"); + str = str.Replace(">", ">"); + str = str.Replace("<", "<"); + str = str.Replace(""", "\""); + str = str.Replace("''", "'"); + str = str.Replace("'", ""); + } + else + str = ""; + return str; + } + + public static string ToString(string str) + { + return String(str); + } + + #endregion toString() + + #region Double + + /// + /// жǷ ʵ + /// + /// + /// + public static bool IsReal(string strnum) + { + bool result = false; + try + { + double curin = Convert.ToDouble(strnum); + result = true; + } + catch + { + result = false; + } + return result; + } + + /// + /// string תΪ ˫ʵʾ + /// + /// + /// + public static double ToDouble(string str) + { + if (str == null || str == "") + return 0; + else + { + double db = 0; + if (Double.TryParse(str, out db) == false) + return 0; + else + return db; + } + } + + public static double ToDouble(object obj) + { + if (obj == null || obj.ToString() == "") + return 0; + else + { + double db = 0; + if (Double.TryParse(obj.ToString(), out db) == false) + return 0; + else + return db; + } + } + + #endregion Double + + #region ַʽ + + /// + /// ַ + /// + /// + /// + /// + [Obsolete(" ʹ LeftSpace")] + public static string LeftNull(int num) + { + string curStr = ""; + for (int i = 0; i < num; i++) + { + curStr += @" "; + } + return curStr; + } + + /// + ///ַ + /// + /// ַ + /// + public static string LeftSpace(int spaceNum) + { + string curStr = ""; + for (int i = 0; i < spaceNum; i++) + { + curStr += @" "; + } + return curStr; + } + + /// + /// ߼ӿո + /// + /// + /// + /// + [Obsolete(" ʹ LeftSpaceStr")] + public static string LeftNullStr(string str, int num) + { + string curStr = ""; + int Len = str.Length; + if (Len > num) + { + return str.Substring(Len - num, num); + } + else + { + curStr = LeftSpace(num - Len) + str; + return curStr; + } + } + + /// + /// ߿ַ + /// + /// + /// + /// + public static string LeftSpaceStr(string str, int spaceNum) + { + int Len = str.Length; + if (Len > spaceNum) + { + return str.Substring(Len - spaceNum, spaceNum); + } + else + { + return LeftSpace(spaceNum - Len) + str; + } + } + + /// + /// ߿ַ + /// + /// + /// + /// + public static string LeftSpaceStr(int inNumber, int spaceNum) + { + string str = inNumber.ToString(); + return LeftSpaceStr(str, spaceNum); + } + + /// + /// 0 + /// + /// + /// + public static string Leftzero(int num) + { + string curStr = ""; + for (int i = 0; i < num; i++) + { + curStr += "0"; + } + return curStr; + } + + /// + /// 0 + /// + /// + /// + /// + public static string LeftzeroStr(string str, int formatLen) + { + int len = str.Length; + if (len >= formatLen) + { + return str.Substring(len - formatLen, formatLen); + } + else + { + return Leftzero(formatLen - len) + str; + } + } + + /// + /// ʽ ̶λַ 0 + /// + /// + /// + /// + public static string LeftzeroStr(int inNum, int formatLen) + { + string str = inNum.ToString(); + return LeftzeroStr(str, formatLen); + } + + #endregion ַʽ + + #region ʽ׼ + + private const int NumNumber = 0; + private const int priceNumber = 2; + private const int MoneyNumber = 2; + + #region Number + + public static string Number(object numStr) + { + return KeepDigit(FormatCom.ToDecimal(numStr), NumNumber); + } + + /// + /// ˫ַתΪʽַʾ + /// + /// Ҫ + /// + public static string Number(double numStr) + { + return KeepDigit((decimal)numStr, NumNumber); + } + + /// + /// ˫ַתΪʽַʾ + /// + /// Ҫ + /// + public static string Number(System.Nullable numStr) + { + decimal curNum = 0; + if (numStr != null) + { + curNum = (decimal)numStr; + } + return KeepDigit(curNum, NumNumber); + } + + /// + /// ʮַתΪʽַʾ + /// + /// Ҫ + /// + public static string Number(decimal numStr) + { + return KeepDigit(numStr, NumNumber); + } + + /// + /// ַתΪʽַʾ + /// + /// Ҫ + /// + public static string Number(string numStr) + { + return KeepDigit(numStr, NumNumber); + } + + #endregion Number + + #region price ۸ʽ + + public static string Price(object numStr) + { + return KeepDigit(FormatCom.ToDecimal(numStr), priceNumber); + } + + /// + /// ˫ַתΪʽַʾ + /// + /// Ҫиʽ + /// + public static string Price(double numStr) + { + return KeepDigit((decimal)numStr, priceNumber); + } + + /// + /// ˫ַתΪʽַʾ + /// + /// Ҫиʽ + /// + public static string Price(System.Nullable numStr) + { + decimal curNum = 0; + if (numStr != null) + { + curNum = (decimal)numStr; + } + return KeepDigit(curNum, priceNumber); + } + + /// + /// ʮַתΪʽַʾ + /// + /// Ҫиʽ + /// + public static string Price(decimal numStr) + { + return KeepDigit(numStr, priceNumber); + } + + /// + /// ַתΪʽַʾ + /// + /// Ҫиʽַ + /// + public static string Price(string numStr) + { + return KeepDigit(numStr, priceNumber); + } + + #endregion price ۸ʽ + + #region money + + public static string Money(object numStr) + { + return KeepDigit(FormatCom.ToDecimal(numStr), MoneyNumber); + } + + /// + /// ˫ַתΪʽַʾ + /// + /// Ҫиʽ + /// + public static string Money(double numStr) + { + return KeepDigit((decimal)numStr, MoneyNumber); + } + + /// + /// ʮַתΪʽַʾ + /// + /// Ҫиʽ + /// + public static string Money(System.Nullable numStr) + { + return KeepDigit((decimal)numStr, MoneyNumber); + } + + /// + /// ʮַתΪʽַʾ + /// + /// Ҫиʽ + /// + public static string Money(decimal numStr) + { + return KeepDigit(numStr, MoneyNumber); + } + + /// + /// ַתΪʽַʾ + /// + /// Ҫиʽַ + /// + public static string Money(string numStr) + { + return KeepDigit(numStr, MoneyNumber); + } + + #endregion money + + #region ʽ + + /// + /// СλString + /// + /// ַ + /// λ + public static string KeepDigit(string numStr, int count) + { + string s = numStr; + string Formatstr = "0."; + decimal d = 0; + decimal.TryParse(s.Trim(), out d); + for (int i = 0; i < count; i++) + { + Formatstr += "0"; + } + return d.ToString(Formatstr); + } + + /// + /// Сλdecimal + /// + /// ʮ + /// λ + public static string KeepDigit(decimal inDecdecimal, int count) + { + string Formatstr = "0."; + for (int i = 0; i < count; i++) + { + Formatstr += "0"; + } + return inDecdecimal.ToString(Formatstr); + } + + /// + /// + /// + /// + /// + /// + public static string KeepDigit(double indouble, int count) + { + string Formatstr = "0."; + for (int i = 0; i < count; i++) + { + Formatstr += "0"; + } + return indouble.ToString(Formatstr); + } + + #endregion ʽ + + #endregion ʽ׼ + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/ECBase/VerifyUnit.cs b/公共库/EC.Utils/ECBase/VerifyUnit.cs new file mode 100644 index 0000000..bf60d35 --- /dev/null +++ b/公共库/EC.Utils/ECBase/VerifyUnit.cs @@ -0,0 +1,241 @@ +using System.Reflection; +using System.Text.RegularExpressions; + +namespace System +{ + /// + /// 验证单元 + /// + public class VerifyUnit + { + /// + /// 验证是否是标准的邮件格式 + /// + /// + /// + public static bool IsEmail(string EmailStr) + { + string MathStr = @"^([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$"; + if (EmailStr == "" || EmailStr == null) + { + return false; + } + else + { + Regex r = new Regex(MathStr, RegexOptions.Compiled | RegexOptions.IgnoreCase); + if (r.IsMatch(EmailStr.Trim())) + { + return true; + } + else + { + return false; + } + } + } + + /// + /// 验证是否为数字 + /// + /// + /// + public static bool IsNumber(string NumberStr) + { + Regex r = new Regex(@"^(0|[1-9][0-9]*)$", RegexOptions.Compiled | RegexOptions.IgnoreCase); + if (NumberStr != null && NumberStr != "") + { + if (r.IsMatch(NumberStr.Trim())) + { + return true; + } + else + { + return false; + } + } + else + { + return false; + } + } + + /// + /// 验证是否是浮点数 + /// + /// + /// + public static bool IsDecimal(string DecimalStr) + { + Regex r = new Regex(@"^(-?\d+)(\.\d+)?$", RegexOptions.Compiled | RegexOptions.IgnoreCase); + if (DecimalStr != null && DecimalStr != "") + { + if (r.IsMatch(DecimalStr.Trim())) + { + return true; + } + else + { + return false; + } + } + else + { + return false; + } + } + + /// + /// 验证是否是手机格式 + /// + /// + /// + public static bool IsMobile(string MobileStr) + { + Regex r = new Regex(@"^[1]+[3,5,7,8]+\d{9}", RegexOptions.Compiled | RegexOptions.IgnoreCase); + if (MobileStr != "" && MobileStr != null) + { + if (r.IsMatch(MobileStr.Trim())) + { + return true; + } + else + { + return false; + } + } + else + { + return false; + } + } + + /// + /// 验证是否是电话号码格式 + /// + /// + /// + public static bool IsTel(string TelStr) + { + Regex r = new Regex(@"^(\+86\s{1,1})?((\d{3,4}\-)\d{7,8})$", RegexOptions.Compiled | RegexOptions.IgnoreCase); + if (TelStr != "" && TelStr != null) + { + if (r.IsMatch(TelStr.Trim())) + { + return true; + } + else + { + return false; + } + } + else + { + return false; + } + } + + /// + /// Ip地址验证 + /// + public static bool CheckIp(string ip) + { + bool result = false; + Regex ipReg = new Regex(@"^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$"); + if (ipReg.IsMatch(ip)) + { + result = true; + } + return result; + } + + /// + /// 身份证验证 + /// + /// 身份证号 + /// + public static bool CheckIDCard(string Id) + { + if (Id.Length == 18) + { + bool check = CheckIDCard18(Id); + return check; + } + else if (Id.Length == 15) + { + bool check = CheckIDCard15(Id); + return check; + } + else + { + return false; + } + } + + /// + /// 18位身份证验证 + /// + /// 身份证号 + /// + private static bool CheckIDCard18(string Id) + { + long n = 0; + if (long.TryParse(Id.Remove(17), out n) == false || n < Math.Pow(10, 16) || long.TryParse(Id.Replace('x', '0').Replace('X', '0'), out n) == false) + { + return false;//数字验证 + } + string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91"; + if (address.IndexOf(Id.Remove(2)) == -1) + { + return false;//省份验证 + } + string birth = Id.Substring(6, 8).Insert(6, "-").Insert(4, "-"); + DateTime time = new DateTime(); + if (DateTime.TryParse(birth, out time) == false) + { + return false;//生日验证 + } + string[] arrVarifyCode = ("1,0,x,9,8,7,6,5,4,3,2").Split(','); + string[] Wi = ("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2").Split(','); + char[] Ai = Id.Remove(17).ToCharArray(); + int sum = 0; + for (int i = 0; i < 17; i++) + { + sum += int.Parse(Wi[i]) * int.Parse(Ai[i].ToString()); + } + int y = -1; + Math.DivRem(sum, 11, out y); + if (arrVarifyCode[y] != Id.Substring(17, 1).ToLower()) + { + return false;//校验码验证 + } + return true;//符合GB11643-1999标准 + } + + /// + /// 15位身份证验证 + /// + /// 身份证号 + /// + private static bool CheckIDCard15(string Id) + { + long n = 0; + if (long.TryParse(Id, out n) == false || n < Math.Pow(10, 14)) + { + return false;//数字验证 + } + string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91"; + if (address.IndexOf(Id.Remove(2)) == -1) + { + return false;//省份验证 + } + string birth = Id.Substring(6, 6).Insert(4, "-").Insert(2, "-"); + DateTime time = new DateTime(); + if (DateTime.TryParse(birth, out time) == false) + { + return false;//生日验证 + } + return true;//符合15位身份证标准 + } + + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Extend/Ext.Convert.cs b/公共库/EC.Utils/Extend/Ext.Convert.cs new file mode 100644 index 0000000..c01a7fe --- /dev/null +++ b/公共库/EC.Utils/Extend/Ext.Convert.cs @@ -0,0 +1,324 @@ +using System; + +namespace EC.Utils +{ + /// + /// Ext + /// 版 本:V3.0.0 + /// 版 权:EasyCode + /// 作 者:LXC + /// + public static partial class Ext + { + #region 数值转换 + + /// + /// 转换为整型 + /// + /// 数据 + public static int ToInt(this object data) + { + if (data == null) + return 0; + int result; + var success = int.TryParse(data.ToString(), out result); + if (success) + return result; + try + { + return Convert.ToInt32(ToDouble(data, 0)); + } + catch (Exception) + { + return 0; + } + } + + /// + /// 转换为可空整型 + /// + /// 数据 + public static int? ToIntOrNull(this object data) + { + if (data == null) + return null; + int result; + bool isValid = int.TryParse(data.ToString(), out result); + if (isValid) + return result; + return null; + } + + /// + /// 转换为双精度浮点数 + /// + /// 数据 + public static double ToDouble(this object data) + { + if (data == null) + return 0; + double result; + return double.TryParse(data.ToString(), out result) ? result : 0; + } + + /// + /// 转换为双精度浮点数,并按指定的小数位4舍5入 + /// + /// 数据 + /// 小数位数 + public static double ToDouble(this object data, int digits) + { + return Math.Round(ToDouble(data), digits); + } + + /// + /// 转换为可空双精度浮点数 + /// + /// 数据 + public static double? ToDoubleOrNull(this object data) + { + if (data == null) + return null; + double result; + bool isValid = double.TryParse(data.ToString(), out result); + if (isValid) + return result; + return null; + } + + /// + /// 转换为高精度浮点数 + /// + /// 数据 + public static decimal ToDecimal(this object data) + { + if (data == null) + return 0; + decimal result; + return decimal.TryParse(data.ToString(), out result) ? result : 0; + } + + /// + /// 转换为高精度浮点数,并按指定的小数位4舍5入 + /// + /// 数据 + /// 小数位数 + public static decimal ToDecimal(this object data, int digits) + { + return Math.Round(ToDecimal(data), digits); + } + + /// + /// 转换为可空高精度浮点数 + /// + /// 数据 + public static decimal? ToDecimalOrNull(this object data) + { + if (data == null) + return null; + decimal result; + bool isValid = decimal.TryParse(data.ToString(), out result); + if (isValid) + return result; + return null; + } + + /// + /// 转换为可空高精度浮点数,并按指定的小数位4舍5入 + /// + /// 数据 + /// 小数位数 + public static decimal? ToDecimalOrNull(this object data, int digits) + { + var result = ToDecimalOrNull(data); + if (result == null) + return null; + return Math.Round(result.Value, digits); + } + + #endregion 数值转换 + + #region 日期转换 + + /// + /// 转换为日期 + /// + /// 数据 + public static DateTime ToDate(this object data) + { + if (data == null) + return DateTime.MinValue; + DateTime result; + return DateTime.TryParse(data.ToString(), out result) ? result : DateTime.MinValue; + } + + /// + /// 转换为可空日期 + /// + /// 数据 + public static DateTime? ToDateOrNull(this object data) + { + if (data == null) + return null; + DateTime result; + bool isValid = DateTime.TryParse(data.ToString(), out result); + if (isValid) + return result; + return null; + } + + #endregion 日期转换 + + #region 布尔转换 + + /// + /// 转换为布尔值 + /// + /// 数据 + public static bool ToBool(this object data) + { + if (data == null) + return false; + bool? value = GetBool(data); + if (value != null) + return value.Value; + bool result; + return bool.TryParse(data.ToString(), out result) && result; + } + + /// + /// 获取布尔值 + /// + private static bool? GetBool(this object data) + { + switch (data.ToString().Trim().ToLower()) + { + case "0": + return false; + + case "1": + return true; + + case "是": + return true; + + case "否": + return false; + + case "yes": + return true; + + case "no": + return false; + + default: + return null; + } + } + + /// + /// 转换为可空布尔值 + /// + /// 数据 + public static bool? ToBoolOrNull(this object data) + { + if (data == null) + return null; + bool? value = GetBool(data); + if (value != null) + return value.Value; + bool result; + bool isValid = bool.TryParse(data.ToString(), out result); + if (isValid) + return result; + return null; + } + + #endregion 布尔转换 + + #region 字符串转换 + + /// + /// 转换为字符串 + /// + /// 数据 + public static string ToString(this object data) + { + return data == null ? string.Empty : data.ToString().Trim(); + } + + #endregion 字符串转换 + + /// + /// 安全返回值 + /// + /// 可空值 + public static T SafeValue(this T? value) where T : struct + { + return value ?? default(T); + } + + /// + /// 是否为空 + /// + /// 值 + public static bool IsEmpty(this string value) + { + return string.IsNullOrWhiteSpace(value); + } + + /// + /// 是否为空 + /// + /// 值 + public static bool IsEmpty(this Guid? value) + { + if (value == null) + return true; + return IsEmpty(value.Value); + } + + /// + /// 是否为空 + /// + /// 值 + public static bool IsEmpty(this Guid value) + { + if (value == Guid.Empty) + return true; + return false; + } + + /// + /// 是否为空 + /// + /// 值 + public static bool IsEmpty(this object value) + { + if (value != null && !string.IsNullOrEmpty(value.ToString())) + { + return false; + } + else + { + return true; + } + } + + /// + /// 判断是否为Null或者空 + /// + /// 对象 + /// + public static bool IsNullOrEmpty(this object obj) + { + if (obj == null) + return true; + else + { + string objStr = obj.ToString(); + return string.IsNullOrEmpty(objStr); + } + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Extend/Ext.DateTime.cs b/公共库/EC.Utils/Extend/Ext.DateTime.cs new file mode 100644 index 0000000..55439a3 --- /dev/null +++ b/公共库/EC.Utils/Extend/Ext.DateTime.cs @@ -0,0 +1,178 @@ +using System; +using System.Text; + +namespace EC.Utils +{ + /// + /// Ext + /// 版 本:V3.0.0 + /// 版 权:EasyCode + /// 作 者:LXC + /// + public static partial class Ext + { + /// + /// 获取格式化字符串,带时分秒,格式:"yyyy-MM-dd HH:mm:ss" + /// + /// 日期 + /// 是否移除秒 + public static string ToDateTimeString(this DateTime dateTime, bool isRemoveSecond = false) + { + if (isRemoveSecond) + return dateTime.ToString("yyyy-MM-dd HH:mm"); + return dateTime.ToString("yyyy-MM-dd HH:mm:ss"); + } + + /// + /// 获取格式化字符串,带时分秒,格式:"yyyy-MM-dd HH:mm:ss" + /// + /// 日期 + /// 是否移除秒 + public static string ToDateTimeString(this DateTime? dateTime, bool isRemoveSecond = false) + { + if (dateTime == null) + return string.Empty; + return ToDateTimeString(dateTime.Value, isRemoveSecond); + } + + /// + /// 获取格式化字符串,不带时分秒,格式:"yyyy-MM-dd" + /// + /// 日期 + public static string ToDateString(this DateTime dateTime) + { + return dateTime.ToString("yyyy-MM-dd"); + } + + /// + /// 获取格式化字符串,不带时分秒,格式:"yyyy-MM-dd" + /// + /// 日期 + public static string ToDateString() + { + return DateTime.Now.ToString("yyyy-MM-dd"); + } + + /// + /// 获取格式化字符串,不带时分秒,格式:"yyyy-MM-dd" + /// + /// 日期 + public static string ToDateString(this DateTime? dateTime) + { + if (dateTime == null) + return string.Empty; + return ToDateString(dateTime.Value); + } + + /// + /// 获取格式化字符串,不带年月日,格式:"HH:mm:ss" + /// + /// 日期 + public static string ToTimeString(this DateTime dateTime) + { + return dateTime.ToString("HH:mm:ss"); + } + + /// + /// 获取格式化字符串,不带年月日,格式:"HH:mm:ss" + /// + /// 日期 + public static string ToTimeString(this DateTime? dateTime) + { + if (dateTime == null) + return string.Empty; + return ToTimeString(dateTime.Value); + } + + /// + /// 获取格式化字符串,带毫秒,格式:"yyyy-MM-dd HH:mm:ss.fff" + /// + /// 日期 + public static string ToMillisecondString(this DateTime dateTime) + { + return dateTime.ToString("yyyy-MM-dd HH:mm:ss.fff"); + } + + /// + /// 获取格式化字符串,带毫秒,格式:"yyyy-MM-dd HH:mm:ss.fff" + /// + /// 日期 + public static string ToMillisecondString(this DateTime? dateTime) + { + if (dateTime == null) + return string.Empty; + return ToMillisecondString(dateTime.Value); + } + + /// + /// 获取格式化字符串,不带时分秒,格式:"yyyy年MM月dd日" + /// + /// 日期 + public static string ToChineseDateString(this DateTime dateTime) + { + return string.Format("{0}年{1}月{2}日", dateTime.Year, dateTime.Month, dateTime.Day); + } + + /// + /// 获取格式化字符串,不带时分秒,格式:"yyyy年MM月dd日" + /// + /// 日期 + public static string ToChineseDateString(this DateTime? dateTime) + { + if (dateTime == null) + return string.Empty; + return ToChineseDateString(dateTime.SafeValue()); + } + + /// + /// 获取格式化字符串,带时分秒,格式:"yyyy年MM月dd日 HH时mm分" + /// + /// 日期 + /// 是否移除秒 + public static string ToChineseDateTimeString(this DateTime dateTime, bool isRemoveSecond = false) + { + StringBuilder result = new StringBuilder(); + result.AppendFormat("{0}年{1}月{2}日", dateTime.Year, dateTime.Month, dateTime.Day); + result.AppendFormat(" {0}时{1}分", dateTime.Hour, dateTime.Minute); + if (isRemoveSecond == false) + result.AppendFormat("{0}秒", dateTime.Second); + return result.ToString(); + } + + /// + /// 获取格式化字符串,带时分秒,格式:"yyyy年MM月dd日 HH时mm分" + /// + /// 日期 + /// 是否移除秒 + public static string ToChineseDateTimeString(this DateTime? dateTime, bool isRemoveSecond = false) + { + if (dateTime == null) + return string.Empty; + return ToChineseDateTimeString(dateTime.Value); + } + + /// + /// 日期转换为时间戳(时间戳单位秒) + /// + /// + /// + public static long ConvertToTimeStamp(this DateTime time) + { + DateTime Jan1st1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); + return (long)(time.AddHours(-8) - Jan1st1970).TotalMilliseconds; + } + + /// + /// 时间戳转换为日期(时间戳单位秒) + /// + /// + /// + public static DateTime? ConvertToDateTime(this long timeStamp) + { + if (timeStamp == 0) + return null; + var start = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); + return start.AddMilliseconds(timeStamp).AddHours(8); + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Extend/Ext.Format.cs b/公共库/EC.Utils/Extend/Ext.Format.cs new file mode 100644 index 0000000..e615d77 --- /dev/null +++ b/公共库/EC.Utils/Extend/Ext.Format.cs @@ -0,0 +1,155 @@ +namespace EC.Utils +{ + /// + /// Ext + /// 版 本:V3.0.0 + /// 版 权:EasyCode + /// 作 者:LXC + /// + public static partial class Ext + { + /// + /// 获取描述 + /// + /// 布尔值 + public static string Description(this bool value) + { + return value ? "是" : "否"; + } + + /// + /// 获取描述 + /// + /// 布尔值 + public static string Description(this bool? value) + { + return value == null ? "" : Description(value.Value); + } + + /// + /// 获取格式化字符串 + /// + /// 数值 + /// 空值显示的默认文本 + public static string Format(this int number, string defaultValue = "") + { + if (number == 0) + return defaultValue; + return number.ToString(); + } + + /// + /// 获取格式化字符串 + /// + /// 数值 + /// 空值显示的默认文本 + public static string Format(this int? number, string defaultValue = "") + { + return Format(number.SafeValue(), defaultValue); + } + + /// + /// 获取格式化字符串 + /// + /// 数值 + /// 空值显示的默认文本 + public static string Format(this decimal number, string defaultValue = "") + { + if (number == 0) + return defaultValue; + return string.Format("{0:0.##}", number); + } + + /// + /// 获取格式化字符串 + /// + /// 数值 + /// 空值显示的默认文本 + public static string Format(this decimal? number, string defaultValue = "") + { + return Format(number.SafeValue(), defaultValue); + } + + /// + /// 获取格式化字符串 + /// + /// 数值 + /// 空值显示的默认文本 + public static string Format(this double number, string defaultValue = "") + { + if (number == 0) + return defaultValue; + return string.Format("{0:0.##}", number); + } + + /// + /// 获取格式化字符串 + /// + /// 数值 + /// 空值显示的默认文本 + public static string Format(this double? number, string defaultValue = "") + { + return Format(number.SafeValue(), defaultValue); + } + + /// + /// 获取格式化字符串,带¥ + /// + /// 数值 + public static string FormatRmb(this decimal number) + { + if (number == 0) + return "¥0"; + return string.Format("¥{0:0.##}", number); + } + + /// + /// 获取格式化字符串,带¥ + /// + /// 数值 + public static string FormatRmb(this decimal? number) + { + return FormatRmb(number.SafeValue()); + } + + /// + /// 获取格式化字符串,带% + /// + /// 数值 + public static string FormatPercent(this decimal number) + { + if (number == 0) + return string.Empty; + return string.Format("{0:0.##}%", number); + } + + /// + /// 获取格式化字符串,带% + /// + /// 数值 + public static string FormatPercent(this decimal? number) + { + return FormatPercent(number.SafeValue()); + } + + /// + /// 获取格式化字符串,带% + /// + /// 数值 + public static string FormatPercent(this double number) + { + if (number == 0) + return string.Empty; + return string.Format("{0:0.##}%", number); + } + + /// + /// 获取格式化字符串,带% + /// + /// 数值 + public static string FormatPercent(this double? number) + { + return FormatPercent(number.SafeValue()); + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Extend/ExtAutoMapper.cs b/公共库/EC.Utils/Extend/ExtAutoMapper.cs new file mode 100644 index 0000000..f4942f5 --- /dev/null +++ b/公共库/EC.Utils/Extend/ExtAutoMapper.cs @@ -0,0 +1,61 @@ +using AutoMapper; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace EC.Utils +{ + /// + /// ExtAutoMapper + /// 版 本:V3.0.0 + /// 版 权:EasyCode + /// 作 者:LXC + /// + public static class ExtAutoMapper + { + /// + /// 类型映射 + /// + public static T MapTo(this object obj) + { + if (obj == null) return default(T); + var config = new MapperConfiguration(cfg => cfg.CreateMap(obj.GetType(), typeof(T))); + var mapper = config.CreateMapper(); + return mapper.Map(obj); + } + + /// + /// 集合列表类型映射 + /// + public static List MapToList(this IEnumerable source) + { + Type sourceType = source.GetType().GetGenericArguments()[0]; //获取枚举的成员类型 + var config = new MapperConfiguration(cfg => cfg.CreateMap(sourceType, typeof(TDestination))); + var mapper = config.CreateMapper(); + return mapper.Map>(source); + } + + /// + /// 集合列表类型映射 + /// + public static List MapToList(this IEnumerable source) + { + var config = new MapperConfiguration(cfg => cfg.CreateMap(typeof(TSource), typeof(TDestination))); + var mapper = config.CreateMapper(); + return mapper.Map>(source); + } + + /// + /// 类型映射 + /// + public static TDestination MapTo(this TSource source, TDestination destination) + where TSource : class + where TDestination : class + { + if (source == null) return destination; + var config = new MapperConfiguration(cfg => cfg.CreateMap(typeof(TSource), typeof(TDestination))); + var mapper = config.CreateMapper(); + return mapper.Map(source); + } + } +} diff --git a/公共库/EC.Utils/Extend/ExtHashtable.cs b/公共库/EC.Utils/Extend/ExtHashtable.cs new file mode 100644 index 0000000..031df5f --- /dev/null +++ b/公共库/EC.Utils/Extend/ExtHashtable.cs @@ -0,0 +1,45 @@ +using System.Collections; +using System.Data; +using System.Reflection; + +namespace EC.Utils +{ + /// + /// ExtHashtable + /// 版 本:V3.0.0 + /// 版 权:EasyCode + /// 作 者:LXC + /// + public static class ExtHashtable + { + /// + /// 实体转换Hashtable + /// + /// + /// + /// + public static Hashtable ToHashtable(this TEntity entity) + { + Hashtable ht = new Hashtable(); + PropertyInfo[] ps = entity.GetType().GetProperties(); + foreach (PropertyInfo i in ps) + { + ht[i.Name] = i.GetValue(entity, null); + } + return ht; + } + + /// + /// DataRow 转 HashTable + /// + /// + /// + public static Hashtable ToHashtable(this DataRow dr) + { + Hashtable htReturn = new Hashtable(dr.ItemArray.Length); + foreach (DataColumn dc in dr.Table.Columns) + htReturn.Add(dc.ColumnName, dr[dc.ColumnName]); + return htReturn; + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Extend/ExtLinq.LamadaExtention.cs b/公共库/EC.Utils/Extend/ExtLinq.LamadaExtention.cs new file mode 100644 index 0000000..6750ce8 --- /dev/null +++ b/公共库/EC.Utils/Extend/ExtLinq.LamadaExtention.cs @@ -0,0 +1,103 @@ +using System; +using System.Collections.Generic; +using System.Linq.Expressions; + +namespace EC.Utils +{ + /// + /// 动态Lamada + /// 版 本:V3.0.0 + /// 版 权:EasyCode + /// 作 者:LXC + /// + public partial class ExtLinq where T : new() + { + private List m_lstExpression = null; + private ParameterExpression m_Parameter = null; + + public ExtLinq() + { + m_lstExpression = new List(); + m_Parameter = Expression.Parameter(typeof(T), "x"); + } + + public void CreateExpression(string strPropertyName, object strValue, SearchMethod expressType) + { + Expression expRes = null; + MemberExpression member = Expression.PropertyOrField(m_Parameter, strPropertyName); + if (expressType == SearchMethod.Contains) + { + expRes = Expression.Call(member, typeof(string).GetMethod("Contains"), Expression.Constant(strValue)); + } + else if (expressType == SearchMethod.Equal) + { + expRes = Expression.Equal(member, Expression.Constant(strValue, member.Type)); + } + else if (expressType == SearchMethod.NotEqual) + { + expRes = Expression.NotEqual(member, Expression.Constant(strValue, member.Type)); + } + else if (expressType == SearchMethod.LessThan) + { + expRes = Expression.LessThan(member, Expression.Constant(strValue, member.Type)); + } + else if (expressType == SearchMethod.LessThanOrEqual) + { + expRes = Expression.LessThanOrEqual(member, Expression.Constant(strValue, member.Type)); + } + else if (expressType == SearchMethod.GreaterThan) + { + expRes = Expression.GreaterThan(member, Expression.Constant(strValue, member.Type)); + } + else if (expressType == SearchMethod.GreaterThanOrEqual) + { + expRes = Expression.GreaterThanOrEqual(member, Expression.Constant(strValue, member.Type)); + } + m_lstExpression.Add(expRes); + } + + public void CreateExpression(string strPropertyName, List lstValue) + { + Expression expRes = null; + MemberExpression member = Expression.PropertyOrField(m_Parameter, strPropertyName); + foreach (var oValue in lstValue) + { + if (expRes == null) + { + expRes = Expression.Equal(member, Expression.Constant(oValue, member.Type)); + } + else + { + expRes = Expression.Or(expRes, Expression.Equal(member, Expression.Constant(oValue, member.Type))); + } + } + m_lstExpression.Add(expRes); + } + + public Expression> GetLambda() + { + Expression whereExpr = null; + foreach (var expr in this.m_lstExpression) + { + if (whereExpr == null) + whereExpr = expr; + else + whereExpr = Expression.And(whereExpr, expr); + } + if (whereExpr == null) + return null; + return Expression.Lambda>(whereExpr, m_Parameter); + } + } + + public enum SearchMethod + { + Contains, //like + Equal, //等于 + NotEqual, //不等于 + LessThan, //小于 + LessThanOrEqual, //小于等于 + GreaterThan, //大于 + GreaterThanOrEqual //大于等于 + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Extend/ExtLinq.SortBy.cs b/公共库/EC.Utils/Extend/ExtLinq.SortBy.cs new file mode 100644 index 0000000..4e007e9 --- /dev/null +++ b/公共库/EC.Utils/Extend/ExtLinq.SortBy.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace EC.Utils +{ + /// + /// 排序 + /// 版 本:V3.0.0 + /// 版 权:EasyCode + /// 作 者:LXC + /// + public static partial class ExtLinq + { + public static IEnumerable SortBy(this IEnumerable source, string propertyName, string sord) + { + var asc = true; + if (sord.ToUpper() == "DESC") + asc = false; + return SortBy(source, propertyName, asc); + } + + public static IEnumerable SortBy(this IEnumerable source, string propertyName, bool sord) + { + Func func = s => s.GetType().GetProperty(propertyName).GetValue(s, null); + if (sord) + return source.OrderBy(func); + else + return source.OrderByDescending(func); + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Extend/ExtLinq.cs b/公共库/EC.Utils/Extend/ExtLinq.cs new file mode 100644 index 0000000..df0e1e7 --- /dev/null +++ b/公共库/EC.Utils/Extend/ExtLinq.cs @@ -0,0 +1,120 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; + +namespace EC.Utils +{ + /// + /// ExtLinq + /// 版 本:V3.0.0 + /// 版 权:EasyCode + /// 作 者:LXC + /// + public static partial class ExtLinq + { + public static Expression Property(this Expression expression, string propertyName) + { + return Expression.Property(expression, propertyName); + } + + public static Expression> True() + { + return param => true; + } + + public static Expression> False() + { + return param => false; + } + + public static Expression> And(this Expression> first, Expression> second) + { + return first.Compose(second, Expression.AndAlso); + } + + public static Expression> Or(this Expression> first, Expression> second) + { + return first.Compose(second, Expression.OrElse); + } + + public static Expression> ToLambda(string propertyName, string propertyValue) + { + var parameter = Expression.Parameter(typeof(T), "t"); + return Expression.Lambda>(Expression.Equal(parameter.Property(propertyName), Expression.Constant(propertyValue)), parameter); + } + + public static Expression ToLambda(this Expression body, params ParameterExpression[] parameters) + { + return Expression.Lambda(body, parameters); + } + + public static Expression Compose(this Expression first, Expression second, Func merge) + { + var map = first.Parameters + .Select((f, i) => new { f, s = second.Parameters[i] }) + .ToDictionary(p => p.s, p => p.f); + var secondBody = ParameterRebinder.ReplaceParameters(map, second.Body); + return Expression.Lambda(merge(first.Body, secondBody), first.Parameters); + } + + public static string GetPropertyName(Expression> expression) + { + var name = ""; + if (expression.Body is UnaryExpression) + { + name = ((MemberExpression)((UnaryExpression)expression.Body).Operand).Member.Name; + } + else if (expression.Body is MemberExpression) + { + name = ((MemberExpression)expression.Body).Member.Name; + } + else if (expression.Body is ParameterExpression) + { + name = ((ParameterExpression)expression.Body).Type.Name; + } + return name; + } + + private static bool IsNullableType(Type theType) + { + return (theType.IsGenericType && theType.GetGenericTypeDefinition().Equals(typeof(Nullable<>))); + } + + private class ParameterRebinder : ExpressionVisitor + { + private readonly Dictionary map; + + /// + /// Initializes a new instance of the class. + /// + /// The map. + private ParameterRebinder(Dictionary map) + { + this.map = map ?? new Dictionary(); + } + + /// + /// Replaces the parameters. + /// + /// The map. + /// The exp. + /// Expression + public static Expression ReplaceParameters(Dictionary map, Expression exp) + { + return new ParameterRebinder(map).Visit(exp); + } + + protected override Expression VisitParameter(ParameterExpression p) + { + ParameterExpression replacement; + + if (map.TryGetValue(p, out replacement)) + { + p = replacement; + } + return base.VisitParameter(p); + } + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Extend/ExtList.Comparint.cs b/公共库/EC.Utils/Extend/ExtList.Comparint.cs new file mode 100644 index 0000000..730727d --- /dev/null +++ b/公共库/EC.Utils/Extend/ExtList.Comparint.cs @@ -0,0 +1,53 @@ +using System.Collections.Generic; +using System.Linq; + +namespace EC.Utils +{ + /// + /// 泛型Distinct比较 + /// Data.Distinct(new ExtList("字段")).ToList(); + /// 版 本:V3.0.0 + /// 版 权:EasyCode + /// 作 者:LXC + /// + /// + public class ExtList : IEqualityComparer where T : class, new() + { + private string[] comparintFiledName = { }; + + public ExtList(params string[] comparintFiledName) + { + this.comparintFiledName = comparintFiledName; + } + + bool IEqualityComparer.Equals(T x, T y) + { + if (x == null && y == null) + { + return false; + } + if (comparintFiledName.Length == 0) + { + return x.Equals(y); + } + bool result = true; + var typeX = x.GetType();//获取类型 + var typeY = y.GetType(); + foreach (var filedName in comparintFiledName) + { + var xPropertyInfo = (from p in typeX.GetProperties() where p.Name.Equals(filedName) select p).FirstOrDefault(); + var yPropertyInfo = (from p in typeY.GetProperties() where p.Name.Equals(filedName) select p).FirstOrDefault(); + + result = result + && xPropertyInfo != null && yPropertyInfo != null + && xPropertyInfo.GetValue(x, null).ToString().Equals(yPropertyInfo.GetValue(y, null)); + } + return result; + } + + int IEqualityComparer.GetHashCode(T obj) + { + return obj.ToString().GetHashCode(); + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Extend/ExtList.cs b/公共库/EC.Utils/Extend/ExtList.cs new file mode 100644 index 0000000..db1f23f --- /dev/null +++ b/公共库/EC.Utils/Extend/ExtList.cs @@ -0,0 +1,39 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; + +namespace EC.Utils +{ + /// + /// ExtList + /// 版 本:V3.0.0 + /// 版 权:EasyCode + /// 作 者:LXC + /// + public static class ExtList + { + /// + /// List分页 + /// + /// 表数据 + /// 分页参数 + /// + public static List GetPage(List data, PageInput pagination) + { + return data.Skip(pagination.currentPage * pagination.pageSize - pagination.pageSize).Take(pagination.pageSize).ToList(); + } + + /// + /// IList转成List + /// + /// + /// + /// + public static List IListToList(IList list) + { + T[] array = new T[list.Count]; + list.CopyTo(array, 0); + return new List(array); + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Extend/ExtTable.cs b/公共库/EC.Utils/Extend/ExtTable.cs new file mode 100644 index 0000000..431a0b6 --- /dev/null +++ b/公共库/EC.Utils/Extend/ExtTable.cs @@ -0,0 +1,111 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Reflection; + +namespace EC.Utils +{ + /// + /// ExtTable + /// 版 本:V3.0.0 + /// 版 权:EasyCode + /// 作 者:LXC + /// + public static class ExtTable + { + /// + /// 获取表里某页的数据 + /// + /// 表数据 + /// 当前页 + /// 分页大小 + /// 返回总页数 + /// 返回当页表数据 + public static DataTable GetPage(this DataTable data, int pageIndex, int pageSize, out int allPage) + { + allPage = data.Rows.Count / pageSize; + allPage += data.Rows.Count % pageSize == 0 ? 0 : 1; + DataTable Ntable = data.Clone(); + int startIndex = pageIndex * pageSize; + int endIndex = startIndex + pageSize > data.Rows.Count ? data.Rows.Count : startIndex + pageSize; + if (startIndex < endIndex) + for (int i = startIndex; i < endIndex; i++) + { + Ntable.ImportRow(data.Rows[i]); + } + return Ntable; + } + + /// + /// 根据字段过滤表的内容 + /// + /// 表数据 + /// 条件 + /// + /// + public static DataTable GetDataFilter(DataTable data, string condition) + { + if (data != null && data.Rows.Count > 0) + { + if (condition.Trim() == "") + { + return data; + } + else + { + DataTable newdt = new DataTable(); + newdt = data.Clone(); + DataRow[] dr = data.Select(condition); + for (int i = 0; i < dr.Length; i++) + { + newdt.ImportRow((DataRow)dr[i]); + } + return newdt; + } + } + else + { + return null; + } + } + + /// + /// 获取表里前几条数据 + /// + /// 表数据 + /// + /// + public static DataTable GetSelectTop(DataTable data, int top) + { + if (data.Rows.Count < top) return data; + DataTable NewTable = data.Clone(); + DataRow[] rows = data.Select("1=1"); + for (int i = 0; i < top; i++) + { + NewTable.ImportRow((DataRow)rows[i]); + } + return NewTable; + } + + /// + /// List转化一个DataTable + /// + /// + /// + /// + public static DataTable ToDataTable(this IEnumerable list) + { + List pList = new List(); + Type type = typeof(T); + DataTable dt = new DataTable(); + Array.ForEach(type.GetProperties(), p => { pList.Add(p); dt.Columns.Add(p.Name); }); + foreach (var item in list) + { + DataRow row = dt.NewRow(); + pList.ForEach(p => row[p.Name] = p.GetValue(item, null)); + dt.Rows.Add(row); + } + return dt; + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/ImageHelpers/ImageHelper.cs b/公共库/EC.Utils/ImageHelpers/ImageHelper.cs new file mode 100644 index 0000000..fa44871 --- /dev/null +++ b/公共库/EC.Utils/ImageHelpers/ImageHelper.cs @@ -0,0 +1,17 @@ +namespace EC.Utils.ImageHelpers +{ + public partial class ImageHelper1 + { + //将Bitmap对象转换成bitmapImage对象 + //public BitmapImage ConvertBitmapToBitmapImage(Bitmap bitmap) + //{ + // MemoryStream stream = new MemoryStream(); + // bitmap.Save(stream, ImageFormat.Bmp); + // BitmapImage image = new BitmapImage(); + // image.BeginInit(); + // image.StreamSource = stream; + // image.EndInit(); + // return image; + //} + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/ImageHelpers/ImageHelper_Byte.cs b/公共库/EC.Utils/ImageHelpers/ImageHelper_Byte.cs new file mode 100644 index 0000000..6b281af --- /dev/null +++ b/公共库/EC.Utils/ImageHelpers/ImageHelper_Byte.cs @@ -0,0 +1,34 @@ +using System; +using System.Drawing; +using System.IO; + +namespace EC.Utils.ImageHelpers +{ + public partial class ImageHelper + { + public static byte[] ImageToByteArray(System.Drawing.Image imageIn) + { + try + { + if (imageIn == null) + { + return null; + } + MemoryStream ms = new MemoryStream(); + imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); + return ms.ToArray(); + } + catch (Exception ex) + { + return null; + } + } + + public static Image byteArrayToImage(byte[] byteArrayIn) + { + MemoryStream ms = new MemoryStream(byteArrayIn); + Image returnImage = Image.FromStream(ms); + return returnImage; + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/ImageHelpers/ImageHelper_Thum.cs b/公共库/EC.Utils/ImageHelpers/ImageHelper_Thum.cs new file mode 100644 index 0000000..3bcaec4 --- /dev/null +++ b/公共库/EC.Utils/ImageHelpers/ImageHelper_Thum.cs @@ -0,0 +1,311 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; + +namespace EC.Utils.ImageHelpers +{ + public enum JoinMode + { + Horizontal = 0, + Vertical = 1 + } + + public partial class ImageHelper + { + public static bool IsImage(string fileName) + { + string imageType = FileUnit.GetFileExt(fileName); + switch (imageType.ToLower()) + { + case ".gif": + + case ".jpg": + case ".jpeg": + + case ".bmp": + + case ".png": + return true; + + default: + return false; + } + } + + public static bool MakeThumbnail(string originalImagePath, string thumbnailPath) + { + int width = 100; + int height = 100; + string mode = "HW"; + string imageType = FileUnit.GetFileExt(thumbnailPath);// "jpg"; + return MakeThumbnail(originalImagePath, thumbnailPath, width, height, mode, imageType); + } + + /// 生成缩略图 + /// + /// 源图路径 + /// 缩略图路径 + /// 缩略图宽度 + /// 缩略图高度 + /// 生成缩略图的方式:HW指定高宽缩放(可能变形);W指定宽,高按比例 H指定高,宽按比例 Cut指定高宽裁减(不变形)   + /// 要缩略图保存的格式(gif,jpg,bmp,png) 为空或未知类型都视为jpg   + public static bool MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode, string imageType) + { + bool result = true; + + Image originalImage = Image.FromFile(originalImagePath); + int towidth = width; + int toheight = height; + int x = 0; + int y = 0; + int ow = originalImage.Width; + int oh = originalImage.Height; + switch (mode) + { + case "HW"://指定高宽缩放(可能变形)         + break; + + case "W"://指定宽,高按比例           + toheight = originalImage.Height * width / originalImage.Width; + break; + + case "H"://指定高,宽按比例 + towidth = originalImage.Width * height / originalImage.Height; + break; + + case "Cut"://指定高宽裁减(不变形)         + if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight) + { + oh = originalImage.Height; + ow = originalImage.Height * towidth / toheight; + y = 0; + x = (originalImage.Width - ow) / 2; + } + else + { + ow = originalImage.Width; + oh = originalImage.Width * height / towidth; + x = 0; + y = (originalImage.Height - oh) / 2; + } + break; + + default: + break; + } + //新建一个bmp图片 + Image bitmap = new System.Drawing.Bitmap(towidth, toheight); + //新建一个画板 + Graphics g = System.Drawing.Graphics.FromImage(bitmap); + //设置高质量插值法 + g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; + //设置高质量,低速度呈现平滑程度 + g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; + //清空画布并以透明背景色填充 + g.Clear(Color.Transparent); + //在指定位置并且按指定大小绘制原图片的指定部分 + g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight), + new Rectangle(x, y, ow, oh), + GraphicsUnit.Pixel); + try + { + // 以jpg格式保存缩略图 + switch (imageType.ToLower()) + { + case ".gif": + bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Gif); + break; + + case ".jpg": + case ".jpeg": + bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg); + break; + + case ".bmp": + bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Bmp); + break; + + case ".png": + bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Png); + break; + + default: + bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg); + break; + } + } + catch (System.Exception e) + { + throw e; + } + finally + { + originalImage.Dispose(); + bitmap.Dispose(); + g.Dispose(); + } + + return result; + } + + public static Image MakeThumbnail(Bitmap originalImage, int width) + { + int towidth = width; + int toheight = 0; + int x = 0; + int y = 0; + int ow = originalImage.Width; + int oh = originalImage.Height; + if (ow <= width) + { + return originalImage; + } + toheight = (int)(width * 0.64);// oh * width / ow; + + //新建一个bmp图片 + Image bitmap = new System.Drawing.Bitmap(towidth, toheight); + //新建一个画板 + Graphics g = System.Drawing.Graphics.FromImage(bitmap); + //设置高质量插值法 + g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; + //设置高质量,低速度呈现平滑程度 + g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; + //清空画布并以透明背景色填充 + g.Clear(Color.Transparent); + //在指定位置并且按指定大小绘制原图片的指定部分 + g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight), + new Rectangle(x, y, ow, oh), + GraphicsUnit.Pixel); + try + { + // 以jpg格式保存缩略图 + //switch (imageType.ToLower()) + //{ + // case ".gif": + // bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Gif); + // break; + // case ".jpg": + // case ".jpeg": + // bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg); + // break; + // case ".bmp": + // bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Bmp); + // break; + // case ".png": + // bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Png); + // break; + // default: + // bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg); + // break; + //} + return bitmap; + } + catch (System.Exception e) + { + throw e; + } + finally + { + originalImage.Dispose(); + bitmap.Dispose(); + g.Dispose(); + } + + return null; + } + + /// + /// 生成 扫描条码 与扫描指示 图 + /// + /// 条码路径 + /// 指示图路径 + public static void JoinQrCodeImage(string QrCodefullfilename, string rightfullfilename) + { + List imageList = new List(); + Image qrCodeImage = Image.FromFile(QrCodefullfilename); + imageList.Add(qrCodeImage); + Image rightImage = Image.FromFile(rightfullfilename); + imageList.Add(rightImage); + Image newImage = JoinImage(imageList, JoinMode.Horizontal, 80); + string saveCodefullfilename = QrCodefullfilename.Replace(".png", ".jpg"); + newImage.Save(saveCodefullfilename, System.Drawing.Imaging.ImageFormat.Jpeg); + } + + /// + /// 拼接图片 + /// + /// + /// + /// + private static Image JoinImage(List imageList, JoinMode jm, int zoom) + { + //图片列表 + if (imageList.Count <= 0) + return null; + if (jm == JoinMode.Horizontal) + { + //横向拼接 + int width = 0; + //计算总长度 + foreach (Image i in imageList) + { + width += i.Width; + } + //高度不变 + int height = imageList.Max(x => x.Height); + + width = width * zoom / 100; + height = height * zoom / 100; + //构造最终的图片白板 + Bitmap tableChartImage = new Bitmap(width, height); + Graphics graph = Graphics.FromImage(tableChartImage); + //初始化这个大图 + graph.DrawImage(tableChartImage, width, height); + //初始化当前宽 + int left = 0; + foreach (Image i in imageList) + { + int curWidth = i.Width * zoom / 100; + int curHeight = i.Height * zoom / 100; + //拼图 + graph.DrawImage(i, left, 0, curWidth, curHeight); + //拼接改图后,当前宽度 + left += curWidth; + } + return tableChartImage; + } + else if (jm == JoinMode.Vertical) + { + //纵向拼接 + int height = 0; + //计算总长度 + foreach (Image i in imageList) + { + height += i.Height; + } + //宽度不变 + int width = imageList.Max(x => x.Width); + //构造最终的图片白板 + Bitmap tableChartImage = new Bitmap(width, height); + Graphics graph = Graphics.FromImage(tableChartImage); + //初始化这个大图 + graph.DrawImage(tableChartImage, width, height); + //初始化当前宽 + int currentHeight = 0; + foreach (Image i in imageList) + { + //拼图 + graph.DrawImage(i, 0, currentHeight); + //拼接改图后,当前宽度 + currentHeight += i.Height; + } + return tableChartImage; + } + else + { + return null; + } + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Json.cs b/公共库/EC.Utils/Json.cs new file mode 100644 index 0000000..cc8cd08 --- /dev/null +++ b/公共库/EC.Utils/Json.cs @@ -0,0 +1,51 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.Collections.Generic; +using System.Data; + +namespace EC.Utils +{ + /// + /// Json操作 + /// + public static class Json + { + public static object ToJson(this string Json) + { + return Json == null ? null : JsonConvert.DeserializeObject(Json); + } + + public static string ToJson(this object obj) + { + var timeConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" }; + return JsonConvert.SerializeObject(obj, timeConverter); + } + + public static string ToJson(this object obj, string datetimeformats) + { + var timeConverter = new IsoDateTimeConverter { DateTimeFormat = datetimeformats }; + return JsonConvert.SerializeObject(obj, timeConverter); + } + + public static T ToObject(this string Json) + { + return Json == null ? default(T) : JsonConvert.DeserializeObject(Json); + } + + public static List ToList(this string Json) + { + return Json == null ? null : JsonConvert.DeserializeObject>(Json); + } + + public static DataTable ToTable(this string Json) + { + return Json == null ? null : JsonConvert.DeserializeObject(Json); + } + + public static JObject ToJObject(this string Json) + { + return Json == null ? JObject.Parse("{}") : JObject.Parse(Json.Replace(" ", "")); + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Log4/Log.cs b/公共库/EC.Utils/Log4/Log.cs new file mode 100644 index 0000000..94e57e9 --- /dev/null +++ b/公共库/EC.Utils/Log4/Log.cs @@ -0,0 +1,79 @@ +using log4net; +using System; +using System.Text; + +namespace EC.Utils +{ + /// + /// Log + /// 版 本:V3.0.0 + /// 版 权:EasyCode + /// 作 者:LXC + /// + public class Log + { + /// + /// 日志实体类 + /// + private ILog logger; + + /// + /// 构造函数 + /// + /// 日志操作对象 + public Log(ILog log) + { + this.logger = log; + } + + /// + /// 调试日志 + /// + /// 消息 + public void Debug(object message) + { + this.logger.Debug(this.LogTemplate(message)); + } + + /// + /// 错误日志 + /// + /// 消息 + public void Error(object message) + { + this.logger.Error(this.LogTemplate(message)); + } + + /// + /// 信息日志 + /// + /// 消息 + public void Info(object message) + { + this.logger.Info(this.LogTemplate(message)); + } + + /// + /// 警告日志 + /// + /// 消息 + public void Warn(object message) + { + this.logger.Warn(this.LogTemplate(message)); + } + + /// + /// 日志模板 + /// + /// 信息 + /// + private string LogTemplate(object message) + { + StringBuilder sb = new StringBuilder(); + sb.Append("1. 时间: " + DateTime.Now + " \r\n"); + sb.Append("2. 内容: " + message + "\r\n"); + sb.Append("-----------------------------------------------------------------------------------------------------------------------------\r\n"); + return sb.ToString(); + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Log4/LogFactory.cs b/公共库/EC.Utils/Log4/LogFactory.cs new file mode 100644 index 0000000..4da82dd --- /dev/null +++ b/公共库/EC.Utils/Log4/LogFactory.cs @@ -0,0 +1,32 @@ +using log4net; +using System.IO; + +namespace EC.Utils +{ + /// + /// LogFactory + /// 版 本:V3.0.0 + /// 版 权:EasyCode + /// 作 者:LXC + /// + public class LogFactory + { + /// + /// 构造函数 + /// + static LogFactory() + { + var repository = LogManager.CreateRepository("ExceptionEx"); + log4net.Config.XmlConfigurator.Configure(repository, new FileInfo("log4.config")); + } + + /// + /// 获取日志操作对象 + /// + /// + public static Log GetLogger() + { + return new Log(LogManager.GetLogger("ExceptionEx", "")); + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Models/PageInput.T.cs b/公共库/EC.Utils/Models/PageInput.T.cs new file mode 100644 index 0000000..66ed4c0 --- /dev/null +++ b/公共库/EC.Utils/Models/PageInput.T.cs @@ -0,0 +1,13 @@ +namespace EC.Utils +{ + /// + /// 分页信息输入 + /// + public class PageInput : PageInput where T : new() + { + /// + /// 查询条件 + /// + public T Filter { get; set; } = new T(); + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Models/PageInput.cs b/公共库/EC.Utils/Models/PageInput.cs new file mode 100644 index 0000000..4603d28 --- /dev/null +++ b/公共库/EC.Utils/Models/PageInput.cs @@ -0,0 +1,38 @@ +namespace EC.Utils +{ + /// + /// 分页信息输入 + /// + public class PageInput + { + /// + /// 当前页码:pageIndex + /// + public int currentPage { get; set; } = 1; + + /// + /// 每页行数 + /// + public int pageSize { set; get; } = 50; + + /// + /// 排序字段:sortField + /// + public string sidx { get; set; } + + /// + /// 排序类型:sortType + /// + public string sord { get; set; } = "desc"; + + /// + /// 查询关键字 + /// + public string keyword { get; set; } + + /// + /// 查询条件 + /// + public string queryJson { get; set; } = null; + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Models/PageOutput.cs b/公共库/EC.Utils/Models/PageOutput.cs new file mode 100644 index 0000000..106ad42 --- /dev/null +++ b/公共库/EC.Utils/Models/PageOutput.cs @@ -0,0 +1,9 @@ +namespace EC.Utils +{ + public class PageOutput + { + public int currentPage { get; set; } + public int pageSize { get; set; } + public int total { get; set; } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Models/PageResult.T.cs b/公共库/EC.Utils/Models/PageResult.T.cs new file mode 100644 index 0000000..171291f --- /dev/null +++ b/公共库/EC.Utils/Models/PageResult.T.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; + +namespace EC.Utils +{ + /// + /// 分页信息输出 + /// + public class PageResult + { + /// + /// 数据 + /// + public List list { get; set; } + + /// + /// 分页 + /// + public PageOutput pagination { get; set; } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Models/PageResult.cs b/公共库/EC.Utils/Models/PageResult.cs new file mode 100644 index 0000000..a2b37c8 --- /dev/null +++ b/公共库/EC.Utils/Models/PageResult.cs @@ -0,0 +1,18 @@ +namespace EC.Utils +{ + /// + /// 分页信息输出 + /// + public class PageResult + { + /// + /// 数据 + /// + public object list { get; set; } + + /// + /// 分页 + /// + public PageOutput pagination { get; set; } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Models/ParamsModel.cs b/公共库/EC.Utils/Models/ParamsModel.cs new file mode 100644 index 0000000..55eb404 --- /dev/null +++ b/公共库/EC.Utils/Models/ParamsModel.cs @@ -0,0 +1,8 @@ +namespace EC.Utils +{ + public class ParamsModel + { + public string value { get; set; } + public string field { get; set; } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Nets/FTPHelper.cs b/公共库/EC.Utils/Nets/FTPHelper.cs new file mode 100644 index 0000000..ee10865 --- /dev/null +++ b/公共库/EC.Utils/Nets/FTPHelper.cs @@ -0,0 +1,60 @@ +using System; +using System.IO; +using System.Net; + +namespace EC.Utils +{ + /// + /// FTPHelper + /// 版 本:V3.0.0 + /// 版 权:EasyCode + /// 作 者:LXC + /// + public class FTPHelper + { + private FtpWebRequest _ftp; + private readonly string _ftpUrl; + private readonly string _userName; + private readonly string _passWord; + + public FTPHelper(string ftpUrl, string userName, string passWord) + { + this._ftpUrl = ftpUrl; + this._userName = userName; + this._passWord = passWord; + Connect(); + } + + private void Connect() + { + _ftp = (FtpWebRequest)WebRequest.Create(new Uri(this._ftpUrl)); + _ftp.UseBinary = true; + _ftp.Credentials = new NetworkCredential(this._userName, this._passWord); + } + + public bool UpLoad(string file) + { + FileInfo copyfile = new FileInfo(file); + _ftp.Method = WebRequestMethods.Ftp.UploadFile; + const int bufflength = 2048; + byte[] buff = new byte[bufflength]; + FileStream upstream = copyfile.OpenRead(); + try + { + Stream ftpstream = _ftp.GetRequestStream(); + int readLength; + while ((readLength = upstream.Read(buff, 0, bufflength)) > 0) + { + ftpstream.Write(buff, 0, readLength); + } + upstream.Close(); + ftpstream.Close(); + return true; + } + catch + { + return false; + } + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Nets/HttpContext.cs b/公共库/EC.Utils/Nets/HttpContext.cs new file mode 100644 index 0000000..f909701 --- /dev/null +++ b/公共库/EC.Utils/Nets/HttpContext.cs @@ -0,0 +1,28 @@ +using Microsoft.AspNetCore.Http; + +namespace EC.Utils +{ + /// + /// HttpContext + /// 版 本:V3.0.0 + /// 版 权:EasyCode + /// 作 者:LXC + /// + public static class HttpContext + { + private static IHttpContextAccessor _httpContextAccessor; + + public static void Configure(IHttpContextAccessor httpContextAccessor) + { + _httpContextAccessor = httpContextAccessor; + } + + public static Microsoft.AspNetCore.Http.HttpContext Current + { + get + { + return _httpContextAccessor.HttpContext; + } + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Nets/HttpMethods.cs b/公共库/EC.Utils/Nets/HttpMethods.cs new file mode 100644 index 0000000..bcfbd3b --- /dev/null +++ b/公共库/EC.Utils/Nets/HttpMethods.cs @@ -0,0 +1,551 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Net; +using System.Net.Http; +using System.Net.Security; +using System.Security.Cryptography.X509Certificates; +using System.Text; + +namespace EC.Utils +{ + /// + /// HttpMethods + /// 版 本:V3.0.0 + /// 版 权:EasyCode + /// 作 者:LXC + /// + public class HttpMethods + { + #region POST + + /// + /// HTTP POST方式请求数据 + /// + /// URL. + /// POST的数据 + /// + public static string HttpPost(string url, string param = null) + { + HttpWebRequest request; + + //如果是发送HTTPS请求 + if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) + { + ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); + request = WebRequest.Create(url) as HttpWebRequest; + request.ProtocolVersion = HttpVersion.Version10; + } + else + { + request = WebRequest.Create(url) as HttpWebRequest; + } + + request.Method = "POST"; + request.ContentType = "application/x-www-form-urlencoded"; + request.Accept = "*/*"; + request.Timeout = 15000; + request.AllowAutoRedirect = false; + + StreamWriter requestStream = null; + WebResponse response = null; + string responseStr = null; + + try + { + requestStream = new StreamWriter(request.GetRequestStream()); + requestStream.Write(param); + requestStream.Close(); + + response = request.GetResponse(); + if (response != null) + { + StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); + responseStr = reader.ReadToEnd(); + reader.Close(); + } + } + catch (Exception ex) + { + throw; + } + finally + { + request = null; + requestStream = null; + response = null; + } + + return responseStr; + } + + private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) + { + return true; //总是接受 + } + + public static string BuildRequest(string strUrl, Dictionary dicPara, string fileName) + { + string contentType = "image/jpeg"; + //待请求参数数组 + FileStream Pic = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); + byte[] PicByte = new byte[Pic.Length]; + Pic.Read(PicByte, 0, PicByte.Length); + int lengthFile = PicByte.Length; + + //构造请求地址 + + //设置HttpWebRequest基本信息 + HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(strUrl); + //设置请求方式:get、post + request.Method = "POST"; + //设置boundaryValue + string boundaryValue = DateTime.Now.Ticks.ToString("x"); + string boundary = "--" + boundaryValue; + request.ContentType = "\r\nmultipart/form-data; boundary=" + boundaryValue; + //设置KeepAlive + request.KeepAlive = true; + //设置请求数据,拼接成字符串 + StringBuilder sbHtml = new StringBuilder(); + foreach (KeyValuePair key in dicPara) + { + sbHtml.Append(boundary + "\r\nContent-Disposition: form-data; name=\"" + key.Key + "\"\r\n\r\n" + key.Value + "\r\n"); + } + sbHtml.Append(boundary + "\r\nContent-Disposition: form-data; name=\"pic\"; filename=\""); + sbHtml.Append(fileName); + sbHtml.Append("\"\r\nContent-Type: " + contentType + "\r\n\r\n"); + string postHeader = sbHtml.ToString(); + //将请求数据字符串类型根据编码格式转换成字节流 + Encoding code = Encoding.GetEncoding("UTF-8"); + byte[] postHeaderBytes = code.GetBytes(postHeader); + byte[] boundayBytes = Encoding.ASCII.GetBytes("\r\n" + boundary + "--\r\n"); + //设置长度 + long length = postHeaderBytes.Length + lengthFile + boundayBytes.Length; + request.ContentLength = length; + + //请求远程HTTP + Stream requestStream = request.GetRequestStream(); + Stream myStream = null; + try + { + //发送数据请求服务器 + requestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length); + requestStream.Write(PicByte, 0, lengthFile); + requestStream.Write(boundayBytes, 0, boundayBytes.Length); + HttpWebResponse HttpWResp = (HttpWebResponse)request.GetResponse(); + myStream = HttpWResp.GetResponseStream(); + } + catch (WebException) + { + //LogResult(e.Message); + return ""; + } + finally + { + if (requestStream != null) + { + requestStream.Close(); + } + } + + //读取处理结果 + StreamReader reader = new StreamReader(myStream, code); + StringBuilder responseData = new StringBuilder(); + + String line; + while ((line = reader.ReadLine()) != null) + { + responseData.Append(line); + } + myStream.Close(); + Pic.Close(); + + return responseData.ToString(); + } + + #endregion POST + + #region Put + + /// + /// HTTP Put方式请求数据. + /// + /// URL. + /// + public static string HttpPut(string url, string param = null) + { + HttpWebRequest request; + + //如果是发送HTTPS请求 + if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) + { + ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); + request = WebRequest.Create(url) as HttpWebRequest; + request.ProtocolVersion = HttpVersion.Version10; + } + else + { + request = WebRequest.Create(url) as HttpWebRequest; + } + request.Method = "PUT"; + request.ContentType = "application/x-www-form-urlencoded"; + request.Accept = "*/*"; + request.Timeout = 15000; + request.AllowAutoRedirect = false; + + StreamWriter requestStream = null; + WebResponse response = null; + string responseStr = null; + + try + { + requestStream = new StreamWriter(request.GetRequestStream()); + requestStream.Write(param); + requestStream.Close(); + + response = request.GetResponse(); + if (response != null) + { + StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); + responseStr = reader.ReadToEnd(); + reader.Close(); + } + } + catch (Exception) + { + throw; + } + finally + { + request = null; + requestStream = null; + response = null; + } + + return responseStr; + } + + #endregion Put + + #region Delete + + /// + /// HTTP Delete方式请求数据. + /// + /// URL. + /// + public static string HttpDelete(string url, string param = null) + { + HttpWebRequest request; + + //如果是发送HTTPS请求 + if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) + { + ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); + request = WebRequest.Create(url) as HttpWebRequest; + request.ProtocolVersion = HttpVersion.Version10; + } + else + { + request = WebRequest.Create(url) as HttpWebRequest; + } + request.Method = "Delete"; + request.ContentType = "application/x-www-form-urlencoded"; + request.Accept = "*/*"; + request.Timeout = 15000; + request.AllowAutoRedirect = false; + + StreamWriter requestStream = null; + WebResponse response = null; + string responseStr = null; + + try + { + requestStream = new StreamWriter(request.GetRequestStream()); + requestStream.Write(param); + requestStream.Close(); + + response = request.GetResponse(); + if (response != null) + { + StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); + responseStr = reader.ReadToEnd(); + reader.Close(); + } + } + catch (Exception) + { + throw; + } + return responseStr; + } + + #endregion Delete + + #region Get + + /// + /// HTTP GET方式请求数据. + /// + /// URL. + /// + public static string HttpGet(string url, Hashtable headht = null) + { + HttpWebRequest request; + + //如果是发送HTTPS请求 + if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) + { + ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); + request = WebRequest.Create(url) as HttpWebRequest; + request.ProtocolVersion = HttpVersion.Version10; + } + else + { + request = WebRequest.Create(url) as HttpWebRequest; + } + request.Method = "GET"; + //request.ContentType = "application/x-www-form-urlencoded"; + request.Accept = "*/*"; + request.Timeout = 15000; + request.AllowAutoRedirect = false; + WebResponse response = null; + string responseStr = null; + if (headht != null) + { + foreach (DictionaryEntry item in headht) + { + request.Headers.Add(item.Key.ToString(), item.Value.ToString()); + } + } + + try + { + response = request.GetResponse(); + + if (response != null) + { + StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); + responseStr = reader.ReadToEnd(); + reader.Close(); + } + } + catch (Exception) + { + throw; + } + return responseStr; + } + + public static string HttpGet(string url, Encoding encodeing, Hashtable headht = null) + { + HttpWebRequest request; + + //如果是发送HTTPS请求 + if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) + { + ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); + request = WebRequest.Create(url) as HttpWebRequest; + request.ProtocolVersion = HttpVersion.Version10; + } + else + { + request = WebRequest.Create(url) as HttpWebRequest; + } + request.Method = "GET"; + //request.ContentType = "application/x-www-form-urlencoded"; + request.Accept = "*/*"; + request.Timeout = 15000; + request.AllowAutoRedirect = false; + WebResponse response = null; + string responseStr = null; + if (headht != null) + { + foreach (DictionaryEntry item in headht) + { + request.Headers.Add(item.Key.ToString(), item.Value.ToString()); + } + } + + try + { + response = request.GetResponse(); + + if (response != null) + { + StreamReader reader = new StreamReader(response.GetResponseStream(), encodeing); + responseStr = reader.ReadToEnd(); + reader.Close(); + } + } + catch (Exception) + { + throw; + } + return responseStr; + } + + #endregion Get + + #region Post With Pic + + private string HttpPost(string url, IDictionary param, string filePath) + { + string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x"); + byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n"); + + HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url); + wr.ContentType = "multipart/form-data; boundary=" + boundary; + wr.Method = "POST"; + wr.KeepAlive = true; + wr.Credentials = System.Net.CredentialCache.DefaultCredentials; + + Stream rs = wr.GetRequestStream(); + string responseStr = null; + + string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}"; + foreach (string key in param.Keys) + { + rs.Write(boundarybytes, 0, boundarybytes.Length); + string formitem = string.Format(formdataTemplate, key, param[key]); + byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem); + rs.Write(formitembytes, 0, formitembytes.Length); + } + rs.Write(boundarybytes, 0, boundarybytes.Length); + + string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n"; + string header = string.Format(headerTemplate, "pic", filePath, "text/plain"); + byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header); + rs.Write(headerbytes, 0, headerbytes.Length); + + FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read); + byte[] buffer = new byte[4096]; + int bytesRead = 0; + while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0) + { + rs.Write(buffer, 0, bytesRead); + } + fileStream.Close(); + + byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n"); + rs.Write(trailer, 0, trailer.Length); + rs.Close(); + + WebResponse wresp = null; + try + { + wresp = wr.GetResponse(); + Stream stream2 = wresp.GetResponseStream(); + StreamReader reader2 = new StreamReader(stream2); + responseStr = reader2.ReadToEnd(); + //logger.Debug(string.Format("File uploaded, server response is: {0}", responseStr)); + } + catch (Exception) + { + //logger.Error("Error uploading file", ex); + if (wresp != null) + { + wresp.Close(); + wresp = null; + } + throw; + } + return responseStr; + } + + #endregion Post With Pic + + #region Post With Pic + + /// + /// HTTP POST方式请求数据(带图片) + /// + /// URL + /// POST的数据 + /// 图片 + /// + public static string HttpPost(string url, IDictionary param, byte[] fileByte) + { + string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x"); + byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n"); + + HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url); + wr.ContentType = "multipart/form-data; boundary=" + boundary; + wr.Method = "POST"; + wr.KeepAlive = true; + wr.Credentials = System.Net.CredentialCache.DefaultCredentials; + + Stream rs = wr.GetRequestStream(); + string responseStr = null; + + string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}"; + foreach (string key in param.Keys) + { + rs.Write(boundarybytes, 0, boundarybytes.Length); + string formitem = string.Format(formdataTemplate, key, param[key]); + byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem); + rs.Write(formitembytes, 0, formitembytes.Length); + } + rs.Write(boundarybytes, 0, boundarybytes.Length); + + string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n"; + string header = string.Format(headerTemplate, "pic", fileByte, "text/plain");//image/jpeg + byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header); + rs.Write(headerbytes, 0, headerbytes.Length); + + rs.Write(fileByte, 0, fileByte.Length); + + byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n"); + rs.Write(trailer, 0, trailer.Length); + rs.Close(); + + WebResponse wresp = null; + try + { + wresp = wr.GetResponse(); + Stream stream2 = wresp.GetResponseStream(); + StreamReader reader2 = new StreamReader(stream2); + responseStr = reader2.ReadToEnd(); + // logger.Error(string.Format("File uploaded, server response is: {0}", responseStr)); + } + catch (Exception) + { + //logger.Error("Error uploading file", ex); + if (wresp != null) + { + wresp.Close(); + wresp = null; + } + throw; + } + return responseStr; + } + + #endregion Post With Pic + + #region HttpsClient + + /// + /// 创建HttpClient + /// + /// + public static HttpClient CreateHttpClient(string url) + { + HttpClient httpclient; + //如果是发送HTTPS请求 + if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) + { + ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; + httpclient = new HttpClient(); + } + else + { + httpclient = new HttpClient(); + } + return httpclient; + } + + #endregion HttpsClient + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Nets/Net.cs b/公共库/EC.Utils/Nets/Net.cs new file mode 100644 index 0000000..6c3c080 --- /dev/null +++ b/公共库/EC.Utils/Nets/Net.cs @@ -0,0 +1,268 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.Net.Http.Headers; +using System; +using System.Collections.Generic; +using System.Net.NetworkInformation; +using System.Text; +using System.Text.RegularExpressions; + +namespace EC.Utils +{ + /// + /// 网络操作 + /// 版 本:V3.0.0 + /// 版 权:EasyCode + /// 作 者:LXC + /// + public class Net + { + #region Ip(获取Ip) + + /// + /// 获取Ip + /// + public static string Ip + { + get + { + var remoteIp = GetWebProxyRealIp() ?? HttpContext.Current.Connection.RemoteIpAddress.ToString(); + if (remoteIp == "::1" || remoteIp == "") + { + remoteIp = "127.0.0.1"; + } + return remoteIp; + } + } + + /// + /// 获取Web代理真实IP + /// + /// + private static string GetWebProxyRealIp() + { + var request = HttpContext.Current.Request; + string ip = request.Headers["x-forwarded-for"]; + if (string.IsNullOrEmpty(ip) || string.Equals("unknown", ip, StringComparison.OrdinalIgnoreCase)) + { + ip = request.Headers["Proxy-Client-IP"]; + } + if (string.IsNullOrEmpty(ip) || string.Equals("unknown", ip, StringComparison.OrdinalIgnoreCase)) + { + ip = request.Headers["WL-Proxy-Client-IP"]; + } + if (string.IsNullOrEmpty(ip)) + { + return string.Empty; + } + return ip; + } + + #endregion Ip(获取Ip) + + #region 获取mac地址 + + /// + /// 返回描述本地计算机上的网络接口的对象(网络接口也称为网络适配器)。 + /// + /// + public static NetworkInterface[] NetCardInfo() + { + return NetworkInterface.GetAllNetworkInterfaces(); + } + + /// + /// 通过NetworkInterface读取网卡Mac + /// + /// + public static List GetMacByNetworkInterface() + { + List macs = new List(); + NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces(); + foreach (NetworkInterface ni in interfaces) + { + macs.Add(ni.GetPhysicalAddress().ToString()); + } + return macs; + } + + #endregion 获取mac地址 + + #region Ip城市(获取Ip城市) + + /// + /// 获取IP地址信息 + /// + /// + /// + public static string GetLocation(string ip) + { + string res = ""; + return res; + try + { + string url = "http://apis.juhe.cn/ip/ip2addr?ip=" + ip + "&dtype=json&key=b39857e36bee7a305d55cdb113a9d725"; + res = HttpMethods.HttpGet(url); + var resjson = res.ToObject(); + if (resjson.result != null) + { + res = resjson.result.area + " " + resjson.result.location; + } + else + { + res = ""; + } + } + catch + { + res = ""; + } + if (!string.IsNullOrEmpty(res)) + { + return res; + } + try + { + string url = "https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?query=" + ip + "&resource_id=6006&ie=utf8&oe=gbk&format=json"; + res = HttpMethods.HttpGet(url, Encoding.GetEncoding("GBK")); + var resjson = res.ToObject(); + res = resjson.data[0].location; + } + catch + { + res = ""; + } + return res; + } + + /// + /// 百度接口 + /// + public class obj + { + public List data { get; set; } + } + + public class dataone + { + public string location { get; set; } + } + + /// + /// 聚合数据 + /// + public class objex + { + public string resultcode { get; set; } + public dataoneex result { get; set; } + public string reason { get; set; } + public string error_code { get; set; } + } + + public class dataoneex + { + public string area { get; set; } + public string location { get; set; } + } + + #endregion Ip城市(获取Ip城市) + + #region Browser(获取浏览器信息) + + /// + /// 获取UserAgent + /// + public static string UserAgent + { + get + { + if (HttpContext.Current == null) + return string.Empty; + IHeaderDictionary headersDictionary = HttpContext.Current.Request.Headers; + return headersDictionary[HeaderNames.UserAgent].ToString(); + } + } + + /// + /// 获取浏览器header + /// + public static IHeaderDictionary Headers + { + get + { + return HttpContext.Current.Request.Headers; + } + } + + /// + /// 获取Origin + /// + public static string Origin + { + get + { + return Net.Headers[HeaderNames.Origin]; + } + } + + #endregion Browser(获取浏览器信息) + + #region 请求地址 + + /// + /// 请求地址 + /// + public static string RequestURI + { + get + { + if (HttpContext.Current == null) + return string.Empty; + return HttpContext.Current.Request.Path; + } + } + + #endregion 请求地址 + + #region 请求方法 + + /// + /// 请求方法 + /// + public static string RequestMethod + { + get + { + if (HttpContext.Current == null) + return string.Empty; + return HttpContext.Current.Request.Method; + } + } + + #endregion 请求方法 + + #region 请求客户端是否为移动端 + + /// + /// 请求客户端是否为移动端 + /// + /// + /// + public static bool isMobileBrowser + { + get + { + Regex b = new Regex(@"(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino", RegexOptions.IgnoreCase | RegexOptions.Multiline); + Regex v = new Regex(@"1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-", RegexOptions.IgnoreCase | RegexOptions.Multiline); + var request = HttpContext.Current; + var userAgent = UserAgent; + if ((b.IsMatch(userAgent) || v.IsMatch(userAgent.Substring(0, 4)))) + { + return true; + } + return false; + } + } + + #endregion 请求客户端是否为移动端 + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Nets/NetUnit.cs b/公共库/EC.Utils/Nets/NetUnit.cs new file mode 100644 index 0000000..74960e0 --- /dev/null +++ b/公共库/EC.Utils/Nets/NetUnit.cs @@ -0,0 +1,625 @@ +using System.IO; +using System.Net; +using System.Text; +using System.Text.RegularExpressions; + +namespace System +{ + /// + /// 网络操作单元 + /// + public partial class NetUnit + { + #region 获取主机名称 + + /// + /// 获取本地机器名称 + /// + /// 机器名称 + public static string GetHostName() + { + string hostName = ""; + try + { + hostName = Dns.GetHostName(); + return hostName; + } + catch + { + return null; + } + } + + #endregion 获取主机名称 + + #region 获取本地主机IP + + /// + /// 获取本地机器IP + /// + /// IP地址 + public static string GetHostIp() + { + string localIp = ""; + try + { + System.Net.IPAddress[] addressList = Dns.GetHostByName(Dns.GetHostName()).AddressList; + for (int i = 0; i < addressList.Length; i++) + { + localIp += addressList[i].ToString(); + } + return localIp; + } + catch + { + return null; + } + } + + #endregion 获取本地主机IP + + #region 穿过代理服务器获得Ip地址,如果有多个IP,则第一个是用户的真实IP,其余全是代理的IP,用逗号隔开 + + //public static string getRealIp() + //{ + // string UserIP; + // if (HttpContext.Current.Request.ServerVariables["HTTP_VIA"]!=null) //得到穿过代理服务器的ip地址 + // { + // UserIP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); + // } + // else + // { + // UserIP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString(); + // } + // return UserIP; + //} + + #endregion 穿过代理服务器获得Ip地址,如果有多个IP,则第一个是用户的真实IP,其余全是代理的IP,用逗号隔开 + + #region 获取主机MAC地址 + + /// + /// 获取本机MAC地址 + /// + /// string null + public static string GetHostMac() + { + //string mac = ""; + //try + //{ + // ManagementClass mc; + // mc=new ManagementClass("Win32_NetworkAdapterConfiguration"); + // ManagementObjectCollection moc=mc.GetInstances(); + // foreach(ManagementObject mo in moc) + // { + // if(mo["IPEnabled"].ToString()=="True") + // mac=mo["MacAddress"].ToString(); + // } + // return mac; + //} + //catch + //{ + // return null; + //} + return null; + } + + #endregion 获取主机MAC地址 + + #region 获取本机IP + + public static string GetLocalIp() + { + //Page.Request.UserHostName + return null; + } + + #endregion 获取本机IP + + /// + /// C# 验证IP + /// + /// + /// + public static bool IsIP(string ip) + { + string pattern = @"(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))"; + Regex objRe = new Regex(pattern); + Match objMa = objRe.Match(ip); + if (!objMa.Success) + { + return false; + } + else return true; + } + + public static string PingResult(string ip) + { + System.Net.NetworkInformation.Ping p = new System.Net.NetworkInformation.Ping(); + System.Net.NetworkInformation.PingOptions options = new System.Net.NetworkInformation.PingOptions(); + options.DontFragment = true; + string data = "Lxc"; + byte[] buffer = Encoding.ASCII.GetBytes(data); + //Wait seconds for a reply. + int timeout = 100; + + System.Net.NetworkInformation.PingReply reply = p.Send(ip, timeout, buffer, options); + return reply.Status.ToString(); + } + + #region 获取指定WEB页面 + + /// GET方法获取页面 + /// 函数名:GetWebUrl + /// 功能描述:WebClient 获取页面 + /// 处理流程: + /// 算法描述: + /// 作 者: lxc + /// 日 期: 2012-10-09 + /// 修 改: + /// 日 期: + /// 版 本: + public static string GetWebUrl(string strurl) + { + WebClient webClient = new WebClient(); + try + { + webClient.Credentials = CredentialCache.DefaultCredentials; + Byte[] pageData = webClient.DownloadData(strurl); + //string pageHtml = Encoding.UTF8.GetString(pageData); + string pageHtml = Encoding.Default.GetString(pageData); + return pageHtml; + } + catch (WebException webEx) + { + return "error_GetWebUrl:" + webEx.ToString(); + } + finally + { + webClient = null; + } + } + + #endregion 获取指定WEB页面 + + #region PostUrl(String url, String paramList) + + /// + /// POST方法获取页面 + /// + /// + /// 格式: a=xxx&b=xxx&c=xxx + /// + public static string PostUrl(String url, String paramList) + { + HttpWebResponse res = null; + string strResult = ""; + try + { + HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); + req.Method = "POST"; + req.KeepAlive = true; + req.ContentType = "application/x-www-form-urlencoded"; + //req.UserAgent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)"; + CookieContainer cookieCon = new CookieContainer(); + req.CookieContainer = cookieCon; + StringBuilder UrlEncoded = new StringBuilder(); + Char[] reserved = { '?', '=', '&' }; + byte[] SomeBytes = null; + if (paramList != null) + { + int i = 0, j; + while (i < paramList.Length) + { + j = paramList.IndexOfAny(reserved, i); + if (j == -1) + { + // UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, paramList.Length-i))); + UrlEncoded.Append((paramList.Substring(i, paramList.Length - i))); + break; + } + // UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, j-i))); + UrlEncoded.Append((paramList.Substring(i, j - i))); + UrlEncoded.Append(paramList.Substring(j, 1)); + i = j + 1; + } + SomeBytes = Encoding.Default.GetBytes(UrlEncoded.ToString()); + req.ContentLength = SomeBytes.Length; + Stream newStream = req.GetRequestStream(); + newStream.Write(SomeBytes, 0, SomeBytes.Length); + newStream.Close(); + } + else + { + req.ContentLength = 0; + } + res = (HttpWebResponse)req.GetResponse(); + Stream ReceiveStream = res.GetResponseStream(); + // Encoding encode = System.Text.Encoding.Default;//GetEncoding("utf-8"); + string encodeheader = res.ContentType; + string encodestr = System.Text.Encoding.Default.HeaderName; + if ((encodeheader.IndexOf("charset=") >= 0) && (encodeheader.IndexOf("charset=GBK") == -1) && (encodeheader.IndexOf("charset=gbk") == -1)) + { + int i = encodeheader.IndexOf("charset="); + encodestr = encodeheader.Substring(i + 8); + } + Encoding encode = System.Text.Encoding.GetEncoding(encodestr);//GetEncoding("utf-8"); + + StreamReader sr = new StreamReader(ReceiveStream, encode); + Char[] read = new Char[256]; + int count = sr.Read(read, 0, 256); + while (count > 0) + { + String str = new String(read, 0, count); + strResult += str; + count = sr.Read(read, 0, 256); + } + } + catch (Exception e) + { + strResult = e.ToString(); + } + finally + { + if (res != null) + { + res.Close(); + } + } + return strResult; + } + + #endregion PostUrl(String url, String paramList) + + #region 下载指定WEB页面 + + /// GET方法获取页面 + /// 函数名:GetFileUrl + /// 功能描述:WebClient 下载文件 + /// 处理流程: + /// 算法描述: + /// 作 者: lxc + /// 日 期: 2012-10-09 + /// 修 改: + /// 日 期: + /// 版 本: + public static Boolean GetFileUrl(string strurl, string filename) + { + try + { + WebClient webClient = new WebClient(); + // webClient.Credentials = CredentialCache.DefaultCredentials; + webClient.DownloadFile(strurl, filename); + return true; + } + catch (WebException webex) + { + return false;// "error_GetWebUrl:" + webEx.ToString(); + } + } + + #endregion 下载指定WEB页面 + + #region 获取图片 + + public static Stream GetImage(String url) + { + HttpWebResponse res = null; + + try + { + HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); + + res = (HttpWebResponse)req.GetResponse(); + Stream ReceiveStream = res.GetResponseStream(); + return ReceiveStream; + } + catch + { + return null; + } + finally + { + } + } + + /// GET方法获取页面 + /// 函数名:GetImage + /// 功能描述:GET方法获取页面 + /// 处理流程: + /// 算法描述: + /// 作 者: 杨栋 + /// 日 期: 2006-11-21 09:00 + /// 修 改: 2007-01-29 17:00 2006-12-05 17:00 + /// 日 期: + /// 版 本: + /// + + #region GetImage(String url,string cookieheader) + + /// + /// + /// + /// 目标url + /// 输入Cookie + /// + public static byte[] GetImage(String url, string cookieheader) + { + // outcookieheader=""; + + HttpWebResponse res = null; + + try + { + HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); + // req.Method = "GET"; + // req.ContentType = "application/x-www-form-urlencoded"; + //req.UserAgent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)"; + // CookieContainer cookieCon = new CookieContainer(); + // + // // string name=cookieheader.Substring(0,cookieheader.IndexOf("=")); + // // string key=cookieheader.Substring(cookieheader.IndexOf("=")+1,cookieheader.Length-cookieheader.IndexOf("=")-1); + // // cookieCon.Add(new Uri(url),new Cookie(name,key)); + // + // + // req.CookieContainer = cookieCon; + // if ((cookieheader.Length>0 )&(cookieheader.IndexOf("=")>0)) + // { + // req.CookieContainer.SetCookies(new Uri(url),cookieheader); + // } + + //为请求加入cookies + CookieContainer cookieCon = new CookieContainer(); + // req.CookieContainer = cookieCon; + //取得cookies 集合 + string[] ls_cookies = cookieheader.Split(';'); + if (ls_cookies.Length <= 1) //如果有一个或没有cookies 就采用下面的方法。 + { + req.CookieContainer = cookieCon; + if ((cookieheader.Length > 0) & (cookieheader.IndexOf("=") > 0)) + { + req.CookieContainer.SetCookies(new Uri(url), cookieheader); + } + } + else + { + //如果是多个cookie 就分别加入 cookies 容器。 + ////////////////////////////////// + string[] ls_cookie = null; + + for (int i = 0; i < ls_cookies.Length; i++) + { + ls_cookie = ls_cookies[i].Split('='); + // cookieCon.Add(new Uri(url),new Cookie(ls_cookie[0].ToString().Trim(),ls_cookie[1].ToString().Trim())); + cookieCon.Add(new Uri(url), new Cookie(ls_cookie[0].ToString().Trim(), ls_cookies[i].Substring(ls_cookies[i].IndexOf("=") + 1))); + } + req.CookieContainer = cookieCon; + + //////////////////////////////////// + } + + res = (HttpWebResponse)req.GetResponse(); + Stream ReceiveStream = res.GetResponseStream(); + + byte[] mybytes = new byte[4096]; + + int count = ReceiveStream.Read(mybytes, 0, 4096); + + byte[] image = new byte[count]; + + Array.Copy(mybytes, image, count); + + if (res != null) + { + res.Close(); + } + return image; + } + finally + { + } + } + + #endregion GetImage(String url,string cookieheader) + + #region GetImage(String url,string cookieheader,out string outcookieheader,string Header_Referer) + + /// + /// + /// + /// 目标url + /// 输入Cookie + /// + public static byte[] GetImage(String url, string cookieheader, out string outcookieheader, string Header_Referer) + { + // outcookieheader=""; + + HttpWebResponse res = null; + + try + { + HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); + if (Header_Referer.Length > 1) + { + req.Referer = Header_Referer; + } + // req.Method = "GET"; + // req.ContentType = "application/x-www-form-urlencoded"; + //req.UserAgent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)"; + // CookieContainer cookieCon = new CookieContainer(); + // + // // string name=cookieheader.Substring(0,cookieheader.IndexOf("=")); + // // string key=cookieheader.Substring(cookieheader.IndexOf("=")+1,cookieheader.Length-cookieheader.IndexOf("=")-1); + // // cookieCon.Add(new Uri(url),new Cookie(name,key)); + // + // + // req.CookieContainer = cookieCon; + // if ((cookieheader.Length>0 )&(cookieheader.IndexOf("=")>0)) + // { + // req.CookieContainer.SetCookies(new Uri(url),cookieheader); + // } + + //为请求加入cookies + CookieContainer cookieCon = new CookieContainer(); + // req.CookieContainer = cookieCon; + //取得cookies 集合 + string[] ls_cookies = cookieheader.Split(';'); + if (ls_cookies.Length <= 1) //如果有一个或没有cookies 就采用下面的方法。 + { + req.CookieContainer = cookieCon; + if ((cookieheader.Length > 0) & (cookieheader.IndexOf("=") > 0)) + { + req.CookieContainer.SetCookies(new Uri(url), cookieheader); + } + } + else + { + //如果是多个cookie 就分别加入 cookies 容器。 + ////////////////////////////////// + string[] ls_cookie = null; + + for (int i = 0; i < ls_cookies.Length; i++) + { + ls_cookie = ls_cookies[i].Split('='); + // cookieCon.Add(new Uri(url),new Cookie(ls_cookie[0].ToString().Trim(),ls_cookie[1].ToString().Trim())); + cookieCon.Add(new Uri(url), new Cookie(ls_cookie[0].ToString().Trim(), ls_cookies[i].Substring(ls_cookies[i].IndexOf("=") + 1))); + } + req.CookieContainer = cookieCon; + + //////////////////////////////////// + } + + res = (HttpWebResponse)req.GetResponse(); + Stream ReceiveStream = res.GetResponseStream(); + + outcookieheader = req.CookieContainer.GetCookieHeader(new Uri(url));//获得cookie + + if (outcookieheader.Length < 2) + { + try + { + outcookieheader = res.Headers["Set-Cookie"]; + outcookieheader = outcookieheader.Substring(0, outcookieheader.IndexOf(";")); + } + catch + { + outcookieheader = ""; + } + } + + byte[] mybytes = new byte[4096]; + + int count = ReceiveStream.Read(mybytes, 0, 4096); + + byte[] image = new byte[count]; + + Array.Copy(mybytes, image, count); + + if (res != null) + { + res.Close(); + } + return image; + } + finally + { + } + } + + #endregion GetImage(String url,string cookieheader,out string outcookieheader,string Header_Referer) + + #region GetImage(String url,string cookieheader,string Header_Referer) + + /// + /// + /// + /// 目标url + /// 输入Cookie + /// 包头 Referer + /// + public static byte[] GetImage(String url, string cookieheader, string Header_Referer) + { + // outcookieheader=""; + + HttpWebResponse res = null; + + try + { + HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); + if (Header_Referer.Length > 1) + { + req.Referer = Header_Referer; + } + // req.Method = "GET"; + // req.ContentType = "application/x-www-form-urlencoded"; + //req.UserAgent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)"; + // CookieContainer cookieCon = new CookieContainer(); + // + // // string name=cookieheader.Substring(0,cookieheader.IndexOf("=")); + // // string key=cookieheader.Substring(cookieheader.IndexOf("=")+1,cookieheader.Length-cookieheader.IndexOf("=")-1); + // // cookieCon.Add(new Uri(url),new Cookie(name,key)); + // + // + // req.CookieContainer = cookieCon; + // if ((cookieheader.Length>0 )&(cookieheader.IndexOf("=")>0)) + // { + // req.CookieContainer.SetCookies(new Uri(url),cookieheader); + // } + + //为请求加入cookies + CookieContainer cookieCon = new CookieContainer(); + // req.CookieContainer = cookieCon; + //取得cookies 集合 + string[] ls_cookies = cookieheader.Split(';'); + if (ls_cookies.Length <= 1) //如果有一个或没有cookies 就采用下面的方法。 + { + req.CookieContainer = cookieCon; + if ((cookieheader.Length > 0) & (cookieheader.IndexOf("=") > 0)) + { + req.CookieContainer.SetCookies(new Uri(url), cookieheader); + } + } + else + { + //如果是多个cookie 就分别加入 cookies 容器。 + ////////////////////////////////// + string[] ls_cookie = null; + + for (int i = 0; i < ls_cookies.Length; i++) + { + ls_cookie = ls_cookies[i].Split('='); + // cookieCon.Add(new Uri(url),new Cookie(ls_cookie[0].ToString().Trim(),ls_cookie[1].ToString().Trim())); + cookieCon.Add(new Uri(url), new Cookie(ls_cookie[0].ToString().Trim(), ls_cookies[i].Substring(ls_cookies[i].IndexOf("=") + 1))); + } + req.CookieContainer = cookieCon; + + //////////////////////////////////// + } + + res = (HttpWebResponse)req.GetResponse(); + Stream ReceiveStream = res.GetResponseStream(); + + byte[] mybytes = new byte[4096]; + + int count = ReceiveStream.Read(mybytes, 0, 4096); + + byte[] image = new byte[count]; + + Array.Copy(mybytes, image, count); + + if (res != null) + { + res.Close(); + } + return image; + } + finally + { + } + } + + #endregion GetImage(String url,string cookieheader,string Header_Referer) + + #endregion 获取图片 + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Nets/WebSocketServer.cs b/公共库/EC.Utils/Nets/WebSocketServer.cs new file mode 100644 index 0000000..536431a --- /dev/null +++ b/公共库/EC.Utils/Nets/WebSocketServer.cs @@ -0,0 +1,120 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace EC.Utils.Nets +{ + public class WebSocketServer + { + public event EventHandler OnReceiveData; //定义一个委托类型的事件 + TcpListener _tcpListener = null; + int _port = 5003; + bool running = false; + public WebSocketServer(int port) + { + _port = port; + } + public void Start( ) + { + string ip = "127.0.0.1"; + + var _tcpListener = new TcpListener(IPAddress.Parse(ip), _port); + + _tcpListener.Start(); + running = true; + TcpClient client = _tcpListener.AcceptTcpClient(); + NetworkStream stream = client.GetStream(); + // enter to an infinite cycle to be able to handle every change in stream + while (running) + { + if(!client.Connected) + { + break; + } + while ( !stream.DataAvailable) ; + while (client.Available < 3) ; // match against "get" + + byte[] bytes = new byte[client.Available]; + stream.Read(bytes, 0, client.Available); + string s = Encoding.UTF8.GetString(bytes); + + if (Regex.IsMatch(s, "^GET", RegexOptions.IgnoreCase)) + { + Console.WriteLine("=====Handshaking from client=====\n{0}", s); + + // 1. Obtain the value of the "Sec-WebSocket-Key" request header without any leading or trailing whitespace + // 2. Concatenate it with "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" (a special GUID specified by RFC 6455) + // 3. Compute SHA-1 and Base64 hash of the new value + // 4. Write the hash back as the value of "Sec-WebSocket-Accept" response header in an HTTP response + string swk = Regex.Match(s, "Sec-WebSocket-Key: (.*)").Groups[1].Value.Trim(); + string swka = swk + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; + byte[] swkaSha1 = System.Security.Cryptography.SHA1.Create().ComputeHash(Encoding.UTF8.GetBytes(swka)); + string swkaSha1Base64 = Convert.ToBase64String(swkaSha1); + + // HTTP/1.1 defines the sequence CR LF as the end-of-line marker + byte[] response = Encoding.UTF8.GetBytes( + "HTTP/1.1 101 Switching Protocols\r\n" + + "Connection: Upgrade\r\n" + + "Upgrade: websocket\r\n" + + "Sec-WebSocket-Accept: " + swkaSha1Base64 + "\r\n\r\n"); + + stream.Write(response, 0, response.Length); + } + else + { + bool fin = (bytes[0] & 0b10000000) != 0, + mask = (bytes[1] & 0b10000000) != 0; // must be true, "All messages from the client to the server have this bit set" + + int opcode = bytes[0] & 0b00001111, // expecting 1 - text message + msglen = bytes[1] - 128, // & 0111 1111 + offset = 2; + + if (msglen == 126) + { + // was ToUInt16(bytes, offset) but the result is incorrect + msglen = BitConverter.ToUInt16(new byte[] { bytes[3], bytes[2]}, 0); + offset = 4; + } + else if (msglen == 127) + { + Console.WriteLine("TODO: msglen == 127, needs qword to store msglen"); + // i don't really know the byte order, please edit this + // msglen = BitConverter.ToUInt64(new byte[] { bytes[5], bytes[4], bytes[3], bytes[2], bytes[9], bytes[8], bytes[7], bytes[6] }, 0); + // offset = 10; + } + + if (msglen == 0) + Console.WriteLine("msglen == 0"); + else if (mask) + { + byte[] decoded = new byte[msglen]; + byte[] masks = new byte[4] { bytes[offset], bytes[offset + 1], bytes[offset + 2], bytes[offset + 3] }; + offset += 4; + + for (int i = 0; i < msglen; ++i) + decoded[i] = (byte)(bytes[offset + i] ^ masks[i % 4]); + + string text = Encoding.UTF8.GetString(decoded); + Console.WriteLine("{0}", text); + OnReceiveData?.Invoke(this,text); + } + else + Console.WriteLine("mask bit not set"); + + + } + } + } + + public void Stop() + { + running = false; + _tcpListener?.Stop(); + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/Str.cs b/公共库/EC.Utils/Str.cs new file mode 100644 index 0000000..db7d5eb --- /dev/null +++ b/公共库/EC.Utils/Str.cs @@ -0,0 +1,260 @@ +using Microsoft.VisualBasic; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; + +namespace EC.Utils +{ + /// + /// 字符串操作 - 工具方法 + /// + public sealed partial class Str + { + #region Empty(空字符串) + + /// + /// 空字符串 + /// + public static string Empty + { + get { return string.Empty; } + } + + #endregion Empty(空字符串) + + #region PinYin(获取汉字的拼音简码) + + /// + /// 使用字符编码方式获取拼音简码 + /// + private static string ResolvePinYinByCode(ushort unicode) + { + if (unicode >= '\uB0A1' && unicode <= '\uB0C4') + return "A"; + if (unicode >= '\uB0C5' && unicode <= '\uB2C0' && unicode != 45464) + return "B"; + if (unicode >= '\uB2C1' && unicode <= '\uB4ED') + return "C"; + if (unicode >= '\uB4EE' && unicode <= '\uB6E9') + return "D"; + if (unicode >= '\uB6EA' && unicode <= '\uB7A1') + return "E"; + if (unicode >= '\uB7A2' && unicode <= '\uB8C0') + return "F"; + if (unicode >= '\uB8C1' && unicode <= '\uB9FD') + return "G"; + if (unicode >= '\uB9FE' && unicode <= '\uBBF6') + return "H"; + if (unicode >= '\uBBF7' && unicode <= '\uBFA5') + return "J"; + if (unicode >= '\uBFA6' && unicode <= '\uC0AB') + return "K"; + if (unicode >= '\uC0AC' && unicode <= '\uC2E7') + return "L"; + if (unicode >= '\uC2E8' && unicode <= '\uC4C2') + return "M"; + if (unicode >= '\uC4C3' && unicode <= '\uC5B5') + return "N"; + if (unicode >= '\uC5B6' && unicode <= '\uC5BD') + return "O"; + if (unicode >= '\uC5BE' && unicode <= '\uC6D9') + return "P"; + if (unicode >= '\uC6DA' && unicode <= '\uC8BA') + return "Q"; + if (unicode >= '\uC8BB' && unicode <= '\uC8F5') + return "R"; + if (unicode >= '\uC8F6' && unicode <= '\uCBF9') + return "S"; + if (unicode >= '\uCBFA' && unicode <= '\uCDD9') + return "T"; + if (unicode >= '\uCDDA' && unicode <= '\uCEF3') + return "W"; + if (unicode >= '\uCEF4' && unicode <= '\uD188') + return "X"; + if (unicode >= '\uD1B9' && unicode <= '\uD4D0') + return "Y"; + if (unicode >= '\uD4D1' && unicode <= '\uD7F9') + return "Z"; + return string.Empty; + } + + #endregion PinYin(获取汉字的拼音简码) + + #region Splice(拼接集合元素) + + /// + /// 拼接集合元素 + /// + /// 集合元素类型 + /// 集合 + /// 引号,默认不带引号,范例:单引号 "'" + /// 分隔符,默认使用逗号分隔 + public static string Splice(IEnumerable list, string quotes = "", string separator = ",") + { + if (list == null) + return string.Empty; + var result = new StringBuilder(); + foreach (var each in list) + result.AppendFormat("{0}{1}{0}{2}", quotes, each, separator); + return result.ToString().TrimEnd(separator.ToCharArray()); + } + + #endregion Splice(拼接集合元素) + + #region FirstUpper(将值的首字母大写) + + /// + /// 将值的首字母大写 + /// + /// 值 + public static string FirstUpper(string value) + { + string firstChar = value.Substring(0, 1).ToUpper(); + return firstChar + value.Substring(1, value.Length - 1); + } + + #endregion FirstUpper(将值的首字母大写) + + #region ToCamel(将字符串转成驼峰形式) + + /// + /// 将字符串转成驼峰形式 + /// + /// 原始字符串 + public static string ToCamel(string value) + { + return FirstUpper(value.ToLower()); + } + + #endregion ToCamel(将字符串转成驼峰形式) + + #region ContainsChinese(是否包含中文) + + /// + /// 是否包含中文 + /// + /// 文本 + public static bool ContainsChinese(string text) + { + const string pattern = "[\u4e00-\u9fa5]+"; + return Regex.IsMatch(text, pattern); + } + + #endregion ContainsChinese(是否包含中文) + + #region ContainsNumber(是否包含数字) + + /// + /// 是否包含数字 + /// + /// 文本 + public static bool ContainsNumber(string text) + { + const string pattern = "[0-9]+"; + return Regex.IsMatch(text, pattern); + } + + #endregion ContainsNumber(是否包含数字) + + #region Distinct(去除重复) + + /// + /// 去除重复 + /// + /// 值,范例1:"5555",返回"5",范例2:"4545",返回"45" + public static string Distinct(string value) + { + var array = value.ToCharArray(); + return new string(array.Distinct().ToArray()); + } + + #endregion Distinct(去除重复) + + #region Truncate(截断字符串) + + /// + /// 截断字符串 + /// + /// 文本 + /// 返回长度 + /// 添加结束符号的个数,默认0,不添加 + /// 结束符号,默认为省略号 + public static string Truncate(string text, int length, int endCharCount = 0, string endChar = ".") + { + if (string.IsNullOrWhiteSpace(text)) + return string.Empty; + if (text.Length < length) + return text; + return text.Substring(0, length) + GetEndString(endCharCount, endChar); + } + + /// + /// 获取结束字符串 + /// + private static string GetEndString(int endCharCount, string endChar) + { + StringBuilder result = new StringBuilder(); + for (int i = 0; i < endCharCount; i++) + result.Append(endChar); + return result.ToString(); + } + + #endregion Truncate(截断字符串) + + #region ToSimplifiedChinese(转换为简体中文) + + /// + /// 转换为简体中文 + /// + /// 繁体中文 + public static string ToSimplifiedChinese(string text) + { + return Strings.StrConv(text, VbStrConv.SimplifiedChinese); + } + + #endregion ToSimplifiedChinese(转换为简体中文) + + #region ToSimplifiedChinese(转换为繁体中文) + + /// + /// 转换为繁体中文 + /// + /// 简体中文 + public static string ToTraditionalChinese(string text) + { + return Strings.StrConv(text, VbStrConv.TraditionalChinese); + } + + #endregion ToSimplifiedChinese(转换为繁体中文) + + #region Unique(获取全局唯一值) + + /// + /// 获取全局唯一值 + /// + public static string Unique() + { + return Guid.NewGuid().ToString().Replace("-", ""); + } + + #endregion Unique(获取全局唯一值) + + #region GetLastProperty(获取最后一个属性) + + /// + /// 获取最后一个属性 + /// + /// 属性名,范例,A.B.C,返回"C" + public static string GetLastProperty(string propertyName) + { + if (string.IsNullOrEmpty(propertyName)) + return string.Empty; + var lastIndex = propertyName.LastIndexOf(".", StringComparison.Ordinal) + 1; + return propertyName.Substring(lastIndex); + } + + #endregion GetLastProperty(获取最后一个属性) + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/ZMQ/DBMethod.cs b/公共库/EC.Utils/ZMQ/DBMethod.cs new file mode 100644 index 0000000..cb6cfe8 --- /dev/null +++ b/公共库/EC.Utils/ZMQ/DBMethod.cs @@ -0,0 +1,34 @@ +namespace EC.Utils.ZMQ +{ + public class DBMethod + { + public const string Success = "success"; + public const string Error = "error"; + public const string Net_Error = "neterror"; + + /// + /// 获取录像机和 相机列表 + /// + public const string GetGroupAndCameraList = "getgroupandcameralist"; + + /// + /// 获取相机列表 + /// + public const string GetCameraList = "getcameralist"; + + /// + /// 获取单个相机 + /// + public const string GetCamera = "getcamera"; + + /// + /// 保存画图 + /// + public const string SaveDrawShape = "savedrawshape"; + + /// + /// 获取画图 + /// + public const string GetDrawShape = "getdrawshape"; + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/ZMQ/PubSubModel.cs b/公共库/EC.Utils/ZMQ/PubSubModel.cs new file mode 100644 index 0000000..aefa971 --- /dev/null +++ b/公共库/EC.Utils/ZMQ/PubSubModel.cs @@ -0,0 +1,20 @@ +namespace EC.Utils.ZMQ +{ + public class PubSubModel + { + public string msg { get; set; } + + public string topic { get; set; } + + public string TopicLower() + { + return topic.ToLower(); + } + + public PubSubModel(string topic, string msg) + { + this.topic = topic; + this.msg = msg; + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/ZMQ/RequestModel.cs b/公共库/EC.Utils/ZMQ/RequestModel.cs new file mode 100644 index 0000000..d0471e3 --- /dev/null +++ b/公共库/EC.Utils/ZMQ/RequestModel.cs @@ -0,0 +1,19 @@ +namespace EC.Utils.ZMQ +{ + public class RequestModel + { + public string method { get; set; } + public string jsonstr { get; set; } + } + + public class ResultModel + { + public ResultModel() + { + result = "net error"; + } + + public string result { get; set; } + public string jsonstr { get; set; } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/ZMQ/ZMQHelper.cs b/公共库/EC.Utils/ZMQ/ZMQHelper.cs new file mode 100644 index 0000000..a0eb6e8 --- /dev/null +++ b/公共库/EC.Utils/ZMQ/ZMQHelper.cs @@ -0,0 +1,93 @@ +using NetMQ; +using NetMQ.Sockets; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace EC.Utils.ZMQ +{ + public class ZMQHelper + { + public event EventHandler OnSubData; //定义一个委托类型的事件 + + private bool ServerRuning = false; + private string pubServerAddress { get; set; } + private string subServerAddress { get; set; } + private List _topics { get; set; } + + private SubscriberSocket Sub_Scriber { get; set; } = null; + private PublisherSocket Pub_Socket = null; + + public ZMQHelper(string pubServer, string subServer, List topics = null) + { + this.pubServerAddress = pubServer; + this.subServerAddress = subServer; + if (topics != null) + { + this._topics = topics; + } + else + { + this._topics = new List(); + } + + Sub_Scriber = new SubscriberSocket(); + } + + public void Subscribe(string topic) + { + this._topics.Add(topic); + } + + public void Start() + { + ServerRuning = true; + Task.Factory.StartNew(() => Pubsub()); + } + + public void Send(string topic, string msg) + { + if (Pub_Socket == null) + { + //发布服务 + Pub_Socket = new PublisherSocket(); + Pub_Socket.Connect(pubServerAddress); + } + + //发布消息 + Pub_Socket.SendMoreFrame(topic).SendFrame(msg); + } + + public void Send(string msg) + { + Send("Topic", msg); + } + + private void Pubsub() + { + Sub_Scriber.Connect(subServerAddress); + foreach (string topic in _topics) + { + Sub_Scriber.Subscribe(topic); + } + while (ServerRuning) + { + if (Sub_Scriber == null) + { + break; + } + var topic = Sub_Scriber.ReceiveFrameString(); + var msg = Sub_Scriber.ReceiveFrameString(); + PubSubModel pubSubModel = new PubSubModel(topic, msg); + OnSubData?.Invoke(this, pubSubModel); + } + } + + public void Stop() + { + ServerRuning = false; + Pub_Socket?.Close(); + Sub_Scriber?.Close(); + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/ZMQ/ZMQRequestHelper.cs b/公共库/EC.Utils/ZMQ/ZMQRequestHelper.cs new file mode 100644 index 0000000..5a332c8 --- /dev/null +++ b/公共库/EC.Utils/ZMQ/ZMQRequestHelper.cs @@ -0,0 +1,95 @@ +using NetMQ; +using NetMQ.Sockets; +using System; + +namespace EC.Utils.ZMQ +{ + public class ZMQRequestHelper + { + public static string _dbSvrServer = ""; + + public ZMQRequestHelper(string dbSvrServer) + { + _dbSvrServer = dbSvrServer; + } + + public string RequestFromServer(string jsonstr) + { + try + { + using (var requestSocket = new RequestSocket(_dbSvrServer)) + { + requestSocket.SendFrame(jsonstr); + var timeout = new TimeSpan(0, 0, 1); + string recdata = ""; + bool recSuccess = requestSocket.TryReceiveFrameString(timeout, out recdata); + // byte[] recdata = requestSocket.ReceiveFrameBytes(); + if (recSuccess) + { + return recdata; + } + } + } + catch (Exception ex) + { + LogFactory.GetLogger().Error(ex); + } + return ""; + } + + /// + /// 通过zmq 访问服务器 类似API + /// + /// + /// + /// + public ResultModel RequestFromServer(string method, string jsonstr) + { + RequestModel requestModel = new RequestModel(); + requestModel.method = method; + requestModel.jsonstr = jsonstr; + return RequestFromServer(requestModel); + } + + public ResultModel RequestFromServer(RequestModel requestModel) + { + ResultModel resultModel = new ResultModel(); + try + { + using (var requestSocket = new RequestSocket(_dbSvrServer)) + { + requestSocket.SendMoreFrame(requestModel.method).SendFrame(requestModel.jsonstr); + var timeout = new TimeSpan(0, 0, 3); + string result = ""; + bool recSuccess = requestSocket.TryReceiveFrameString(timeout, out result); + // byte[] recdata = requestSocket.ReceiveFrameBytes(); + if (recSuccess) + { + string recdata = ""; + recSuccess = requestSocket.TryReceiveFrameString(timeout, out recdata); + if (recSuccess) + { + resultModel.result = result; + resultModel.jsonstr = recdata; + return resultModel; + } + else + { + resultModel.result = DBMethod.Net_Error; + } + } + else + { + resultModel.result = DBMethod.Net_Error; + } + } + } + catch (Exception ex) + { + LogFactory.GetLogger().Error(ex); + resultModel.result = DBMethod.Net_Error; + } + return resultModel; + } + } +} \ No newline at end of file diff --git a/公共库/EC.Utils/ZMQ/ZMQTopic.cs b/公共库/EC.Utils/ZMQ/ZMQTopic.cs new file mode 100644 index 0000000..21009f7 --- /dev/null +++ b/公共库/EC.Utils/ZMQ/ZMQTopic.cs @@ -0,0 +1,30 @@ +namespace EC.Utils.ZMQ +{ + public class ZMQTopic + { + /// + /// 弹出单一窗体显示,下一个视频代替前一个 + /// + public static string Show_Single_Video { get; set; } = "show_single_video"; + + /// + /// 主窗体显示 + /// + public static string MainFrom_Show_Video { get; set; } = "mainfrom_show_video"; + + /// + /// 检测(发现)到目标原始 推送信息 + /// + public const string AI_Detect_Original_Data = "ai_detect_original_data"; + + /// + /// 入侵 检测后 预警信息 + /// + public const string AI_Detect_Warning_Data = "ai_detect_warning_data"; + + /// + /// 图片预警数据 + /// + public const string AI_Detect_Warning_Image = "ai_detect_warning_image"; + } +} \ No newline at end of file diff --git a/公共库/EC.WpfElement/Button/ImageTextButton.cs b/公共库/EC.WpfElement/Button/ImageTextButton.cs new file mode 100644 index 0000000..5b2b483 --- /dev/null +++ b/公共库/EC.WpfElement/Button/ImageTextButton.cs @@ -0,0 +1,12 @@ +using System.Windows; + +namespace EC.WpfElement.Button +{ + public class ImageTextButton : System.Windows.Controls.Button + { + static ImageTextButton() + { + DefaultStyleKeyProperty.OverrideMetadata(typeof(ImageTextButton), new FrameworkPropertyMetadata(typeof(ImageTextButton))); + } + } +} \ No newline at end of file diff --git a/公共库/EC.WpfElement/Button/Themes/Generic.xaml b/公共库/EC.WpfElement/Button/Themes/Generic.xaml new file mode 100644 index 0000000..ffa541f --- /dev/null +++ b/公共库/EC.WpfElement/Button/Themes/Generic.xaml @@ -0,0 +1,17 @@ + + + \ No newline at end of file diff --git a/公共库/EC.WpfElement/EC.WpfElement.csproj b/公共库/EC.WpfElement/EC.WpfElement.csproj new file mode 100644 index 0000000..181258d --- /dev/null +++ b/公共库/EC.WpfElement/EC.WpfElement.csproj @@ -0,0 +1,91 @@ + + + + + Debug + AnyCPU + {D3FEB8D2-19AF-419A-A57C-3FBDD828BAF9} + library + EC.WpfElement + EC.WpfElement + v4.7.2 + 512 + {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 4 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + 4.0 + + + + + + + + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + + + Code + + + True + True + Resources.resx + + + True + Settings.settings + True + + + ResXFileCodeGenerator + Resources.Designer.cs + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + \ No newline at end of file diff --git a/公共库/EC.WpfElement/Properties/AssemblyInfo.cs b/公共库/EC.WpfElement/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..fba2c09 --- /dev/null +++ b/公共库/EC.WpfElement/Properties/AssemblyInfo.cs @@ -0,0 +1,51 @@ +using System.Reflection; +using System.Runtime.InteropServices; +using System.Windows; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("EC.WpfElement")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("EC.WpfElement")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +//将 ComVisible 设置为 false 将使此程序集中的类型 +//对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +//若要开始生成可本地化的应用程序,请设置 +//.csproj 文件中的 CultureYouAreCodingWith +//例如,如果您在源文件中使用的是美国英语, +//使用的是美国英语,请将 设置为 en-US。 然后取消 +//对以下 NeutralResourceLanguage 特性的注释。 更新 +//以下行中的“en-US”以匹配项目文件中的 UICulture 设置。 + +//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //主题特定资源词典所处位置 + //(未在页面中找到资源时使用, + //或应用程序资源字典中找到时使用) + ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置 + //(未在页面中找到资源时使用, + //、应用程序或任何主题专用资源字典中找到时使用) +)] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file diff --git a/公共库/EC.WpfElement/Properties/Resources.Designer.cs b/公共库/EC.WpfElement/Properties/Resources.Designer.cs new file mode 100644 index 0000000..0ebf7da --- /dev/null +++ b/公共库/EC.WpfElement/Properties/Resources.Designer.cs @@ -0,0 +1,62 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本: 4.0.30319.42000 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace EC.WpfElement.Properties { + + + /// + /// 强类型资源类,用于查找本地化字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或删除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 返回此类使用的缓存 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if ((resourceMan == null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("EC.WpfElement.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 重写当前线程的 CurrentUICulture 属性,对 + /// 使用此强类型资源类的所有资源查找执行重写。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/公共库/EC.WpfElement/Properties/Resources.resx b/公共库/EC.WpfElement/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/公共库/EC.WpfElement/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/公共库/EC.WpfElement/Properties/Settings.Designer.cs b/公共库/EC.WpfElement/Properties/Settings.Designer.cs new file mode 100644 index 0000000..f855d64 --- /dev/null +++ b/公共库/EC.WpfElement/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace EC.WpfElement.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/公共库/EC.WpfElement/Properties/Settings.settings b/公共库/EC.WpfElement/Properties/Settings.settings new file mode 100644 index 0000000..033d7a5 --- /dev/null +++ b/公共库/EC.WpfElement/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/公共库/EC.WpfElement/Template/CustomControl.cs b/公共库/EC.WpfElement/Template/CustomControl.cs new file mode 100644 index 0000000..5b6ea35 --- /dev/null +++ b/公共库/EC.WpfElement/Template/CustomControl.cs @@ -0,0 +1,13 @@ +using System.Windows; +using System.Windows.Controls; + +namespace EC.WpfElement.Template +{ + public class CustomControl : Control + { + static CustomControl() + { + DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomControl), new FrameworkPropertyMetadata(typeof(CustomControl))); + } + } +} \ No newline at end of file diff --git a/公共库/EC.WpfElement/Template/Themes/Generic.xaml b/公共库/EC.WpfElement/Template/Themes/Generic.xaml new file mode 100644 index 0000000..331ef48 --- /dev/null +++ b/公共库/EC.WpfElement/Template/Themes/Generic.xaml @@ -0,0 +1,17 @@ + + + \ No newline at end of file diff --git a/公共库/EC.WpfElement/Themes/Generic.xaml b/公共库/EC.WpfElement/Themes/Generic.xaml new file mode 100644 index 0000000..7ddc0a6 --- /dev/null +++ b/公共库/EC.WpfElement/Themes/Generic.xaml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/播放库/EC.FFmpegAutoGen/EC.FFmpegAutoGen.csproj b/播放库/EC.FFmpegAutoGen/EC.FFmpegAutoGen.csproj new file mode 100644 index 0000000..64f0357 --- /dev/null +++ b/播放库/EC.FFmpegAutoGen/EC.FFmpegAutoGen.csproj @@ -0,0 +1,16 @@ + + + + net5.0-windows7.0 + + + + true + + + + + + + + diff --git a/播放库/EC.FFmpegAutoGen/FFmpegBinariesHelper.cs b/播放库/EC.FFmpegAutoGen/FFmpegBinariesHelper.cs new file mode 100644 index 0000000..e8d2d74 --- /dev/null +++ b/播放库/EC.FFmpegAutoGen/FFmpegBinariesHelper.cs @@ -0,0 +1,37 @@ +using FFmpeg.AutoGen; +using System; +using System.IO; +using System.Runtime.InteropServices; + +namespace EC.FFmpegAutoGen +{ + public class FFmpegBinariesHelper + { + public static void RegisterFFmpegBinaries() + { + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + var current = Environment.CurrentDirectory; + var probe = Path.Combine("FFmpeg", "bin", Environment.Is64BitProcess ? "x64" : "x86"); + + while (current != null) + { + var ffmpegBinaryPath = Path.Combine(current, probe); + + if (Directory.Exists(ffmpegBinaryPath)) + { + Console.WriteLine($"FFmpeg binaries found in: {ffmpegBinaryPath}"); + ffmpeg.RootPath = ffmpegBinaryPath; + return; + } + + current = Directory.GetParent(current)?.FullName; + } + } + else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) + ffmpeg.RootPath = "/lib/x86_64-linux-gnu/"; + else + throw new NotSupportedException(); // fell free add support for platform of your choose + } + } +} diff --git a/播放库/EC.FFmpegAutoGen/FFmpegHelper.cs b/播放库/EC.FFmpegAutoGen/FFmpegHelper.cs new file mode 100644 index 0000000..8d359e6 --- /dev/null +++ b/播放库/EC.FFmpegAutoGen/FFmpegHelper.cs @@ -0,0 +1,44 @@ +using FFmpeg.AutoGen; +using System; +using System.Runtime.InteropServices; + +namespace EC.FFmpegAutoGen +{ + public static class FFmpegHelper + { + public static unsafe string av_strerror(int error) + { + var bufferSize = 1024; + var buffer = stackalloc byte[bufferSize]; + ffmpeg.av_strerror(error, buffer, (ulong) bufferSize); + var message = Marshal.PtrToStringAnsi((IntPtr) buffer); + return message; + } + + public static int ThrowExceptionIfError(this int error) + { + if (error < 0) throw new ApplicationException(av_strerror(error)); + return error; + } + + + public static AVPixelFormat GetHWPixelFormat(AVHWDeviceType hWDevice) + { + return hWDevice switch + { + AVHWDeviceType.AV_HWDEVICE_TYPE_NONE => AVPixelFormat.AV_PIX_FMT_NONE, + AVHWDeviceType.AV_HWDEVICE_TYPE_VDPAU => AVPixelFormat.AV_PIX_FMT_VDPAU, + AVHWDeviceType.AV_HWDEVICE_TYPE_CUDA => AVPixelFormat.AV_PIX_FMT_CUDA, + AVHWDeviceType.AV_HWDEVICE_TYPE_VAAPI => AVPixelFormat.AV_PIX_FMT_VAAPI, + AVHWDeviceType.AV_HWDEVICE_TYPE_DXVA2 => AVPixelFormat.AV_PIX_FMT_NV12, + AVHWDeviceType.AV_HWDEVICE_TYPE_QSV => AVPixelFormat.AV_PIX_FMT_QSV, + AVHWDeviceType.AV_HWDEVICE_TYPE_VIDEOTOOLBOX => AVPixelFormat.AV_PIX_FMT_VIDEOTOOLBOX, + AVHWDeviceType.AV_HWDEVICE_TYPE_D3D11VA => AVPixelFormat.AV_PIX_FMT_NV12, + AVHWDeviceType.AV_HWDEVICE_TYPE_DRM => AVPixelFormat.AV_PIX_FMT_DRM_PRIME, + AVHWDeviceType.AV_HWDEVICE_TYPE_OPENCL => AVPixelFormat.AV_PIX_FMT_OPENCL, + AVHWDeviceType.AV_HWDEVICE_TYPE_MEDIACODEC => AVPixelFormat.AV_PIX_FMT_MEDIACODEC, + _ => AVPixelFormat.AV_PIX_FMT_NONE + }; + } + } +} diff --git a/播放库/EC.FFmpegAutoGen/H264VideoStreamEncoder.cs b/播放库/EC.FFmpegAutoGen/H264VideoStreamEncoder.cs new file mode 100644 index 0000000..c45cdf1 --- /dev/null +++ b/播放库/EC.FFmpegAutoGen/H264VideoStreamEncoder.cs @@ -0,0 +1,91 @@ +using FFmpeg.AutoGen; +using System; +using System.Drawing; +using System.IO; + +namespace EC.FFmpegAutoGen +{ + public sealed unsafe class H264VideoStreamEncoder : IDisposable + { + private readonly Size _frameSize; + private readonly int _linesizeU; + private readonly int _linesizeV; + private readonly int _linesizeY; + private readonly AVCodec* _pCodec; + private readonly AVCodecContext* _pCodecContext; + private readonly Stream _stream; + private readonly int _uSize; + private readonly int _ySize; + + public H264VideoStreamEncoder(Stream stream, int fps, Size frameSize) + { + _stream = stream; + _frameSize = frameSize; + + var codecId = AVCodecID.AV_CODEC_ID_H264; + _pCodec = ffmpeg.avcodec_find_encoder(codecId); + if (_pCodec == null) throw new InvalidOperationException("Codec not found."); + + _pCodecContext = ffmpeg.avcodec_alloc_context3(_pCodec); + _pCodecContext->width = frameSize.Width; + _pCodecContext->height = frameSize.Height; + _pCodecContext->time_base = new AVRational { num = 1, den = fps }; + _pCodecContext->pix_fmt = AVPixelFormat.AV_PIX_FMT_YUV420P; + ffmpeg.av_opt_set(_pCodecContext->priv_data, "preset", "veryslow", 0); + + ffmpeg.avcodec_open2(_pCodecContext, _pCodec, null).ThrowExceptionIfError(); + + _linesizeY = frameSize.Width; + _linesizeU = frameSize.Width / 2; + _linesizeV = frameSize.Width / 2; + + _ySize = _linesizeY * frameSize.Height; + _uSize = _linesizeU * frameSize.Height / 2; + } + + public void Dispose() + { + ffmpeg.avcodec_close(_pCodecContext); + ffmpeg.av_free(_pCodecContext); + ffmpeg.av_free(_pCodec); + } + + public void Encode(AVFrame frame) + { + if (frame.format != (int) _pCodecContext->pix_fmt) + throw new ArgumentException("Invalid pixel format.", nameof(frame)); + if (frame.width != _frameSize.Width) throw new ArgumentException("Invalid width.", nameof(frame)); + if (frame.height != _frameSize.Height) throw new ArgumentException("Invalid height.", nameof(frame)); + if (frame.linesize[0] < _linesizeY) throw new ArgumentException("Invalid Y linesize.", nameof(frame)); + if (frame.linesize[1] < _linesizeU) throw new ArgumentException("Invalid U linesize.", nameof(frame)); + if (frame.linesize[2] < _linesizeV) throw new ArgumentException("Invalid V linesize.", nameof(frame)); + if (frame.data[1] - frame.data[0] < _ySize) + throw new ArgumentException("Invalid Y data size.", nameof(frame)); + if (frame.data[2] - frame.data[1] < _uSize) + throw new ArgumentException("Invalid U data size.", nameof(frame)); + + var pPacket = ffmpeg.av_packet_alloc(); + + try + { + int error; + + do + { + ffmpeg.avcodec_send_frame(_pCodecContext, &frame).ThrowExceptionIfError(); + ffmpeg.av_packet_unref(pPacket); + error = ffmpeg.avcodec_receive_packet(_pCodecContext, pPacket); + } while (error == ffmpeg.AVERROR(ffmpeg.EAGAIN)); + + error.ThrowExceptionIfError(); + + using var packetStream = new UnmanagedMemoryStream(pPacket->data, pPacket->size); + packetStream.CopyTo(_stream); + } + finally + { + ffmpeg.av_packet_free(&pPacket); + } + } + } +} diff --git a/播放库/EC.FFmpegAutoGen/MediaDecoder.cs b/播放库/EC.FFmpegAutoGen/MediaDecoder.cs new file mode 100644 index 0000000..6cbc8ed --- /dev/null +++ b/播放库/EC.FFmpegAutoGen/MediaDecoder.cs @@ -0,0 +1,65 @@ +using FFmpeg.AutoGen; +using System; +using System.Drawing; +using System.Runtime.InteropServices; + +namespace EC.FFmpegAutoGen +{ + public sealed unsafe class VideoConverter : IDisposable + { + private readonly SwsContext* _pConvertContext; + + public VideoConverter(Size sourceSize, AVPixelFormat sourcePixelFormat, + Size destinationSize, AVPixelFormat destinationPixelFormat) + { + _pConvertContext = ffmpeg.sws_getContext(sourceSize.Width, + sourceSize.Height, + sourcePixelFormat, + destinationSize.Width, + destinationSize.Height, + destinationPixelFormat, + ffmpeg.SWS_FAST_BILINEAR, + null, + null, + null); + if (_pConvertContext == null) + throw new ApplicationException("Could not initialize the conversion context."); + + var convertedFrameBufferSize = ffmpeg.av_image_get_buffer_size(destinationPixelFormat, + destinationSize.Width, + destinationSize.Height, + 1); + var convertedFrameBufferPtr = Marshal.AllocHGlobal(convertedFrameBufferSize); + var dstData = new byte_ptrArray4(); + var dstLinesize = new int_array4(); + + ffmpeg.av_image_fill_arrays(ref dstData, + ref dstLinesize, + (byte*) convertedFrameBufferPtr, + destinationPixelFormat, + destinationSize.Width, + destinationSize.Height, + 1); + } + + public void Dispose() + { + } + + public AVFrame Convert(AVFrame sourceFrame) + { + var dstData = new byte_ptrArray4(); + var dstLinesize = new int_array4(); + + ffmpeg.sws_scale(_pConvertContext, + sourceFrame.data, + sourceFrame.linesize, + 0, + sourceFrame.height, + dstData, + dstLinesize); + + return new AVFrame(); + } + } +} diff --git a/播放库/EC.FFmpegAutoGen/VideoFrameConverter.cs b/播放库/EC.FFmpegAutoGen/VideoFrameConverter.cs new file mode 100644 index 0000000..820f2fc --- /dev/null +++ b/播放库/EC.FFmpegAutoGen/VideoFrameConverter.cs @@ -0,0 +1,81 @@ +using FFmpeg.AutoGen; +using System; +using System.Drawing; +using System.Runtime.InteropServices; + +namespace EC.FFmpegAutoGen +{ + public sealed unsafe class VideoFrameConverter : IDisposable + { + private readonly IntPtr _convertedFrameBufferPtr; + private readonly Size _destinationSize; + private readonly byte_ptrArray4 _dstData; + private readonly int_array4 _dstLinesize; + private readonly SwsContext* _pConvertContext; + + public VideoFrameConverter(Size sourceSize, AVPixelFormat sourcePixelFormat, + Size destinationSize, AVPixelFormat destinationPixelFormat) + { + _destinationSize = destinationSize; + + _pConvertContext = ffmpeg.sws_getContext(sourceSize.Width, + sourceSize.Height, + sourcePixelFormat, + destinationSize.Width, + destinationSize.Height, + destinationPixelFormat, + ffmpeg.SWS_FAST_BILINEAR, + null, + null, + null); + if (_pConvertContext == null) + throw new ApplicationException("Could not initialize the conversion context."); + + var convertedFrameBufferSize = ffmpeg.av_image_get_buffer_size(destinationPixelFormat, + destinationSize.Width, + destinationSize.Height, + 1); + _convertedFrameBufferPtr = Marshal.AllocHGlobal(convertedFrameBufferSize); + _dstData = new byte_ptrArray4(); + _dstLinesize = new int_array4(); + + ffmpeg.av_image_fill_arrays(ref _dstData, + ref _dstLinesize, + (byte*) _convertedFrameBufferPtr, + destinationPixelFormat, + destinationSize.Width, + destinationSize.Height, + 1); + } + + public void Dispose() + { + Marshal.FreeHGlobal(_convertedFrameBufferPtr); + ffmpeg.sws_freeContext(_pConvertContext); + } + + public AVFrame Convert(AVFrame sourceFrame) + { + ffmpeg.sws_scale(_pConvertContext, + sourceFrame.data, + sourceFrame.linesize, + 0, + sourceFrame.height, + _dstData, + _dstLinesize); + + var data = new byte_ptrArray8(); + data.UpdateFrom(_dstData); + var linesize = new int_array8(); + linesize.UpdateFrom(_dstLinesize); + + return new AVFrame + { + data = data, + linesize = linesize, + width = _destinationSize.Width, + height = _destinationSize.Height + }; + } + } +} diff --git a/播放库/EC.FFmpegAutoGen/VideoStreamDecoder.cs b/播放库/EC.FFmpegAutoGen/VideoStreamDecoder.cs new file mode 100644 index 0000000..546ff11 --- /dev/null +++ b/播放库/EC.FFmpegAutoGen/VideoStreamDecoder.cs @@ -0,0 +1,131 @@ +using FFmpeg.AutoGen; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Runtime.InteropServices; + +namespace EC.FFmpegAutoGen +{ + public sealed unsafe class VideoStreamDecoder : IDisposable + { + private readonly AVCodecContext* _pCodecContext; + private readonly AVFormatContext* _pFormatContext; + private readonly AVFrame* _pFrame; + private readonly AVPacket* _pPacket; + private readonly AVFrame* _receivedFrame; + private readonly int _streamIndex; + + public VideoStreamDecoder(string url, AVHWDeviceType HWDeviceType = AVHWDeviceType.AV_HWDEVICE_TYPE_NONE) + { + _pFormatContext = ffmpeg.avformat_alloc_context(); + _receivedFrame = ffmpeg.av_frame_alloc(); + var pFormatContext = _pFormatContext; + ffmpeg.avformat_open_input(&pFormatContext, url, null, null).ThrowExceptionIfError(); + ffmpeg.avformat_find_stream_info(_pFormatContext, null).ThrowExceptionIfError(); + AVCodec* codec = null; + _streamIndex = ffmpeg + .av_find_best_stream(_pFormatContext, AVMediaType.AVMEDIA_TYPE_VIDEO, -1, -1, &codec, 0) + .ThrowExceptionIfError(); + _pCodecContext = ffmpeg.avcodec_alloc_context3(codec); + if (HWDeviceType != AVHWDeviceType.AV_HWDEVICE_TYPE_NONE) + ffmpeg.av_hwdevice_ctx_create(&_pCodecContext->hw_device_ctx, HWDeviceType, null, null, 0) + .ThrowExceptionIfError(); + ffmpeg.avcodec_parameters_to_context(_pCodecContext, _pFormatContext->streams[_streamIndex]->codecpar) + .ThrowExceptionIfError(); + ffmpeg.avcodec_open2(_pCodecContext, codec, null).ThrowExceptionIfError(); + + CodecName = ffmpeg.avcodec_get_name(codec->id); + FrameSize = new Size(_pCodecContext->width, _pCodecContext->height); + PixelFormat = _pCodecContext->pix_fmt; + + _pPacket = ffmpeg.av_packet_alloc(); + _pFrame = ffmpeg.av_frame_alloc(); + } + + public string CodecName { get; } + public Size FrameSize { get; } + public AVPixelFormat PixelFormat { get; } + + public void Dispose() + { + try + { + var pFrame = _pFrame; + ffmpeg.av_frame_free(&pFrame); + + var pPacket = _pPacket; + ffmpeg.av_packet_free(&pPacket); + + ffmpeg.avcodec_close(_pCodecContext); + var pFormatContext = _pFormatContext; + ffmpeg.avformat_close_input(&pFormatContext); + }catch(Exception ex) + { + Console.WriteLine(ex); + } + + } + + public bool TryDecodeNextFrame(out AVFrame frame) + { + ffmpeg.av_frame_unref(_pFrame); + ffmpeg.av_frame_unref(_receivedFrame); + int error; + + do + { + try + { + do + { + ffmpeg.av_packet_unref(_pPacket); + error = ffmpeg.av_read_frame(_pFormatContext, _pPacket); + + if (error == ffmpeg.AVERROR_EOF) + { + frame = *_pFrame; + return false; + } + + error.ThrowExceptionIfError(); + } while (_pPacket->stream_index != _streamIndex); + + ffmpeg.avcodec_send_packet(_pCodecContext, _pPacket).ThrowExceptionIfError(); + } + finally + { + ffmpeg.av_packet_unref(_pPacket); + } + + error = ffmpeg.avcodec_receive_frame(_pCodecContext, _pFrame); + } while (error == ffmpeg.AVERROR(ffmpeg.EAGAIN)); + + error.ThrowExceptionIfError(); + + if (_pCodecContext->hw_device_ctx != null) + { + ffmpeg.av_hwframe_transfer_data(_receivedFrame, _pFrame, 0).ThrowExceptionIfError(); + frame = *_receivedFrame; + } + else + frame = *_pFrame; + + return true; + } + + public IReadOnlyDictionary GetContextInfo() + { + AVDictionaryEntry* tag = null; + var result = new Dictionary(); + + while ((tag = ffmpeg.av_dict_get(_pFormatContext->metadata, "", tag, ffmpeg.AV_DICT_IGNORE_SUFFIX)) != null) + { + var key = Marshal.PtrToStringAnsi((IntPtr) tag->key); + var value = Marshal.PtrToStringAnsi((IntPtr) tag->value); + result.Add(key, value); + } + + return result; + } + } +} diff --git a/播放库/HKPlayers/App.xaml b/播放库/HKPlayers/App.xaml new file mode 100644 index 0000000..17c5d75 --- /dev/null +++ b/播放库/HKPlayers/App.xaml @@ -0,0 +1,9 @@ + + + + + diff --git a/播放库/HKPlayers/App.xaml.cs b/播放库/HKPlayers/App.xaml.cs new file mode 100644 index 0000000..3cd02e9 --- /dev/null +++ b/播放库/HKPlayers/App.xaml.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Linq; +using System.Threading.Tasks; +using System.Windows; + +namespace HKPlayers +{ + /// + /// Interaction logic for App.xaml + /// + public partial class App : Application + { + } +} diff --git a/播放库/HKPlayers/AssemblyInfo.cs b/播放库/HKPlayers/AssemblyInfo.cs new file mode 100644 index 0000000..8b5504e --- /dev/null +++ b/播放库/HKPlayers/AssemblyInfo.cs @@ -0,0 +1,10 @@ +using System.Windows; + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] diff --git a/播放库/HKPlayers/HKPlayers.csproj b/播放库/HKPlayers/HKPlayers.csproj new file mode 100644 index 0000000..70b74da --- /dev/null +++ b/播放库/HKPlayers/HKPlayers.csproj @@ -0,0 +1,14 @@ + + + + WinExe + net5.0-windows + true + true + + + + true + + + diff --git a/播放库/HKPlayers/MainWindow.xaml b/播放库/HKPlayers/MainWindow.xaml new file mode 100644 index 0000000..737115e --- /dev/null +++ b/播放库/HKPlayers/MainWindow.xaml @@ -0,0 +1,12 @@ + + + + + diff --git a/播放库/HKPlayers/MainWindow.xaml.cs b/播放库/HKPlayers/MainWindow.xaml.cs new file mode 100644 index 0000000..ad21ffb --- /dev/null +++ b/播放库/HKPlayers/MainWindow.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Forms; + +namespace HKPlayers +{ + /// + /// Interaction logic for MainWindow.xaml + /// + public partial class MainWindow : Window + { + public MainWindow() + { + InitializeComponent(); + } + } +}