Open FFBoard
Open source force feedback firmware
MtEncoderSPI Class Reference

#include <MtEncoderSPI.h>

Inheritance diagram for MtEncoderSPI:
Encoder SPIDevice PersistentStorage CommandHandler cpp_freertos::Thread ChoosableClass

Public Member Functions

 MtEncoderSPI ()
 
virtual ~MtEncoderSPI ()
 
const ClassIdentifier getInfo ()
 Command handlers always have class infos. Works well with ChoosableClass. More...
 
EncoderType getEncoderType ()
 
void Run ()
 
void restoreFlash () override
 
void saveFlash () override
 
int32_t getPos () override
 
uint32_t getCpr () override
 
int32_t getPosAbs () override
 
void setPos (int32_t pos)
 
void initSPI ()
 
void updateAngleStatus ()
 
bool updateAngleStatusCb ()
 
CommandStatus command (const ParsedCommand &cmd, std::vector< CommandReply > &replies)
 
void setCsPin (uint8_t cspin)
 
- Public Member Functions inherited from Encoder
 Encoder ()
 
virtual ~Encoder ()
 
virtual float getPos_f ()
 
virtual float getPosAbs_f ()
 
virtual const ClassType getClassType () override
 returns the used classchooser selection id of this instance More...
 
- Public Member Functions inherited from ChoosableClass
virtual ~ChoosableClass ()
 
uint16_t getSelectionID ()
 
- Public Member Functions inherited from SPIDevice
 SPIDevice (SPIPort &port, OutputPin csPin)
 
 SPIDevice (SPIPort &port, SPIConfig &spiConfig)
 
virtual ~SPIDevice ()
 
void assertChipSelect ()
 
void clearChipSelect ()
 
virtual bool updateCSPin (OutputPin &csPin)
 
virtual void spiTxCompleted (SPIPort *port)
 
virtual void spiRxCompleted (SPIPort *port)
 
virtual void spiRequestError (SPIPort *port)
 
virtual void beginSpiTransfer (SPIPort *port)
 
virtual void endSpiTransfer (SPIPort *port)
 
virtual SPIConfiggetSpiConfig ()
 
- Public Member Functions inherited from PersistentStorage
 PersistentStorage ()
 
virtual ~PersistentStorage ()
 
void restoreFlashDelayed ()
 
- Public Member Functions inherited from CommandHandler
virtual const ClassType getClassType ()
 
 CommandHandler (const char *clsname, uint16_t clsid, uint8_t instance=0)
 
virtual ~CommandHandler ()
 
virtual bool hasCommands ()
 
virtual void setCommandsEnabled (bool enable)
 
void registerCommands ()
 
virtual CommandStatus internalCommand (const ParsedCommand &cmd, std::vector< CommandReply > &replies)
 
virtual std::string getHelpstring ()
 
virtual std::string getCommandsHelpstring ()
 
virtual std::string getCsvHelpstring ()
 
virtual uint8_t getCommandHandlerInstance ()
 
void broadcastCommandReply (CommandReply reply, uint32_t cmdId, CMDtype type)
 
void sendCommandReplyAsync (CommandReply reply, uint32_t cmdId, CMDtype type, CommandInterface *interface=nullptr)
 
virtual uint16_t getCommandHandlerID ()
 
virtual CmdHandlerInfogetCommandHandlerInfo ()
 
virtual bool isValidCommandId (uint32_t cmdid, uint32_t ignoredFlags=0, uint32_t requiredFlag=0)
 
virtual CmdHandlerCommanddefgetCommandFromName (const std::string &cmd, uint32_t ignoredFlags=0)
 
virtual CmdHandlerCommanddefgetCommandFromId (const uint32_t id, uint32_t ignoredFlags=0)
 
template<typename ID >
void registerCommand (const char *cmd, const ID cmdid, const char *help=nullptr, uint32_t flags=0)
 

Static Public Member Functions

static bool isCreatable ()
 
- Static Public Member Functions inherited from ChoosableClass
static bool isCreatable ()
 
- Static Public Member Functions inherited from PersistentStorage
static std::vector< PersistentStorage * > & getFlashHandlers ()
 
static void restoreFlashStartupCb ()
 
- Static Public Member Functions inherited from CommandHandler
static void logSerial (std::string string)
 Send a log formatted sequence. More...
 
static void logSerialDebug (std::string string)
 Send a log formatted sequence if debug is on. More...
 
static bool logsEnabled ()
 
static void setLogsEnabled (bool enabled)
 
static uint32_t getClassIdFromName (const char *name)
 
static const char * getClassNameFromId (const uint32_t id)
 
