66 void transfer(
const uint8_t* tx, uint8_t* rx, uint16_t len)
override {
70 len >= 3 ?
static_cast<uint16_t
>(tx[1] << 8 | tx[2]) : 0;
76 listening = tx[1] == 0xFF && tx[2] == 0xFF && tx[3] == 0xFF;
87 rx[4] = addr == 0x08D8 ? 0xC8 : addr == 0x0889 ? 0x01 : 0;
90 memcpy(
buffer_ + tx[1], tx + 2, len - 2u);
94 const uint32_t steps =
static_cast<uint32_t
>(tx[1]) << 16 |
95 static_cast<uint32_t
>(tx[2]) << 8 |
123 rx[2] =
static_cast<uint8_t
>(
irq >> 8);
124 rx[3] =
static_cast<uint8_t
>(
irq);
127 irq =
static_cast<uint16_t
>(
irq & ~(tx[1] << 8 | tx[2]));
134 for (
unsigned i = 3; i < len; ++i)
135 rx[i] =
buffer_[(tx[1] + i - 3) & 0xFF];