Browse Source

Update preamble dynamically to match runtime SF changes via CLI

pull/1954/head
overkillfpv 3 months ago
parent
commit
a61add2e6a
  1. 1
      src/helpers/radiolib/CustomLLCC68Wrapper.h
  2. 2
      src/helpers/radiolib/CustomLR1110.h
  3. 3
      src/helpers/radiolib/CustomLR1110Wrapper.h
  4. 1
      src/helpers/radiolib/CustomSTM32WLxWrapper.h
  5. 1
      src/helpers/radiolib/CustomSX1262Wrapper.h
  6. 1
      src/helpers/radiolib/CustomSX1268Wrapper.h
  7. 1
      src/helpers/radiolib/CustomSX1276Wrapper.h
  8. 3
      src/helpers/radiolib/RadioLibWrappers.cpp
  9. 1
      src/helpers/radiolib/RadioLibWrappers.h

1
src/helpers/radiolib/CustomLLCC68Wrapper.h

@ -20,6 +20,7 @@ public:
int sf = ((CustomLLCC68 *)_radio)->spreadingFactor;
return packetScoreInt(snr, sf, packet_len);
}
uint8_t getSpreadingFactor() const override { return ((CustomLLCC68 *)_radio)->spreadingFactor; }
void doResetAGC() override { sx126xResetAGC((SX126x *)_radio); }
};

2
src/helpers/radiolib/CustomLR1110.h

@ -27,4 +27,6 @@ class CustomLR1110 : public LR1110 {
bool detected = ((irq & RADIOLIB_LR11X0_IRQ_SYNC_WORD_HEADER_VALID) || (irq & RADIOLIB_LR11X0_IRQ_PREAMBLE_DETECTED));
return detected;
}
uint8_t getSpreadingFactor() const { return spreadingFactor; }
};

3
src/helpers/radiolib/CustomLR1110Wrapper.h

@ -19,10 +19,11 @@ public:
void onSendFinished() override {
RadioLibWrapper::onSendFinished();
_radio->setPreambleLength(LORA_SF <= 8 ? 32 : 16); // overcomes weird issues with small and big pkts
_radio->setPreambleLength(getSpreadingFactor() <= 8 ? 32 : 16); // overcomes weird issues with small and big pkts
}
float getLastRSSI() const override { return ((CustomLR1110 *)_radio)->getRSSI(); }
float getLastSNR() const override { return ((CustomLR1110 *)_radio)->getSNR(); }
uint8_t getSpreadingFactor() const override { return ((CustomLR1110 *)_radio)->getSpreadingFactor(); }
int16_t setRxBoostedGainMode(bool en) { return ((CustomLR1110 *)_radio)->setRxBoostedGainMode(en); };
};

1
src/helpers/radiolib/CustomSTM32WLxWrapper.h

@ -21,6 +21,7 @@ public:
int sf = ((CustomSTM32WLx *)_radio)->spreadingFactor;
return packetScoreInt(snr, sf, packet_len);
}
uint8_t getSpreadingFactor() const override { return ((CustomSTM32WLx *)_radio)->spreadingFactor; }
void doResetAGC() override { sx126xResetAGC((SX126x *)_radio); }
};

1
src/helpers/radiolib/CustomSX1262Wrapper.h

@ -20,6 +20,7 @@ public:
int sf = ((CustomSX1262 *)_radio)->spreadingFactor;
return packetScoreInt(snr, sf, packet_len);
}
uint8_t getSpreadingFactor() const override { return ((CustomSX1262 *)_radio)->spreadingFactor; }
virtual void powerOff() override {
((CustomSX1262 *)_radio)->sleep(false);
}

1
src/helpers/radiolib/CustomSX1268Wrapper.h

@ -20,6 +20,7 @@ public:
int sf = ((CustomSX1268 *)_radio)->spreadingFactor;
return packetScoreInt(snr, sf, packet_len);
}
uint8_t getSpreadingFactor() const override { return ((CustomSX1268 *)_radio)->spreadingFactor; }
void doResetAGC() override { sx126xResetAGC((SX126x *)_radio); }
};

1
src/helpers/radiolib/CustomSX1276Wrapper.h

@ -19,4 +19,5 @@ public:
int sf = ((CustomSX1276 *)_radio)->spreadingFactor;
return packetScoreInt(snr, sf, packet_len);
}
uint8_t getSpreadingFactor() const override { return ((CustomSX1276 *)_radio)->spreadingFactor; }
};

3
src/helpers/radiolib/RadioLibWrappers.cpp

@ -26,7 +26,7 @@ void setFlag(void) {
void RadioLibWrapper::begin() {
_radio->setPacketReceivedAction(setFlag); // this is also SentComplete interrupt
_radio->setPreambleLength(LORA_SF <= 8 ? 32 : 16); // longer preamble for lower SF improves reliability
_radio->setPreambleLength(getSpreadingFactor() <= 8 ? 32 : 16); // longer preamble for lower SF improves reliability
state = STATE_IDLE;
if (_board->getStartupReason() == BD_STARTUP_RX_PACKET) { // received a LoRa packet (while in deep sleep)
@ -143,6 +143,7 @@ uint32_t RadioLibWrapper::getEstAirtimeFor(int len_bytes) {
bool RadioLibWrapper::startSendRaw(const uint8_t* bytes, int len) {
_board->onBeforeTransmit();
_radio->setPreambleLength(getSpreadingFactor() <= 8 ? 32 : 16); // keep preamble in sync with current SF
int err = _radio->startTransmit((uint8_t *) bytes, len);
if (err == RADIOLIB_ERR_NONE) {
state = STATE_TX_WAIT;

1
src/helpers/radiolib/RadioLibWrappers.h

@ -38,6 +38,7 @@ public:
}
virtual float getCurrentRSSI() =0;
virtual uint8_t getSpreadingFactor() const { return LORA_SF; }
int getNoiseFloor() const override { return _noise_floor; }
void triggerNoiseFloorCalibrate(int threshold) override;

Loading…
Cancel
Save