ExtendedDiscoveryService(ish)

We deprecated ExtendedDiscoveryService because we couldn’t come up with a good reason for it. However, I have a need similar to it and was wanting to open a discussion to see if it can be done currently and if not, maybe create a PR for something like this…

The sony binding will discover sony devices via UPNP (upnp participant class).

There are four main services a device can implement - Simple IP, DIAL, IRCC or Scalar. Each of those services will send out their own UPNP packet and I have 4 discovery classes (upnp participants) that will find them and create the associated thing (there are 4 things).

Now - we can really group those four services into what I’m calling generations

  1. Simple IP
  2. DIAL and IRCC
  3. Scalar

A device can be a gen 1 or gen 2 or gen 3 by itself - but it could also be a gen1/gen3, or a gen2/gen3 (haven’t seen gen1/gen2 yet).

The issue is - that you always want to use the highest generation found (scalar includes simple ip and dial/ircc abilities).

Since these UPNP packets come in independently and definitely out of order - I’d like a way to cancel an inbox item.

Basically - if I’ve discovered an gen1 device and created an inbox item for it - then I receive a gen3 packet for the device - I’d like to delete the gen1 inbox item and create the gen3 inbox item. Basically always accepting the highest generation as the best one.

The big issue is that for gen2 - I could have two inbox items that would need deleting. Because of that I can’t create a single dummy item saying the generation (because I need to create two things if it’s truely only gen2)…

Any thoughts?