Open FFBoard
Open source force feedback firmware
EncoderSSI Class Reference

#include <EncoderSSI.h>

Inheritance diagram for EncoderSSI:
Encoder SPIDevice CommandHandler PersistentStorage ChoosableClass

Public Types

enum class  EncoderSSI_commands {
  bits , cs , speed , errors ,
  mode
}
 
enum class  EncoderSSI_modes : uint8_t { rawmsb , AMT23 }
 

Public Member Functions

const ClassIdentifier getInfo ()
 Command handlers always have class infos. Works well with ChoosableClass. More...
 
 EncoderSSI ()
 
virtual ~EncoderSSI ()
 
EncoderType getEncoderType ()
 
bool updateFrame ()
 
int32_t getPos ()
 
int32_t getPosAbs ()
 
void setPos (int32_t pos)
 
uint32_t getCpr ()
 
void saveFlash ()
 
void restoreFlash ()
 
std::string getHelpstring ()
 
template<size_t N>
std::string printModes (const std::array< const char *, N > &names)
 
std::string printSpeeds ()
 
CommandStatus command (const ParsedCommand &cmd, std::vector< CommandReply > &replies)
 
void registerCommands ()
 
void configSPI ()
 
void spiRxCompleted (SPIPort *port) override
 
void beginSpiTransfer (SPIPort *port)
 
void endSpiTransfer (SPIPort *port)
 
void setMode (EncoderSSI_modes mode)
 
- 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 spiTxRxCompleted (SPIPort *port)
 
virtual void spiRequestError (SPIPort *port)
 
virtual SPIConfiggetSpiConfig ()
 
- 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 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)
 
- Public Member Functions inherited from PersistentStorage
 PersistentStorage ()
 
virtual ~PersistentStorage ()
 
void restoreFlashDelayed ()
 

Static Public Member Functions

static bool isCreatable ()
 
- Static Public Member Functions inherited from ChoosableClass
static bool isCreatable ()
 
- 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 Member Functions inherited from PersistentStorage
static std::vector< PersistentStorage * > & getFlashHandlers ()
 
static void restoreFlashStartupCb ()
 

Static Public Attributes

static ClassIdentifier info
 
static constexpr std::array< const char *, 2 > mode_names = {"Raw","AMT23"}
 
- 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 Attributes

int lenghtDataBit = 22
 
int spiSpeed = 0
 
uint32_t errors = 0
 
EncoderSSI_modes mode
 
uint32_t lastUpdateTick = 0
 
int32_t pos = 0
 
int32_t posOffset = 0
 
int32_t lastPos = 0
 
int32_t newPos = 0
 
int32_t mtpos = 0
 
uint8_t spi_buf [bytes] = {0}
 
uint8_t transferlen = bytes
 
bool waitData = false
 

Static Private Attributes

static const uint8_t bytes = 8
 
static bool inUse = 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 CommandHandler
bool commandsEnabled = true
 
std::vector< CmdHandlerCommanddefregisteredCommands
 
CmdHandlerInfo cmdHandlerInfo
 
- Protected Attributes inherited from PersistentStorage
bool restoreDelayedFlag = false
 
- Static Protected Attributes inherited from PersistentStorage
static bool startupComplete = false
 

Detailed Description

Definition at line 23 of file EncoderSSI.h.

Member Enumeration Documentation

◆ EncoderSSI_commands

Enumerator
bits 
cs 
speed 
errors 
mode 

Definition at line 44 of file EncoderSSI.h.

◆ EncoderSSI_modes

enum class EncoderSSI::EncoderSSI_modes : uint8_t
strong
Enumerator
rawmsb 
AMT23 

Definition at line 45 of file EncoderSSI.h.

Constructor & Destructor Documentation

◆ EncoderSSI()

EncoderSSI::EncoderSSI ( )

Definition at line 22 of file EncoderSSI.cpp.

◆ ~EncoderSSI()

EncoderSSI::~EncoderSSI ( )
virtual

Definition at line 34 of file EncoderSSI.cpp.

Member Function Documentation

◆ beginSpiTransfer()

void EncoderSSI::beginSpiTransfer ( SPIPort port)
virtual

Reimplemented from SPIDevice.

Definition at line 141 of file EncoderSSI.cpp.

◆ command()

CommandStatus EncoderSSI::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 209 of file EncoderSSI.cpp.

◆ configSPI()

void EncoderSSI::configSPI ( )

Definition at line 61 of file EncoderSSI.cpp.

◆ endSpiTransfer()

void EncoderSSI::endSpiTransfer ( SPIPort port)
virtual

Reimplemented from SPIDevice.

Definition at line 147 of file EncoderSSI.cpp.

◆ getCpr()

uint32_t EncoderSSI::getCpr ( )
virtual

Gets the amount of counts per full rotation of the encoder

Reimplemented from Encoder.

Definition at line 178 of file EncoderSSI.cpp.

◆ getEncoderType()

EncoderType EncoderSSI::getEncoderType ( )
virtual

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

Reimplemented from Encoder.

Definition at line 154 of file EncoderSSI.cpp.

◆ getHelpstring()

std::string EncoderSSI::getHelpstring ( )
inlinevirtual

Returns a description of this class

Reimplemented from CommandHandler.

Definition at line 42 of file EncoderSSI.h.

◆ getInfo()

const ClassIdentifier EncoderSSI::getInfo ( )
virtual

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

Implements CommandHandler.

Definition at line 17 of file EncoderSSI.cpp.

◆ getPos()

int32_t EncoderSSI::getPos ( )
virtual

Returns the encoder position as raw counts

Reimplemented from Encoder.

Definition at line 167 of file EncoderSSI.cpp.

◆ getPosAbs()

int32_t EncoderSSI::getPosAbs ( )
virtual

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

Reimplemented from Encoder.

Definition at line 159 of file EncoderSSI.cpp.

◆ isCreatable()

bool EncoderSSI::isCreatable ( )
static

Definition at line 92 of file EncoderSSI.cpp.

◆ printModes()

template<size_t N>
std::string EncoderSSI::printModes ( const std::array< const char *, N > &  names)
inline

Definition at line 49 of file EncoderSSI.h.

◆ printSpeeds()

std::string EncoderSSI::printSpeeds ( )

Definition at line 199 of file EncoderSSI.cpp.

◆ registerCommands()

void EncoderSSI::registerCommands ( )

Definition at line 182 of file EncoderSSI.cpp.

◆ restoreFlash()

void EncoderSSI::restoreFlash ( )
virtual

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

Reimplemented from PersistentStorage.

Definition at line 41 of file EncoderSSI.cpp.

◆ saveFlash()

void EncoderSSI::saveFlash ( )
virtual

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 52 of file EncoderSSI.cpp.

◆ setMode()

void EncoderSSI::setMode ( EncoderSSI_modes  mode)

Definition at line 190 of file EncoderSSI.cpp.

◆ setPos()

void EncoderSSI::setPos ( int32_t  pos)
virtual

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

Reimplemented from Encoder.

Definition at line 171 of file EncoderSSI.cpp.

◆ spiRxCompleted()

void EncoderSSI::spiRxCompleted ( SPIPort port)
overridevirtual

Reimplemented from SPIDevice.

Definition at line 96 of file EncoderSSI.cpp.

◆ updateFrame()

bool EncoderSSI::updateFrame ( )

Member Data Documentation

◆ bytes

const uint8_t EncoderSSI::bytes = 8
staticprivate

Definition at line 80 of file EncoderSSI.h.

◆ errors

uint32_t EncoderSSI::errors = 0
private

Definition at line 72 of file EncoderSSI.h.

◆ info

ClassIdentifier EncoderSSI::info
static
Initial value:
= {
.name = "SSI" ,
.id=CLSID_ENCODER_SSI
}

Definition at line 26 of file EncoderSSI.h.

◆ inUse

bool EncoderSSI::inUse = false
staticprivate

Definition at line 84 of file EncoderSSI.h.

◆ lastPos

int32_t EncoderSSI::lastPos = 0
private

Definition at line 77 of file EncoderSSI.h.

◆ lastUpdateTick

uint32_t EncoderSSI::lastUpdateTick = 0
private

Definition at line 75 of file EncoderSSI.h.

◆ lenghtDataBit

int EncoderSSI::lenghtDataBit = 22
private

Definition at line 70 of file EncoderSSI.h.

◆ mode

EncoderSSI_modes EncoderSSI::mode
private

Definition at line 73 of file EncoderSSI.h.

◆ mode_names

constexpr std::array<const char*,2> EncoderSSI::mode_names = {"Raw","AMT23"}
staticconstexpr

Definition at line 46 of file EncoderSSI.h.

◆ mtpos

int32_t EncoderSSI::mtpos = 0
private

Definition at line 78 of file EncoderSSI.h.

◆ newPos

int32_t EncoderSSI::newPos = 0
private

Definition at line 77 of file EncoderSSI.h.

◆ pos

int32_t EncoderSSI::pos = 0
private

Definition at line 77 of file EncoderSSI.h.

◆ posOffset

int32_t EncoderSSI::posOffset = 0
private

Definition at line 77 of file EncoderSSI.h.

◆ spi_buf

uint8_t EncoderSSI::spi_buf[bytes] = {0}
private

Definition at line 81 of file EncoderSSI.h.

◆ spiSpeed

int EncoderSSI::spiSpeed = 0
private

Definition at line 71 of file EncoderSSI.h.

◆ transferlen

uint8_t EncoderSSI::transferlen = bytes
private

Definition at line 82 of file EncoderSSI.h.

◆ waitData

bool EncoderSSI::waitData = false
private

Definition at line 86 of file EncoderSSI.h.


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