diff --git a/src/configuration.h b/src/configuration.h
index 8231d555..7eed800d 100644
--- a/src/configuration.h
+++ b/src/configuration.h
@@ -256,6 +256,7 @@ along with this program. If not, see .
// supported modules list
#define USE_SX1262
#define USE_SX1268
+#define USE_LLCC68
// common pinouts for SX126X modules
#define SX126X_CS 18 // NSS for SX126X
diff --git a/src/main.cpp b/src/main.cpp
index 0171631e..d28b8431 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -40,6 +40,7 @@
#include "RF95Interface.h"
#include "SX1262Interface.h"
#include "SX1268Interface.h"
+#include "LLCC68Interface.h"
#ifdef NRF52_SERIES
#include "variant.h"
@@ -539,6 +540,19 @@ void setup()
}
#endif
+#if defined(USE_LLCC68)
+ if (!rIf) {
+ rIf = new LLCC68Interface(SX126X_CS, SX126X_DIO1, SX126X_RESET, SX126X_BUSY, SPI);
+ if (!rIf->init()) {
+ DEBUG_MSG("Warning: Failed to find LLCC68 radio\n");
+ delete rIf;
+ rIf = NULL;
+ } else {
+ DEBUG_MSG("LLCC68 Radio init succeeded, using LLCC68 radio\n");
+ }
+ }
+#endif
+
#ifdef USE_SIM_RADIO
if (!rIf) {
rIf = new SimRadio;
diff --git a/src/mesh/InterfacesTemplates.cpp b/src/mesh/InterfacesTemplates.cpp
index a50fbd6b..2c8d9b29 100644
--- a/src/mesh/InterfacesTemplates.cpp
+++ b/src/mesh/InterfacesTemplates.cpp
@@ -3,4 +3,5 @@
// We need this declaration for proper linking in derived classes
template class SX126xInterface;
-template class SX126xInterface;
\ No newline at end of file
+template class SX126xInterface;
+template class SX126xInterface;
\ No newline at end of file
diff --git a/src/mesh/LLCC68Interface.cpp b/src/mesh/LLCC68Interface.cpp
new file mode 100644
index 00000000..013b31b4
--- /dev/null
+++ b/src/mesh/LLCC68Interface.cpp
@@ -0,0 +1,9 @@
+#include "configuration.h"
+#include "LLCC68Interface.h"
+#include "error.h"
+
+LLCC68Interface::LLCC68Interface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, RADIOLIB_PIN_TYPE busy,
+ SPIClass &spi)
+ : SX126xInterface(cs, irq, rst, busy, spi)
+{
+}
\ No newline at end of file
diff --git a/src/mesh/LLCC68Interface.h b/src/mesh/LLCC68Interface.h
new file mode 100644
index 00000000..7de5e97f
--- /dev/null
+++ b/src/mesh/LLCC68Interface.h
@@ -0,0 +1,17 @@
+#pragma once
+
+#include "SX126xInterface.h"
+
+/**
+ * Our adapter for LLCC68 radios
+ * https://www.semtech.com/products/wireless-rf/lora-core/llcc68
+ * ⚠️⚠️⚠️
+ * Be aware that LLCC68 does not support Spreading Factor 12 (SF12) and will not work on the default "Long Slow" channel.
+ * You must change the channel if you get `Critical Error #3` with this module.
+ * ⚠️⚠️⚠️
+ */
+class LLCC68Interface : public SX126xInterface
+{
+ public:
+ LLCC68Interface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, RADIOLIB_PIN_TYPE busy, SPIClass &spi);
+};
\ No newline at end of file