diff --git a/cores/portduino/linux/LinuxHardwareI2C.cpp b/cores/portduino/linux/LinuxHardwareI2C.cpp index 0857b00..9492347 100644 --- a/cores/portduino/linux/LinuxHardwareI2C.cpp +++ b/cores/portduino/linux/LinuxHardwareI2C.cpp @@ -36,12 +36,14 @@ namespace arduino { void LinuxHardwareI2C::begin(const char * device) { if (!hasBegun) { i2c_file = open(device, O_RDWR); - hasBegun = true; + if (i2c_file >= 0) + hasBegun = true; } } void LinuxHardwareI2C::end() { if (hasBegun) { close(i2c_file); + i2c_file = -1; hasBegun = false; } } diff --git a/cores/portduino/linux/LinuxHardwareI2C.h b/cores/portduino/linux/LinuxHardwareI2C.h index 738357c..21dca1b 100644 --- a/cores/portduino/linux/LinuxHardwareI2C.h +++ b/cores/portduino/linux/LinuxHardwareI2C.h @@ -20,7 +20,7 @@ enum ResultI2c { }; class LinuxHardwareI2C : public HardwareI2C { - int i2c_file = 0; + int i2c_file = -1; // unopened: fail fast instead of operating on stdin/stdout public: void begin(const char* device);