aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMaximilien Cuony <maximilien@theglu.org>2016-06-14 23:11:50 +0200
committerMaximilien Cuony <maximilien@theglu.org>2016-06-14 23:11:50 +0200
commit730140d594dd38834212c11db3f4e6332f0404c7 (patch)
tree6081dcd83f26c32ea68e7128ad31068555441f7c /src
parent104206ccafca1361225575af02b1cbee56835ff1 (diff)
downloadglutte-o-matic-730140d594dd38834212c11db3f4e6332f0404c7.tar.gz
glutte-o-matic-730140d594dd38834212c11db3f4e6332f0404c7.tar.bz2
glutte-o-matic-730140d594dd38834212c11db3f4e6332f0404c7.zip
Better BASILE_COURTE -> OPEN
Diffstat (limited to 'src')
-rw-r--r--src/common/src/Core/fsm.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/common/src/Core/fsm.c b/src/common/src/Core/fsm.c
index 374f3e0..a6a0b7c 100644
--- a/src/common/src/Core/fsm.c
+++ b/src/common/src/Core/fsm.c
@@ -45,6 +45,8 @@ static int last_supply_voltage_decivolts = 0;
#define CW_MESSAGE_BALISE_LEN 64
static char cw_message_balise[CW_MESSAGE_BALISE_LEN];
+static int short_balise_got_sq = 0;
+
void fsm_init() {
memset(&fsm_in, 0, sizeof(fsm_in));
memset(&fsm_out, 0, sizeof(fsm_out));
@@ -122,12 +124,14 @@ void fsm_update() {
next_state = FSM_BALISE_SPECIALE;
}
else {
- next_state = FSM_BALISE_LONGUE;
+ next_state = FSM_BALISE_COURTE;
}
}
else if (!fsm_in.qrp && fsm_current_state_time_s() > 20 * 60) {
next_state = FSM_BALISE_COURTE;
}
+
+ short_balise_got_sq = 0;
break;
case FSM_OPEN1:
@@ -404,10 +408,22 @@ void fsm_update() {
fsm_out.cw_psk31_trigger = 1;
if (fsm_in.sq) {
- next_state = FSM_OPEN2;
+ short_balise_got_sq = 1;
}
- else if (fsm_in.cw_psk31_done) {
- next_state = FSM_OISIF;
+
+ if (fsm_in.cw_psk31_done) {
+
+ if (short_balise_got_sq) {
+
+ if (fsm_in.sq) {
+ next_state = FSM_OPEN1;
+ } else {
+ next_state = FSM_OPEN2;
+ }
+
+ } else {
+ next_state = FSM_OISIF;
+ }
}
break;
default: