Open FFBoard
Open source force feedback firmware
FFBoardMain.cpp
Go to the documentation of this file.
1/*
2 * FFBoardMain.cpp
3 *
4 * Created on: 23.01.2020
5 * Author: Yannick
6 */
7
8#include "FFBoardMain.h"
9
10#include <thread.hpp>
11#include "constants.h"
12#include "usb_descriptors.h"
13#include "cdc_device.h"
14
15ClassIdentifier FFBoardMain::info ={.name = "Basic (Failsafe)" ,.id=0};
16
17char FFBoardMain::cdcbuf[64];
18
19
20
21FFBoardMain::FFBoardMain() : CommandHandler(CMDCLSTR_MAIN,CMDCLSID_MAIN,0), commandThread(std::make_unique<FFBoardMainCommandThread>(this)){
22 CommandHandler::registerCommands(); // Register the internal system commands. Mainclasses always have these commands and should not call this function anywhere else
23}
24
26 return info;
27}
28
32void FFBoardMain::cdcRcv(char* Buf, uint32_t *Len){
33
34 cdcCmdInterface->addBuf(Buf, Len);
35}
36
40void FFBoardMain::cdcRcvReady(uint8_t itf){
41
42 uint32_t bufferFree = std::min<uint32_t>(cdcCmdInterface->bufferCapacity(),sizeof(this->cdcbuf));
43 uint32_t count = tud_cdc_n_read(itf,this->cdcbuf, bufferFree);
44 this->cdcRcv(this->cdcbuf,&count);
45}
46
47
48
49CommandStatus FFBoardMain::command(const ParsedCommand& cmd,std::vector<CommandReply>& replies){
51}
52
53
54
55
56
62 // Create the usb config if this is not overridden
64 usbdev->registerUsb();
65}
66
72
73}
74
79
80}
81
86
87}
88
89
91 return "Failsafe mainclass with no features. Choose a different mainclass. sys.lsmain to get a list";
92}
93
95
96}
97
CommandStatus
FFBoardMainCommandThread * commandThread
uint32_t tud_cdc_n_read(uint8_t itf, void *buffer, uint32_t bufsize)
Definition: cdc_device.c:151
virtual void update()
Definition: FFBoardMain.cpp:71
static ClassIdentifier info
Definition: FFBoardMain.h:34
static char cdcbuf[]
Definition: FFBoardMain.h:67
virtual CommandStatus command(const ParsedCommand &cmd, std::vector< CommandReply > &replies)
Definition: FFBoardMain.cpp:49
std::unique_ptr< USBdevice > usbdev
Definition: FFBoardMain.h:66
virtual const ClassIdentifier getInfo()
Definition: FFBoardMain.cpp:25
virtual void usbResume()
Definition: FFBoardMain.cpp:85
std::unique_ptr< CDC_CommandInterface > cdcCmdInterface
Definition: FFBoardMain.h:57
virtual void usbInit()
Definition: FFBoardMain.cpp:61
virtual std::string getHelpstring()
Definition: FFBoardMain.cpp:90
virtual void cdcRcv(char *Buf, uint32_t *Len)
Definition: FFBoardMain.cpp:32
virtual void cdcRcvReady(uint8_t itf)
Definition: FFBoardMain.cpp:40
virtual void usbSuspend()
Definition: FFBoardMain.cpp:78
virtual ~FFBoardMain()
Definition: FFBoardMain.cpp:94
const char * name
const uint8_t usb_cdc_conf[]
const tusb_desc_device_t usb_devdesc_ffboard_composite
const usb_string_desc_t usb_ffboard_strings_default