Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
244 changes: 242 additions & 2 deletions MyConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -1018,6 +1018,232 @@
//#define MY_RFM95_TCXO
/** @}*/ // End of RFM95SettingGrpPub group

/**
* @defgroup SX126xSettingGrpPub SX126x
* @ingroup TransportSettingGrpPub
* @brief These options are specific to the %SX126x family of wireless transport modules.
*
* The following chips are supported by this driver:
* - Semtech sx1261
* - Semtech sx1262
* @{
*/

/**
* @def MY_RADIO_SX126x
* @brief Define this to use SX126x based radios for sensor network communication.
*/
//#define MY_RADIO_SX126x

/**
* @def MY_SX126x_CS_PIN
* @brief sx126x SPI chip select pin.
*/
#ifndef MY_SX126x_CS_PIN
#define MY_SX126x_CS_PIN DEFAULT_SX126x_CS_PIN
#endif

/**
* @def MY_SX126x_IRQ_PIN
* @brief xs126x IRQ pin (DIO1)
*/
#ifndef MY_SX126x_IRQ_PIN
#define MY_SX126x_IRQ_PIN DEFAULT_SX126x_IRQ_PIN
#endif

/**
* @def MY_SX126x_FREQUENCY
* @brief The frequency to use.
*
* - SX126x_169MHZ
* - SX126x_315MHZ
* - SX126x_434MHZ
* - SX126x_868MHZ
* - SX126x_915MHZ
* - Custom frequency in Hz
*
* This must match the hardware version of the SX126x radio.
* Additional information: https://en.wikipedia.org/wiki/Short_Range_Devices
*/
#ifndef MY_SX126x_FREQUENCY
#define MY_SX126x_FREQUENCY (SX126x_868MHZ)
#endif

/**
* @def MY_SX126x_LORA_SF
* @brief The LoRa spreading factor to use
*
* can be LORA_SF5, LORA_SF6, LORA_SF7, LORA_SF8, LORA_SF9, LORA_SF10,
* LORA_SF11 or LORA_SF12
*
* default is LORA_SF7
*/
#ifndef MY_SX126x_LORA_SF
#define MY_SX126x_LORA_SF LORA_SF7
#endif

/**
* @def MY_SX126x_LORA_BW
* @brief The LoRa bandwidth to use
*
* possible values
* | value | Bandwith |
* |-------------|-----------|
* | LORA_BW_500 | 500 kHz |
* | LORA_BW_250 | 250 kHz |
* | LORA_BW_125 | 125 kHz |
* | LORA_BW_062 | 62.5 kHz |
* | LORA_BW_041 | 41.67 kHz |
* | LORA_BW_031 | 31.25 kHz |
* | LORA_BW_020 | 20.83 kHz |
* | LORA_BW_015 | 15.63 kHz |
* | LORA_BW_010 | 10.45 kHz |
* | LORA_BW_007 | 7.81 kHz |
*
* default is LORA_BW_125
*/
#ifndef MY_SX126x_LORA_BW
#define MY_SX126x_LORA_BW LORA_BW_125
#endif

/**
* @def MY_SX126x_LORA_CR
* @brief The LoRa coding rate to use
*
* Possible values are
* | value | Coding rate |
* |-------------|-------------|
* | LORA_CR_4_5 | 4/5 |
* | LORA_CR_4_6 | 4/6 |
* | LORA_CR_4_7 | 4/7 |
* | LORA_CR_4_8 | 4/8 |
*
* Default is LORA_CR_4_5
*/
#ifndef MY_SX126x_LORA_CR
#define MY_SX126x_LORA_CR LORA_CR_4_5
#endif

/**
* @def MY_SX126x_TCXO_VOLTAGE
* @brief TCXO output voltage for internal TCXO control
*
* If set, DIO3 will be used to provide power to the TCXO when needed
*
* SX126x_TCXO_1V6 1.6V TCXO voltage
* SX126x_TCXO_1V7 1.7V TCXO voltage
* SX126x_TCXO_1V8 1.8V TCXO voltage
* SX126x_TCXO_2V2 2.2V TCXO voltage
* SX126x_TCXO_2V4 2.4V TCXO voltage
* SX126x_TCXO_2V7 2.7V TCXO voltage
* SX126x_TCXO_3V0 3.0V TCXO voltage
* SX126x_TCXO_3V3 3.3V TCXO voltage
*
* However, the TCXO output voltage is at most 200mV below the supply voltage.
**/
//#define MY_SX126x_TCXO_VOLTAGE (SX126x_TCXO_3V3)


