commit 340558f2d55739dfca1f3d11fcb390cc392057d8
Author: martin.toutant <martin.toutant@inrae.fr>
Date:   Mon Jan 9 15:31:09 2023 +0100

    traductions anglais --> français

diff --git a/TestXamConnections/TestXamConnections.Android/Connection/BluetoothConnectionService.cs b/TestXamConnections/TestXamConnections.Android/Connection/BluetoothConnectionService.cs
index 7dc92da..147a89c 100644
--- a/TestXamConnections/TestXamConnections.Android/Connection/BluetoothConnectionService.cs
+++ b/TestXamConnections/TestXamConnections.Android/Connection/BluetoothConnectionService.cs
@@ -15,20 +15,20 @@ namespace TestXamConnections.Droid.Connection
     /* Classe permettant d'établir une connection Bluetooth
      * Avec socket RFCOMM connecté au SPP
      */
-    public class BluetoothConnectionService : IConnectionService
+    public class BluetoothConnexionService : IConnexionService
     {
         private readonly BluetoothAdapter bluetoothAdapter;
         private Thread listeningThread;
         private BluetoothSocket socket;
         private readonly string sppUUID = "00001101-0000-1000-8000-00805f9b34fb";
 
-        public BluetoothConnectionService()
+        public BluetoothConnexionService()
         {
             bluetoothAdapter = BluetoothAdapter.DefaultAdapter;
         }
 
         // Pour le bluetooth, le paramètre de connection est l'addresse MAC
-        public async Task<bool> Connect(Dictionary<string, string> param)
+        public async Task<bool> Connexion(Dictionary<string, string> param)
         {
             try
             {
@@ -39,9 +39,9 @@ namespace TestXamConnections.Droid.Connection
                     _ = bluetoothAdapter.CancelDiscovery();
                 }
 
-                if (param.ContainsKey(ConnectionConstants.MAC_ADDR_KEY))
+                if (param.ContainsKey(ConnexionConstantes.MAC_ADDR_KEY))
                 {
-                    BluetoothDevice droidBtDevice = bluetoothAdapter.GetRemoteDevice(param[ConnectionConstants.MAC_ADDR_KEY]);
+                    BluetoothDevice droidBtDevice = bluetoothAdapter.GetRemoteDevice(param[ConnexionConstantes.MAC_ADDR_KEY]);
                     if (droidBtDevice != null)
                     {
                         // Si le socket est occupé pour une autre connexion
@@ -80,7 +80,7 @@ namespace TestXamConnections.Droid.Connection
             return true;
         }
 
-        public EventHandler<byte[]> DataReceivedEvent { get; set; }
+        public EventHandler<byte[]> DonneesRecuesEvent { get; set; }
 
         // Fonction d'écoute pour le Thread d'écoute
         private async Task ListeningAsync()
@@ -94,7 +94,7 @@ namespace TestXamConnections.Droid.Connection
                     // Resize the byte array 
                     byte[] filledBuffer = buffer.Take(byteAvailable).ToArray();
                     // Trigger DataReceivedEvent
-                    Application.SynchronizationContext.Post(_ => { DataReceivedEvent.Invoke(this, filledBuffer); }, null);
+                    Application.SynchronizationContext.Post(_ => { DonneesRecuesEvent.Invoke(this, filledBuffer); }, null);
                 }
             }
             catch (IOException ex)
@@ -118,7 +118,7 @@ namespace TestXamConnections.Droid.Connection
             return Task.FromResult(true);
         }
 
