Compare commits

..

No commits in common. "8e3b12cdd0b04693ac5ac4156e6d9aff62623106" and "ca10478752b082bad4e71ef14fb190d22699182b" have entirely different histories.

44 changed files with 168 additions and 234 deletions

View File

@ -142,13 +142,13 @@ ICSNEO_API icsneo_error_t icsneo_device_describe(icsneo_device_t* device, const
return icsneo_error_success; return icsneo_error_success;
} }
ICSNEO_API icsneo_error_t icsneo_device_type(icsneo_device_t* device, icsneo_devicetype_t* value) { ICSNEO_API icsneo_error_t icsneo_device_type(icsneo_device_t* device, uint64_t* value) {
if (!device || !device->device) { if (!device || !device->device) {
return icsneo_error_invalid_parameters; return icsneo_error_invalid_parameters;
} }
auto dev = device->device; auto dev = device->device;
// TODO: We should expose these types // TODO: We should expose these types
*value = dev->getType().getDeviceType(); *value = static_cast<uint64_t>(dev->getType());
return icsneo_error_success; return icsneo_error_success;
} }

View File

@ -313,7 +313,7 @@ bool icsneo_getProductNameForType(icsneo_devicetype_t type, char* str, size_t* m
return false; return false;
} }
std::string output = DeviceType(type).getProductName(); std::string output = DeviceType(type).getGenericProductName();
if(str == nullptr) { if(str == nullptr) {
*maxLength = output.length(); *maxLength = output.length();

View File

@ -2,9 +2,6 @@
#include "icsneo/device/device.h" #include "icsneo/device/device.h"
#include "icsneo/communication/message/flexray/flexraymessage.h" #include "icsneo/communication/message/flexray/flexraymessage.h"
#include <chrono>
#include <memory>
using namespace icsneo; using namespace icsneo;
FlexRay::Extension::Extension(Device& device, const std::vector<Network>& controllerNetworks) : DeviceExtension(device) { FlexRay::Extension::Extension(Device& device, const std::vector<Network>& controllerNetworks) : DeviceExtension(device) {

View File

@ -15,7 +15,7 @@ int main() {
std::cout<< "Supported devices:" << std::endl; std::cout<< "Supported devices:" << std::endl;
for(auto& dev : icsneo::GetSupportedDevices()) for(auto& dev : icsneo::GetSupportedDevices())
std::cout << '\t' << dev.getProductName() << std::endl; std::cout << '\t' << dev.getGenericProductName() << std::endl;
std::cout << "\nFinding devices... " << std::flush; std::cout << "\nFinding devices... " << std::flush;
auto devices = icsneo::FindAllDevices(); // This is type std::vector<std::shared_ptr<icsneo::Device>> auto devices = icsneo::FindAllDevices(); // This is type std::vector<std::shared_ptr<icsneo::Device>>

View File

@ -91,7 +91,7 @@ public:
std::string getSerial() const { return data.serial; } std::string getSerial() const { return data.serial; }
uint32_t getSerialNumber() const { return Device::SerialStringToNum(getSerial()); } uint32_t getSerialNumber() const { return Device::SerialStringToNum(getSerial()); }
const neodevice_t& getNeoDevice() const { return data; } const neodevice_t& getNeoDevice() const { return data; }
virtual std::string getProductName() const { return getType().getProductName(); } virtual std::string getProductName() const { return getType().getGenericProductName(); }
std::string describe() const; std::string describe() const;
friend std::ostream& operator<<(std::ostream& os, const Device& device) { friend std::ostream& operator<<(std::ostream& os, const Device& device) {
os << device.describe(); os << device.describe();

View File

@ -5,8 +5,8 @@
#define ICSNEO_DEVICETYPE_LONGEST_NAME (35 + 1) // Add 1 so that if someone forgets, they still have space for null terminator #define ICSNEO_DEVICETYPE_LONGEST_NAME (35 + 1) // Add 1 so that if someone forgets, they still have space for null terminator
#define ICSNEO_DEVICETYPE_LONGEST_DESCRIPTION (ICSNEO_DEVICETYPE_LONGEST_NAME + 7) // 6 character serial, plus space #define ICSNEO_DEVICETYPE_LONGEST_DESCRIPTION (ICSNEO_DEVICETYPE_LONGEST_NAME + 7) // 6 character serial, plus space
#include <ostream>
#include <cstdint> #include <cstdint>
#include <string>
#include <icsneo/icsneotypes.h> #include <icsneo/icsneotypes.h>
@ -21,129 +21,131 @@ public:
* as the product name may change based on device-specific factors, such as serial * as the product name may change based on device-specific factors, such as serial
* number. * number.
*/ */
template<typename T> static const char* GetGenericProductName(_icsneo_devicetype_t t) {
static std::string getGenericProductName(T deviceType) {
// Adding something? Make sure you update DEVICE_TYPE_LONGEST_NAME at the top! // Adding something? Make sure you update DEVICE_TYPE_LONGEST_NAME at the top!
switch(static_cast<icsneo_devicetype_t>(deviceType)) { switch(t) {
case icsneo_devicetype_unknown: case Unknown:
return "Unknown"; return "Unknown";
case icsneo_devicetype_blue: case BLUE:
return "neoVI BLUE"; return "neoVI BLUE";
case icsneo_devicetype_ecu_avb: case ECU_AVB:
return "neoECU AVB/TSN"; return "neoECU AVB/TSN";
case icsneo_devicetype_rad_supermoon: case RADSupermoon:
return "RAD-Supermoon"; return "RAD-Supermoon";
case icsneo_devicetype_dw_vcan: case DW_VCAN:
return "DW_VCAN"; return "DW_VCAN";
case icsneo_devicetype_rad_moon2: case RADMoon2:
return "RAD-Moon 2"; return "RAD-Moon 2";
case icsneo_devicetype_rad_mars: case RADMars:
return "RAD-Mars"; return "RAD-Mars";
case icsneo_devicetype_vcan41: case VCAN4_1:
return "ValueCAN 4-1"; return "ValueCAN 4-1";
case icsneo_devicetype_fire: case FIRE:
return "neoVI FIRE"; return "neoVI FIRE";
case icsneo_devicetype_rad_pluto: case RADPluto:
return "RAD-Pluto"; return "RAD-Pluto";
case icsneo_devicetype_vcan42_el: case VCAN4_2EL:
return "ValueCAN 4-2EL"; return "ValueCAN 4-2EL";
case icsneo_devicetype_radio_canhub: case RADIO_CANHUB:
return "RAD-IO2 CANHub"; return "RAD-IO2 CANHub";
case icsneo_devicetype_neo_ecu12: case NEOECU12:
return "neoECU 12"; return "neoECU 12";
case icsneo_devicetype_obd2_lc_badge: case OBD2_LCBADGE:
return "neoOBD2 LC BADGE"; return "neoOBD2 LC BADGE";
case icsneo_devicetype_rad_moon_duo: case RADMoonDuo:
return "RAD-Moon Duo"; return "RAD-Moon Duo";
case icsneo_devicetype_fire3: case FIRE3:
return "neoVI FIRE 3"; return "neoVI FIRE 3";
case icsneo_devicetype_vcan3: case VCAN3:
return "ValueCAN 3"; return "ValueCAN 3";
case icsneo_devicetype_rad_jupiter: case RADJupiter:
return "RAD-Jupiter"; return "RAD-Jupiter";
case icsneo_devicetype_vcan4_industrial: case VCAN4_IND:
return "ValueCAN 4 Industrial"; return "ValueCAN 4 Industrial";
case icsneo_devicetype_rad_gigastar: case RADGigastar:
return "RAD-Gigastar"; return "RAD-Gigastar";
case icsneo_devicetype_red2: case RED2:
return "neoVI RED 2"; return "neoVI RED 2";
case icsneo_devicetype_etherbadge: case EtherBADGE:
return "EtherBADGE"; return "EtherBADGE";
case icsneo_devicetype_rad_a2b: case RAD_A2B:
return "RAD-A2B"; return "RAD-A2B";
case icsneo_devicetype_rad_epsilon: case RADEpsilon:
return "RAD-Epsilon"; return "RAD-Epsilon";
case icsneo_devicetype_rad_moon3: case RADMoon3:
return "RAD-Moon 3"; return "RAD-Moon 3";
case icsneo_devicetype_rad_comet: case RADComet:
return "RAD-Comet"; return "RAD-Comet";
case icsneo_devicetype_red: case RED:
return "neoVI RED"; return "neoVI RED";
case icsneo_devicetype_ecu: case ECU:
return "neoECU"; return "neoECU";
case icsneo_devicetype_ievb: case IEVB:
return "IEVB"; return "IEVB";
case icsneo_devicetype_pendant: case Pendant:
return "Pendant"; return "Pendant";
case icsneo_devicetype_obd2_pro: case OBD2_PRO:
return "neoOBD2 PRO"; return "neoOBD2 PRO";
case icsneo_devicetype_ecuchip_uart: case ECUChip_UART:
return "neoECU Chip UART"; return "neoECU Chip UART";
case icsneo_devicetype_plasma: case PLASMA:
return "neoVI PLASMA"; return "neoVI PLASMA";
case icsneo_devicetype_neo_analog: case NEOAnalog:
return "NEOAnalog"; return "NEOAnalog";
case icsneo_devicetype_ct_obd: case CT_OBD:
return "CT_OBD"; return "CT_OBD";
case icsneo_devicetype_ion: case ION:
return "neoVI ION"; return "neoVI ION";
case icsneo_devicetype_rad_star: case RADStar:
return "RAD-Star"; return "RAD-Star";
case icsneo_devicetype_vcan44: case VCAN4_4:
return "ValueCAN 4-4"; return "ValueCAN 4-4";
case icsneo_devicetype_vcan42: case VCAN4_2:
return "ValueCAN 4-2"; return "ValueCAN 4-2";
case icsneo_devicetype_cm_probe: case CMProbe:
return "CMProbe"; return "CMProbe";
case icsneo_devicetype_eevb: case EEVB:
return "Intrepid Ethernet Evaluation Board"; return "Intrepid Ethernet Evaluation Board";
case icsneo_devicetype_vcan_rf: case VCANrf:
return "ValueCAN.rf"; return "ValueCAN.rf";
case icsneo_devicetype_fire2: case FIRE2:
return "neoVI FIRE 2"; return "neoVI FIRE 2";
case icsneo_devicetype_flex: case Flex:
return "neoVI Flex"; return "neoVI Flex";
case icsneo_devicetype_rad_galaxy: case RADGalaxy:
return "RAD-Galaxy"; return "RAD-Galaxy";
case icsneo_devicetype_rad_star2: case RADStar2:
return "RAD-Star 2"; return "RAD-Star 2";
case icsneo_devicetype_vividcan: case VividCAN:
return "VividCAN"; return "VividCAN";
case icsneo_devicetype_obd2_sim: case OBD2_SIM:
return "neoOBD2 SIM"; return "neoOBD2 SIM";
case icsneo_devicetype_fire3_flexray: case FIRE3_FlexRay:
return "neoVI FIRE3 FlexRay"; return "neoVI FIRE3 FlexRay";
case icsneo_devicetype_rad_comet3: case RADComet3:
return "RAD-Comet 3"; return "RAD-Comet 3";
case icsneo_devicetype_rad_moon_t1s: case RADMoonT1S:
return "RAD-Moon T1S"; return "RAD-Moon T1S";
case icsneo_devicetype_connect: case Connect:
return "neoVI Connect"; return "neoVI Connect";
case icsneo_devicetype_rad_gigastar2: case RADGigastar2:
return "RAD-Gigastar 2"; return "RAD-Gigastar 2";
// Intentionally don't use default so that the compiler throws a warning when something is added case DONT_REUSE0:
case DONT_REUSE1:
case DONT_REUSE2:
case DONT_REUSE3:
// Intentionally don't use default so that the compiler throws a warning when something is added
return "Unknown neoVI";
} }
return "Unknown neoVI"; return "Unknown neoVI";
} }
DeviceType(icsneo_devicetype_t device_type) { deviceType = device_type; } DeviceType() { value = _icsneo_devicetype_t::Unknown; }
icsneo_devicetype_t getDeviceType() const { return deviceType; } DeviceType(icsneo_devicetype_t device_type) { value = device_type; }
icsneo_devicetype_t getDeviceType() const { return value; }
// Returns the generic name of the device - This doesn't include the serial. std::string getGenericProductName() const { return GetGenericProductName(getDeviceType()); }
std::string getProductName() const { return DeviceType::getGenericProductName(getDeviceType()); } operator icsneo_devicetype_t() const { return getDeviceType(); }
private: private:
icsneo_devicetype_t deviceType; icsneo_devicetype_t value;
}; };
}; // namespace icsneo

View File

@ -15,7 +15,7 @@ class EtherBADGE : public Device {
public: public:
// Serial numbers start with EB // Serial numbers start with EB
// USB PID is 0x1107, standard driver is CDCACM // USB PID is 0x1107, standard driver is CDCACM
ICSNEO_FINDABLE_DEVICE(EtherBADGE, _icsneo_devicetype_t::icsneo_devicetype_etherbadge, "EB"); ICSNEO_FINDABLE_DEVICE(EtherBADGE, _icsneo_devicetype_t::EtherBADGE, "EB");
static const std::vector<Network>& GetSupportedNetworks() { static const std::vector<Network>& GetSupportedNetworks() {
static std::vector<Network> supportedNetworks = { static std::vector<Network> supportedNetworks = {

View File

@ -12,7 +12,7 @@ class NeoOBD2PRO : public Device {
public: public:
// Serial numbers start with NP // Serial numbers start with NP
// USB PID is 0x1103, standard driver is CDCACM // USB PID is 0x1103, standard driver is CDCACM
ICSNEO_FINDABLE_DEVICE(NeoOBD2PRO, _icsneo_devicetype_t::icsneo_devicetype_obd2_pro, "NP"); ICSNEO_FINDABLE_DEVICE(NeoOBD2PRO, _icsneo_devicetype_t::OBD2_PRO, "NP");
static const std::vector<Network>& GetSupportedNetworks() { static const std::vector<Network>& GetSupportedNetworks() {
static std::vector<Network> supportedNetworks = { static std::vector<Network> supportedNetworks = {

View File

@ -12,7 +12,7 @@ class NeoOBD2SIM : public Device {
public: public:
// Serial numbers start with OS // Serial numbers start with OS
// USB PID is 0x1100, standard driver is CDCACM // USB PID is 0x1100, standard driver is CDCACM
ICSNEO_FINDABLE_DEVICE(NeoOBD2SIM, _icsneo_devicetype_t::icsneo_devicetype_obd2_sim, "OS"); ICSNEO_FINDABLE_DEVICE(NeoOBD2SIM, _icsneo_devicetype_t::OBD2_SIM, "OS");
static const std::vector<Network>& GetSupportedNetworks() { static const std::vector<Network>& GetSupportedNetworks() {
static std::vector<Network> supportedNetworks = { static std::vector<Network> supportedNetworks = {

View File

@ -13,7 +13,7 @@ class NeoVIConnect : public Device {
public: public:
// Serial numbers start with DM // Serial numbers start with DM
// Ethernet MAC allocation is 0x1F, standard driver is Raw // Ethernet MAC allocation is 0x1F, standard driver is Raw
ICSNEO_FINDABLE_DEVICE(NeoVIConnect, _icsneo_devicetype_t::icsneo_devicetype_connect, "DM"); ICSNEO_FINDABLE_DEVICE(NeoVIConnect, _icsneo_devicetype_t::Connect, "DM");
static const std::vector<Network>& GetSupportedNetworks() { static const std::vector<Network>& GetSupportedNetworks() {
static std::vector<Network> supportedNetworks = { static std::vector<Network> supportedNetworks = {

View File

@ -12,7 +12,7 @@ namespace icsneo {
class NeoVIFIRE : public Device { class NeoVIFIRE : public Device {
public: public:
// USB PID is 0x0701, standard driver is FTDI // USB PID is 0x0701, standard driver is FTDI
ICSNEO_FINDABLE_DEVICE_BY_PID(NeoVIFIRE, _icsneo_devicetype_t::icsneo_devicetype_fire, 0x0701); ICSNEO_FINDABLE_DEVICE_BY_PID(NeoVIFIRE, _icsneo_devicetype_t::FIRE, 0x0701);
static const std::vector<Network>& GetSupportedNetworks() { static const std::vector<Network>& GetSupportedNetworks() {
static std::vector<Network> supportedNetworks = { static std::vector<Network> supportedNetworks = {

View File

@ -14,7 +14,7 @@ public:
// Serial numbers start with CY // Serial numbers start with CY
// USB PID is 0x1000, standard driver is FTDI // USB PID is 0x1000, standard driver is FTDI
// Ethernet MAC allocation is 0x04, standard driver is Raw // Ethernet MAC allocation is 0x04, standard driver is Raw
ICSNEO_FINDABLE_DEVICE(NeoVIFIRE2, _icsneo_devicetype_t::icsneo_devicetype_fire2, "CY"); ICSNEO_FINDABLE_DEVICE(NeoVIFIRE2, _icsneo_devicetype_t::FIRE2, "CY");
enum class SKU { enum class SKU {
Standard, Standard,

View File

@ -13,7 +13,7 @@ class NeoVIFIRE3 : public Device {
public: public:
// Serial numbers start with ON // Serial numbers start with ON
// Ethernet MAC allocation is 0x0E, standard driver is Raw // Ethernet MAC allocation is 0x0E, standard driver is Raw
ICSNEO_FINDABLE_DEVICE(NeoVIFIRE3, _icsneo_devicetype_t::icsneo_devicetype_fire3, "ON"); ICSNEO_FINDABLE_DEVICE(NeoVIFIRE3, _icsneo_devicetype_t::FIRE3, "ON");
static const std::vector<Network>& GetSupportedNetworks() { static const std::vector<Network>& GetSupportedNetworks() {
static std::vector<Network> supportedNetworks = { static std::vector<Network> supportedNetworks = {

View File

@ -13,7 +13,7 @@ class NeoVIFIRE3FlexRay : public Device {
public: public:
// Serial numbers start with FF // Serial numbers start with FF
// Ethernet MAC allocation is 1F, standard driver is Raw // Ethernet MAC allocation is 1F, standard driver is Raw
ICSNEO_FINDABLE_DEVICE(NeoVIFIRE3FlexRay, _icsneo_devicetype_t::icsneo_devicetype_fire3_flexray, "FF"); ICSNEO_FINDABLE_DEVICE(NeoVIFIRE3FlexRay, _icsneo_devicetype_t::FIRE3_FlexRay, "FF");
static const std::vector<Network>& GetSupportedNetworks() { static const std::vector<Network>& GetSupportedNetworks() {
static std::vector<Network> supportedNetworks = { static std::vector<Network> supportedNetworks = {

View File

@ -13,7 +13,7 @@ class NeoVIRED2 : public Device {
public: public:
// Serial numbers start with D2 // Serial numbers start with D2
// Ethernet MAC allocation is 0x0E, standard driver is Raw // Ethernet MAC allocation is 0x0E, standard driver is Raw
ICSNEO_FINDABLE_DEVICE(NeoVIRED2, _icsneo_devicetype_t::icsneo_devicetype_red2, "D2"); ICSNEO_FINDABLE_DEVICE(NeoVIRED2, _icsneo_devicetype_t::RED2, "D2");
static const std::vector<Network>& GetSupportedNetworks() { static const std::vector<Network>& GetSupportedNetworks() {
static std::vector<Network> supportedNetworks = { static std::vector<Network> supportedNetworks = {

View File

@ -13,7 +13,7 @@ namespace icsneo {
class NeoVIION : public Plasion { class NeoVIION : public Plasion {
public: public:
// USB PID is 0x0901, standard driver is FTDI // USB PID is 0x0901, standard driver is FTDI
ICSNEO_FINDABLE_DEVICE_BY_PID(NeoVIION, _icsneo_devicetype_t::icsneo_devicetype_ion, 0x0901); ICSNEO_FINDABLE_DEVICE_BY_PID(NeoVIION, _icsneo_devicetype_t::ION, 0x0901);
bool supportsComponentVersions() const override { return true; } bool supportsComponentVersions() const override { return true; }

View File

@ -11,7 +11,7 @@ namespace icsneo {
class NeoVIPLASMA : public Plasion { class NeoVIPLASMA : public Plasion {
public: public:
// USB PID is 0x0801, standard driver is FTDI // USB PID is 0x0801, standard driver is FTDI
ICSNEO_FINDABLE_DEVICE_BY_PID(NeoVIPLASMA, _icsneo_devicetype_t::icsneo_devicetype_plasma, 0x0801); ICSNEO_FINDABLE_DEVICE_BY_PID(NeoVIPLASMA, _icsneo_devicetype_t::PLASMA, 0x0801);
private: private:
NeoVIPLASMA(neodevice_t neodevice, const driver_factory_t& makeDriver) : Plasion(neodevice) { NeoVIPLASMA(neodevice_t neodevice, const driver_factory_t& makeDriver) : Plasion(neodevice) {

View File

@ -17,7 +17,7 @@ public:
// Serial numbers start with AB // Serial numbers start with AB
// USB PID is 0x0006, standard driver is FTDI // USB PID is 0x0006, standard driver is FTDI
// Ethernet MAC allocation is 0x18, standard driver is Raw // Ethernet MAC allocation is 0x18, standard driver is Raw
ICSNEO_FINDABLE_DEVICE(RADA2B, _icsneo_devicetype_t::icsneo_devicetype_rad_a2b, "AB"); ICSNEO_FINDABLE_DEVICE(RADA2B, _icsneo_devicetype_t::RAD_A2B, "AB");
static const std::vector<Network>& GetSupportedNetworks() { static const std::vector<Network>& GetSupportedNetworks() {
static std::vector<Network> supportedNetworks = { static std::vector<Network> supportedNetworks = {

View File

@ -14,7 +14,7 @@ public:
// Serial numbers start with RC // Serial numbers start with RC
// USB PID is 0x1207, standard driver is FTDI3 // USB PID is 0x1207, standard driver is FTDI3
// Ethernet MAC allocation is 0x1D, standard driver is Raw // Ethernet MAC allocation is 0x1D, standard driver is Raw
ICSNEO_FINDABLE_DEVICE_BY_SERIAL_RANGE(RADComet, _icsneo_devicetype_t::icsneo_devicetype_rad_comet, "RC0000", "RC0299"); ICSNEO_FINDABLE_DEVICE_BY_SERIAL_RANGE(RADComet, _icsneo_devicetype_t::RADComet, "RC0000", "RC0299");
std::string getProductName() const override { std::string getProductName() const override {
return "RAD-Comet"; return "RAD-Comet";

View File

@ -14,7 +14,7 @@ public:
// Serial numbers start with RC, Comet2 starts at RC0300 // Serial numbers start with RC, Comet2 starts at RC0300
// USB PID is 0x1207, standard driver is FTDI3 // USB PID is 0x1207, standard driver is FTDI3
// Ethernet MAC allocation is 0x1D, standard driver is Raw // Ethernet MAC allocation is 0x1D, standard driver is Raw
ICSNEO_FINDABLE_DEVICE_BY_SERIAL_RANGE(RADComet2, _icsneo_devicetype_t::icsneo_devicetype_rad_comet, "RC0300", "RCZZZZ"); ICSNEO_FINDABLE_DEVICE_BY_SERIAL_RANGE(RADComet2, _icsneo_devicetype_t::RADComet, "RC0300", "RCZZZZ");
std::string getProductName() const override { std::string getProductName() const override {
return "RAD-Comet 2"; return "RAD-Comet 2";

View File

@ -14,7 +14,7 @@ public:
// Serial numbers start with C3 // Serial numbers start with C3
// USB PID is 0x1208, standard driver is FTDI3 // USB PID is 0x1208, standard driver is FTDI3
// Ethernet MAC allocation is 0x20, standard driver is Raw // Ethernet MAC allocation is 0x20, standard driver is Raw
ICSNEO_FINDABLE_DEVICE(RADComet3, _icsneo_devicetype_t::icsneo_devicetype_rad_comet3, "C3"); ICSNEO_FINDABLE_DEVICE(RADComet3, _icsneo_devicetype_t::RADComet3, "C3");
static const std::vector<Network>& GetSupportedNetworks() { static const std::vector<Network>& GetSupportedNetworks() {
static std::vector<Network> supportedNetworks = { static std::vector<Network> supportedNetworks = {

View File

@ -10,7 +10,7 @@ class RADEpsilon : public Device {
public: public:
// Serial numbers start with RE // Serial numbers start with RE
// USB PID is 0x1109, standard driver is CDCACM // USB PID is 0x1109, standard driver is CDCACM
ICSNEO_FINDABLE_DEVICE(RADEpsilon, _icsneo_devicetype_t::icsneo_devicetype_rad_epsilon, "RE"); ICSNEO_FINDABLE_DEVICE(RADEpsilon, _icsneo_devicetype_t::RADEpsilon, "RE");
static const std::vector<Network>& GetSupportedNetworks() { static const std::vector<Network>& GetSupportedNetworks() {
static std::vector<Network> supportedNetworks = { static std::vector<Network> supportedNetworks = {

View File

@ -17,7 +17,7 @@ class RADGalaxy : public Device {
public: public:
// Serial numbers start with RG // Serial numbers start with RG
// Ethernet MAC allocation is 0x03, standard driver is Raw // Ethernet MAC allocation is 0x03, standard driver is Raw
ICSNEO_FINDABLE_DEVICE(RADGalaxy, _icsneo_devicetype_t::icsneo_devicetype_rad_galaxy, "RG"); ICSNEO_FINDABLE_DEVICE(RADGalaxy, _icsneo_devicetype_t::RADGalaxy, "RG");
static const std::vector<Network>& GetSupportedNetworks() { static const std::vector<Network>& GetSupportedNetworks() {
static std::vector<Network> supportedNetworks = { static std::vector<Network> supportedNetworks = {

View File

@ -16,7 +16,7 @@ public:
// Serial numbers start with GS // Serial numbers start with GS
// USB PID is 0x1204, standard driver is FTDI3 // USB PID is 0x1204, standard driver is FTDI3
// Ethernet MAC allocation is 0x0F, standard driver is Raw // Ethernet MAC allocation is 0x0F, standard driver is Raw
ICSNEO_FINDABLE_DEVICE(RADGigastar, _icsneo_devicetype_t::icsneo_devicetype_rad_gigastar, "GS"); ICSNEO_FINDABLE_DEVICE(RADGigastar, _icsneo_devicetype_t::RADGigastar, "GS");
size_t getEthernetActivationLineCount() const override { return 1; } size_t getEthernetActivationLineCount() const override { return 1; }

View File

@ -18,7 +18,7 @@ namespace icsneo
// Serial numbers start with GT // Serial numbers start with GT
// USB PID is 0x1210, standard driver is FTDI3 // USB PID is 0x1210, standard driver is FTDI3
// Ethernet MAC allocation is 0x22, standard driver is Raw // Ethernet MAC allocation is 0x22, standard driver is Raw
ICSNEO_FINDABLE_DEVICE(RADGigastar2, _icsneo_devicetype_t::icsneo_devicetype_rad_gigastar2, "GT"); ICSNEO_FINDABLE_DEVICE(RADGigastar2, _icsneo_devicetype_t::RADGigastar2, "GT");
static const std::vector<Network> &GetSupportedNetworks() static const std::vector<Network> &GetSupportedNetworks()
{ {

View File

@ -13,7 +13,7 @@ class RADJupiter : public Device {
public: public:
// Serial numbers start with RJ // Serial numbers start with RJ
// USB PID is 1105, standard driver is CDCACM // USB PID is 1105, standard driver is CDCACM
ICSNEO_FINDABLE_DEVICE(RADJupiter, _icsneo_devicetype_t::icsneo_devicetype_rad_jupiter, "RJ"); ICSNEO_FINDABLE_DEVICE(RADJupiter, _icsneo_devicetype_t::RADJupiter, "RJ");
static const std::vector<Network>& GetSupportedNetworks() { static const std::vector<Network>& GetSupportedNetworks() {
static std::vector<Network> supportedNetworks = { static std::vector<Network> supportedNetworks = {

View File

@ -16,7 +16,7 @@ public:
// Serial numbers start with GL (previously, RAD-Gigalog) // Serial numbers start with GL (previously, RAD-Gigalog)
// USB PID is 0x1203, standard driver is FTDI3 // USB PID is 0x1203, standard driver is FTDI3
// Ethernet MAC allocation is 0x0A, standard driver is Raw // Ethernet MAC allocation is 0x0A, standard driver is Raw
ICSNEO_FINDABLE_DEVICE(RADMars, _icsneo_devicetype_t::icsneo_devicetype_rad_mars, "GL"); ICSNEO_FINDABLE_DEVICE(RADMars, _icsneo_devicetype_t::RADMars, "GL");
size_t getEthernetActivationLineCount() const override { return 1; } size_t getEthernetActivationLineCount() const override { return 1; }

View File

@ -12,7 +12,7 @@ class RADMoon2 : public RADMoon2Base {
public: public:
// Serial numbers start with RM // Serial numbers start with RM
// USB PID is 0x1202, standard driver is FTDI3 // USB PID is 0x1202, standard driver is FTDI3
ICSNEO_FINDABLE_DEVICE(RADMoon2, _icsneo_devicetype_t::icsneo_devicetype_rad_moon2, "RM"); ICSNEO_FINDABLE_DEVICE(RADMoon2, _icsneo_devicetype_t::RADMoon2, "RM");
uint8_t getPhyAddrOrPort() const override { return 6; }; uint8_t getPhyAddrOrPort() const override { return 6; };

View File

@ -12,7 +12,7 @@ class RADMoon2ZL : public RADMoon2Base {
public: public:
// Serial numbers start with RN // Serial numbers start with RN
// USB PID is 0x110C, standard driver is CDCACM // USB PID is 0x110C, standard driver is CDCACM
ICSNEO_FINDABLE_DEVICE(RADMoon2ZL, _icsneo_devicetype_t::icsneo_devicetype_rad_moon2, "RN"); ICSNEO_FINDABLE_DEVICE(RADMoon2ZL, _icsneo_devicetype_t::RADMoon2, "RN");
uint8_t getPhyAddrOrPort() const override { return 1; } uint8_t getPhyAddrOrPort() const override { return 1; }

View File

@ -13,7 +13,7 @@ class RADMoon3 : public Device {
public: public:
// Serial numbers start with R3 // Serial numbers start with R3
// USB PID is 0x110D, standard driver is CDCACM // USB PID is 0x110D, standard driver is CDCACM
ICSNEO_FINDABLE_DEVICE(RADMoon3, _icsneo_devicetype_t::icsneo_devicetype_rad_moon3, "R3"); ICSNEO_FINDABLE_DEVICE(RADMoon3, _icsneo_devicetype_t::RADMoon3, "R3");
static const std::vector<Network>& GetSupportedNetworks() { static const std::vector<Network>& GetSupportedNetworks() {
static std::vector<Network> supportedNetworks = { static std::vector<Network> supportedNetworks = {

View File

@ -13,7 +13,7 @@ class RADMoonDuo : public Device {
public: public:
// Serial numbers start with MD // Serial numbers start with MD
// USB PID is 1106, standard driver is CDCACM // USB PID is 1106, standard driver is CDCACM
ICSNEO_FINDABLE_DEVICE(RADMoonDuo, _icsneo_devicetype_t::icsneo_devicetype_rad_moon_duo, "MD"); ICSNEO_FINDABLE_DEVICE(RADMoonDuo, _icsneo_devicetype_t::RADMoonDuo, "MD");
static const std::vector<Network>& GetSupportedNetworks() { static const std::vector<Network>& GetSupportedNetworks() {
// If Converter1 Target is set to USB/CM, OP_Ethernet2 will be exposed to the PC // If Converter1 Target is set to USB/CM, OP_Ethernet2 will be exposed to the PC

View File

@ -14,7 +14,7 @@ public:
// Serial numbers start with MS // Serial numbers start with MS
// USB PID is 0x1209, standard driver is FTDI3 // USB PID is 0x1209, standard driver is FTDI3
// Ethernet MAC allocation is 0x21, standard driver is Raw // Ethernet MAC allocation is 0x21, standard driver is Raw
ICSNEO_FINDABLE_DEVICE(RADMoonT1S, _icsneo_devicetype_t::icsneo_devicetype_rad_moon_t1s, "MS"); ICSNEO_FINDABLE_DEVICE(RADMoonT1S, _icsneo_devicetype_t::RADMoonT1S, "MS");
static const std::vector<Network>& GetSupportedNetworks() { static const std::vector<Network>& GetSupportedNetworks() {
static std::vector<Network> supportedNetworks = { static std::vector<Network> supportedNetworks = {

View File

@ -13,7 +13,7 @@ class RADPluto : public Device {
public: public:
// Serial numbers start with PL // Serial numbers start with PL
// USB PID is 1104, standard driver is CDCACM // USB PID is 1104, standard driver is CDCACM
ICSNEO_FINDABLE_DEVICE(RADPluto, _icsneo_devicetype_t::icsneo_devicetype_rad_pluto, "PL"); ICSNEO_FINDABLE_DEVICE(RADPluto, _icsneo_devicetype_t::RADPluto, "PL");
static const std::vector<Network>& GetSupportedNetworks() { static const std::vector<Network>& GetSupportedNetworks() {
static std::vector<Network> supportedNetworks = { static std::vector<Network> supportedNetworks = {

View File

@ -14,7 +14,7 @@ public:
// Serial numbers start with RS // Serial numbers start with RS
// USB PID is 0x0005, standard driver is FTDI // USB PID is 0x0005, standard driver is FTDI
// Ethernet MAC allocation is 0x05, standard driver is Raw // Ethernet MAC allocation is 0x05, standard driver is Raw
ICSNEO_FINDABLE_DEVICE(RADStar2, _icsneo_devicetype_t::icsneo_devicetype_rad_star2, "RS"); ICSNEO_FINDABLE_DEVICE(RADStar2, _icsneo_devicetype_t::RADStar2, "RS");
static const std::vector<Network>& GetSupportedNetworks() { static const std::vector<Network>& GetSupportedNetworks() {
static std::vector<Network> supportedNetworks = { static std::vector<Network> supportedNetworks = {

View File

@ -13,7 +13,7 @@ class RADSupermoon : public Device {
public: public:
// Serial numbers start with SM // Serial numbers start with SM
// USB PID is 0x1201, standard driver is FTDI3 // USB PID is 0x1201, standard driver is FTDI3
ICSNEO_FINDABLE_DEVICE(RADSupermoon, _icsneo_devicetype_t::icsneo_devicetype_rad_supermoon, "SM"); ICSNEO_FINDABLE_DEVICE(RADSupermoon, _icsneo_devicetype_t::RADSupermoon, "SM");
enum class SKU { enum class SKU {
Standard, Standard,

View File

@ -12,7 +12,7 @@ namespace icsneo {
class ValueCAN3 : public Device { class ValueCAN3 : public Device {
public: public:
// USB PID is 0x0601, standard driver is FTDI // USB PID is 0x0601, standard driver is FTDI
ICSNEO_FINDABLE_DEVICE_BY_PID(ValueCAN3, _icsneo_devicetype_t::icsneo_devicetype_vcan3, 0x0601); ICSNEO_FINDABLE_DEVICE_BY_PID(ValueCAN3, _icsneo_devicetype_t::VCAN3, 0x0601);
static const std::vector<Network>& GetSupportedNetworks() { static const std::vector<Network>& GetSupportedNetworks() {
static std::vector<Network> supportedNetworks = { static std::vector<Network> supportedNetworks = {

View File

@ -12,7 +12,7 @@ class ValueCAN4_1 : public ValueCAN4 {
public: public:
// Serial numbers start with V1 for 4-1 // Serial numbers start with V1 for 4-1
// USB PID is 0x1101 (shared by all ValueCAN 4s), standard driver is CDCACM // USB PID is 0x1101 (shared by all ValueCAN 4s), standard driver is CDCACM
ICSNEO_FINDABLE_DEVICE(ValueCAN4_1, _icsneo_devicetype_t::icsneo_devicetype_vcan41, "V1"); ICSNEO_FINDABLE_DEVICE(ValueCAN4_1, _icsneo_devicetype_t::VCAN4_1, "V1");
static const std::vector<Network>& GetSupportedNetworks() { static const std::vector<Network>& GetSupportedNetworks() {
static std::vector<Network> supportedNetworks = { static std::vector<Network> supportedNetworks = {

View File

@ -12,7 +12,7 @@ class ValueCAN4_2 : public ValueCAN4 {
public: public:
// Serial numbers start with V2 for 4-2 // Serial numbers start with V2 for 4-2
// USB PID is 0x1101 (shared by all ValueCAN 4s), standard driver is CDCACM // USB PID is 0x1101 (shared by all ValueCAN 4s), standard driver is CDCACM
ICSNEO_FINDABLE_DEVICE(ValueCAN4_2, _icsneo_devicetype_t::icsneo_devicetype_vcan42, "V2"); ICSNEO_FINDABLE_DEVICE(ValueCAN4_2, _icsneo_devicetype_t::VCAN4_2, "V2");
enum class SKU { enum class SKU {
Standard, Standard,

View File

@ -13,7 +13,7 @@ public:
// Serial numbers start with VE for 4-2EL // Serial numbers start with VE for 4-2EL
// USB PID is 0x1101 (shared by all ValueCAN 4s), standard driver is CDCACM // USB PID is 0x1101 (shared by all ValueCAN 4s), standard driver is CDCACM
// Ethernet MAC allocation is 0x0B, standard driver is Raw // Ethernet MAC allocation is 0x0B, standard driver is Raw
ICSNEO_FINDABLE_DEVICE(ValueCAN4_2EL, _icsneo_devicetype_t::icsneo_devicetype_vcan42_el, "VE"); ICSNEO_FINDABLE_DEVICE(ValueCAN4_2EL, _icsneo_devicetype_t::VCAN4_2EL, "VE");
enum class SKU { enum class SKU {
Standard, Standard,

View File

@ -12,7 +12,7 @@ class ValueCAN4_4 : public ValueCAN4 {
public: public:
// Serial numbers start with V4 for 4-4 // Serial numbers start with V4 for 4-4
// USB PID is 0x1101 (shared by all ValueCAN 4s), standard driver is CDCACM // USB PID is 0x1101 (shared by all ValueCAN 4s), standard driver is CDCACM
ICSNEO_FINDABLE_DEVICE(ValueCAN4_4, _icsneo_devicetype_t::icsneo_devicetype_vcan44, "V4"); ICSNEO_FINDABLE_DEVICE(ValueCAN4_4, _icsneo_devicetype_t::VCAN4_4, "V4");
enum class SKU { enum class SKU {
Standard, Standard,

View File

@ -13,7 +13,7 @@ public:
// Serial numbers start with IV for Industrial // Serial numbers start with IV for Industrial
// USB PID is 0x1101 (shared by all ValueCAN 4s), standard driver is CDCACM // USB PID is 0x1101 (shared by all ValueCAN 4s), standard driver is CDCACM
// Ethernet MAC allocation is 0x12, standard driver is Raw // Ethernet MAC allocation is 0x12, standard driver is Raw
ICSNEO_FINDABLE_DEVICE(ValueCAN4Industrial, _icsneo_devicetype_t::icsneo_devicetype_vcan4_industrial, "IV"); ICSNEO_FINDABLE_DEVICE(ValueCAN4Industrial, _icsneo_devicetype_t::VCAN4_IND, "IV");
static const std::vector<Network>& GetSupportedNetworks() { static const std::vector<Network>& GetSupportedNetworks() {
static std::vector<Network> supportedNetworks = { static std::vector<Network> supportedNetworks = {

View File

@ -14,7 +14,7 @@ class VividCAN : public Device {
public: public:
// Serial numbers start with VV // Serial numbers start with VV
// USB PID is 0x1102, standard driver is CDCACM // USB PID is 0x1102, standard driver is CDCACM
ICSNEO_FINDABLE_DEVICE(VividCAN, _icsneo_devicetype_t::icsneo_devicetype_vividcan, "VV"); ICSNEO_FINDABLE_DEVICE(VividCAN, _icsneo_devicetype_t::VividCAN, "VV");
// VividCAN does not go online, you can only set settings // VividCAN does not go online, you can only set settings
bool goOnline() override { bool goOnline() override {

View File

@ -111,7 +111,7 @@ ICSNEO_API icsneo_error_t icsneo_open(icsneo_device_t* device);
ICSNEO_API icsneo_error_t icsneo_close(icsneo_device_t* device); ICSNEO_API icsneo_error_t icsneo_close(icsneo_device_t* device);
ICSNEO_API icsneo_error_t icsneo_device_describe(icsneo_device_t* device, const char* value, uint32_t* value_length); ICSNEO_API icsneo_error_t icsneo_device_describe(icsneo_device_t* device, const char* value, uint32_t* value_length);
ICSNEO_API icsneo_error_t icsneo_device_type(icsneo_device_t* device, icsneo_devicetype_t* value); ICSNEO_API icsneo_error_t icsneo_device_type(icsneo_device_t* device, uint64_t* value);
ICSNEO_API icsneo_error_t icsneo_device_serial(icsneo_device_t* device, const char* value, uint32_t* value_length); ICSNEO_API icsneo_error_t icsneo_device_serial(icsneo_device_t* device, const char* value, uint32_t* value_length);
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -1,10 +1,5 @@
#pragma once #pragma once
// _Static_assert support, this can be removed once C23 is the "standard"
#if __STDC_VERSION__ < 202311L && !defined(__cplusplus)
#include <assert.h>
#endif
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
@ -27,126 +22,66 @@ typedef uint32_t icsneo_open_options_t;
// This enum used to be a bitfield, but has since become an enum as we have more than 32 devices // This enum used to be a bitfield, but has since become an enum as we have more than 32 devices
// Adding something? Make sure you update the type string and C-compatible defines below! // Adding something? Make sure you update the type string and C-compatible defines below!
typedef enum _icsneo_devicetype_t { typedef enum _icsneo_devicetype_t {
// Unknown device type Unknown = (0x00000000),
icsneo_devicetype_unknown, BLUE = (0x00000001),
// neoVI Blue - Obsolete ECU_AVB = (0x00000002),
icsneo_devicetype_blue, RADSupermoon = (0x00000003),
// neoECU AVB/TSN DW_VCAN = (0x00000004),
icsneo_devicetype_ecu_avb, RADMoon2 = (0x00000005),
// RAD-SuperMoon RADMars = (0x00000006),
icsneo_devicetype_rad_supermoon, VCAN4_1 = (0x00000007),
// DualWire ValueCAN - Obsolete FIRE = (0x00000008),
icsneo_devicetype_dw_vcan, RADPluto = (0x00000009),
// RAD-Moon 2 VCAN4_2EL = (0x0000000a),
icsneo_devicetype_rad_moon2, RADIO_CANHUB = (0x0000000b),
// RAD-Mars NEOECU12 = (0x0000000c),
icsneo_devicetype_rad_mars, OBD2_LCBADGE = (0x0000000d),
// ValueCAN 4-1 RADMoonDuo = (0x0000000e),
icsneo_devicetype_vcan41, FIRE3 = (0x0000000f),
// neoVI FIRE VCAN3 = (0x00000010),
icsneo_devicetype_fire, RADJupiter = (0x00000011),
// RAD-Pluto VCAN4_IND = (0x00000012),
icsneo_devicetype_rad_pluto, RADGigastar = (0x00000013),
// ValueCAN 4-2EL RED2 = (0x00000014),
icsneo_devicetype_vcan42_el, EtherBADGE = (0x00000016),
// RAD-IO CAN-HUB RAD_A2B = (0x00000017),
icsneo_devicetype_radio_canhub, RADEpsilon = (0x00000018),
// neoECU12 RADMoon3 = (0x00000023),
icsneo_devicetype_neo_ecu12, RADComet = (0x00000024),
// neoOBD2-LC Badge FIRE3_FlexRay = (0x00000025),
icsneo_devicetype_obd2_lc_badge, Connect = (0x00000026),
// RAD-Moon Duo RADComet3 = (0x00000027),
icsneo_devicetype_rad_moon_duo, RADMoonT1S = (0x00000028),
// neoVI FIRE3 RADGigastar2 = (0x00000029),
icsneo_devicetype_fire3, RED = (0x00000040),
// ValueCAN3 ECU = (0x00000080),
icsneo_devicetype_vcan3, IEVB = (0x00000100),
// RAD-Jupiter Pendant = (0x00000200),
icsneo_devicetype_rad_jupiter, OBD2_PRO = (0x00000400),
// ValueCAN4 Industrial ECUChip_UART = (0x00000800),
icsneo_devicetype_vcan4_industrial, PLASMA = (0x00001000),
// RAD-Gigastar DONT_REUSE0 = (0x00002000), // Previously FIRE_VNET
icsneo_devicetype_rad_gigastar, NEOAnalog = (0x00004000),
// neoVI RED2 CT_OBD = (0x00008000),
icsneo_devicetype_red2, DONT_REUSE1 = (0x00010000), // Previously PLASMA_1_12
// EtherBADGE DONT_REUSE2 = (0x00020000), // Previously PLASMA_1_13
icsneo_devicetype_etherbadge, ION = (0x00040000),
// RAD-A2B RADStar = (0x00080000),
icsneo_devicetype_rad_a2b, DONT_REUSE3 = (0x00100000), // Previously ION3
// RAD-Epsilon VCAN4_4 = (0x00200000),
icsneo_devicetype_rad_epsilon, VCAN4_2 = (0x00400000),
// RAD-Moon 3 CMProbe = (0x00800000),
icsneo_devicetype_rad_moon3, EEVB = (0x01000000),
// RAD-Comet VCANrf = (0x02000000),
icsneo_devicetype_rad_comet, FIRE2 = (0x04000000),
// neoVI FIRE3 FlexRay Flex = (0x08000000),
icsneo_devicetype_fire3_flexray, RADGalaxy = (0x10000000),
// neoVI CONNECT RADStar2 = (0x20000000),
icsneo_devicetype_connect, VividCAN = (0x40000000),
// RAD-Comet 3 OBD2_SIM = (0x80000000)
icsneo_devicetype_rad_comet3,
// RAD-Moon T1S
icsneo_devicetype_rad_moon_t1s,
// RAD-Gigastar 2
icsneo_devicetype_rad_gigastar2,
// neoVI RED
icsneo_devicetype_red,
// neoECU - Obsolete
icsneo_devicetype_ecu,
// IEVB - Obsolete
icsneo_devicetype_ievb,
// Pendant - Obsolete
icsneo_devicetype_pendant,
// neoOBD2 Pro - Obsolete
icsneo_devicetype_obd2_pro,
// neoECU Chip - Obsolete
icsneo_devicetype_ecuchip_uart,
// neoVI PLASMA
icsneo_devicetype_plasma,
// neoAnalog - Obsolete
icsneo_devicetype_neo_analog,
// Obsolete
icsneo_devicetype_ct_obd,
// neoVI ION
icsneo_devicetype_ion,
// RAD-Star - Obsolete
icsneo_devicetype_rad_star,
// ValueCAN4-4
icsneo_devicetype_vcan44,
// ValueCAN4-2
icsneo_devicetype_vcan42,
// CMProbe - Obsolete
icsneo_devicetype_cm_probe,
// Ethernet EVB - Obsolete
icsneo_devicetype_eevb,
// ValueCAN.rf - Obsolete
icsneo_devicetype_vcan_rf,
// neoVI FIRE2
icsneo_devicetype_fire2,
// neoVI FLEX - Obsolete
icsneo_devicetype_flex,
// RAD-Galaxy
icsneo_devicetype_rad_galaxy,
// RAD-Star 2
icsneo_devicetype_rad_star2,
// VividCAN
icsneo_devicetype_vividcan,
// neoOBD2 SIM
icsneo_devicetype_obd2_sim,
// Must be last entry
icsneo_devicetype_maxsize,
} _icsneo_devicetype_t; } _icsneo_devicetype_t;
typedef uint32_t icsneo_devicetype_t; typedef uint64_t icsneo_devicetype_t;
// Make sure icsneo_devicetype_t is never smaller than the actual enum
#if __STDC_VERSION__ < 202311L && !defined(__cplusplus)
_Static_assert(sizeof(_icsneo_devicetype_t) <= sizeof(icsneo_devicetype_t));
#else // C++ or C23
static_assert(sizeof(_icsneo_devicetype_t) <= sizeof(icsneo_devicetype_t));
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }