68 const std::uint8_t ctrl =
69 (
static_cast<std::uint8_t
>(m) << 7) |
70 static_cast<std::uint8_t
>((channel & 0b00000111) << 4)
73 const std::uint8_t byteCount = 3;
76 const std::uint8_t txData[byteCount] = {
82 std::uint8_t rxData[byteCount]{0};
84 const auto bytesTransferred = ::lgSpiXfer(
86 reinterpret_cast<const char*
>(txData),
87 reinterpret_cast<char*
>(rxData), byteCount);
89 if (bytesTransferred != byteCount) {
90 throw std::runtime_error(
"SPI transfer failed");
96 ((
static_cast<unsigned short>(rxData[1]) & 0x0F) << 8) |
97 (
static_cast<unsigned short>(rxData[2]) & 0xFF);