// SPDX-License-Identifier: LGPL-3.0-or-later // ST4-ESP32: Dual-pin axis with mutual exclusion // Deactivates opposing pin before activating (matches original safety pattern) #pragma once #include #include #include "ST4Pin.h" #include "ST4Types.h" class ST4Axis { ST4Pin plusPin_; ST4Pin minusPin_; volatile ST4Direction direction_; SemaphoreHandle_t mutex_; public: ST4Axis(); ~ST4Axis(); void begin(int plusPin, int minusPin, ST4PinLogic logic = ST4PinLogic::ACTIVE_HIGH); void plus(); void minus(); void stop(); void move(ST4Direction dir); ST4Direction direction() const; bool isActive() const; };