#pragma once #include extern "C" { void* initializeEncoder(uint8_t port_a_module, uint32_t port_a_pin, bool port_a_analog_trigger, uint8_t port_b_module, uint32_t port_b_pin, bool port_b_analog_trigger, bool reverseDirection, int32_t* index, int32_t* status); // TODO: fix routing void freeEncoder(void* encoder_pointer, int32_t* status); void resetEncoder(void* encoder_pointer, int32_t* status); int32_t getEncoder(void* encoder_pointer, int32_t* status); // Raw value double getEncoderPeriod(void* encoder_pointer, int32_t* status); void setEncoderMaxPeriod(void* encoder_pointer, double maxPeriod, int32_t* status); bool getEncoderStopped(void* encoder_pointer, int32_t* status); bool getEncoderDirection(void* encoder_pointer, int32_t* status); void setEncoderReverseDirection(void* encoder_pointer, bool reverseDirection, int32_t* status); void setEncoderSamplesToAverage(void* encoder_pointer, uint32_t samplesToAverage, int32_t* status); uint32_t getEncoderSamplesToAverage(void* encoder_pointer, int32_t* status); void setEncoderIndexSource(void* encoder_pointer, uint32_t pin, bool analogTrigger, bool activeHigh, bool edgeSensitive, int32_t* status); }