L-Acoustics / avdecc

A set of open source libraries for controlling AVB entities using the AVDECC (IEEE 1722.1) protocol compliant to Avnu Milan Specifications
GNU Lesser General Public License v3.0
90 stars 21 forks source link

Devices are marked non-compliant when an out of range CONTROL value is received #134

Closed Florob closed 1 year ago

Florob commented 1 year ago

It appears devices are currently marked "Not fully IEEE 1722.1 compliant" when an out of range CONTROL value is received.

While such values warrant a warning, they are explicitly allowed by the standard for some control types. Cf. IEEE 1722.1-2021 7.3.5.12. Fan Status Control (FAN_STATUS).

Aside: There is a typo in the accompanying log message: "DynamicValues for ControlDescriptor at Index 2 are not a valid"

christophe-calmejane commented 1 year ago

Thanks, it looks like POWER_STATUS and TEMPERATURE are also "allowing" out of range value. Will be fixed shortly as I'm getting close to a release.

Florob commented 1 year ago

Vendor specific controls probably should also elide the check, since their semantics are unknown. As such I'm not sure if this check makes sense at all. I guess it is sensible for well-known control types.

christophe-calmejane commented 1 year ago

Well, as per specification, the rule is that the current value must be contained within min and max. The exceptions are listed for the identified Control Types above. That said, I agree that removing the check for vendor specific is probably a good thing!

Florob commented 1 year ago

That would probably be a good question for the WG. The specification does say [minimum, maximum] is the range of "valid" values. I don't think it says the current value has to be in that range though. The definitions of FAN_SPEED/POWER_STATUS/TEMPERATURE could be taken to imply that "valid" only means "expected". Otherwise, the specification would arguably contradict itself. None of the Control Type definitions say that this is in any way an exception to a rule.

christophe-calmejane commented 1 year ago

image

Pretty clear to me. The definition of may is very well defined for IEEE.

Nevertheless, doesn't hurt to ask the WG yes.

christophe-calmejane commented 1 year ago

@jdkoftinoff do you have an opinion?

Maybe the best would be to forward the "invalid" value up to the controller to decide (as advertised in the spec)... if I can do that easily.