reuse discovered pcap interfaces in DeviceFinder::FindAll()
parent
99879c9021
commit
d2019c24df
|
|
@ -88,6 +88,10 @@ std::vector<std::shared_ptr<Device>> DeviceFinder::FindAll() {
|
||||||
std::vector<std::shared_ptr<Device>> foundDevices;
|
std::vector<std::shared_ptr<Device>> foundDevices;
|
||||||
std::vector<std::vector<std::shared_ptr<Device>>> findResults;
|
std::vector<std::vector<std::shared_ptr<Device>>> findResults;
|
||||||
|
|
||||||
|
#if defined(LIBICSNEO_HAVE_PCAP) && LIBICSNEO_HAVE_PCAP == 1
|
||||||
|
auto pcapDevices = PCAP::FindAll();
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __ETHERBADGE_H_
|
#ifdef __ETHERBADGE_H_
|
||||||
findResults.push_back(EtherBADGE::Find());
|
findResults.push_back(EtherBADGE::Find());
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -105,7 +109,7 @@ std::vector<std::shared_ptr<Device>> DeviceFinder::FindAll() {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __NEOVIFIRE2ETH_H_
|
#ifdef __NEOVIFIRE2ETH_H_
|
||||||
findResults.push_back(NeoVIFIRE2ETH::Find());
|
findResults.push_back(NeoVIFIRE2ETH::Find(pcapDevices));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __NEOVIFIRE2USB_H_
|
#ifdef __NEOVIFIRE2USB_H_
|
||||||
|
|
@ -121,7 +125,7 @@ std::vector<std::shared_ptr<Device>> DeviceFinder::FindAll() {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __RADGALAXY_H_
|
#ifdef __RADGALAXY_H_
|
||||||
findResults.push_back(RADGalaxy::Find());
|
findResults.push_back(RADGalaxy::Find(pcapDevices));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __RADPLUTOUSB_H_
|
#ifdef __RADPLUTOUSB_H_
|
||||||
|
|
@ -129,7 +133,7 @@ std::vector<std::shared_ptr<Device>> DeviceFinder::FindAll() {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __RADSTAR2ETH_H_
|
#ifdef __RADSTAR2ETH_H_
|
||||||
findResults.push_back(RADStar2ETH::Find());
|
findResults.push_back(RADStar2ETH::Find(pcapDevices));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __RADSTAR2USB_H_
|
#ifdef __RADSTAR2USB_H_
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ public:
|
||||||
virtual void handleMessage(const std::shared_ptr<Message>&) {}
|
virtual void handleMessage(const std::shared_ptr<Message>&) {}
|
||||||
|
|
||||||
// Return true to continue transmitting, success should be written to if false is returned
|
// Return true to continue transmitting, success should be written to if false is returned
|
||||||
virtual bool transmitHook(const std::shared_ptr<Message>& message, bool& success) { return true; }
|
virtual bool transmitHook(const std::shared_ptr<Message>& message, bool& success) { (void)message; (void)success; return true; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Device& device;
|
Device& device;
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,10 @@ namespace icsneo {
|
||||||
class NeoVIFIRE2ETH : public NeoVIFIRE2 {
|
class NeoVIFIRE2ETH : public NeoVIFIRE2 {
|
||||||
public:
|
public:
|
||||||
static constexpr const uint16_t PRODUCT_ID = 0x0004;
|
static constexpr const uint16_t PRODUCT_ID = 0x0004;
|
||||||
static std::vector<std::shared_ptr<Device>> Find() {
|
static std::vector<std::shared_ptr<Device>> Find(const std::vector<PCAP::PCAPFoundDevice>& pcapDevices) {
|
||||||
std::vector<std::shared_ptr<Device>> found;
|
std::vector<std::shared_ptr<Device>> found;
|
||||||
|
|
||||||
for(auto& foundDev : PCAP::FindAll()) {
|
for(auto& foundDev : pcapDevices) {
|
||||||
auto fakedev = std::shared_ptr<NeoVIFIRE2ETH>(new NeoVIFIRE2ETH({}));
|
auto fakedev = std::shared_ptr<NeoVIFIRE2ETH>(new NeoVIFIRE2ETH({}));
|
||||||
for (auto& payload : foundDev.discoveryPackets)
|
for (auto& payload : foundDev.discoveryPackets)
|
||||||
fakedev->com->packetizer->input(payload);
|
fakedev->com->packetizer->input(payload);
|
||||||
|
|
@ -34,8 +34,9 @@ public:
|
||||||
if(sn->deviceSerial.substr(0, 2) != SERIAL_START)
|
if(sn->deviceSerial.substr(0, 2) != SERIAL_START)
|
||||||
continue; // Not a FIRE 2
|
continue; // Not a FIRE 2
|
||||||
|
|
||||||
foundDev.device.serial[sn->deviceSerial.copy(foundDev.device.serial, sizeof(foundDev.device.serial))] = '\0';
|
auto device = foundDev.device;
|
||||||
found.push_back(std::make_shared<NeoVIFIRE2ETH>(foundDev.device));
|
device.serial[sn->deviceSerial.copy(device.serial, sizeof(device.serial))] = '\0';
|
||||||
|
found.push_back(std::make_shared<NeoVIFIRE2ETH>(std::move(device)));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,10 +15,10 @@ public:
|
||||||
static constexpr DeviceType::Enum DEVICE_TYPE = DeviceType::RADGalaxy;
|
static constexpr DeviceType::Enum DEVICE_TYPE = DeviceType::RADGalaxy;
|
||||||
static constexpr const uint16_t PRODUCT_ID = 0x0003;
|
static constexpr const uint16_t PRODUCT_ID = 0x0003;
|
||||||
static constexpr const char* SERIAL_START = "RG";
|
static constexpr const char* SERIAL_START = "RG";
|
||||||
static std::vector<std::shared_ptr<Device>> Find() {
|
static std::vector<std::shared_ptr<Device>> Find(const std::vector<PCAP::PCAPFoundDevice>& pcapDevices) {
|
||||||
std::vector<std::shared_ptr<Device>> found;
|
std::vector<std::shared_ptr<Device>> found;
|
||||||
|
|
||||||
for(auto& foundDev : PCAP::FindAll()) {
|
for(auto& foundDev : pcapDevices) {
|
||||||
auto fakedev = std::shared_ptr<RADGalaxy>(new RADGalaxy({}));
|
auto fakedev = std::shared_ptr<RADGalaxy>(new RADGalaxy({}));
|
||||||
for(auto& payload : foundDev.discoveryPackets)
|
for(auto& payload : foundDev.discoveryPackets)
|
||||||
fakedev->com->packetizer->input(payload);
|
fakedev->com->packetizer->input(payload);
|
||||||
|
|
@ -38,8 +38,9 @@ public:
|
||||||
if(sn->deviceSerial.substr(0, 2) != SERIAL_START)
|
if(sn->deviceSerial.substr(0, 2) != SERIAL_START)
|
||||||
continue; // Not a RADGalaxy
|
continue; // Not a RADGalaxy
|
||||||
|
|
||||||
foundDev.device.serial[sn->deviceSerial.copy(foundDev.device.serial, sizeof(foundDev.device.serial))] = '\0';
|
auto device = foundDev.device;
|
||||||
found.emplace_back(new RADGalaxy(foundDev.device));
|
device.serial[sn->deviceSerial.copy(device.serial, sizeof(device.serial))] = '\0';
|
||||||
|
found.emplace_back(new RADGalaxy(std::move(device)));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@
|
||||||
|
|
||||||
#include "icsneo/device/device.h"
|
#include "icsneo/device/device.h"
|
||||||
#include "icsneo/device/devicetype.h"
|
#include "icsneo/device/devicetype.h"
|
||||||
#include "icsneo/platform/pcap.h"
|
|
||||||
#include "icsneo/communication/packetizer.h"
|
#include "icsneo/communication/packetizer.h"
|
||||||
#include "icsneo/communication/decoder.h"
|
#include "icsneo/communication/decoder.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,10 @@ namespace icsneo {
|
||||||
class RADStar2ETH : public RADStar2 {
|
class RADStar2ETH : public RADStar2 {
|
||||||
public:
|
public:
|
||||||
// Serial numbers start with RS
|
// Serial numbers start with RS
|
||||||
static std::vector<std::shared_ptr<Device>> Find() {
|
static std::vector<std::shared_ptr<Device>> Find(const std::vector<PCAP::PCAPFoundDevice>& pcapDevices) {
|
||||||
std::vector<std::shared_ptr<Device>> found;
|
std::vector<std::shared_ptr<Device>> found;
|
||||||
|
|
||||||
for(auto& foundDev : PCAP::FindAll()) {
|
for(auto& foundDev : pcapDevices) {
|
||||||
auto fakedev = std::shared_ptr<RADStar2ETH>(new RADStar2ETH({}));
|
auto fakedev = std::shared_ptr<RADStar2ETH>(new RADStar2ETH({}));
|
||||||
for(auto& payload : foundDev.discoveryPackets)
|
for(auto& payload : foundDev.discoveryPackets)
|
||||||
fakedev->com->packetizer->input(payload);
|
fakedev->com->packetizer->input(payload);
|
||||||
|
|
@ -34,7 +34,8 @@ public:
|
||||||
if(sn->deviceSerial.substr(0, 2) != SERIAL_START)
|
if(sn->deviceSerial.substr(0, 2) != SERIAL_START)
|
||||||
continue; // Not a RADStar2
|
continue; // Not a RADStar2
|
||||||
|
|
||||||
foundDev.device.serial[sn->deviceSerial.copy(foundDev.device.serial, sizeof(foundDev.device.serial))] = '\0';
|
auto device = foundDev.device;
|
||||||
|
device.serial[sn->deviceSerial.copy(device.serial, sizeof(device.serial))] = '\0';
|
||||||
found.push_back(std::make_shared<RADStar2ETH>(foundDev.device));
|
found.push_back(std::make_shared<RADStar2ETH>(foundDev.device));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,4 +9,6 @@
|
||||||
#warning "This platform is not supported by the PCAP driver"
|
#warning "This platform is not supported by the PCAP driver"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define LIBICSNEO_HAVE_PCAP 1
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
Loading…
Reference in New Issue