Hi Dave,
If my assumption is correct that MVMAX is supposed to be the max volume allowed, there there's definitely something wrong with the feedback as the AVR 'Limit' is set to OFF and thus should render a fixed value (I'd expect 98 or 980) and even if it was broken and though it was a limit of 80 or 60, etc. it should still return a consistent value - unless MVMAX is for something else...I've already taken Marantz tech support to task about undocumented commands...
BUT! here's my adjustments to the parsing logic that should overcome any of the above. I would think that this would elminiate any inpact from MVMAX, unless S+ is getting confused between MVxx\x0D and MVMAX and parsing 'MAX as a value for the volume feedback...:)
FTR, iMVMAX variable is only found in the following code snip (except for the initial Global integer call and an initialization in Function_Main)
? ? if(find("MVMAX", sResponse) = 1) // master volume max
? ? {
? ? ? ? iMVMAX = atoi(sResponse);
? ? ? ? if(len(sResponse) = 9) // value has 2 char (90 vs 895)?
? ? ? ? ? ? iMVMAX = iMVMAX * 10; // append "0" to value (900)
? ? }
? ? else if(find("MV", sResponse) = 1) // master volume
? ? {
? ? ? ? iValue = atoi(sResponse);
? ? ? ? if(len(sResponse) = 5) // value has 2 char (90 vs 895)
? ? ? ? ? ? iValue = iValue * 10; // append "0" to value (900)
? ? ? ? if(iValue >= 800) // 0 to 18 dB
? ? ? ? ? ? makestring(Main_Volume_Text, "%+d.%ddB", (iValue - 800) / 10, (iValue - 800) mod 10);
? ? ? ? else if(iValue >= 5) // -79.5 to -0.5 dB
? ? ? ? ? ? makestring(Main_Volume_Text, "-%d.%ddB", (800 - iValue) / 10, (800 - iValue) mod 10);
? ? ? ? else // ---
? ? ? ? ? ? makestring(Main_Volume_Text, "---.-dB");
? ? ? ? Main_Volume_Gauge = (iValue * 65535) / 98;
//? ? ? ? Main_Volume_Gauge = (iValue * 65535) / iMVMAX;
? ? }
?