ola icon indicating copy to clipboard operation
ola copied to clipboard

Bug Report From RDM Tests (GET IDENTIFY_MODE returns 1)

Open ssilverman opened this issue 6 years ago • 1 comments

Error: Param 1 out of range, must be one of loud, quiet, 0, 255

Traceback (most recent call last): File "/usr/local/bin/rdm_test_server.py", line 274, in _RunTests tests, device = runner.RunTests(test_filter, False, self._UpdateStats) File "/usr/local/lib/python2.7/site-packages/ola/testing/rdm/TestRunner.py", line 333, in RunTests test.Run() File "/usr/local/lib/python2.7/site-packages/ola/testing/rdm/ResponderTest.py", line 264, in Run self.ResetState() File "/usr/local/lib/python2.7/site-packages/ola/testing/rdm/TestMixins.py", line 412, in ResetState self.SendSet(PidStore.ROOT_DEVICE, self.pid, [old_value]) File "/usr/local/lib/python2.7/site-packages/ola/testing/rdm/ResponderTest.py", line 420, in SendSet return self.SendDirectedSet(self._uid, sub_device, pid, args) File "/usr/local/lib/python2.7/site-packages/ola/testing/rdm/ResponderTest.py", line 440, in SendDirectedSet include_frames=True) File "/usr/local/lib/python2.7/site-packages/ola/RDMAPI.py", line 154, in Set PidStore.RDM_SET, include_frames) File "/usr/local/lib/python2.7/site-packages/ola/RDMAPI.py", line 193, in _SendRequest data = pid.Pack(args, request_type) File "/usr/local/lib/python2.7/site-packages/ola/PidStore.py", line 180, in Pack blob, args_used = group.Pack(args) File "/usr/local/lib/python2.7/site-packages/ola/PidStore.py", line 776, in Pack chunk, args_consumed = atom.Pack(args[arg_offset:]) File "/usr/local/lib/python2.7/site-packages/ola/PidStore.py", line 356, in Pack (value, self._GetAllowedRanges())) ArgsValidationError: Param 1 out of range, must be one of loud, quiet, 0, 255

ssilverman avatar Nov 14 '18 22:11 ssilverman

So the reason this is happening, is down to our PID definitions that drive all our RDM interactions: http://rdm.openlighting.org/pid/display?manufacturer=0&pid=4160

Specifically: https://github.com/OpenLightingProject/rdm-app/blob/master/data/pid_data.py#L4906-L4919

The get has no restrictions, the set has labels, and no ranges (see https://wiki.openlighting.org/index.php/RDM_PID_Definitions#Labels for more).

Having the debug output for this specific test would help ( http://docs.openlighting.org/ola/man/man1/rdm_responder_test.py.1.html ), but I think what's happening is as follows:

  1. Test does a get of current value (so it can reset responder), receives a 1
  2. Test does the set for the changed value
  3. Test tries to reset (to 1), throws error

Now I think there are a few things here, the test should probably flag itself as broken if it does a get and receives a value it won't be able to reset, rather than trying, failing and stacktracing. I'm still pondering if this should be broken, failed or warning ( https://www.openlighting.org/rdm-tools/rdm-responder-tests/interpreting-the-test-output/ ).

Now the other question of course is what is wrong (I think our get should show the labels, so I'll add them), but the standard currently says: "Values in the range of 0x01-0xFE are not currently defined."

So does that mean us getting a 1 from you is valid or not? It's not a question anyone has posed in the (unofficial) RDM discussion forum yet http://www.rdmprotocol.org/forums/ so I'm not sure what we do for now.

peternewman avatar Nov 17 '18 12:11 peternewman