From c5204b48d51dbd93e5c136e9c5b2c36352ce3949 Mon Sep 17 00:00:00 2001 From: fvanroie <15969459+fvanroie@users.noreply.github.com> Date: Tue, 23 Feb 2021 20:40:16 +0100 Subject: [PATCH] Add is_system_pin --- src/dev/device.h | 4 ++++ src/dev/esp32/esp32.cpp | 10 ++++++++++ src/dev/esp32/esp32.h | 2 ++ src/dev/esp8266/esp8266.cpp | 7 +++++++ src/dev/esp8266/esp8266.h | 2 ++ src/dev/win32/hasp_win32.cpp | 5 +++++ src/dev/win32/hasp_win32.h | 2 ++ 7 files changed, 32 insertions(+) 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;