Open FFBoard
Open source force feedback firmware
LocalButtons.h
Go to the documentation of this file.
1/*
2 * LocalButtons.h
3 *
4 * Created on: 09.02.2020
5 * Author: Yannick
6 */
7
8#ifndef LOCALBUTTONS_H_
9#define LOCALBUTTONS_H_
10
11#include <ButtonSource.h>
12#include "ChoosableClass.h"
13#include "CommandHandler.h"
14#include "constants.h"
15#include <array>
16#include "GPIOPin.h"
17
19 enum class LocalButtons_commands : uint32_t{
21 };
22private:
23 uint32_t mask = 0xff; // Can have 16 bits stored
24 uint32_t pulsemask = 0;
25 static constexpr uint32_t pulseTimeout = 50; // Update only every 50 ms
26 uint32_t lastPulseTime = 0;
27 void setMask(uint32_t mask);
28 bool polarity = false;
29 static const std::array<InputPin,BUTTON_PINS> button_pins;
30 uint64_t lastOutputs = 0;
31 uint64_t lastButtons = 0;
32public:
34 virtual ~LocalButtons();
35 uint8_t readButtons(uint64_t* buf);
36 uint8_t getButtonInputs(uint64_t* buf,bool pol);
37
40 static bool isCreatable() {return true;};
41
42 static constexpr uint16_t maxButtons{BUTTON_PINS};
43
44 CommandStatus command(const ParsedCommand& cmd,std::vector<CommandReply>& replies);
45
46 std::string getHelpstring(){return "Digital pin button source";};
47
48 void saveFlash(); // Write to flash here
49 void restoreFlash(); // Load from flash
50
51 static inline bool readButton(int button_num) {
52 if (button_num >= maxButtons || button_num < 0) {
53 return false;
54 }
55// return HAL_GPIO_ReadPin(button_ports[button_num], button_pins[button_num]);
56 return button_pins[button_num].read();
57 }
59};
60
61#endif /* LOCALBUTTONS_H_ */
ClassType
Definition: ClassIDs.h:12
CommandStatus
uint32_t lastPulseTime
Definition: LocalButtons.h:26
uint32_t pulsemask
Definition: LocalButtons.h:24
uint8_t getButtonInputs(uint64_t *buf, bool pol)
static constexpr uint16_t maxButtons
Definition: LocalButtons.h:42
std::string getHelpstring()
Definition: LocalButtons.h:46
static const std::array< InputPin, BUTTON_PINS > button_pins
Definition: LocalButtons.h:29
void saveFlash()
void setMask(uint32_t mask)
static bool readButton(int button_num)
Definition: LocalButtons.h:51
virtual ~LocalButtons()
static ClassIdentifier info
Definition: LocalButtons.h:39
uint8_t readButtons(uint64_t *buf)
CommandStatus command(const ParsedCommand &cmd, std::vector< CommandReply > &replies)
void restoreFlash()
static bool isCreatable()
Definition: LocalButtons.h:40
uint64_t lastButtons
Definition: LocalButtons.h:31
uint64_t lastOutputs
Definition: LocalButtons.h:30
const ClassIdentifier getInfo()
uint32_t mask
Definition: LocalButtons.h:23
const ClassType getClassType()
returns the used classchooser selection id of this instance
Definition: LocalButtons.h:58
static constexpr uint32_t pulseTimeout
Definition: LocalButtons.h:25