summaryrefslogtreecommitdiff
path: root/digital/io-hub/src/guybrush
diff options
context:
space:
mode:
Diffstat (limited to 'digital/io-hub/src/guybrush')
-rw-r--r--digital/io-hub/src/guybrush/strat.c9
-rw-r--r--digital/io-hub/src/guybrush/strat.h4
-rw-r--r--digital/io-hub/src/guybrush/top.c6
3 files changed, 19 insertions, 0 deletions
diff --git a/digital/io-hub/src/guybrush/strat.c b/digital/io-hub/src/guybrush/strat.c
index 3e67119d..51b7b4f3 100644
--- a/digital/io-hub/src/guybrush/strat.c
+++ b/digital/io-hub/src/guybrush/strat.c
@@ -290,3 +290,12 @@ strat_clamp_dead (void)
/* TODO */
}
+void
+strat_upper_clamp_dead (void)
+{
+ strat.place[STRAT_PLACE_TOTEM0].valid = 0;
+ strat.place[STRAT_PLACE_TOTEM1].valid = 0;
+ strat.place[STRAT_PLACE_TOTEM2].valid = 0;
+ strat.place[STRAT_PLACE_TOTEM3].valid = 0;
+}
+
diff --git a/digital/io-hub/src/guybrush/strat.h b/digital/io-hub/src/guybrush/strat.h
index 6c4a0255..810db2df 100644
--- a/digital/io-hub/src/guybrush/strat.h
+++ b/digital/io-hub/src/guybrush/strat.h
@@ -65,4 +65,8 @@ strat_giveup (void);
void
strat_clamp_dead (void);
+/** Upper clamp is dead. */
+void
+strat_upper_clamp_dead (void);
+
#endif /* strat_h */
diff --git a/digital/io-hub/src/guybrush/top.c b/digital/io-hub/src/guybrush/top.c
index d7cc7b5f..eea74cde 100644
--- a/digital/io-hub/src/guybrush/top.c
+++ b/digital/io-hub/src/guybrush/top.c
@@ -305,6 +305,12 @@ FSM_TRANS (TOP_CLAMP_ERROR_DECISION, clamp_blocked,
}
}
+FSM_TRANS (TOP_CLAMP_ERROR_DECISION, upper_set_is_dead, TOP_DECISION)
+{
+ strat_upper_clamp_dead ();
+ return FSM_NEXT (TOP_CLAMP_ERROR_DECISION, upper_set_is_dead);
+}
+
/** TOTEM */
FSM_TRANS (TOP_TOTEM_GOING, move_success, TOP_TOTEM_CLEAN_STARTING)