Discovery Improvements

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

// 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.