aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2019-06-28 07:56:08 +0200
committerMatthias P. Braendli <matthias.braendli@mpb.li>2019-06-28 07:56:08 +0200
commitf19631d2a66d01c0cdd85134c5eb63a1da42b34a (patch)
treec01ddc8d73cebc912ea929ad56c1c127b4e64e5e
parent6e1f1165982c5342f30c8b52e0cbde401ab0dede (diff)
downloadglutte-o-matic-f19631d2a66d01c0cdd85134c5eb63a1da42b34a.tar.gz
glutte-o-matic-f19631d2a66d01c0cdd85134c5eb63a1da42b34a.tar.bz2
glutte-o-matic-f19631d2a66d01c0cdd85134c5eb63a1da42b34a.zip
Fix FSM deadlock in FSM_BALISE_COURTE_OPEN
When cw_psk31_done and sq occur simultaneously while inside FSM_BALISE_COURTE
-rw-r--r--doc/statemachine.svg59
-rw-r--r--src/common/src/Core/fsm.c13
2 files changed, 58 insertions, 14 deletions
diff --git a/doc/statemachine.svg b/doc/statemachine.svg
index 2da083f..8741a12 100644
--- a/doc/statemachine.svg
+++ b/doc/statemachine.svg
@@ -14,11 +14,25 @@
viewBox="0 0 744.09448819 1052.3622047"
id="svg8745"
version="1.1"
- inkscape:version="0.92.1 r"
+ inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="statemachine.svg">
<defs
id="defs8747">
<marker
+ inkscape:isstock="true"
+ style="overflow:visible;"
+ id="marker1751"
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="scale(0.4) rotate(180) translate(10,0)"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ id="path1749" />
+ </marker>
+ <marker
inkscape:stockid="Arrow1Send"
orient="auto"
refY="0.0"
@@ -177,7 +191,8 @@
refX="0.0"
id="marker11008"
style="overflow:visible;"
- inkscape:isstock="true">
+ inkscape:isstock="true"
+ inkscape:collect="always">
<path
id="path11010"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
@@ -695,14 +710,14 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
- inkscape:zoom="2.8284272"
- inkscape:cx="378.26812"
- inkscape:cy="898.30657"
+ inkscape:zoom="2.0636447"
+ inkscape:cx="273.81169"
+ inkscape:cy="252.26373"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
- inkscape:window-width="1920"
- inkscape:window-height="1043"
+ inkscape:window-width="1876"
+ inkscape:window-height="1044"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
@@ -722,7 +737,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
+ <dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
@@ -2336,9 +2351,9 @@
x="400.38937"
y="951.29523"
id="tspan29929"
- style="font-size:14px;line-height:1.25;font-family:sans-serif">2016-10-21 HB9EGM - HB9FOH</tspan></text>
+ style="font-size:14px;line-height:1.25;font-family:sans-serif">2019-06-28 HB9EGM - HB9FOH</tspan></text>
<g
- transform="matrix(0.81050629,0.58572994,-0.58572994,0.81050629,69.391663,-216.89887)"
+ transform="rotate(35.854573,361.40571,-20.257015)"
id="g7074">
<text
xml:space="preserve"
@@ -2713,5 +2728,29 @@
</g>
</g>
</g>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path1747"
+ d="m 210.9375,316.42471 c 26.81678,24.37139 117.1875,60.9375 171.5625,65.625"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1751)" />
+ <g
+ transform="rotate(78.341568,338.52044,165.46057)"
+ id="g1757">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="72.898773"
+ y="555.24792"
+ id="text1755"
+ transform="rotate(-47.489555)"
+ inkscape:transform-center-x="-1.4038225"
+ inkscape:transform-center-y="5.0931975"><tspan
+ sodipodi:role="line"
+ id="tspan1753"
+ x="72.898773"
+ y="555.24792"
+ style="font-size:7.5px;line-height:1.25;font-family:sans-serif">CW fini &amp; SQ</tspan></text>
+ </g>
</g>
</svg>
diff --git a/src/common/src/Core/fsm.c b/src/common/src/Core/fsm.c
index abe84b3..9fe2c4c 100644
--- a/src/common/src/Core/fsm.c
+++ b/src/common/src/Core/fsm.c
@@ -554,11 +554,16 @@ void fsm_update() {
fsm_out.cw_psk31_trigger = 1;
if (current_state == FSM_BALISE_COURTE) {
- if (fsm_in.sq) {
- next_state = FSM_BALISE_COURTE_OPEN;
+ if (fsm_in.cw_psk31_done) {
+ if (fsm_in.sq) {
+ next_state = FSM_OPEN2;
+ }
+ else {
+ next_state = FSM_OISIF;
+ }
}
- else if (fsm_in.cw_psk31_done) {
- next_state = FSM_OISIF;
+ else if (fsm_in.sq) {
+ next_state = FSM_BALISE_COURTE_OPEN;
}
}
else { //FSM_BALISE_COURTE_OPEN