diff --git a/software/firmware/source/SoftRF/src/driver/radio/nordic.cpp b/software/firmware/source/SoftRF/src/driver/radio/nordic.cpp
index ec23ca7aa..27d68e793 100644
--- a/software/firmware/source/SoftRF/src/driver/radio/nordic.cpp
+++ b/software/firmware/source/SoftRF/src/driver/radio/nordic.cpp
@@ -66,7 +66,8 @@ static bool nrf905_probe()
SoC->SPI_begin();
-#if defined(ARDUINO) && !defined(RASPBERRY_PI) && !defined(ARDUINO_ARCH_MBED)
+#if defined(ARDUINO) && !defined(RASPBERRY_PI) && \
+ !defined(ARDUINO_ARCH_MBED) && !defined(ARDUINO_ARCH_ZEPHYR)
RadioSPI.setClockDivider(SPI_CLOCK_DIV2);
#endif /* ARDUINO */
diff --git a/software/firmware/source/SoftRF/src/platform/nRF52.h b/software/firmware/source/SoftRF/src/platform/nRF52.h
index 3a4ae4116..deecd3f3e 100644
--- a/software/firmware/source/SoftRF/src/platform/nRF52.h
+++ b/software/firmware/source/SoftRF/src/platform/nRF52.h
@@ -16,13 +16,14 @@
* along with this program. If not, see .
*/
-#if defined(ARDUINO_ARCH_NRF52) || defined(ARDUINO_ARCH_NRF52840)
+#if defined(ARDUINO_ARCH_NRF52) || defined(ARDUINO_ARCH_NRF52840) || \
+ (defined(ARDUINO_ARCH_ZEPHYR) && defined(NRF52840_XXAA))
#ifndef PLATFORM_NRF52_H
#define PLATFORM_NRF52_H
#include
-#if !defined(ARDUINO_ARCH_MBED)
+#if !defined(ARDUINO_ARCH_MBED) && !defined(ARDUINO_ARCH_ZEPHYR)
#include
#endif /* ARDUINO_ARCH_MBED */
@@ -53,7 +54,11 @@
#define SerialOutput Serial1
#define USBSerial Serial
+#if !defined(ARDUINO_ARCH_ZEPHYR)
#define Serial_GNSS_In Serial2
+#else
+#define Serial_GNSS_In Serial1 /* TBD */
+#endif /* ARDUINO_ARCH_ZEPHYR */
#define Serial_GNSS_Out Serial_GNSS_In
#define UATSerial Serial1
@@ -258,7 +263,7 @@ struct rst_info {
#define USE_OGN_ENCRYPTION
#define ENABLE_ADSL
#define ENABLE_PROL
-#if !defined(ARDUINO_ARCH_MBED)
+#if !defined(ARDUINO_ARCH_MBED) && !defined(ARDUINO_ARCH_ZEPHYR)
#define USE_BLE_MIDI
#define ENABLE_REMOTE_ID
#define USE_EXT_I2S_DAC
@@ -277,6 +282,11 @@ struct rst_info {
#define USE_ARDUINOBLE
#define EXCLUDE_IMU
#define EXCLUDE_BME280AUX
+#if defined(ARDUINO_ARCH_ZEPHYR)
+#define EXCLUDE_BLUETOOTH
+#define EXCLUDE_EEPROM
+#undef USE_NMEALIB
+#endif /* ARDUINO_ARCH_ZEPHYR */
#endif /* ARDUINO_ARCH_MBED */
//#define EXCLUDE_PMU
@@ -302,11 +312,11 @@ struct rst_info {
extern Adafruit_NeoPixel strip;
#endif /* EXCLUDE_LED_RING */
-#if !defined(PIN_SERIAL2_RX) && !defined(PIN_SERIAL2_TX)
+#if !defined(PIN_SERIAL2_RX) && !defined(PIN_SERIAL2_TX) && !defined(ARDUINO_ARCH_ZEPHYR)
extern Uart Serial2;
#endif
-#if !defined(ARDUINO_ARCH_MBED)
+#if !defined(ARDUINO_ARCH_MBED) && !defined(ARDUINO_ARCH_ZEPHYR)
extern PCF8563_Class *rtc;
#endif /* ARDUINO_ARCH_MBED */
extern const char *nRF52_Device_Manufacturer, *nRF52_Device_Model, *Hardware_Rev[];
diff --git a/software/firmware/source/SoftRF/src/system/SoC.cpp b/software/firmware/source/SoftRF/src/system/SoC.cpp
index 73d76c1db..0f0705e28 100644
--- a/software/firmware/source/SoftRF/src/system/SoC.cpp
+++ b/software/firmware/source/SoftRF/src/system/SoC.cpp
@@ -34,7 +34,8 @@ byte SoC_setup()
SoC = &STM32_ops;
#elif defined(__ASR6501__) || defined(ARDUINO_ARCH_ASR650X)
SoC = &PSoC4_ops;
-#elif defined(ARDUINO_ARCH_NRF52) || defined(ARDUINO_ARCH_NRF52840)
+#elif defined(ARDUINO_ARCH_NRF52) || defined(ARDUINO_ARCH_NRF52840) || \
+ (defined(ARDUINO_ARCH_ZEPHYR) && defined(NRF52840_XXAA))
SoC = &nRF52_ops;
#elif defined(HACKRF_ONE)
SoC = &LPC43_ops;
diff --git a/software/firmware/source/SoftRF/src/system/SoC.h b/software/firmware/source/SoftRF/src/system/SoC.h
index 6e3a1a3d8..f43559481 100644
--- a/software/firmware/source/SoftRF/src/system/SoC.h
+++ b/software/firmware/source/SoftRF/src/system/SoC.h
@@ -140,7 +140,8 @@ extern const SoC_ops_t STM32_ops;
#if defined(__ASR6501__) || defined(ARDUINO_ARCH_ASR650X)
extern const SoC_ops_t PSoC4_ops;
#endif
-#if defined(ARDUINO_ARCH_NRF52) || defined(ARDUINO_ARCH_NRF52840)
+#if defined(ARDUINO_ARCH_NRF52) || defined(ARDUINO_ARCH_NRF52840) || \
+ (defined(ARDUINO_ARCH_ZEPHYR) && defined(NRF52840_XXAA))
extern const SoC_ops_t nRF52_ops;
#endif
#if defined(HACKRF_ONE)
diff --git a/software/firmware/source/libraries/Adafruit_BMP280_Library/Adafruit_BMP280.h b/software/firmware/source/libraries/Adafruit_BMP280_Library/Adafruit_BMP280.h
index b758b7799..b7f76eb43 100644
--- a/software/firmware/source/libraries/Adafruit_BMP280_Library/Adafruit_BMP280.h
+++ b/software/firmware/source/libraries/Adafruit_BMP280_Library/Adafruit_BMP280.h
@@ -30,7 +30,8 @@
defined(ARDUINO_ARCH_SAMD) || defined(ARDUINO_ARCH_AVR) || \
defined(ARDUINO_ARCH_RP2040) || defined(HACKRF_ONE) || \
defined(ARDUINO_ARCH_RENESAS) || defined(ARDUINO_ARCH_SILABS) || \
- defined(ARDUINO_ARCH_CH32)) || defined(ARDUINO_ARCH_RP2350)
+ defined(ARDUINO_ARCH_CH32) || defined(ARDUINO_ARCH_RP2350) || \
+ defined(ARDUINO_ARCH_ZEPHYR))
#include
#endif
diff --git a/software/firmware/source/libraries/OGN/manchester.h b/software/firmware/source/libraries/OGN/manchester.h
index fcaeb03a0..e6b793fcb 100644
--- a/software/firmware/source/libraries/OGN/manchester.h
+++ b/software/firmware/source/libraries/OGN/manchester.h
@@ -6,7 +6,8 @@
(defined(ARDUINO_ARCH_RP2040) && defined(ARDUINO_ARCH_MBED)) || \
(defined(ARDUINO_ARCH_NRF52840) && defined(ARDUINO_ARCH_MBED)) || \
defined(ARDUINO_ARCH_RENESAS) || defined(ARDUINO_ARCH_SAMD) || \
- defined(ARDUINO_ARCH_SILABS) || defined(ARDUINO_ARCH_CH32)
+ defined(ARDUINO_ARCH_SILABS) || defined(ARDUINO_ARCH_CH32) || \
+ defined(ARDUINO_ARCH_ZEPHYR)
#include
#endif
diff --git a/software/firmware/source/libraries/libmodes/src/mode-s.c b/software/firmware/source/libraries/libmodes/src/mode-s.c
index ecd9b8686..64450aa31 100644
--- a/software/firmware/source/libraries/libmodes/src/mode-s.c
+++ b/software/firmware/source/libraries/libmodes/src/mode-s.c
@@ -46,7 +46,8 @@
static mag_t maglut[129*129];
-#if (defined(ENERGIA_ARCH_CC13X2) || defined(ARDUINO_ARCH_SILABS)) && !defined(M_PI)
+#if (defined(ENERGIA_ARCH_CC13X2) || defined(ARDUINO_ARCH_SILABS) || \
+ defined(ARDUINO_ARCH_ZEPHYR)) && !defined(M_PI)
#define M_PI 3.14159265358979323846
#endif /* ENERGIA_ARCH_CC13X2 */
#else
diff --git a/software/firmware/source/libraries/nRF905/nRF905.cpp b/software/firmware/source/libraries/nRF905/nRF905.cpp
index 1e58af3f0..49eb7c811 100644
--- a/software/firmware/source/libraries/nRF905/nRF905.cpp
+++ b/software/firmware/source/libraries/nRF905/nRF905.cpp
@@ -15,7 +15,7 @@
!defined(ARDUINO_ARCH_ASR650X) && !defined(ARDUINO_ARCH_ASR6601) && \
!defined(ARDUINO_ARCH_RP2040) && !defined(ARDUINO_ARCH_RENESAS) && \
!defined(ARDUINO_ARCH_SILABS) && !defined(ARDUINO_ARCH_CH32) && \
- !defined(ARDUINO_ARCH_RP2350)
+ !defined(ARDUINO_ARCH_RP2350) && !defined(ARDUINO_ARCH_ZEPHYR)
#include
#include
@@ -32,6 +32,7 @@
defined(ARDUINO_ARCH_SAMD) || defined(ARDUINO_ARCH_RP2040) || \
defined(ARDUINO_ARCH_RENESAS) || defined(ARDUINO_ARCH_SILABS) || \
defined(ARDUINO_ARCH_CH32) || defined(ARDUINO_ARCH_RP2350) || \
+ defined(ARDUINO_ARCH_ZEPHYR) || \
(defined(ARDUINO_ARCH_STM32) && defined(ARDUINO_WisDuo_RAK3172_Evaluation_Board))
#define _BV(bit) (1 << (bit))
#endif /* ENERGIA_ARCH_CC13XX || ENERGIA_ARCH_CC13X2 || ARDUINO_ARCH_NRF52 */
@@ -190,7 +191,7 @@ void nRF905_init()
!defined(ARDUINO_ARCH_ASR650X) && !defined(ARDUINO_ARCH_ASR6601) && \
!defined(ARDUINO_ARCH_RP2040) && !defined(ARDUINO_ARCH_RENESAS) && \
!defined(ARDUINO_ARCH_SILABS) && !defined(ARDUINO_ARCH_MBED) && \
- !defined(ARDUINO_ARCH_RP2350)
+ !defined(ARDUINO_ARCH_RP2350) && !defined(ARDUINO_ARCH_ZEPHYR)
SPI.setClockDivider(SPI_CLOCK_DIV2);
#endif /* RASPBERRY_PI */
#else
diff --git a/software/firmware/source/libraries/nRF905/nRF905_config.h b/software/firmware/source/libraries/nRF905/nRF905_config.h
index 5120281f9..33e6bfc7f 100644
--- a/software/firmware/source/libraries/nRF905/nRF905_config.h
+++ b/software/firmware/source/libraries/nRF905/nRF905_config.h
@@ -29,7 +29,8 @@
defined(ARDUINO_ARCH_ASR650X) || defined(ARDUINO_ARCH_ASR6601) || \
defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_ARCH_RENESAS) || \
defined(ARDUINO_ARCH_SILABS) || defined(ARDUINO_ARCH_CH32) || \
- defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_RP2350)
+ defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_RP2350) || \
+ defined(ARDUINO_ARCH_ZEPHYR)
#define NRF905_INTERRUPTS 0
#else
#define NRF905_INTERRUPTS 1
@@ -58,7 +59,8 @@
defined(ARDUINO_ARCH_ASR650X) || defined(ARDUINO_ARCH_ASR6601) || \
defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_ARCH_RENESAS) || \
defined(ARDUINO_ARCH_SILABS) || defined(ARDUINO_ARCH_CH32) || \
- defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_RP2350)
+ defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_RP2350) || \
+ defined(ARDUINO_ARCH_ZEPHYR)
#define NRF905_AM_SW 1
#else
#define NRF905_AM_SW 0
@@ -77,7 +79,8 @@
defined(ARDUINO_ARCH_ASR650X) || defined(ARDUINO_ARCH_ASR6601) || \
defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_ARCH_RENESAS) || \
defined(ARDUINO_ARCH_SILABS) || defined(ARDUINO_ARCH_CH32) || \
- defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_RP2350)
+ defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_RP2350) || \
+ defined(ARDUINO_ARCH_ZEPHYR)
#define NRF905_COLLISION_AVOID 0
#else
#define NRF905_COLLISION_AVOID 1
@@ -204,7 +207,8 @@
#elif defined(ARDUINO_ARCH_SAMD) || defined(ARDUINO_ARCH_RP2040) || \
defined(ARDUINO_ARCH_RENESAS) || defined(ARDUINO_ARCH_SILABS) || \
- defined(ARDUINO_ARCH_CH32) || defined(ARDUINO_ARCH_RP2350)
+ defined(ARDUINO_ARCH_CH32) || defined(ARDUINO_ARCH_RP2350) || \
+ defined(ARDUINO_ARCH_ZEPHYR)
// TBD
#define TRX_EN 0 // Enable/standby pin
@@ -347,7 +351,8 @@
defined(ARDUINO_ARCH_ASR650X) || defined(ARDUINO_ARCH_ASR6601) || \
defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_ARCH_RENESAS) || \
defined(ARDUINO_ARCH_SILABS) || defined(ARDUINO_ARCH_CH32) || \
- defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_RP2350)
+ defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_RP2350) || \
+ defined(ARDUINO_ARCH_ZEPHYR)
#define NRF905_FREQ 868400000UL
#else
#define NRF905_FREQ 433200000UL
@@ -364,7 +369,8 @@
defined(ARDUINO_ARCH_ASR650X) || defined(ARDUINO_ARCH_ASR6601) || \
defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_ARCH_RENESAS) || \
defined(ARDUINO_ARCH_SILABS) || defined(ARDUINO_ARCH_CH32) || \
- defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_RP2350)
+ defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_RP2350) || \
+ defined(ARDUINO_ARCH_ZEPHYR)
#define NRF905_BAND NRF905_BAND_868
#else
#define NRF905_BAND NRF905_BAND_433
@@ -415,7 +421,8 @@
defined(ARDUINO_ARCH_ASR650X) || defined(ARDUINO_ARCH_ASR6601) || \
defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_ARCH_RENESAS) || \
defined(ARDUINO_ARCH_SILABS) || defined(ARDUINO_ARCH_CH32) || \
- defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_RP2350)
+ defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_RP2350) || \
+ defined(ARDUINO_ARCH_ZEPHYR)
#define NRF905_ADDR_SIZE NRF905_ADDR_SIZE_3
//#define NRF905_ADDR_SIZE NRF905_ADDR_SIZE_2
#else
@@ -430,7 +437,8 @@
defined(ARDUINO_ARCH_ASR650X) || defined(ARDUINO_ARCH_ASR6601) || \
defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_ARCH_RENESAS) || \
defined(ARDUINO_ARCH_SILABS) || defined(ARDUINO_ARCH_CH32) || \
- defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_RP2350)
+ defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_RP2350) || \
+ defined(ARDUINO_ARCH_ZEPHYR)
#define NRF905_PAYLOAD_SIZE 24
#else
#define NRF905_PAYLOAD_SIZE 32 //NRF905_MAX_PAYLOAD
diff --git a/software/firmware/source/libraries/nmealib/src/local.h b/software/firmware/source/libraries/nmealib/src/local.h
index f7f54b0d4..11214f236 100644
--- a/software/firmware/source/libraries/nmealib/src/local.h
+++ b/software/firmware/source/libraries/nmealib/src/local.h
@@ -4,7 +4,7 @@
#if !defined(ENERGIA_ARCH_CC13XX) && !defined(ENERGIA_ARCH_CC13X2) && \
!defined(ARDUINO_ARCH_NRF52) && !defined(ARDUINO_ARCH_NRF52840) && \
- !defined(ARDUINO_ARCH_SAMD)
+ !defined(ARDUINO_ARCH_SAMD) && !defined(ARDUINO_ARCH_ZEPHYR)
#include
#if defined(ARDUINO_ARCH_ESP32)
#include "esp_idf_version.h"
@@ -19,7 +19,7 @@
#else
#include
#if defined(ARDUINO_ARCH_NRF52) || defined(ARDUINO_ARCH_NRF52840) || \
- defined(ARDUINO_ARCH_SAMD)
+ defined(ARDUINO_ARCH_SAMD) || defined(ARDUINO_ARCH_ZEPHYR)
#define _AND ,
#define _CONST const
#define _EXFUN(name, proto) name proto