Hi Thierry,
I am glad to hear that you made progress on your implementation.
Did you consider my last advice regarding the LOCK_STATE PID?
From my point of view, some RDM Controllers on the market are not following the RDM Standards very strictly.
Because of this I can imagine that other Controllers may not report any issue with your implementation of the firmware.
I am very pleased to see you are looking for the most accurate implementation anyway.
Regarding the topic:
From your reported data I can conceive your SLOT_DESCRIPTION packet looks something like this:
Code: Select all
...
ACK (Response Type)
0x00 (Message Count)
0x00 (SubDevice)
GET_COMMAND_RESPONE (Command Class)
SLOT_INFO (PID)
0x1e (PDL)
Offset SlotType SlotLabelId
0x0000 0x00 0x0214 1)
0x0001 0x01 2) 0x0000 3)
0x0002 0x00 0x0404
0x0003 0x03 4) ?? 5)
0x0004 0x00 6) 0x0502 7)
0x0005 0x00 8) 0x005e 9)
(PD)
...
I have marked some Values with <number>) for annotations.
1) This SlotId is defined in an addition to the E1.20 Standard on
this website and was not included in MADRIX RADAR 1.0. For MADRIX RADAR 1.1, which is due to release soon, we have included those extended defines in the software. MADRIX RADAR should not report an invalid define for this slot in version 1.1.
In the addendum the SlotLabelId 0x0214 is defined as SD_COLOR_ADD_COOL_WHITE. I can only guess that this is not the value you desire. Because, even though the meaning of each slot is defined by the manufacturer, the description for this slot is "Intensity Coarse", which does not match SD_COLOR_ADD_COOL_WHITE in my opinion.
The description is retrieved via SLOT_DESCRIPTION.
2) The SlotType for the Slot 0x0001 is ST_SEC_FINE (E1.20 - Appendix C, Table C-1). Note that the SlotLabelId 3) is therefore not interpreted as a SlotLabel from E1.20 - Appendix C, Table C-2, but refers to another offset instead, which is 0x0000, the first slot.
4) The SlotType for SlotOffset 0x0003 is ST_SEC_SPEED, which defines this slot as a secondary slot (please refer to 2) ). The SlotLabelId 5) therefore refers to another slot, not the SlotLabelId from E1.20 - Appendix C, Table C-2.
7) The SlotLabelId for this Slot is used, therefore SlotType 6) must be a primary slot (0x00).
I can not give you any advice on the SlotLabelId for this slot, because the meaning of the slot is defined by the manufacturer.
To put it simply, how should MADRIX RADAR know, how the fixture behaves, when "Response time" is changed. Only the manufacturer controls the behaviour of the fixture when the value is changed.
I can only guess that this slot controls some form of fixture speed setting, for which I think SD_FIXTURE_CONTROL should be the right value.
9) Due to the 16 bits SlotLabelId being displayed, the SlotType 8) can only be 0x00. This declares this slot as a primary slot. Therefore the SlotLabelId 9) 0x005e is referred to in E1.20 - Appendix C, Table C-2, but 0x005e is not defined there.
In this case MADRIX RADAR displays the "Invalid" text, but also looks up the group of the SlotLabelId which is (0x005e & 0xff00). The resulting value of 0x0000 refers to the Intensity Functions group. Therefore you can see the text "Invalid (Intensity Function)" in this field.
I attached you this image to make the logic behind the SlotLabelId clearer:
- PrimarySecondarySlot.png (17.25 KiB) Viewed 12035 times
These are all informations I can retrieve from your post.
If any of this is incorrect, please excuse me, I am just guessing for the most part.
To get really down to the bits sent, I would encourage you to attach a Wireshark record to your post, which captured the communication from your fixture to MADRIX RADAR.
Please use the newest version of Wireshark for this. Also, please supply an index to the packet you are suspecting to contain the error to us.
As for your questions regarding the SlotLabelIds:
For Slot 0x0000 I would say that neither 0x0214 (SD_COLOR_ADD_COOL_WHITE) nor 0x0000 is a good choice there.
0x0214 is as mentioned SD_COLOR_ADD_COOL_WHITE, which may not be used to control an intensity slot.
0x0000 is not defined, 0x0001 is the first defined value in E1.20 - Appendix C, Table C-2.
As this slot controls the intensity for this fixture, I personally would use 0x0001 (SD_INTENSITY) or 0x0002 (SD_INTENSITY_MASTER), depending on the presence of other intensity controlling slots. If this slot is the only primary slot (0x0001 is a secondary slot and does not count), use SD_INTENSITY_MASTER, otherwise use SD_INTENSITY.
But the decision is really up to you as the manufacturer.
The description of slot 0x0005 is "Control mode", from which I can only assume it controls some form of fixture behaviour. If I am correct and this slot does control any form of abstract fixture behaviour, I personally would use SD_FIXTURE_CONTROL (0x0502).
I am very sorry, but I do not understand the question regarding slot 0x0004.
I am worrying that you mixed up SlotType (8 bits) with SlotLabelId (16 bits). Please note that a SlotType of 0x02 would define this slot again as a secondary slot. The SlotLabelId refers in this case to another slot.
From my point of view I would use 0x00 (SD_PRIMARY) as SlotType and 0x0502 (SD_FIXTURE_CONTROL) or 0x0503 (SD_FIXTURE_SPEED) depending on the behaviour of your fixture.
I hope my answer will help you.
If you do have any further questions, please attach a Wireshark Record or send it via e-mail to
info@madrix.com if you do not want to make it publicly available in the forums.
Best regards
FishAI