Open FFBoard
Open source force feedback firmware
CanBridge.h
Go to the documentation of this file.
1/*
2 * CanBridge.h
3 *
4 * Created on: 20.11.2020
5 * Author: Yannick
6 */
7
8
9#ifndef CANBRIDGE_H_
10#define CANBRIDGE_H_
11
12#include "cpp_target_config.h"
13#ifdef CANBRIDGE
14#include <FFBoardMain.h>
15#include "cppmain.h"
16#include "CanHandler.h"
17#include "CAN.h"
18
19//extern "C"{
20//#include "stm32f4xx_hal_can.h"
21//}
22
23
24typedef struct{
25 bool listenOnly = false;
26 uint32_t speed = 500000;
27 bool enabled = false;
29
30
31
36class CanBridge: public FFBoardMain, public CanHandler {
37 enum class CanBridge_commands : uint32_t{
39 };
40public:
41
42 CanBridge();
43 virtual ~CanBridge();
44
46 const ClassIdentifier getInfo() override;
47 static bool isCreatable() {return true;};
48 CommandStatus command(const ParsedCommand& cmd,std::vector<CommandReply>& replies);
49 void sendMessage(uint32_t id, uint64_t msg,uint8_t len,bool rtr);
51 void canRxPendCallback(CANPort* port,CAN_rx_msg& msg) override;
52 void canErrorCallback(CANPort* port, uint32_t error);
53 void cdcRcv(char* Buf, uint32_t *Len) override;
54// CAN_HandleTypeDef* CanHandle = &CANPORT;
55
56 std::string messageToString(CAN_rx_msg msg);
57
58 void update(); // Main loop
59 volatile bool replyPending = false;
60
62 virtual std::string getHelpstring(){return "CAN bus debug bridge. This class is GVRET/SavvyCAN compatible!";}
63
64
65private:
67 std::vector<CAN_rx_msg> rxmessages;
69 int32_t filterId = -1;
70 const uint8_t numBuses = 1;
71
72
74
75 uint8_t txBuf[8] = {0};
76 uint32_t txMailbox;
77 uint32_t rxfifo = 0;
80 bool gvretMode = false;
81 const std::vector<char> keepalivemsg = {0xF1,0x09, 0xDE,0xAD};
82};
83#endif /* CANBRIDGE_H_ */
84#endif
CommandStatus
Definition: CAN.h:119
void update()
Definition: CanBridge.cpp:98
const std::vector< char > keepalivemsg
Definition: CanBridge.h:81
const ClassIdentifier getInfo() override
Definition: CanBridge.cpp:23
static ClassIdentifier info
Definition: CanBridge.h:45
virtual ~CanBridge()
Definition: CanBridge.cpp:48
CAN_Config_t conf2
Definition: CanBridge.h:79
void cdcRcv(char *Buf, uint32_t *Len) override
Definition: CanBridge.cpp:138
void sendMessage()
virtual std::string getHelpstring()
Definition: CanBridge.h:62
bool gvretMode
Definition: CanBridge.h:80
std::string messageToString(CAN_rx_msg msg)
Definition: CanBridge.cpp:89
volatile bool replyPending
Definition: CanBridge.h:59
static bool isCreatable()
Definition: CanBridge.h:47
uint8_t txBuf[8]
Definition: CanBridge.h:75
CommandStatus command(const ParsedCommand &cmd, std::vector< CommandReply > &replies)
Definition: CanBridge.cpp:291
int32_t filterId
Definition: CanBridge.h:69
CANPort * port
Definition: CanBridge.h:66
CAN_Config_t conf1
Definition: CanBridge.h:78
std::vector< CAN_rx_msg > rxmessages
Definition: CanBridge.h:67
void canRxPendCallback(CANPort *port, CAN_rx_msg &msg) override
Definition: CanBridge.cpp:78
CAN_rx_msg lastmsg
Definition: CanBridge.h:68
uint32_t rxfifo
Definition: CanBridge.h:77
CAN_msg_header_tx txHeader
Definition: CanBridge.h:73
uint32_t txMailbox
Definition: CanBridge.h:76
CanBridge_commands
Definition: CanBridge.h:37
const uint8_t numBuses
Definition: CanBridge.h:70
void registerCommands()
void canErrorCallback(CANPort *port, uint32_t error)
Definition: CanBridge.cpp:55
CANPort & canport
Definition: CAN.h:96