mirror of
https://github.com/meshtastic/firmware.git
synced 2025-08-05 13:14:45 +00:00
Merge branch 'master' into rak_wismeshtag
This commit is contained in:
commit
0c1c22f3b2
@ -108,7 +108,7 @@ lib_deps =
|
|||||||
[device-ui_base]
|
[device-ui_base]
|
||||||
lib_deps =
|
lib_deps =
|
||||||
# renovate: datasource=git-refs depName=meshtastic/device-ui packageName=https://github.com/meshtastic/device-ui gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic/device-ui packageName=https://github.com/meshtastic/device-ui gitBranch=master
|
||||||
https://github.com/meshtastic/device-ui/archive/405ca495322b7dc3b61f7588d28267d49b2ebc38.zip
|
https://github.com/meshtastic/device-ui/archive/2fba9def30b52bbfd13cc5b76f61f257428325e7.zip
|
||||||
|
|
||||||
; Common libs for environmental measurements in telemetry module
|
; Common libs for environmental measurements in telemetry module
|
||||||
[environmental_base]
|
[environmental_base]
|
||||||
@ -132,7 +132,7 @@ lib_deps =
|
|||||||
# renovate: datasource=custom.pio depName=Adafruit INA219 packageName=adafruit/library/Adafruit INA219
|
# renovate: datasource=custom.pio depName=Adafruit INA219 packageName=adafruit/library/Adafruit INA219
|
||||||
adafruit/Adafruit INA219@1.2.3
|
adafruit/Adafruit INA219@1.2.3
|
||||||
# renovate: datasource=custom.pio depName=Adafruit PM25 AQI Sensor packageName=adafruit/library/Adafruit PM25 AQI Sensor
|
# renovate: datasource=custom.pio depName=Adafruit PM25 AQI Sensor packageName=adafruit/library/Adafruit PM25 AQI Sensor
|
||||||
adafruit/Adafruit PM25 AQI Sensor@1.2.0
|
adafruit/Adafruit PM25 AQI Sensor@2.0.0
|
||||||
# renovate: datasource=custom.pio depName=Adafruit MPU6050 packageName=adafruit/library/Adafruit MPU6050
|
# renovate: datasource=custom.pio depName=Adafruit MPU6050 packageName=adafruit/library/Adafruit MPU6050
|
||||||
adafruit/Adafruit MPU6050@2.2.6
|
adafruit/Adafruit MPU6050@2.2.6
|
||||||
# renovate: datasource=custom.pio depName=Adafruit LIS3DH packageName=adafruit/library/Adafruit LIS3DH
|
# renovate: datasource=custom.pio depName=Adafruit LIS3DH packageName=adafruit/library/Adafruit LIS3DH
|
||||||
@ -147,8 +147,6 @@ lib_deps =
|
|||||||
emotibit/EmotiBit MLX90632@1.0.8
|
emotibit/EmotiBit MLX90632@1.0.8
|
||||||
# renovate: datasource=custom.pio depName=Adafruit MLX90614 packageName=adafruit/library/Adafruit MLX90614 Library
|
# renovate: datasource=custom.pio depName=Adafruit MLX90614 packageName=adafruit/library/Adafruit MLX90614 Library
|
||||||
adafruit/Adafruit MLX90614 Library@2.1.5
|
adafruit/Adafruit MLX90614 Library@2.1.5
|
||||||
# renovate: datasource=custom.pio depName=Bosch BME68x packageName=boschsensortec/library/BME68x Sensor Library
|
|
||||||
boschsensortec/BME68x Sensor Library@1.2.40408
|
|
||||||
# renovate: datasource=github-tags depName=INA3221 packageName=KodinLanewave/INA3221
|
# renovate: datasource=github-tags depName=INA3221 packageName=KodinLanewave/INA3221
|
||||||
https://github.com/KodinLanewave/INA3221/archive/1.0.1.zip
|
https://github.com/KodinLanewave/INA3221/archive/1.0.1.zip
|
||||||
# renovate: datasource=custom.pio depName=QMC5883L Compass packageName=mprograms/library/QMC5883LCompass
|
# renovate: datasource=custom.pio depName=QMC5883L Compass packageName=mprograms/library/QMC5883LCompass
|
||||||
@ -185,7 +183,9 @@ lib_deps =
|
|||||||
sparkfun/SparkFun Qwiic Scale NAU7802 Arduino Library@1.0.6
|
sparkfun/SparkFun Qwiic Scale NAU7802 Arduino Library@1.0.6
|
||||||
# renovate: datasource=custom.pio depName=ClosedCube OPT3001 packageName=closedcube/library/ClosedCube OPT3001
|
# renovate: datasource=custom.pio depName=ClosedCube OPT3001 packageName=closedcube/library/ClosedCube OPT3001
|
||||||
ClosedCube OPT3001@1.1.2
|
ClosedCube OPT3001@1.1.2
|
||||||
# renovate: datasource=git-refs depName=Bosch BSEC2 packageName=https://github.com/meshtastic/Bosch-BSEC2-Library gitBranch=extra_script
|
# renovate: datasource=custom.pio depName=Bosch BSEC2 packageName=boschsensortec/library/bsec2
|
||||||
https://github.com/meshtastic/Bosch-BSEC2-Library/archive/e16952dfe5addd4287e1eb8c4f6ecac0fa3dd3de.zip
|
boschsensortec/bsec2@1.10.2610
|
||||||
|
# renovate: datasource=custom.pio depName=Bosch BME68x packageName=boschsensortec/library/BME68x Sensor Library
|
||||||
|
boschsensortec/BME68x Sensor Library@1.3.40408
|
||||||
# renovate: datasource=git-refs depName=meshtastic-DFRobot_LarkWeatherStation packageName=https://github.com/meshtastic/DFRobot_LarkWeatherStation gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic-DFRobot_LarkWeatherStation packageName=https://github.com/meshtastic/DFRobot_LarkWeatherStation gitBranch=master
|
||||||
https://github.com/meshtastic/DFRobot_LarkWeatherStation/archive/4de3a9cadef0f6a5220a8a906cf9775b02b0040d.zip
|
https://github.com/meshtastic/DFRobot_LarkWeatherStation/archive/4de3a9cadef0f6a5220a8a906cf9775b02b0040d.zip
|
||||||
|
@ -80,10 +80,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
// Override user saved region, for producing region-locked builds
|
// Override user saved region, for producing region-locked builds
|
||||||
// #define REGULATORY_LORA_REGIONCODE meshtastic_Config_LoRaConfig_RegionCode_SG_923
|
// #define REGULATORY_LORA_REGIONCODE meshtastic_Config_LoRaConfig_RegionCode_SG_923
|
||||||
|
|
||||||
// Total system gain in dBm to subtract from Tx power to remain within regulatory ERP limit for non-licensed operators
|
// Total system gain in dBm to subtract from Tx power to remain within regulatory and Tx PA limits
|
||||||
// This value should be set in variant.h and is PA gain + antenna gain (if system ships with an antenna)
|
// This value should be set in variant.h and is PA gain + antenna gain (if variant has a non-removable antenna)
|
||||||
#ifndef REGULATORY_GAIN_LORA
|
#ifndef TX_GAIN_LORA
|
||||||
#define REGULATORY_GAIN_LORA 0
|
#define TX_GAIN_LORA 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
61
src/graphics/niche/Drivers/EInk/GDEY0213B74.cpp
Normal file
61
src/graphics/niche/Drivers/EInk/GDEY0213B74.cpp
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
#include "./GDEY0213B74.h"
|
||||||
|
|
||||||
|
#ifdef MESHTASTIC_INCLUDE_NICHE_GRAPHICS
|
||||||
|
|
||||||
|
using namespace NicheGraphics::Drivers;
|
||||||
|
|
||||||
|
// Map the display controller IC's output to the connected panel
|
||||||
|
void GDEY0213B74::configScanning()
|
||||||
|
{
|
||||||
|
// "Driver output control"
|
||||||
|
sendCommand(0x01);
|
||||||
|
sendData(0xF9);
|
||||||
|
sendData(0x00);
|
||||||
|
sendData(0x00);
|
||||||
|
|
||||||
|
// To-do: delete this method?
|
||||||
|
// Values set here might be redundant: F9, 00, 00 seems to be default
|
||||||
|
}
|
||||||
|
|
||||||
|
// Specify which information is used to control the sequence of voltages applied to move the pixels
|
||||||
|
// - For this display, configUpdateSequence() specifies that a suitable LUT will be loaded from
|
||||||
|
// the controller IC's OTP memory, when the update procedure begins.
|
||||||
|
void GDEY0213B74::configWaveform()
|
||||||
|
{
|
||||||
|
sendCommand(0x3C); // Border waveform:
|
||||||
|
sendData(0x05); // Screen border should follow LUT1 waveform (actively drive pixels white)
|
||||||
|
|
||||||
|
sendCommand(0x18); // Temperature sensor:
|
||||||
|
sendData(0x80); // Use internal temperature sensor to select an appropriate refresh waveform
|
||||||
|
}
|
||||||
|
|
||||||
|
void GDEY0213B74::configUpdateSequence()
|
||||||
|
{
|
||||||
|
switch (updateType) {
|
||||||
|
case FAST:
|
||||||
|
sendCommand(0x22); // Set "update sequence"
|
||||||
|
sendData(0xFF); // Will load LUT from OTP memory, Display mode 2 "differential refresh"
|
||||||
|
break;
|
||||||
|
|
||||||
|
case FULL:
|
||||||
|
default:
|
||||||
|
sendCommand(0x22); // Set "update sequence"
|
||||||
|
sendData(0xF7); // Will load LUT from OTP memory
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Once the refresh operation has been started,
|
||||||
|
// begin periodically polling the display to check for completion, using the normal Meshtastic threading code
|
||||||
|
// Only used when refresh is "async"
|
||||||
|
void GDEY0213B74::detachFromUpdate()
|
||||||
|
{
|
||||||
|
switch (updateType) {
|
||||||
|
case FAST:
|
||||||
|
return beginPolling(50, 500); // At least 500ms for fast refresh
|
||||||
|
case FULL:
|
||||||
|
default:
|
||||||
|
return beginPolling(100, 2000); // At least 2 seconds for full refresh
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif // MESHTASTIC_INCLUDE_NICHE_GRAPHICS
|
42
src/graphics/niche/Drivers/EInk/GDEY0213B74.h
Normal file
42
src/graphics/niche/Drivers/EInk/GDEY0213B74.h
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
E-Ink display driver
|
||||||
|
- GDEY0213B74
|
||||||
|
- Manufacturer: Goodisplay
|
||||||
|
- Size: 2.13 inch
|
||||||
|
- Resolution: 250px x 122px
|
||||||
|
- Flex connector marking: FPC-A002
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef MESHTASTIC_INCLUDE_NICHE_GRAPHICS
|
||||||
|
|
||||||
|
#include "configuration.h"
|
||||||
|
|
||||||
|
#include "./SSD16XX.h"
|
||||||
|
|
||||||
|
namespace NicheGraphics::Drivers
|
||||||
|
{
|
||||||
|
class GDEY0213B74 : public SSD16XX
|
||||||
|
{
|
||||||
|
// Display properties
|
||||||
|
private:
|
||||||
|
static constexpr uint32_t width = 122;
|
||||||
|
static constexpr uint32_t height = 250;
|
||||||
|
static constexpr UpdateTypes supported = (UpdateTypes)(FULL | FAST);
|
||||||
|
|
||||||
|
public:
|
||||||
|
GDEY0213B74() : SSD16XX(width, height, supported) {}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void configScanning() override;
|
||||||
|
virtual void configWaveform() override;
|
||||||
|
virtual void configUpdateSequence() override;
|
||||||
|
void detachFromUpdate() override;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace NicheGraphics::Drivers
|
||||||
|
|
||||||
|
#endif // MESHTASTIC_INCLUDE_NICHE_GRAPHICS
|
@ -71,6 +71,8 @@ template <typename T> bool LR11x0Interface<T>::init()
|
|||||||
|
|
||||||
RadioLibInterface::init();
|
RadioLibInterface::init();
|
||||||
|
|
||||||
|
limitPower();
|
||||||
|
|
||||||
if (power > LR1110_MAX_POWER) // Clamp power to maximum defined level
|
if (power > LR1110_MAX_POWER) // Clamp power to maximum defined level
|
||||||
power = LR1110_MAX_POWER;
|
power = LR1110_MAX_POWER;
|
||||||
|
|
||||||
@ -80,8 +82,6 @@ template <typename T> bool LR11x0Interface<T>::init()
|
|||||||
preambleLength = 12; // 12 is the default for operation above 2GHz
|
preambleLength = 12; // 12 is the default for operation above 2GHz
|
||||||
}
|
}
|
||||||
|
|
||||||
limitPower();
|
|
||||||
|
|
||||||
#ifdef LR11X0_RF_SWITCH_SUBGHZ
|
#ifdef LR11X0_RF_SWITCH_SUBGHZ
|
||||||
pinMode(LR11X0_RF_SWITCH_SUBGHZ, OUTPUT);
|
pinMode(LR11X0_RF_SWITCH_SUBGHZ, OUTPUT);
|
||||||
digitalWrite(LR11X0_RF_SWITCH_SUBGHZ, getFreq() < 1e9 ? HIGH : LOW);
|
digitalWrite(LR11X0_RF_SWITCH_SUBGHZ, getFreq() < 1e9 ? HIGH : LOW);
|
||||||
|
@ -122,11 +122,11 @@ bool RF95Interface::init()
|
|||||||
power = dacDbValues.db;
|
power = dacDbValues.db;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
limitPower();
|
||||||
|
|
||||||
if (power > RF95_MAX_POWER) // This chip has lower power limits than some
|
if (power > RF95_MAX_POWER) // This chip has lower power limits than some
|
||||||
power = RF95_MAX_POWER;
|
power = RF95_MAX_POWER;
|
||||||
|
|
||||||
limitPower();
|
|
||||||
|
|
||||||
iface = lora = new RadioLibRF95(&module);
|
iface = lora = new RadioLibRF95(&module);
|
||||||
|
|
||||||
#ifdef RF95_TCXO
|
#ifdef RF95_TCXO
|
||||||
|
@ -528,8 +528,8 @@ void RadioInterface::applyModemConfig()
|
|||||||
|
|
||||||
power = loraConfig.tx_power;
|
power = loraConfig.tx_power;
|
||||||
|
|
||||||
if ((power == 0) || ((power + REGULATORY_GAIN_LORA > myRegion->powerLimit) && !devicestate.owner.is_licensed))
|
if ((power == 0) || ((power > myRegion->powerLimit) && !devicestate.owner.is_licensed))
|
||||||
power = myRegion->powerLimit - REGULATORY_GAIN_LORA;
|
power = myRegion->powerLimit;
|
||||||
|
|
||||||
if (power == 0)
|
if (power == 0)
|
||||||
power = 17; // Default to this power level if we don't have a valid regional power limit (powerLimit of myRegion defaults
|
power = 17; // Default to this power level if we don't have a valid regional power limit (powerLimit of myRegion defaults
|
||||||
@ -616,7 +616,12 @@ void RadioInterface::limitPower()
|
|||||||
power = maxPower;
|
power = maxPower;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_INFO("Set radio: final power level=%d", power);
|
if (TX_GAIN_LORA > 0) {
|
||||||
|
LOG_INFO("Requested Tx power: %d dBm; Device LoRa Tx gain: %d dB", power, TX_GAIN_LORA);
|
||||||
|
power -= TX_GAIN_LORA;
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG_INFO("Final Tx power: %d dBm", power);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RadioInterface::deliverToReceiver(meshtastic_MeshPacket *p)
|
void RadioInterface::deliverToReceiver(meshtastic_MeshPacket *p)
|
||||||
|
@ -25,11 +25,11 @@ bool STM32WLE5JCInterface::init()
|
|||||||
|
|
||||||
lora.setRfSwitchTable(rfswitch_pins, rfswitch_table);
|
lora.setRfSwitchTable(rfswitch_pins, rfswitch_table);
|
||||||
|
|
||||||
|
limitPower();
|
||||||
|
|
||||||
if (power > STM32WLx_MAX_POWER) // This chip has lower power limits than some
|
if (power > STM32WLx_MAX_POWER) // This chip has lower power limits than some
|
||||||
power = STM32WLx_MAX_POWER;
|
power = STM32WLx_MAX_POWER;
|
||||||
|
|
||||||
limitPower();
|
|
||||||
|
|
||||||
int res = lora.begin(getFreq(), bw, sf, cr, syncWord, power, preambleLength, tcxoVoltage);
|
int res = lora.begin(getFreq(), bw, sf, cr, syncWord, power, preambleLength, tcxoVoltage);
|
||||||
|
|
||||||
LOG_INFO("STM32WLx init result %d", res);
|
LOG_INFO("STM32WLx init result %d", res);
|
||||||
|
@ -69,11 +69,11 @@ template <typename T> bool SX126xInterface<T>::init()
|
|||||||
|
|
||||||
RadioLibInterface::init();
|
RadioLibInterface::init();
|
||||||
|
|
||||||
|
limitPower();
|
||||||
|
|
||||||
if (power > SX126X_MAX_POWER) // Clamp power to maximum defined level
|
if (power > SX126X_MAX_POWER) // Clamp power to maximum defined level
|
||||||
power = SX126X_MAX_POWER;
|
power = SX126X_MAX_POWER;
|
||||||
|
|
||||||
limitPower();
|
|
||||||
|
|
||||||
int res = lora.begin(getFreq(), bw, sf, cr, syncWord, power, preambleLength, tcxoVoltage, useRegulatorLDO);
|
int res = lora.begin(getFreq(), bw, sf, cr, syncWord, power, preambleLength, tcxoVoltage, useRegulatorLDO);
|
||||||
// \todo Display actual typename of the adapter, not just `SX126x`
|
// \todo Display actual typename of the adapter, not just `SX126x`
|
||||||
LOG_INFO("SX126x init result %d", res);
|
LOG_INFO("SX126x init result %d", res);
|
||||||
|
@ -62,11 +62,11 @@ template <typename T> bool SX128xInterface<T>::init()
|
|||||||
|
|
||||||
RadioLibInterface::init();
|
RadioLibInterface::init();
|
||||||
|
|
||||||
|
limitPower();
|
||||||
|
|
||||||
if (power > SX128X_MAX_POWER) // This chip has lower power limits than some
|
if (power > SX128X_MAX_POWER) // This chip has lower power limits than some
|
||||||
power = SX128X_MAX_POWER;
|
power = SX128X_MAX_POWER;
|
||||||
|
|
||||||
limitPower();
|
|
||||||
|
|
||||||
preambleLength = 12; // 12 is the default for this chip, 32 does not RX at all
|
preambleLength = 12; // 12 is the default for this chip, 32 does not RX at all
|
||||||
|
|
||||||
int res = lora.begin(getFreq(), bw, sf, cr, syncWord, power, preambleLength);
|
int res = lora.begin(getFreq(), bw, sf, cr, syncWord, power, preambleLength);
|
||||||
|
@ -145,12 +145,12 @@ static const uint8_t SCK = PIN_SPI_SCK;
|
|||||||
#ifdef EBYTE_E22_900M30S
|
#ifdef EBYTE_E22_900M30S
|
||||||
// 10dB PA gain and 30dB rated output; based on measurements from
|
// 10dB PA gain and 30dB rated output; based on measurements from
|
||||||
// https://github.com/S5NC/EBYTE_ESP32-S3/blob/main/E22-900M30S%20power%20output%20testing.txt
|
// https://github.com/S5NC/EBYTE_ESP32-S3/blob/main/E22-900M30S%20power%20output%20testing.txt
|
||||||
#define REGULATORY_GAIN_LORA 7
|
#define TX_GAIN_LORA 7
|
||||||
#define SX126X_MAX_POWER 22
|
#define SX126X_MAX_POWER 22
|
||||||
#endif
|
#endif
|
||||||
#ifdef EBYTE_E22_900M33S
|
#ifdef EBYTE_E22_900M33S
|
||||||
// 25dB PA gain and 33dB rated output; based on TX Power Curve from E22-900M33S_UserManual_EN_v1.0.pdf
|
// 25dB PA gain and 33dB rated output; based on TX Power Curve from E22-900M33S_UserManual_EN_v1.0.pdf
|
||||||
#define REGULATORY_GAIN_LORA 25
|
#define TX_GAIN_LORA 25
|
||||||
#define SX126X_MAX_POWER 8
|
#define SX126X_MAX_POWER 8
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user