# Discovery Improvements

**URL:** <https://opendaq.discourse.group/t/discovery-improvements/47>\
**Category:** ✋ Feature Requests\
**Created:** [December 17, 2024, 9:57am UTC](https://opendaq.discourse.group/t/discovery-improvements/47 "2024-12-17T09:57:17Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dusan](https://yyz2.discourse-cdn.com/flex004/user_avatar/opendaq.discourse.group/dusan/32/17_2.png) [@Dusan](https://opendaq.discourse.group/u/Dusan)\
**Post date:** [December 17, 2024, 9:57am UTC](https://opendaq.discourse.group/t/discovery-improvements/47/1 "2024-12-17T09:57:17Z")

</div>

**Introduction**

From the feedback discovery is still not straight forward and aligned working. Also systems can not be build up easily. This needs to be simplified.

**Requirements**

A common representation of a connection string.

Complete information from the discovery service.  
Currently only these information are shared on mdns, if the openDAQ mechanism is used:

- name;
- manufacturer;
- model;
- serialNumber;

But the mechanism shall also provide to share these information via discovery:

- deviceClass
- hardwareRevision
- softwareRevision
- sdkVersion
- location
- user
- lockingContext
- systemType
- systemUUID
- Position

Changeable Parameters

**User interaction**

```auto
// Discovery of the devices 
daq::ListPtr<daq::IDeviceDiscoveryInfo> availableDevicesInfo = instance.getAvailableDevices();
for (const auto& deviceDiscoveryInfo : availableDevicesInfo)
{
  for (auto prop: device.getInfo().getAllProperties())
  {
    // see method in the article:  
    printProperty(device.getInfo(), prop);
  }
}
// Output is read only and the property object is foozen, 
// because it is read from the information send on the wire (mDNS)
// during the getAvailableDevices call.
// It fills up the DeviceDiscoveryInfoPtr, which inerhits 
// from Property Object. Because of this, besides the standard 
// definitions also other definition which 
// are shared via the wire are added as properties to the Property Object.
// Property Name: name: MyHBKDevice (getName())
// Property Name: manufacturer: HBK (getManufacturer())
// Property Name: model: B201-10 (getModel())
// Property Name: deviceRevision: 1.0.0 (getDeviceRevision())
// Property Name: softwareRevision: v2.1.0 (getSoftwareRevision())
// Property Name: deviceClass: DAQ Amplifier (getDeviceClass())
// Property Name: serialNumber: V4-01 (getSerialNumber())
// Property Name: position: 2 (getPosition())
// Property Name: systemType: Layered (getSystemType())
// Property Name: systemUuid: ABSA-SDA1-... (getSystemUuid())
// Property Name: connectionString: daq://172.168.0.1 (getConnectionString())
// Property Name: sdkVersion: 3.20.0 (getSdkVersion())
// Property Name: Location: "MyHome" (getLocation())
// Property Name: UserName: "Nils" (getUserName())Type
// Helper Method
for (const auto& systems: availableDevicesInfo.getAvailableSystems())
{
  for (const auto& system : systems)
  {
    std::cout << system.systemType << " has the UUID" << system.systemUuid << std::endl;
    for (auto device : system .getInfo().getAllProperties())
    {
      printProperty(device.getInfo(), prop);
    }
  }
}
// Prints 
//Layered has the UUID ABDC-AS12-...
// All devices associated with this system

```

**Who shall implement the Feature**

openDAQ  
 Contribution

**Status**  
 Feature Planned on Roadmap  
 Feature Request is discussed in Working Group  
 Feature declined.
