libicsneo/device/include/devicetype.h

149 lines
3.5 KiB
C++

#ifndef __DEVICETYPE_H_
#define __DEVICETYPE_H_
#include <cstdint>
#include <ostream>
namespace icsneo {
class DeviceType {
public:
// This enum used to be a bitfield, but has since become an enum as we have more than 32 devices
enum Enum : uint32_t {
Unknown = (0x00000000),
BLUE = (0x00000001),
ECU_AVB = (0x00000002),
RADSupermoon = (0x00000003),
DW_VCAN = (0x00000004),
RADMoon2 = (0x00000005),
RADGigalog = (0x00000006),
VCAN4_1 = (0x00000007),
FIRE = (0x00000008),
RADPluto = (0x00000009),
VCAN4_2EL = (0x0000000a),
RADIO_CANHUB = (0x0000000b),
VCAN3 = (0x00000010),
RED = (0x00000040),
ECU = (0x00000080),
IEVB = (0x00000100),
Pendant = (0x00000200),
OBD2_PRO = (0x00000400),
ECUChip_UART = (0x00000800),
PLASMA = (0x00001000),
DONT_REUSE0 = (0x00002000), // Previously FIRE_VNET
NEOAnalog = (0x00004000),
CT_OBD = (0x00008000),
DONT_REUSE1 = (0x00010000), // Previously PLASMA_1_12
DONT_REUSE2 = (0x00020000), // Previously PLASMA_1_13
ION = (0x00040000),
RADStar = (0x00080000),
DONT_REUSE3 = (0x00100000), // Previously ION3
VCAN4_4 = (0x00200000),
VCAN4_2 = (0x00400000),
CMProbe = (0x00800000),
EEVB = (0x01000000),
VCANrf = (0x02000000),
FIRE2 = (0x04000000),
Flex = (0x08000000),
RADGalaxy = (0x10000000),
RADStar2 = (0x20000000),
VividCAN = (0x40000000),
OBD2_SIM = (0x80000000)
};
static const char* GetDeviceTypeString(DeviceType::Enum type) {
switch(type) {
case Unknown:
return "Unknown";
case BLUE:
return "neoVI BLUE";
case ECU_AVB:
return "neoECU AVB";
case RADSupermoon:
return "RADSupermoon";
case DW_VCAN:
return "DW_VCAN";
case RADMoon2:
return "RADMoon2";
case RADGigalog:
return "RADGigalog";
case VCAN4_1:
return "ValueCAN 4-1";
case FIRE:
return "neoVI FIRE";
case RADPluto:
return "RADPluto";
case VCAN4_2EL:
return "ValueCAN 4-2EL";
case RADIO_CANHUB:
return "RADIO_CANHUB";
case VCAN3:
return "ValueCAN 3";
case RED:
return "neoVI RED";
case ECU:
return "neoECU";
case IEVB:
return "IEVB";
case Pendant:
return "Pendant";
case OBD2_PRO:
return "neoOBD2-PRO";
case ECUChip_UART:
return "neoECU Chip UART";
case PLASMA:
return "neoVI PLASMA";
case NEOAnalog:
return "NEOAnalog";
case CT_OBD:
return "CT_OBD";
case ION:
return "ION";
case RADStar:
return "RADStar";
case VCAN4_4:
return "ValueCAN 4-4";
case VCAN4_2:
return "ValueCAN 4-2";
case CMProbe:
return "CMProbe";
case EEVB:
return "Intrepid Ethernet Evaluation Board";
case VCANrf:
return "ValueCAN.rf";
case FIRE2:
return "neoVI FIRE 2";
case Flex:
return "neoVI Flex";
case RADGalaxy:
return "RADGalaxy";
case RADStar2:
return "RADStar2";
case VividCAN:
return "VividCAN";
case OBD2_SIM:
return "neoOBD2-SIM";
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";
}
}
DeviceType() { value = DeviceType::Enum::Unknown; }
DeviceType(uint32_t netid) { value = (DeviceType::Enum)netid; }
DeviceType(DeviceType::Enum netid) { value = netid; }
DeviceType::Enum getDeviceType() const { return value; }
friend std::ostream& operator<<(std::ostream& os, const DeviceType& DeviceType) {
os << GetDeviceTypeString(DeviceType.getDeviceType());
return os;
}
private:
DeviceType::Enum value;
};
};
#endif