]> code.bitgloo.com Git - clyne/stmdsp.git/commitdiff
gui access to dac logging
authorClyne Sullivan <clyne@bitgloo.com>
Sun, 1 Nov 2020 01:33:38 +0000 (21:33 -0400)
committerClyne Sullivan <clyne@bitgloo.com>
Sun, 1 Nov 2020 01:33:38 +0000 (21:33 -0400)
gui/wxmain.cpp
gui/wxmain.hpp
source/dac.cpp

index e92bb0037a2a06aa65ac1463fb8c63e6d6966395..8089911e7b9c87cbc6d192e6ed9f00ae99f71f20 100644 (file)
@@ -26,6 +26,7 @@ enum Id {
     MRunConnect,
     MRunStart,
     MRunMeasure,
+    MRunLogResults,
     MRunUpload,
     MRunUnload,
     MRunEditBSize,
@@ -100,6 +101,8 @@ MainFrame::MainFrame() : wxFrame(nullptr, wxID_ANY, "stmdspgui", wxPoint(50, 50)
     Bind(wxEVT_MENU, &MainFrame::onRunStart, this, Id::MRunStart, wxID_ANY,
          menuRun->Append(MRunStart, "&Start"));
     m_run_measure = menuRun->AppendCheckItem(MRunMeasure, "&Measure code time");
+    Bind(wxEVT_MENU, &MainFrame::onRunLogResults, this, Id::MRunLogResults, wxID_ANY,
+         menuRun->AppendCheckItem(MRunLogResults, "&Log results..."));
     menuRun->AppendSeparator();
     Bind(wxEVT_MENU, &MainFrame::onRunUpload, this, Id::MRunUpload, wxID_ANY,
          menuRun->Append(MRunUpload, "&Upload code"));
@@ -144,23 +147,13 @@ void MainFrame::onCloseEvent(wxCloseEvent& event)
 void MainFrame::onMeasureTimer([[maybe_unused]] wxTimerEvent&)
 {
     if (m_conv_result_log != nullptr) {
-        static unsigned int counter = 0;
         if (auto samples = m_device->continuous_read(); samples.size() > 0) {
             for (auto& s : samples) {
                 auto str = wxString::Format("%u\n", s);
                 m_conv_result_log->Write(str.ToAscii(), str.Len());
             }
-
-            counter++;
         }
-
-        //if (counter == 20) {
-        //    m_conv_result_log->Close();
-        //    delete m_conv_result_log;
-        //    m_conv_result_log = nullptr;
-        //    counter = 0;
-        //}
-    } else if (m_status_bar && m_device) {
+    } else if (m_status_bar && m_run_measure && m_run_measure->IsChecked()) {
         m_status_bar->SetStatusText(wxString::Format(wxT("Execution time: %u cycles"),
                                                      m_device->continuous_start_get_measurement()));
     }
@@ -409,12 +402,6 @@ void MainFrame::onRunStart(wxCommandEvent& ce)
 
     if (!m_is_running) {
         if (m_device != nullptr && m_device->connected()) {
-            if (m_conv_result_log != nullptr) {
-                m_conv_result_log->Close();
-                delete m_conv_result_log;
-            }
-            m_conv_result_log = new wxFileOutputStream("results.csv");
-
             if (m_run_measure && m_run_measure->IsChecked()) {
                 m_device->continuous_start_measure();
                 m_measure_timer->StartOnce(1000);
@@ -431,11 +418,6 @@ void MainFrame::onRunStart(wxCommandEvent& ce)
             m_status_bar->SetStatusText("Please connect.");
         }
     } else {
-        if (m_conv_result_log != nullptr) {
-            m_conv_result_log->Close();
-            delete m_conv_result_log;
-            m_conv_result_log = nullptr;
-        }
         m_device->continuous_stop();
 
         menuItem->SetItemLabel("&Start");
@@ -444,6 +426,31 @@ void MainFrame::onRunStart(wxCommandEvent& ce)
     }
 }
 
+void MainFrame::onRunLogResults(wxCommandEvent& ce)
+{
+    auto menuItem = dynamic_cast<wxMenuItem *>(ce.GetEventUserData());
+    if (menuItem->IsChecked()) {
+        wxFileDialog dialog (this, "Choose log file", "", "", "*.csv",
+                            wxFD_SAVE | wxFD_OVERWRITE_PROMPT);
+
+        if (dialog.ShowModal() != wxID_CANCEL) {
+            if (m_conv_result_log != nullptr) {
+                m_conv_result_log->Close();
+                delete m_conv_result_log;
+                m_conv_result_log = nullptr;
+            }
+
+            m_conv_result_log = new wxFileOutputStream(dialog.GetPath());
+        }
+
+        m_status_bar->SetStatusText("Ready.");
+    } else if (m_conv_result_log != nullptr) {
+        m_conv_result_log->Close();
+        delete m_conv_result_log;
+        m_conv_result_log = nullptr;
+    }
+}
+
 void MainFrame::onRunEditBSize([[maybe_unused]] wxCommandEvent&)
 {
     if (m_device != nullptr && m_device->connected()) {
index 01dfc4b9d65f239dc95d08f57eaef68f0d8b9c14..d4d24deaaad6fd6c490c20b6c6c5204b2c5c3079 100644 (file)
@@ -34,6 +34,7 @@ public:
 
     void onRunConnect(wxCommandEvent&);
     void onRunStart(wxCommandEvent&);
+    void onRunLogResults(wxCommandEvent&);
     void onRunUpload(wxCommandEvent&);
     void onRunUnload(wxCommandEvent&);
     void onRunEditBSize(wxCommandEvent&);
index eada21b7f7e8306b67f52ca9f8631f5f8d2c9871..1a7254a94748fe9e1f6614dab4395ead40a5b6d5 100644 (file)
@@ -30,7 +30,7 @@ constexpr static const DACConversionGroup dac_group_config = {
 };
 
 constexpr static const GPTConfig gpt_config = {
-  .frequency = 1440000,
+  .frequency = 14400000,
   .callback = nullptr,
   .cr2 = TIM_CR2_MMS_1, /* TRGO */
   .dier = 0