View Full Version : SLOT_INFO with Secondary Slots
RoryM
July 23rd, 2019, 10:39 AM
Hello,
I'm developing a tool that deals with responder Slots, and am trying to understand the boundaries of what the Standard allows with regards to SLOT_INFO and 16-bit parameters/functions.
The standard states that a responder has 16-bit parameter(s) when it has both a Primary (ST_PRIMARY) and Secondary (ST_SEC_FINE) slot(s). The type of slot is discovered using SLOT_INFO.
Secondary slots are meant to report the Slot Offset for the Primary Slot they refer to, however as far as I can tell there are no rules in the standard preventing a responder implementation from having multiple Secondary Slots pointing to the same Primary.
It seems to be legal, but I can't see why a responder would have multiple Secondary slots for the same Primary, so was hoping someone could provide a use case for one? Or point me towards where it states that is forbidden?
Thanks,
Rory
sblair
July 27th, 2019, 09:36 PM
Rory,
Welcome to the RDM forums!
Yes, you can definitely have multiple secondary slots pointing to the same primary. It can be quite common on moving lights with gobo wheels and color systems too. There is a good webinar we did on this subject a couple years ago you can find here that I think will hopefully provide a lot of insight and some examples of this.
https://www.youtube.com/watch?v=-5BmsJ7CeFE
hamish
July 29th, 2019, 11:06 AM
It can be quite common on moving lights with gobo wheels and color systems too.
Hi Scott, little while no speak!
Could you share a couple of practical examples of a real product that implements RDM defined slots in this way? I'm curious.
I foresee that the permutations and combinations alluded to, or allowed by the standard are as robust as two marrows connected by a cucumber on a hot day!
Best
Hamish
ericthegeek
July 30th, 2019, 11:33 AM
As an example, it's very common to have "Pan Coarse" as Primary, and to have secondaries for "Pan Fine" and "Speed" on a moving head.
hamish
July 30th, 2019, 11:43 AM
As an example, it's very common to have "Pan Coarse" as Primary, and to have secondaries for "Pan Fine" and "Speed" on a moving head.
More confused.
Do you mean "secondaries for" or "secondaries of"?
ericthegeek
July 30th, 2019, 12:43 PM
More confused.
Do you mean "secondaries for" or "secondaries of"?
Here's an example from the roundtable presentation Scott posted earlier:
http://www.rdmprotocol.org/forums/attachment.php?attachmentid=60&stc=1&d=1564512118
sblair
July 30th, 2019, 01:50 PM
Here's a common example from a moving light for the Slot Info data. This was from a High End Systems fixture.
// Pan High
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x00; // " " Low
ParamData[i++] = ST_PRIMARY; // Slot Type 8 bit
ParamData[i++] = SD_PAN >> 8; // Slot Label ID 16-bit. High
ParamData[i++] = (BYTE)SD_PAN; // " " " Low
// Pan Low
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x01; // " " Low
ParamData[i++] = ST_SEC_FINE; // Slot Type 8 bit
ParamData[i++] = 0x00;
ParamData[i++] = 0x00; // Points to Pan High Slot as dependency.
// Tilt High
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x02; // " " Low
ParamData[i++] = ST_PRIMARY; // Slot Type 8 bit
ParamData[i++] = SD_TILT >> 8; // Slot Label ID 16-bit. High
ParamData[i++] = (BYTE)SD_TILT; // " " " Low
// Tilt Low
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x03; // " " Low
ParamData[i++] = ST_SEC_FINE; // Slot Type 8 bit
ParamData[i++] = 0x00;
ParamData[i++] = 0x02; // Points to Tilt High Slot as dependency.
// Color Function
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x04; // " " Low
ParamData[i++] = ST_SEC_CONTROL; // Slot Type 8 bit
ParamData[i++] = 0x00; // Slot Label ID 16-bit. High
ParamData[i++] = 0x05; // Points to Cyan Slot as dependency.
// Cyan
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x05; // " " Low
ParamData[i++] = ST_PRIMARY; // Slot Type 8 bit
ParamData[i++] = SD_COLOR_SUB_CYAN >> 8; // Slot Label ID 16-bit. High
ParamData[i++] = (BYTE)SD_COLOR_SUB_CYAN; // " " " Low
// Magenta
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x06; // " " Low
ParamData[i++] = ST_PRIMARY; // Slot Type 8 bit
ParamData[i++] = SD_COLOR_SUB_MAGENTA >> 8; // Slot Label ID 16-bit. High
ParamData[i++] = (BYTE)SD_COLOR_SUB_MAGENTA;// " " " Low
// Yellow
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x07; // " " Low
ParamData[i++] = ST_PRIMARY; // Slot Type 8 bit
ParamData[i++] = SD_COLOR_SUB_YELLOW >> 8; // Slot Label ID 16-bit. High
ParamData[i++] = (BYTE)SD_COLOR_SUB_YELLOW;// " " " Low
//Static Color Function
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x08; // " " Low
ParamData[i++] = ST_SEC_CONTROL; // Slot Type 8 bit
ParamData[i++] = 0x00; // Slot Label ID 16-bit. High
ParamData[i++] = 0x09; // Points to Static Color Pos as dependency.
//Static Color Position
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x09; // " " Low
ParamData[i++] = ST_PRIMARY; // Slot Type 8 bit
ParamData[i++] = SD_COLOR_WHEEL >> 8; // Slot Label ID 16-bit. High
ParamData[i++] = (BYTE)SD_COLOR_WHEEL; // " " " Low
// Static Gobo Function
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x0a; // " " Low
ParamData[i++] = ST_SEC_CONTROL; // Slot Type 8 bit
ParamData[i++] = 0x00; // Slot Label ID 16-bit. High
ParamData[i++] = 0x0b; // Points to Gobo Position as dependency
// Static Gobo Position
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x0b; // " " Low
ParamData[i++] = ST_PRIMARY; // Slot Type 8 bit
ParamData[i++] = SD_STATIC_GOBO_WHEEL >> 8; // Slot Label ID 16-bit. High
ParamData[i++] = (BYTE)SD_STATIC_GOBO_WHEEL; // " " " Low
// Rotation Gobo Wheel
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x0c; // " " Low
ParamData[i++] = ST_PRIMARY; // Slot Type 8 bit
ParamData[i++] = SD_ROTO_GOBO_WHEEL >> 8; // Slot Label ID 16-bit. High
ParamData[i++] = (BYTE)SD_ROTO_GOBO_WHEEL; // " " " Low
// Gobo Rotate Function
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x0d; // " " Low
ParamData[i++] = ST_SEC_CONTROL; // Slot Type 8 bit
ParamData[i++] = 0x00; // Slot Label ID 16-bit. High
ParamData[i++] = 0x0e; // Points to Gobo Rotate as dependency.
// Gobo Rotate High
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x0e; // " " Low
ParamData[i++] = ST_SEC_ROTATION; // Slot Type 8 bit
ParamData[i++] = 0x00; // Slot Label ID 16-bit. High
ParamData[i++] = 0x0c; // Points to Gobo Slot as dependency.
// Gobo Rotate Low
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x0f; // " " Low
ParamData[i++] = ST_SEC_FINE; // Slot Type 8 bit
ParamData[i++] = 0x00; // Slot Label ID 16-bit. High
ParamData[i++] = 0x0e; // Points to Gobo Rotate High as dependency.
// Effect Function
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x10; // " " Low
ParamData[i++] = ST_SEC_CONTROL; // Slot Type 8 bit
ParamData[i++] = 0x00; // Slot Label ID 16-bit. High
ParamData[i++] = 0x11; // Points to Effect Position as dependency
// Effect Position
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x11; // " " Low
ParamData[i++] = ST_PRIMARY; // Slot Type 8 bit
ParamData[i++] = SD_EFFECTS_WHEEL >> 8; // Slot Label ID 16-bit. High
ParamData[i++] = (BYTE)SD_EFFECTS_WHEEL; // " " " Low
// Frost
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x12; // " " Low
ParamData[i++] = ST_PRIMARY; // Slot Type 8 bit
ParamData[i++] = SD_FROST >> 8; // Slot Label ID 16-bit. High
ParamData[i++] = (BYTE)SD_FROST; // " " " Low
// Zoom
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x13; // " " Low
ParamData[i++] = ST_PRIMARY; // Slot Type 8 bit
ParamData[i++] = SD_ZOOM >> 8; // Slot Label ID 16-bit. High
ParamData[i++] = (BYTE)SD_ZOOM; // " " " Low
// Focus
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x14; // " " Low
ParamData[i++] = ST_PRIMARY; // Slot Type 8 bit
ParamData[i++] = SD_EDGE >> 8; // Slot Label ID 16-bit. High
ParamData[i++] = (BYTE)SD_EDGE; // " " " Low
// Iris
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x15; // " " Low
ParamData[i++] = ST_PRIMARY; // Slot Type 8 bit
ParamData[i++] = SD_BEAM_SIZE_IRIS >> 8; // Slot Label ID 16-bit. High
ParamData[i++] = (BYTE)SD_BEAM_SIZE_IRIS; // " " " Low
// Shutter/Lamp Func
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x16; // " " Low
ParamData[i++] = ST_PRIMARY; // Slot Type 8 bit
ParamData[i++] = SD_LAMP_CONTROL >> 8; // Slot Label ID 16-bit. High
ParamData[i++] = (BYTE)SD_LAMP_CONTROL; // " " " Low
// Shutter
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x17; // " " Low
ParamData[i++] = ST_PRIMARY; // Slot Type 8 bit
ParamData[i++] = SD_STROBE >> 8; // Slot Label ID 16-bit. High
ParamData[i++] = (BYTE)SD_STROBE; // " " " Low
// Dimmer
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x18; // " " Low
ParamData[i++] = ST_PRIMARY; // Slot Type 8 bit
ParamData[i++] = SD_INTENSITY >> 8; // Slot Label ID 16-bit. High
ParamData[i++] = (BYTE)SD_INTENSITY; // " " " Low
// Control
ParamData[i++] = 0x00; // Slot Offset 16-bit High
ParamData[i++] = 0x1b; // " " Low
ParamData[i++] = ST_PRIMARY; // Slot Type 8 bit
ParamData[i++] = SD_FIXTURE_CONTROL >> 8; // Slot Label ID 16-bit. High
ParamData[i++] = (BYTE)SD_FIXTURE_CONTROL;// " " " Low
vBulletin® v3.8.7, Copyright ©2000-2026, vBulletin Solutions, Inc.