-        public Task<bool> SendCommand(byte[] command)
+        public Task<bool> EnvoiCommande(byte[] command)
         {
 
             if (socket.IsConnected == false)
diff --git a/TestXamConnections/TestXamConnections.Android/Connection/InternConnectionService.cs b/TestXamConnections/TestXamConnections.Android/Connection/InternConnectionService.cs
index a50fd5c..5b30cc0 100644
--- a/TestXamConnections/TestXamConnections.Android/Connection/InternConnectionService.cs
+++ b/TestXamConnections/TestXamConnections.Android/Connection/InternConnectionService.cs
@@ -14,9 +14,9 @@ namespace TestXamConnections.Droid.Connection
      * Pré-installée sur l'appareil
      * Basée sur filtrage d'intent sur BroadcastReceiver
      */
-    public class InternConnectionService : IConnectionService
+    public class InternConnexionService : IConnexionService
     {
-        public EventHandler<byte[]> DataReceivedEvent { get; set; }
+        public EventHandler<byte[]> DonneesRecuesEvent { get; set; }
 
         private readonly IntentReceiver intentReceiver;
         private readonly Context appContext;
@@ -24,13 +24,13 @@ namespace TestXamConnections.Droid.Connection
         /* La fonction connect dans le cas du connexion en interne
         *  Est en fait, la configuration de l'IntentReceiver
         */
-        public Task<bool> Connect(Dictionary<string, string> param)
+        public Task<bool> Connexion(Dictionary<string, string> param)
         {
-            if (param.ContainsKey(ConnectionConstants.RECEIVABLE_INTENTS_KEY))
+            if (param.ContainsKey(ConnexionConstantes.RECEIVABLE_INTENTS_KEY))
             {
                 // Récupérations des intents recevable sous forme de csv
                 List<string> intents = new List<string>();
-                intents.AddRange(param[ConnectionConstants.RECEIVABLE_INTENTS_KEY].Split(","));
+                intents.AddRange(param[ConnexionConstantes.RECEIVABLE_INTENTS_KEY].Split(","));
                 // Ajout des intents recevable au IntentFilter
                 IntentFilter intentFilter = new IntentFilter();
                 intents.ForEach(intent => intentFilter.AddAction(intent));
@@ -44,7 +44,7 @@ namespace TestXamConnections.Droid.Connection
             return Task.FromResult(true);
         }
 
-        public Task<bool> SendCommand(byte[] commandBytes)
+        public Task<bool> EnvoiCommande(byte[] commandBytes)
         {
             string command = Encoding.ASCII.GetString(commandBytes);
             Intent launchIntent = appContext.PackageManager.GetLaunchIntentForPackage(command);
@@ -56,7 +56,7 @@ namespace TestXamConnections.Droid.Connection
             return Task.FromResult(false);
         }
 
-        public InternConnectionService()
+        public InternConnexionService()
         {
             intentReceiver = new IntentReceiver();
             intentReceiver.OnIntentReceived += IntentReceived;
@@ -68,13 +68,13 @@ namespace TestXamConnections.Droid.Connection
         {
             switch (recIntent.Action)
             {
-                case AgridentConstants.ACTION_AGRIDENT_SUCCESS:
-                    string readData = recIntent.GetStringExtra(AgridentConstants.KEY_BARCODE_DATA);
-                    DataReceivedEvent.Invoke(this, Encoding.ASCII.GetBytes(readData));
+                case AgridentConstantes.ACTION_AGRIDENT_SUCCESS:
+                    string readData = recIntent.GetStringExtra(AgridentConstantes.KEY_BARCODE_DATA);
+                    DonneesRecuesEvent.Invoke(this, Encoding.ASCII.GetBytes(readData));
                     break;
 
-                case AgridentConstants.ACTION_AGRIDENT_ERROR:
-                    DataReceivedEvent.Invoke(this, Encoding.ASCII.GetBytes(AgridentConstants.ACTION_AGRIDENT_ERROR));
+                case AgridentConstantes.ACTION_AGRIDENT_ERROR:
+                    DonneesRecuesEvent.Invoke(this, Encoding.ASCII.GetBytes(AgridentConstantes.ACTION_AGRIDENT_ERROR));
                     break;
 
                 default:
diff --git a/TestXamConnections/TestXamConnections.Android/Connection/WifiConnectionService.cs b/TestXamConnections/TestXamConnections.Android/Connection/WifiConnectionService.cs
index a799c6d..8db9fb3 100644
--- a/TestXamConnections/TestXamConnections.Android/Connection/WifiConnectionService.cs
+++ b/TestXamConnections/TestXamConnections.Android/Connection/WifiConnectionService.cs
@@ -8,16 +8,16 @@ namespace TestXamConnections.Droid.Connection
     /* Classe permettant d'établir une connection Wifi
      * NON IMPLEMENTEE
      */
-    public class WifiConnectionService : IConnectionService
+    public class WifiConnexionService : IConnexionService
     {
-        public EventHandler<byte[]> DataReceivedEvent { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
+        public EventHandler<byte[]> DonneesRecuesEvent { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
 
-        public Task<bool> Connect(Dictionary<string, string> connectParam)
+        public Task<bool> Connexion(Dictionary<string, string> connectParam)
         {
             throw new NotImplementedException();
         }
 
-        public Task<bool> SendCommand(byte[] hexValues)
+        public Task<bool> EnvoiCommande(byte[] hexValues)
         {
             throw new NotImplementedException();
         }
diff --git a/TestXamConnections/TestXamConnections.Android/Helper/ConnectionServiceProvider.cs b/TestXamConnections/TestXamConnections.Android/Helper/ConnectionServiceProvider.cs
deleted file mode 100644
index 5c45c0c..0000000
--- a/TestXamConnections/TestXamConnections.Android/Helper/ConnectionServiceProvider.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-﻿using TestXamConnections.Connection;
-using TestXamConnections.Droid.Connection;
-
-namespace TestBLE.Droid.Helper
-{
-    public class ConnectionServiceProvider : IConnectionServiceProvider
-    {
-        public IConnectionService GetConnectionServiceInstance(ConnectionType ct)
-        {
-            IConnectionService instance = null;
-            switch (ct)
-            {
-                case ConnectionType.Bluetooth:
-                    // instance = BluetoothConnectionService.Instance;
-                    instance = new BluetoothConnectionService();
-                    break;
-
-                case ConnectionType.Intern:
-                    instance = new InternConnectionService();
-                    break;
-
-                case ConnectionType.Wifi:
-                    instance = new WifiConnectionService();
-                    break;
-
-                default:
-                    break;
-            }
-
-            return instance;
-        }
-    }
-}
\ No newline at end of file
diff --git a/TestXamConnections/TestXamConnections.Android/Helper/ConnexionServiceFournisseur.cs b/TestXamConnections/TestXamConnections.Android/Helper/ConnexionServiceFournisseur.cs
new file mode 100644
index 0000000..e3d82bb
--- /dev/null
+++ b/TestXamConnections/TestXamConnections.Android/Helper/ConnexionServiceFournisseur.cs
@@ -0,0 +1,33 @@
+﻿using TestXamConnections.Connection;
+using TestXamConnections.Droid.Connection;
+
+namespace TestBLE.Droid.Helper
+{
+    public class ConnexionServiceFournisseur : IConnexionServiceFournisseur
+    {
+        public IConnexionService GetConnectionServiceInstance(ConnexionType ct)
+        {
+            IConnexionService instance = null;
+            switch (ct)
+            {
+                case ConnexionType.Bluetooth:
+                    // instance = BluetoothConnectionService.Instance;
+                    instance = new BluetoothConnexionService();
+                    break;
+
+                case ConnexionType.Intern:
+                    instance = new InternConnexionService();
+                    break;
+
+                case ConnexionType.Wifi:
+                    instance = new WifiConnexionService();
+                    break;
+
+                default:
+                    break;
+            }
+
+            return instance;
+        }
+    }
+}
\ No newline at end of file
diff --git a/TestXamConnections/TestXamConnections.Android/MainActivity.cs b/TestXamConnections/TestXamConnections.Android/MainActivity.cs
index 2f47b97..06c7189 100644
--- a/TestXamConnections/TestXamConnections.Android/MainActivity.cs
+++ b/TestXamConnections/TestXamConnections.Android/MainActivity.cs
@@ -20,7 +20,7 @@ namespace TestXamConnections.Droid
 
             Xamarin.Essentials.Platform.Init(this, savedInstanceState);
             Forms.Init(this, savedInstanceState);
-            DependencyService.RegisterSingleton<IConnectionServiceProvider>(new ConnectionServiceProvider());
+            DependencyService.RegisterSingleton<IConnexionServiceFournisseur>(new ConnexionServiceFournisseur());
             DependencyService.RegisterSingleton<IBluetoothService>(new BluetoothService());
             LoadApplication(new App());
         }
diff --git a/TestXamConnections/TestXamConnections.Android/Receivers/BluetoothReceiver.cs b/TestXamConnections/TestXamConnections.Android/Receivers/BluetoothReceiver.cs
index d715171..af4ea10 100644
--- a/TestXamConnections/TestXamConnections.Android/Receivers/BluetoothReceiver.cs
+++ b/TestXamConnections/TestXamConnections.Android/Receivers/BluetoothReceiver.cs
@@ -17,10 +17,10 @@ namespace TestXamConnections.Droid.Receivers
                 BluetoothDevice foundDevice = intent.GetParcelableExtra(BluetoothDevice.ExtraDevice) as BluetoothDevice;
                 if (foundDevice != null)
                 {
-                    var btDevice = new DeviceInfo
+                    var btDevice = new InfoAppareil
                     {
-                        MACAddress = foundDevice.Address,
-                        Name = foundDevice.Name
+                        AdresseMAC = foundDevice.Address,
+                        Nom = foundDevice.Name
                     };
                 }
                 OnBluetoothDeviceDiscovered.Invoke(this, foundDevice);
diff --git a/TestXamConnections/TestXamConnections.Android/Services/BluetoothService.cs b/TestXamConnections/TestXamConnections.Android/Services/BluetoothService.cs
index 97222e3..683f10b 100644
--- a/TestXamConnections/TestXamConnections.Android/Services/BluetoothService.cs
+++ b/TestXamConnections/TestXamConnections.Android/Services/BluetoothService.cs
@@ -10,22 +10,22 @@ namespace TestXamConnections.Droid.Services
     {
         private readonly BluetoothAdapter bluetoothAdapter;
 
-        public ObservableCollection<DeviceInfo> FoundDevices = new ObservableCollection<DeviceInfo>();
+        public ObservableCollection<InfoAppareil> FoundDevices = new ObservableCollection<InfoAppareil>();
         public BluetoothService()
         {
-            FoundDevices = new ObservableCollection<DeviceInfo>();
+            FoundDevices = new ObservableCollection<InfoAppareil>();
             bluetoothAdapter = BluetoothAdapter.DefaultAdapter;
         }
 
-        public ICollection<DeviceInfo> GetBondedDevices()
+        public ICollection<InfoAppareil> GetBondedDevices()
         {
-            ICollection<DeviceInfo> ret = new ObservableCollection<DeviceInfo>();
+            ICollection<InfoAppareil> ret = new ObservableCollection<InfoAppareil>();
             foreach (BluetoothDevice bondedDevice in bluetoothAdapter.BondedDevices)
             {
-                DeviceInfo toAddItem = new DeviceInfo
+                InfoAppareil toAddItem = new InfoAppareil
                 {
-                    MACAddress = bondedDevice.Address,
-                    Name = bondedDevice.Name
+                    AdresseMAC = bondedDevice.Address,
+                    Nom = bondedDevice.Name
                 };
                 ret.Add(toAddItem);
             }
diff --git a/TestXamConnections/TestXamConnections.Android/TestXamConnections.Android.csproj b/TestXamConnections/TestXamConnections.Android/TestXamConnections.Android.csproj
index 0ee046b..d0c4be4 100644
--- a/TestXamConnections/TestXamConnections.Android/TestXamConnections.Android.csproj
+++ b/TestXamConnections/TestXamConnections.Android/TestXamConnections.Android.csproj
@@ -63,7 +63,7 @@
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Connection\BluetoothConnectionService.cs" />
-    <Compile Include="Helper\ConnectionServiceProvider.cs" />
+    <Compile Include="Helper\ConnexionServiceFournisseur.cs" />
     <Compile Include="Connection\InternConnectionService.cs" />
     <Compile Include="Connection\WifiConnectionService.cs" />
     <Compile Include="MainActivity.cs" />
diff --git a/TestXamConnections/TestXamConnections/Connection/ConnectionConstants.cs b/TestXamConnections/TestXamConnections/Connection/ConnectionConstants.cs
deleted file mode 100644
index a05002a..0000000
--- a/TestXamConnections/TestXamConnections/Connection/ConnectionConstants.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-﻿namespace TestXamConnections.Connection
-{
-    /// <summary>
-    /// Constantes de connexion à utiliser lors de l'utilisation 
-    /// de la fonction Connect de IConnection Service
-    /// </summary>
-    public static class ConnectionConstants
-    {
-        public static readonly string MAC_ADDR_KEY = "mac_address";
-        // public static readonly string LAUNCH_INTENT_KEY = "launch_intent";
-        public static readonly string RECEIVABLE_INTENTS_KEY = "receivable_intents";
-
-    }
-}
diff --git a/TestXamConnections/TestXamConnections/Connection/ConnexionConstantes.cs b/TestXamConnections/TestXamConnections/Connection/ConnexionConstantes.cs
new file mode 100644
index 0000000..9024882
--- /dev/null
+++ b/TestXamConnections/TestXamConnections/Connection/ConnexionConstantes.cs
@@ -0,0 +1,14 @@
+﻿namespace TestXamConnections.Connection
+{
+    /// <summary>
+    /// Constantes de connexion à utiliser lors de l'utilisation 
+    /// de la fonction Connect de IConnection Service
+    /// </summary>
+    public static class ConnexionConstantes
+    {
+        public static readonly string MAC_ADDR_KEY = "mac_address";
+        // public static readonly string LAUNCH_INTENT_KEY = "launch_intent";
+        public static readonly string RECEIVABLE_INTENTS_KEY = "receivable_intents";
+
+    }
+}
diff --git a/TestXamConnections/TestXamConnections/Connection/IConnectionService.cs b/TestXamConnections/TestXamConnections/Connection/IConnectionService.cs
deleted file mode 100644
index 6d14c95..0000000
--- a/TestXamConnections/TestXamConnections/Connection/IConnectionService.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Threading.Tasks;
-
-namespace TestXamConnections.Connection
-{
-    public interface IConnectionService
-    {
-        /// <summary>
-        /// Fonction de connexion à la fonctionnalité cible.
-        /// </summary>
-        /// <param name="connectParam">Paramètre de connection.\nPour Bluetooth, addresse MAC.\n
-        /// Pour connexion interne, les intents recevables (ajoutés à un IntentFilter).</param>
-        /// <returns>true si la connexion a réussi, false sinon.</returns>
-        Task<bool> Connect(Dictionary<string, string> connectParam);
-
-        /// <summary>
-        /// Fonction d'envoi de commande pour le bluetooth
-        /// </summary>
-        /// <param name="hexValues">Données à envoyer sous forme de tableau d'octets</param>
-        /// <returns>true si la commande s'est bien envoyée, false sinon.</returns>
-        Task<bool> SendCommand(byte[] hexValues);
-
-        /// <summary>
-        /// Événement déclenché à la réception de données. Présente les donénes sous forme d’un tableau d’octets.
-        /// </summary>
-        EventHandler<byte[]> DataReceivedEvent { get; set; }
-    }
-}
diff --git a/TestXamConnections/TestXamConnections/Connection/IConnectionServiceProvider.cs b/TestXamConnections/TestXamConnections/Connection/IConnectionServiceProvider.cs
deleted file mode 100644
index 87f0b0e..0000000
--- a/TestXamConnections/TestXamConnections/Connection/IConnectionServiceProvider.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-﻿namespace TestXamConnections.Connection
-{
-    /// <summary>
-    /// Type de connection service à demander.
-    /// </summary>
-    public enum ConnectionType
-    {
-        Bluetooth,
-        Intern,
-        Wifi
-    }
-
-    public interface IConnectionServiceProvider
-    {
-        IConnectionService GetConnectionServiceInstance(ConnectionType ct);
-    }
-}
diff --git a/TestXamConnections/TestXamConnections/Connection/IConnexionService.cs b/TestXamConnections/TestXamConnections/Connection/IConnexionService.cs
new file mode 100644
index 0000000..056b4e0
--- /dev/null
+++ b/TestXamConnections/TestXamConnections/Connection/IConnexionService.cs
@@ -0,0 +1,29 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+
+namespace TestXamConnections.Connection
+{
+    public interface IConnexionService
+    {
+        /// <summary>
+        /// Fonction de connexion à la fonctionnalité cible.
+        /// </summary>
+        /// <param name="connectParam">Paramètre de connexion.\nPour Bluetooth, addresse MAC.\n
+        /// Pour connexion interne, les intents recevables (ajoutés à un IntentFilter).</param>
+        /// <returns>true si la connexion a réussi, false sinon.</returns>
+        Task<bool> Connexion(Dictionary<string, string> connectParam);
+
+        /// <summary>
+        /// Fonction d'envoi de commande pour le bluetooth
+        /// </summary>
+        /// <param name="hexValues">Données à envoyer sous forme de tableau d'octets</param>
+        /// <returns>true si la commande s'est bien envoyée, false sinon.</returns>
+        Task<bool> EnvoiCommande(byte[] hexValues);
+
+        /// <summary>
+        /// Événement déclenché à la réception de données. Présente les donénes sous forme d’un tableau d’octets.
+        /// </summary>
+        EventHandler<byte[]> DonneesRecuesEvent { get; set; }
+    }
+}
diff --git a/TestXamConnections/TestXamConnections/Connection/IConnexionServiceFournisseur.cs b/TestXamConnections/TestXamConnections/Connection/IConnexionServiceFournisseur.cs
new file mode 100644
index 0000000..e885307
--- /dev/null
+++ b/TestXamConnections/TestXamConnections/Connection/IConnexionServiceFournisseur.cs
@@ -0,0 +1,17 @@
+﻿namespace TestXamConnections.Connection
+{
+    /// <summary>
+    /// Type de connection service à demander.
+    /// </summary>
+    public enum ConnexionType
+    {
+        Bluetooth,
+        Intern,
+        Wifi
+    }
+
+    public interface IConnexionServiceFournisseur
+    {
+        IConnexionService GetConnectionServiceInstance(ConnexionType ct);
+    }
+}
diff --git a/TestXamConnections/TestXamConnections/Device/Balance/BalanceFournisseur.cs b/TestXamConnections/TestXamConnections/Device/Balance/BalanceFournisseur.cs
new file mode 100644
index 0000000..d57ae99
--- /dev/null
+++ b/TestXamConnections/TestXamConnections/Device/Balance/BalanceFournisseur.cs
@@ -0,0 +1,25 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using TestXamConnections.Connection;
+using TestXamConnections.Device.Balance.Balea;
+
+namespace TestXamConnections.Device.Balance
+{
+    public enum Balance
+    {
+        TeoBalance
+    }
+
+    public static class BalanceFournisseur
+    {
+        public static IBalance GetBalance(Balance b, ConnexionType ct, InfoAppareil deviceI)
+        {
+            return b switch
+            {
+                Balance.TeoBalance => new TeoBalance(deviceI),
+                _ => null,
+            };
+        }
+    }
+}
diff --git a/TestXamConnections/TestXamConnections/Device/Balance/BalanceProvider.cs b/TestXamConnections/TestXamConnections/Device/Balance/BalanceProvider.cs
deleted file mode 100644
index 2e3bd82..0000000
--- a/TestXamConnections/TestXamConnections/Device/Balance/BalanceProvider.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Text;
-using TestXamConnections.Connection;
-using TestXamConnections.Device.Balance.Balea;
-
-namespace TestXamConnections.Device.Balance
-{
-    public enum Balance
-    {
-        TeoBalance
-    }
-
-    public static class BalanceProvider
-    {
-        public static IBalance GetBalance(Balance b, ConnectionType ct, DeviceInfo deviceI)
-        {
-            return b switch
-            {
-                Balance.TeoBalance => new TeoBalance(deviceI),
-                _ => null,
-            };
-        }
-    }
-}
diff --git a/TestXamConnections/TestXamConnections/Device/Balance/Balea/TeoBalance.cs b/TestXamConnections/TestXamConnections/Device/Balance/Balea/TeoBalance.cs
index 67cff5e..32e3d7b 100644
--- a/TestXamConnections/TestXamConnections/Device/Balance/Balea/TeoBalance.cs
+++ b/TestXamConnections/TestXamConnections/Device/Balance/Balea/TeoBalance.cs
@@ -4,27 +4,26 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using TestXamConnections.Connection;
-using TestXamConnections.Models;
 using Xamarin.Forms;
 
 namespace TestXamConnections.Device.Balance.Balea
 {
     public class TeoBalance : IBalance
     {
-        public DeviceInfo DeviceI { get; set; }
-        public IConnectionService ConnectionService { get; set; }
-        public EventHandler<ReponsePesee> PeseeReceivedEvent { get; set; }
+        public InfoAppareil AppareilInfos { get; set; }
+        public IConnexionService ConnexionService { get; set; }
+        public EventHandler<ReponsePesee> PeseeRecueEvent { get; set; }
 
-        public TeoBalance(DeviceInfo deviceI)
+        public TeoBalance(InfoAppareil deviceI)
         {
-            DeviceI = deviceI;
-            ConnectionService = DependencyService.Get<IConnectionServiceProvider>().GetConnectionServiceInstance(ConnectionType.Bluetooth);
-            ConnectionService.DataReceivedEvent += TeoDataReceived;
+            AppareilInfos = deviceI;
+            ConnexionService = DependencyService.Get<IConnexionServiceFournisseur>().GetConnectionServiceInstance(ConnexionType.Bluetooth);
+            ConnexionService.DonneesRecuesEvent += TeoDataReceived;
         }
 
         ~TeoBalance()
         {
-            ConnectionService.DataReceivedEvent -= TeoDataReceived;
+            ConnexionService.DonneesRecuesEvent -= TeoDataReceived;
         }
 
         /* 
@@ -67,15 +66,15 @@ namespace TestXamConnections.Device.Balance.Balea
                 // Trigger evènement en fonction de la trame
                 if (_bufferedData.Length == 12)
                 {
-                    PeseeReceivedEvent.Invoke(this, new ReponsePesee(_bufferedData));
+                    PeseeRecueEvent.Invoke(this, new ReponsePesee(_bufferedData));
                 }
                 else if (_bufferedData[2] == '6')
                 {
-                    PeseeReceivedEvent.Invoke(this, new ReponsePesee("err"));
+                    PeseeRecueEvent.Invoke(this, new ReponsePesee("err"));
                 }
                 else
                 {
-                    PeseeReceivedEvent.Invoke(this, new ReponsePesee("err"));
+                    PeseeRecueEvent.Invoke(this, new ReponsePesee("err"));
                 }
             }
         }
@@ -85,13 +84,13 @@ namespace TestXamConnections.Device.Balance.Balea
         /// Important : le bluetooth doit être activé, la balance allumée et les appareils doivent déjà être appairés.
         /// </summary>
         /// <returns>true si la connection a réussi, false sinon.</returns>
-        public async Task<bool> ConnectToBalanceAsync()
+        public async Task<bool> ConnexionBalanceAsync()
         {
             Dictionary<string, string> param = new Dictionary<string, string>()
             {
-                { ConnectionConstants.MAC_ADDR_KEY, DeviceI.MACAddress }
+                { ConnexionConstantes.MAC_ADDR_KEY, AppareilInfos.AdresseMAC }
             };
-            return await ConnectionService.Connect(param);
+            return await ConnexionService.Connexion(param);
         }
 
         /// <summary>
@@ -99,20 +98,20 @@ namespace TestXamConnections.Device.Balance.Balea
         /// </summary>
         /// <param name="commandType">La commande à envoyer.</param>
         /// <returns>true si l'envoi a réussi, false sinon.</returns>
-        public async Task<bool> SendCommandAsync(TeoConstants.TeoCommandType cmd)
+        public async Task<bool> EnvoiCommandeAsync(TeoConstantes.TeoCommandeType cmd)
         {
-            byte[] commandValue = TeoConstants.TeoCommandValues.GetValueOrDefault(cmd);
-            return await ConnectionService.SendCommand(commandValue);
+            byte[] commandValue = TeoConstantes.TeoCommandValues.GetValueOrDefault(cmd);
+            return await ConnexionService.EnvoiCommande(commandValue);
         }
 
         /// <summary>
         /// Envoie d'une commande d'émission de poids au Teo.
         /// </summary>
         /// <returns>true si l'envoi a réussi, false sinon.</returns>
-        public async Task<bool> ReadWeightAsync()
+        public async Task<bool> LirePeseeAsync()
         {
-            byte[] commandValue = TeoConstants.TeoCommandValues.GetValueOrDefault(TeoConstants.TeoCommandType.EmissionPoids);
-            return await ConnectionService.SendCommand(commandValue);
+            byte[] commandValue = TeoConstantes.TeoCommandValues.GetValueOrDefault(TeoConstantes.TeoCommandeType.EmissionPoids);
+            return await ConnexionService.EnvoiCommande(commandValue);
         }
 
     }
diff --git a/TestXamConnections/TestXamConnections/Device/Balance/Balea/TeoConstantes.cs b/TestXamConnections/TestXamConnections/Device/Balance/Balea/TeoConstantes.cs
new file mode 100644
index 0000000..32b2071
--- /dev/null
+++ b/TestXamConnections/TestXamConnections/Device/Balance/Balea/TeoConstantes.cs
@@ -0,0 +1,40 @@
+﻿using System.Collections.Generic;
+
+namespace TestXamConnections.Device.Balance.Balea
+{
+    public static class TeoConstantes
+    {
+        /// <summary>
+        /// Liste des commandes disponibles pour la balance Teo, pour le programme INRAE.
+        /// </summary>
+        public enum TeoCommandeType
+        {
+            // Voir documentation TEO INRAE 
+            // Codes ASCII
+            ModeOrdre,
+            SortieOrdre,
+            EmissionPoids,
+            ModePeseeSimple,
+            SortiePeseeSimple
+        }
+
+        public static readonly Dictionary<TeoCommandeType, string> TeoCommandNames = new Dictionary<TeoCommandeType, string>()
+        {
+            { TeoCommandeType.ModeOrdre,         "Mode attente ordre"        },
+            { TeoCommandeType.SortieOrdre,       "Sortie mode ordre"         },
+            { TeoCommandeType.EmissionPoids,     "Emission poids"            },
+            { TeoCommandeType.ModePeseeSimple,   "Mode simple pesage"        },
+            { TeoCommandeType.SortiePeseeSimple, "Sortie mode simple pesage" }
+
+        };
+
+        public static readonly Dictionary<TeoCommandeType, byte[]> TeoCommandValues = new Dictionary<TeoCommandeType, byte[]>()
+        {
+            { TeoCommandeType.ModeOrdre,         new byte[] { 0x02, 0x61, 0x0D } },
+            { TeoCommandeType.SortieOrdre,       new byte[] { 0x02, 0x6B, 0x0D } },
+            { TeoCommandeType.EmissionPoids,     new byte[] { 0x02, 0x63, 0x0D } },
+            { TeoCommandeType.ModePeseeSimple,   new byte[] { 0x02, 0x62, 0x0D } },
+            { TeoCommandeType.SortiePeseeSimple, new byte[] { 0x02, 0x65, 0x0D } }
+        };
+    }
+}
diff --git a/TestXamConnections/TestXamConnections/Device/Balance/Balea/TeoConstants.cs b/TestXamConnections/TestXamConnections/Device/Balance/Balea/TeoConstants.cs
deleted file mode 100644
index 881ff7f..0000000
--- a/TestXamConnections/TestXamConnections/Device/Balance/Balea/TeoConstants.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-﻿using System.Collections.Generic;
-
-namespace TestXamConnections.Device.Balance.Balea
-{
-    public static class TeoConstants
-    {
-        /// <summary>
-        /// Liste des commandes disponibles pour la balance Teo, pour le programme INRAE.
-        /// </summary>
-        public enum TeoCommandType
-        {
-            // Voir documentation TEO INRAE 
-            // Codes ASCII
-            ModeOrdre,
-            SortieOrdre,
-            EmissionPoids,
-            ModePeseeSimple,
-            SortiePeseeSimple
-        }
-
-        public static readonly Dictionary<TeoCommandType, string> TeoCommandNames = new Dictionary<TeoCommandType, string>()
-        {
-            { TeoCommandType.ModeOrdre,         "Mode attente ordre"        },
-            { TeoCommandType.SortieOrdre,       "Sortie mode ordre"         },
-            { TeoCommandType.EmissionPoids,     "Emission poids"            },
-            { TeoCommandType.ModePeseeSimple,   "Mode simple pesage"        },
-            { TeoCommandType.SortiePeseeSimple, "Sortie mode simple pesage" }
-
-        };
-
-        public static readonly Dictionary<TeoCommandType, byte[]> TeoCommandValues = new Dictionary<TeoCommandType, byte[]>()
-        {
-            { TeoCommandType.ModeOrdre,         new byte[] { 0x02, 0x61, 0x0D } },
-            { TeoCommandType.SortieOrdre,       new byte[] { 0x02, 0x6B, 0x0D } },
-            { TeoCommandType.EmissionPoids,     new byte[] { 0x02, 0x63, 0x0D } },
-            { TeoCommandType.ModePeseeSimple,   new byte[] { 0x02, 0x62, 0x0D } },
-            { TeoCommandType.SortiePeseeSimple, new byte[] { 0x02, 0x65, 0x0D } }
-        };
-    }
-}
diff --git a/TestXamConnections/TestXamConnections/Device/Balance/IBalance.cs b/TestXamConnections/TestXamConnections/Device/Balance/IBalance.cs
index f0cfdb3..77c5c91 100644
--- a/TestXamConnections/TestXamConnections/Device/Balance/IBalance.cs
+++ b/TestXamConnections/TestXamConnections/Device/Balance/IBalance.cs
@@ -1,37 +1,36 @@
 ﻿using System;
 using System.Threading.Tasks;
-using TestXamConnections.Models;
-using static TestXamConnections.Device.Balance.Balea.TeoConstants;
+using static TestXamConnections.Device.Balance.Balea.TeoConstantes;
 
 namespace TestXamConnections.Device.Balance
 {
-    public interface IBalance : IDevice
+    public interface IBalance : IAppareil
     {
         /// <summary>
         /// Événement déclenché à la reception d'une pesée de la part du Teo.
         /// </summary>
-        EventHandler<ReponsePesee> PeseeReceivedEvent { get; set; }
+        EventHandler<ReponsePesee> PeseeRecueEvent { get; set; }
 
         /// <summary>
         /// Permet d’établir une connection bluetooth avec une balance. 
         /// Important : le bluetooth doit être activé, la balance allumée et les appareils doivent déjà être appairés.
         /// </summary>
         /// <returns>true si la connection a réussi, false sinon.</returns>
-        Task<bool> ConnectToBalanceAsync();
+        Task<bool> ConnexionBalanceAsync();
 
         // <summary>
         /// Envoie d'une commande à la balance.
         /// </summary>
         /// <param name="commandType">La commande à envoyer.</param>
         /// <returns></returns>
-        Task<bool> SendCommandAsync(TeoCommandType cmd);
+        Task<bool> EnvoiCommandeAsync(TeoCommandeType cmd);
 
         // <summary>
         /// Envoie d'une commande de pesée simple à la balance.
         /// </summary>
         /// <param name="commandType">La commande à envoyer.</param>
         /// <returns></returns>
-        Task<bool> ReadWeightAsync();
+        Task<bool> LirePeseeAsync();
 
     }
 }
diff --git a/TestXamConnections/TestXamConnections/Device/Balance/ReponsePesee.cs b/TestXamConnections/TestXamConnections/Device/Balance/ReponsePesee.cs
new file mode 100644
index 0000000..682728a
--- /dev/null
+++ b/TestXamConnections/TestXamConnections/Device/Balance/ReponsePesee.cs
@@ -0,0 +1,76 @@
+﻿using System.Linq;
+
+namespace TestXamConnections.Device.Balance
+{
+    public class ReponsePesee
+    {
+
+        private bool err;
+        /// <summary>
+        /// Indicateur si erreur de pesée
+        /// </summary>
+        public bool Err
+        {
+            get => err;
+            set => err = value;
+        }
+
+
+        private int numPlateau;
+        /// <summary>
+        /// Le numéro du plateau.
+        /// </summary>
+        public int NumPlateau
+        {
+            get => numPlateau;
+            set => numPlateau = value;
+        }
+
+        private int typePlateau;
+        /// <summary>
+        /// Le type du plateau.
+        /// </summary>
+        public int TypePlateau
+        {
+            get => typePlateau;
+            set => typePlateau = value;
+        }
+
+        private string poidsMesure;
+        /// <summary>
+        /// Le poids mesuré, en kilogramme. 
+        /// </summary>
+        public string PoidsMesure
+        {
+            get => poidsMesure;
+            set => poidsMesure = value;
+        }
+
+        private bool estNegatif;
+        /// <summary>
+        /// Indique si le poids mesurée est négatif. True = poids négatif. 
+        /// </summary>
+        public bool EstNegative
+        {
+            get => estNegatif;
+            set => estNegatif = value;
+        }
+
+        public ReponsePesee(string data)
+        {
+            if (data == "err")
+            {
+                Err = true;
+            }
+            else
+            {
+                // Voir doc Balance Teo INRAE
+                NumPlateau = int.Parse(data[0].ToString());
+                TypePlateau = int.Parse(data[1].ToString());
+                EstNegative = data[4] == '-';
+                PoidsMesure = new string(data.Skip(5).ToArray()).Trim();
+
+            }
+        }
+    }
+}
diff --git a/TestXamConnections/TestXamConnections/Device/Barcode/BarcodeReaderProvider.cs b/TestXamConnections/TestXamConnections/Device/Barcode/BarcodeReaderProvider.cs
deleted file mode 100644
index f4ee6b2..0000000
--- a/TestXamConnections/TestXamConnections/Device/Barcode/BarcodeReaderProvider.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Text;
-using TestXamConnections.Connection;
-using TestXamConnections.Device.Barcode.Honeywell;
-
-namespace TestXamConnections.Device.Barcode
-{
-    public enum BarcodeDevice
-    {
-        HoneywellIntern,
-        HoneywellBT
-    }
-
-    public static class BarcodeReaderProvider
-    {
-        public static IBarcodeReader GetBarcodeReader(BarcodeDevice d, ConnectionType ct, DeviceInfo deviceI)
-        {
-            return d switch
-            {
-                BarcodeDevice.HoneywellIntern => new HoneywellInternReader(deviceI),
-                BarcodeDevice.HoneywellBT => new HoneywellBTReader(deviceI),
-                _ => null,
-            };
-        }
-    }
-}
diff --git a/TestXamConnections/TestXamConnections/Device/Barcode/Honeywell/HoneyWellConstantes.cs b/TestXamConnections/TestXamConnections/Device/Barcode/Honeywell/HoneyWellConstantes.cs
new file mode 100644
index 0000000..cb8c172
--- /dev/null
+++ b/TestXamConnections/TestXamConnections/Device/Barcode/Honeywell/HoneyWellConstantes.cs
@@ -0,0 +1,14 @@
+﻿namespace TestXamConnections.Device.Barcode.Honeywell
+{
+    /// <summary>
+    /// Constantes utilisées pour la communication avec le module Barcode Honeywell interne au C-One².
+    /// </summary>
+    public static class HoneyWellConstantes
+    {
+        public const string ACTION_SCAN = "fr.coppernic.intent.action.SCAN";
+        public const string ACTION_STOP_SCAN = "fr.coppernic.intent.action.STOP";
+        public const string ACTION_SCAN_SUCCESS = "fr.coppernic.intent.scansuccess";
+        public const string ACTION_SCAN_ERROR = "fr.coppernic.intent.scanfailed";
+        public const string HONEYWELL_BARCODE = "fr.coppernic.features.barcode.conen";
+    }
+}
diff --git a/TestXamConnections/TestXamConnections/Device/Barcode/Honeywell/HoneyWellConstants.cs b/TestXamConnections/TestXamConnections/Device/Barcode/Honeywell/HoneyWellConstants.cs
deleted file mode 100644
index 8c82bda..0000000
--- a/TestXamConnections/TestXamConnections/Device/Barcode/Honeywell/HoneyWellConstants.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-﻿namespace TestXamConnections.Device.Barcode.Honeywell
-{
-    /// <summary>
-    /// Constantes utilisées pour la communication avec le module Barcode Honeywell interne au C-One².
-    /// </summary>
-    public static class HoneyWellConstants
-    {
-        public const string ACTION_SCAN = "fr.coppernic.intent.action.SCAN";
-        public const string ACTION_STOP_SCAN = "fr.coppernic.intent.action.STOP";
-        public const string ACTION_SCAN_SUCCESS = "fr.coppernic.intent.scansuccess";
-        public const string ACTION_SCAN_ERROR = "fr.coppernic.intent.scanfailed";
-        public const string HONEYWELL_BARCODE = "fr.coppernic.features.barcode.conen";
-    }
-}
diff --git a/TestXamConnections/TestXamConnections/Device/Barcode/Honeywell/HoneywellBTReader.cs b/TestXamConnections/TestXamConnections/Device/Barcode/Honeywell/HoneywellBTReader.cs
deleted file mode 100644
index 75f6c0f..0000000
--- a/TestXamConnections/TestXamConnections/Device/Barcode/Honeywell/HoneywellBTReader.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Threading.Tasks;
-using TestXamConnections.Connection;
-using Xamarin.Forms;
-
-namespace TestXamConnections.Device.Barcode.Honeywell
-{
-    public class HoneywellBTReader : IBarcodeReader
-    {
-        public DeviceInfo DeviceI { get; set; }
-        public IConnectionService ConnectionService { get; set; }
-        /// <summary>
-        /// Événement déclenché à la reception de données par le lecteur de code barre Honeywell.
-        /// </summary>
-        public EventHandler<string> BarcodeDataReceivedEvent { get; set; }
-
-        public HoneywellBTReader(DeviceInfo device)
-        {
-            DeviceI.Name = device.Name;
-            DeviceI.MACAddress = device.MACAddress;
-            ConnectionService = DependencyService.Get<IConnectionServiceProvider>().GetConnectionServiceInstance(ConnectionType.Bluetooth);
-            ConnectionService.DataReceivedEvent += BluetoothDataReceived;
-        }
-
-        private void BluetoothDataReceived(object sender, byte[] e)
-        {
-            string data = Encoding.ASCII.GetString(e);
-            BarcodeDataReceivedEvent.Invoke(this, data);
-        }
-
-        public async Task<bool> EnableServiceAsync()
-        {
-            Dictionary<string, string> param = new Dictionary<string, string>()
-            {
-                { ConnectionConstants.MAC_ADDR_KEY, DeviceI.MACAddress }
-            };
-            bool ret = await ConnectionService.Connect(param);
-            return ret;
-        }
-
-        public Task<bool> StartScanAsync()
-        {
-            throw new NotImplementedException();
-        }
-    }
-}
diff --git a/TestXamConnections/TestXamConnections/Device/Barcode/Honeywell/HoneywellInternReader.cs b/TestXamConnections/TestXamConnections/Device/Barcode/Honeywell/HoneywellInternReader.cs
deleted file mode 100644
index 545c76e..0000000
--- a/TestXamConnections/TestXamConnections/Device/Barcode/Honeywell/HoneywellInternReader.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Threading.Tasks;
-using TestXamConnections.Connection;
-using Xamarin.Forms;
-
-namespace TestXamConnections.Device.Barcode.Honeywell
-{
-    public class HoneywellInternReader : IBarcodeReader
-    {
-        public DeviceInfo DeviceI { get; set; }
-        public IConnectionService ConnectionService { get; set; }
-
-        /// <summary>
-        /// Événement déclenché à la reception de données par le lecteur Honeywell .
-        /// </summary>
-        public EventHandler<string> BarcodeDataReceivedEvent { get; set; }
-
-        public HoneywellInternReader(DeviceInfo deviceI)
-        {
-            DeviceI = deviceI;
-            ConnectionService = DependencyService.Get<IConnectionServiceProvider>().GetConnectionServiceInstance(ConnectionType.Intern);
-            ConnectionService.DataReceivedEvent += InternDataReceived;
-        }
-
-        private void InternDataReceived(object sender, byte[] intent)
-        {
-            string data = Encoding.ASCII.GetString(intent);
-            data = data == HoneyWellConstants.ACTION_SCAN_ERROR ? "err" : data;
-            BarcodeDataReceivedEvent.Invoke(this, data);
-        }
-
-
-        /// <summary>
-        /// Initialise la lecture de code barre avec lecteur interne Honeywell.
-        /// </summary>
-        /// <returns>true la connexion a réussi, false sinon.</returns>
-        public async Task<bool> EnableServiceAsync()
-        {
-            bool ret;
-            // Enregistrement des intents recevable par Agrident
-            List<string> intentsList = new List<string>()
-            {
-                HoneyWellConstants.ACTION_SCAN_SUCCESS,
-                HoneyWellConstants.ACTION_SCAN_ERROR
-            };
-            string intents = string.Join(',', intentsList);
-
-            // Encapsulation des intents recevables pour envoyer au service de connexion
-            Dictionary<string, string> param = new Dictionary<string, string>()
-            {
-                { ConnectionConstants.RECEIVABLE_INTENTS_KEY, intents }
-            };
-
-            ret = await ConnectionService.Connect(param);
-            return ret;
-        }
-
-        /// <summary>
-        /// Lance un scan de code barre avec le lecteur Honeywell interne.
-        /// Important : Il faut d'abord 
-        /// </summary>
-        /// <returns>true si le scan s'est lancé correctement, false sinon.</returns>
-        public async Task<bool> StartScanAsync()
-        {
-            byte[] startIntentBytes = Encoding.ASCII.GetBytes(HoneyWellConstants.HONEYWELL_BARCODE);
-            return await ConnectionService.SendCommand(startIntentBytes);
-        }
-    }
-}
diff --git a/TestXamConnections/TestXamConnections/Device/Barcode/Honeywell/HoneywellLecteurBT.cs b/TestXamConnections/TestXamConnections/Device/Barcode/Honeywell/HoneywellLecteurBT.cs
new file mode 100644
index 0000000..6fc9261
--- /dev/null
+++ b/TestXamConnections/TestXamConnections/Device/Barcode/Honeywell/HoneywellLecteurBT.cs
@@ -0,0 +1,48 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using TestXamConnections.Connection;
+using Xamarin.Forms;
+
+namespace TestXamConnections.Device.Barcode.Honeywell
+{
+    public class HoneywellLecteurBT : ILecteurCodeBarre
+    {
+        public InfoAppareil AppareilInfos { get; set; }
+        public IConnexionService ConnexionService { get; set; }
+        /// <summary>
+        /// Événement déclenché à la reception de données par le lecteur de code barre Honeywell.
+        /// </summary>
+        public EventHandler<string> CBDonneesRecuesEvent { get; set; }
+
+        public HoneywellLecteurBT(InfoAppareil device)
+        {
+            AppareilInfos.Nom = device.Nom;
+            AppareilInfos.AdresseMAC = device.AdresseMAC;
+            ConnexionService = DependencyService.Get<IConnexionServiceFournisseur>().GetConnectionServiceInstance(ConnexionType.Bluetooth);
+            ConnexionService.DonneesRecuesEvent += BluetoothDataReceived;
+        }
+
+        private void BluetoothDataReceived(object sender, byte[] e)
+        {
+            string data = Encoding.ASCII.GetString(e);
+            CBDonneesRecuesEvent.Invoke(this, data);
+        }
+
+        public async Task<bool> InitServiceAsync()
+        {
+            Dictionary<string, string> param = new Dictionary<string, string>()
+            {
+                { ConnexionConstantes.MAC_ADDR_KEY, AppareilInfos.AdresseMAC }
+            };
+            bool ret = await ConnexionService.Connexion(param);
+            return ret;
+        }
+
+        public Task<bool> LancerScanAsync()
+        {
+            throw new NotImplementedException();
+        }
+    }
+}
diff --git a/TestXamConnections/TestXamConnections/Device/Barcode/Honeywell/HoneywellLecteurInterne.cs b/TestXamConnections/TestXamConnections/Device/Barcode/Honeywell/HoneywellLecteurInterne.cs
new file mode 100644
index 0000000..3fbca0e
--- /dev/null
+++ b/TestXamConnections/TestXamConnections/Device/Barcode/Honeywell/HoneywellLecteurInterne.cs
@@ -0,0 +1,71 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using TestXamConnections.Connection;
+using Xamarin.Forms;
+
+namespace TestXamConnections.Device.Barcode.Honeywell
+{
+    public class HoneywellLecteurInterne : ILecteurCodeBarre
+    {
+        public InfoAppareil AppareilInfos { get; set; }
+        public IConnexionService ConnexionService { get; set; }
+
+        /// <summary>
+        /// Événement déclenché à la reception de données par le lecteur Honeywell .
+        /// </summary>
+        public EventHandler<string> CBDonneesRecuesEvent { get; set; }
+
+        public HoneywellLecteurInterne(InfoAppareil deviceI)
+        {
+            AppareilInfos = deviceI;
+            ConnexionService = DependencyService.Get<IConnexionServiceFournisseur>().GetConnectionServiceInstance(ConnexionType.Intern);
+            ConnexionService.DonneesRecuesEvent += InternDataReceived;
+        }
+
+        private void InternDataReceived(object sender, byte[] intent)
+        {
+            string data = Encoding.ASCII.GetString(intent);
+            data = data == HoneyWellConstantes.ACTION_SCAN_ERROR ? "err" : data;
+            CBDonneesRecuesEvent.Invoke(this, data);
+        }
+
+
+        /// <summary>
+        /// Initialise la lecture de code barre avec lecteur interne Honeywell.
+        /// </summary>
+        /// <returns>true la connexion a réussi, false sinon.</returns>
+        public async Task<bool> InitServiceAsync()
+        {
+            bool ret;
+            // Enregistrement des intents recevable par Agrident
+            List<string> intentsList = new List<string>()
+            {
+                HoneyWellConstantes.ACTION_SCAN_SUCCESS,
+                HoneyWellConstantes.ACTION_SCAN_ERROR
+            };
+            string intents = string.Join(',', intentsList);
+
+            // Encapsulation des intents recevables pour envoyer au service de connexion
+            Dictionary<string, string> param = new Dictionary<string, string>()
+            {
+                { ConnexionConstantes.RECEIVABLE_INTENTS_KEY, intents }
+            };
+
+            ret = await ConnexionService.Connexion(param);
+            return ret;
+        }
+
+        /// <summary>
+        /// Lance un scan de code barre avec le lecteur Honeywell interne.
+        /// Important : Il faut d'abord 
+        /// </summary>
+        /// <returns>true si le scan s'est lancé correctement, false sinon.</returns>
+        public async Task<bool> LancerScanAsync()
+        {
+            byte[] startIntentBytes = Encoding.ASCII.GetBytes(HoneyWellConstantes.HONEYWELL_BARCODE);
+            return await ConnexionService.EnvoiCommande(startIntentBytes);
+        }
+    }
+}
diff --git a/TestXamConnections/TestXamConnections/Device/Barcode/IBarcodeReader.cs b/TestXamConnections/TestXamConnections/Device/Barcode/IBarcodeReader.cs
deleted file mode 100644
index fa1bbc8..0000000
--- a/TestXamConnections/TestXamConnections/Device/Barcode/IBarcodeReader.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-﻿using System;
-using System.Threading.Tasks;
-
-namespace TestXamConnections.Device.Barcode
-{
-    public interface IBarcodeReader : IDevice
-    {
-        /// <summary>
-        /// Événement déclenché à la reception de données par le lecteur de code barre.
-        /// </summary>
-        public EventHandler<string> BarcodeDataReceivedEvent { get; set; }
-
-        /// <summary>
-        /// Initialise la lecture de code barre.
-        /// </summary>
-        /// <returns>true l'init a réussi, false sinon.</returns>
-        Task<bool> EnableServiceAsync();
-
-        /// <summary>
-        /// Lance un scan de code barre.
-        /// </summary>
-        /// <returns>true si le scan s'est lancé correctement, false sinon.</returns>
-        Task<bool> StartScanAsync();
-    }
-}
diff --git a/TestXamConnections/TestXamConnections/Device/Barcode/ILecteurCodeBarre.cs b/TestXamConnections/TestXamConnections/Device/Barcode/ILecteurCodeBarre.cs
new file mode 100644
index 0000000..837a0a0
--- /dev/null
+++ b/TestXamConnections/TestXamConnections/Device/Barcode/ILecteurCodeBarre.cs
@@ -0,0 +1,25 @@
+﻿using System;
+using System.Threading.Tasks;
+
+namespace TestXamConnections.Device.Barcode
+{
+    public interface ILecteurCodeBarre : IAppareil
+    {
+        /// <summary>
+        /// Événement déclenché à la reception de données par le lecteur de code barre.
+        /// </summary>
+        public EventHandler<string> CBDonneesRecuesEvent { get; set; }
+
+        /// <summary>
+        /// Initialise la lecture de code barre.
+        /// </summary>
+        /// <returns>true l'init a réussi, false sinon.</returns>
+        Task<bool> InitServiceAsync();
+
+        /// <summary>
+        /// Lance un scan de code barre.
+        /// </summary>
+        /// <returns>true si le scan s'est lancé correctement, false sinon.</returns>
+        Task<bool> LancerScanAsync();
+    }
+}
diff --git a/TestXamConnections/TestXamConnections/Device/Barcode/LecteurCodeBarreFournisseur.cs b/TestXamConnections/TestXamConnections/Device/Barcode/LecteurCodeBarreFournisseur.cs
new file mode 100644
index 0000000..fb9db94
--- /dev/null
+++ b/TestXamConnections/TestXamConnections/Device/Barcode/LecteurCodeBarreFournisseur.cs
@@ -0,0 +1,27 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using TestXamConnections.Connection;
+using TestXamConnections.Device.Barcode.Honeywell;
+
+namespace TestXamConnections.Device.Barcode
+{
+    public enum BarcodeDevice
+    {
+        HoneywellIntern,
+        HoneywellBT
+    }
+
+    public static class LecteurCodeBarreFournisseur
+    {
+        public static ILecteurCodeBarre GetBarcodeReader(BarcodeDevice d, ConnexionType ct, InfoAppareil deviceI)
+        {
+            return d switch
+            {
+                BarcodeDevice.HoneywellIntern => new HoneywellLecteurInterne(deviceI),
+                BarcodeDevice.HoneywellBT => new HoneywellLecteurBT(deviceI),
+                _ => null,
+            };
+        }
+    }
+}
diff --git a/TestXamConnections/TestXamConnections/Device/DeviceInfo.cs b/TestXamConnections/TestXamConnections/Device/DeviceInfo.cs
deleted file mode 100644
index 05da5e6..0000000
--- a/TestXamConnections/TestXamConnections/Device/DeviceInfo.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-﻿namespace TestXamConnections.Device
-{
-    /// <summary>
-    /// Représente un appareil caractérisé par un nom et une adresse MAC.
-    /// </summary>
-    public class DeviceInfo
-    {
-        /// <summary>
-        /// Le nom de l'appareil.
-        /// </summary>
-        public string Name { get; set; }
-
-        /// <summary>
-        /// L'adresse MAC de l'appareil
-        /// </summary>
-        public string MACAddress { get; set; }
-
-        public override string ToString()
-        {
-            return Name + ":" + MACAddress;
-        }
-    }
-}
diff --git a/TestXamConnections/TestXamConnections/Device/IAppareil.cs b/TestXamConnections/TestXamConnections/Device/IAppareil.cs
new file mode 100644
index 0000000..ec3a829
--- /dev/null
+++ b/TestXamConnections/TestXamConnections/Device/IAppareil.cs
@@ -0,0 +1,10 @@
+﻿using TestXamConnections.Connection;
+
+namespace TestXamConnections.Device
+{
+    public interface IAppareil
+    {
+        InfoAppareil AppareilInfos { get; set; }
+        IConnexionService ConnexionService { get; set; }
+    }
+}
diff --git a/TestXamConnections/TestXamConnections/Device/IDevice.cs b/TestXamConnections/TestXamConnections/Device/IDevice.cs
deleted file mode 100644
index c5d223f..0000000
--- a/TestXamConnections/TestXamConnections/Device/IDevice.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-﻿using TestXamConnections.Connection;
-
-namespace TestXamConnections.Device
-{
-    public interface IDevice
-    {
-        DeviceInfo DeviceI { get; set; }
-        IConnectionService ConnectionService { get; set; }
-    }
-}
diff --git a/TestXamConnections/TestXamConnections/Device/InfoAppareil.cs b/TestXamConnections/TestXamConnections/Device/InfoAppareil.cs
new file mode 100644
index 0000000..d51aab6
--- /dev/null
+++ b/TestXamConnections/TestXamConnections/Device/InfoAppareil.cs
@@ -0,0 +1,23 @@
+﻿namespace TestXamConnections.Device
+{
+    /// <summary>
+    /// Représente un appareil caractérisé par un nom et une adresse MAC.
+    /// </summary>
+    public class InfoAppareil
+    {
+        /// <summary>
+        /// Le nom de l'appareil.
+        /// </summary>
+        public string Nom { get; set; }
+
+        /// <summary>
+        /// L'adresse MAC de l'appareil
+        /// </summary>
+        public string AdresseMAC { get; set; }
+
+        public override string ToString()
+        {
+            return Nom + ":" + AdresseMAC;
+        }
+    }
+}
diff --git a/TestXamConnections/TestXamConnections/Device/RFID/Agrident/AgridentConstantes.cs b/TestXamConnections/TestXamConnections/Device/RFID/Agrident/AgridentConstantes.cs
new file mode 100644
index 0000000..85b3897
--- /dev/null
+++ b/TestXamConnections/TestXamConnections/Device/RFID/Agrident/AgridentConstantes.cs
@@ -0,0 +1,16 @@
+﻿namespace TestXamConnections.Device.RFID.Agrident
+{
+    /// <summary>
+    /// Constantes utilisées pour la communication avec le module Agrident Wedge interne au C-One².
+    /// </summary>
+    public static class AgridentConstantes
+    {
+        public const string ACTION_AGRIDENT_SUCCESS = "fr.coppernic.intent.agridentsuccess";
+        public const string ACTION_AGRIDENT_ERROR = "fr.coppernic.intent.agridentfailed";
+        public const string ACTION_AGRIDENT_SERVICE_STOP = "fr.coppernic.intent.action.stop.agrident.service";
+        public const string ACTION_AGRIDENT_SERVICE_START = "fr.coppernic.intent.action.start.agrident.service";
+        public const string ACTION_AGRIDENT_READ = "fr.coppernic.tools.agrident.wedge.READ";
+        public const string AGRIDENT_WEDGE = "fr.coppernic.tools.cpcagridentwedge";
+        public const string KEY_BARCODE_DATA = "BarcodeData";
+    }
+}
diff --git a/TestXamConnections/TestXamConnections/Device/RFID/Agrident/AgridentConstants.cs b/TestXamConnections/TestXamConnections/Device/RFID/Agrident/AgridentConstants.cs
deleted file mode 100644
index d8bed03..0000000
--- a/TestXamConnections/TestXamConnections/Device/RFID/Agrident/AgridentConstants.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-﻿namespace TestXamConnections.Device.RFID.Agrident
-{
-    /// <summary>
-    /// Constantes utilisées pour la communication avec le module Agrident Wedge interne au C-One².
-    /// </summary>
-    public static class AgridentConstants
-    {
-        public const string ACTION_AGRIDENT_SUCCESS = "fr.coppernic.intent.agridentsuccess";
-        public const string ACTION_AGRIDENT_ERROR = "fr.coppernic.intent.agridentfailed";
-        public const string ACTION_AGRIDENT_SERVICE_STOP = "fr.coppernic.intent.action.stop.agrident.service";
-        public const string ACTION_AGRIDENT_SERVICE_START = "fr.coppernic.intent.action.start.agrident.service";
-        public const string ACTION_AGRIDENT_READ = "fr.coppernic.tools.agrident.wedge.READ";
-        public const string AGRIDENT_WEDGE = "fr.coppernic.tools.cpcagridentwedge";
-        public const string KEY_BARCODE_DATA = "BarcodeData";
-    }
-}
diff --git a/TestXamConnections/TestXamConnections/Device/RFID/Agrident/AgridentInternReader.cs b/TestXamConnections/TestXamConnections/Device/RFID/Agrident/AgridentInternReader.cs
deleted file mode 100644
index 9ed4b29..0000000
--- a/TestXamConnections/TestXamConnections/Device/RFID/Agrident/AgridentInternReader.cs
+++ /dev/null
@@ -1,106 +0,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Threading.Tasks;
-using TestXamConnections.Connection;
-using TestXamConnections.Models;
-using Xamarin.Forms;
-
-namespace TestXamConnections.Device.RFID.Agrident
-{
-    /// <summary>
-    /// Important: Cette classe est utilisable avec le lecteur agrident interne au C-One.
-    /// </summary>
-    public class AgridentInternReader : IRFIDReader
-    {
-        public DeviceInfo DeviceI { get; set; }
-        public IConnectionService ConnectionService { get; set; }
-        /// <summary>
-        /// Événement déclenché à la reception de données par le lecteur RFID Agrident.
-        /// </summary>
-        public EventHandler<ReponseRFID> RFIDDataReceivedEvent { get; set; }
-
-        public AgridentInternReader(DeviceInfo deviceI)
-        {
-            DeviceI = deviceI;
-            ConnectionService = DependencyService.Get<IConnectionServiceProvider>().GetConnectionServiceInstance(ConnectionType.Intern);
-            ConnectionService.DataReceivedEvent += InternDataReceived;
-        }
-
-        ~AgridentInternReader()
-        {
-            ConnectionService.DataReceivedEvent -= InternDataReceived;
-        }
-
-        /* Fonction déclenchée à la reception de données Agrident
-         * Trigger l'évènement AgridentDataReceivedEvent
-         */
-        private void InternDataReceived(object sender, byte[] intent)
-        {
-            string data = Encoding.ASCII.GetString(intent);
-            ReponseRFID ret = new ReponseRFID();
-            
-            if (data == AgridentConstants.ACTION_AGRIDENT_ERROR)
-            {
-                ret.IsoRfid = "No Tag";
-                ret.TagLu = false;
-            } else
-            {
-                /* Par défaut le lecteur envoie le numéro sur 16 chiffres 
-                 * (le code pays peut théoriquement être > 999). Donc on se retrouve avec un 0 devant.
-                 * Un paramêtre permet de supprimer l'envoie de ce premier 0. 
-                 * Mais comme on sait pas si se paramétre est coché ou pas, 
-                 * on fait en sorte de traiter tjs sur 16 chiffres.
-                 */
-                if (data.Length == 15)
-                {
-                    data = "0" + data;
-                }
-                ret.IsoRfid = data.Substring(1, 15);
-                ret.CodePays = data.Substring(1, 3);
-                ret.NumeroAnimal = data.Substring(4, 12);
-                ret.TypeTag = "";
-                ret.IsoEtendu = data;
-                ret.CodeEtendu = data.Substring(0, 1);
-                ret.TagLu = true;
-            }
-            RFIDDataReceivedEvent.Invoke(this, ret);
-        }
-
-        /// <summary>
-        /// Initialise la lecture de tag RFID avec lecteur interne Agrident.
-        /// </summary>
-        /// <returns>true la connexion a réussi, false sinon.</returns>
-        public async Task<bool> EnableServiceAsync()
-        {
-            bool ret;
-            // Enregistrement des intents recevable par Agrident
-            List<string> intentsList = new List<string>()
-            {
-                AgridentConstants.ACTION_AGRIDENT_SUCCESS,
-                AgridentConstants.ACTION_AGRIDENT_ERROR
-            };
-            string intents = string.Join(',', intentsList);
-
-            // Encapuslation des intents recevables pour envoyer au service de connexion
-            Dictionary<string, string> param = new Dictionary<string, string>()
-            {
-                { ConnectionConstants.RECEIVABLE_INTENTS_KEY, intents }
-            };
-
-            ret = await ConnectionService.Connect(param);
-            return ret;
-        }
-
-        /// <summary>
-        /// Lance un scan de tag RFID avec le lecteur Agrident interne.
-        /// </summary>
-        /// <returns>true si le scan s'est lancé correctement, false sinon.</returns>
-        public async Task<bool> StartScanAsync()
-        {
-            byte[] startIntentBytes = Encoding.ASCII.GetBytes(AgridentConstants.AGRIDENT_WEDGE);
-            return await ConnectionService.SendCommand(startIntentBytes);
-        }
-
-    }
-}
diff --git a/TestXamConnections/TestXamConnections/Device/RFID/Agrident/AgridentLecteurInterne.cs b/TestXamConnections/TestXamConnections/Device/RFID/Agrident/AgridentLecteurInterne.cs
new file mode 100644
index 0000000..f7d7f66
--- /dev/null
+++ b/TestXamConnections/TestXamConnections/Device/RFID/Agrident/AgridentLecteurInterne.cs
@@ -0,0 +1,105 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using TestXamConnections.Connection;
+using Xamarin.Forms;
+
+namespace TestXamConnections.Device.RFID.Agrident
+{
+    /// <summary>
+    /// Important: Cette classe est utilisable avec le lecteur agrident interne au C-One.
+    /// </summary>
+    public class AgridentLecteurInterne : ILecteurRFID
+    {
+        public InfoAppareil AppareilInfos { get; set; }
+        public IConnexionService ConnexionService { get; set; }
+        /// <summary>
+        /// Événement déclenché à la reception de données par le lecteur RFID Agrident.
+        /// </summary>
+        public EventHandler<ReponseRFID> RFIDDonneesRecuesEvent { get; set; }
+
+        public AgridentLecteurInterne(InfoAppareil deviceI)
+        {
+            AppareilInfos = deviceI;
+            ConnexionService = DependencyService.Get<IConnexionServiceFournisseur>().GetConnectionServiceInstance(ConnexionType.Intern);
+            ConnexionService.DonneesRecuesEvent += InternDataReceived;
+        }
+
+        ~AgridentLecteurInterne()
+        {
+            ConnexionService.DonneesRecuesEvent -= InternDataReceived;
+        }
+
+        /* Fonction déclenchée à la reception de données Agrident
+         * Trigger l'évènement AgridentDataReceivedEvent
+         */
+        private void InternDataReceived(object sender, byte[] intent)
+        {
+            string data = Encoding.ASCII.GetString(intent);
+            ReponseRFID ret = new ReponseRFID();
+            
+            if (data == AgridentConstantes.ACTION_AGRIDENT_ERROR)
+            {
+                ret.IsoRfid = "No Tag";
+                ret.TagLu = false;
+            } else
+            {
+                /* Par défaut le lecteur envoie le numéro sur 16 chiffres 
+                 * (le code pays peut théoriquement être > 999). Donc on se retrouve avec un 0 devant.
+                 * Un paramêtre permet de supprimer l'envoie de ce premier 0. 
+                 * Mais comme on sait pas si se paramétre est coché ou pas, 
+                 * on fait en sorte de traiter tjs sur 16 chiffres.
+                 */
+                if (data.Length == 15)
+                {
+                    data = "0" + data;
+                }
+                ret.IsoRfid = data.Substring(1, 15);
+                ret.CodePays = data.Substring(1, 3);
+                ret.NumeroAnimal = data.Substring(4, 12);
+                ret.TypeTag = "";
+                ret.IsoEtendu = data;
+                ret.CodeEtendu = data.Substring(0, 1);
+                ret.TagLu = true;
+            }
+            RFIDDonneesRecuesEvent.Invoke(this, ret);
+        }
+
+        /// <summary>
+        /// Initialise la lecture de tag RFID avec lecteur interne Agrident.
+        /// </summary>
+        /// <returns>true la connexion a réussi, false sinon.</returns>
+        public async Task<bool> InitServiceAsync()
+        {
+            bool ret;
+            // Enregistrement des intents recevable par Agrident
+            List<string> intentsList = new List<string>()
+            {
+                AgridentConstantes.ACTION_AGRIDENT_SUCCESS,
+                AgridentConstantes.ACTION_AGRIDENT_ERROR
+            };
+            string intents = string.Join(',', intentsList);
+
+            // Encapuslation des intents recevables pour envoyer au service de connexion
+            Dictionary<string, string> param = new Dictionary<string, string>()
+            {
+                { ConnexionConstantes.RECEIVABLE_INTENTS_KEY, intents }
+            };
+
+            ret = await ConnexionService.Connexion(param);
+            return ret;
+        }
+
+        /// <summary>
+        /// Lance un scan de tag RFID avec le lecteur Agrident interne.
+        /// </summary>
+        /// <returns>true si le scan s'est lancé correctement, false sinon.</returns>
+        public async Task<bool> LancerScanAsync()
+        {
+            byte[] startIntentBytes = Encoding.ASCII.GetBytes(AgridentConstantes.AGRIDENT_WEDGE);
+            return await ConnexionService.EnvoiCommande(startIntentBytes);
+        }
+
+    }
+}
diff --git a/TestXamConnections/TestXamConnections/Device/RFID/ILecteurRFID.cs b/TestXamConnections/TestXamConnections/Device/RFID/ILecteurRFID.cs
new file mode 100644
index 0000000..0504640
--- /dev/null
+++ b/TestXamConnections/TestXamConnections/Device/RFID/ILecteurRFID.cs
@@ -0,0 +1,25 @@
+﻿using System;
+using System.Threading.Tasks;
+
+namespace TestXamConnections.Device.RFID
+{
+    public interface ILecteurRFID : IAppareil
+    {
+        /// <summary>
+        /// Événement déclenché à la reception de données par le lecteur RFID.
+        /// </summary>
+        public EventHandler<ReponseRFID> RFIDDonneesRecuesEvent { get; set; }
+
+        /// <summary>
+        /// Initialise la lecture de tag RFID.
+        /// </summary>
+        /// <returns>true l'init a réussi, false sinon.</returns>
+        Task<bool> InitServiceAsync();
+
+        /// <summary>
+        /// Lance un scan de tag RFID.
+        /// </summary>
+        /// <returns>true si le scan s'est lancé correctement, false sinon.</returns>
+        Task<bool> LancerScanAsync();
+    }
+}
diff --git a/TestXamConnections/TestXamConnections/Device/RFID/IRFIDReader.cs b/TestXamConnections/TestXamConnections/Device/RFID/IRFIDReader.cs
deleted file mode 100644
index 3cd1841..0000000
--- a/TestXamConnections/TestXamConnections/Device/RFID/IRFIDReader.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-﻿using System;
-using System.Threading.Tasks;
-using TestXamConnections.Models;
-
-namespace TestXamConnections.Device.RFID
-{
-    public interface IRFIDReader : IDevice
-    {
-        /// <summary>
-        /// Événement déclenché à la reception de données par le lecteur RFID.
-        /// </summary>
-        public EventHandler<ReponseRFID> RFIDDataReceivedEvent { get; set; }
-
-        /// <summary>
-        /// Initialise la lecture de tag RFID.
-        /// </summary>
-        /// <returns>true l'init a réussi, false sinon.</returns>
-        Task<bool> EnableServiceAsync();
-
-        /// <summary>
-        /// Lance un scan de tag RFID.
-        /// </summary>
-        /// <returns>true si le scan s'est lancé correctement, false sinon.</returns>
-        Task<bool> StartScanAsync();
-    }
-}
diff --git a/TestXamConnections/TestXamConnections/Device/RFID/LecteurRFIDFournisseur.cs b/TestXamConnections/TestXamConnections/Device/RFID/LecteurRFIDFournisseur.cs
new file mode 100644
index 0000000..693a10d
--- /dev/null
+++ b/TestXamConnections/TestXamConnections/Device/RFID/LecteurRFIDFournisseur.cs
@@ -0,0 +1,27 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using TestXamConnections.Connection;
+using TestXamConnections.Device.RFID.Agrident;
+
+namespace TestXamConnections.Device.RFID
+{
+    public enum AppareilRFID
+    {
+        AgridentInterne,
+        AgridentBT
+    }
+
+    public static class LecteurRFIDFournisseur
+    {
+        public static ILecteurRFID GetLecteurRFID(AppareilRFID d, ConnexionType ct, InfoAppareil deviceI)
+        {
+            return d switch
+            {
+                AppareilRFID.AgridentBT => throw new NotImplementedException(),
+                AppareilRFID.AgridentInterne => new AgridentLecteurInterne(deviceI),
+                _ => null,
+            };
+        }
+    }
+}
diff --git a/TestXamConnections/TestXamConnections/Device/RFID/RFIDReaderProvider.cs b/TestXamConnections/TestXamConnections/Device/RFID/RFIDReaderProvider.cs
deleted file mode 100644
index d468508..0000000
--- a/TestXamConnections/TestXamConnections/Device/RFID/RFIDReaderProvider.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Text;
-using TestXamConnections.Connection;
-using TestXamConnections.Device.RFID.Agrident;
-
-namespace TestXamConnections.Device.RFID
-{
-    public enum RFIDDevice
-    {
-        AgridentIntern,
-        AgridentBT
-    }
-
-    public static class RFIDReaderProvider
-    {
-        public static IRFIDReader GetRFIDReader(RFIDDevice d, ConnectionType ct, DeviceInfo deviceI)
-        {
-            return d switch
-            {
-                RFIDDevice.AgridentBT => throw new NotImplementedException(),
-                RFIDDevice.AgridentIntern => new AgridentInternReader(deviceI),
-                _ => null,
-            };
-        }
-    }
-}
diff --git a/TestXamConnections/TestXamConnections/Device/RFID/ReponseRFID.cs b/TestXamConnections/TestXamConnections/Device/RFID/ReponseRFID.cs
new file mode 100644
index 0000000..eed4988
--- /dev/null
+++ b/TestXamConnections/TestXamConnections/Device/RFID/ReponseRFID.cs
@@ -0,0 +1,35 @@
+﻿namespace TestXamConnections.Device.RFID
+{
+    public class ReponseRFID
+    {
+        /// <summary>
+        /// Numéro rfid 15 chiffres
+        /// </summary>
+        public string IsoRfid { get; set; }
+        /// <summary>
+        /// Code pays, ou fabriquant, 3 chiffres
+        /// </summary>
+        public string CodePays { get; set; }
+        /// <summary>
+        /// Numéro animal 12 chiffres
+        /// </summary>
+        public string NumeroAnimal { get; set; }
+        /// <summary>
+        /// Type tag, HDX ou FDX
+        /// </summary>
+        public string TypeTag { get; set; }
+        /// <summary>
+        /// Numéro Iso étendu 
+        /// </summary>
+        public string IsoEtendu { get; set; }
+        /// <summary>
+        /// Code de l'extention de l'Iso etendu
+        /// </summary>
+        public string CodeEtendu { get; set; }
+        /// <summary>
+        /// Un tag à été lu
+        /// </summary>
+        public bool TagLu { get; set; }
+
+    }
+}
diff --git a/TestXamConnections/TestXamConnections/Models/ReponsePesee.cs b/TestXamConnections/TestXamConnections/Models/ReponsePesee.cs
deleted file mode 100644
index 97ddece..0000000
--- a/TestXamConnections/TestXamConnections/Models/ReponsePesee.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-﻿using System.Linq;
-
-namespace TestXamConnections.Models
-{
-    public class ReponsePesee
-    {
-
-        private bool err;
-        /// <summary>
-        /// Indicateur si erreur de pesée
-        /// </summary>
-        public bool Err
-        {
-            get => err;
-            set => err = value;
-        }
-
-
-        private int numPlateau;
-        /// <summary>
-        /// Le numéro du plateau.
-        /// </summary>
-        public int NumPlateau
-        {
-            get => numPlateau;
-            set => numPlateau = value;
-        }
-
-        private int typePlateau;
-        /// <summary>
-        /// Le type du plateau.
-        /// </summary>
-        public int TypePlateau
-        {
-            get => typePlateau;
-            set => typePlateau = value;
-        }
-
-        private string poidsMesure;
-        /// <summary>
-        /// Le poids mesuré, en kilogramme. 
-        /// </summary>
-        public string PoidsMesure
-        {
-            get => poidsMesure;
-            set => poidsMesure = value;
-        }
-
-        private bool isNegative;
-        /// <summary>
-        /// Indique si le poids mesurée est négatif. True = poids négatif. 
-        /// </summary>
-        public bool IsNegative
-        {
-            get => isNegative;
-            set => isNegative = value;
-        }
-
-        public ReponsePesee(string data)
-        {
-            if (data == "err")
-            { 
-                Err = true;
-            } else
-            {
-                // Voir doc Balance Teo INRAE
-                NumPlateau = int.Parse(data[0].ToString());
-                TypePlateau = int.Parse(data[1].ToString());
-                IsNegative = data[4] == '-';
-                PoidsMesure = new string(data.Skip(5).ToArray()).Trim();
-
-            }
-        }
-    }
-}
diff --git a/TestXamConnections/TestXamConnections/Models/ReponseRFID.cs b/TestXamConnections/TestXamConnections/Models/ReponseRFID.cs
deleted file mode 100644
index 4cfe45b..0000000
--- a/TestXamConnections/TestXamConnections/Models/ReponseRFID.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-﻿namespace TestXamConnections.Models
-{
-    public class ReponseRFID
-    {
-        /// <summary>
-        /// Numéro rfid 15 chiffres
-        /// </summary>
-        public string IsoRfid { get; set; }
-        /// <summary>
-        /// Code pays, ou fabriquant, 3 chiffres
-        /// </summary>
-        public string CodePays { get; set; }
-        /// <summary>
-        /// Numéro animal 12 chiffres
-        /// </summary>
-        public string NumeroAnimal { get; set; }
-        /// <summary>
-        /// Type tag, HDX ou FDX
-        /// </summary>
-        public string TypeTag { get; set; }
-        /// <summary>
-        /// Numéro Iso étendu 
-        /// </summary>
-        public string IsoEtendu { get; set; }
-        /// <summary>
-        /// Code de l'extention de l'Iso etendu
-        /// </summary>
-        public string CodeEtendu { get; set; }
-        /// <summary>
-        /// Un tag à été lu
-        /// </summary>
-        public bool TagLu { get; set; }
-
-    }
-}
diff --git a/TestXamConnections/TestXamConnections/Services/IBluetoothService.cs b/TestXamConnections/TestXamConnections/Services/IBluetoothService.cs
index a8615f6..a50bd31 100644
--- a/TestXamConnections/TestXamConnections/Services/IBluetoothService.cs
+++ b/TestXamConnections/TestXamConnections/Services/IBluetoothService.cs
@@ -5,6 +5,6 @@ namespace TestXamConnections.Services
 {
     public interface IBluetoothService
     {
-        ICollection<DeviceInfo> GetBondedDevices();
+        ICollection<InfoAppareil> GetBondedDevices();
     }
 }
diff --git a/TestXamConnections/TestXamConnections/TestXamConnections.csproj b/TestXamConnections/TestXamConnections/TestXamConnections.csproj
index 0ebd4f6..91937ee 100644
--- a/TestXamConnections/TestXamConnections/TestXamConnections.csproj
+++ b/TestXamConnections/TestXamConnections/TestXamConnections.csproj
@@ -44,4 +44,8 @@
       <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
     </EmbeddedResource>
   </ItemGroup>
+
+  <ItemGroup>
+    <Folder Include="Models\" />
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/TestXamConnections/TestXamConnections/ViewModels/AccueilViewModel.cs b/TestXamConnections/TestXamConnections/ViewModels/AccueilViewModel.cs
index 6967c77..f3ad9a4 100644
--- a/TestXamConnections/TestXamConnections/ViewModels/AccueilViewModel.cs
+++ b/TestXamConnections/TestXamConnections/ViewModels/AccueilViewModel.cs
@@ -35,7 +35,7 @@ namespace TestXamConnections.ViewModels
         {
             ShowBondedDevices = true;
             BondedDevicesList.Clear();
-            foreach (Device.DeviceInfo bondedDeviceInfo in BluetoothService.GetBondedDevices())
+            foreach (Device.InfoAppareil bondedDeviceInfo in BluetoothService.GetBondedDevices())
             {
                 DeviceItemViewModel toAddItem = new DeviceItemViewModel(bondedDeviceInfo);
                 BondedDevicesList.Add(toAddItem);
diff --git a/TestXamConnections/TestXamConnections/ViewModels/BarcodeReaderViewModel.cs b/TestXamConnections/TestXamConnections/ViewModels/BarcodeReaderViewModel.cs
index 8505216..55f6b85 100644
--- a/TestXamConnections/TestXamConnections/ViewModels/BarcodeReaderViewModel.cs
+++ b/TestXamConnections/TestXamConnections/ViewModels/BarcodeReaderViewModel.cs
@@ -10,7 +10,7 @@ namespace TestXamConnections.ViewModels
 {
     public class BarcodeReaderViewModel : ViewModelBase
     {
-        private readonly IBarcodeReader bcReader;
+        private readonly ILecteurCodeBarre bcReader;
 
         private bool isVisibleData;
         private string data;
@@ -43,7 +43,7 @@ namespace TestXamConnections.ViewModels
 
         public async Task<bool> ConnectToDevice()
         {
-            if (await bcReader.EnableServiceAsync())
+            if (await bcReader.InitServiceAsync())
             {
                 ConnectionIndicator = "Connecté";
                 CIColor = "Green";
@@ -59,19 +59,19 @@ namespace TestXamConnections.ViewModels
 
         public ICommand ConnectToDeviceCommand { get; private set; }
 
-        public BarcodeReaderViewModel(DeviceInfo deviceI)
+        public BarcodeReaderViewModel(InfoAppareil deviceI)
         {
             CIColor = "Red";
             ConnectionIndicator = "Non connecté";
             IsVisibleData = false;
-            bcReader = BarcodeReaderProvider.GetBarcodeReader(BarcodeDevice.HoneywellBT, Connection.ConnectionType.Bluetooth, deviceI);
+            bcReader = LecteurCodeBarreFournisseur.GetBarcodeReader(BarcodeDevice.HoneywellBT, Connection.ConnexionType.Bluetooth, deviceI);
             ConnectToDeviceCommand = new Command(async () => await ConnectToDevice());
-            bcReader.BarcodeDataReceivedEvent += DataReceived;
+            bcReader.CBDonneesRecuesEvent += DataReceived;
         }
 
         ~BarcodeReaderViewModel()
         {
-            bcReader.BarcodeDataReceivedEvent -= DataReceived;
+            bcReader.CBDonneesRecuesEvent -= DataReceived;
         }
 
         private void DataReceived(object sender, string receivedData)
diff --git a/TestXamConnections/TestXamConnections/ViewModels/CommandItemViewModel.cs b/TestXamConnections/TestXamConnections/ViewModels/CommandItemViewModel.cs
index 1ab32e9..04b042d 100644
--- a/TestXamConnections/TestXamConnections/ViewModels/CommandItemViewModel.cs
+++ b/TestXamConnections/TestXamConnections/ViewModels/CommandItemViewModel.cs
@@ -6,7 +6,7 @@ namespace TestXamConnections.ViewModels
     public class CommandItemViewModel : ViewModelBase
     {
         private string name;
-        private TeoConstants.TeoCommandType toSendCommand;
+        private TeoConstantes.TeoCommandeType toSendCommand;
         private string commandBytes;
 
         public string CommandBytes
@@ -21,17 +21,17 @@ namespace TestXamConnections.ViewModels
             set => SetProperty(ref name, value);
         }
 
-        public TeoConstants.TeoCommandType ToSendCommand
+        public TeoConstantes.TeoCommandeType ToSendCommand
         {
             get => toSendCommand;
             set => SetProperty(ref toSendCommand, value);
         }
 
-        public CommandItemViewModel(TeoConstants.TeoCommandType cmd)
+        public CommandItemViewModel(TeoConstantes.TeoCommandeType cmd)
         {
             ToSendCommand = cmd;
-            Name = TeoConstants.TeoCommandNames.GetValueOrDefault(cmd);
-            CommandBytes = string.Join("-", TeoConstants.TeoCommandValues.GetValueOrDefault(cmd));
+            Name = TeoConstantes.TeoCommandNames.GetValueOrDefault(cmd);
+            CommandBytes = string.Join("-", TeoConstantes.TeoCommandValues.GetValueOrDefault(cmd));
         }
 
     }
diff --git a/TestXamConnections/TestXamConnections/ViewModels/DeviceItemViewModel.cs b/TestXamConnections/TestXamConnections/ViewModels/DeviceItemViewModel.cs
index 3b6eb9e..b21a715 100644
--- a/TestXamConnections/TestXamConnections/ViewModels/DeviceItemViewModel.cs
+++ b/TestXamConnections/TestXamConnections/ViewModels/DeviceItemViewModel.cs
@@ -8,8 +8,8 @@ namespace TestXamConnections.ViewModels
 {
     public class DeviceItemViewModel : ViewModelBase
     {
-        private DeviceInfo deviceI;
-        public DeviceInfo DeviceI
+        private InfoAppareil deviceI;
+        public InfoAppareil DeviceI
         {
 
             get => deviceI;
@@ -20,12 +20,12 @@ namespace TestXamConnections.ViewModels
         private async Task NavigateToDevice()
         {
             // Si c'est le teo du bureau
-            if (DeviceI.MACAddress == "60:A4:23:EB:FB:5C")
+            if (DeviceI.AdresseMAC == "60:A4:23:EB:FB:5C")
             {
                 await Application.Current.MainPage.Navigation.PushAsync(new TeoDeviceView(DeviceI));
             }
             // Si c'est le scanner HoneyWell
-            else if (DeviceI.MACAddress == "00:10:20:30:92:7D" || DeviceI.MACAddress == "00:04:3E:54:A9:B8")
+            else if (DeviceI.AdresseMAC == "00:10:20:30:92:7D" || DeviceI.AdresseMAC == "00:04:3E:54:A9:B8")
             {
                 await Application.Current.MainPage.Navigation.PushAsync(new BluetoothReaderView(DeviceI));
             }
@@ -33,13 +33,13 @@ namespace TestXamConnections.ViewModels
 
         public ICommand NavigateToDeviceViewCommand { private set; get; }
 
-        public DeviceItemViewModel(DeviceInfo deviceInfo)
+        public DeviceItemViewModel(InfoAppareil deviceInfo)
         {
             DeviceI = deviceInfo;
             NavigateToDeviceViewCommand = new Command(async () => await NavigateToDevice());
         }
 
-        public void Update(DeviceInfo newDevice = null)
+        public void Update(InfoAppareil newDevice = null)
         {
             if (newDevice != null)
             {
diff --git a/TestXamConnections/TestXamConnections/ViewModels/InternServiceViewModel.cs b/TestXamConnections/TestXamConnections/ViewModels/InternServiceViewModel.cs
index f8c2e4d..65a1323 100644
--- a/TestXamConnections/TestXamConnections/ViewModels/InternServiceViewModel.cs
+++ b/TestXamConnections/TestXamConnections/ViewModels/InternServiceViewModel.cs
@@ -4,15 +4,14 @@ using System.Windows.Input;
 using TestXamConnections.Device.Barcode;
 using TestXamConnections.Device.RFID;
 using TestXamConnections.Device.RFID.Agrident;
-using TestXamConnections.Models;
 using Xamarin.Forms;
 
 namespace TestXamConnections.ViewModels
 {
     public class InternServiceViewModel : ViewModelBase
     {
-        private IRFIDReader agridentReader;
-        private IBarcodeReader honeyWellReader;
+        private ILecteurRFID agridentReader;
+        private ILecteurCodeBarre honeyWellReader;
 
         private bool isScanning;
 
@@ -69,7 +68,7 @@ namespace TestXamConnections.ViewModels
         private async Task StartScanRFID()
         {
             IsScanning = true;
-            if (await agridentReader.StartScanAsync() == false)
+            if (await agridentReader.LancerScanAsync() == false)
             {
                 ShowError = true;
                 ErrorMessage = "Service agrident non trouvé";
@@ -81,7 +80,7 @@ namespace TestXamConnections.ViewModels
         private async Task StartScanBarcode()
         {
             IsScanning = true;
-            if (await honeyWellReader.StartScanAsync() == false)
+            if (await honeyWellReader.LancerScanAsync() == false)
             {
                 ShowError = true;
                 ErrorMessage = "Service barcode non trouvé";
@@ -98,12 +97,12 @@ namespace TestXamConnections.ViewModels
             ErrorMessage = "";
             StartScanRFIDCommand = new Command(async () => await StartScanRFID());
             StartScanBarcodeCommand = new Command(async () => await StartScanBarcode());
-            agridentReader = RFIDReaderProvider.GetRFIDReader(RFIDDevice.AgridentIntern,Connection.ConnectionType.Intern, new Device.DeviceInfo());
-            agridentReader.RFIDDataReceivedEvent += OnRFIDResultReceived;
-            honeyWellReader = BarcodeReaderProvider.GetBarcodeReader(BarcodeDevice.HoneywellIntern, Connection.ConnectionType.Intern, new Device.DeviceInfo());
-            honeyWellReader.BarcodeDataReceivedEvent += OnBarcodeResultReceived;
-            agridentReader.EnableServiceAsync().Wait();
-            honeyWellReader.EnableServiceAsync().Wait();
+            agridentReader = LecteurRFIDFournisseur.GetLecteurRFID(AppareilRFID.AgridentInterne,Connection.ConnexionType.Intern, new Device.InfoAppareil());
+            agridentReader.RFIDDonneesRecuesEvent += OnRFIDResultReceived;
+            honeyWellReader = LecteurCodeBarreFournisseur.GetBarcodeReader(BarcodeDevice.HoneywellIntern, Connection.ConnexionType.Intern, new Device.InfoAppareil());
+            honeyWellReader.CBDonneesRecuesEvent += OnBarcodeResultReceived;
+            agridentReader.InitServiceAsync().Wait();
+            honeyWellReader.InitServiceAsync().Wait();
         }
 
         public InternServiceViewModel()
diff --git a/TestXamConnections/TestXamConnections/ViewModels/TeoDeviceViewModel.cs b/TestXamConnections/TestXamConnections/ViewModels/TeoDeviceViewModel.cs
index b8efe9e..c642cb1 100644
--- a/TestXamConnections/TestXamConnections/ViewModels/TeoDeviceViewModel.cs
+++ b/TestXamConnections/TestXamConnections/ViewModels/TeoDeviceViewModel.cs
@@ -6,7 +6,6 @@ using TestXamConnections.Connection;
 using TestXamConnections.Device;
 using TestXamConnections.Device.Balance;
 using TestXamConnections.Device.Balance.Balea;
-using TestXamConnections.Models;
 using Xamarin.Forms;
 
 namespace TestXamConnections.ViewModels
@@ -61,7 +60,7 @@ namespace TestXamConnections.ViewModels
         public async Task<bool> ConnectToDevice()
         {
             ShowError = false;
-            IsConnected = await TeoScale.ConnectToBalanceAsync();
+            IsConnected = await TeoScale.ConnexionBalanceAsync();
             return IsConnected;
         }
 
@@ -75,29 +74,29 @@ namespace TestXamConnections.ViewModels
             IsConnected = false;
             IsVisibleData = false;
             ConnectToDeviceCommand = new Command(async () => await ConnectToDevice());
-            SendValueCommand = new Command(async (cmd) => await TeoScale.SendCommandAsync((TeoConstants.TeoCommandType)cmd));
-            TeoScale.PeseeReceivedEvent += PeseeReceived;
+            SendValueCommand = new Command(async (cmd) => await TeoScale.EnvoiCommandeAsync((TeoConstantes.TeoCommandeType)cmd));
+            TeoScale.PeseeRecueEvent += PeseeReceived;
 
             // Chargement des commandes
             AvailableCommandsList = new ObservableCollection<CommandItemViewModel>();
-            foreach (TeoConstants.TeoCommandType _cmd in Enum.GetValues(typeof(TeoConstants.TeoCommandType)))
+            foreach (TeoConstantes.TeoCommandeType _cmd in Enum.GetValues(typeof(TeoConstantes.TeoCommandeType)))
             {
                 AvailableCommandsList.Add(new CommandItemViewModel(_cmd));
             }
 
         }
 
-        public TeoDeviceViewModel(DeviceInfo device)
+        public TeoDeviceViewModel(InfoAppareil device)
         {
             // Appel au Balance provider pour récupérer l'item TeoBalancea avec les fonctions d'initiation
-            TeoScale = BalanceProvider.GetBalance(Balance.TeoBalance, ConnectionType.Bluetooth, device);
-            TeoScale.SendCommandAsync(TeoConstants.TeoCommandType.EmissionPoids);
+            TeoScale = BalanceFournisseur.GetBalance(Balance.TeoBalance, ConnexionType.Bluetooth, device);
+            TeoScale.EnvoiCommandeAsync(TeoConstantes.TeoCommandeType.EmissionPoids);
             Init();
         }
 
         ~TeoDeviceViewModel()
         {
-            TeoScale.PeseeReceivedEvent -= PeseeReceived;
+            TeoScale.PeseeRecueEvent -= PeseeReceived;
         }
 
         public void PeseeReceived(object sender, ReponsePesee args)
diff --git a/TestXamConnections/TestXamConnections/Views/BluetoothReaderView.xaml.cs b/TestXamConnections/TestXamConnections/Views/BluetoothReaderView.xaml.cs
index d8aa2f0..19d115e 100644
--- a/TestXamConnections/TestXamConnections/Views/BluetoothReaderView.xaml.cs
+++ b/TestXamConnections/TestXamConnections/Views/BluetoothReaderView.xaml.cs
@@ -8,7 +8,7 @@ namespace TestXamConnections.Views
     [XamlCompilation(XamlCompilationOptions.Compile)]
     public partial class BluetoothReaderView : ContentPage
     {
-        public BluetoothReaderView(DeviceInfo deviceI)
+        public BluetoothReaderView(InfoAppareil deviceI)
         {
             InitializeComponent();
             BindingContext = new BarcodeReaderViewModel(deviceI);
diff --git a/TestXamConnections/TestXamConnections/Views/TeoDeviceView.xaml.cs b/TestXamConnections/TestXamConnections/Views/TeoDeviceView.xaml.cs
index 37da867..fc3230a 100644
--- a/TestXamConnections/TestXamConnections/Views/TeoDeviceView.xaml.cs
+++ b/TestXamConnections/TestXamConnections/Views/TeoDeviceView.xaml.cs
@@ -8,7 +8,7 @@ namespace TestXamConnections.Views
     [XamlCompilation(XamlCompilationOptions.Compile)]
     public partial class TeoDeviceView : ContentPage
     {
-        public TeoDeviceView(DeviceInfo deviceI)
+        public TeoDeviceView(InfoAppareil deviceI)
         {
             InitializeComponent();
             BindingContext = new TeoDeviceViewModel(deviceI);
