public bool ReadConfig() { configBytes.Clear(); HidStream hidStream; if (Device.TryOpen(out hidStream)) { using (hidStream) { try { int attempts = 0; while (attempts < maxConfig) { byte[] config = new byte[64]; config[0] = 0xc0; hidStream.GetFeature(config); if (config[0] != 0xc0) { //StatusWrite("Mismatch in config report ID"); } else { if (!configBytes.ContainsKey(config[1])) { configBytes.Add(config[1], config); switch (config[1]) { case 0: StdConfig = new StandardConfiguration(config); break; case 1: RgbConfig = new RgbConfiguration(config); break; case 2: KeyConfig = new KeyMappingConfiguration(config); break; case 3: DeviceConfig = new DeviceConfiguration(config); break; } } attempts++; } } if (configBytes.Count == 0) { //StatusWrite("Failed to get any config reports."); } else { //StatusWrite($"Found {configBytes.Count} config reports."); } } catch (Exception ex) { //StatusWrite("Failed to get config. Please disconnect and reconnect the board."); return(false); } } } else { //StatusWrite("Failed to open device. Please disconnect and reconnect."); return(false); } return(true); }
public bool ReadConfig() { configBytes.Clear(); HidStream hidStream; if (Device.TryOpen(out hidStream)) { using (hidStream) { try { int attempts = 0; while (attempts < maxConfig) { byte[] config = new byte[64]; config[0] = 0xc0; hidStream.GetFeature(config); if (config[0] != 0xc0) { //StatusWrite("Mismatch in config report ID"); attempts++; } else { if (!configBytes.ContainsKey(config[1])) { configBytes.Add(config[1], config); switch (config[1]) { case 0: StdConfig = new StandardConfiguration(config); break; case 1: RgbConfig = new RgbConfiguration(config); break; case 2: KeyConfig = new KeyMappingConfiguration(config); break; case 3: DeviceConfig = new DeviceConfiguration(config); break; } } attempts++; } } NumConfigPages = configBytes.Count; } catch (Exception ex) { return(false); } } } else { return(false); } return(true); }