drafted device interface

pull/1/head
Clyne 4 years ago
parent 6473b57cef
commit da8d7ffe8a

@ -1,19 +1,6 @@
#include "stmdsp.hpp"
#include "wxapp.hpp" #include "wxapp.hpp"
#include <iostream>
#include <wx/app.h> #include <wx/app.h>
wxIMPLEMENT_APP(MainApp); 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;
//}

@ -6,12 +6,12 @@ namespace stmdsp
{ {
std::list<std::string>& scanner::scan() std::list<std::string>& scanner::scan()
{ {
auto serialDevices = serial::list_ports(); auto devices = serial::list_ports();
for (auto& device : serialDevices) { for (auto& device : devices) {
if (device.hardware_id.find(STMDSP_USB_ID) != std::string::npos) 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;
} }
} }

@ -1,8 +1,9 @@
#ifndef STMDSP_HPP_ #ifndef STMDSP_HPP_
#define STMDSP_HPP_ #define STMDSP_HPP_
#include <fstream> #include <cstdint>
#include <list> #include <list>
#include <serial/serial.h>
#include <string> #include <string>
namespace stmdsp namespace stmdsp
@ -15,11 +16,45 @@ namespace stmdsp
public: public:
std::list<std::string>& scan(); std::list<std::string>& scan();
auto& devices() { auto& devices() {
return m_devices; return m_available_devices;
} }
private: 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;
}; };
} }

Loading…
Cancel
Save