private void OnReport(HidReport report) { if (TypeOfPanel == GamingPanelEnum.TPM && report.Data.Length == 5) { Array.Copy(NewSaitekPanelValueTPM, OldSaitekPanelValueTPM, 5); Array.Copy(report.Data, NewSaitekPanelValueTPM, 5); var hashSet = GetHashSetOfChangedKnobs(OldSaitekPanelValueTPM, NewSaitekPanelValueTPM); if (hashSet.Count > 0) { GamingPanelKnobChanged(!FirstReportHasBeenRead, hashSet); AppEventHandler.SwitchesChanged(this, HIDSkeletonBase.HIDInstance, TypeOfPanel, hashSet); } FirstReportHasBeenRead = true; } else if (report.Data.Length == 3) { Array.Copy(NewSaitekPanelValue, OldSaitekPanelValue, 3); Array.Copy(report.Data, NewSaitekPanelValue, 3); var hashSet = GetHashSetOfChangedKnobs(OldSaitekPanelValue, NewSaitekPanelValue); if (hashSet.Count > 0) { GamingPanelKnobChanged(!FirstReportHasBeenRead, hashSet); AppEventHandler.SwitchesChanged(this, HIDSkeletonBase.HIDInstance, TypeOfPanel, hashSet); } FirstReportHasBeenRead = true; } else if (report.Data.Length == 27) { Array.Copy(NewPanelValueFarmingPanel, OldPanelValueFarmingPanel, 27); Array.Copy(report.Data, NewPanelValueFarmingPanel, 27); var hashSet = GetHashSetOfChangedKnobs(OldPanelValueFarmingPanel, NewPanelValueFarmingPanel); if (hashSet.Count > 0) { GamingPanelKnobChanged(!FirstReportHasBeenRead, hashSet); AppEventHandler.SwitchesChanged(this, HIDSkeletonBase.HIDInstance, TypeOfPanel, hashSet); } FirstReportHasBeenRead = true; } StartListeningForHidPanelChanges(); }