Files
firmware/src/mesh/STM32WLE5JCInterface.cpp

42 lines
1.1 KiB
C++
Raw Normal View History

#include "configuration.h"
#ifdef ARCH_STM32WL
#include "STM32WLE5JCInterface.h"
#include "error.h"
#ifndef STM32WLx_MAX_POWER
#define STM32WLx_MAX_POWER 22
#endif
2026-01-03 21:19:24 +01:00
STM32WLE5JCInterface::STM32WLE5JCInterface(LockingArduinoHal *hal, RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst,
RADIOLIB_PIN_TYPE busy)
: SX126xInterface(hal, cs, irq, rst, busy) {}
2026-01-03 21:19:24 +01:00
bool STM32WLE5JCInterface::init() {
RadioLibInterface::init();
// https://github.com/Seeed-Studio/LoRaWan-E5-Node/blob/main/Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio_driver.c
#if (!defined(_VARIANT_RAK3172_))
2026-01-03 21:19:24 +01:00
setTCXOVoltage(1.7);
#endif
2026-01-03 21:19:24 +01:00
lora.setRfSwitchTable(rfswitch_pins, rfswitch_table);
2026-01-03 21:19:24 +01:00
limitPower(STM32WLx_MAX_POWER);
2026-01-03 21:19:24 +01:00
int res = lora.begin(getFreq(), bw, sf, cr, syncWord, power, preambleLength, tcxoVoltage);
2026-01-03 21:19:24 +01:00
LOG_INFO("STM32WLx init result %d", res);
2026-01-03 21:19:24 +01:00
LOG_INFO("Frequency set to %f", getFreq());
LOG_INFO("Bandwidth set to %f", bw);
LOG_INFO("Power output set to %d", power);
2026-01-03 21:19:24 +01:00
if (res == RADIOLIB_ERR_NONE)
startReceive(); // start receiving
2026-01-03 21:19:24 +01:00
return res == RADIOLIB_ERR_NONE;
}
#endif // ARCH_STM32WL