From b390d098f2f5cf954e7a1286b4f3c7f92a725bcd Mon Sep 17 00:00:00 2001
From: schneider <schneider@blinkenlichts.net>
Date: Sat, 13 May 2023 02:16:40 +0200
Subject: [PATCH] espan: portexpander: detect rev6

---
 components/badge23/espan.c                       |  2 ++
 .../badge23/include/badge23/portexpander.h       |  1 +
 components/badge23/portexpander.c                | 16 ++++++++++++++++
 3 files changed, 19 insertions(+)

diff --git a/components/badge23/espan.c b/components/badge23/espan.c
index efc9e7bfb9..6ea9db68b7 100644
--- a/components/badge23/espan.c
+++ b/components/badge23/espan.c
@@ -54,6 +54,8 @@ void os_app_main(void)
     leds_init();
     captouch_init();
 
+    if(portexpander_rev6()) printf("REV6\n"); else printf("REV5\n");
+
     vTaskDelay(2000 / portTICK_PERIOD_MS);
     //set_global_vol_dB(0);
 
diff --git a/components/badge23/include/badge23/portexpander.h b/components/badge23/include/badge23/portexpander.h
index 105293ff46..8dfed44c75 100644
--- a/components/badge23/include/badge23/portexpander.h
+++ b/components/badge23/include/badge23/portexpander.h
@@ -5,4 +5,5 @@
 void portexpander_set_badgelink(const bool enabled);
 void portexpander_set_leds(const bool enabled);
 void portexpander_set_lcd_reset(const bool enabled);
+bool portexpander_rev6(void);
 void portexpander_init(void);
diff --git a/components/badge23/portexpander.c b/components/badge23/portexpander.c
index 6543230bf2..1a0fa45bdf 100644
--- a/components/badge23/portexpander.c
+++ b/components/badge23/portexpander.c
@@ -34,6 +34,17 @@ static esp_err_t pca9557_i2c_read(const uint8_t addr, const uint8_t reg, uint8_t
     return ret;
 }
 
+static bool pca9557_detect(const uint8_t addr)
+{
+    uint8_t data;
+    esp_err_t ret = pca9557_i2c_read(addr, 0, &data);
+    if(ret == ESP_OK) {
+        return true;
+    } else {
+        return false;
+    }
+}
+
 static uint8_t pca9557_get(const uint8_t addr)
 {
     uint8_t pins;
@@ -85,6 +96,11 @@ void portexpander_set_lcd_reset(const bool enabled)
     pca9557_set(PEX2, pex2_state);
 }
 
+bool portexpander_rev6(void)
+{
+    return pca9557_detect(PEX1);
+}
+
 void portexpander_init(void)
 {
     pca9557_set_polarities(PEX1, 0);
-- 
GitLab