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; }
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; }
public RviStreamViewModel(RviStream rviStream) { StreamNumber = rviStream.Number; }