/**
* @def MY_SX126c_TCXO_STARTUP_DELAY
* @brief Time in ms it takes the TXCO to start up and stabilize
*
* Will be set to 10ms if @ref MY_SX126x_TCXO_VOLTAGE is set but @ref MY_SX126c_TCXO_STARTUP_DELAY
* is not set.
**/
#if !defined(MY_SX126c_TCXO_STARTUP_DELAY) && defined(MY_SX126x_TCXO_VOLTAGE)
#define MY_SX126c_TCXO_STARTUP_DELAY (10)
#endif

/**
* @def MY_SX126x_USE_TCXO
* @brief The board has a TCXO for SX126x frequency generation
*
* This will be forced if @ref MY_SX126x_TCXO_VOLTAGE or @ref MY_SX126c_TCXO_STARTUP_DELAY are set
**/
#if !defined(MY_SX126x_USE_TCXO) && defined(MY_SX126x_TCXO_VOLTAGE)
#define MY_SX126x_USE_TCXO
#endif

/**
* @def MY_SX126x_USE_DIO2_ANT_SWITCH
* @brief Use DIO2 as antenna switch output.
*/
//#define MY_SX126x_USE_DIO2_ANT_SWITCH

/**
* @def MY_SX126x_ANT_SWITCH_PIN
* @brief Pin to switch antenna circuit between RX and TX mode
*
* Not needed if DIO2 is connected to the antenna switch circuit. Then you have to set
* @ref MY_SX126x_USE_DIO2_ANT_SWITCH
*/
//#define MY_SX126x_ANT_SWITCH_PIN (GPIO3)

/**
* @def MY_SX126x_VARIANT
* @brief details if it's a sx1261 or sx1262
*
* - 1: sx1261
* - 2: sx1262
* If not set, sx1262 is selected
*/
#if !defined(MY_SX126x_VARIANT)
#define MY_SX126x_VARIANT (1)
#endif

/**
* @def MY_SX126x_POWER_PIN
* @brief Define this to use the SX126x power pin (optional).
*/
//#define MY_SX126x_POWER_PIN (3)

/**
* @def MY_SX126x_RESET_PIN
* @brief Define this to use the SX126x reset pin (optional).
*/
//#define MY_SX126x_RESET_PIN (47)

/**
* @def MY_SX126x_BUSY_PIN
* @brief Defines this to use the SX126x busy pin (optional).
*/
//#define MY_SX126x_BUSY_PIN (39)

/**
* @def MY_SX126x_DISABLE_ATC
* @brief If defined, ATC will be disabled
*/
//#define MY_SX126x_DISABLE_ATC

/**
* @def MY_SX126x_ATC_TARGET_DBM
* @brief Sets the target RSSI level for the ATC. Defaults to -70dBm
*/
#ifndef MY_SX126x_ATC_TARGET_DBM
#define MY_SX126x_ATC_TARGET_DBM (-70)
#endif

/**
* @def MY_SX126x_MAX_POWER_LEVEL_DBM
* @brief Sets the maximum allowable output power level. Default: 13dBm (20mW)
*
* Please check local regulations!
*/
#ifndef MY_SX126x_MAX_POWER_LEVEL_DBM
#define MY_SX126x_MAX_POWER_LEVEL_DBM (20)
#endif

/**
* @def MY_SX126x_MIN_POWER_LEVEL_DBM
* @brief Sets the minimum output power level. Used in ATC. Default: 0dBm (0.5mW)
*/
#ifndef MY_SX126x_MIN_POWER_LEVEL_DBM
#define MY_SX126x_MIN_POWER_LEVEL_DBM (-3)
#endif

/** @}*/ // End of SX126xSettingGrpPub group

