Beispiel #1
0
		public static List<RviDevice> GetRviDevices(string url, string login, string password, List<Camera> existingCameras, out bool isNotConnected)
		{
			var devices = GetDevices(url, login, password, out isNotConnected);
			var rviDevices = new List<RviDevice>();
			var newCameras = new List<Camera>();
			foreach (var device in devices)
			{
				var rviDevice = new RviDevice { Uid = device.Guid, Ip = device.Ip, Name = device.Name, Status = ConvertToRviStatus(device.Status) };
				rviDevices.Add(rviDevice);
				foreach (var channel in device.Channels)
				{
					var camera = new Camera
					{
						UID = channel.Guid,
						Name = channel.Name,
						RviServerUrl = url,
						RviDeviceName = device.Name,
						RviDeviceUID = device.Guid,
						Ip = device.Ip,
						Number = channel.Number,
						Vendor = channel.Vendor,
						CountPresets = channel.CountPresets,
						CountTemplateBypass = channel.CountTemplateBypass,
						CountTemplatesAutoscan = channel.CountTemplatesAutoscan,
						Status = ConvertToRviStatus(device.Status),
						IsRecordOnline = channel.IsRecordOnline,
						IsOnGuard = channel.IsOnGuard
					};
					foreach (var stream in channel.Streams)
					{
						var rviStream = new RviStream { Number = stream.Number, RviDeviceUid = device.Guid, RviChannelNumber = channel.Number };
						camera.RviStreams.Add(rviStream);
					}
					camera.SelectedRviStreamNumber = camera.RviStreams.Count > 0 ? camera.RviStreams.First().Number : 0;
					rviDevice.Cameras.Add(camera);
					newCameras.Add(camera);
				}
			}
			if (existingCameras != null)
			{
				foreach (var existingCamera in existingCameras)
				{
					var camera = newCameras.FirstOrDefault(newCamera => newCamera.UID == existingCamera.UID);
					if (camera != null)
					{
						camera.ShowDetailsHeight = existingCamera.ShowDetailsHeight;
						camera.ShowDetailsWidth = existingCamera.ShowDetailsWidth;
						camera.ShowDetailsMarginLeft = existingCamera.ShowDetailsMarginLeft;
						camera.ShowDetailsMarginTop = existingCamera.ShowDetailsMarginTop;
						camera.PlanElementUIDs = existingCamera.PlanElementUIDs;
					}
				}
			}
			return rviDevices;
		}
Beispiel #2
0
		public static bool PrepareToTranslation(RviSettings rviSettings, RviStream rviStream, out IPEndPoint ipEndPoint, out int vendorId)
		{
			ipEndPoint = null;
			vendorId = -1;
			bool isNotConnected;

			var devices = GetDevices(rviSettings.Url, rviSettings.Login, rviSettings.Password, out isNotConnected);
			var device = devices.FirstOrDefault(d => d.Guid == rviStream.RviDeviceUid);

			if (device == null)
				return false;

			var channel = device.Channels.FirstOrDefault(ch => ch.Number == rviStream.RviChannelNumber);

			if (channel == null)
				return false;

			vendorId = channel.Vendor;

			using (IntegrationClient client = CreateIntegrationClient(rviSettings.Url))
			{
				var sessionUID = Guid.NewGuid();

				var sessionInitialiazationIn = new SessionInitialiazationIn();
				sessionInitialiazationIn.Header = new HeaderRequest()
				{
					Request = Guid.NewGuid(),
					Session = sessionUID
				};
				sessionInitialiazationIn.Login = rviSettings.Login;
				sessionInitialiazationIn.Password = rviSettings.Password;
				var sessionInitialiazationOut = client.SessionInitialiazation(sessionInitialiazationIn);
				//var errorMessage = sessionInitialiazationOut.Header.HeaderResponseMessage.Information;

				var response = client.VideoStreamingStart(new ChannelStreamingStartIn()
				{
					Header = new HeaderRequest() { Request = new Guid(), Session = sessionUID },
					DeviceGuid = device.Guid,
					ChannelNumber = channel.Number,
					StreamNumber = rviStream.Number
				});

				var sessionCloseIn = new SessionCloseIn();
				sessionCloseIn.Header = new HeaderRequest()
				{
					Request = Guid.NewGuid(),
					Session = sessionUID
				};
				var sessionCloseOut = client.SessionClose(sessionCloseIn);

				if (response.EndPointPort == 0)
				{
					return false;
				}
				ipEndPoint = new IPEndPoint(IPAddress.Parse(response.EndPointAdress), response.EndPointPort);
			}
			return true;
		}
Beispiel #3
0
		public RviStreamViewModel(RviStream rviStream)
		{
			StreamNumber = rviStream.Number;
		}