Open FFBoard
Open source force feedback firmware
Encoder.h
Go to the documentation of this file.
1/*
2 * Encoder.h
3 *
4 * Created on: 25.01.2020
5 * Author: Yannick
6 */
7
8#ifndef ENCODER_H_
9#define ENCODER_H_
10
11#include "FFBoardMain.h"
12#include "ChoosableClass.h"
13
14/*
15 * Note:
16 * Encoders should count UP when turned counterclockwise
17 * This is not the default gamepad direction but matches most motors
18 * If direction is not fixed the encoder class should provide a reverse option
19 */
20
21/*
22 * Info encoder type:
23 * Incremental: relative position with no homing
24 * Incremental with index: Absolute position available after homing
25 * Absolute: Absolute position always available
26 */
27enum class EncoderType : uint8_t {NONE=0,incremental=1,incrementalIndex=2,absolute=3};
28
29class Encoder : public ChoosableClass {
30public:
31 Encoder();
32 virtual ~Encoder();
35
37
38 virtual int32_t getPos();
39 virtual float getPos_f();
40
41 virtual int32_t getPosAbs();
42 virtual float getPosAbs_f();
43
44 virtual void setPos(int32_t pos);
45
46 virtual uint32_t getCpr(); // Encoder counts per rotation
47
48
49 static const std::vector<class_entry<Encoder> > all_encoders;
50 virtual const ClassType getClassType() override {return ClassType::Encoder;};
51
52protected:
53 uint32_t cpr = 0;
54};
55
56
57#endif /* ENCODER_H_ */
ClassType
Definition: ClassIDs.h:12
EncoderType
Definition: Encoder.h:27
virtual int32_t getPos()
Definition: Encoder.cpp:44
virtual EncoderType getEncoderType()
Definition: Encoder.cpp:29
const ClassIdentifier getInfo()
Definition: Encoder.cpp:14
virtual uint32_t getCpr()
Definition: Encoder.cpp:36
virtual ~Encoder()
Definition: Encoder.cpp:22
virtual float getPos_f()
Definition: Encoder.cpp:67
virtual void setPos(int32_t pos)
Definition: Encoder.cpp:78
Encoder()
Definition: Encoder.cpp:18
uint32_t cpr
Definition: Encoder.h:53
virtual int32_t getPosAbs()
Definition: Encoder.cpp:59
static ClassIdentifier info
Definition: Encoder.h:33
virtual const ClassType getClassType() override
returns the used classchooser selection id of this instance
Definition: Encoder.h:50
static const std::vector< class_entry< Encoder > > all_encoders
Definition: Encoder.h:49
virtual float getPosAbs_f()
Definition: Encoder.cpp:48