private void download_Click(object sender, RoutedEventArgs e) { logDlHandler = new LogDownloadHandler(); logDlHandler.receivedProgressUpdate = new Fn_Uint_Uint((uint nEntriesLeft, uint totalEntries) => { if (nEntriesLeft == 0) { System.Diagnostics.Debug.WriteLine("Log Download Completed!"); } }); logDlHandler.receivedUnknownEntry = new Fn_Ubyte_Long_ByteArray((byte id, long epoch, IntPtr value, byte length) => { System.Diagnostics.Debug.WriteLine("Received unknown log data: id= " + id); }); mbl_mw_logging_download(board, 0, ref logDlHandler); }
public static async Task <bool> download_log(IntPtr accLogger, IntPtr gyroLogger, ProgressBar downloadProgressBar, IntPtr cppBoard, TextBox textBox, DeviceSetup.SamplingFrequency samplingFrequency) { if (Interlocked.Read(ref finished_download) != 0) { return(false); } textBox.Text = "Downloading log!!"; numOfficialEntries = 0; numEntries = 0; Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); var handler = new LogDownloadHandler(); int id_acc_logger = -1; int id_gyro_logger = -1; if (accLogger.ToInt64() != 0) { id_acc_logger = mbl_mw_logger_get_id(accLogger); } if (gyroLogger.ToInt64() != 0) { id_gyro_logger = mbl_mw_logger_get_id(gyroLogger); } handler.receivedProgressUpdate = handler_progress_update; handler.receivedUnknownEntry = handler_receive_unknown_entry; Debug.Assert(Interlocked.Read(ref finished_download) == 0); Interlocked.Add(ref finished_download, 1); Debug.Assert(Interlocked.Read(ref finished_download) == 1); mbl_mw_logging_download(cppBoard, NUM_NOTIFIES_PROGRESS_BAR, ref handler); // wait for download to complete... DownloadHelpers.percentage_downloaded = 0; downloadProgressBar.Value = percentage_downloaded; Debug.WriteLine(" FINISHED DOWNLAOD: " + Interlocked.Read(ref finished_download)); while (Interlocked.Read(ref finished_download) == 1) { Debug.WriteLine(" FINISHED DOWNLAOD: " + Interlocked.Read(ref finished_download)); Debug.Assert(Interlocked.Read(ref finished_download) <= 1); await Task.Delay(100); downloadProgressBar.Value = percentage_downloaded; } Debug.Assert(Interlocked.Read(ref finished_download) == 0); stopwatch.Stop(); textBox.Text = "download took: " + stopwatch.ElapsedMilliseconds + " ms. Got " + numEntries + " unknown, " + numOfficialEntries + " official. Have logent:" + DeviceSetup.registered_acc_log_entries + " / " + DeviceSetup.registered_gyro_log_entries; string n = string.Format("logged-on-device-data-{0:yyyy-MM-dd_hh-mm-ss-tt}.csv", DateTime.Now); string filename = "log-" + n + ".csv"; //System.Diagnostics.Debug.WriteLine("write to file: " + filename); await DeviceSetup.log.dumpLogToFile(filename, true, false, (int)samplingFrequency); return(true); }