13 .
name =
"CAN Buttons" ,
64 uint16_t conf1 = (
btnnum-1) & 0x3F;
65 conf1 |= (
invert & 0x1) << 6;
68 uint16_t conf2 =
canId & 0x7ff;
76 invert = (conf >> 6) & 0x1;
85 num = clip<uint8_t,uint8_t>(num, 1, 64);
88 mask = 0xffffffffffffffff;
90 mask = (uint64_t)pow<uint64_t>(2,num)-(uint64_t)1;
97 *buf = ~currentButtons;
111 replies.emplace_back(this->
btnnum);
122 replies.emplace_back(this->
canId);
137 uint32_t
id = (msg.
header.
id) & 0x7FF;
virtual int32_t addCanFilter(CAN_filter filter)=0
virtual void removeCanFilter(uint8_t filterId)=0
void registerCommand(const char *cmd, const ID cmdid, const char *help=nullptr, uint32_t flags=0)
static CommandStatus handleGetSet(const ParsedCommand &cmd, std::vector< CommandReply > &replies, TVal &value)
bool Flash_Write(uint16_t adr, uint16_t dat)
bool Flash_Read(uint16_t adr, uint16_t *buf, bool checkempty=true)
uint8_t data[CAN_MSGBUFSIZE]