diff --git a/Logiciel/Firmware_testeur/Drivers/rj45.c b/Logiciel/Firmware_testeur/Drivers/rj45.c
index 58160f7aa004e0e0ed0a115b7836440480cc346d..0a34234e09e03c6dd1b7eb6c89c53431b3e64af9 100644
--- a/Logiciel/Firmware_testeur/Drivers/rj45.c
+++ b/Logiciel/Firmware_testeur/Drivers/rj45.c
@@ -71,35 +71,35 @@ RJ45_Sortie_ecrireBroche_ptr ecrireBroche7, RJ45_Sortie_ecrireBroche_ptr ecrireB
         connecteur->ecrireBroche8_ = ecrireBroche8;
 }
 
-void RJ45_Sortie_ecrireBroche1      (RJ45_Sortie* connecteur) {
-        connecteur->ecrireBroche1_(connecteur);
+void RJ45_Sortie_ecrireBroche1      (RJ45_Sortie* connecteur, RJ45_Etat niveauLogique) {
+        connecteur->ecrireBroche1_(connecteur, niveauLogique);
 }
 
-void RJ45_Sortie_ecrireBroche2      (RJ45_Sortie* connecteur) {
-        connecteur->ecrireBroche2_(connecteur);
+void RJ45_Sortie_ecrireBroche2      (RJ45_Sortie* connecteur, RJ45_Etat niveauLogique) {
+        connecteur->ecrireBroche2_(connecteur, niveauLogique);
 }
 
-void RJ45_Sortie_ecrireBroche3      (RJ45_Sortie* connecteur) {
-        connecteur->ecrireBroche3_(connecteur);
+void RJ45_Sortie_ecrireBroche3      (RJ45_Sortie* connecteur, RJ45_Etat niveauLogique) {
+        connecteur->ecrireBroche3_(connecteur, niveauLogique);
 }
 
-void RJ45_Sortie_ecrireBroche4      (RJ45_Sortie* connecteur) {
-        connecteur->ecrireBroche4_(connecteur);
+void RJ45_Sortie_ecrireBroche4      (RJ45_Sortie* connecteur, RJ45_Etat niveauLogique) {
+        connecteur->ecrireBroche4_(connecteur, niveauLogique);
 }
 
-void RJ45_Sortie_ecrireBroche5      (RJ45_Sortie* connecteur) {
-        connecteur->ecrireBroche5_(connecteur);
+void RJ45_Sortie_ecrireBroche5      (RJ45_Sortie* connecteur, RJ45_Etat niveauLogique) {
+        connecteur->ecrireBroche5_(connecteur, niveauLogique);
 }
 
-void RJ45_Sortie_ecrireBroche6      (RJ45_Sortie* connecteur) {
-        connecteur->ecrireBroche6_(connecteur);
+void RJ45_Sortie_ecrireBroche6      (RJ45_Sortie* connecteur, RJ45_Etat niveauLogique) {
+        connecteur->ecrireBroche6_(connecteur, niveauLogique);
 }
 
-void RJ45_Sortie_ecrireBroche7      (RJ45_Sortie* connecteur) {
-        connecteur->ecrireBroche7_(connecteur);
+void RJ45_Sortie_ecrireBroche7      (RJ45_Sortie* connecteur, RJ45_Etat niveauLogique) {
+        connecteur->ecrireBroche7_(connecteur, niveauLogique);
 }
 
-void RJ45_Sortie_ecrireBroche8      (RJ45_Sortie* connecteur) {
-        connecteur->ecrireBroche8_(connecteur);
+void RJ45_Sortie_ecrireBroche8      (RJ45_Sortie* connecteur, RJ45_Etat niveauLogique) {
+        connecteur->ecrireBroche8_(connecteur, niveauLogique);
 }
 
diff --git a/Logiciel/Firmware_testeur/Drivers/rj45.h b/Logiciel/Firmware_testeur/Drivers/rj45.h
index 7d87a8e8f14bcb1393825f886787070013555fec..89340d9cf558c6536dd4b0decf23d86759a540a2 100644
--- a/Logiciel/Firmware_testeur/Drivers/rj45.h
+++ b/Logiciel/Firmware_testeur/Drivers/rj45.h
@@ -17,7 +17,7 @@ typedef enum {
 
 // Pointeurs de fonctions abstraites
 typedef RJ45_Etat   (*RJ45_Entree_lireBroche_ptr)   (void*);
-typedef void        (*RJ45_Sortie_ecrireBroche_ptr) (void*);
+typedef void        (*RJ45_Sortie_ecrireBroche_ptr) (void*, RJ45_Etat niveauLogique);
 
 // Structures
 typedef struct {
@@ -66,13 +66,13 @@ void RJ45_Sortie_init               (RJ45_Sortie* connecteur,
                 RJ45_Sortie_ecrireBroche_ptr ecrireBroche5, RJ45_Sortie_ecrireBroche_ptr ecrireBroche6,
                 RJ45_Sortie_ecrireBroche_ptr ecrireBroche7, RJ45_Sortie_ecrireBroche_ptr ecrireBroche8);
 
-void RJ45_Sortie_ecrireBroche1      (RJ45_Sortie* connecteur);
-void RJ45_Sortie_ecrireBroche2      (RJ45_Sortie* connecteur);
-void RJ45_Sortie_ecrireBroche3      (RJ45_Sortie* connecteur);
-void RJ45_Sortie_ecrireBroche4      (RJ45_Sortie* connecteur);
-void RJ45_Sortie_ecrireBroche5      (RJ45_Sortie* connecteur);
-void RJ45_Sortie_ecrireBroche6      (RJ45_Sortie* connecteur);
-void RJ45_Sortie_ecrireBroche7      (RJ45_Sortie* connecteur);
-void RJ45_Sortie_ecrireBroche8      (RJ45_Sortie* connecteur);
+void RJ45_Sortie_ecrireBroche1      (RJ45_Sortie* connecteur, RJ45_Etat niveauLogique);
+void RJ45_Sortie_ecrireBroche2      (RJ45_Sortie* connecteur, RJ45_Etat niveauLogique);
+void RJ45_Sortie_ecrireBroche3      (RJ45_Sortie* connecteur, RJ45_Etat niveauLogique);
+void RJ45_Sortie_ecrireBroche4      (RJ45_Sortie* connecteur, RJ45_Etat niveauLogique);
+void RJ45_Sortie_ecrireBroche5      (RJ45_Sortie* connecteur, RJ45_Etat niveauLogique);
+void RJ45_Sortie_ecrireBroche6      (RJ45_Sortie* connecteur, RJ45_Etat niveauLogique);
+void RJ45_Sortie_ecrireBroche7      (RJ45_Sortie* connecteur, RJ45_Etat niveauLogique);
+void RJ45_Sortie_ecrireBroche8      (RJ45_Sortie* connecteur, RJ45_Etat niveauLogique);
 
 #endif /* RJ45_H_ */
diff --git a/Logiciel/Firmware_testeur/Drivers/rj45_port_stm32f071v8.c b/Logiciel/Firmware_testeur/Drivers/rj45_port_stm32f071v8.c
index 950931b37df7fca84bbf63178d9ca8a373a3c132..48e9e31d6cfdf55c22638fd8c14e598ea9179582 100644
--- a/Logiciel/Firmware_testeur/Drivers/rj45_port_stm32f071v8.c
+++ b/Logiciel/Firmware_testeur/Drivers/rj45_port_stm32f071v8.c
@@ -6,6 +6,31 @@
  */
 
 #include "rj45_port_stm32f071v8.h"
+#include "main.h"
+
+// Fonctions privées
+RJ45_Etat convertirGPIO_PinState       (GPIO_PinState etatBroche) {
+        switch (etatBroche) {
+                case GPIO_PIN_SET:
+                        return RJ45_HAUT;
+                case GPIO_PIN_RESET:
+                        return RJ45_BAS;
+                default:
+                        return RJ45_ERREUR;
+        }
+}
+
+GPIO_PinState convertirRJ45_Etat       (RJ45_Etat niveauLogique) {
+        switch (niveauLogique) {
+                case RJ45_HAUT:
+                        return GPIO_PIN_SET;
+                case RJ45_BAS:
+                        return GPIO_PIN_RESET;
+                default:
+                        return GPIO_PIN_RESET;
+        }
+}
+
 
 // Fonctions publiques
 void RJ45_Entree_Port_init                  (RJ45_Entree_Port* connecteur) {
@@ -18,27 +43,36 @@ void RJ45_Entree_Port_init                  (RJ45_Entree_Port* connecteur) {
                         (void*) RJ45_Entree_Port_lireBroche6,
                         (void*) RJ45_Entree_Port_lireBroche7,
                         (void*) RJ45_Entree_Port_lireBroche8);
-        connecteur->base_ = base;
 }
 
 RJ45_Etat RJ45_Entree_Port_lireBroche1      (RJ45_Entree_Port* connecteur) {
-        switch ( HAL_GPIO_ReadPin(ETHA_1_GPIO_Port, ETHA_1_Pin) ) {
-        case GPIO_PIN_SET:
-                return RJ45_HAUT;
-        case GPIO_PIN_RESET:
-                return RJ45_BAS;
-        default:
-                return RJ45_ERREUR;
-        }
+        return convertirGPIO_PinState( HAL_GPIO_ReadPin(ETHB_1_GPIO_Port, ETHB_1_Pin) );
 }
 
-RJ45_Etat RJ45_Entree_Port_lireBroche2      (RJ45_Entree_Port* connecteur);
-RJ45_Etat RJ45_Entree_Port_lireBroche3      (RJ45_Entree_Port* connecteur);
-RJ45_Etat RJ45_Entree_Port_lireBroche4      (RJ45_Entree_Port* connecteur);
-RJ45_Etat RJ45_Entree_Port_lireBroche5      (RJ45_Entree_Port* connecteur);
-RJ45_Etat RJ45_Entree_Port_lireBroche6      (RJ45_Entree_Port* connecteur);
-RJ45_Etat RJ45_Entree_Port_lireBroche7      (RJ45_Entree_Port* connecteur);
-RJ45_Etat RJ45_Entree_Port_lireBroche8      (RJ45_Entree_Port* connecteur);
+RJ45_Etat RJ45_Entree_Port_lireBroche2      (RJ45_Entree_Port* connecteur) {
+        return convertirGPIO_PinState( HAL_GPIO_ReadPin(ETHB_2_GPIO_Port, ETHB_2_Pin) );
+}
+RJ45_Etat RJ45_Entree_Port_lireBroche3      (RJ45_Entree_Port* connecteur) {
+        return convertirGPIO_PinState( HAL_GPIO_ReadPin(ETHB_3_GPIO_Port, ETHB_3_Pin) );
+}
+
+RJ45_Etat RJ45_Entree_Port_lireBroche4      (RJ45_Entree_Port* connecteur) {
+        return convertirGPIO_PinState( HAL_GPIO_ReadPin(ETHB_4_GPIO_Port, ETHB_4_Pin) );
+}
+RJ45_Etat RJ45_Entree_Port_lireBroche5      (RJ45_Entree_Port* connecteur) {
+        return convertirGPIO_PinState( HAL_GPIO_ReadPin(ETHB_5_GPIO_Port, ETHB_5_Pin) );
+}
+
+RJ45_Etat RJ45_Entree_Port_lireBroche6      (RJ45_Entree_Port* connecteur) {
+        return convertirGPIO_PinState( HAL_GPIO_ReadPin(ETHB_6_GPIO_Port, ETHB_6_Pin) );
+}
+RJ45_Etat RJ45_Entree_Port_lireBroche7      (RJ45_Entree_Port* connecteur) {
+        return convertirGPIO_PinState( HAL_GPIO_ReadPin(ETHB_7_GPIO_Port, ETHB_7_Pin) );
+}
+
+RJ45_Etat RJ45_Entree_Port_lireBroche8      (RJ45_Entree_Port* connecteur) {
+        return convertirGPIO_PinState( HAL_GPIO_ReadPin(ETHB_8_GPIO_Port, ETHB_8_Pin) );
+}
 
 void RJ45_Sortie_Port_init                  (RJ45_Sortie_Port* connecteur) {
         RJ45_Sortie base[1];
@@ -50,14 +84,36 @@ void RJ45_Sortie_Port_init                  (RJ45_Sortie_Port* connecteur) {
                         (void*) RJ45_Sortie_Port_ecrireBroche6,
                         (void*) RJ45_Sortie_Port_ecrireBroche7,
                         (void*) RJ45_Sortie_Port_ecrireBroche8);
-        connecteur->base_ = base;
 }
 
-void RJ45_Sortie_Port_ecrireBroche1         (RJ45_Sortie_Port* connecteur);
-void RJ45_Sortie_Port_ecrireBroche2         (RJ45_Sortie_Port* connecteur);
-void RJ45_Sortie_Port_ecrireBroche3         (RJ45_Sortie_Port* connecteur);
-void RJ45_Sortie_Port_ecrireBroche4         (RJ45_Sortie_Port* connecteur);
-void RJ45_Sortie_Port_ecrireBroche5         (RJ45_Sortie_Port* connecteur);
-void RJ45_Sortie_Port_ecrireBroche6         (RJ45_Sortie_Port* connecteur);
-void RJ45_Sortie_Port_ecrireBroche7         (RJ45_Sortie_Port* connecteur);
-void RJ45_Sortie_Port_ecrireBroche8         (RJ45_Sortie_Port* connecteur);
+void RJ45_Sortie_Port_ecrireBroche1         (RJ45_Sortie_Port* connecteur, RJ45_Etat niveauLogique) {
+        HAL_GPIO_WritePin(ETHA_1_GPIO_Port, ETHA_1_Pin, convertirRJ45_Etat(niveauLogique));
+}
+
+void RJ45_Sortie_Port_ecrireBroche2         (RJ45_Sortie_Port* connecteur, RJ45_Etat niveauLogique) {
+        HAL_GPIO_WritePin(ETHA_2_GPIO_Port, ETHA_2_Pin, convertirRJ45_Etat(niveauLogique));
+}
+
+void RJ45_Sortie_Port_ecrireBroche3         (RJ45_Sortie_Port* connecteur, RJ45_Etat niveauLogique) {
+        HAL_GPIO_WritePin(ETHA_3_GPIO_Port, ETHA_3_Pin, convertirRJ45_Etat(niveauLogique));
+}
+
+void RJ45_Sortie_Port_ecrireBroche4         (RJ45_Sortie_Port* connecteur, RJ45_Etat niveauLogique) {
+        HAL_GPIO_WritePin(ETHA_4_GPIO_Port, ETHA_4_Pin, convertirRJ45_Etat(niveauLogique));
+}
+
+void RJ45_Sortie_Port_ecrireBroche5         (RJ45_Sortie_Port* connecteur, RJ45_Etat niveauLogique) {
+        HAL_GPIO_WritePin(ETHA_5_GPIO_Port, ETHA_5_Pin, convertirRJ45_Etat(niveauLogique));
+}
+
+void RJ45_Sortie_Port_ecrireBroche6         (RJ45_Sortie_Port* connecteur, RJ45_Etat niveauLogique) {
+        HAL_GPIO_WritePin(ETHA_6_GPIO_Port, ETHA_6_Pin, convertirRJ45_Etat(niveauLogique));
+}
+
+void RJ45_Sortie_Port_ecrireBroche7         (RJ45_Sortie_Port* connecteur, RJ45_Etat niveauLogique) {
+        HAL_GPIO_WritePin(ETHA_7_GPIO_Port, ETHA_7_Pin, convertirRJ45_Etat(niveauLogique));
+}
+
+void RJ45_Sortie_Port_ecrireBroche8         (RJ45_Sortie_Port* connecteur, RJ45_Etat niveauLogique) {
+        HAL_GPIO_WritePin(ETHA_8_GPIO_Port, ETHA_8_Pin, convertirRJ45_Etat(niveauLogique));
+}
diff --git a/Logiciel/Firmware_testeur/Drivers/rj45_port_stm32f071v8.h b/Logiciel/Firmware_testeur/Drivers/rj45_port_stm32f071v8.h
index 78436d37554f8f55463c99ad481841e922bf5496..3be9a2202dad0de51d3f45711e75a3ec97117ccf 100644
--- a/Logiciel/Firmware_testeur/Drivers/rj45_port_stm32f071v8.h
+++ b/Logiciel/Firmware_testeur/Drivers/rj45_port_stm32f071v8.h
@@ -9,7 +9,6 @@
 #define RJ45_PORT_STM32F071V8_H_
 
 #include "rj45.h"
-#include "main.h"
 
 // Structures
 typedef struct {
@@ -34,13 +33,13 @@ RJ45_Etat RJ45_Entree_Port_lireBroche8      (RJ45_Entree_Port* connecteur);
 
 void RJ45_Sortie_Port_init                  (RJ45_Sortie_Port* connecteur);
 
-void RJ45_Sortie_Port_ecrireBroche1         (RJ45_Sortie_Port* connecteur);
-void RJ45_Sortie_Port_ecrireBroche2         (RJ45_Sortie_Port* connecteur);
-void RJ45_Sortie_Port_ecrireBroche3         (RJ45_Sortie_Port* connecteur);
-void RJ45_Sortie_Port_ecrireBroche4         (RJ45_Sortie_Port* connecteur);
-void RJ45_Sortie_Port_ecrireBroche5         (RJ45_Sortie_Port* connecteur);
-void RJ45_Sortie_Port_ecrireBroche6         (RJ45_Sortie_Port* connecteur);
-void RJ45_Sortie_Port_ecrireBroche7         (RJ45_Sortie_Port* connecteur);
-void RJ45_Sortie_Port_ecrireBroche8         (RJ45_Sortie_Port* connecteur);
+void RJ45_Sortie_Port_ecrireBroche1         (RJ45_Sortie_Port* connecteur, RJ45_Etat niveauLogique);
+void RJ45_Sortie_Port_ecrireBroche2         (RJ45_Sortie_Port* connecteur, RJ45_Etat niveauLogique);
+void RJ45_Sortie_Port_ecrireBroche3         (RJ45_Sortie_Port* connecteur, RJ45_Etat niveauLogique);
+void RJ45_Sortie_Port_ecrireBroche4         (RJ45_Sortie_Port* connecteur, RJ45_Etat niveauLogique);
+void RJ45_Sortie_Port_ecrireBroche5         (RJ45_Sortie_Port* connecteur, RJ45_Etat niveauLogique);
+void RJ45_Sortie_Port_ecrireBroche6         (RJ45_Sortie_Port* connecteur, RJ45_Etat niveauLogique);
+void RJ45_Sortie_Port_ecrireBroche7         (RJ45_Sortie_Port* connecteur, RJ45_Etat niveauLogique);
+void RJ45_Sortie_Port_ecrireBroche8         (RJ45_Sortie_Port* connecteur, RJ45_Etat niveauLogique);
 
 #endif /* RJ45_PORT_STM32F071V8_H_ */
diff --git a/Logiciel/Firmware_testeur/Drivers/testeur.c b/Logiciel/Firmware_testeur/Drivers/testeur.c
index de0995d87c836c56a98396e414e46ec456d84370..268c432c266370b8a023c3d5231ff6d72180da23 100644
--- a/Logiciel/Firmware_testeur/Drivers/testeur.c
+++ b/Logiciel/Firmware_testeur/Drivers/testeur.c
@@ -6,3 +6,18 @@
  */
 
 #include "testeur.h"
+
+// Fonctions publiques
+void Testeur_init           (Testeur* testeur) {
+        RJ45_Sortie_Port connecteurA;
+        RJ45_Entree_Port connecteurB;
+        RJ45_Sortie_Port_init(&connecteurA);
+        RJ45_Entree_Port_init(&connecteurB);
+
+        testeur->ethernetA_ = &connecteurA;
+        testeur->ethernetB_ = &connecteurB;
+}
+
+void Testeur_testerCable    (Testeur* testeur) {
+        ;
+}
diff --git a/Logiciel/Firmware_testeur/Drivers/testeur.h b/Logiciel/Firmware_testeur/Drivers/testeur.h
index 38f0799a415bb7765bea40a582da80903d42262f..6d8f88a6af98fa04f223877d5e98defa2cd31a0f 100644
--- a/Logiciel/Firmware_testeur/Drivers/testeur.h
+++ b/Logiciel/Firmware_testeur/Drivers/testeur.h
@@ -14,8 +14,8 @@
 
 // Structure
 typedef struct {
-        RJ45_Sortie ethernetA_;
-        RJ45_Entree ethernetB_;
+        RJ45_Sortie_Port* ethernetA_;
+        RJ45_Entree_Port* ethernetB_;
 
 //        TODO: Implémenter les classes SeptSegments et Alim2V
 //        SeptSegments ecrans_[8];
@@ -23,9 +23,7 @@ typedef struct {
 } Testeur;
 
 // Fonctions publiques
-void Testeur_init           (Testeur* testeur, RJ45_Sortie* ethernetA,
-                RJ45_Entree* ethernetB/*, SeptSegments ecrans_,
-                Alim2V alimentation2V*/);
+void Testeur_init           (Testeur* testeur);
 void Testeur_testerCable    (Testeur* testeur);
 
 #endif /* TESTEUR_H_ */
diff --git a/Logiciel/Firmware_testeur/Src/main.c b/Logiciel/Firmware_testeur/Src/main.c
index 05542489c1ee71a7442ce758a3bb88750815ed7e..676f8c6bfd46c67537f7dc53ddb57d55c1e9f858 100644
--- a/Logiciel/Firmware_testeur/Src/main.c
+++ b/Logiciel/Firmware_testeur/Src/main.c
@@ -88,7 +88,8 @@ int main(void)
   /* Initialize all configured peripherals */
   MX_GPIO_Init();
   /* USER CODE BEGIN 2 */
-
+  Testeur testeur;
+  Testeur_init(&testeur);
   /* USER CODE END 2 */
 
   /* Infinite loop */