Testing 1 blue pill

Dependencies:   mbed mbed-rtos TextLCD

Revision:
24:728de4bf961e
Parent:
23:07a368f2cdb1
Child:
25:9751619fa030
diff -r 07a368f2cdb1 -r 728de4bf961e Interface/Interface.cpp
--- a/Interface/Interface.cpp	Sat Feb 16 15:19:21 2019 +0000
+++ b/Interface/Interface.cpp	Mon Feb 18 12:02:34 2019 +0000
@@ -10,6 +10,14 @@
 //Interrupt run functions
 void INTERFACE::Interface_Init()//Set all values to 0 bar the default turns
 {
+    Led_Select_Left_mutex.lock();
+    Led_Select_Left = 0;
+    Led_Select_Left_mutex.unlock();
+        
+    Led_Select_Right_mutex.lock();
+    Led_Select_Right= 0;
+    Led_Select_Right_mutex.unlock();
+    
     _Function_mutex.lock();
     _Function =0;
     _Function_mutex.unlock();
@@ -69,6 +77,15 @@
      _System_Running_mutex.lock();
      _System_Running =0;
      _System_Running_mutex.unlock();
+     
+     
+    Led_Select_Left_mutex.lock();
+    Led_Select_Left = 0;
+    Led_Select_Left_mutex.unlock();
+        
+    Led_Select_Right_mutex.lock();
+    Led_Select_Right= 1;
+    Led_Select_Right_mutex.unlock();
 }
 void INTERFACE::Up()//Up Routine
 {
@@ -103,12 +120,12 @@
                 _Duty_Cycle = _Duty_Cycle + 10; //Increases Testing Duty Cycle
                 _Duty_Cycle_mutex.unlock();
             }
-            else if (_Select == true)//Select = 1
-            {
-                _Power_Time_mutex.lock();
-                _Power_Time = _Power_Time + 1;    //Increases time on
-                _Power_Time_mutex.unlock();
-            }
+        }
+        else if (_Select == true)//Select = 1
+        {
+            _Power_Time_mutex.lock();
+            _Power_Time = _Power_Time + 1;    //Increases time on
+            _Power_Time_mutex.unlock();
         }
     }
 }
@@ -131,14 +148,14 @@
                 _Loop = _Loop - 1;
                 _Loop_mutex.unlock();
             }
-            else if (_Select == true)//Select = 1
+        }
+        else if (_Select == true)//Select = 1
+        {
+             if (_Wait_Time > 0)
             {
-                if (_Wait_Time > 0)
-                {
-                         _Wait_Time_mutex.lock();
-                         _Wait_Time = _Wait_Time - 1;
-                         _Wait_Time_mutex.unlock();
-                }
+                    _Wait_Time_mutex.lock();
+                    _Wait_Time = _Wait_Time - 1;
+                    _Wait_Time_mutex.unlock();
             }
         }
     }
@@ -152,39 +169,70 @@
                  _Duty_Cycle = _Duty_Cycle - 10;     //Decreases duty
                  _Duty_Cycle_mutex.unlock();
             }
-            else if (_Select == true)//Select = 1
+        }
+        else if (_Select == true)//Select = 1
+        {
+            if (_Power_Time > 0)
             {
-                if (_Power_Time > 0)
-                {
-                    _Power_Time_mutex.lock();
-                    _Power_Time = _Power_Time - 1;    //Decreases Time on
-                    _Power_Time_mutex.unlock();
-                }
+                _Power_Time_mutex.lock();
+                _Power_Time = _Power_Time - 1;    //Decreases Time on
+                _Power_Time_mutex.unlock();
             }
         }
