diff options
author | David Crocker <dcrocker@eschertech.com> | 2020-02-12 23:51:56 +0300 |
---|---|---|
committer | David Crocker <dcrocker@eschertech.com> | 2020-02-12 23:51:56 +0300 |
commit | 9885ed7cc55cb19fde1be14c8adfd11dfa7f86cf (patch) | |
tree | 43f81c1a73028b5ecc516854c20601d63d0f119e /src/GCodes/Trigger.h | |
parent | d27f0a701c84fe1fcf4dc99c067b1fc38cd90f91 (diff) |
Refactored GP inputs
Diffstat (limited to 'src/GCodes/Trigger.h')
-rw-r--r-- | src/GCodes/Trigger.h | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/GCodes/Trigger.h b/src/GCodes/Trigger.h index 15d4781a..86aad4e0 100644 --- a/src/GCodes/Trigger.h +++ b/src/GCodes/Trigger.h @@ -9,15 +9,12 @@ #define SRC_GCODES_TRIGGER_H_ #include "RepRapFirmware.h" +#include "GCodeResult.h" #include "Hardware/IoPorts.h" -typedef Bitmap<uint32_t> TriggerNumbersBitmap; // Bitmap of trigger numbers -typedef Bitmap<uint16_t> TriggerInputStatesBitmap; // Bitmap of input states -static_assert(MaxTriggers <= TriggerNumbersBitmap::MaxBits(), "need larger TriggerNumbersBitmap type"); -static_assert(MaxPortsPerTrigger <= TriggerInputStatesBitmap::MaxBits(), "need larger TriggerInputStatesBitmap"); - -struct Trigger +class Trigger { +public: Trigger() noexcept; void Init() noexcept; @@ -28,10 +25,18 @@ struct Trigger // Check whether this trigger is active and update the input states bool Check() noexcept; - IoPort ports[MaxPortsPerTrigger]; - TriggerInputStatesBitmap inputStates; - uint8_t condition; -}; + // Handle M581 for this trigger + GCodeResult Configure(unsigned int number, GCodeBuffer& gb, const StringRef& reply) THROWS(GCodeException); + + // Handle M582 for this trigger + bool CheckLevel() noexcept; +private: + static void AppendInputNames(AxesBitmap endstops, InputPortsBitmap inputs, const StringRef& reply) noexcept; + + AxesBitmap highLevelEndstops, lowLevelEndstops, endstopStates; + InputPortsBitmap highLevelInputs, lowLevelInputs, inputStates; + int8_t condition; +}; #endif /* SRC_GCODES_TRIGGER_H_ */ |