| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #include <Arduino.h>
- #include "target.h"
- FaketecBoard board;
- RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY, SPI);
- #ifndef LORA_CR
- #define LORA_CR 5
- #endif
- bool radio_init() {
- #ifdef SX126X_DIO3_TCXO_VOLTAGE
- float tcxo = SX126X_DIO3_TCXO_VOLTAGE;
- #else
- float tcxo = 1.6f;
- #endif
- SPI.setPins(P_LORA_MISO, P_LORA_SCLK, P_LORA_MOSI);
- SPI.begin();
- int status = radio.begin(LORA_FREQ, LORA_BW, LORA_SF, LORA_CR, RADIOLIB_SX126X_SYNC_WORD_PRIVATE, LORA_TX_POWER, 8, tcxo);
- if (status == RADIOLIB_ERR_SPI_CMD_FAILED || status == RADIOLIB_ERR_SPI_CMD_INVALID) {
- #define SX126X_DIO3_TCXO_VOLTAGE (0.0f);
- tcxo = SX126X_DIO3_TCXO_VOLTAGE;
- status = radio.begin(LORA_FREQ, LORA_BW, LORA_SF, LORA_CR, RADIOLIB_SX126X_SYNC_WORD_PRIVATE, LORA_TX_POWER, 8, tcxo);
- }
- if (status != RADIOLIB_ERR_NONE) {
- Serial.print("ERROR: radio init failed: ");
- Serial.println(status);
- return false; // fail
- }
-
- radio.setCRC(1);
-
- #ifdef SX126X_CURRENT_LIMIT
- radio.setCurrentLimit(SX126X_CURRENT_LIMIT);
- #endif
- #ifdef SX126X_DIO2_AS_RF_SWITCH
- radio.setDio2AsRfSwitch(SX126X_DIO2_AS_RF_SWITCH);
- #endif
- #ifdef SX126X_RX_BOOSTED_GAIN
- radio.setRxBoostedGainMode(SX126X_RX_BOOSTED_GAIN);
- #endif
- return true; // success
- }
|