summaryrefslogtreecommitdiff
path: root/protocol.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocol.hpp')
-rw-r--r--protocol.hpp88
1 files changed, 0 insertions, 88 deletions
diff --git a/protocol.hpp b/protocol.hpp
deleted file mode 100644
index c71b7d3..0000000
--- a/protocol.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-#ifndef THROTTLE_QUADRANT_PROTOCOL_HPP
-#define THROTTLE_QUADRANT_PROTOCOL_HPP
-
-#include "utilities.hpp"
-
-#include <Arduino.h>
-
-//! All our custom code lives in its own name space to avoid collisions.
-namespace tq::protocol {
-
-//! A message as received from the throttle quadrant.
-struct [[gnu::packed]] message {
- //! The current throttle value (unit TBD).
- byte throttle;
- //! The current propeller speed value (unit TBD).
- byte propeller_speed;
- //! The current mixture value (unit TBD).
- byte mixture;
-
- //! The state (pressed/released) of the first trigger.
- byte trigger_1 : 1;
- //! The state (pressed/released) of the second trigger.
- byte trigger_2 : 1;
- //! The state (pressed/released) of the third trigger.
- byte trigger_3 : 1;
- //! The state (pressed/released) of the fourth trigger.
- byte trigger_4 : 1;
- //! The state (pressed/released) of the fifth trigger.
- byte trigger_5 : 1;
- //! The state (pressed/released) of the sixth trigger.
- byte trigger_6 : 1;
-
- //! Whether the throttle is idle or not.
- byte throttle_idle : 1;
-
- //! Whether the throttle is feathered or not (?).
- byte propeller_feather : 1;
-
- //! Whether the mixture is cut off or not.
- byte mixture_cutoff : 1;
-
- //! Reserved bits.
- byte : 7;
-};
-
-//! Initialize the protocol handling subsystem.
-auto init() -> void;
-
-//! Start a run of the protocol handling subsystem.
-//!
-//! A new run is only started if there is not current run ongoing.
-//!
-//! @return true iff. a new run was started, false otherwise.
-auto start() -> bool;
-
-//! Perform the synchronous SPI transfer, if one is pending.
-//!
-//! Perform the final synchronous transfer from the throttle quadrant. If no
-//! new data is available, an empty optional is returned.
-//!
-//! @return An optional object containing a new message if one is available.
-auto perform_transfer() -> optional<message>;
-
-//! @internal
-//! Process the "data ready" signal coming from the throttle quadrant.
-//!
-//! When the throttle quadrant pulls the "data ready" line low, we know that
-//! there is new data available to be read out. We must adhere to a somewhat
-//! strict timing protocol, as detailed in the implemenation of this function.
-auto on_data_ready() -> void;
-
-//! @internal
-//! Process the "start delay" signal coming from the throttle quadrant.
-//!
-//! After notifying us about the data being ready, the "data ready" line will
-//! be deasserted. However, we must wait an additional 1.2ms before we start
-//! the transfer.
-auto on_start_delay() -> void;
-
-//! @internal
-//! Process the end of the start delay.
-//!
-//! The data is of the throttle quadrant is now ready to be read.
-auto on_start_delay_passed() -> void;
-
-}
-
-#endif \ No newline at end of file