13#include <promeki/config.h>
14#if PROMEKI_ENABLE_CORE
18PROMEKI_NAMESPACE_BEGIN
43class NetworkInterfaceKind :
public TypedEnum<NetworkInterfaceKind> {
45 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"NetworkInterfaceKind",
"Network Interface Kind", 0,
46 {
"Unknown", 0,
"Unknown"},
47 {
"Ethernet", 1,
"Ethernet (IEEE 802.3)"},
48 {
"Wifi", 2,
"Wi-Fi (802.11)"}, {
"Loopback", 3,
"Loopback"},
49 {
"Tunnel", 4,
"Tunnel"}, {
"Bridge", 5,
"Software Bridge"},
50 {
"Vlan", 6,
"VLAN (802.1Q)"}, {
"Virtual", 7,
"Virtual"},
51 {
"Cellular", 8,
"Cellular (LTE / 5G)"},
52 {
"PointToPoint", 9,
"Point-to-Point"});
54 using TypedEnum<NetworkInterfaceKind>::TypedEnum;
56 static const NetworkInterfaceKind Unknown;
57 static const NetworkInterfaceKind Ethernet;
58 static const NetworkInterfaceKind Wifi;
59 static const NetworkInterfaceKind Loopback;
60 static const NetworkInterfaceKind Tunnel;
61 static const NetworkInterfaceKind Bridge;
62 static const NetworkInterfaceKind Vlan;
63 static const NetworkInterfaceKind Virtual;
64 static const NetworkInterfaceKind Cellular;
65 static const NetworkInterfaceKind PointToPoint;
68inline const NetworkInterfaceKind NetworkInterfaceKind::Unknown{0};
69inline const NetworkInterfaceKind NetworkInterfaceKind::Ethernet{1};
70inline const NetworkInterfaceKind NetworkInterfaceKind::Wifi{2};
71inline const NetworkInterfaceKind NetworkInterfaceKind::Loopback{3};
72inline const NetworkInterfaceKind NetworkInterfaceKind::Tunnel{4};
73inline const NetworkInterfaceKind NetworkInterfaceKind::Bridge{5};
74inline const NetworkInterfaceKind NetworkInterfaceKind::Vlan{6};
75inline const NetworkInterfaceKind NetworkInterfaceKind::Virtual{7};
76inline const NetworkInterfaceKind NetworkInterfaceKind::Cellular{8};
77inline const NetworkInterfaceKind NetworkInterfaceKind::PointToPoint{9};
89class EUI64Format :
public TypedEnum<EUI64Format> {
91 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"EUI64Format",
"EUI-64 Format", 0,
92 {
"OctetHyphen", 0,
"Hyphen-Separated Octets"},
93 {
"OctetColon", 1,
"Colon-Separated Octets"},
94 {
"IPv6", 2,
"IPv6 Identifier Groups"});
96 using TypedEnum<EUI64Format>::TypedEnum;
98 static const EUI64Format OctetHyphen;
99 static const EUI64Format OctetColon;
100 static const EUI64Format IPv6;
103inline const EUI64Format EUI64Format::OctetHyphen{0};
104inline const EUI64Format EUI64Format::OctetColon{1};
105inline const EUI64Format EUI64Format::IPv6{2};
112class V4l2PowerLineMode :
public TypedEnum<V4l2PowerLineMode> {
114 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"V4l2PowerLineMode",
"V4L2 Power Line Frequency", 3,
115 {
"Disabled", 0,
"Disabled"}, {
"50Hz", 1,
"50 Hz"},
116 {
"60Hz", 2,
"60 Hz"}, {
"Auto", 3,
"Automatic"});
118 using TypedEnum<V4l2PowerLineMode>::TypedEnum;
120 static const V4l2PowerLineMode Disabled;
121 static const V4l2PowerLineMode Hz50;
122 static const V4l2PowerLineMode Hz60;
123 static const V4l2PowerLineMode Auto;
126inline const V4l2PowerLineMode V4l2PowerLineMode::Disabled{0};
127inline const V4l2PowerLineMode V4l2PowerLineMode::Hz50{1};
128inline const V4l2PowerLineMode V4l2PowerLineMode::Hz60{2};
129inline const V4l2PowerLineMode V4l2PowerLineMode::Auto{3};
136class V4l2ExposureMode :
public TypedEnum<V4l2ExposureMode> {
138 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"V4l2ExposureMode",
"V4L2 Exposure Mode", 3,
139 {
"Auto", 0,
"Automatic"}, {
"Manual", 1,
"Manual"},
140 {
"ShutterPriority", 2,
"Shutter Priority"},
141 {
"AperturePriority", 3,
"Aperture Priority"});
143 using TypedEnum<V4l2ExposureMode>::TypedEnum;
145 static const V4l2ExposureMode Auto;
146 static const V4l2ExposureMode Manual;
147 static const V4l2ExposureMode ShutterPriority;
148 static const V4l2ExposureMode AperturePriority;
151inline const V4l2ExposureMode V4l2ExposureMode::Auto{0};
152inline const V4l2ExposureMode V4l2ExposureMode::Manual{1};
153inline const V4l2ExposureMode V4l2ExposureMode::ShutterPriority{2};
154inline const V4l2ExposureMode V4l2ExposureMode::AperturePriority{3};