static CommandHandlergetHandlerFromHandlerId (const uint16_t cmdhandlerID)
 
static CommandHandlergetHandlerFromId (const uint16_t id, const uint8_t instance=0xFF)
 
static CommandHandlergetHandlerFromClassName (const char *name, const uint8_t instance=0xFF)
 
static std::vector< CommandHandler * > getHandlersFromClassName (const char *name)
 
static std::vector< CommandHandler * > getHandlersFromId (const uint16_t id)
 
static bool isInHandlerList (CommandHandler *handler)
 
static std::string getAllHelpstrings ()
 
static std::vector< CommandHandler * > & getCommandHandlers ()
 
template<typename TVal >
static CommandStatus handleGetSet (const ParsedCommand &cmd, std::vector< CommandReply > &replies, TVal &value)
 
template<typename TVal , class cls , class cls1 >
static CommandStatus handleGetSetFunc (const ParsedCommand &cmd, std::vector< CommandReply > &replies, TVal &value, void(cls1::*setfunc)(TVal), cls *obj)
 
template<typename TVal , class cls , class cls1 , class cls2 >
static CommandStatus handleGetFuncSetFunc (const ParsedCommand &cmd, std::vector< CommandReply > &replies, TVal(cls1::*getfunc)(), void(cls2::*setfunc)(TVal), cls *obj)
 
template<typename TVal , class cls , class cls1 >
static CommandStatus handleGetFuncSet (const ParsedCommand &cmd, std::vector< CommandReply > &replies, TVal &value, TVal(cls1::*getfunc)(), cls *obj)
 

Static Public Attributes

static bool inUse = false
 
static ClassIdentifier info
 
- Static Public Attributes inherited from Encoder
static ClassIdentifier info ={.name = "None" , .id=CLSID_ENCODER_NONE, .visibility = ClassVisibility::visible}
 
static const std::vector< class_entry< Encoder > > all_encoders
 
- Static Public Attributes inherited from ChoosableClass
static ClassIdentifier info
 
- Static Public Attributes inherited from CommandHandler
static bool logEnabled = true
 

Private Types

enum class  MtEncoderSPI_commands : uint32_t { cspin , pos , errors }
 

Private Member Functions

uint8_t readSpi (uint8_t addr)
 
void writeSpi (uint8_t addr, uint8_t data)
 
void spiTxRxCompleted (SPIPort *port)
 
- Private Member Functions inherited from cpp_freertos::Thread
 Thread (const std::string Name, uint16_t StackDepth, UBaseType_t Priority)
 
 Thread (const char *Name, uint16_t StackDepth, UBaseType_t Priority)
 
 Thread (uint16_t StackDepth, UBaseType_t Priority)
 
bool Start ()
 
virtual ~Thread ()
 
TaskHandle_t GetHandle ()
 
void Suspend ()
 
void Resume ()
 
void ResumeFromISR ()
 
void Notify ()
 
void NotifyFromISR ()
 
uint32_t WaitForNotification (TickType_t Timeout=portMAX_DELAY)
 
UBaseType_t GetPriority ()
 
UBaseType_t GetPriorityFromISR ()
 
void SetPriority (UBaseType_t NewPriority)
 
std::string GetName ()
 
char * GetName ()
 
virtual void Cleanup ()
 
void Delay (const TickType_t Delay)
 
void DelayUntil (const TickType_t Period)
 
void ResetDelayUntil ()
 
bool Wait (ConditionVariable &Cv, Mutex &CvLock, TickType_t Timeout=portMAX_DELAY)
 

Private Attributes

bool nomag = false
 
bool overspeed = false
 
int32_t lastAngleInt = 0
 
int32_t curAngleInt = 0
 
int32_t curPos = 0
 
int32_t rotations = 0
 
int32_t offset = 0
 
uint8_t cspin = 0
 
bool updateInProgress = false
 
uint32_t errors = 0
 
uint8_t txbuf [4] = {0x03 | MAGNTEK_READ,0,0,0}
 
uint8_t rxbuf [4] = {0,0,0,0}
 
uint8_t rxbuf_t [4] = {0,0,0,0}
 
cpp_freertos::BinarySemaphore requestNewDataSem = cpp_freertos::BinarySemaphore(false)
 
cpp_freertos::BinarySemaphore waitForUpdateSem = cpp_freertos::BinarySemaphore(false)
 

Additional Inherited Members

- Protected Member Functions inherited from SPIDevice
virtual void setSpiConfig (SPIConfig config)
 
- Protected Member Functions inherited from CommandHandler
void setInstance (uint8_t instance)
 
