diff --git a/src/dev/device.h b/src/dev/device.h index cafcec5d..8de3974f 100644 --- a/src/dev/device.h +++ b/src/dev/device.h @@ -77,6 +77,10 @@ class BaseDevice { { return 0; } + virtual bool is_system_pin(uint8_t pin) + { + return false; + } }; } // namespace dev diff --git a/src/dev/esp32/esp32.cpp b/src/dev/esp32/esp32.cpp index e3f55935..ede2dbdb 100644 --- a/src/dev/esp32/esp32.cpp +++ b/src/dev/esp32/esp32.cpp @@ -122,6 +122,16 @@ uint16_t Esp32Device::get_cpu_frequency() return ESP.getCpuFreqMHz(); } +bool Esp32Device::is_system_pin(uint8_t pin) +{ + if((pin >= 6) && (pin <= 11)) return true; // integrated SPI flash + if((pin == 37) || (pin == 38)) return true; // unavailable + if(psramFound()) { + if((pin == 16) || (pin == 17)) return true; // PSRAM + } + return false; +} + } // namespace dev #if defined(LANBONL8) diff --git a/src/dev/esp32/esp32.h b/src/dev/esp32/esp32.h index 8c445521..44be6a6b 100644 --- a/src/dev/esp32/esp32.h +++ b/src/dev/esp32/esp32.h @@ -39,6 +39,8 @@ class Esp32Device : public BaseDevice { uint8_t get_heap_fragmentation() override; uint16_t get_cpu_frequency() override; + bool is_system_pin(uint8_t pin) override; + private: std::string _hostname; diff --git a/src/dev/esp8266/esp8266.cpp b/src/dev/esp8266/esp8266.cpp index 1bceb5f7..bcd9a850 100644 --- a/src/dev/esp8266/esp8266.cpp +++ b/src/dev/esp8266/esp8266.cpp @@ -109,6 +109,13 @@ uint16_t Esp8266Device::get_cpu_frequency() return ESP.getCpuFreqMHz(); } +bool Esp8266Device::is_system_pin(uint8_t pin) +{ + if((pin >= 6) && (pin <= 11)) return true; // integrated SPI flash + if((pin >= 12) && (pin <= 14)) return true; // HSPI + return false; +} + } // namespace dev dev::Esp8266Device haspDevice; diff --git a/src/dev/esp8266/esp8266.h b/src/dev/esp8266/esp8266.h index 39af24c6..cdd6526d 100644 --- a/src/dev/esp8266/esp8266.h +++ b/src/dev/esp8266/esp8266.h @@ -41,6 +41,8 @@ class Esp8266Device : public BaseDevice { uint8_t get_heap_fragmentation() override; uint16_t get_cpu_frequency() override; + bool is_system_pin(uint8_t pin) override; + private: std::string _hostname; diff --git a/src/dev/win32/hasp_win32.cpp b/src/dev/win32/hasp_win32.cpp index 6dc27817..6142cdb8 100644 --- a/src/dev/win32/hasp_win32.cpp +++ b/src/dev/win32/hasp_win32.cpp @@ -119,6 +119,11 @@ uint16_t Win32Device::get_cpu_frequency() return 0; } +bool Win32Device::is_system_pin(uint8_t pin) +{ + return false; +} + } // namespace dev dev::Win32Device haspDevice; diff --git a/src/dev/win32/hasp_win32.h b/src/dev/win32/hasp_win32.h index 2eb3614a..75f72bac 100644 --- a/src/dev/win32/hasp_win32.h +++ b/src/dev/win32/hasp_win32.h @@ -59,6 +59,8 @@ class Win32Device : public BaseDevice { uint8_t get_heap_fragmentation(); uint16_t get_cpu_frequency(); + bool is_system_pin(uint8_t pin) override; + private: std::string _hostname;