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 <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;
//}

@ -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;
}
}

@ -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;
};
}

Loading…
Cancel
Save