virtual void addCommandHandler ()
 
virtual void removeCommandHandler ()
 
- Static Protected Member Functions inherited from CommandHandler
static std::vector< uint16_t > & getCommandHandlerIds ()
 
- Protected Attributes inherited from Encoder
uint32_t cpr = 0
 
- Protected Attributes inherited from ChoosableClass
uint16_t selectionId
 Should only be written by ClassChooser during creation. More...
 
- Protected Attributes inherited from SPIDevice
SPIPortspiPort
 
SPIConfig spiConfig
 
- Protected Attributes inherited from PersistentStorage
bool restoreDelayedFlag = false
 
- Protected Attributes inherited from CommandHandler
bool commandsEnabled = true
 
std::vector< CmdHandlerCommanddefregisteredCommands
 
CmdHandlerInfo cmdHandlerInfo
 
- Static Protected Attributes inherited from PersistentStorage
static bool startupComplete = false
 
- Static Private Member Functions inherited from cpp_freertos::Thread
static void Yield ()
 
static void StartScheduler ()
 
static void EndScheduler ()
 

Detailed Description

Definition at line 21 of file MtEncoderSPI.h.

Member Enumeration Documentation

◆ MtEncoderSPI_commands

enum class MtEncoderSPI::MtEncoderSPI_commands : uint32_t
strongprivate
Enumerator
cspin 
pos 
errors 

Definition at line 22 of file MtEncoderSPI.h.

Constructor & Destructor Documentation

◆ MtEncoderSPI()

MtEncoderSPI::MtEncoderSPI ( )

Definition at line 21 of file MtEncoderSPI.cpp.

◆ ~MtEncoderSPI()

MtEncoderSPI::~MtEncoderSPI ( )
virtual

Definition at line 39 of file MtEncoderSPI.cpp.

Member Function Documentation

◆ command()

CommandStatus MtEncoderSPI::command ( const ParsedCommand cmd,
std::vector< CommandReply > &  replies 
)
virtual
Parameters
[in]cmdThe parsed command to be executed.
[out]repliesA vector to return one or multiple reply objects into. Replies to the interface will be generated based on the reply objects. A string reply may not contain start, end and separation markers: [,],| Other characters are allowed.

Reimplemented from CommandHandler.

Definition at line 201 of file MtEncoderSPI.cpp.

◆ getCpr()

uint32_t MtEncoderSPI::getCpr ( )
overridevirtual

Gets the amount of counts per full rotation of the encoder

Reimplemented from Encoder.

Definition at line 195 of file MtEncoderSPI.cpp.

◆ getEncoderType()

EncoderType MtEncoderSPI::getEncoderType ( )
inlinevirtual

Returns the type of the encoder. Must override this and NOT return NONE in other classes

Reimplemented from Encoder.

Definition at line 34 of file MtEncoderSPI.h.

◆ getInfo()

const ClassIdentifier MtEncoderSPI::getInfo ( )
virtual

Command handlers always have class infos. Works well with ChoosableClass.

Implements CommandHandler.

Definition at line 17 of file MtEncoderSPI.cpp.

◆ getPos()

int32_t MtEncoderSPI::getPos ( )
overridevirtual

Returns the encoder position as raw counts

Reimplemented from Encoder.

Definition at line 179 of file MtEncoderSPI.cpp.

◆ getPosAbs()

int32_t MtEncoderSPI::getPosAbs ( )
overridevirtual

Returns absolute positions without offsets for absolute encoders. Otherwise it returns getPos

Reimplemented from Encoder.

Definition at line 184 of file MtEncoderSPI.cpp.

◆ initSPI()

void MtEncoderSPI::initSPI ( )

Definition at line 91 of file MtEncoderSPI.cpp.

◆ isCreatable()

static bool MtEncoderSPI::isCreatable ( )
inlinestatic

Definition at line 32 of file MtEncoderSPI.h.

◆ readSpi()

uint8_t MtEncoderSPI::readSpi ( uint8_t  addr)
private

MT encoder reads 1 byte and transmits 1 byte back after that

Definition at line 101 of file MtEncoderSPI.cpp.

◆ restoreFlash()

void MtEncoderSPI::restoreFlash ( )
overridevirtual

Should be implemented to restore settings. This is not automatically called and should be called when appropriate.

Reimplemented from PersistentStorage.

Definition at line 44 of file MtEncoderSPI.cpp.

◆ Run()

void MtEncoderSPI::Run ( )
virtual

Implementation of your actual thread code. You must override this function.