+        
     }
 }
 void INTERFACE::Start_Stop()//Start / Stop Routine
 {
-    _System_Running = !_System_Running;
+    
+    if(_System_Running != 2)
+    {
+        _System_Running = !_System_Running;
+    }
     //System not running cases (START)
-    if (_Function == 0 & _System_Running == 0)//Twist selected
+    printf("Function is: %d, System is: %d\n",_Function,_System_Running);
+    
+    //System Running cases (Unpause)
+    if (_Function == 0 & _System_Running == 2)//Twist selected to be unpasued
     {
+        printf("Twisting Code unpaused\n");
+        _Twist_Stop_mutex.lock();
+        _Twist_Stop = false;
+        _Twist_Stop_mutex.unlock();
+        
         _Twist_Go_mutex.lock();
         _Twist_Go = true;//toggle used for coiling and twisting and Running the code
         _Twist_Go_mutex.unlock();
+        
+        STEPPER_MOTOR_1.Unpause_Code();
+            
+        printf("Twisting Code unpaused\n");
+        _System_Running = 0;
+
     }
-    else if (_Function == 1 & _System_Running == 0) //Annealing selected 
+    else if (_Function == 1 & _System_Running == 2) //Annealing selected to be unpaused
     {
+        _Anneal_Stop_mutex.lock();
+        _Anneal_Stop = false;
+        _Anneal_Stop_mutex.unlock();
+        printf("Annealing Code unpaused\n");
+        
         _Anneal_Go_mutex.lock();
         _Anneal_Go = true;//toggle and Run the code
         _Anneal_Go_mutex.unlock();
+        _System_Running = 0;
     }
-    else if (_Function == 2 & _System_Running == 0) //Testing selected 
+    else if (_Function == 2 & _System_Running == 2) //Testing selected to be re run
     {
+        _Test_Stop_mutex.lock();
+        _Test_Stop = false;
+        _Test_Stop_mutex.unlock();
+        printf("Testing Code unpaused\n");
         _Test_Go_mutex.lock();
         _Test_Go = true;//toggle and run the code
         _Test_Go_mutex.unlock();
+        _System_Running = 0;
+        
     }
     //System Running cases (STOP)
     else if (_Function == 0 & _System_Running == 1)//Twist selected to be stopped
@@ -213,7 +261,9 @@
         _Test_Stop_mutex.lock();
         _Test_Stop = true;
         _Test_Stop_mutex.unlock();
+        
         printf("Testing Code Paused\n");
+        
         _Tendon_mutex.lock();
         Tendon_Power=0;
         _Tendon_mutex.unlock();
@@ -222,44 +272,24 @@
         _System_Running = 2;
         _System_Running_mutex.unlock();
     }
-        //System Running cases (Unpause)
-    else if (_Function == 0 & _System_Running == 2)//Twist selected to be unpasued
+    //Start Cases
+    else if (_Function == 0 & _System_Running == 0)//Twist selected
     {
-        _Twist_Stop_mutex.lock();
-        _Twist_Stop = false;
-        _Twist_Stop_mutex.unlock();
-        
         _Twist_Go_mutex.lock();
         _Twist_Go = true;//toggle used for coiling and twisting and Running the code
         _Twist_Go_mutex.unlock();
-        
-        STEPPER_MOTOR_1.Unpause_Code();
-            
-        printf("Twisting Code unpaused\n");
-
     }
-    else if (_Function == 1 & _System_Running == 2) //Annealing selected to be unpaused
+    else if (_Function == 1 & _System_Running == 0) //Annealing selected 
     {
-        _Anneal_Stop_mutex.lock();
-        _Anneal_Stop = false;
-        _Anneal_Stop_mutex.unlock();
-        printf("Annealing Code unpaused\n");
-        
         _Anneal_Go_mutex.lock();
         _Anneal_Go = true;//toggle and Run the code
         _Anneal_Go_mutex.unlock();
     }
-    else if (_Function == 2 & _System_Running == 2) //Testing selected to be re run
+    else if (_Function == 2 & _System_Running == 0) //Testing selected 
     {
-        _Test_Stop_mutex.lock();
-        _Test_Stop = false;
-        _Test_Stop_mutex.unlock();
-        printf("Testing Code unpaused\n");
         _Test_Go_mutex.lock();
         _Test_Go = true;//toggle and run the code
         _Test_Go_mutex.unlock();
-        
-        
     }
 }
 void INTERFACE::Function()//Function Routine used to increment through the three functions