├── .gitignore
├── Common.UnitTests
├── Common.UnitTests.csproj
├── Properties
│ └── AssemblyInfo.cs
├── Util
│ ├── NetworkCredentialExtensionsTests.cs
│ └── TimeUtilTests.cs
└── packages.config
├── Common
├── Common.csproj
├── EventReceiver
│ ├── DeviceEventReceiverException.cs
│ ├── IConnectionParameters.cs
│ ├── IDeviceEventReceiver.cs
│ └── IDeviceEventReceiverFactory.cs
├── Events
│ └── DeviceEvent.cs
├── HttpGlobals.cs
├── Properties
│ └── AssemblyInfo.cs
└── Util
│ ├── NetworkCredentialExtensions.cs
│ └── TimeUtil.cs
├── Devices.UnitTests
├── Devices.UnitTests.csproj
├── Onvif
│ └── OnvifEventReceiverTests.cs
├── Properties
│ └── AssemblyInfo.cs
└── packages.config
├── Devices
├── DeviceEventReceiverFactory.cs
├── Devices.csproj
├── Onvif
│ ├── Behaviour
│ │ ├── CustomAddressHeader.cs
│ │ ├── CustomEndpointBehavior.cs
│ │ └── CustomMessageInspector.cs
│ ├── IOnvifClientFactory.cs
│ ├── OnvifClientFactory.cs
│ ├── OnvifEventReceiver.cs
│ └── Security
│ │ ├── DigestSecurityHeader.cs
│ │ └── SecurityToken.cs
├── Properties
│ └── AssemblyInfo.cs
└── Service References
│ ├── Onvif.Contracts.DeviceManagement
│ ├── Devices.Onvif.Contracts.DeviceManagement.AddScopesResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.BackupFile.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.BinaryData.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.Capabilities.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.Certificate.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.CertificateInformation.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.CertificateStatus.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.CreateCertificateResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.CreateUsersResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.DNSInformation.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.DeleteCertificatesResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.DeleteDot1XConfigurationResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.DeleteUsersResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.DeviceServiceCapabilities.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.DiscoveryMode.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.Dot11AvailableNetworks.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.Dot11Capabilities.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.Dot11Status.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.Dot1XConfiguration.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.DynamicDNSInformation.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetCACertificatesResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetCapabilitiesResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetCertificateInformationResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetCertificatesResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetCertificatesStatusResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetDPAddressesResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetDeviceInformationResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetDot11CapabilitiesResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetDot1XConfigurationsResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetEndpointReferenceResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetNetworkInterfacesResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetNetworkProtocolsResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetPkcs10RequestResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetRelayOutputsResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetScopesResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetServicesResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetStorageConfigurationsResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetSystemBackupResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetSystemUrisResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetSystemUrisResponseExtension.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetUsersResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.GetWsdlUrlResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.HostnameInformation.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.IPAddressFilter.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.LoadCACertificatesResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.LoadCertificateWithPrivateKeyResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.LoadCertificatesResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.NTPInformation.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.NetworkGateway.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.NetworkHost.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.NetworkInterface.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.NetworkProtocol.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.NetworkZeroConfiguration.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.RelayOutput.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.RemoteUser.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.RemoveScopesResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.RestoreSystemResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.ScanAvailableDot11NetworksResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.Scope.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.Service.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.SetCertificatesStatusResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.SetDNSResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.SetDPAddressesResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.SetDynamicDNSResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.SetHostnameResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.SetNTPResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.SetNetworkDefaultGatewayResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.SetNetworkProtocolsResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.SetScopesResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.SetUserResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.StartFirmwareUpgradeResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.StartSystemRestoreResponse.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.StorageConfiguration.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.SupportInformation.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.SystemDateTime.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.SystemLog.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.SystemLogUri.datasource
│ ├── Devices.Onvif.Contracts.DeviceManagement.User.datasource
│ ├── Reference.cs
│ ├── Reference.svcmap
│ ├── b-2.xsd
│ ├── bf-2.xsd
│ ├── configuration.svcinfo
│ ├── configuration91.svcinfo
│ ├── devicemgmt.wsdl
│ ├── include.xsd
│ ├── item.xsd
│ ├── onvif.xsd
│ ├── t-1.xsd
│ ├── ws-addr.xsd
│ ├── xml.xsd
│ └── xmlmime.xsd
│ └── Onvif.Contracts.Events
│ ├── Devices.Onvif.Contracts.Events.Capabilities.datasource
│ ├── Devices.Onvif.Contracts.Events.CreatePullPointResponse.datasource
│ ├── Devices.Onvif.Contracts.Events.CreatePullPointResponse1.datasource
│ ├── Devices.Onvif.Contracts.Events.CreatePullPointSubscriptionResponse.datasource
│ ├── Devices.Onvif.Contracts.Events.DestroyPullPointResponse.datasource
│ ├── Devices.Onvif.Contracts.Events.DestroyPullPointResponse1.datasource
│ ├── Devices.Onvif.Contracts.Events.EndpointReferenceType.datasource
│ ├── Devices.Onvif.Contracts.Events.GetCurrentMessageResponse.datasource
│ ├── Devices.Onvif.Contracts.Events.GetCurrentMessageResponse1.datasource
│ ├── Devices.Onvif.Contracts.Events.GetEventPropertiesResponse.datasource
│ ├── Devices.Onvif.Contracts.Events.GetMessagesResponse.datasource
│ ├── Devices.Onvif.Contracts.Events.GetMessagesResponse1.datasource
│ ├── Devices.Onvif.Contracts.Events.NotificationMessageHolderType.datasource
│ ├── Devices.Onvif.Contracts.Events.PauseSubscriptionResponse.datasource
│ ├── Devices.Onvif.Contracts.Events.PauseSubscriptionResponse1.datasource
│ ├── Devices.Onvif.Contracts.Events.PullMessagesResponse.datasource
│ ├── Devices.Onvif.Contracts.Events.RenewResponse.datasource
│ ├── Devices.Onvif.Contracts.Events.RenewResponse1.datasource
│ ├── Devices.Onvif.Contracts.Events.ResumeSubscriptionResponse.datasource
│ ├── Devices.Onvif.Contracts.Events.ResumeSubscriptionResponse1.datasource
│ ├── Devices.Onvif.Contracts.Events.SeekResponse.datasource
│ ├── Devices.Onvif.Contracts.Events.SubscribeResponse.datasource
│ ├── Devices.Onvif.Contracts.Events.SubscribeResponse1.datasource
│ ├── Devices.Onvif.Contracts.Events.TopicSetType.datasource
│ ├── Devices.Onvif.Contracts.Events.UnsubscribeResponse.datasource
│ ├── Devices.Onvif.Contracts.Events.UnsubscribeResponse1.datasource
│ ├── Reference.cs
│ ├── Reference.svcmap
│ ├── WS-BaseNotification.wsdl
│ ├── WS-Resource.wsdl
│ ├── b-2.xsd
│ ├── bf-2.xsd
│ ├── configuration.svcinfo
│ ├── configuration91.svcinfo
│ ├── event-vs.wsdl
│ ├── r-2.xsd
│ ├── t-1.xsd
│ ├── ws-addr.xsd
│ └── xml.xsd
├── EventsReceiver.UnitTests
├── EventsReceiver.UnitTests.csproj
├── Models
│ └── MainWindowModelTests.cs
├── Properties
│ └── AssemblyInfo.cs
├── ViewModels
│ └── MainWindowViewModelTests.cs
└── packages.config
├── EventsReceiver
├── App.config
├── App.xaml
├── App.xaml.cs
├── Commands
│ └── CommandHandler.cs
├── EventsReceiver.csproj
├── Models
│ ├── ConnectionParameters.cs
│ ├── ConnectionStateInfo.cs
│ ├── IMainWindowModel.cs
│ └── MainWindowModel.cs
├── Properties
│ ├── Annotations.cs
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── ValidationRules
│ └── AddressValidationRule.cs
├── ViewModelLocator.cs
├── ViewModels
│ └── MainWindowViewModel.cs
└── Views
│ ├── MainWindow.xaml
│ └── MainWindow.xaml.cs
├── LICENSE
├── OnvifEvents.sln
└── README.md
/Common.UnitTests/Common.UnitTests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {C88C1B8D-C37B-4F99-A1A3-44986855D5C7}
8 | Library
9 | Properties
10 | Common.UnitTests
11 | Common.UnitTests
12 | v4.6
13 | 512
14 |
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | pdbonly
27 | true
28 | bin\Release\
29 | TRACE
30 | prompt
31 | 4
32 |
33 |
34 |
35 | ..\packages\NUnit.2.6.4\lib\nunit.framework.dll
36 | True
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 | {df0a93d4-4fa2-480f-9351-2af6a9d06c96}
52 | Common
53 |
54 |
55 |
56 |
63 |
--------------------------------------------------------------------------------
/Common.UnitTests/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("Common.UnitTests")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("Common.UnitTests")]
13 | [assembly: AssemblyCopyright("Copyright © 2016")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("c88c1b8d-c37b-4f99-a1a3-44986855d5c7")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Common.UnitTests/Util/NetworkCredentialExtensionsTests.cs:
--------------------------------------------------------------------------------
1 | using System.Net;
2 | using Common.Util;
3 | using NUnit.Framework;
4 |
5 | namespace Common.UnitTests.Util
6 | {
7 | [TestFixture]
8 | class NetworkCredentialExtensionsTests
9 | {
10 | [TestCase("1", "1")]
11 | [TestCase("1", "")]
12 | [TestCase("1", null)]
13 | public void IsEmpty_LoginAndOrPasswordAreSet_ReturnsFalse(string login, string password)
14 | {
15 | var credential = new NetworkCredential(login, password);
16 | Assert.IsFalse(credential.IsEmpty());
17 | }
18 |
19 | [Test]
20 | public void IsEmpty_LoginAndOrPasswordNotSet_ReturnsTrue()
21 | {
22 | var credential = new NetworkCredential();
23 | Assert.IsTrue(credential.IsEmpty());
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Common.UnitTests/Util/TimeUtilTests.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Common.Util;
3 | using NUnit.Framework;
4 |
5 | namespace Common.UnitTests.Util
6 | {
7 | [TestFixture]
8 | class TimeUtilTests
9 | {
10 | [Test]
11 | public void IsTimeOver_TimeHasNotPassed_ReturnsFalse()
12 | {
13 | int lastTimeCalled = Environment.TickCount + 60*1000;
14 |
15 | Assert.IsFalse(TimeUtil.IsTimeOver(lastTimeCalled, 1000));
16 | }
17 |
18 | [Test]
19 | public void IsTimeOver_TimeHasPassed_ReturnsTrue()
20 | {
21 | int lastTimeCalled = Environment.TickCount - 60 * 1000;
22 |
23 | Assert.IsTrue(TimeUtil.IsTimeOver(lastTimeCalled, 1000));
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Common.UnitTests/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Common/Common.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {DF0A93D4-4FA2-480F-9351-2AF6A9D06C96}
8 | Library
9 | Properties
10 | Common
11 | Common
12 | v4.6
13 | 512
14 |
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | pdbonly
27 | true
28 | bin\Release\
29 | TRACE
30 | prompt
31 | 4
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
56 |
--------------------------------------------------------------------------------
/Common/EventReceiver/DeviceEventReceiverException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Runtime.Serialization;
3 |
4 | namespace Common.EventReceiver
5 | {
6 | [Serializable]
7 | public class DeviceEventReceiverException : Exception
8 | {
9 | //
10 | // For guidelines regarding the creation of new exception types, see
11 | // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconerrorraisinghandlingguidelines.asp
12 | // and
13 | // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp07192001.asp
14 | //
15 |
16 | public DeviceEventReceiverException()
17 | {
18 | }
19 |
20 | public DeviceEventReceiverException(string message) : base(message)
21 | {
22 | }
23 |
24 | public DeviceEventReceiverException(string message, Exception inner) : base(message, inner)
25 | {
26 | }
27 |
28 | protected DeviceEventReceiverException(
29 | SerializationInfo info,
30 | StreamingContext context) : base(info, context)
31 | {
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/Common/EventReceiver/IConnectionParameters.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Net;
3 |
4 | namespace Common.EventReceiver
5 | {
6 | public interface IConnectionParameters
7 | {
8 | Uri ConnectionUri { get; }
9 |
10 | NetworkCredential Credentials { get; }
11 |
12 | TimeSpan ConnectionTimeout { get; }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Common/EventReceiver/IDeviceEventReceiver.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading;
3 | using System.Threading.Tasks;
4 | using Common.Events;
5 |
6 | namespace Common.EventReceiver
7 | {
8 | public interface IDeviceEventReceiver
9 | {
10 | IConnectionParameters ConnectionParameters { get; }
11 |
12 | event EventHandler EventReceived;
13 |
14 | Task ConnectAsync(CancellationToken cancellationToken);
15 |
16 | Task ReceiveAsync(CancellationToken cancellationToken);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Common/EventReceiver/IDeviceEventReceiverFactory.cs:
--------------------------------------------------------------------------------
1 | namespace Common.EventReceiver
2 | {
3 | public interface IDeviceEventReceiverFactory
4 | {
5 | IDeviceEventReceiver Create(IConnectionParameters connectionParameters);
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/Common/Events/DeviceEvent.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Common.Events
4 | {
5 | public class DeviceEvent
6 | {
7 | public DateTime Timestamp { get; } = DateTime.UtcNow;
8 | public string Message { get; }
9 |
10 | public DeviceEvent(string message)
11 | {
12 | Message = message;
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Common/HttpGlobals.cs:
--------------------------------------------------------------------------------
1 | namespace Common
2 | {
3 | public static class HttpGlobals
4 | {
5 | public const string SchemaPrefix = "http://";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/Common/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("Common")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("Common")]
13 | [assembly: AssemblyCopyright("Copyright © 2016")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("df0a93d4-4fa2-480f-9351-2af6a9d06c96")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 | [assembly: InternalsVisibleTo("EventsReceiver.UnitTests")]
38 | [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
39 |
--------------------------------------------------------------------------------
/Common/Util/NetworkCredentialExtensions.cs:
--------------------------------------------------------------------------------
1 | using System.Net;
2 |
3 | namespace Common.Util
4 | {
5 | public static class NetworkCredentialExtensions
6 | {
7 | public static bool IsEmpty(this NetworkCredential networkCredential)
8 | {
9 | if (string.IsNullOrEmpty(networkCredential.UserName) || networkCredential.Password == null)
10 | return true;
11 |
12 | return false;
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Common/Util/TimeUtil.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Common.Util
4 | {
5 | public static class TimeUtil
6 | {
7 | public static bool IsTimeOver(int previousTicks, int interval)
8 | {
9 | if (Math.Abs(Environment.TickCount - previousTicks) > interval)
10 | return true;
11 |
12 | return false;
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Devices.UnitTests/Devices.UnitTests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {183F0876-5B96-4716-8374-F8BE172FCF08}
8 | Library
9 | Properties
10 | Devices.UnitTests
11 | Devices.UnitTests
12 | v4.6
13 | 512
14 |
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | pdbonly
27 | true
28 | bin\Release\
29 | TRACE
30 | prompt
31 | 4
32 |
33 |
34 |
35 | ..\packages\Moq.4.5.23\lib\net45\Moq.dll
36 | True
37 |
38 |
39 | ..\packages\NUnit.2.6.4\lib\nunit.framework.dll
40 | True
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | {df0a93d4-4fa2-480f-9351-2af6a9d06c96}
57 | Common
58 |
59 |
60 | {9c6d5ef3-75dd-44f4-b349-b019532e2dfd}
61 | Devices
62 |
63 |
64 |
65 |
72 |
--------------------------------------------------------------------------------
/Devices.UnitTests/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("Devices.UnitTests")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("Devices.UnitTests")]
13 | [assembly: AssemblyCopyright("Copyright © 2016")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("183f0876-5b96-4716-8374-f8be172fcf08")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Devices.UnitTests/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Devices/DeviceEventReceiverFactory.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Common.EventReceiver;
3 | using Devices.Onvif;
4 |
5 | namespace Devices
6 | {
7 | public class DeviceEventReceiverFactory : IDeviceEventReceiverFactory
8 | {
9 | public IDeviceEventReceiver Create(IConnectionParameters connectionParameters)
10 | {
11 | return new OnvifEventReceiver(connectionParameters, new OnvifClientFactory(), TimeSpan.FromSeconds(60));
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Devices/Onvif/Behaviour/CustomAddressHeader.cs:
--------------------------------------------------------------------------------
1 | using System.ServiceModel.Channels;
2 | using System.Xml;
3 |
4 | namespace Devices.Onvif.Behaviour
5 | {
6 | class CustomAddressHeader : AddressHeader
7 | {
8 | private readonly XmlElement _xmlElement;
9 |
10 | public override string Name { get; }
11 | public override string Namespace { get; }
12 |
13 | public CustomAddressHeader(XmlElement xmlElement)
14 | {
15 | _xmlElement = xmlElement;
16 |
17 | Name = xmlElement.LocalName;
18 | Namespace = xmlElement.NamespaceURI;
19 | }
20 |
21 | protected override void OnWriteAddressHeaderContents(XmlDictionaryWriter writer)
22 | {
23 | _xmlElement.WriteContentTo(writer);
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Devices/Onvif/Behaviour/CustomEndpointBehavior.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ServiceModel.Channels;
3 | using System.ServiceModel.Description;
4 | using System.ServiceModel.Dispatcher;
5 |
6 | namespace Devices.Onvif.Behaviour
7 | {
8 | class CustomEndpointBehavior : IEndpointBehavior
9 | {
10 | private readonly IClientMessageInspector _clientInspector;
11 |
12 | public CustomEndpointBehavior(IClientMessageInspector clientInspector)
13 | {
14 | if (clientInspector == null)
15 | throw new ArgumentNullException(nameof(clientInspector));
16 |
17 | _clientInspector = clientInspector;
18 | }
19 |
20 | public void Validate(ServiceEndpoint endpoint)
21 | {
22 | }
23 |
24 | public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters)
25 | {
26 | }
27 |
28 | public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
29 | {
30 | }
31 |
32 | public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
33 | {
34 | clientRuntime.MessageInspectors.Add(_clientInspector);
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/Devices/Onvif/Behaviour/CustomMessageInspector.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ServiceModel;
4 | using System.ServiceModel.Channels;
5 | using System.ServiceModel.Dispatcher;
6 |
7 | namespace Devices.Onvif.Behaviour
8 | {
9 | class CustomMessageInspector : IClientMessageInspector
10 | {
11 | private const string WsseNamespace = @"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";
12 |
13 | public List Headers { get; } = new List();
14 |
15 | public object BeforeSendRequest(ref Message request, IClientChannel channel)
16 | {
17 | if (Headers == null)
18 | return request;
19 |
20 | foreach (var header in Headers)
21 | request.Headers.Insert(0, header);
22 |
23 | return request;
24 | }
25 | public void AfterReceiveReply(ref Message reply, object correlationState)
26 | {
27 | foreach (var header in reply.Headers)
28 | if (header.Name.IndexOf("Security", StringComparison.InvariantCulture) != -1 && header.Namespace.Contains(WsseNamespace))
29 | reply.Headers.UnderstoodHeaders.Add(header);
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Devices/Onvif/IOnvifClientFactory.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ServiceModel;
3 | using System.ServiceModel.Channels;
4 | using Common.EventReceiver;
5 | using Devices.Onvif.Security;
6 |
7 | namespace Devices.Onvif
8 | {
9 | internal interface IOnvifClientFactory
10 | {
11 | TService CreateClient(Uri uri, IConnectionParameters connectionParameters, MessageVersion messageEncodingVersion);
12 | TService CreateClient(EndpointAddress address, IConnectionParameters connectionParameters, MessageVersion messageEncodingVersion);
13 | void SetSecurityToken(SecurityToken token);
14 | }
15 | }
--------------------------------------------------------------------------------
/Devices/Onvif/OnvifClientFactory.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Net;
4 | using System.ServiceModel;
5 | using System.ServiceModel.Channels;
6 | using System.Text;
7 | using Common.EventReceiver;
8 | using Common.Util;
9 | using Devices.Onvif.Behaviour;
10 | using Devices.Onvif.Security;
11 |
12 | namespace Devices.Onvif
13 | {
14 | class OnvifClientFactory : IOnvifClientFactory
15 | {
16 | private SecurityToken _securityToken;
17 |
18 | static OnvifClientFactory()
19 | {
20 | ServicePointManager.Expect100Continue = false;
21 | }
22 |
23 | public TService CreateClient(Uri uri, IConnectionParameters connectionParameters, MessageVersion messageEncodingVersion)
24 | {
25 | return CreateClient(new EndpointAddress(uri), connectionParameters, messageEncodingVersion);
26 | }
27 |
28 | public TService CreateClient(EndpointAddress address, IConnectionParameters connectionParameters, MessageVersion messageEncodingVersion)
29 | {
30 | CustomBinding customBinding = CreateCustomBinding(connectionParameters.ConnectionTimeout,
31 | connectionParameters.Credentials, messageEncodingVersion);
32 | var factory = new ChannelFactory(customBinding);
33 |
34 | var clientInspector = new CustomMessageInspector();
35 |
36 | if(_securityToken != null)
37 | clientInspector.Headers.Add(new DigestSecurityHeader(connectionParameters.Credentials, _securityToken));
38 |
39 | var behavior = new CustomEndpointBehavior(clientInspector);
40 |
41 | factory.Endpoint.Behaviors.Add(behavior);
42 |
43 | if (factory.Credentials != null)
44 | {
45 | factory.Credentials.UserName.UserName = connectionParameters.Credentials.UserName;
46 | factory.Credentials.UserName.Password = connectionParameters.Credentials.Password;
47 | }
48 |
49 | TService service = factory.CreateChannel(address);
50 | return service;
51 | }
52 |
53 | public void SetSecurityToken(SecurityToken token)
54 | {
55 | _securityToken = token;
56 | }
57 |
58 | private static CustomBinding CreateCustomBinding(TimeSpan connectionTimeout, NetworkCredential credentials, MessageVersion messageVersion)
59 | {
60 | var binding = new CustomBinding(CreateBindingElements(messageVersion, false, credentials))
61 | {
62 | CloseTimeout = connectionTimeout,
63 | OpenTimeout = connectionTimeout,
64 | SendTimeout = connectionTimeout,
65 | ReceiveTimeout = connectionTimeout
66 | };
67 |
68 | return binding;
69 | }
70 |
71 | private static IEnumerable CreateBindingElements(MessageVersion messageVersion, bool useTls, NetworkCredential credentials)
72 | {
73 | var encoding = new TextMessageEncodingBindingElement(messageVersion, new UTF8Encoding(false))
74 | {
75 | ReaderQuotas = { MaxStringContentLength = int.MaxValue }
76 | };
77 |
78 | yield return encoding;
79 |
80 | HttpTransportBindingElement transport = CreateTransportBindingElement(useTls);
81 | transport.MaxReceivedMessageSize = int.MaxValue;
82 | transport.KeepAliveEnabled = false;
83 | transport.MaxBufferSize = int.MaxValue;
84 | transport.ProxyAddress = null;
85 | transport.BypassProxyOnLocal = true;
86 | transport.UseDefaultWebProxy = false;
87 | transport.TransferMode = TransferMode.StreamedResponse;
88 | transport.AuthenticationScheme = credentials.IsEmpty() ? AuthenticationSchemes.Anonymous : AuthenticationSchemes.Basic;
89 |
90 | yield return transport;
91 | }
92 |
93 | private static HttpTransportBindingElement CreateTransportBindingElement(bool useTls)
94 | {
95 | if (!useTls)
96 | return new HttpTransportBindingElement();
97 |
98 | var transport = new HttpsTransportBindingElement { RequireClientCertificate = false };
99 | return transport;
100 | }
101 | }
102 | }
103 |
--------------------------------------------------------------------------------
/Devices/Onvif/Security/DigestSecurityHeader.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 | using System.Linq;
4 | using System.Net;
5 | using System.Security.Cryptography;
6 | using System.ServiceModel.Channels;
7 | using System.Text;
8 | using System.Xml;
9 |
10 | namespace Devices.Onvif.Security
11 | {
12 | class DigestSecurityHeader : MessageHeader
13 | {
14 | private readonly NetworkCredential _credential;
15 | private readonly SecurityToken _token;
16 | private long _createdTimestamp;
17 |
18 | public DigestSecurityHeader(NetworkCredential credential, SecurityToken token)
19 | {
20 | if (credential == null)
21 | throw new ArgumentNullException(nameof(credential));
22 | if (token == null)
23 | throw new ArgumentNullException(nameof(token));
24 |
25 | _credential = credential;
26 | _token = token;
27 | _createdTimestamp = Stopwatch.GetTimestamp();
28 | }
29 |
30 | public override string Name => "Security";
31 |
32 | public override string Namespace => "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";
33 |
34 | protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion)
35 | {
36 | string createdTime = GetCurrentServerTime().ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
37 |
38 | writer.WriteAttributeString("s", "mustUnderstand", null, "1");
39 | writer.WriteStartElement("UsernameToken");
40 | writer.WriteStartElement("Username");
41 | writer.WriteString(_credential.UserName);
42 | writer.WriteEndElement();
43 | writer.WriteStartElement("Password");
44 | writer.WriteAttributeString("Type", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest");
45 | writer.WriteString(ComputePasswordDigest(_credential.Password, _token.NonceBytes, createdTime));
46 | writer.WriteEndElement();
47 | writer.WriteStartElement("Nonce");
48 | writer.WriteAttributeString("EncodingType", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary");
49 | writer.WriteBase64(_token.NonceBytes, 0, _token.NonceBytes.Length);
50 | writer.WriteEndElement();
51 | writer.WriteStartElement("Created", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd");
52 | writer.WriteString(createdTime);
53 | writer.WriteEndElement();
54 | writer.WriteEndElement();
55 | writer.Flush();
56 | }
57 |
58 | private static string ComputePasswordDigest(string password, byte[] nonceBytes, string createdTime)
59 | {
60 | byte[] createdTimeBytes = Encoding.UTF8.GetBytes(createdTime);
61 | byte[] passwordBytes = Encoding.UTF8.GetBytes(password);
62 |
63 | byte[] aggregationBytes = nonceBytes.Concat(createdTimeBytes).Concat(passwordBytes).ToArray();
64 | byte[] hashBytes = SHA1.Create().ComputeHash(aggregationBytes);
65 |
66 | return Convert.ToBase64String(hashBytes);
67 | }
68 |
69 | private DateTime GetCurrentServerTime()
70 | {
71 | long timestamp = Stopwatch.GetTimestamp();
72 | long elapsedMilliseconds = (timestamp - _createdTimestamp) * 1000 / Stopwatch.Frequency;
73 |
74 | if (elapsedMilliseconds < 0)
75 | {
76 | _createdTimestamp = timestamp;
77 | return _token.ServerTime;
78 | }
79 |
80 | return _token.ServerTime + TimeSpan.FromTicks(elapsedMilliseconds * TimeSpan.TicksPerMillisecond);
81 | }
82 | }
83 | }
84 |
--------------------------------------------------------------------------------
/Devices/Onvif/Security/SecurityToken.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Devices.Onvif.Security
4 | {
5 | class SecurityToken
6 | {
7 | public DateTime ServerTime { get; }
8 |
9 | public byte[] NonceBytes { get; }
10 |
11 | public SecurityToken(DateTime serverTime, byte[] nonceBytes)
12 | {
13 | ServerTime = serverTime;
14 | NonceBytes = nonceBytes;
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Devices/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("Devices")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("Devices")]
13 | [assembly: AssemblyCopyright("Copyright © 2016")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("9c6d5ef3-75dd-44f4-b349-b019532e2dfd")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 | [assembly: InternalsVisibleTo("Devices.UnitTests")]
38 | [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.AddScopesResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.AddScopesResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.BackupFile.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.BackupFile, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.BinaryData.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.BinaryData, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.Capabilities.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.Capabilities, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.Certificate.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.Certificate, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.CertificateInformation.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.CertificateInformation, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.CertificateStatus.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.CertificateStatus, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.CreateCertificateResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.CreateCertificateResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.CreateUsersResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.CreateUsersResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.DNSInformation.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.DNSInformation, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.DeleteCertificatesResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.DeleteCertificatesResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.DeleteDot1XConfigurationResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.DeleteDot1XConfigurationResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.DeleteUsersResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.DeleteUsersResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.DeviceServiceCapabilities.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.DeviceServiceCapabilities, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.DiscoveryMode.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.DiscoveryMode, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.Dot11AvailableNetworks.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.Dot11AvailableNetworks, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.Dot11Capabilities.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.Dot11Capabilities, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.Dot11Status.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.Dot11Status, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.Dot1XConfiguration.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.Dot1XConfiguration, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.DynamicDNSInformation.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.DynamicDNSInformation, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetCACertificatesResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetCACertificatesResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetCapabilitiesResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetCapabilitiesResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetCertificateInformationResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetCertificateInformationResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetCertificatesResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetCertificatesResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetCertificatesStatusResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetCertificatesStatusResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetDPAddressesResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetDPAddressesResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetDeviceInformationResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetDeviceInformationResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetDot11CapabilitiesResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetDot11CapabilitiesResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetDot1XConfigurationsResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetDot1XConfigurationsResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetEndpointReferenceResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetEndpointReferenceResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetNetworkInterfacesResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetNetworkInterfacesResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetNetworkProtocolsResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetNetworkProtocolsResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetPkcs10RequestResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetPkcs10RequestResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetRelayOutputsResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetRelayOutputsResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetScopesResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetScopesResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetServicesResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetServicesResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetStorageConfigurationsResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetStorageConfigurationsResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetSystemBackupResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetSystemBackupResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetSystemUrisResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetSystemUrisResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetSystemUrisResponseExtension.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetSystemUrisResponseExtension, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetUsersResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetUsersResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.GetWsdlUrlResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.GetWsdlUrlResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.HostnameInformation.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.HostnameInformation, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.IPAddressFilter.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.IPAddressFilter, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.LoadCACertificatesResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.LoadCACertificatesResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.LoadCertificateWithPrivateKeyResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.LoadCertificateWithPrivateKeyResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.LoadCertificatesResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.LoadCertificatesResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.NTPInformation.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.NTPInformation, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.NetworkGateway.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.NetworkGateway, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.NetworkHost.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.NetworkHost, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.NetworkInterface.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.NetworkInterface, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.NetworkProtocol.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.NetworkProtocol, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.NetworkZeroConfiguration.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.NetworkZeroConfiguration, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.RelayOutput.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.RelayOutput, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.RemoteUser.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.RemoteUser, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.RemoveScopesResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.RemoveScopesResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.RestoreSystemResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.RestoreSystemResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.ScanAvailableDot11NetworksResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.ScanAvailableDot11NetworksResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.Scope.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.Scope, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.Service.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.Service, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.SetCertificatesStatusResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.SetCertificatesStatusResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.SetDNSResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.SetDNSResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.SetDPAddressesResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.SetDPAddressesResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.SetDynamicDNSResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.SetDynamicDNSResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.SetHostnameResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.SetHostnameResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.SetNTPResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.SetNTPResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.SetNetworkDefaultGatewayResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.SetNetworkDefaultGatewayResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.SetNetworkProtocolsResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.SetNetworkProtocolsResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.SetScopesResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.SetScopesResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.SetUserResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.SetUserResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.StartFirmwareUpgradeResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.StartFirmwareUpgradeResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.StartSystemRestoreResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.StartSystemRestoreResponse, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.StorageConfiguration.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.StorageConfiguration, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.SupportInformation.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.SupportInformation, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.SystemDateTime.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.SystemDateTime, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.SystemLog.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.SystemLog, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.SystemLogUri.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.SystemLogUri, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Devices.Onvif.Contracts.DeviceManagement.User.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.DeviceManagement.User, Service References.Onvif.Contracts.DeviceManagement.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/Reference.svcmap:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | false
5 | true
6 | true
7 |
8 | false
9 | true
10 | false
11 |
12 |
13 | true
14 | Auto
15 | true
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/bf-2.xsd:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Get access to the xml: attribute groups for xml:lang as declared on 'schema'
8 | and 'documentation' below
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/configuration.svcinfo:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/include.xsd:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/item.xsd:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | Elements replacing the wildcard MUST be namespace qualified, but can be in the targetNamespace
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | Fault reporting structure
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/ws-addr.xsd:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.DeviceManagement/xmlmime.xsd:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.Capabilities.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.Capabilities, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.CreatePullPointResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.CreatePullPointResponse, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.CreatePullPointResponse1.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.CreatePullPointResponse1, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.CreatePullPointSubscriptionResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.CreatePullPointSubscriptionResponse, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.DestroyPullPointResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.DestroyPullPointResponse, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.DestroyPullPointResponse1.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.DestroyPullPointResponse1, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.EndpointReferenceType.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.EndpointReferenceType, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.GetCurrentMessageResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.GetCurrentMessageResponse, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.GetCurrentMessageResponse1.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.GetCurrentMessageResponse1, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.GetEventPropertiesResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.GetEventPropertiesResponse, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.GetMessagesResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.GetMessagesResponse, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.GetMessagesResponse1.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.GetMessagesResponse1, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.NotificationMessageHolderType.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.NotificationMessageHolderType, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.PauseSubscriptionResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.PauseSubscriptionResponse, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.PauseSubscriptionResponse1.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.PauseSubscriptionResponse1, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.PullMessagesResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.PullMessagesResponse, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.RenewResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.RenewResponse, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.RenewResponse1.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.RenewResponse1, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.ResumeSubscriptionResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.ResumeSubscriptionResponse, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.ResumeSubscriptionResponse1.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.ResumeSubscriptionResponse1, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.SeekResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.SeekResponse, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.SubscribeResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.SubscribeResponse, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.SubscribeResponse1.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.SubscribeResponse1, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.TopicSetType.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.TopicSetType, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.UnsubscribeResponse.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.UnsubscribeResponse, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Devices.Onvif.Contracts.Events.UnsubscribeResponse1.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | Devices.Onvif.Contracts.Events.UnsubscribeResponse1, Service References.Onvif.Contracts.Events.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/Reference.svcmap:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | false
5 | true
6 | true
7 |
8 | false
9 | true
10 | false
11 |
12 |
13 | true
14 | Auto
15 | true
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/WS-Resource.wsdl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/bf-2.xsd:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Get access to the xml: attribute groups for xml:lang as declared on 'schema'
8 | and 'documentation' below
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/configuration.svcinfo:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/r-2.xsd:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/Devices/Service References/Onvif.Contracts.Events/ws-addr.xsd:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
--------------------------------------------------------------------------------
/EventsReceiver.UnitTests/EventsReceiver.UnitTests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {5541698D-10EF-4F58-B5B6-D9C29B031329}
8 | Library
9 | Properties
10 | EventsReceiver.UnitTests
11 | EventsReceiver.UnitTests
12 | v4.6
13 | 512
14 |
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | pdbonly
27 | true
28 | bin\Release\
29 | TRACE
30 | prompt
31 | 4
32 |
33 |
34 |
35 | ..\packages\Moq.4.5.23\lib\net45\Moq.dll
36 | True
37 |
38 |
39 | ..\packages\NUnit.2.6.4\lib\nunit.framework.dll
40 | True
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 | Designer
53 |
54 |
55 |
56 |
57 | {df0a93d4-4fa2-480f-9351-2af6a9d06c96}
58 | Common
59 |
60 |
61 | {1a760e09-ce1f-4068-b1a3-f98bc88d0467}
62 | EventsReceiver
63 |
64 |
65 |
66 |
73 |
--------------------------------------------------------------------------------
/EventsReceiver.UnitTests/Models/MainWindowModelTests.cs:
--------------------------------------------------------------------------------
1 | using System.Threading;
2 | using System.Threading.Tasks;
3 | using Common.EventReceiver;
4 | using Common.Events;
5 | using EventsReceiver.Models;
6 | using Moq;
7 | using NUnit.Framework;
8 |
9 | namespace EventsReceiver.UnitTests.Models
10 | {
11 | [TestFixture]
12 | class MainWindowModelTests
13 | {
14 | private const int TestWaitTimeoutMs = 15000;
15 |
16 | [Test]
17 | public void Start_ConnectionEstablishedAndEventIsReceived_EventReceivedHandlerInvoked()
18 | {
19 | var patternEvent = new DeviceEvent("test");
20 | IDeviceEventReceiver eventReceiverFake = CreateDeviceEventReceiverFake(patternEvent);
21 | IDeviceEventReceiverFactory eventReceiverFactoryFake = CreateDeviceEventReceiverFactoryFake(eventReceiverFake);
22 |
23 | var autoResetEvent = new AutoResetEvent(false);
24 | DeviceEvent currentEvent = null;
25 | var model = new MainWindowModel(eventReceiverFactoryFake);
26 | model.EventReceived += (sender, @event) =>
27 | {
28 | currentEvent = @event;
29 | autoResetEvent.Set();
30 | };
31 | model.Start(CreateConnectionParametersFake());
32 |
33 | Assert.IsTrue(autoResetEvent.WaitOne(TestWaitTimeoutMs));
34 | Assert.AreSame(patternEvent, currentEvent);
35 | }
36 |
37 | [Test]
38 | public void Start_WhenConnectingStateChanges_StateChangedHandlerInvoked()
39 | {
40 | IDeviceEventReceiver eventReceiverFake = CreateDeviceEventReceiverFake(null);
41 | IDeviceEventReceiverFactory eventReceiverFactoryFake = CreateDeviceEventReceiverFactoryFake(eventReceiverFake);
42 |
43 | var autoResetEvent = new AutoResetEvent(false);
44 | var model = new MainWindowModel(eventReceiverFactoryFake);
45 | model.ConnectionStateChanged += (sender, @event) => autoResetEvent.Set();
46 | model.Start(CreateConnectionParametersFake());
47 |
48 | Assert.IsTrue(autoResetEvent.WaitOne(TestWaitTimeoutMs));
49 | }
50 |
51 | [Test]
52 | public void Stop_ConnectionEstablishedThenAborted_StoppedEventHandlerInvoked()
53 | {
54 | IDeviceEventReceiver eventReceiverFake = CreateDeviceEventReceiverFake(null);
55 | IDeviceEventReceiverFactory eventReceiverFactoryFake = CreateDeviceEventReceiverFactoryFake(eventReceiverFake);
56 |
57 | var autoResetEvent = new AutoResetEvent(false);
58 | var model = new MainWindowModel(eventReceiverFactoryFake);
59 | model.Stopped += (sender, args) => autoResetEvent.Set();
60 | model.Start(CreateConnectionParametersFake());
61 | Thread.Sleep(500);
62 | model.Stop();
63 |
64 | Assert.IsTrue(autoResetEvent.WaitOne(TestWaitTimeoutMs));
65 | }
66 |
67 | private static IConnectionParameters CreateConnectionParametersFake()
68 | {
69 | var connectionParameters = new Mock();
70 | return connectionParameters.Object;
71 | }
72 |
73 | private static IDeviceEventReceiverFactory CreateDeviceEventReceiverFactoryFake(IDeviceEventReceiver eventReceiver)
74 | {
75 | var factoryFake = new Mock();
76 | factoryFake.Setup(x => x.Create(It.IsNotNull()))
77 | .Returns(eventReceiver);
78 |
79 | return factoryFake.Object;
80 | }
81 |
82 | private static IDeviceEventReceiver CreateDeviceEventReceiverFake(DeviceEvent deviceEvent)
83 | {
84 | var deviceEventReceiverFake = new Mock();
85 | deviceEventReceiverFake.Setup(x => x.ConnectAsync(It.IsNotNull())).
86 | Returns(Task.CompletedTask);
87 | deviceEventReceiverFake.Setup(x => x.ReceiveAsync(It.IsNotNull())).
88 | Returns(Task.CompletedTask).
89 | Raises(x => x.EventReceived += null, deviceEventReceiverFake, deviceEvent);
90 | deviceEventReceiverFake.Setup(x => x.ConnectionParameters).
91 | Returns(CreateConnectionParametersFake());
92 |
93 | return deviceEventReceiverFake.Object;
94 | }
95 | }
96 | }
97 |
--------------------------------------------------------------------------------
/EventsReceiver.UnitTests/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("EventsReceiver.UnitTests")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("EventsReceiver.UnitTests")]
13 | [assembly: AssemblyCopyright("Copyright © 2016")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("5541698d-10ef-4f58-b5b6-d9c29b031329")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/EventsReceiver.UnitTests/ViewModels/MainWindowViewModelTests.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Common.EventReceiver;
3 | using Common.Events;
4 | using EventsReceiver.Models;
5 | using EventsReceiver.ViewModels;
6 | using Moq;
7 | using NUnit.Framework;
8 |
9 | namespace EventsReceiver.UnitTests.ViewModels
10 | {
11 | [TestFixture]
12 | class MainWindowViewModelTests
13 | {
14 | [Test]
15 | public void StartClickCommand_CommandExecuted_StartModelMethodCalled()
16 | {
17 | var mainWindowModelMock = new Mock();
18 |
19 | var mainWindowViewModel = new MainWindowViewModel(mainWindowModelMock.Object);
20 | mainWindowViewModel.StartClickCommand.Execute(null);
21 |
22 | mainWindowModelMock.Verify(x => x.Start(It.IsNotNull()));
23 | }
24 |
25 | [Test]
26 | public void StopClickCommand_CommandExecuted_StopModelMethodIsCalled()
27 | {
28 | var mainWindowModelMock = new Mock();
29 |
30 | var mainWindowViewModel = new MainWindowViewModel(mainWindowModelMock.Object);
31 | mainWindowViewModel.StopClickCommand.Execute(null);
32 |
33 | mainWindowModelMock.Verify(x => x.Stop());
34 | }
35 |
36 | [Test]
37 | public void ConnectionParametersPreparing_DeviceAddressLoginAndPasswordAreSet_ValidParametersAreGivenToStartMethod()
38 | {
39 | Uri deviceUri = new Uri("http://127.0.0.1");
40 | string login = "root";
41 | string password = "1234";
42 | var mainWindowModelMock = new Mock();
43 |
44 | var mainWindowViewModel = new MainWindowViewModel(mainWindowModelMock.Object)
45 | {
46 | DeviceAddress = deviceUri.Host,
47 | Login = login,
48 | Password = password
49 | };
50 | mainWindowViewModel.StartClickCommand.Execute(null);
51 |
52 | mainWindowModelMock.Verify(x => x.Start(It.Is(p =>
53 | p.ConnectionUri == deviceUri && p.Credentials.UserName == login && p.Credentials.Password == password)));
54 | }
55 |
56 | [Test]
57 | public void EventHandling_DeviceEventFromModel_EventAddedToEventsCollection()
58 | {
59 | var deviceEvent = new DeviceEvent("test");
60 | var mainWindowModelMock = new Mock();
61 | mainWindowModelMock.Setup(x => x.Start(It.IsNotNull()))
62 | .Raises(x => x.EventReceived += null, this, deviceEvent);
63 |
64 | var mainWindowViewModel = new MainWindowViewModel(mainWindowModelMock.Object);
65 | mainWindowViewModel.StartClickCommand.Execute(null);
66 |
67 | Assert.AreEqual(1, mainWindowViewModel.Events.Count);
68 | Assert.AreSame(deviceEvent, mainWindowViewModel.Events[0]);
69 | }
70 |
71 | [Test]
72 | public void StateChangeHandling_WhenStateInfoFromModel_StateInfoAddedToConnectioLog()
73 | {
74 | var stateInfo = new ConnectionStateInfo("test");
75 | var mainWindowModelMock = new Mock();
76 | mainWindowModelMock.Setup(x => x.Start(It.IsNotNull()))
77 | .Raises(x => x.ConnectionStateChanged += null, this, stateInfo);
78 |
79 | var mainWindowViewModel = new MainWindowViewModel(mainWindowModelMock.Object);
80 | mainWindowViewModel.StartClickCommand.Execute(null);
81 |
82 | Assert.AreEqual(1, mainWindowViewModel.ConnectionLog.Count);
83 | Assert.AreEqual(stateInfo.ToString(), mainWindowViewModel.ConnectionLog[0]);
84 | }
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/EventsReceiver.UnitTests/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/EventsReceiver/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/EventsReceiver/App.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/EventsReceiver/App.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace EventsReceiver
2 | {
3 | ///
4 | /// Interaction logic for App.xaml
5 | ///
6 | public partial class App
7 | {
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/EventsReceiver/Commands/CommandHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Input;
3 |
4 | namespace EventsReceiver.Commands
5 | {
6 | class CommandHandler : ICommand
7 | {
8 | private readonly Action _action;
9 | private bool _canExecute;
10 |
11 | public event EventHandler CanExecuteChanged;
12 |
13 | public CommandHandler(Action action, bool canExecute)
14 | {
15 | _action = action;
16 | _canExecute = canExecute;
17 | }
18 |
19 | public bool CanExecute(object parameter)
20 | {
21 | return _canExecute;
22 | }
23 |
24 | public void SetCanExecute(bool value)
25 | {
26 | _canExecute = value;
27 | CanExecuteChanged?.Invoke(this, EventArgs.Empty);
28 | }
29 |
30 | public void Execute(object parameter)
31 | {
32 | _action();
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/EventsReceiver/EventsReceiver.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {1A760E09-CE1F-4068-B1A3-F98BC88D0467}
8 | WinExe
9 | Properties
10 | EventsReceiver
11 | EventsReceiver
12 | v4.6
13 | 512
14 | {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
15 | 4
16 | true
17 |
18 |
19 |
20 | AnyCPU
21 | true
22 | full
23 | false
24 | bin\Debug\
25 | DEBUG;TRACE
26 | prompt
27 | 4
28 |
29 |
30 | AnyCPU
31 | pdbonly
32 | true
33 | bin\Release\
34 | TRACE
35 | prompt
36 | 4
37 |
38 |
39 |
40 |
41 |
42 |
43 | 4.0
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 | MSBuild:Compile
52 | Designer
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 | MSBuild:Compile
62 | Designer
63 |
64 |
65 | App.xaml
66 | Code
67 |
68 |
69 |
70 |
71 |
72 | MainWindow.xaml
73 | Code
74 |
75 |
76 |
77 |
78 | Code
79 |
80 |
81 | True
82 | True
83 | Resources.resx
84 |
85 |
86 | True
87 | Settings.settings
88 | True
89 |
90 |
91 | ResXFileCodeGenerator
92 | Resources.Designer.cs
93 |
94 |
95 | SettingsSingleFileGenerator
96 | Settings.Designer.cs
97 |
98 |
99 |
100 |
101 |
102 | Designer
103 |
104 |
105 |
106 |
107 | {df0a93d4-4fa2-480f-9351-2af6a9d06c96}
108 | Common
109 |
110 |
111 | {9c6d5ef3-75dd-44f4-b349-b019532e2dfd}
112 | Devices
113 |
114 |
115 |
116 |
117 |
124 |
--------------------------------------------------------------------------------
/EventsReceiver/Models/ConnectionParameters.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Net;
3 | using Common.EventReceiver;
4 |
5 | namespace EventsReceiver.Models
6 | {
7 | class ConnectionParameters : IConnectionParameters
8 | {
9 | public Uri ConnectionUri { get; }
10 | public NetworkCredential Credentials { get; }
11 | public TimeSpan ConnectionTimeout { get; }
12 |
13 | public ConnectionParameters(Uri connectionUri, NetworkCredential credentials, TimeSpan connectionTimeout)
14 | {
15 | ConnectionUri = connectionUri;
16 | Credentials = credentials;
17 | ConnectionTimeout = connectionTimeout;
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/EventsReceiver/Models/ConnectionStateInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace EventsReceiver.Models
4 | {
5 | class ConnectionStateInfo
6 | {
7 | public DateTime Timestamp { get; } = DateTime.UtcNow;
8 | public string Description { get; }
9 |
10 | public ConnectionStateInfo(string description)
11 | {
12 | Description = description;
13 | }
14 |
15 | public override string ToString()
16 | {
17 | return $"[{Timestamp.ToLocalTime():HH:mm:ss}]: {Description}";
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/EventsReceiver/Models/IMainWindowModel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Common.EventReceiver;
3 | using Common.Events;
4 |
5 | namespace EventsReceiver.Models
6 | {
7 | internal interface IMainWindowModel
8 | {
9 | event EventHandler ConnectionStateChanged;
10 | event EventHandler EventReceived;
11 | void Start(IConnectionParameters connectionParameters);
12 | void Stop();
13 | }
14 | }
--------------------------------------------------------------------------------
/EventsReceiver/Models/MainWindowModel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading;
3 | using System.Threading.Tasks;
4 | using Common.EventReceiver;
5 | using Common.Events;
6 |
7 | namespace EventsReceiver.Models
8 | {
9 | class MainWindowModel : IMainWindowModel
10 | {
11 | private readonly IDeviceEventReceiverFactory _deviceEventReceiverFactory;
12 | private static readonly TimeSpan ReconnectionDelay = TimeSpan.FromSeconds(5);
13 | private CancellationTokenSource _cancellationTokenSource;
14 | private IDeviceEventReceiver _deviceEventReceiver;
15 |
16 | public event EventHandler ConnectionStateChanged;
17 | public event EventHandler EventReceived;
18 | public event EventHandler Stopped;
19 |
20 | public MainWindowModel(IDeviceEventReceiverFactory deviceEventReceiverFactory)
21 | {
22 | if (deviceEventReceiverFactory == null)
23 | throw new ArgumentNullException(nameof(deviceEventReceiverFactory));
24 |
25 | _deviceEventReceiverFactory = deviceEventReceiverFactory;
26 | }
27 |
28 | public void Start(IConnectionParameters connectionParameters)
29 | {
30 | _cancellationTokenSource = new CancellationTokenSource();
31 |
32 | _deviceEventReceiver = _deviceEventReceiverFactory.Create(connectionParameters);
33 | _deviceEventReceiver.EventReceived += DeviceEventReceiverOnEventReceived;
34 |
35 | Task.Run(() => ReceiveEventsAsync(_deviceEventReceiver, _cancellationTokenSource.Token));
36 | }
37 |
38 | public void Stop()
39 | {
40 | if (_deviceEventReceiver == null)
41 | return;
42 |
43 | _cancellationTokenSource.Cancel();
44 | _deviceEventReceiver.EventReceived -= DeviceEventReceiverOnEventReceived;
45 | _deviceEventReceiver = null;
46 | }
47 |
48 | protected virtual void OnStateChanged(ConnectionStateInfo e)
49 | {
50 | ConnectionStateChanged?.Invoke(this, e);
51 | }
52 |
53 | private async void ReceiveEventsAsync(IDeviceEventReceiver deviceEventReceiver, CancellationToken token)
54 | {
55 | while (!token.IsCancellationRequested)
56 | {
57 | try
58 | {
59 | OnStateChanged(new ConnectionStateInfo(
60 | $"Connecting to {deviceEventReceiver.ConnectionParameters.ConnectionUri}..."));
61 |
62 | await deviceEventReceiver.ConnectAsync(token).ConfigureAwait(false);
63 |
64 | OnStateChanged(new ConnectionStateInfo("Connection is established. Receiving..."));
65 |
66 | await deviceEventReceiver.ReceiveAsync(token);
67 | }
68 | catch (OperationCanceledException)
69 | {
70 | break;
71 | }
72 | catch (OutOfMemoryException)
73 | {
74 | throw;
75 | }
76 | catch (Exception e)
77 | {
78 | OnStateChanged(new ConnectionStateInfo($"Connection error: {e.Message}"));
79 | }
80 |
81 | try
82 | {
83 | await Task.Delay(ReconnectionDelay, token);
84 | }
85 | catch (OperationCanceledException)
86 | {
87 | break;
88 | }
89 | }
90 |
91 | Stopped?.Invoke(this, EventArgs.Empty);
92 | }
93 |
94 | private void DeviceEventReceiverOnEventReceived(object sender, DeviceEvent deviceEvent)
95 | {
96 | EventReceived?.Invoke(sender, deviceEvent);
97 | }
98 | }
99 | }
100 |
--------------------------------------------------------------------------------
/EventsReceiver/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Resources;
3 | using System.Runtime.CompilerServices;
4 | using System.Runtime.InteropServices;
5 | using System.Windows;
6 |
7 | // General Information about an assembly is controlled through the following
8 | // set of attributes. Change these attribute values to modify the information
9 | // associated with an assembly.
10 | [assembly: AssemblyTitle("OnvifEventsReceiver")]
11 | [assembly: AssemblyDescription("")]
12 | [assembly: AssemblyConfiguration("")]
13 | [assembly: AssemblyCompany("")]
14 | [assembly: AssemblyProduct("OnvifEventsReceiver")]
15 | [assembly: AssemblyCopyright("Copyright © 2016")]
16 | [assembly: AssemblyTrademark("")]
17 | [assembly: AssemblyCulture("")]
18 |
19 | // Setting ComVisible to false makes the types in this assembly not visible
20 | // to COM components. If you need to access a type in this assembly from
21 | // COM, set the ComVisible attribute to true on that type.
22 | [assembly: ComVisible(false)]
23 |
24 | //In order to begin building localizable applications, set
25 | //CultureYouAreCodingWith in your .csproj file
26 | //inside a . For example, if you are using US english
27 | //in your source files, set the to en-US. Then uncomment
28 | //the NeutralResourceLanguage attribute below. Update the "en-US" in
29 | //the line below to match the UICulture setting in the project file.
30 |
31 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
32 |
33 |
34 | [assembly: ThemeInfo(
35 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
36 | //(used if a resource is not found in the page,
37 | // or application resource dictionaries)
38 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
39 | //(used if a resource is not found in the page,
40 | // app, or any theme specific resource dictionaries)
41 | )]
42 |
43 |
44 | // Version information for an assembly consists of the following four values:
45 | //
46 | // Major Version
47 | // Minor Version
48 | // Build Number
49 | // Revision
50 | //
51 | // You can specify all the values or you can default the Build and Revision Numbers
52 | // by using the '*' as shown below:
53 | // [assembly: AssemblyVersion("1.0.*")]
54 | [assembly: AssemblyVersion("1.0.0.0")]
55 | [assembly: AssemblyFileVersion("1.0.0.0")]
56 | [assembly: InternalsVisibleTo("EventsReceiver.UnitTests")]
57 | [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
58 |
--------------------------------------------------------------------------------
/EventsReceiver/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace EventsReceiver.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("EventsReceiver.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/EventsReceiver/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace EventsReceiver.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/EventsReceiver/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/EventsReceiver/ValidationRules/AddressValidationRule.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using System.Windows.Controls;
4 | using Common;
5 |
6 | namespace EventsReceiver.ValidationRules
7 | {
8 | class AddressValidationRule : ValidationRule
9 | {
10 | public override ValidationResult Validate(object value, CultureInfo cultureInfo)
11 | {
12 | try
13 | {
14 | var adress = value as string;
15 |
16 | if (string.IsNullOrEmpty(adress))
17 | throw new UriFormatException();
18 |
19 | if (!adress.StartsWith(HttpGlobals.SchemaPrefix))
20 | adress = HttpGlobals.SchemaPrefix + adress;
21 |
22 | new Uri(adress);
23 | }
24 | catch (UriFormatException)
25 | {
26 | return new ValidationResult(false, "Invalid address");
27 | }
28 |
29 | return new ValidationResult(true, null);
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/EventsReceiver/ViewModelLocator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Devices;
3 | using EventsReceiver.Models;
4 | using EventsReceiver.ViewModels;
5 |
6 | namespace EventsReceiver
7 | {
8 | class ViewModelLocator
9 | {
10 | private readonly Lazy _mainWindowViewModelLazy = new Lazy(CreateMainWindowViewModel);
11 |
12 | public MainWindowViewModel MainWindowViewModel => _mainWindowViewModelLazy.Value;
13 |
14 | private static MainWindowViewModel CreateMainWindowViewModel()
15 | {
16 | var receiverFactory = new DeviceEventReceiverFactory();
17 | var model = new MainWindowModel(receiverFactory);
18 | return new MainWindowViewModel(model);
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/EventsReceiver/ViewModels/MainWindowViewModel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.ObjectModel;
3 | using System.ComponentModel;
4 | using System.Net;
5 | using System.Runtime.CompilerServices;
6 | using System.Windows;
7 | using System.Windows.Input;
8 | using Common;
9 | using Common.Events;
10 | using EventsReceiver.Commands;
11 | using EventsReceiver.Models;
12 | using EventsReceiver.Properties;
13 |
14 | namespace EventsReceiver.ViewModels
15 | {
16 | class MainWindowViewModel : INotifyPropertyChanged
17 | {
18 | private readonly IMainWindowModel _mainWindowModel;
19 |
20 | public ObservableCollection Events { get; } = new ObservableCollection();
21 | public ObservableCollection ConnectionLog { get; } = new ObservableCollection();
22 |
23 | public string DeviceAddress { get; set; } = "http://127.0.0.1";
24 | public string Login { get; set; } = "root";
25 | public string Password { get; set; } = "";
26 |
27 | private readonly CommandHandler _startClickCommand;
28 | public ICommand StartClickCommand => _startClickCommand;
29 |
30 | private readonly CommandHandler _stopClickCommand;
31 | public ICommand StopClickCommand => _stopClickCommand;
32 |
33 | public event PropertyChangedEventHandler PropertyChanged;
34 |
35 | public MainWindowViewModel(IMainWindowModel mainWindowModel)
36 | {
37 | if (mainWindowModel == null)
38 | throw new ArgumentNullException(nameof(mainWindowModel));
39 |
40 | _mainWindowModel = mainWindowModel;
41 |
42 | _startClickCommand = new CommandHandler(OnStartButtonClick, true);
43 | _stopClickCommand = new CommandHandler(OnStopButtonClick, false);
44 | }
45 |
46 | [NotifyPropertyChangedInvocator]
47 | protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
48 | {
49 | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
50 | }
51 |
52 | private void MainWindowModelOnEventReceived(object sender, DeviceEvent deviceEvent)
53 | {
54 | if (Application.Current != null)
55 | Application.Current.Dispatcher.Invoke(() => Events.Add(deviceEvent));
56 | else
57 | Events.Add(deviceEvent);
58 | }
59 |
60 | private void MainWindowModelOnConnectionStateChanged(object sender, ConnectionStateInfo connectionStateInfo)
61 | {
62 | string stateInfo = connectionStateInfo.ToString();
63 |
64 | if (Application.Current != null)
65 | Application.Current.Dispatcher.Invoke(() => ConnectionLog.Add(stateInfo));
66 | else
67 | ConnectionLog.Add(stateInfo);
68 | }
69 |
70 | private void OnStartButtonClick()
71 | {
72 | Uri deviceUri;
73 |
74 | string address = DeviceAddress;
75 |
76 | if (!address.StartsWith(HttpGlobals.SchemaPrefix))
77 | address = HttpGlobals.SchemaPrefix + address;
78 |
79 | if (!Uri.TryCreate(address, UriKind.Absolute, out deviceUri))
80 | {
81 | MessageBox.Show("Bad device address", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
82 | return;
83 | }
84 |
85 | var credential = new NetworkCredential(Login, Password);
86 | var timeout = TimeSpan.FromSeconds(15);
87 |
88 | var connectionParameters = new ConnectionParameters(deviceUri, credential, timeout);
89 | _mainWindowModel.ConnectionStateChanged += MainWindowModelOnConnectionStateChanged;
90 | _mainWindowModel.EventReceived += MainWindowModelOnEventReceived;
91 | _mainWindowModel.Start(connectionParameters);
92 |
93 | _startClickCommand.SetCanExecute(false);
94 | _stopClickCommand.SetCanExecute(true);
95 | }
96 |
97 | private void OnStopButtonClick()
98 | {
99 | _mainWindowModel.Stop();
100 | _mainWindowModel.ConnectionStateChanged -= MainWindowModelOnConnectionStateChanged;
101 | _mainWindowModel.EventReceived -= MainWindowModelOnEventReceived;
102 |
103 | _stopClickCommand.SetCanExecute(false);
104 | _startClickCommand.SetCanExecute(true);
105 |
106 | Events.Clear();
107 | ConnectionLog.Clear();
108 | }
109 | }
110 | }
111 |
--------------------------------------------------------------------------------
/EventsReceiver/Views/MainWindow.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 | !
14 |
15 |
16 |
17 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
--------------------------------------------------------------------------------
/EventsReceiver/Views/MainWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace EventsReceiver.Views
2 | {
3 | ///
4 | /// Interaction logic for MainWindow.xaml
5 | ///
6 | public partial class MainWindow
7 | {
8 | public MainWindow()
9 | {
10 | InitializeComponent();
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License
2 |
3 | Copyright (c) 2016 Bogdanov Kirill
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/OnvifEvents.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 14
4 | VisualStudioVersion = 14.0.25420.1
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EventsReceiver", "EventsReceiver\EventsReceiver.csproj", "{1A760E09-CE1F-4068-B1A3-F98BC88D0467}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "Common\Common.csproj", "{DF0A93D4-4FA2-480F-9351-2AF6A9D06C96}"
9 | EndProject
10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Devices", "Devices\Devices.csproj", "{9C6D5EF3-75DD-44F4-B349-B019532E2DFD}"
11 | EndProject
12 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EventsReceiver.UnitTests", "EventsReceiver.UnitTests\EventsReceiver.UnitTests.csproj", "{5541698D-10EF-4F58-B5B6-D9C29B031329}"
13 | EndProject
14 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.UnitTests", "Common.UnitTests\Common.UnitTests.csproj", "{C88C1B8D-C37B-4F99-A1A3-44986855D5C7}"
15 | EndProject
16 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Devices.UnitTests", "Devices.UnitTests\Devices.UnitTests.csproj", "{183F0876-5B96-4716-8374-F8BE172FCF08}"
17 | EndProject
18 | Global
19 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
20 | Debug|Any CPU = Debug|Any CPU
21 | Release|Any CPU = Release|Any CPU
22 | EndGlobalSection
23 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
24 | {1A760E09-CE1F-4068-B1A3-F98BC88D0467}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
25 | {1A760E09-CE1F-4068-B1A3-F98BC88D0467}.Debug|Any CPU.Build.0 = Debug|Any CPU
26 | {1A760E09-CE1F-4068-B1A3-F98BC88D0467}.Release|Any CPU.ActiveCfg = Release|Any CPU
27 | {1A760E09-CE1F-4068-B1A3-F98BC88D0467}.Release|Any CPU.Build.0 = Release|Any CPU
28 | {DF0A93D4-4FA2-480F-9351-2AF6A9D06C96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
29 | {DF0A93D4-4FA2-480F-9351-2AF6A9D06C96}.Debug|Any CPU.Build.0 = Debug|Any CPU
30 | {DF0A93D4-4FA2-480F-9351-2AF6A9D06C96}.Release|Any CPU.ActiveCfg = Release|Any CPU
31 | {DF0A93D4-4FA2-480F-9351-2AF6A9D06C96}.Release|Any CPU.Build.0 = Release|Any CPU
32 | {9C6D5EF3-75DD-44F4-B349-B019532E2DFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
33 | {9C6D5EF3-75DD-44F4-B349-B019532E2DFD}.Debug|Any CPU.Build.0 = Debug|Any CPU
34 | {9C6D5EF3-75DD-44F4-B349-B019532E2DFD}.Release|Any CPU.ActiveCfg = Release|Any CPU
35 | {9C6D5EF3-75DD-44F4-B349-B019532E2DFD}.Release|Any CPU.Build.0 = Release|Any CPU
36 | {5541698D-10EF-4F58-B5B6-D9C29B031329}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
37 | {5541698D-10EF-4F58-B5B6-D9C29B031329}.Debug|Any CPU.Build.0 = Debug|Any CPU
38 | {5541698D-10EF-4F58-B5B6-D9C29B031329}.Release|Any CPU.ActiveCfg = Release|Any CPU
39 | {5541698D-10EF-4F58-B5B6-D9C29B031329}.Release|Any CPU.Build.0 = Release|Any CPU
40 | {C88C1B8D-C37B-4F99-A1A3-44986855D5C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
41 | {C88C1B8D-C37B-4F99-A1A3-44986855D5C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
42 | {C88C1B8D-C37B-4F99-A1A3-44986855D5C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
43 | {C88C1B8D-C37B-4F99-A1A3-44986855D5C7}.Release|Any CPU.Build.0 = Release|Any CPU
44 | {183F0876-5B96-4716-8374-F8BE172FCF08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
45 | {183F0876-5B96-4716-8374-F8BE172FCF08}.Debug|Any CPU.Build.0 = Debug|Any CPU
46 | {183F0876-5B96-4716-8374-F8BE172FCF08}.Release|Any CPU.ActiveCfg = Release|Any CPU
47 | {183F0876-5B96-4716-8374-F8BE172FCF08}.Release|Any CPU.Build.0 = Release|Any CPU
48 | EndGlobalSection
49 | GlobalSection(SolutionProperties) = preSolution
50 | HideSolutionNode = FALSE
51 | EndGlobalSection
52 | EndGlobal
53 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Onvif Events Receiver
2 | C# client for getting events from ONVIF devices using pull point subscription method
3 |
4 | # Features:
5 |
-could receive events in raw xml presentation (without any additional parsing)
6 |
-.NET 4.6
7 |
-async/await paradigm
8 |
-pull point subscription method
9 |
-unit tests (NUnit + Moq)
10 |
--------------------------------------------------------------------------------