I’m writing a custom driver for a multi zone amp (IP controlled using UDP packets). Most everything works except I can’t find an exact matching volume data format. The amp does not support volume up or down, only volume set. The amp doesn’t seem to support feedback of the volume data, except for replying to the set command with a success code.
This particular amp device uses a 2 digit hex value for the volume that starts with 9c (decimal 156) for volume 0 and goes to FF for volume 99 (It appears to wrap to 00 for volume 100). It should basically function just like data format “200” (Direct Value Hex) except starting from an offset of 9c hex for volume 0.
Is it possible to get this added, or is there already an existing data format that matches this? If not, is there another way to accomplish this without doing a specific command for each discrete volume setting? (I’ve done this method for now, but it is not ideal.)
As a side note, this amp requires a unique 4 digit count value to be sent in each packet (back to back packets need a different value). I found an issue when I was attempting to use $COUNT9$ (for a single digit) in my command string to accomplish this. This seems to work fine from the “remote view” (i.e. It always increments the value of $COUNT9$ between commands issued from the remote). However, if I put multiple commands to this device in the start or stop action for an activity, it doesn’t always seem to increment the value between commands, and therefore some of my commands get ignored by the device. I tried varying the delay between commands, but it seemed to have no effect. Is it supposed to work like this, or is that a bug? Again, I have currently worked around this somewhat by making sure each unique command issue a different 3 digit code and still use the $COUNT9$ for the 4th digit.
As a reference, the data string to set the volume for zone 3 to 50% would be:
0s0005 c4.amp.chvol 03 ce
where the ‘0005’ is the unique count, the ‘03’ is the zone, and ‘ce’ (206 decimal) is the volume value for 50%