private bool ProcessHistoryDataBlock(IEnumerable<byte> dataBytes) { var endOfStreamFound = false; var data = dataBytes.ToArray(); for (var b = 0; b < DataReadLength; b += HistoryDataBlockLength) { var dataBlock = data.Skip(b).Take(HistoryDataBlockLength).ToArray(); // If we find an "empty" data row, we are done. if (dataBlock.All(e => e == 0xFF)) { endOfStreamFound = true; break; } var report = new Report(HistoryDataBlockLength); report.AddRawData(dataBlock); var historyData = report.GetObject<HistoryData>(); _history.Add(historyData); OnHistoryData(this, historyData); } return !endOfStreamFound; }
private void DownloadSettings() { var report = new Report(SettingsEndAddress - SettingsStartAddress); // Download settings from 0000h-0100h for (var a = SettingsStartAddress; a <= SettingsEndAddress; a += DataReadLength) { DownloadBlock(a, d => { report.AddRawData(d); return true; }); } // Create data object from report Settings = report.GetObject<Settings>(); OnSettingsLoaded(this, Settings); }