From a9966ac5ba17a9b20fa56ad3331dc506089bfcd7 Mon Sep 17 00:00:00 2001
From: su530201 <olivier.kaufmann@umons.ac.be>
Date: Wed, 30 Aug 2023 20:27:18 +0200
Subject: [PATCH] Updates a test in dev for 4 and 2 muxes 2024

---
 configs/config_mb_2023_4_mux_2024.py            |   8 ++++----
 dev/test_2_mux_2024.py                          |   4 ++--
 dev/test_4_mux_2024.py                          |   4 ++--
 .../mux_2024/mux_2024_address_jumpers.png       | Bin 0 -> 12544 bytes
 4 files changed, 8 insertions(+), 8 deletions(-)
 create mode 100644 doc/source/Ohmpi_V2024/mux_2024/mux_2024_address_jumpers.png

diff --git a/configs/config_mb_2023_4_mux_2024.py b/configs/config_mb_2023_4_mux_2024.py
index 6eb0fb8f..66dbfda3 100644
--- a/configs/config_mb_2023_4_mux_2024.py
+++ b/configs/config_mb_2023_4_mux_2024.py
@@ -42,7 +42,7 @@ HARDWARE_CONFIG = {
                           'mcp_0': '0x22',  # NOTE: Check pos of jumper on MUX board (refer to doc)
                           'mcp_1': '0x23',  # NOTE: Check pos of jumper on MUX board (refer to doc)
                           'roles': {'A': 'X', 'B': 'Y', 'M': 'XX', 'N': 'YY'},
-                          'cabling': {(i, j): ('mux_02', i) for j in ['A', 'B', 'M', 'N'] for i in range(1, 9)},  # TODO: avoid redundency of mux_id
+                          'cabling': {(i+8, j): ('mux_02', i) for j in ['A', 'B', 'M', 'N'] for i in range(1, 9)},  # TODO: avoid redundency of mux_id
                           'voltage_max': 12.},
                      'mux_05':
                          {'model': 'mux_2024_rev_0_0',  # 'ohmpi_i2c_mux64_v1.01',
@@ -51,7 +51,7 @@ HARDWARE_CONFIG = {
                           'mcp_0': '0x26',  # NOTE: Check pos of jumper on MUX board (refer to doc)
                           'mcp_1': '0x27',  # NOTE: Check pos of jumper on MUX board (refer to doc)
                           'roles': {'A': 'X', 'B': 'Y', 'M': 'XX', 'N': 'YY'},
-                          'cabling': {(i+8, j): ('mux_05', i) for j in ['A', 'B', 'M', 'N'] for i in range(1, 9)},
+                          'cabling': {(i+16, j): ('mux_05', i) for j in ['A', 'B', 'M', 'N'] for i in range(1, 9)},
                           'voltage_max': 12.},
                      'mux_04':
                          {'model': 'mux_2024_rev_0_0',  # 'ohmpi_i2c_mux64_v1.01',
@@ -60,7 +60,7 @@ HARDWARE_CONFIG = {
                           'mcp_0': '0x24',  # NOTE: Check pos of jumper on MUX board (refer to doc)
                           'mcp_1': '0x25',  # NOTE: Check pos of jumper on MUX board (refer to doc)
                           'roles': {'A': 'X', 'B': 'Y', 'M': 'XX', 'N': 'YY'},
-                          'cabling': {(i+16, j): ('mux_04', i) for j in ['A', 'B', 'M', 'N'] for i in range(1, 9)},
+                          'cabling': {(i+24, j): ('mux_04', i) for j in ['A', 'B', 'M', 'N'] for i in range(1, 9)},
                           'voltage_max': 12.},
                      'mux_03':
                          {'model': 'mux_2024_rev_0_0',  # 'ohmpi_i2c_mux64_v1.01',
@@ -69,7 +69,7 @@ HARDWARE_CONFIG = {
                           'mcp_0': '0x26',  # NOTE: Check pos of jumper on MUX board (refer to doc)
                           'mcp_1': '0x27',  # NOTE: Check pos of jumper on MUX board (refer to doc)
                           'roles': {'A': 'X', 'B': 'Y', 'M': 'XX', 'N': 'YY'},
-                          'cabling': {(i+24, j): ('mux_03', i) for j in ['A', 'B', 'M', 'N'] for i in range(1, 9)},
+                          'cabling': {(i+32, j): ('mux_03', i) for j in ['A', 'B', 'M', 'N'] for i in range(1, 9)},
                           'voltage_max': 12.}
                      },
              'default': {'voltage_max': 100.,
diff --git a/dev/test_2_mux_2024.py b/dev/test_2_mux_2024.py
index 48e3f289..71472106 100644
--- a/dev/test_2_mux_2024.py
+++ b/dev/test_2_mux_2024.py
@@ -8,8 +8,8 @@ from ohmpi.hardware_components import raspberry_pi_i2c as ctl_module
 # from ohmpi.config import HARDWARE_CONFIG
 
 stand_alone_mux = False
-part_of_hardware_system = False
-within_ohmpi = True
+part_of_hardware_system = True
+within_ohmpi = False
 # Stand alone mux
 if stand_alone_mux:
     MUX_CONFIG['ctl'] = ctl_module.Ctl()
diff --git a/dev/test_4_mux_2024.py b/dev/test_4_mux_2024.py
index 75e6e049..39489871 100644
--- a/dev/test_4_mux_2024.py
+++ b/dev/test_4_mux_2024.py
@@ -7,8 +7,8 @@ from ohmpi.hardware_components.mux_2024_rev_0_0 import Mux, MUX_CONFIG
 from ohmpi.hardware_components import raspberry_pi_i2c as ctl_module
 from ohmpi.config import HARDWARE_CONFIG
 
-stand_alone_mux = True
-part_of_hardware_system = False
+stand_alone_mux = False
+part_of_hardware_system = True
 within_ohmpi = False
 
 
diff --git a/doc/source/Ohmpi_V2024/mux_2024/mux_2024_address_jumpers.png b/doc/source/Ohmpi_V2024/mux_2024/mux_2024_address_jumpers.png
new file mode 100644
index 0000000000000000000000000000000000000000..820f5db06849b570772c4409dc138a0bc50c63dd
GIT binary patch
literal 12544
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
WUKXu>R)n^UAPO=n(j}6H&;B3nFG)cF

literal 0
HcmV?d00001

-- 
GitLab