/**
* @defgroup SoftSpiSettingGrpPub Soft SPI
* @ingroup TransportSettingGrpPub
Expand Down Expand Up @@ -2297,7 +2523,7 @@
#define MY_DEBUG_VERBOSE_OTA_UPDATE //!< MY_DEBUG_VERBOSE_OTA_UPDATE
#endif

#if defined(MY_DEBUG) || defined(MY_DEBUG_VERBOSE_CORE) || defined(MY_DEBUG_VERBOSE_TRANSPORT) || defined(MY_DEBUG_VERBOSE_GATEWAY) || defined(MY_DEBUG_VERBOSE_SIGNING) || defined(MY_DEBUG_VERBOSE_OTA_UPDATE) || defined(MY_DEBUG_VERBOSE_RF24) || defined(MY_DEBUG_VERBOSE_NRF5_ESB) || defined(MY_DEBUG_VERBOSE_RFM69) || defined(MY_DEBUG_VERBOSE_RFM95) || defined(MY_DEBUG_VERBOSE_TRANSPORT_HAL)
#if defined(MY_DEBUG) || defined(MY_DEBUG_VERBOSE_CORE) || defined(MY_DEBUG_VERBOSE_TRANSPORT) || defined(MY_DEBUG_VERBOSE_GATEWAY) || defined(MY_DEBUG_VERBOSE_SIGNING) || defined(MY_DEBUG_VERBOSE_OTA_UPDATE) || defined(MY_DEBUG_VERBOSE_RF24) || defined(MY_DEBUG_VERBOSE_NRF5_ESB) || defined(MY_DEBUG_VERBOSE_RFM69) || defined(MY_DEBUG_VERBOSE_RFM95) || defined(MY_DEBUG_VERBOSE_SX126x) || defined(MY_DEBUG_VERBOSE_TRANSPORT_HAL)
#define DEBUG_OUTPUT_ENABLED //!< DEBUG_OUTPUT_ENABLED
#ifndef MY_DEBUG_OTA
#define DEBUG_OUTPUT(x,...) hwDebugPrint(x, ##__VA_ARGS__) //!< debug
Expand All @@ -2316,6 +2542,7 @@
#undef MY_DEBUG_VERBOSE_RFM69
#undef MY_DEBUG_VERBOSE_RFM69_REGISTERS
#undef MY_DEBUG_VERBOSE_RFM95
#undef MY_DEBUG_VERBOSE_SX126x
#endif
#else
#define DEBUG_OUTPUT(x,...) //!< debug NULL
Expand All @@ -2328,7 +2555,7 @@
#endif

// Enable sensor network "feature" if one of the transport types was enabled
#if defined(MY_RADIO_RF24) || defined(MY_RADIO_NRF5_ESB) || defined(MY_RADIO_RFM69) || defined(MY_RADIO_RFM95) || defined(MY_RS485) || defined(MY_PJON)
#if defined(MY_RADIO_RF24) || defined(MY_RADIO_NRF5_ESB) || defined(MY_RADIO_RFM69) || defined(MY_RADIO_RFM95) || defined(MY_RADIO_SX126x) || defined(MY_RS485) || defined(MY_PJON)
#define MY_SENSOR_NETWORK
#endif

Expand Down Expand Up @@ -2536,6 +2763,19 @@
#define MY_RFM95_POWER_PIN
#define MY_RFM95_TCXO
#define MY_RFM95_MAX_POWER_LEVEL_DBM
// SX126x
#define MY_RADIO_SX126x
#define MY_SX126x_TCXO_VOLTAGE
#define MY_SX126c_TCXO_STARTUP_DELAY
#define MY_SX126x_USE_TCXO
#define MY_SX126x_USE_DIO2_ANT_SWITCH
#define MY_SX126x_ANT_SWITCH_PIN
#define MY_SX126x_POWER_PIN
#define MY_SX126x_RESET_PIN
#define MY_SX126x_BUSY_PIN
#define MY_SX126x_DISABLE_ATC
#define MY_SX126x_MIN_POWER_LEVEL_DBM
#define MY_SX126x_MAX_POWER_LEVEL_DBM
// SOFT-SPI
#define MY_SOFTSPI
#endif
Expand Down
26 changes: 20 additions & 6 deletions MySensors.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
* network topology allowing messages to be routed to nodes.
*
* Created by Henrik Ekblad <[email protected]>
* Copyright (C) 2013-2022 Sensnology AB
* Copyright (C) 2013-2023 Sensnology AB
* Full contributor list: https://github.com/mysensors/MySensors/graphs/contributors
*
* Documentation: http://www.mysensors.org
Expand Down Expand Up @@ -76,6 +76,9 @@
#elif defined(__arm__) && defined(TEENSYDUINO)
#include "hal/architecture/Teensy3/MyHwTeensy3.cpp"
#include "hal/crypto/generic/MyCryptoGeneric.cpp"
#elif defined(__ASR6501__) || defined (__ASR6502__)
#include "hal/architecture/ASR650x/MyHwASR650x.cpp"
#include "hal/crypto/generic/MyCryptoGeneric.cpp"
#elif defined(__linux__)
#include "hal/architecture/Linux/MyHwLinuxGeneric.cpp"
#include "hal/crypto/generic/MyCryptoGeneric.cpp"
Expand Down Expand Up @@ -290,8 +293,12 @@ MY_DEFAULT_RX_LED_PIN in your sketch instead to enable LEDs
#else
#define _PJONCNT 0 //!< _PJONCNT
#endif

#if (__RF24CNT + __NRF5ESBCNT + __RFM69CNT + __RFM95CNT + __RS485CNT + _PJONCNT > 1)
#if defined(MY_RADIO_SX126x)
#define __SX126xCNT 1 //!< __SX126xCNT
#else
#define __SX126xCNT 0 //!< __SX126xCNT
#endif
#if (__RF24CNT + __NRF5ESBCNT + __RFM69CNT + __RFM95CNT + __RS485CNT + _PJONCNT + __SX126xCNT > 1)
#error Only one forward link driver can be activated
#endif
#endif //DOXYGEN
Expand All @@ -302,7 +309,7 @@ MY_DEFAULT_RX_LED_PIN in your sketch instead to enable LEDs
#endif

// TRANSPORT INCLUDES
#if defined(MY_RADIO_RF24) || defined(MY_RADIO_NRF5_ESB) || defined(MY_RADIO_RFM69) || defined(MY_RADIO_RFM95) || defined(MY_RS485) || defined (MY_PJON)
#if defined(MY_RADIO_RF24) || defined(MY_RADIO_NRF5_ESB) || defined(MY_RADIO_RFM69) || defined(MY_RADIO_RFM95) || defined(MY_RS485) || defined (MY_PJON) || defined(MY_RADIO_SX126x)
#include "hal/transport/MyTransportHAL.h"
#include "core/MyTransport.h"

Expand All @@ -326,7 +333,7 @@ MY_DEFAULT_RX_LED_PIN in your sketch instead to enable LEDs
#define MY_RAM_ROUTING_TABLE_ENABLED
#elif defined(MY_RAM_ROUTING_TABLE_FEATURE) && defined(MY_REPEATER_FEATURE)
// activate feature based on architecture
#if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_SAMD) || defined(ARDUINO_ARCH_NRF5) || defined(ARDUINO_ARCH_STM32F1) || defined(TEENSYDUINO) || defined(__linux__)
#if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_SAMD) || defined(ARDUINO_ARCH_NRF5) || defined(ARDUINO_ARCH_STM32F1) || defined(TEENSYDUINO) || defined(__linux__) || defined(__ASR6501__) || defined (__ASR6502__)
#define MY_RAM_ROUTING_TABLE_ENABLED
#elif defined(ARDUINO_ARCH_AVR)
#if defined(__avr_atmega1280__) || defined(__avr_atmega1284__) || defined(__avr_atmega2560__)
Expand All @@ -350,7 +357,7 @@ MY_DEFAULT_RX_LED_PIN in your sketch instead to enable LEDs

// POWER PIN
#ifndef DOXYGEN
#if defined(MY_RF24_POWER_PIN) || defined(MY_RFM69_POWER_PIN) || defined(MY_RFM95_POWER_PIN) || defined(MY_RADIO_NRF5_ESB)
#if defined(MY_RF24_POWER_PIN) || defined(MY_RFM69_POWER_PIN) || defined(MY_RFM95_POWER_PIN) || defined(MY_RADIO_NRF5_ESB) || defined(MY_RADIO_SX126x_POWER_PIN)
#define RADIO_CAN_POWER_OFF (true)
#else
#define RADIO_CAN_POWER_OFF (false)
Expand Down Expand Up @@ -393,6 +400,9 @@ MY_DEFAULT_RX_LED_PIN in your sketch instead to enable LEDs
#error "You must change PJON_BROADCAST to BROADCAST_ADDRESS (255u) and PJON_NOT_ASSIGNED to other one."
#endif
#include "hal/transport/PJON/MyTransportPJON.cpp"
#elif defined(MY_RADIO_SX126x)
#include "hal/transport/SX126x/driver/SX126x.cpp"
#include "hal/transport/SX126x/MyTransportSX126x.cpp"
#endif

#if (defined(MY_RF24_ENABLE_ENCRYPTION) && defined(MY_RADIO_RF24)) || (defined(MY_NRF5_ESB_ENABLE_ENCRYPTION) && defined(MY_RADIO_NRF5_ESB)) || (defined(MY_RFM69_ENABLE_ENCRYPTION) && defined(MY_RADIO_RFM69)) || (defined(MY_RFM95_ENABLE_ENCRYPTION) && defined(MY_RADIO_RFM95))
Expand Down Expand Up @@ -459,8 +469,12 @@ MY_DEFAULT_RX_LED_PIN in your sketch instead to enable LEDs
#include "hal/architecture/Linux/MyMainLinuxGeneric.cpp"
#elif defined(ARDUINO_ARCH_STM32F1)
#include "hal/architecture/STM32F1/MyMainSTM32F1.cpp"
#elif defined(__ASR6501__) || defined(__ASR6502__)
#include "hal/architecture/ASR650x/MyMainASR650x.cpp"
#elif defined(__arm__) && defined(TEENSYDUINO)
#include "hal/architecture/Teensy3/MyMainTeensy3.cpp"
#elif defined(ARDUINO_ARCH_CUBECELL)
#include "hal/architecture/ASR650x/MyMainASR650x.cpp"
#endif

#endif
Expand Down
Loading