Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: radio.cpp
- Revision:
- 5:70d338ee3f77
- Parent:
- 4:728322e9e3eb
- Child:
- 6:f3f442d43c8f
--- 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;
}