radio_tool 0.2.1
Loading...
Searching...
No Matches
radio_factory.cpp
1
18#include <radio_tool/radio/radio_factory.hpp>
19#include <radio_tool/radio/usb_radio_factory.hpp>
20#include <radio_tool/radio/serial_radio_factory.hpp>
21
22#include <functional>
23
24using namespace radio_tool::radio;
25
26auto RadioFactory::OpenDevice(const uint16_t &index) const -> RadioOperations *
27{
28 auto devices = ListDevices();
29
30 auto info = devices.at(index);
31 if (info == nullptr)
32 {
33 throw std::runtime_error("Invalid device index");
34 }
35
36 return info->OpenDevice();
37}
38
39auto RadioFactory::ListDevices() const -> const std::vector<RadioInfo *>
40{
41 uint16_t idx_offset = 0;
42 auto ret = std::vector<RadioInfo *>();
43
44 auto usb = USBRadioFactory();
45 auto usbDevices = usb.ListDevices(idx_offset);
46 ret.insert(ret.end(), usbDevices.begin(), usbDevices.end());
47 idx_offset += (uint16_t)usbDevices.size();
48
49 auto serial = SerialRadioFactory();
50 auto serialDevices = serial.ListDevices(idx_offset);
51 ret.insert(ret.end(), serialDevices.begin(), serialDevices.end());
52
53 return ret;
54}