43 template<auto Context, u8 Index, u32 Offset, u32 MaxValue>
56 ADCChannel::s_device = open((
"/sys/bus/iio/devices/iio:device" + std::to_string(Context) +
"/in_voltage" + std::to_string(Index) +
"_raw").c_str(), O_RDWR);
57 return ADCChannel::s_device != -1;
66 close(ADCChannel::s_device);
76 operator float() const noexcept {
77 std::string data(0xFF, 0x00);
79 if (read(ADCChannel::s_device, data.data(), data.size()) <= 0)
81 lseek(ADCChannel::s_device, 0, 0);
83 return std::max<float>(std::stol(data) - Offset, 0.0F) / MaxValue;
92 template<auto,
template<auto, u8, u32, u32>
typename>
95 static inline int s_device = -1;