version fin de projet S4P Manon Roussey et Stéphane Padrao Dos Santos

Dependencies:   DATA_LOGGER INTERFACE SDFileSystem X_NUCLEO_IKS01A1 mbed-dev

Revision:
1:3b67430fc74d
Parent:
0:24315b4d52d7
Child:
2:504824a18252
--- a/main.cpp	Wed Oct 04 11:55:45 2017 +0000
+++ b/main.cpp	Fri Oct 20 12:42:54 2017 +0000
@@ -4,31 +4,37 @@
 #include "INTERFACE.h"
 #include "DATA_LOGGER.h"
 #include "TIMER_LIB.h"
+#include "math.h"
 
+
+
+Ticker ticker;
+
+bool canlog = 0;
+void INTERRUPTION(void);
+bool dolog = 0;
 DigitalOut L0(LED1);  // led L0
 void automate();
 
-int LO=0;
+short LO=0;
 Timer TIMER_EJECTION;
 Timer TIMER_PARACHUTE;
-int leds;
-int erreur;
-int ALTITUDE = 25842;
-
+short leds;
+short erreur;
+short ALTITUDE = 3374;
 
 int main(void) {
+  ticker.attach(&INTERRUPTION, 1);
   
   while(1){
-  automate();
+    automate();
   }
   
 }
 
 void automate(void){
     
-    
-    
-    typedef enum {TEST=0, COUNT=1, WAIT_EJECTION=2, EJECTION=3, WAIT_PARACHUTE=4, PARACHUTE=5, AUTO_PILOTE=6, LED=7} type_etat;
+    typedef enum {TEST=0, COUNT=1, WAIT_EJECTION=2, EJECTION=3, WAIT_PARACHUTE=4, PARACHUTE=5, AUTO_PILOTE=6, LED=7, ARRET=8} type_etat;
     type_etat etat_actuel;
     static type_etat etat_futur=TEST;
     // gestion des entrees
@@ -38,27 +44,39 @@
     etat_actuel = etat_futur;
     switch(etat_actuel) {
        case TEST :
+            
             if (erreur==0) etat_futur = COUNT;
             break;
         case COUNT :
+            
+            
             if (LO==1) etat_futur = WAIT_EJECTION;
             break;
         case WAIT_EJECTION :
-            if(TIMER_EJECTION.read()>5.0) etat_futur = EJECTION;   //66s IRL
+        
+             if(TIMER_EJECTION.read()>5) {
+                etat_futur = EJECTION;   //66s IRL
+                }
             break;
         case EJECTION :
+
             etat_futur = WAIT_PARACHUTE;
             break;
         case WAIT_PARACHUTE :
-            if(TIMER_PARACHUTE.read()>6.0) etat_futur = PARACHUTE;  //   84s IRL
+            
+            if(TIMER_PARACHUTE.read()>6) etat_futur = PARACHUTE;  //   84s IRL
             break;
         case PARACHUTE :
-            if (ALTITUDE <26000) etat_futur = AUTO_PILOTE;
+            
+            if (ALTITUDE <3375) etat_futur = AUTO_PILOTE;
             break;
         case AUTO_PILOTE :
+            
             if(leds==3) etat_futur = LED;
             break;
         case LED :
+        
+            etat_futur = ARRET;
             break;        
     }
     // gestion des sorties
@@ -72,42 +90,66 @@
             LO=1; 
             break;
         case COUNT :
-            COUNTDOWN();           
+            COUNTDOWN();                       
             break;
         case WAIT_EJECTION :
+            canlog = 1;
             INTERUPTION();        
             TIMER_EJECTION.start();
             break;
         case EJECTION :
+            canlog = 1;
             FCT_EJECTION();
             TIMER_EJECTION.stop();
             TIMER_EJECTION.reset();
             INTERUPTION();            
-            //Gestion de l'éjection
             break;
         case WAIT_PARACHUTE :
+            
             TIMER_PARACHUTE.start();            
-            INTERUPTION();            
+            INTERUPTION();           
             break;
         case PARACHUTE :
             FCT_PARACHUTE();
-            INTERUPTION();            
+            INTERUPTION();           
             //Gestion du lachement du parachute
             break;
         case AUTO_PILOTE :
             //Gestion auto pilote
-            leds=INTERUPTION();            
+            leds = INTERUPTION();
+            //leds=INTERRUPTION();            
             break;
         case LED :
-            L0 = 1;
-            break;      
+            Atterissage();
+            break;  
+        case ARRET :
+            break;    
     }
 }
 
-
-
-
-            
+void INTERRUPTION(void){
+     
+    if (canlog)
+    {
+        dolog = 1;
+    } 
+    
+}  
+/*
+int INTERUPTION(void){
+    int led;
+    
+    if( Buffer_Test == 1) // 0.5
+            {
+                led = DATA_LOGGER_W_SD();
+                #if FLIGHMODE
+                DATA_LOGGER_W_PC();        
+                #endif       
+                Buffer_Test = 0;         
+            } 
+    return led;
+}   
+*/