A few thoughts.
Thanks for reserving a manufacturer ID and thinking about how to allocate this limited resource with future expansion in mind.
1) I agree with the concept of a "set serial" command distinct from "set starting address" rather than combined. Different functions.
2) Small. I think Command 1 should be set serial - because having that serial will likely be the base on which the other commands are built.
Command 2 could be set starting address. There may be a command 3 later, and it will probably use the serial...
3) For consistency, I suggest that all our commands begin with a serial address - even Set Serial. However, 0 should be reserved and not used as a real serial number. If you want to change a known serial, you could give the old serial and the new. More often tho you would send it to serial number 0. Addressing the Set Serial command to device 0 means "I'm talking to a device which has been identified out of band". There have been suggestions of having a button or switch or grounding some pin on the device, which means "for a while, you can respond to the Set Serial command addressed to serial 0". The exact method can vary with the device, but there needs to be some way of telling one device "I mean you, even tho I don't know your name".
4) I also agree with the checksum for a one way protocol. Apparently 8 bits. The method of creating the checksum, and which bytes are included within it, need to be specified. A carry-wrapping sum (add the next byte, then add one if it overflows) is easy and fairly effective. A simple sum (low 8 bits) can also work.
5) Renards should probably pass the commands down the daisy chain unmodified by default. (Alternative: pass only commands not addressed to and consumed by itself). This is probably not part of the standard per se (true DMX uses a bus rather than a modify-and-repeat daisy chain), but should be documented in the wiki anyway.
6) Today we have one way protocols in this hobby, but we should be preparing for future of having RDM, and be thinking ahead to how these commands will gracefully interact with it, before committing them in stone.
7) For true DMX, that annoyingly long break separates packets and thus determines packet length. Since sometimes there is value in encapsulating DMX style date in other formats, I wonder if it would be useful to include a length in these new packets, to make them more easily used by alternate streaming contexts?
8) Command 3 might be: (to the device with the given serial): accept the following data bytes as beginning with your start address. So suppose you set serial 1534 to starting address 420. You can verify that it was addressed by sending a regular DMX data packet including channels 420 and up, and see if it lights up. But what if there are two devices responding to address 420? You might be looking at the wrong one. So instead, to test you send 91 Mhigh Mlow 03 SerHi SerLo Data Data Data.... The device displays those data bytes. (1) No other device on address 420 will respond, (2) you don't have to send 419 dummy bytes to get to it, (3) besides testing, this command could potentially be used for displaying sequences with selective update.
Thanks for reserving a manufacturer ID and thinking about how to allocate this limited resource with future expansion in mind.
1) I agree with the concept of a "set serial" command distinct from "set starting address" rather than combined. Different functions.
2) Small. I think Command 1 should be set serial - because having that serial will likely be the base on which the other commands are built.
Command 2 could be set starting address. There may be a command 3 later, and it will probably use the serial...
3) For consistency, I suggest that all our commands begin with a serial address - even Set Serial. However, 0 should be reserved and not used as a real serial number. If you want to change a known serial, you could give the old serial and the new. More often tho you would send it to serial number 0. Addressing the Set Serial command to device 0 means "I'm talking to a device which has been identified out of band". There have been suggestions of having a button or switch or grounding some pin on the device, which means "for a while, you can respond to the Set Serial command addressed to serial 0". The exact method can vary with the device, but there needs to be some way of telling one device "I mean you, even tho I don't know your name".
4) I also agree with the checksum for a one way protocol. Apparently 8 bits. The method of creating the checksum, and which bytes are included within it, need to be specified. A carry-wrapping sum (add the next byte, then add one if it overflows) is easy and fairly effective. A simple sum (low 8 bits) can also work.
5) Renards should probably pass the commands down the daisy chain unmodified by default. (Alternative: pass only commands not addressed to and consumed by itself). This is probably not part of the standard per se (true DMX uses a bus rather than a modify-and-repeat daisy chain), but should be documented in the wiki anyway.
6) Today we have one way protocols in this hobby, but we should be preparing for future of having RDM, and be thinking ahead to how these commands will gracefully interact with it, before committing them in stone.
7) For true DMX, that annoyingly long break separates packets and thus determines packet length. Since sometimes there is value in encapsulating DMX style date in other formats, I wonder if it would be useful to include a length in these new packets, to make them more easily used by alternate streaming contexts?
8) Command 3 might be: (to the device with the given serial): accept the following data bytes as beginning with your start address. So suppose you set serial 1534 to starting address 420. You can verify that it was addressed by sending a regular DMX data packet including channels 420 and up, and see if it lights up. But what if there are two devices responding to address 420? You might be looking at the wrong one. So instead, to test you send 91 Mhigh Mlow 03 SerHi SerLo Data Data Data.... The device displays those data bytes. (1) No other device on address 420 will respond, (2) you don't have to send 419 dummy bytes to get to it, (3) besides testing, this command could potentially be used for displaying sequences with selective update.
Last edited: