77 lines
2.3 KiB
Markdown
77 lines
2.3 KiB
Markdown
# lr1121_malnus.hpp — API reference
|
||
|
||
```cpp
|
||
#include "lr1121_malnus.hpp" // namespace lr1121
|
||
```
|
||
|
||
## Setup
|
||
|
||
```cpp
|
||
lr1121::Config cfg; // all fields have sensible defaults
|
||
cfg.freq_hz = lr1121::FREQ_433; // FREQ_433 / FREQ_868 / FREQ_2400
|
||
cfg.sf = 7; // spreading factor 6–12
|
||
cfg.bw = 0x04; // 0x03=62.5 kHz 0x04=125 kHz 0x05=250 kHz
|
||
cfg.cr = 0x01; // 0x01=4/5 0x02=4/6 0x03=4/7 0x04=4/8
|
||
cfg.tx_dbm = 10;
|
||
cfg.pa_sel = lr1121::PA_LP; // PA_LP (0–14 dBm) PA_HP (0–22 dBm)
|
||
|
||
lr1121::Radio radio;
|
||
if (!radio.begin(cfg))
|
||
fprintf(stderr, "init failed: %s\n", lr1121::Radio::errorString(radio.lastError()));
|
||
```
|
||
|
||
## TX / RX
|
||
|
||
```cpp
|
||
bool ok = radio.send(data, len); // blocks until TX_DONE or error
|
||
// returns: true=ok false=error (check lastError)
|
||
|
||
lr1121::RxInfo info;
|
||
|
||
// one-shot: arm, wait timeout_ms, chip returns to standby
|
||
int n = radio.receive(buf, sizeof(buf), 1000, &info);
|
||
|
||
// continuous: arm once, chip stays in RX between packets
|
||
radio.startListening();
|
||
for (;;) {
|
||
int n = radio.receive(buf, sizeof(buf), 0, &info); // 0 = wait forever per call
|
||
if (n > 0) { /* handle */ }
|
||
}
|
||
radio.stopListening(); // returns chip to standby
|
||
|
||
// receive() returns: n>=0 bytes -1=timeout/error -2=crc error
|
||
// info.rssi_dbm info.snr_db info.signal_rssi_dbm
|
||
```
|
||
|
||
## Runtime tuning *(call between packets, chip stays in standby)*
|
||
|
||
```cpp
|
||
radio.setFrequency(lr1121::FREQ_868);
|
||
radio.setTxPower(20, lr1121::PA_HP);
|
||
radio.setModulation(9, 0x04, 0x01); // sf, bw, cr
|
||
```
|
||
|
||
## Diagnostics
|
||
|
||
```cpp
|
||
lr1121::ChipVersion v = radio.chipVersion(); // v.hw v.type v.fw_hi v.fw_lo
|
||
float vbat = radio.vbatVolts();
|
||
uint16_t errs = radio.chipErrors(); // chip-side error flags
|
||
lr1121::Error e = radio.lastError();
|
||
const char *msg = lr1121::Radio::errorString(e);
|
||
```
|
||
|
||
## Errors
|
||
|
||
`Ok` `NotReady` `SpiOpen` `SpiIo` `GpioOpen` `BusyTimeout` `BadChip` `TxTimeout` `TxLbd` `RxTimeout` `RxCrc`
|
||
|
||
## Other
|
||
|
||
```cpp
|
||
radio.softResetSettings(); // re-apply Config without hard reset
|
||
radio.reboot(false); // reboot chip (true = stay in bootloader)
|
||
radio.end(); // close SPI + GPIO fds
|
||
const lr1121::Config &c = radio.config(); // current live config
|
||
```
|
||
|