public override void ParseHidReport()

in ScpControl/Bluetooth/Ds3/BthDs3.cs [40:91]


        public override void ParseHidReport(byte[] report)
        {
            if (report[10] == 0xFF) return;

            m_PlugStatus = report[38];
            Battery = (DsBattery) report[39];
            m_CableStatus = report[40];

            if (m_Packet == 0) Rumble(0, 0);
            m_Packet++;

            var inputReport = NewHidReport();
            
            inputReport.PacketCounter = m_Packet;

            // copy controller data to report packet
            Buffer.BlockCopy(report, 9, inputReport.RawBytes, 8, 49);

            var trigger = false;

            // Quick Disconnect
            if (inputReport[Ds3Button.L1].IsPressed
                && inputReport[Ds3Button.R1].IsPressed
                && inputReport[Ds3Button.Ps].IsPressed)
            {
                trigger = true;
                // unset PS button
                inputReport.Unset(Ds3Button.Ps);
            }

            if (inputReport.IsPadActive)
            {
                m_IsIdle = false;
            }
            else if (!m_IsIdle)
            {
                m_IsIdle = true;
                m_Idle = DateTime.Now;
            }

            if (trigger && !m_IsDisconnect)
            {
                m_IsDisconnect = true;
                m_Disconnect = DateTime.Now;
            }
            else if (!trigger && m_IsDisconnect)
            {
                m_IsDisconnect = false;
            }

            OnHidReportReceived(inputReport);
        }