Exemplo n.º 1
0
 /// <summary>
 /// Handles selection changed event of device list
 /// </summary>
 /// <param name="sender">Event sender</param>
 /// <param name="e">Event argument</param>
 private void lvDevices_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (lvDevices.SelectedItems.Count > 0)
     {
         ClearServiceInfo();
         ListViewItem        item   = lvDevices.SelectedItems[0];
         DeviceDiscoveryData device = (DeviceDiscoveryData)item.Tag;
         tbEpAddress.Text = device.UUID;
         tbDeviceIP.Text  = device.EndPointAddress;
         cmbServiceAddress.Items.Clear();
         foreach (string s in device.ServiceAddresses)
         {
             cmbServiceAddress.Items.Add(s);
         }
         cmbServiceAddress.Text = device.ServiceAddresses.Count > 0 ? device.ServiceAddresses[0] : string.Empty;
         tbType.Text            = device.Type;
         string[] scopes = device.Scopes.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
         tbScopes.Text = string.Empty;
         foreach (string scope in scopes)
         {
             tbScopes.Text += scope + "\r\n";
         }
         tbMetadataVersion.Text = device.MetadataVersion.ToString();
     }
 }
Exemplo n.º 2
0
 /// <summary>
 /// Handles selection changed event of device list
 /// </summary>
 /// <param name="sender">Event sender</param>
 /// <param name="e">Event argument</param>
 private void lvDevices_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (lvDevices.SelectedItems.Count > 0)
     {
         ClearServiceInfo();
         ListViewItem        item   = lvDevices.SelectedItems[0];
         DeviceDiscoveryData device = (DeviceDiscoveryData)item.Tag;
         ShowDeviceDiscoveryData(device);
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// Adds device to device list
        /// </summary>
        /// <param name="device">Device to be added</param>
        private void AddDeviceToList(DeviceDiscoveryData device)
        {
            IPAddress devAddress = null;

            IPAddress.TryParse(device.EndPointAddress, out devAddress);
            if (devAddress != null)
            {
                ListViewItem deviceItem = null;
                for (int i = 0; i < lvDevices.Items.Count; i++)
                {
                    DeviceDiscoveryData listDev = (DeviceDiscoveryData)lvDevices.Items[i].Tag;
                    IPAddress           address = IPAddress.Parse(listDev.EndPointAddress);
                    int res = Compare(devAddress.GetAddressBytes(), address.GetAddressBytes());
                    if (res == 0 && listDev.UUID == device.UUID)
                    {
                        deviceItem = lvDevices.Items[i];
                        break;
                    }
                }
                if (deviceItem == null)
                {
                    var scopes = device.Scopes.Split(' ');

                    var hardwarePrefix = "onvif://www.onvif.org/hardware/";
                    var hardware       = "";
                    if (scopes.Where(e => e.StartsWith(hardwarePrefix)).Any())
                    {
                        hardware = scopes.Where(e => e.StartsWith(hardwarePrefix)).First().Substring(hardwarePrefix.Count());
                    }

                    var manufacturerPrefix = "onvif://www.onvif.org/manufacturer/";
                    var manufacturer       = "";
                    if (scopes.Where(e => e.StartsWith(manufacturerPrefix)).Any())
                    {
                        manufacturer = scopes.Where(e => e.StartsWith(manufacturerPrefix)).First().Substring(manufacturerPrefix.Count());
                    }

                    deviceItem = new ListViewItem(new string[] { device.EndPointAddress, device.UUID, hardware, manufacturer });
                    lvDevices.Items.Add(deviceItem);

                    lvDevices.Sort();
                }
                deviceItem.Tag = device; //renew properties
                if (_unicastProbing)
                {
                    ShowDeviceDiscoveryData(device);
                }
                if (!deviceItem.Selected && _autoSelectDevice)
                {
                    lvDevices.SelectedItems.Clear();
                    deviceItem.Selected = true;
                    lvDevices.Refresh();
                }
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Adds device to device list
        /// </summary>
        /// <param name="device">Device to be added</param>
        private void AddDeviceToList(DeviceDiscoveryData device)
        {
            IPAddress devAddress = null;

            IPAddress.TryParse(device.EndPointAddress, out devAddress);
            if (devAddress != null)
            {
                ListViewItem deviceItem = null;
                int          index      = lvDevices.Items.Count;
                for (int i = 0; i < lvDevices.Items.Count; i++)
                {
                    DeviceDiscoveryData listDev = (DeviceDiscoveryData)lvDevices.Items[i].Tag;
                    IPAddress           address = IPAddress.Parse(listDev.EndPointAddress);
                    int res = Compare(devAddress.GetAddressBytes(), address.GetAddressBytes());
                    if (res < 0)
                    {
                        //find proper position to insert item
                        index = i;
                        break;
                    }
                    else if (res == 0)
                    {
                        deviceItem = lvDevices.Items[i];
                        break;
                    }
                }
                if (deviceItem == null)
                {
                    deviceItem = new ListViewItem(new string[] { device.EndPointAddress, device.UUID });
                    lvDevices.Items.Insert(index, deviceItem);
                }
                deviceItem.Tag = device; //renew properties
                if (_unicastProbing)
                {
                    ShowDeviceDiscoveryData(device);
                }
                if (!deviceItem.Selected && _autoSelectDevice)
                {
                    lvDevices.SelectedItems.Clear();
                    deviceItem.Selected = true;
                    lvDevices.Refresh();
                }
            }
        }
Exemplo n.º 5
0
 void ShowDeviceDiscoveryData(DeviceDiscoveryData device)
 {
     tbEpAddress.Text = device.UUID;
     tbDeviceIP.Text  = device.EndPointAddress;
     cmbServiceAddress.Items.Clear();
     foreach (string s in device.ServiceAddresses)
     {
         cmbServiceAddress.Items.Add(s);
     }
     cmbServiceAddress.Text = device.ServiceAddresses.Count > 0 ? device.ServiceAddresses[0] : string.Empty;
     tbType.Text            = device.Type;
     string[] scopes = device.Scopes.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
     tbScopes.Text = string.Empty;
     foreach (string scope in scopes)
     {
         tbScopes.Text += scope + "\r\n";
     }
     tbMetadataVersion.Text = device.MetadataVersion.ToString();
 }
Exemplo n.º 6
0
 /// <summary>
 /// Handles device discovered event
 /// </summary>
 /// <param name="device">Discovered device</param>
 private void OnDeviceDiscovered(DeviceDiscoveryData device)
 {
     _probeAnswered = true;
     Invoke(new Action <DeviceDiscoveryData>(AddDeviceToList), new object[] { device });
 }