View Full Version : SLOT_INFO and 16-bit secondary slots
tharron
December 16th, 2014, 03:53 PM
Hi folks,
I'm well into my RDM client implementation, but upon reflecting I've come to realize that I'm not sure how to handle 16-bit secondary parameters. For instance, in my fixture I have a gobo with a 16-bit rotate/index value.
The way I interpret the spec is that a secondary channel may not have a coarse and fine byte. What's the 'proper' way to handle this? The more I think about it the more I want to mark every channel as a primary/undefined :-)
sblair
December 16th, 2014, 11:09 PM
I hear ya! It takes a bit to wrap your head around at first. Here is how I've implemented Gobo wheels in the past. This covers a rotating gobo wheel with control channels and 16-bit rotation.
// 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.
tharron
December 17th, 2014, 07:53 AM
Thanks, Scott! This is an interesting approach. I didn't think to place a secondary dependency.
I'm curious as to why you labeled the Gobo Rotate Function (Control) as a dependency on the Rotate High instead of the Wheel?
// 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.
vBulletin® v3.8.7, Copyright ©2000-2026, vBulletin Solutions, Inc.