17 const uint8_t mode = (status >> 4) & 0x07;
18 const uint8_t
result = (status >> 1) & 0x07;
19 if (mode < 0x2 || mode > 0x6) {
28 return status_ok(status);
32 if (!
bus_.wait_busy()) {
35 bus_.transfer(tx, rx,
n);
40 const uint8_t tx[4] = {
kOpSetRx, 0xFF, 0xFF, 0xFF};
42 return command(tx, rx,
sizeof tx);
47 static_cast<uint8_t
>(mask & 0xFF)};
49 return command(tx, rx,
sizeof tx);
56 if (!
command(irq_tx, irq_rx,
sizeof irq_tx) || !status_ok(irq_rx[1])) {
59 const uint16_t irq =
static_cast<uint16_t
>((irq_rx[2] << 8) | irq_rx[3]);
75 if (!
command(buf_tx, buf_rx,
sizeof buf_tx) || !status_ok(buf_rx[1])) {
78 const uint8_t packet_len = buf_rx[2];
79 const uint8_t
start = buf_rx[3];
82 if (packet_len == 0 || packet_len > max_len) {
92 const uint16_t total =
static_cast<uint16_t
>(3 + packet_len);
99 memcpy(buf,
read_rx_ + 3, packet_len);
113 if (!
command(tx, rx,
sizeof tx) || !status_ok(rx[1])) {
116 out.rssi_x2 =
static_cast<int16_t
>(-
static_cast<int16_t
>(rx[2]));
117 out.snr_x4 =
static_cast<int8_t
>(rx[3]);
118 out.signal_rssi_x2 =
static_cast<int16_t
>(-
static_cast<int16_t
>(rx[4]));
bool clear_irq(uint16_t mask)
bool start_rx_continuous()
bool packet_status(PacketStatus &out)
uint8_t read_tx_[kMaxExchange]
uint8_t read_rx_[kMaxExchange]
RadioStatus receive(uint8_t *buf, uint8_t max_len, uint8_t &len)
bool command(const uint8_t *tx, uint8_t *rx, uint16_t n)
static void start(gnss_frame_parser_t *p, uint8_t byte)
*brief user defined string literal for JSON values *sa std::size_t n
bool status_ok(uint8_t status)
constexpr uint16_t kPacketFlags
constexpr uint8_t kOpGetIrqStatus
constexpr uint8_t kOpGetRxBufferStatus
constexpr uint8_t kOpClearIrqStatus
bool sx1262_status_ok(uint8_t status)
constexpr uint16_t kIrqRxDone
constexpr uint16_t kIrqHeaderErr
constexpr uint16_t kIrqCrcErr
constexpr uint8_t kOpGetPacketStatus
constexpr uint8_t kOpSetRx
constexpr uint8_t kOpReadBuffer