App1_S5 / Mbed 2 deprecated APP4_IRQ

Dependencies:   mbed-rtos mbed

Revision:
5:70d338ee3f77
Parent:
4:728322e9e3eb
Child:
6:f3f442d43c8f
diff -r 728322e9e3eb -r 70d338ee3f77 radio.cpp
--- a/radio.cpp	Wed Oct 11 20:36:04 2017 +0000
+++ b/radio.cpp	Wed Oct 11 20:53:15 2017 +0000
@@ -30,6 +30,8 @@
 DigitalOut in_debug_led(LED4);
 DigitalOut out_debug_led(LED3);
 
+DigitalOut frame_end_led(LED2);
+
 // API functions
 void init_radio_system()
 {
@@ -68,6 +70,7 @@
     out_message_out = 0;
         
     out_debug_led = 0;    
+    frame_end_led = 1;
     
     //////////////////////////////////////////////////////
     // Creation d'un message et insertion dans le buffer
@@ -76,13 +79,14 @@
     message->preambule = HEADER_DELIMITER;
     message->start = HEADER_START;
     message->options = HEADER_DELIMITER;
-    message->length = 0x2;
+    message->length = 0x3;
     
-    message->data[0] = 0xF0;
-    message->data[1] = 0x0F;    
+    message->data[0] = 0xC0;
+    message->data[1] = 0xFF;    
+    message->data[2] = 0xEE;    
     
     // Ajouter calcul
-    message->control = 0xFF;
+    message->control = 0xCE;
     
     message->end = FOOTER_END;
     // On avance dans le buffer;
@@ -92,7 +96,6 @@
     out_timer.start(MANCHESTER_SPEED_OUT);       
 }
 
-
 typedef enum {
     preambule = 0,
     start,
@@ -114,7 +117,7 @@
     #define OUTPUT_HIGH output = 1;
     #define OUTPUT_LOW output = 0;
     
-    #define SET_VAL_BIT_MASK(val) output = 0x1 & val;
+    #define SET_VAL_BIT_MASK(val) output = 0x1 & val; 
     #define SET_VAL_SHIFT(val, shift) SET_VAL_BIT_MASK(val >> (7 - shift))
     
     
@@ -126,6 +129,7 @@
     
     out_debug_led = !out_debug_led;
     
+    // Dependant du state, on progresse dans l'envoi du message
     switch (current_state) 
     {
         case preambule: // preambule
@@ -154,22 +158,35 @@
         }        
         case data: // charge utile
         {
+            SET_VAL_SHIFT(message->data[current_byte], current_byte_progress++)
+            if (current_byte_progress > 7)
+            {
+                current_byte++;
+                current_byte_progress = 0;                 
+                if (current_byte > message->length)
+                {
+                    current_byte = 0;
+                    current_state++;
+                }                 
+            }
             //CHECK_NEXT_STATE
             break;
         }        
         case crc: // controle
         {
+            SET_VAL_SHIFT(message->control, current_byte_progress++);
             CHECK_NEXT_STATE
             break;
         }        
         case end: // end
         {
+            SET_VAL_SHIFT(message->end, current_byte_progress++);
             CHECK_NEXT_STATE
             break; 
         }
         default:
         {
-            current_state = 0;
+            //current_state = 0;
             current_byte = 0;
             current_byte_progress = 0;
             break;
@@ -177,6 +194,10 @@
             
     }
     
-    
+    if (current_state > end)
+    {
+        frame_end_led = 0;
+        //current_state = preambule;
+    }
     //output = !output;
 }