Note
If INCLUDE_vTaskDelete is defined, then you may return from your Run method. This will cause the task to be deleted from FreeRTOS, however you are still responsible to delete the task object. If this is not defined, then retuning from your Run() method will result in an assert.

Implements cpp_freertos::Thread.

Definition at line 58 of file MtEncoderSPI.cpp.

◆ saveFlash()

void MtEncoderSPI::saveFlash ( )
overridevirtual

Called when the user uses the "save" command and presses the save button in the configurator Automatically called by the command parser thread for every class that inherits from PersistentStorage

Reimplemented from PersistentStorage.

Definition at line 51 of file MtEncoderSPI.cpp.

◆ setCsPin()

void MtEncoderSPI::setCsPin ( uint8_t  cspin)

Definition at line 83 of file MtEncoderSPI.cpp.

◆ setPos()

void MtEncoderSPI::setPos ( int32_t  pos)
virtual

Change the position of the encoder Can be used to reset the center

Reimplemented from Encoder.

Definition at line 115 of file MtEncoderSPI.cpp.

◆ spiTxRxCompleted()

void MtEncoderSPI::spiTxRxCompleted ( SPIPort port)
privatevirtual

Reimplemented from SPIDevice.

Definition at line 120 of file MtEncoderSPI.cpp.

◆ updateAngleStatus()

void MtEncoderSPI::updateAngleStatus ( )

Reads the angle and diagnostic registers in burst mode

Definition at line 133 of file MtEncoderSPI.cpp.

◆ updateAngleStatusCb()

bool MtEncoderSPI::updateAngleStatusCb ( )

Definition at line 143 of file MtEncoderSPI.cpp.

◆ writeSpi()

void MtEncoderSPI::writeSpi ( uint8_t  addr,
uint8_t  data 
)
private

Definition at line 110 of file MtEncoderSPI.cpp.

Member Data Documentation

◆ cspin

uint8_t MtEncoderSPI::cspin = 0
private

Definition at line 69 of file MtEncoderSPI.h.

◆ curAngleInt

int32_t MtEncoderSPI::curAngleInt = 0
private

Definition at line 65 of file MtEncoderSPI.h.

◆ curPos

int32_t MtEncoderSPI::curPos = 0
private

Definition at line 66 of file MtEncoderSPI.h.

◆ errors

uint32_t MtEncoderSPI::errors = 0
private

Definition at line 71 of file MtEncoderSPI.h.

◆ info

ClassIdentifier MtEncoderSPI::info
static
Initial value:
= {
.name = "MT6825 SPI3" ,
.id=CLSID_ENCODER_MTSPI,
}

Definition at line 30 of file MtEncoderSPI.h.

◆ inUse

bool MtEncoderSPI::inUse = false
static

Definition at line 29 of file MtEncoderSPI.h.

◆ lastAngleInt

int32_t MtEncoderSPI::lastAngleInt = 0
private

Definition at line 64 of file MtEncoderSPI.h.

◆ nomag

bool MtEncoderSPI::nomag = false
private

Definition at line 62 of file MtEncoderSPI.h.

◆ offset

int32_t MtEncoderSPI::offset = 0
private

Definition at line 68 of file MtEncoderSPI.h.

◆ overspeed

bool MtEncoderSPI::overspeed = false
private

Definition at line 63 of file MtEncoderSPI.h.

◆ requestNewDataSem

cpp_freertos::BinarySemaphore MtEncoderSPI::requestNewDataSem = cpp_freertos::BinarySemaphore(false)
private

Definition at line 77 of file MtEncoderSPI.h.

◆ rotations

int32_t MtEncoderSPI::rotations = 0
private

Definition at line 67 of file MtEncoderSPI.h.

◆ rxbuf

uint8_t MtEncoderSPI::rxbuf[4] = {0,0,0,0}
private

Definition at line 75 of file MtEncoderSPI.h.

◆ rxbuf_t

uint8_t MtEncoderSPI::rxbuf_t[4] = {0,0,0,0}
private

Definition at line 76 of file MtEncoderSPI.h.

◆ txbuf

uint8_t MtEncoderSPI::txbuf[4] = {0x03 | MAGNTEK_READ,0,0,0}
private

Definition at line 74 of file MtEncoderSPI.h.

◆ updateInProgress

bool MtEncoderSPI::updateInProgress = false
private

Definition at line 70 of file MtEncoderSPI.h.

◆ waitForUpdateSem

cpp_freertos::BinarySemaphore MtEncoderSPI::waitForUpdateSem = cpp_freertos::BinarySemaphore(false)
private

Definition at line 78 of file MtEncoderSPI.h.


The documentation for this class was generated from the following files: