Open FFBoard
Open source force feedback firmware
CanBridge Class Reference

#include <CanBridge.h>

Inheritance diagram for CanBridge:
FFBoardMain CanHandler ChoosableClass CommandHandler

Public Member Functions

 CanBridge ()
 
virtual ~CanBridge ()
 
const ClassIdentifier getInfo () override
 
CommandStatus command (const ParsedCommand &cmd, std::vector< CommandReply > &replies)
 
void sendMessage (uint32_t id, uint64_t msg, uint8_t len, bool rtr)
 
void sendMessage ()
 
void canRxPendCallback (CANPort *port, CAN_rx_msg &msg) override
 
void canErrorCallback (CANPort *port, uint32_t error)
 
void cdcRcv (char *Buf, uint32_t *Len) override
 
std::string messageToString (CAN_rx_msg msg)
 
void update ()
 
void registerCommands ()
 
virtual std::string getHelpstring ()
 
- Public Member Functions inherited from FFBoardMain
const ClassType getClassType () override
 returns the used classchooser selection id of this instance More...
 
 FFBoardMain ()
 
virtual ~FFBoardMain ()
 
virtual void usbInit ()
 
virtual void cdcRcvReady (uint8_t itf)
 
virtual void usbSuspend ()
 
virtual void usbResume ()
 
- Public Member Functions inherited from ChoosableClass
virtual ~ChoosableClass ()
 
uint16_t getSelectionID ()
 
- Public Member Functions inherited from CommandHandler
 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 CanHandler
 CanHandler ()
 
virtual ~CanHandler ()
 
virtual void canRxFullCallback (CANPort *port, uint32_t fifo)
 
virtual void canTxCpltCallback (CANPort *port, uint32_t mailbox)
 
virtual void canTxAbortCallback (CANPort *port, uint32_t mailbox)
 

Static Public Member Functions

static bool isCreatable ()
 
- Static Public Member Functions inherited from FFBoardMain
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 CanHandler
static std::vector< CanHandler * > & getCANHandlers ()
 

Public Attributes

volatile bool replyPending = false
 
- Public Attributes inherited from FFBoardMain
std::unique_ptr< FFBoardMainCommandThreadcommandThread
 
std::unique_ptr< CDC_CommandInterfacecdcCmdInterface = std::make_unique<CDC_CommandInterface>()
 
ErrorPrinter errorPrinter
 
SystemCommands systemCommands
 System command handler. More...
 
std::unique_ptr< UART_CommandInterfaceuartCmdInterface = std::make_unique<UART_CommandInterface>(115200)
 

Static Public Attributes

static ClassIdentifier info
 
- Static Public Attributes inherited from FFBoardMain
static ClassIdentifier info ={.name = "Basic (Failsafe)" ,.id=0}
 
- Static Public Attributes inherited from ChoosableClass
static ClassIdentifier info
 
- Static Public Attributes inherited from CommandHandler
static bool logEnabled = true
 

Private Types

enum class  CanBridge_commands : uint32_t { can , canrtr , canspd }
 

Private Attributes

CANPortport = &canport
 
std::vector< CAN_rx_msgrxmessages
 
CAN_rx_msg lastmsg
 
int32_t filterId = -1
 
const uint8_t numBuses = 1
 
CAN_msg_header_tx txHeader
 
uint8_t txBuf [8] = {0}
 
uint32_t txMailbox
 
uint32_t rxfifo = 0
 
CAN_Config_t conf1
 
CAN_Config_t conf2
 
bool gvretMode = false
 
const std::vector< char > keepalivemsg = {0xF1,0x09, 0xDE,0xAD}
 

Additional Inherited Members

- 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 FFBoardMain
std::unique_ptr< USBdeviceusbdev
 
- Protected Attributes inherited from ChoosableClass
uint16_t selectionId
 Should only be written by ClassChooser during creation. More...
 
- Protected Attributes inherited from CommandHandler
bool commandsEnabled = true
 
std::vector< CmdHandlerCommanddefregisteredCommands
 
CmdHandlerInfo cmdHandlerInfo
 
- Static Protected Attributes inherited from FFBoardMain
static char cdcbuf []
 

Detailed Description

A main class for testing CAN communication. Sends CAN messages via CDC and can transmit CAN messages with 4 bytes

Definition at line 36 of file CanBridge.h.

Member Enumeration Documentation

◆ CanBridge_commands

enum class CanBridge::CanBridge_commands : uint32_t
strongprivate
Enumerator
can 
canrtr 
canspd 

Definition at line 37 of file CanBridge.h.

Constructor & Destructor Documentation

◆ CanBridge()

CanBridge::CanBridge ( )

Definition at line 27 of file CanBridge.cpp.

◆ ~CanBridge()

CanBridge::~CanBridge ( )
virtual

Definition at line 48 of file CanBridge.cpp.

Member Function Documentation

◆ canErrorCallback()

void CanBridge::canErrorCallback ( CANPort port,
uint32_t  errcode 
)
virtual

Error during can transfer

Reimplemented from CanHandler.

Definition at line 55 of file CanBridge.cpp.

◆ canRxPendCallback()

void CanBridge::canRxPendCallback ( CANPort port,
CAN_rx_msg msg 
)
overridevirtual

New message received in fifo number

Reimplemented from CanHandler.

Definition at line 78 of file CanBridge.cpp.

◆ cdcRcv()

void CanBridge::cdcRcv ( char *  Buf,
uint32_t *  Len 
)
overridevirtual

Called when data is received on the CDC port

Reimplemented from FFBoardMain.

Definition at line 138 of file CanBridge.cpp.

◆ command()

CommandStatus CanBridge::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 FFBoardMain.

Definition at line 291 of file CanBridge.cpp.

◆ getHelpstring()

virtual std::string CanBridge::getHelpstring ( )
inlinevirtual

Returns a description of this class

Reimplemented from FFBoardMain.

Definition at line 62 of file CanBridge.h.

◆ getInfo()

const ClassIdentifier CanBridge::getInfo ( )
overridevirtual

Reimplemented from FFBoardMain.

Definition at line 23 of file CanBridge.cpp.

◆ isCreatable()

static bool CanBridge::isCreatable ( )
inlinestatic

Definition at line 47 of file CanBridge.h.

◆ messageToString()

std::string CanBridge::messageToString ( CAN_rx_msg  msg)

Definition at line 89 of file CanBridge.cpp.

◆ registerCommands()

void CanBridge::registerCommands ( )

◆ sendMessage() [1/2]

void CanBridge::sendMessage ( )

◆ sendMessage() [2/2]

void CanBridge::sendMessage ( uint32_t  id,
uint64_t  msg,
uint8_t  len = 8,
bool  rtr = false 
)

Definition at line 61 of file CanBridge.cpp.

◆ update()

void CanBridge::update ( )
virtual

Called in the default thread with no delay Can be reimplemented by custom main classes but should not block

Reimplemented from FFBoardMain.

Definition at line 98 of file CanBridge.cpp.

Member Data Documentation

◆ conf1

CAN_Config_t CanBridge::conf1
private

Definition at line 78 of file CanBridge.h.

◆ conf2

CAN_Config_t CanBridge::conf2
private

Definition at line 79 of file CanBridge.h.

◆ filterId

int32_t CanBridge::filterId = -1
private

Definition at line 69 of file CanBridge.h.

◆ gvretMode

bool CanBridge::gvretMode = false
private

Definition at line 80 of file CanBridge.h.

◆ info

ClassIdentifier CanBridge::info
static
Initial value:
= {
.name = "CAN Bridge (GVRET)" ,
.id=CLSID_MAIN_CAN,
.visibility = ClassVisibility::visible
}

Definition at line 45 of file CanBridge.h.

◆ keepalivemsg

const std::vector<char> CanBridge::keepalivemsg = {0xF1,0x09, 0xDE,0xAD}
private

Definition at line 81 of file CanBridge.h.

◆ lastmsg

CAN_rx_msg CanBridge::lastmsg
private

Definition at line 68 of file CanBridge.h.

◆ numBuses

const uint8_t CanBridge::numBuses = 1
private

Definition at line 70 of file CanBridge.h.

◆ port

CANPort* CanBridge::port = &canport
private

Definition at line 66 of file CanBridge.h.

◆ replyPending

volatile bool CanBridge::replyPending = false

Definition at line 59 of file CanBridge.h.

◆ rxfifo

uint32_t CanBridge::rxfifo = 0
private

Definition at line 77 of file CanBridge.h.

◆ rxmessages

std::vector<CAN_rx_msg> CanBridge::rxmessages
private

Definition at line 67 of file CanBridge.h.

◆ txBuf

uint8_t CanBridge::txBuf[8] = {0}
private

Definition at line 75 of file CanBridge.h.

◆ txHeader

CAN_msg_header_tx CanBridge::txHeader
private

Definition at line 73 of file CanBridge.h.

◆ txMailbox

uint32_t CanBridge::txMailbox
private

Definition at line 76 of file CanBridge.h.


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