From 0a79f7fc226bc5034dc1257788fbb529e63f4884 Mon Sep 17 00:00:00 2001
From: matthias-bs <83612361+matthias-bs@users.noreply.github.com>
Date: Mon, 23 May 2022 17:30:40 +0200
Subject: [PATCH 1/2] added setCrcFiltering()

---
 src/modules/SX127x/SX127x.h | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/modules/SX127x/SX127x.h b/src/modules/SX127x/SX127x.h
index be3e2d0b..2597695e 100644
--- a/src/modules/SX127x/SX127x.h
+++ b/src/modules/SX127x/SX127x.h
@@ -980,6 +980,15 @@ class SX127x: public PhysicalLayer {
    */
    int16_t variablePacketLengthMode(uint8_t maxLen = RADIOLIB_SX127X_MAX_PACKET_LENGTH_FSK);
 
+   /*!
+      \brief Enable CRC filtering and generation.
+
+      \param crcOn Set or unset CRC filtering and generation.
+
+      \returns \ref status_codes
+   */
+   int16_t setCrcFiltering(bool crcOn = true);
+
     /*!
       \brief Sets RSSI measurement configuration in FSK mode.
 
@@ -1117,6 +1126,7 @@ class SX127x: public PhysicalLayer {
     float _br = 0;
     bool _ook = false;
     bool _crcEnabled = false;
+    bool _crcOn = true; // default value used in FSK mode
     size_t _packetLength = 0;
 
     int16_t setFrequencyRaw(float newFreq);

From 76ddaf5f6747790820538f7de8afaaa46e4d6370 Mon Sep 17 00:00:00 2001
From: matthias-bs <83612361+matthias-bs@users.noreply.github.com>
Date: Mon, 23 May 2022 17:32:58 +0200
Subject: [PATCH 2/2] added setCrcFiltering()

---
 src/modules/SX127x/SX127x.cpp | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/modules/SX127x/SX127x.cpp b/src/modules/SX127x/SX127x.cpp
index 0ab12eff..08680c06 100644
--- a/src/modules/SX127x/SX127x.cpp
+++ b/src/modules/SX127x/SX127x.cpp
@@ -1045,6 +1045,16 @@ int16_t SX127x::variablePacketLengthMode(uint8_t maxLen) {
   return(SX127x::setPacketMode(RADIOLIB_SX127X_PACKET_VARIABLE, maxLen));
 }
 
+int16_t SX127x::setCrcFiltering(bool crcOn) {
+  _crcOn = crcOn;
+
+  if (crcOn == true) {
+    return(_mod->SPIsetRegValue(RADIOLIB_SX127X_REG_PACKET_CONFIG_1, RADIOLIB_SX127X_CRC_ON, 4, 4));
+  } else {
+    return(_mod->SPIsetRegValue(RADIOLIB_SX127X_REG_PACKET_CONFIG_1, RADIOLIB_SX127X_CRC_OFF, 4, 4));
+  }
+}
+
 int16_t SX127x::setRSSIConfig(uint8_t smoothingSamples, int8_t offset) {
   // check active modem
   if(getActiveModem() != RADIOLIB_SX127X_FSK_OOK) {