// Gate.h #ifndef Gate_h #define Gate_h #include #include "Output.h" #include "globals.h" class Gate : public Output { private: uint32_t dur; uint32_t triggerCount; uint32_t scheduledTick; float currentRandomVal; uint32_t len; uint32_t lastTriggerTick = 0xFFFFFFFF; uint64_t startTimeUs; uint32_t pulseDurationUs; public: Gate(uint8_t pin); WaveShape shape = SQUARE; uint32_t startTick = 0; uint32_t pulseWidthTicks = 0; bool sticky = false; int8_t modifierSelectionIndex; uint8_t divideMode; uint8_t swing = 50; uint16_t modifier; uint16_t tickInterval; uint8_t level; uint8_t width; uint8_t p; void turnOn() override; void update(); void turnOff() override; void calculatePulseWidth(); void writeAnalog(uint16_t val); void setLen(uint32_t currentPeriod); void setDiv(uint8_t modifier_selection_index); void setWidth(uint16_t newWidth); }; #endif