private ConfigurationReadResult ReadBinaryConfiguration([NotNull] Func <BackgroundWorker, byte[]> configurationProvider, bool useWorker = true) { if (configurationProvider == null) { throw new ArgumentNullException("configurationProvider"); } try { var data = configurationProvider(useWorker ? m_worker : null); if (data == null) { return(new ConfigurationReadResult(null, ReadResult.UnableToRead)); } var info = BinaryStructure.ReadBinary <ArcticFoxConfiguration.DeviceInfo>(data); if (info.SettingsVersion < SupportedSettingsVersion || info.FirmwareBuild < MinimumSupportedBuildNumber) { return(new ConfigurationReadResult(null, ReadResult.OutdatedFirmware)); } if (info.SettingsVersion > SupportedSettingsVersion) { return(new ConfigurationReadResult(null, ReadResult.OutdatedToolbox)); } var configuration = BinaryStructure.ReadBinary <ArcticFoxConfiguration>(data); return(new ConfigurationReadResult(configuration, ReadResult.Success)); } catch (TimeoutException) { return(new ConfigurationReadResult(null, ReadResult.UnableToRead)); } }
private byte[] PrepairConfiguration(byte[] source, ArcticFoxConfiguration existedConfiguration = null) { var result = BinaryStructure.ReadBinary<ArcticFoxConfiguration>(m_encryption.Decode(source)); if (existedConfiguration == null) { SetSharedDeviceInfo(result.Info); } else { result.Info = existedConfiguration.Info; } return BinaryStructure.WriteBinary(result); }
private void MonitoringProc() { while (true) { if (m_stopRequested) { return; } if (!m_isChartPaused) { byte[] bytes; try { bytes = HidConnector.Instance.ReadMonitoringData(); } catch (Exception) { break; } var data = BinaryStructure.ReadBinary <MonitoringData>(bytes); var kvp = CreateMonitoringDataCollection(data); UpdateUI(() => { try { m_isChartUpdating = true; UpdateSeries(kvp); } finally { m_isChartUpdating = false; } }); } Thread.Sleep(RequestDataIntervalInMs); } if (EnsureConnection()) { MonitoringProc(); } }
private void OpenConfigurationFile(ArcticFoxConfiguration existedConfiguration) { string fileName; using (var op = new OpenFileDialog { Filter = FileFilters.ArcticFoxConfigFilter }) { if (op.ShowDialog() != DialogResult.OK) { return; } fileName = op.FileName; } try { var existedInfoBlock = existedConfiguration != null?existedConfiguration.Info.Copy() : null; var result = existedConfiguration ?? BinaryStructure.ReadBinary <ArcticFoxConfiguration>(m_encryption.Decode(Resources.new_configuration)); var serializableConfiguration = Serializer.Read <SerializableConfiguration>(new MemoryStream(m_encryption.Decode(File.ReadAllBytes(fileName)))); if (serializableConfiguration == null) { InfoBox.Show("Most likely you are trying to open an obsolete configuration file. This operation is not supported."); return; } BinaryStructure.ReadFromDictionary(result, serializableConfiguration.GetDictionary()); if (existedInfoBlock != null) { result.Info = existedInfoBlock; } else { SetSharedDeviceInfo(result.Info); } OpenWorkspace(result); } catch (Exception ex) { Trace.Info(ex, "An error occurred during reading saved configuration file."); InfoBox.Show("Most likely you are trying to open an obsolete configuration file. This operation is not supported."); } }