54 lines
1.6 KiB
C++
54 lines
1.6 KiB
C++
#pragma once
|
|
|
|
namespace ft9 {
|
|
namespace data_transfer {
|
|
namespace digital_button {
|
|
constexpr uint32_t r() { return 0b1 << 7; }
|
|
constexpr uint32_t r(uint32_t reg) { return (reg >> 7) & 0b1; }
|
|
|
|
constexpr uint32_t l() { return 0b1 << 6; }
|
|
constexpr uint32_t l(uint32_t reg) { return (reg >> 6) & 0b1; }
|
|
|
|
constexpr uint32_t d() { return 0b1 << 5; }
|
|
constexpr uint32_t d(uint32_t reg) { return (reg >> 5) & 0b1; }
|
|
|
|
constexpr uint32_t u() { return 0b1 << 4; }
|
|
constexpr uint32_t u(uint32_t reg) { return (reg >> 4) & 0b1; }
|
|
|
|
constexpr uint32_t w() { return 0b1 << 3; }
|
|
constexpr uint32_t w(uint32_t reg) { return (reg >> 3) & 0b1; }
|
|
|
|
constexpr uint32_t a() { return 0b1 << 2; }
|
|
constexpr uint32_t a(uint32_t reg) { return (reg >> 2) & 0b1; }
|
|
|
|
constexpr uint32_t b() { return 0b1 << 1; }
|
|
constexpr uint32_t b(uint32_t reg) { return (reg >> 1) & 0b1; }
|
|
|
|
constexpr uint32_t c() { return 0b1 << 0; }
|
|
constexpr uint32_t c(uint32_t reg) { return (reg >> 0) & 0b1; }
|
|
|
|
}
|
|
|
|
namespace option {
|
|
constexpr uint32_t batt() { return 0b1 << 1; }
|
|
constexpr uint32_t batt(uint32_t reg) { return (reg >> 1) & 0b1; }
|
|
|
|
constexpr uint32_t wire() { return 0b1 << 0; }
|
|
constexpr uint32_t wire(uint32_t reg) { return (reg >> 0) & 0b1; }
|
|
|
|
}
|
|
|
|
struct data_format {
|
|
uint8_t digital_button;
|
|
uint8_t option;
|
|
uint8_t analog_coordinate_overflow;
|
|
uint8_t reserved;
|
|
uint16_t analog_coordinate_axis[8];
|
|
};
|
|
static_assert((sizeof (struct data_format)) % 4 == 0);
|
|
static_assert((sizeof (struct data_format)) == 20);
|
|
}
|
|
|
|
}
|
|
|