aboutsummaryrefslogtreecommitdiffstats
path: root/gui
diff options
context:
space:
mode:
Diffstat (limited to 'gui')
-rw-r--r--gui/main.cpp13
-rw-r--r--gui/stmdsp.cpp8
-rw-r--r--gui/stmdsp.hpp41
3 files changed, 42 insertions, 20 deletions
diff --git a/gui/main.cpp b/gui/main.cpp
index ae6ecb4..29f74d3 100644
--- a/gui/main.cpp
+++ b/gui/main.cpp
@@ -1,19 +1,6 @@
-#include "stmdsp.hpp"
#include "wxapp.hpp"
-#include <iostream>
#include <wx/app.h>
wxIMPLEMENT_APP(MainApp);
-//int main()
-//{
-// stmdsp::scanner scanner;
-//
-// scanner.scan();
-// for (const auto& device : scanner.devices())
-// std::cout << "Found stmdsp at: " << device.path() << std::endl;
-//
-// return 0;
-//}
-
diff --git a/gui/stmdsp.cpp b/gui/stmdsp.cpp
index 5445264..4812884 100644
--- a/gui/stmdsp.cpp
+++ b/gui/stmdsp.cpp
@@ -6,12 +6,12 @@ namespace stmdsp
{
std::list<std::string>& scanner::scan()
{
- auto serialDevices = serial::list_ports();
- for (auto& device : serialDevices) {
+ auto devices = serial::list_ports();
+ for (auto& device : devices) {
if (device.hardware_id.find(STMDSP_USB_ID) != std::string::npos)
- m_devices.emplace_front(device.port);
+ m_available_devices.emplace_front(device.port);
}
- return m_devices;
+ return m_available_devices;
}
}
diff --git a/gui/stmdsp.hpp b/gui/stmdsp.hpp
index 7695abe..030038d 100644
--- a/gui/stmdsp.hpp
+++ b/gui/stmdsp.hpp
@@ -1,8 +1,9 @@
#ifndef STMDSP_HPP_
#define STMDSP_HPP_
-#include <fstream>
+#include <cstdint>
#include <list>
+#include <serial/serial.h>
#include <string>
namespace stmdsp
@@ -15,11 +16,45 @@ namespace stmdsp
public:
std::list<std::string>& scan();
auto& devices() {
- return m_devices;
+ return m_available_devices;
}
private:
- std::list<std::string> m_devices;
+ std::list<std::string> m_available_devices;
+ };
+
+ using adcsample_t = uint16_t;
+
+ class device
+ {
+ public:
+ device(const std::string& file) :
+ m_serial(file, 115200, serial::Timeout::simpleTimeout(1000)) {}
+
+ ~device() {
+ m_serial.close();
+ }
+
+ bool connected() {
+ return m_serial.isOpen() && (m_serial.write("i"), m_serial.read(6) == "stmdsp");
+ }
+
+ std::vector<adcsample_t> sample(unsigned long int count = 1) {
+ if (connected()) {
+ m_serial.write(std::vector<uint8_t> {'r',
+ static_cast<uint8_t>(count),
+ static_cast<uint8_t>(count >> 8)});
+ std::vector<adcsample_t> data (count);
+ m_serial.read(reinterpret_cast<uint8_t *>(data.data()),
+ data.size() * sizeof(adcsample_t));
+ return data;
+ } else {
+ return {};
+ }
+ }
+
+ private:
+ serial::Serial m_serial;
};
}