From 423d7153579394ae9c8f564f16e2fd3c120d8d08 Mon Sep 17 00:00:00 2001 From: Damiano Mazzella Date: Fri, 14 Mar 2025 10:28:50 +0100 Subject: [PATCH 1/3] Get the status of the display. --- libraries/Arduino_H7_Video/src/Arduino_H7_Video.cpp | 5 +++++ libraries/Arduino_H7_Video/src/Arduino_H7_Video.h | 7 +++++++ libraries/Arduino_H7_Video/src/H7DisplayShield.cpp | 10 ++++++++++ libraries/Arduino_H7_Video/src/H7DisplayShield.h | 3 +++ libraries/Arduino_H7_Video/src/anx7625.cpp | 5 +++++ libraries/Arduino_H7_Video/src/anx7625.h | 1 + 6 files changed, 31 insertions(+) diff --git a/libraries/Arduino_H7_Video/src/Arduino_H7_Video.cpp b/libraries/Arduino_H7_Video/src/Arduino_H7_Video.cpp index 460a1793a..7c11200d3 100644 --- a/libraries/Arduino_H7_Video/src/Arduino_H7_Video.cpp +++ b/libraries/Arduino_H7_Video/src/Arduino_H7_Video.cpp @@ -179,6 +179,11 @@ bool Arduino_H7_Video::isRotated() { return _rotated; } +int Arduino_H7_Video::getStatus() +{ + return _shield->getStatus(); +} + void Arduino_H7_Video::end() { #ifdef HAS_ARDUINOGRAPHICS ArduinoGraphics::end(); diff --git a/libraries/Arduino_H7_Video/src/Arduino_H7_Video.h b/libraries/Arduino_H7_Video/src/Arduino_H7_Video.h index 9f05f5ea0..12fd47cb7 100644 --- a/libraries/Arduino_H7_Video/src/Arduino_H7_Video.h +++ b/libraries/Arduino_H7_Video/src/Arduino_H7_Video.h @@ -106,6 +106,13 @@ class Arduino_H7_Video */ bool isRotated(); + /** + * @brief Get the status of the display. + * + * @return int The Status of the display. + */ + int getStatus(); + #ifdef HAS_ARDUINOGRAPHICS /** * @brief Clear the display. diff --git a/libraries/Arduino_H7_Video/src/H7DisplayShield.cpp b/libraries/Arduino_H7_Video/src/H7DisplayShield.cpp index e045f5abe..14904db70 100644 --- a/libraries/Arduino_H7_Video/src/H7DisplayShield.cpp +++ b/libraries/Arduino_H7_Video/src/H7DisplayShield.cpp @@ -18,6 +18,10 @@ int GigaDisplayShieldClass::getEdidMode(int h, int v) { return EDID_MODE_480x800_60Hz; } +int GigaDisplayShieldClass::getStatus() { + return 1; +} + int USBCVideoClass::init(int edidmode) { struct edid recognized_edid; int err_code = 0; @@ -57,5 +61,11 @@ int USBCVideoClass::getEdidMode(int h, int v) { return edidmode; } +int USBCVideoClass::getStatus() { + int detected = anx7625_get_hpd_event(0); + + return detected; +} + GigaDisplayShieldClass GigaDisplayShield; USBCVideoClass USBCVideo; \ No newline at end of file diff --git a/libraries/Arduino_H7_Video/src/H7DisplayShield.h b/libraries/Arduino_H7_Video/src/H7DisplayShield.h index c29f9d7eb..541c2c632 100644 --- a/libraries/Arduino_H7_Video/src/H7DisplayShield.h +++ b/libraries/Arduino_H7_Video/src/H7DisplayShield.h @@ -5,18 +5,21 @@ class H7DisplayShield { public: virtual int init(int edidmode) = 0; virtual int getEdidMode(int h, int v); + virtual int getStatus(); }; class GigaDisplayShieldClass : public H7DisplayShield { public: int init(int edidmode); int getEdidMode(int h, int v); + int getStatus(); }; class USBCVideoClass : public H7DisplayShield { public: int init(int edidmode); int getEdidMode(int h, int v); + int getStatus(); }; extern GigaDisplayShieldClass GigaDisplayShield; diff --git a/libraries/Arduino_H7_Video/src/anx7625.cpp b/libraries/Arduino_H7_Video/src/anx7625.cpp index 5f06e96c7..e69d5d832 100644 --- a/libraries/Arduino_H7_Video/src/anx7625.cpp +++ b/libraries/Arduino_H7_Video/src/anx7625.cpp @@ -630,6 +630,11 @@ bool anx7625_is_power_provider(uint8_t bus) { } } +int anx7625_get_hpd_event(uint8_t bus) { + int ret = anx7625_hpd_change_detect(bus);; + return ret; +} + int i2c_writeb(uint8_t bus, uint8_t saddr, uint8_t offset, uint8_t val) { char cmd[2]; cmd[0] = offset; diff --git a/libraries/Arduino_H7_Video/src/anx7625.h b/libraries/Arduino_H7_Video/src/anx7625.h index e6f8de7f2..146d09ec1 100644 --- a/libraries/Arduino_H7_Video/src/anx7625.h +++ b/libraries/Arduino_H7_Video/src/anx7625.h @@ -24,5 +24,6 @@ int anx7625_wait_hpd_event(uint8_t bus); int anx7625_get_cc_status(uint8_t bus, uint8_t *cc_status); int anx7625_read_system_status(uint8_t bus, uint8_t *sys_status); bool anx7625_is_power_provider(uint8_t bus); +int anx7625_get_hpd_event(uint8_t bus); #endif /* _ANX7625_H */ From e11f5c60c1894bbf3ee64498f46efd404bb9ec73 Mon Sep 17 00:00:00 2001 From: Damiano Mazzella Date: Mon, 17 Mar 2025 09:46:35 +0100 Subject: [PATCH 2/3] Update post review --- libraries/Arduino_H7_Video/docs/api.md | 10 ++++++++++ libraries/Arduino_H7_Video/src/Arduino_H7_Video.cpp | 4 ++-- libraries/Arduino_H7_Video/src/Arduino_H7_Video.h | 6 +++--- libraries/Arduino_H7_Video/src/H7DisplayShield.cpp | 2 +- libraries/Arduino_H7_Video/src/anx7625.cpp | 2 +- 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/libraries/Arduino_H7_Video/docs/api.md b/libraries/Arduino_H7_Video/docs/api.md index 356144b49..923393173 100644 --- a/libraries/Arduino_H7_Video/docs/api.md +++ b/libraries/Arduino_H7_Video/docs/api.md @@ -14,6 +14,7 @@ The main class for managing the video controller and the display. | `public ` [`Arduino_H7_Video`](#public-arduino_h7_videoint-width-int-height-h7displayshield-shield) | Construct a new Arduino_H7_Video object with the specified width, height, and display shield. | | `public int` [`begin`](#public-int-begin) | Initialize the video controller and display. | | `public void` [`end`](#public-void-end) | De-initialize the video controller and display. | +| `public bool` [`detect`](#public-bool-detect) | Checks if the display is connected. | | `public int` [`width`](#public-int-width) | Get the width of the display. | | `public int` [`height`](#public-int-height) | Get the height of the display. | | `public bool` [`isRotated`](#public-bool-isrotated) | Check if the display is rotated. | @@ -54,6 +55,15 @@ De-initialize the video controller and display. --- +### `public bool` [`detect`](#)`()` + +Checks if the display is connected. + +#### Returns +`bool`: True if the display is connected, False otherwis. + +--- + ### `public int` [`width`](#)`()` Get the width of the display. diff --git a/libraries/Arduino_H7_Video/src/Arduino_H7_Video.cpp b/libraries/Arduino_H7_Video/src/Arduino_H7_Video.cpp index 7c11200d3..0e1cc06af 100644 --- a/libraries/Arduino_H7_Video/src/Arduino_H7_Video.cpp +++ b/libraries/Arduino_H7_Video/src/Arduino_H7_Video.cpp @@ -179,9 +179,9 @@ bool Arduino_H7_Video::isRotated() { return _rotated; } -int Arduino_H7_Video::getStatus() +bool Arduino_H7_Video::getStatus() { - return _shield->getStatus(); + return (_shield->getStatus() > 0); } void Arduino_H7_Video::end() { diff --git a/libraries/Arduino_H7_Video/src/Arduino_H7_Video.h b/libraries/Arduino_H7_Video/src/Arduino_H7_Video.h index 12fd47cb7..8f40d37a0 100644 --- a/libraries/Arduino_H7_Video/src/Arduino_H7_Video.h +++ b/libraries/Arduino_H7_Video/src/Arduino_H7_Video.h @@ -107,11 +107,11 @@ class Arduino_H7_Video bool isRotated(); /** - * @brief Get the status of the display. + * @brief Checks if the display is connected. * - * @return int The Status of the display. + * @return true if the display is connected, false otherwise. */ - int getStatus(); + bool detect(); #ifdef HAS_ARDUINOGRAPHICS /** diff --git a/libraries/Arduino_H7_Video/src/H7DisplayShield.cpp b/libraries/Arduino_H7_Video/src/H7DisplayShield.cpp index 14904db70..b6010f3f0 100644 --- a/libraries/Arduino_H7_Video/src/H7DisplayShield.cpp +++ b/libraries/Arduino_H7_Video/src/H7DisplayShield.cpp @@ -19,7 +19,7 @@ int GigaDisplayShieldClass::getEdidMode(int h, int v) { } int GigaDisplayShieldClass::getStatus() { - return 1; + return 1; // TODO: Not implemented; } int USBCVideoClass::init(int edidmode) { diff --git a/libraries/Arduino_H7_Video/src/anx7625.cpp b/libraries/Arduino_H7_Video/src/anx7625.cpp index e69d5d832..3cfefce47 100644 --- a/libraries/Arduino_H7_Video/src/anx7625.cpp +++ b/libraries/Arduino_H7_Video/src/anx7625.cpp @@ -631,7 +631,7 @@ bool anx7625_is_power_provider(uint8_t bus) { } int anx7625_get_hpd_event(uint8_t bus) { - int ret = anx7625_hpd_change_detect(bus);; + int ret = anx7625_hpd_change_detect(bus); return ret; } From fbc07736a92abc28351c72149359e0266a32d714 Mon Sep 17 00:00:00 2001 From: Damiano Mazzella Date: Mon, 17 Mar 2025 09:48:30 +0100 Subject: [PATCH 3/3] Renamed getStatus sto detect --- libraries/Arduino_H7_Video/src/Arduino_H7_Video.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Arduino_H7_Video/src/Arduino_H7_Video.cpp b/libraries/Arduino_H7_Video/src/Arduino_H7_Video.cpp index 0e1cc06af..2bb02ebc9 100644 --- a/libraries/Arduino_H7_Video/src/Arduino_H7_Video.cpp +++ b/libraries/Arduino_H7_Video/src/Arduino_H7_Video.cpp @@ -179,7 +179,7 @@ bool Arduino_H7_Video::isRotated() { return _rotated; } -bool Arduino_H7_Video::getStatus() +bool Arduino_H7_Video::detect() { return (_shield->getStatus() > 0); }