Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Denon 3805 Beta Driver
#1
I'm going to start this thread here as the Denon 3805 driver comes with CQC. I have analyzed the behavior of my 3805 with regards to the stock driver and concluded that some changes need to be made to the driver in order for it to behave properly.

As was stated in this message by jrlewis 2+ years ago the 3805 driver goes through the unnecessary step of turning on zones 2 and 3 when the driver initializes to set their states so that they can be known. This is not at all required.

By issuing a Z1? (really zone 3, don't ask) or a Z2? the receiver will respond back with the state of each zone by sending the following: (based on my tuner's current states)

Z1? returns
Z1TUNER (selected input)
Z180 (volume level)
Z1OFF (power state)

Z2? returns
Z2TUNER (selected input)
Z246 (volume level)
Z2OFF (power state)

What is not clear to me is whether the driver can handle multiple responses from one command. On initial inspection it does not appear that it will recurse through the buffer until the end is reached, once it finds a valid response and associated text it exits. Dean, some help here would be most appreciated. Below is the WaitForEvent processing code:

Code:
//  any incoming async events in the process. It returns True if the
    //  event was recieved (and puts the text into ToFill) or False if it
    //  timed out.
    //
    Method WaitForEvent([In]    DenonEvs    EvToGet
                        , [Out] String      ToFill
                        , [In]  Boolean     ThrowIfTimeout
                        , [In]  Card4       WaitFor) Returns Boolean
    Begin
        Locals=
            Card4       EndTime(m_TimeInfo.GetCurMillis() + WaitFor);
            Card4       CurTime;
            Boolean     RetVal(False);
            DenonEvs    EvCur;
        EndLocals;

        While(True)
            // Wait the remaining time for an event.
            CurTime := m_TimeInfo.GetCurMillis();
            If (CurTime >= EndTime)
                If (ThrowIfTimeout)
                    Throw(DenonErrs.TimeOut);
                Else
                    Break;
                EndIf;
            EndIf;
            EvCur := GetEvent(ToFill, ThrowIfTimeout, EndTime - CurTime);

            //
            //  If we got nothing, then we are done since we waited for all
            //  of the available time. We cannot get here unless
            //  ThrowIfTimeout is false, so we never need to throw a
            //  timeout here.
            //
            If (EvCur = DenonEvs.None)
                Break;
            EndIf;

            //
            //  Process the message if we recognize it. This will store the
            //  data in the appropriate fields. Note that he uses our
            //  incoming string as a temp, to be more efficient, so it
            //  can be changed when we get back here.
            //
            If (EvCur != DenonEvs.Unknown)
                ProcessEvent(EvCur, ToFill);
            EndIf;

            //
            //  If it's what we wanted, or they don't care as long as we get
            //  something, then break out with success
            //
            If ((EvCur = EvToGet) || (EvToGet = DenonEvs.Unknown))
                RetVal := True;
                Break;
            EndIf;

            // Give a little more time to make up for processing this one
            EndTime += 10;

        EndWhile;
        Return RetVal;
    EndMethod;

I have verified that the receiver will respond correctly from a cold power off (unplugged it) from hyper terminal (prior to CQC driver being initiated) with the appropriate responses.

What I think needs to happen is:

  1. Eliminate the power the zones on to set their state arbitrarily at driver start
  2. Modify driver to handle 3 responses from one command to get zone states
  3. Modify driver initialization to also grab zone states
  4. Modify receiver state polling sequence by adding zone 2 and zone 3 status requests

Help here would be most appreciated!

Thanks,
-Ben
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  TTS Driver Error kblagron 7 774 03-03-2023, 01:05 AM
Last Post: kblagron
  Driver for Amazon 4k Stick Darrie 3 898 01-15-2022, 02:21 PM
Last Post: znelbok
  CQSL Interface Driver connects but no control NightLight 3 953 10-26-2021, 01:12 PM
Last Post: NightLight
  920 Beta Bug - Lutron Thermostat gReatAutomation 5 1,267 02-12-2021, 06:13 AM
Last Post: gReatAutomation
  ClickPLC driver now failing after upgrade znelbok 2 1,280 09-21-2020, 10:48 PM
Last Post: znelbok
  Pentair driver tom 5 2,437 08-02-2020, 11:29 PM
Last Post: kblagron
  Marantz receiver driver (IP) dlmorgan999 6 2,499 05-15-2020, 03:32 PM
Last Post: dlmorgan999
  I updated to the latest beta version of CQC, and now getting libvlc.dll error? ghurty 2 1,536 04-29-2020, 07:06 AM
Last Post: ghurty
  Variables Driver Client gReatAutomation 4 2,040 04-25-2020, 12:46 PM
Last Post: gReatAutomation
  Reconfig of Driver Causes Built In Triggers to Fire gReatAutomation 2 1,503 03-25-2020, 04:09 PM
Last Post: gReatAutomation

Forum Jump:


Users browsing this thread: 1 Guest(s)