make it more dry

This commit is contained in:
Wessel Nieboer
2026-02-19 17:34:48 +01:00
committed by Wessel Nieboer
parent 9106ab46e1
commit b2032e11b6
5 changed files with 41 additions and 104 deletions

View File

@@ -2,6 +2,7 @@
#include "CustomSX1262.h"
#include "RadioLibWrappers.h"
#include "SX126xReset.h"
class CustomSX1262Wrapper : public RadioLibWrapper {
public:
@@ -23,33 +24,5 @@ public:
((CustomSX1262 *)_radio)->sleep(false);
}
void doResetAGC() override {
auto* radio = (CustomSX1262 *)_radio;
// Warm sleep powers down analog frontend (resets AGC gain state)
radio->sleep(true);
// Wake to STDBY_RC for calibration
radio->standby(RADIOLIB_SX126X_STANDBY_RC, true);
// Recalibrate all blocks (ADC, PLL, image, oscillators)
uint8_t calData = RADIOLIB_SX126X_CALIBRATE_ALL;
radio->mod->SPIwriteStream(RADIOLIB_SX126X_CMD_CALIBRATE, &calData, 1, true, false);
radio->mod->hal->delay(5);
uint32_t start = millis();
while (radio->mod->hal->digitalRead(radio->mod->getGpio())) {
if (millis() - start > 50) break;
radio->mod->hal->yield();
}
// Re-apply RX settings that calibration may reset
#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
#ifdef SX126X_REGISTER_PATCH
uint8_t r_data = 0;
radio->readRegister(0x8B5, &r_data, 1);
r_data |= 0x01;
radio->writeRegister(0x8B5, &r_data, 1);
#endif
}
void doResetAGC() override { sx126xResetAGC((SX126x *)_radio); }
};