[chronojump] chronopicRegister Get/Set selectedForMode to manage selected ports. Implememented on forceSensor.



commit 59e3ad8eff9832d1a9e6f7714608bcabd90b0749
Author: Xavier de Blas <xaviblas gmail com>
Date:   Mon May 23 13:51:18 2022 +0200

    chronopicRegister Get/Set selectedForMode to manage selected ports. Implememented on forceSensor.

 src/chronopicRegister.cs    | 48 +++++++++++++++++++++++++++++++++++++++++++++
 src/gui/app1/chronojump.cs  |  2 +-
 src/gui/app1/forceSensor.cs |  8 +++-----
 3 files changed, 52 insertions(+), 6 deletions(-)
---
diff --git a/src/chronopicRegister.cs b/src/chronopicRegister.cs
index d94584f0f..57c1ae860 100644
--- a/src/chronopicRegister.cs
+++ b/src/chronopicRegister.cs
@@ -297,6 +297,54 @@ public abstract class ChronopicRegister
                return null;
        }
 
+       /* ---- selectedForMode ---->
+
+          This helps to solve if there is more than one for a mode.
+          In the future will handle also n forceSensors
+          */
+
+       private List <selectedForMode> selectedForMode_l;
+       public struct selectedForMode
+       {
+               public string portName;
+               public Constants.Modes mode;
+
+               public selectedForMode (string portName, Constants.Modes mode)
+               {
+                       this.portName = portName;
+                       this.mode = mode;
+               }
+       }
+
+       public void SetSelectedForMode (string portName, Constants.Modes mode)
+       {
+               if (selectedForMode_l == null)
+                       selectedForMode_l = new List<selectedForMode> ();
+
+               for (int i = 0; i < selectedForMode_l.Count ; i ++)
+                       if (selectedForMode_l[i].mode == mode)
+                       {
+                               //note structs cannot be changed, so change by a new one
+                               selectedForMode_l[i] = new selectedForMode (portName, mode);
+                               return;
+                       }
+
+               //not found, add it
+               selectedForMode_l.Add (new selectedForMode (portName, mode));
+       }
+
+       public string GetSelectedForMode (Constants.Modes mode)
+       {
+               foreach (selectedForMode sfm in selectedForMode_l)
+                       if (sfm.mode == mode)
+                               return sfm.portName;
+
+               return "";
+       }
+
+       // <---- end of selectedForMode ----
+
+
        //multichronopic
        public List<ChronopicRegisterPort> GetTwoContactsConnected()
        {
diff --git a/src/gui/app1/chronojump.cs b/src/gui/app1/chronojump.cs
index e296d50b5..56dc8ec43 100644
--- a/src/gui/app1/chronojump.cs
+++ b/src/gui/app1/chronojump.cs
@@ -4583,7 +4583,7 @@ public partial class ChronoJumpWindow
 
                if(discoverWin.PortSelected != "")
                {
-                       portSelectedForceSensor = discoverWin.PortSelected; //TODO: get port for other modes
+                       chronopicRegister.SetSelectedForMode (discoverWin.PortSelected, current_mode);
                        button_contacts_detect.Visible = false;
                        hbox_contacts_detect_and_execute.Visible = true;
                }
diff --git a/src/gui/app1/forceSensor.cs b/src/gui/app1/forceSensor.cs
index 9a871e1de..69af1d9d9 100644
--- a/src/gui/app1/forceSensor.cs
+++ b/src/gui/app1/forceSensor.cs
@@ -248,13 +248,11 @@ public partial class ChronoJumpWindow
                layout_force_text.FontDescription = Pango.FontDescription.FromString 
(preferences.GetFontTypeWithSize(10));
        }
 
-       private string portSelectedForceSensor; //in future can be another port to detect two
-
        //Attention: no GTK here!!
        private bool forceSensorConnect()
        {
                LogB.Information(" FS connect 0 ");
-               if(portSelectedForceSensor == "")
+               if (chronopicRegister.GetSelectedForMode (current_mode) == "")
                {
                        forceSensorOtherMessage = forceSensorNotConnectedString;
                        return false;
@@ -269,7 +267,7 @@ public partial class ChronoJumpWindow
        {
                forceSensorOtherMessage = "Connecting ...";
 
-               portFS = new SerialPort(portSelectedForceSensor, 115200); //forceSensor
+               portFS = new SerialPort (chronopicRegister.GetSelectedForMode (current_mode), 115200); 
//forceSensor
                LogB.Information(" FS connect 4: opening port...");
 
                try {
@@ -453,7 +451,7 @@ public partial class ChronoJumpWindow
                        }
                }
 
-               if(portSelectedForceSensor == "")
+               if (chronopicRegister.GetSelectedForMode (current_mode) == "")
                {
                        event_execute_label_message.Text = forceSensorNotConnectedString;
                        return;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]