Open FFBoard
Open source force feedback firmware
CanInputMain.h
Go to the documentation of this file.
1/*
2 * CanInputMain.h
3 *
4 * Created on: Apr 28, 2025
5 * Author: Yannick
6 */
7
8#ifndef USEREXTENSIONS_INC_CANINPUTMAIN_H_
9#define USEREXTENSIONS_INC_CANINPUTMAIN_H_
10#include "constants.h"
11#ifdef CANINPUTMAIN
12
13#include "FFBoardMain.h"
14#include "PersistentStorage.h"
15#include "ButtonSource.h"
16#include "AnalogSource.h"
17#include "thread.hpp"
18#include "CAN.h"
19#include "SelectableInputs.h"
20
22 enum class CANInput_commands : uint32_t{
24 };
25public:
28 virtual ~CANInputMain();
29
32 static bool isCreatable() {return true;};
33
34 CommandStatus command(const ParsedCommand& cmd,std::vector<CommandReply>& replies);
35 void registerCommands();
36 virtual std::string getHelpstring(){
37 return "Remote CAN Analog/Digital source";
38 }
39
40 void usbInit() override;
41
42 void saveFlash();
43 void restoreFlash();
44
45 void Run();
46
47 void updateControl();
48 void sendReport();
49
50 void setReportRate(uint8_t rateidx);
51 std::string report_rates_names();
52
53
54protected:
55 uint32_t report_rate_cnt = 0;
56 uint32_t report_rate = 1;
57
58 std::vector<int32_t> analogBuffer;
59 uint64_t digitalBuffer;
60
62
63 uint32_t buttons_id = 100;
64 uint32_t analog_id = 110;
65
66 uint8_t rate_idx = 0;
67 const std::array<uint8_t,7> report_rates = {1,2,4,8,10,16,32}; // Maps speed preset to report rates
68
69
70};
71#endif
72#endif /* USEREXTENSIONS_INC_CANINPUTMAIN_H_ */
CommandStatus
uint32_t report_rate_cnt
Definition: CanInputMain.h:55
void restoreFlash()
virtual ~CANInputMain()
static ClassIdentifier info
Definition: CanInputMain.h:30
uint32_t report_rate
Definition: CanInputMain.h:56
void setReportRate(uint8_t rateidx)
CommandStatus command(const ParsedCommand &cmd, std::vector< CommandReply > &replies)
void registerCommands()
virtual std::string getHelpstring()
Definition: CanInputMain.h:36
const std::array< uint8_t, 7 > report_rates
Definition: CanInputMain.h:67
static bool isCreatable()
Definition: CanInputMain.h:32
std::vector< int32_t > analogBuffer
Definition: CanInputMain.h:58
void updateControl()
uint32_t buttons_id
Definition: CanInputMain.h:63
uint8_t rate_idx
Definition: CanInputMain.h:66
void saveFlash()
void usbInit() override
uint64_t digitalBuffer
Definition: CanInputMain.h:59
const ClassIdentifier getInfo()
std::string report_rates_names()
CANPort & can
Definition: CanInputMain.h:61
uint32_t analog_id
Definition: CanInputMain.h:64
Definition: CAN.h:119
CANPort & canport