mirror of
https://github.com/meshtastic/firmware.git
synced 2025-09-19 00:16:59 +00:00
Merge branch 'picomputer-s3' of github.com:meshtastic/firmware into picomputer-s3
This commit is contained in:
commit
5d2ab65a81
2
.github/workflows/main_matrix.yml
vendored
2
.github/workflows/main_matrix.yml
vendored
@ -33,7 +33,7 @@ jobs:
|
|||||||
- board: m5stack-coreink
|
- board: m5stack-coreink
|
||||||
- board: tbeam-s3-core
|
- board: tbeam-s3-core
|
||||||
- board: tlora-t3s3-v1
|
- board: tlora-t3s3-v1
|
||||||
- board: rak11310
|
#- board: rak11310
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -30,3 +30,4 @@ __pycache__
|
|||||||
venv/
|
venv/
|
||||||
release/
|
release/
|
||||||
.vscode/extensions.json
|
.vscode/extensions.json
|
||||||
|
/compile_commands.json
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
[rp2040_base]
|
[rp2040_base]
|
||||||
platform = https://github.com/maxgerhardt/platform-raspberrypi.git#0c33219f53faa035e188925ea1324f472e8b93d2
|
platform = https://github.com/maxgerhardt/platform-raspberrypi.git#0c33219f53faa035e188925ea1324f472e8b93d2
|
||||||
extends = arduino_base
|
extends = arduino_base
|
||||||
platform_packages = framework-arduinopico@https://github.com/earlephilhower/arduino-pico.git#652f9f9eda0d77efeafebc7c1ff5cd45defc71bf
|
platform_packages = framework-arduinopico@https://github.com/earlephilhower/arduino-pico.git#3.2.1
|
||||||
|
|
||||||
board_build.core = earlephilhower
|
board_build.core = earlephilhower
|
||||||
board_build.filesystem_size = 0.5m
|
board_build.filesystem_size = 0.5m
|
||||||
|
@ -102,7 +102,7 @@ lib_deps =
|
|||||||
adafruit/Adafruit Unified Sensor@^1.1.9
|
adafruit/Adafruit Unified Sensor@^1.1.9
|
||||||
adafruit/Adafruit BMP280 Library@^2.6.6
|
adafruit/Adafruit BMP280 Library@^2.6.6
|
||||||
adafruit/Adafruit BME280 Library@^2.2.2
|
adafruit/Adafruit BME280 Library@^2.2.2
|
||||||
boschsensortec/BSEC2 Software Library@^1.3.2200
|
https://github.com/boschsensortec/Bosch-BSEC2-Library#v1.5.2400
|
||||||
boschsensortec/BME68x Sensor Library@^1.1.40407
|
boschsensortec/BME68x Sensor Library@^1.1.40407
|
||||||
adafruit/Adafruit MCP9808 Library@^2.0.0
|
adafruit/Adafruit MCP9808 Library@^2.0.0
|
||||||
adafruit/Adafruit INA260 Library@^1.5.0
|
adafruit/Adafruit INA260 Library@^1.5.0
|
||||||
|
@ -51,7 +51,7 @@ class ButtonThread : public concurrency::OSThread
|
|||||||
pinMode(config.device.button_gpio ? config.device.button_gpio : BUTTON_PIN, INPUT_PULLUP_SENSE);
|
pinMode(config.device.button_gpio ? config.device.button_gpio : BUTTON_PIN, INPUT_PULLUP_SENSE);
|
||||||
#endif
|
#endif
|
||||||
userButton.attachClick(userButtonPressed);
|
userButton.attachClick(userButtonPressed);
|
||||||
userButton.setClickTicks(300);
|
userButton.setClickMs(300);
|
||||||
userButton.attachDuringLongPress(userButtonPressedLong);
|
userButton.attachDuringLongPress(userButtonPressedLong);
|
||||||
userButton.attachDoubleClick(userButtonDoublePressed);
|
userButton.attachDoubleClick(userButtonDoublePressed);
|
||||||
userButton.attachMultiClick(userButtonMultiPressed);
|
userButton.attachMultiClick(userButtonMultiPressed);
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "sleep.h"
|
#include "sleep.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
static const char *TAG = "ADCmod";
|
|
||||||
|
|
||||||
#ifdef DEBUG_HEAP_MQTT
|
#ifdef DEBUG_HEAP_MQTT
|
||||||
#include "mqtt/MQTT.h"
|
#include "mqtt/MQTT.h"
|
||||||
@ -31,8 +30,11 @@ RTC_NOINIT_ATTR uint64_t RTC_reg_b;
|
|||||||
#endif // BAT_MEASURE_ADC_UNIT
|
#endif // BAT_MEASURE_ADC_UNIT
|
||||||
|
|
||||||
esp_adc_cal_characteristics_t *adc_characs = (esp_adc_cal_characteristics_t *)calloc(1, sizeof(esp_adc_cal_characteristics_t));
|
esp_adc_cal_characteristics_t *adc_characs = (esp_adc_cal_characteristics_t *)calloc(1, sizeof(esp_adc_cal_characteristics_t));
|
||||||
|
#ifndef ADC_ATTENUATION
|
||||||
static const adc_atten_t atten = ADC_ATTEN_DB_11;
|
static const adc_atten_t atten = ADC_ATTEN_DB_11;
|
||||||
|
#else
|
||||||
|
static const adc_atten_t atten = ADC_ATTENUATION;
|
||||||
|
#endif
|
||||||
#endif // BATTERY_PIN && ARCH_ESP32
|
#endif // BATTERY_PIN && ARCH_ESP32
|
||||||
|
|
||||||
#ifdef HAS_PMU
|
#ifdef HAS_PMU
|
||||||
@ -292,11 +294,11 @@ bool Power::analogInit()
|
|||||||
esp_adc_cal_value_t val_type = esp_adc_cal_characterize(unit, atten, width, DEFAULT_VREF, adc_characs);
|
esp_adc_cal_value_t val_type = esp_adc_cal_characterize(unit, atten, width, DEFAULT_VREF, adc_characs);
|
||||||
// show ADC characterization base
|
// show ADC characterization base
|
||||||
if (val_type == ESP_ADC_CAL_VAL_EFUSE_TP) {
|
if (val_type == ESP_ADC_CAL_VAL_EFUSE_TP) {
|
||||||
ESP_LOGI(TAG, "ADC characterization based on Two Point values stored in eFuse");
|
LOG_INFO("ADCmod: ADC characterization based on Two Point values stored in eFuse\n");
|
||||||
} else if (val_type == ESP_ADC_CAL_VAL_EFUSE_VREF) {
|
} else if (val_type == ESP_ADC_CAL_VAL_EFUSE_VREF) {
|
||||||
ESP_LOGI(TAG, "ADC characterization based on reference voltage stored in eFuse");
|
LOG_INFO("ADCmod: ADC characterization based on reference voltage stored in eFuse\n");
|
||||||
} else {
|
} else {
|
||||||
ESP_LOGI(TAG, "ADC characterization based on default reference voltage");
|
LOG_INFO("ADCmod: ADC characterization based on default reference voltage\n");
|
||||||
}
|
}
|
||||||
#endif // ARCH_ESP32
|
#endif // ARCH_ESP32
|
||||||
|
|
||||||
@ -604,7 +606,7 @@ bool Power::axpChipInit()
|
|||||||
} else if (PMU->getChipModel() == XPOWERS_AXP2101) {
|
} else if (PMU->getChipModel() == XPOWERS_AXP2101) {
|
||||||
|
|
||||||
/*The alternative version of T-Beam 1.1 differs from T-Beam V1.1 in that it uses an AXP2101 power chip*/
|
/*The alternative version of T-Beam 1.1 differs from T-Beam V1.1 in that it uses an AXP2101 power chip*/
|
||||||
#if (HW_VENDOR == meshtastic_HardwareModel_TBEAM)
|
if (HW_VENDOR == meshtastic_HardwareModel_TBEAM) {
|
||||||
// Unuse power channel
|
// Unuse power channel
|
||||||
PMU->disablePowerOutput(XPOWERS_DCDC2);
|
PMU->disablePowerOutput(XPOWERS_DCDC2);
|
||||||
PMU->disablePowerOutput(XPOWERS_DCDC3);
|
PMU->disablePowerOutput(XPOWERS_DCDC3);
|
||||||
@ -634,7 +636,7 @@ bool Power::axpChipInit()
|
|||||||
PMU->setPowerChannelVoltage(XPOWERS_ALDO3, 3300);
|
PMU->setPowerChannelVoltage(XPOWERS_ALDO3, 3300);
|
||||||
PMU->enablePowerOutput(XPOWERS_ALDO3);
|
PMU->enablePowerOutput(XPOWERS_ALDO3);
|
||||||
|
|
||||||
#elif (HW_VENDOR == meshtastic_HardwareModel_LILYGO_TBEAM_S3_CORE)
|
} else if (HW_VENDOR == meshtastic_HardwareModel_LILYGO_TBEAM_S3_CORE) {
|
||||||
// t-beam s3 core
|
// t-beam s3 core
|
||||||
/**
|
/**
|
||||||
* gnss module power channel
|
* gnss module power channel
|
||||||
@ -678,8 +680,7 @@ bool Power::axpChipInit()
|
|||||||
PMU->disablePowerOutput(XPOWERS_DLDO1); // Invalid power channel, it does not exist
|
PMU->disablePowerOutput(XPOWERS_DLDO1); // Invalid power channel, it does not exist
|
||||||
PMU->disablePowerOutput(XPOWERS_DLDO2); // Invalid power channel, it does not exist
|
PMU->disablePowerOutput(XPOWERS_DLDO2); // Invalid power channel, it does not exist
|
||||||
PMU->disablePowerOutput(XPOWERS_VBACKUP);
|
PMU->disablePowerOutput(XPOWERS_VBACKUP);
|
||||||
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
// disable all axp chip interrupt
|
// disable all axp chip interrupt
|
||||||
PMU->disableIRQ(XPOWERS_AXP2101_ALL_IRQ);
|
PMU->disableIRQ(XPOWERS_AXP2101_ALL_IRQ);
|
||||||
|
@ -74,7 +74,7 @@ template <class T> class TypedQueue
|
|||||||
concurrency::OSThread *reader = NULL;
|
concurrency::OSThread *reader = NULL;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TypedQueue(int maxElements) {}
|
explicit TypedQueue(int maxElements) {}
|
||||||
|
|
||||||
int numFree() { return 1; } // Always claim 1 free, because we can grow to any size
|
int numFree() { return 1; } // Always claim 1 free, because we can grow to any size
|
||||||
|
|
||||||
|
@ -553,9 +553,8 @@ void AdminModule::handleGetDeviceConnectionStatus(const meshtastic_MeshPacket &r
|
|||||||
{
|
{
|
||||||
meshtastic_AdminMessage r = meshtastic_AdminMessage_init_default;
|
meshtastic_AdminMessage r = meshtastic_AdminMessage_init_default;
|
||||||
|
|
||||||
meshtastic_DeviceConnectionStatus conn;
|
meshtastic_DeviceConnectionStatus conn = meshtastic_DeviceConnectionStatus_init_zero;
|
||||||
|
|
||||||
conn.wifi = {0};
|
|
||||||
#if HAS_WIFI
|
#if HAS_WIFI
|
||||||
conn.has_wifi = true;
|
conn.has_wifi = true;
|
||||||
conn.wifi.has_status = true;
|
conn.wifi.has_status = true;
|
||||||
@ -571,11 +570,8 @@ void AdminModule::handleGetDeviceConnectionStatus(const meshtastic_MeshPacket &r
|
|||||||
conn.wifi.status.is_mqtt_connected = mqtt && mqtt->connected();
|
conn.wifi.status.is_mqtt_connected = mqtt && mqtt->connected();
|
||||||
conn.wifi.status.is_syslog_connected = false; // FIXME wire this up
|
conn.wifi.status.is_syslog_connected = false; // FIXME wire this up
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
conn.has_wifi = false;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
conn.ethernet = {0};
|
|
||||||
#if HAS_ETHERNET
|
#if HAS_ETHERNET
|
||||||
conn.has_ethernet = true;
|
conn.has_ethernet = true;
|
||||||
conn.ethernet.has_status = true;
|
conn.ethernet.has_status = true;
|
||||||
@ -587,8 +583,6 @@ void AdminModule::handleGetDeviceConnectionStatus(const meshtastic_MeshPacket &r
|
|||||||
} else {
|
} else {
|
||||||
conn.ethernet.status.is_connected = false;
|
conn.ethernet.status.is_connected = false;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
conn.has_ethernet = false;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_BLUETOOTH
|
#if HAS_BLUETOOTH
|
||||||
|
@ -52,7 +52,7 @@ SHT31Sensor sht31Sensor;
|
|||||||
|
|
||||||
int32_t EnvironmentTelemetryModule::runOnce()
|
int32_t EnvironmentTelemetryModule::runOnce()
|
||||||
{
|
{
|
||||||
int32_t result = INT32_MAX;
|
uint32_t result = UINT32_MAX;
|
||||||
/*
|
/*
|
||||||
Uncomment the preferences below if you want to use the module
|
Uncomment the preferences below if you want to use the module
|
||||||
without having to configure it from the PythonAPI or WebUI.
|
without having to configure it from the PythonAPI or WebUI.
|
||||||
@ -98,8 +98,12 @@ int32_t EnvironmentTelemetryModule::runOnce()
|
|||||||
return result;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
// if we somehow got to a second run of this module with measurement disabled, then just wait forever
|
// if we somehow got to a second run of this module with measurement disabled, then just wait forever
|
||||||
if (!moduleConfig.telemetry.environment_measurement_enabled)
|
if (!moduleConfig.telemetry.environment_measurement_enabled) {
|
||||||
return result;
|
return disable();
|
||||||
|
} else {
|
||||||
|
if (bme680Sensor.hasSensor())
|
||||||
|
result = bme680Sensor.runTrigger();
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t now = millis();
|
uint32_t now = millis();
|
||||||
if (((lastSentToMesh == 0) ||
|
if (((lastSentToMesh == 0) ||
|
||||||
@ -107,13 +111,14 @@ int32_t EnvironmentTelemetryModule::runOnce()
|
|||||||
airTime->isTxAllowedAirUtil()) {
|
airTime->isTxAllowedAirUtil()) {
|
||||||
sendTelemetry();
|
sendTelemetry();
|
||||||
lastSentToMesh = now;
|
lastSentToMesh = now;
|
||||||
} else if (service.isToPhoneQueueEmpty()) {
|
} else if (((lastSentToPhone == 0) || ((now - lastSentToPhone) >= sendToPhoneIntervalMs)) &&
|
||||||
|
(service.isToPhoneQueueEmpty())) {
|
||||||
// Just send to phone when it's not our time to send to mesh yet
|
// Just send to phone when it's not our time to send to mesh yet
|
||||||
// Only send while queue is empty (phone assumed connected)
|
// Only send while queue is empty (phone assumed connected)
|
||||||
sendTelemetry(NODENUM_BROADCAST, true);
|
sendTelemetry(NODENUM_BROADCAST, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return sendToPhoneIntervalMs;
|
return min(sendToPhoneIntervalMs, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EnvironmentTelemetryModule::wantUIFrame()
|
bool EnvironmentTelemetryModule::wantUIFrame()
|
||||||
@ -205,6 +210,7 @@ bool EnvironmentTelemetryModule::handleReceivedProtobuf(const meshtastic_MeshPac
|
|||||||
bool EnvironmentTelemetryModule::sendTelemetry(NodeNum dest, bool phoneOnly)
|
bool EnvironmentTelemetryModule::sendTelemetry(NodeNum dest, bool phoneOnly)
|
||||||
{
|
{
|
||||||
meshtastic_Telemetry m;
|
meshtastic_Telemetry m;
|
||||||
|
bool valid = false;
|
||||||
m.time = getTime();
|
m.time = getTime();
|
||||||
m.which_variant = meshtastic_Telemetry_environment_metrics_tag;
|
m.which_variant = meshtastic_Telemetry_environment_metrics_tag;
|
||||||
|
|
||||||
@ -216,26 +222,27 @@ bool EnvironmentTelemetryModule::sendTelemetry(NodeNum dest, bool phoneOnly)
|
|||||||
m.variant.environment_metrics.voltage = 0;
|
m.variant.environment_metrics.voltage = 0;
|
||||||
|
|
||||||
if (sht31Sensor.hasSensor())
|
if (sht31Sensor.hasSensor())
|
||||||
sht31Sensor.getMetrics(&m);
|
valid = sht31Sensor.getMetrics(&m);
|
||||||
if (lps22hbSensor.hasSensor())
|
if (lps22hbSensor.hasSensor())
|
||||||
lps22hbSensor.getMetrics(&m);
|
valid = lps22hbSensor.getMetrics(&m);
|
||||||
if (shtc3Sensor.hasSensor())
|
if (shtc3Sensor.hasSensor())
|
||||||
shtc3Sensor.getMetrics(&m);
|
valid = shtc3Sensor.getMetrics(&m);
|
||||||
if (bmp280Sensor.hasSensor())
|
if (bmp280Sensor.hasSensor())
|
||||||
bmp280Sensor.getMetrics(&m);
|
valid = bmp280Sensor.getMetrics(&m);
|
||||||
if (bme280Sensor.hasSensor())
|
if (bme280Sensor.hasSensor())
|
||||||
bme280Sensor.getMetrics(&m);
|
valid = bme280Sensor.getMetrics(&m);
|
||||||
if (bme680Sensor.hasSensor())
|
if (bme680Sensor.hasSensor())
|
||||||
bme680Sensor.getMetrics(&m);
|
valid = bme680Sensor.getMetrics(&m);
|
||||||
if (mcp9808Sensor.hasSensor())
|
if (mcp9808Sensor.hasSensor())
|
||||||
mcp9808Sensor.getMetrics(&m);
|
valid = mcp9808Sensor.getMetrics(&m);
|
||||||
if (ina219Sensor.hasSensor())
|
if (ina219Sensor.hasSensor())
|
||||||
ina219Sensor.getMetrics(&m);
|
valid = ina219Sensor.getMetrics(&m);
|
||||||
if (ina260Sensor.hasSensor())
|
if (ina260Sensor.hasSensor())
|
||||||
ina260Sensor.getMetrics(&m);
|
valid = ina260Sensor.getMetrics(&m);
|
||||||
|
|
||||||
LOG_INFO(
|
if (valid) {
|
||||||
"(Sending): barometric_pressure=%f, current=%f, gas_resistance=%f, relative_humidity=%f, temperature=%f, voltage=%f\n",
|
LOG_INFO("(Sending): barometric_pressure=%f, current=%f, gas_resistance=%f, relative_humidity=%f, temperature=%f, "
|
||||||
|
"voltage=%f\n",
|
||||||
m.variant.environment_metrics.barometric_pressure, m.variant.environment_metrics.current,
|
m.variant.environment_metrics.barometric_pressure, m.variant.environment_metrics.current,
|
||||||
m.variant.environment_metrics.gas_resistance, m.variant.environment_metrics.relative_humidity,
|
m.variant.environment_metrics.gas_resistance, m.variant.environment_metrics.relative_humidity,
|
||||||
m.variant.environment_metrics.temperature, m.variant.environment_metrics.voltage);
|
m.variant.environment_metrics.temperature, m.variant.environment_metrics.voltage);
|
||||||
@ -261,5 +268,6 @@ bool EnvironmentTelemetryModule::sendTelemetry(NodeNum dest, bool phoneOnly)
|
|||||||
LOG_INFO("Sending packet to mesh\n");
|
LOG_INFO("Sending packet to mesh\n");
|
||||||
service.sendToMesh(p, RX_SRC_LOCAL, true);
|
service.sendToMesh(p, RX_SRC_LOCAL, true);
|
||||||
}
|
}
|
||||||
return true;
|
}
|
||||||
|
return valid;
|
||||||
}
|
}
|
||||||
|
@ -39,5 +39,6 @@ class EnvironmentTelemetryModule : private concurrency::OSThread, public Protobu
|
|||||||
meshtastic_MeshPacket *lastMeasurementPacket;
|
meshtastic_MeshPacket *lastMeasurementPacket;
|
||||||
uint32_t sendToPhoneIntervalMs = SECONDS_IN_MINUTE * 1000; // Send to phone every minute
|
uint32_t sendToPhoneIntervalMs = SECONDS_IN_MINUTE * 1000; // Send to phone every minute
|
||||||
uint32_t lastSentToMesh = 0;
|
uint32_t lastSentToMesh = 0;
|
||||||
|
uint32_t lastSentToPhone = 0;
|
||||||
uint32_t sensor_read_error_count = 0;
|
uint32_t sensor_read_error_count = 0;
|
||||||
};
|
};
|
||||||
|
@ -6,21 +6,41 @@
|
|||||||
|
|
||||||
BME680Sensor::BME680Sensor() : TelemetrySensor(meshtastic_TelemetrySensorType_BME680, "BME680") {}
|
BME680Sensor::BME680Sensor() : TelemetrySensor(meshtastic_TelemetrySensorType_BME680, "BME680") {}
|
||||||
|
|
||||||
|
int32_t BME680Sensor::runTrigger()
|
||||||
|
{
|
||||||
|
if (!bme680.run()) {
|
||||||
|
checkStatus("runTrigger");
|
||||||
|
}
|
||||||
|
return 35;
|
||||||
|
}
|
||||||
|
|
||||||
int32_t BME680Sensor::runOnce()
|
int32_t BME680Sensor::runOnce()
|
||||||
{
|
{
|
||||||
LOG_INFO("Init sensor: %s with the BSEC Library\n", sensorName);
|
|
||||||
if (!hasSensor()) {
|
if (!hasSensor()) {
|
||||||
return DEFAULT_SENSOR_MINIMUM_WAIT_TIME_BETWEEN_READS;
|
return DEFAULT_SENSOR_MINIMUM_WAIT_TIME_BETWEEN_READS;
|
||||||
}
|
}
|
||||||
bme680.begin(nodeTelemetrySensorsMap[sensorType], Wire);
|
if (!bme680.begin(nodeTelemetrySensorsMap[sensorType], Wire))
|
||||||
|
checkStatus("begin");
|
||||||
|
|
||||||
if (bme680.status == BSEC_OK) {
|
if (bme680.status == BSEC_OK) {
|
||||||
bme680.setConfig(Default_H2S_NonH2S_config);
|
|
||||||
loadState();
|
|
||||||
bme680.updateSubscription(sensorList, 13, BSEC_SAMPLE_RATE_LP);
|
|
||||||
status = 1;
|
status = 1;
|
||||||
|
if (!bme680.setConfig(bsec_config_iaq)) {
|
||||||
|
checkStatus("setConfig");
|
||||||
|
status = 0;
|
||||||
|
}
|
||||||
|
loadState();
|
||||||
|
if (!bme680.updateSubscription(sensorList, ARRAY_LEN(sensorList), BSEC_SAMPLE_RATE_LP)) {
|
||||||
|
checkStatus("updateSubscription");
|
||||||
|
status = 0;
|
||||||
|
}
|
||||||
|
LOG_INFO("Init sensor: %s with the BSEC Library version %d.%d.%d.%d \n", sensorName, bme680.version.major,
|
||||||
|
bme680.version.minor, bme680.version.major_bugfix, bme680.version.minor_bugfix);
|
||||||
} else {
|
} else {
|
||||||
status = 0;
|
status = 0;
|
||||||
}
|
}
|
||||||
|
if (status == 0)
|
||||||
|
LOG_DEBUG("BME680Sensor::runOnce: bme680.status %d\n", bme680.status);
|
||||||
|
|
||||||
return initI2CSensor();
|
return initI2CSensor();
|
||||||
}
|
}
|
||||||
@ -29,8 +49,8 @@ void BME680Sensor::setup() {}
|
|||||||
|
|
||||||
bool BME680Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
bool BME680Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||||
{
|
{
|
||||||
bme680.run();
|
if (bme680.getData(BSEC_OUTPUT_RAW_PRESSURE).signal == 0)
|
||||||
|
return false;
|
||||||
measurement->variant.environment_metrics.temperature = bme680.getData(BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_TEMPERATURE).signal;
|
measurement->variant.environment_metrics.temperature = bme680.getData(BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_TEMPERATURE).signal;
|
||||||
measurement->variant.environment_metrics.relative_humidity =
|
measurement->variant.environment_metrics.relative_humidity =
|
||||||
bme680.getData(BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_HUMIDITY).signal;
|
bme680.getData(BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_HUMIDITY).signal;
|
||||||
@ -107,3 +127,16 @@ void BME680Sensor::updateState()
|
|||||||
LOG_ERROR("ERROR: Filesystem not implemented\n");
|
LOG_ERROR("ERROR: Filesystem not implemented\n");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BME680Sensor::checkStatus(String functionName)
|
||||||
|
{
|
||||||
|
if (bme680.status < BSEC_OK)
|
||||||
|
LOG_ERROR("%s BSEC2 code: %s\n", functionName.c_str(), String(bme680.status).c_str());
|
||||||
|
else if (bme680.status > BSEC_OK)
|
||||||
|
LOG_WARN("%s BSEC2 code: %s\n", functionName.c_str(), String(bme680.status).c_str());
|
||||||
|
|
||||||
|
if (bme680.sensor.status < BME68X_OK)
|
||||||
|
LOG_ERROR("%s BME68X code: %s\n", functionName.c_str(), String(bme680.sensor.status).c_str());
|
||||||
|
else if (bme680.sensor.status > BME68X_OK)
|
||||||
|
LOG_WARN("%s BME68X code: %s\n", functionName.c_str(), String(bme680.sensor.status).c_str());
|
||||||
|
}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
#define STATE_SAVE_PERIOD UINT32_C(360 * 60 * 1000) // That's 6 hours worth of millis()
|
#define STATE_SAVE_PERIOD UINT32_C(360 * 60 * 1000) // That's 6 hours worth of millis()
|
||||||
|
|
||||||
#include "config/Default_H2S_NonH2S/Default_H2S_NonH2S.h"
|
#include "bme680_iaq_33v_3s_4d/bsec_iaq.h"
|
||||||
|
|
||||||
class BME680Sensor : virtual public TelemetrySensor
|
class BME680Sensor : virtual public TelemetrySensor
|
||||||
{
|
{
|
||||||
@ -17,10 +17,7 @@ class BME680Sensor : virtual public TelemetrySensor
|
|||||||
uint8_t bsecState[BSEC_MAX_STATE_BLOB_SIZE] = {0};
|
uint8_t bsecState[BSEC_MAX_STATE_BLOB_SIZE] = {0};
|
||||||
uint8_t accuracy = 0;
|
uint8_t accuracy = 0;
|
||||||
uint16_t stateUpdateCounter = 0;
|
uint16_t stateUpdateCounter = 0;
|
||||||
bsec_virtual_sensor_t sensorList[13] = {BSEC_OUTPUT_IAQ,
|
bsecSensor sensorList[9] = {BSEC_OUTPUT_IAQ,
|
||||||
BSEC_OUTPUT_STATIC_IAQ,
|
|
||||||
BSEC_OUTPUT_CO2_EQUIVALENT,
|
|
||||||
BSEC_OUTPUT_BREATH_VOC_EQUIVALENT,
|
|
||||||
BSEC_OUTPUT_RAW_TEMPERATURE,
|
BSEC_OUTPUT_RAW_TEMPERATURE,
|
||||||
BSEC_OUTPUT_RAW_PRESSURE,
|
BSEC_OUTPUT_RAW_PRESSURE,
|
||||||
BSEC_OUTPUT_RAW_HUMIDITY,
|
BSEC_OUTPUT_RAW_HUMIDITY,
|
||||||
@ -28,13 +25,14 @@ class BME680Sensor : virtual public TelemetrySensor
|
|||||||
BSEC_OUTPUT_STABILIZATION_STATUS,
|
BSEC_OUTPUT_STABILIZATION_STATUS,
|
||||||
BSEC_OUTPUT_RUN_IN_STATUS,
|
BSEC_OUTPUT_RUN_IN_STATUS,
|
||||||
BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_TEMPERATURE,
|
BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_TEMPERATURE,
|
||||||
BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_HUMIDITY,
|
BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_HUMIDITY};
|
||||||
BSEC_OUTPUT_GAS_PERCENTAGE};
|
|
||||||
void loadState();
|
void loadState();
|
||||||
void updateState();
|
void updateState();
|
||||||
|
void checkStatus(String functionName);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
BME680Sensor();
|
BME680Sensor();
|
||||||
|
int32_t runTrigger();
|
||||||
virtual int32_t runOnce() override;
|
virtual int32_t runOnce() override;
|
||||||
virtual bool getMetrics(meshtastic_Telemetry *measurement) override;
|
virtual bool getMetrics(meshtastic_Telemetry *measurement) override;
|
||||||
};
|
};
|
82
src/modules/Telemetry/Sensor/bme680_iaq_33v_3s_4d/bsec_iaq.c
Normal file
82
src/modules/Telemetry/Sensor/bme680_iaq_33v_3s_4d/bsec_iaq.c
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
#include "bsec_iaq.h"
|
||||||
|
|
||||||
|
const uint8_t bsec_config_iaq[1974] = {
|
||||||
|
0, 0, 4, 2, 189, 1, 0, 0, 0, 0, 0, 0, 158, 7, 0, 0, 176, 0, 1, 0, 0, 192, 168, 71, 64,
|
||||||
|
49, 119, 76, 0, 0, 97, 69, 0, 0, 97, 69, 137, 65, 0, 191, 205, 204, 204, 190, 0, 0, 64, 191, 225, 122,
|
||||||
|
148, 190, 10, 0, 3, 0, 0, 0, 96, 64, 23, 183, 209, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 205, 204, 204, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 82, 73, 157, 188, 95, 41, 203, 61, 118, 224,
|
||||||
|
108, 63, 155, 230, 125, 63, 191, 14, 124, 63, 0, 0, 160, 65, 0, 0, 32, 66, 0, 0, 160, 65, 0, 0, 32,
|
||||||
|
66, 0, 0, 32, 66, 0, 0, 160, 65, 0, 0, 32, 66, 0, 0, 160, 65, 8, 0, 2, 0, 236, 81, 133, 66,
|
||||||
|
16, 0, 3, 0, 10, 215, 163, 60, 10, 215, 35, 59, 10, 215, 35, 59, 13, 0, 5, 0, 0, 0, 0, 0, 100,
|
||||||
|
35, 41, 29, 86, 88, 0, 9, 0, 229, 208, 34, 62, 0, 0, 0, 0, 0, 0, 0, 0, 218, 27, 156, 62, 225,
|
||||||
|
11, 67, 64, 0, 0, 160, 64, 0, 0, 0, 0, 0, 0, 0, 0, 94, 75, 72, 189, 93, 254, 159, 64, 66, 62,
|
||||||
|
160, 191, 0, 0, 0, 0, 0, 0, 0, 0, 33, 31, 180, 190, 138, 176, 97, 64, 65, 241, 99, 190, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 167, 121, 71, 61, 165, 189, 41, 192, 184, 30, 189, 64, 12, 0, 10, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 13, 5, 11, 0, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0,
|
||||||
|
128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128,
|
||||||
|
63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63,
|
||||||
|
0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0,
|
||||||
|
0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0,
|
||||||
|
128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128,
|
||||||
|
63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63,
|
||||||
|
0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0,
|
||||||
|
0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0,
|
||||||
|
128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128,
|
||||||
|
63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63,
|
||||||
|
0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0,
|
||||||
|
0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0,
|
||||||
|
128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128,
|
||||||
|
63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63,
|
||||||
|
0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0,
|
||||||
|
0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0,
|
||||||
|
128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128,
|
||||||
|
63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63,
|
||||||
|
0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0,
|
||||||
|
0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0,
|
||||||
|
128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128,
|
||||||
|
63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63,
|
||||||
|
0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0,
|
||||||
|
0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0,
|
||||||
|
128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128,
|
||||||
|
63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63,
|
||||||
|
0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0,
|
||||||
|
0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0,
|
||||||
|
128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128,
|
||||||
|
63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63,
|
||||||
|
0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0,
|
||||||
|
0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0,
|
||||||
|
128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128,
|
||||||
|
63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63,
|
||||||
|
0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0,
|
||||||
|
0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0,
|
||||||
|
128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128,
|
||||||
|
63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63,
|
||||||
|
0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0,
|
||||||
|
0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0,
|
||||||
|
128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128,
|
||||||
|
63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63,
|
||||||
|
0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 10, 10, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 128, 63,
|
||||||
|
0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0,
|
||||||
|
0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 88, 1, 254,
|
||||||
|
0, 2, 1, 5, 48, 117, 100, 0, 44, 1, 112, 23, 151, 7, 132, 3, 197, 0, 92, 4, 144, 1, 64, 1, 64,
|
||||||
|
1, 144, 1, 48, 117, 48, 117, 48, 117, 48, 117, 100, 0, 100, 0, 100, 0, 48, 117, 48, 117, 48, 117, 100, 0,
|
||||||
|
100, 0, 48, 117, 48, 117, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 100, 0, 100, 0, 100, 0, 100, 0, 48,
|
||||||
|
117, 48, 117, 48, 117, 100, 0, 100, 0, 100, 0, 48, 117, 48, 117, 100, 0, 100, 0, 255, 255, 255, 255, 255, 255,
|
||||||
|
255, 255, 255, 255, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44,
|
||||||
|
1, 44, 1, 44, 1, 44, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 23, 112, 23, 112, 23, 112, 23,
|
||||||
|
8, 7, 8, 7, 8, 7, 8, 7, 112, 23, 112, 23, 112, 23, 112, 23, 112, 23, 112, 23, 255, 255, 255, 255, 255,
|
||||||
|
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 23, 112, 23, 112, 23, 112, 23, 255, 255, 255, 255,
|
||||||
|
220, 5, 220, 5, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
||||||
|
255, 220, 5, 220, 5, 220, 5, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
||||||
|
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
||||||
|
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 44, 1, 0, 5, 10, 5,
|
||||||
|
0, 2, 0, 10, 0, 30, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 64, 1, 100, 0, 100, 0,
|
||||||
|
100, 0, 200, 0, 200, 0, 200, 0, 64, 1, 64, 1, 64, 1, 10, 0, 0, 0, 0, 0, 21, 122, 0, 0};
|
@ -0,0 +1,3 @@
|
|||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
extern const uint8_t bsec_config_iaq[1974];
|
@ -21,10 +21,10 @@ void getMacAddr(uint8_t *dmac)
|
|||||||
{
|
{
|
||||||
pico_unique_board_id_t src;
|
pico_unique_board_id_t src;
|
||||||
pico_get_unique_board_id(&src);
|
pico_get_unique_board_id(&src);
|
||||||
dmac[5] = src.id[0];
|
dmac[5] = src.id[7];
|
||||||
dmac[4] = src.id[1];
|
dmac[4] = src.id[6];
|
||||||
dmac[3] = src.id[2];
|
dmac[3] = src.id[5];
|
||||||
dmac[2] = src.id[3];
|
dmac[2] = src.id[4];
|
||||||
dmac[1] = src.id[4];
|
dmac[1] = src.id[3];
|
||||||
dmac[0] = src.id[5];
|
dmac[0] = src.id[2];
|
||||||
}
|
}
|
@ -103,13 +103,13 @@ void setGPSPower(bool on)
|
|||||||
if (pmu_found && PMU) {
|
if (pmu_found && PMU) {
|
||||||
uint8_t model = PMU->getChipModel();
|
uint8_t model = PMU->getChipModel();
|
||||||
if (model == XPOWERS_AXP2101) {
|
if (model == XPOWERS_AXP2101) {
|
||||||
#if (HW_VENDOR == meshtastic_HardwareModel_TBEAM)
|
if (HW_VENDOR == meshtastic_HardwareModel_TBEAM) {
|
||||||
// t-beam v1.2 GNSS power channel
|
// t-beam v1.2 GNSS power channel
|
||||||
on ? PMU->enablePowerOutput(XPOWERS_ALDO3) : PMU->disablePowerOutput(XPOWERS_ALDO3);
|
on ? PMU->enablePowerOutput(XPOWERS_ALDO3) : PMU->disablePowerOutput(XPOWERS_ALDO3);
|
||||||
#elif (HW_VENDOR == meshtastic_HardwareModel_LILYGO_TBEAM_S3_CORE)
|
} else if (HW_VENDOR == meshtastic_HardwareModel_LILYGO_TBEAM_S3_CORE) {
|
||||||
// t-beam-s3-core GNSS power channel
|
// t-beam-s3-core GNSS power channel
|
||||||
on ? PMU->enablePowerOutput(XPOWERS_ALDO4) : PMU->disablePowerOutput(XPOWERS_ALDO4);
|
on ? PMU->enablePowerOutput(XPOWERS_ALDO4) : PMU->disablePowerOutput(XPOWERS_ALDO4);
|
||||||
#endif
|
}
|
||||||
} else if (model == XPOWERS_AXP192) {
|
} else if (model == XPOWERS_AXP192) {
|
||||||
// t-beam v1.1 GNSS power channel
|
// t-beam v1.1 GNSS power channel
|
||||||
on ? PMU->enablePowerOutput(XPOWERS_LDO3) : PMU->disablePowerOutput(XPOWERS_LDO3);
|
on ? PMU->enablePowerOutput(XPOWERS_LDO3) : PMU->disablePowerOutput(XPOWERS_LDO3);
|
||||||
@ -252,12 +252,12 @@ void doDeepSleep(uint32_t msecToWake)
|
|||||||
|
|
||||||
uint8_t model = PMU->getChipModel();
|
uint8_t model = PMU->getChipModel();
|
||||||
if (model == XPOWERS_AXP2101) {
|
if (model == XPOWERS_AXP2101) {
|
||||||
#if (HW_VENDOR == meshtastic_HardwareModel_TBEAM)
|
if (HW_VENDOR == meshtastic_HardwareModel_TBEAM) {
|
||||||
// t-beam v1.2 radio power channel
|
// t-beam v1.2 radio power channel
|
||||||
PMU->disablePowerOutput(XPOWERS_ALDO2); // lora radio power channel
|
PMU->disablePowerOutput(XPOWERS_ALDO2); // lora radio power channel
|
||||||
#elif (HW_VENDOR == meshtastic_HardwareModel_LILYGO_TBEAM_S3_CORE)
|
} else if (HW_VENDOR == meshtastic_HardwareModel_LILYGO_TBEAM_S3_CORE) {
|
||||||
PMU->disablePowerOutput(XPOWERS_ALDO3); // lora radio power channel
|
PMU->disablePowerOutput(XPOWERS_ALDO3); // lora radio power channel
|
||||||
#endif
|
}
|
||||||
} else if (model == XPOWERS_AXP192) {
|
} else if (model == XPOWERS_AXP192) {
|
||||||
// t-beam v1.1 radio power channel
|
// t-beam v1.1 radio power channel
|
||||||
PMU->disablePowerOutput(XPOWERS_LDO2); // lora radio power channel
|
PMU->disablePowerOutput(XPOWERS_LDO2); // lora radio power channel
|
||||||
|
@ -36,6 +36,7 @@ cstyleCast
|
|||||||
// ignore stuff that is not ours
|
// ignore stuff that is not ours
|
||||||
*:.pio/*
|
*:.pio/*
|
||||||
*:*/libdeps/*
|
*:*/libdeps/*
|
||||||
|
*:*/generated/*
|
||||||
noExplicitConstructor:*/mqtt/*
|
noExplicitConstructor:*/mqtt/*
|
||||||
postfixOperator:*/mqtt/*
|
postfixOperator:*/mqtt/*
|
||||||
|
|
||||||
@ -44,3 +45,5 @@ missingOverride
|
|||||||
virtualCallInConstructor
|
virtualCallInConstructor
|
||||||
|
|
||||||
passedByValue:*/RedirectablePrint.h
|
passedByValue:*/RedirectablePrint.h
|
||||||
|
|
||||||
|
internalAstError:*/CrossPlatformCryptoEngine.cpp
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
#define BATTERY_PIN 1 // A battery voltage measurement pin, voltage divider connected here to measure battery voltage
|
#define BATTERY_PIN 1 // A battery voltage measurement pin, voltage divider connected here to measure battery voltage
|
||||||
#define ADC_CHANNEL ADC1_GPIO1_CHANNEL
|
#define ADC_CHANNEL ADC1_GPIO1_CHANNEL
|
||||||
|
#define ADC_ATTENUATION ADC_ATTEN_DB_2_5 // lower dB for high resistance voltage divider
|
||||||
#define ADC_MULTIPLIER 4.9
|
#define ADC_MULTIPLIER 4.9
|
||||||
|
|
||||||
#define USE_SX1262
|
#define USE_SX1262
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
#define BATTERY_PIN 1 // A battery voltage measurement pin, voltage divider connected here to measure battery voltage
|
#define BATTERY_PIN 1 // A battery voltage measurement pin, voltage divider connected here to measure battery voltage
|
||||||
#define ADC_CHANNEL ADC1_GPIO1_CHANNEL
|
#define ADC_CHANNEL ADC1_GPIO1_CHANNEL
|
||||||
|
#define ADC_ATTENUATION ADC_ATTEN_DB_2_5 // lower dB for high resistance voltage divider
|
||||||
#define ADC_MULTIPLIER 4.9
|
#define ADC_MULTIPLIER 4.9
|
||||||
|
|
||||||
#define USE_SX1262
|
#define USE_SX1262
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
[env:rak11310]
|
[env:rak11310]
|
||||||
extends = rp2040_base
|
extends = rp2040_base
|
||||||
board = wiscore_rak11300
|
board = wiscore_rak11300
|
||||||
board_level = extra
|
|
||||||
upload_protocol = picotool
|
upload_protocol = picotool
|
||||||
|
|
||||||
# add our variants files to the include and src paths
|
# add our variants files to the include and src paths
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
[env:pico]
|
[env:pico]
|
||||||
extends = rp2040_base
|
extends = rp2040_base
|
||||||
board = rpipico
|
board = rpipico
|
||||||
board_level = extra
|
|
||||||
upload_protocol = picotool
|
upload_protocol = picotool
|
||||||
|
|
||||||
# add our variants files to the include and src paths
|
# add our variants files to the include and src paths
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
[VERSION]
|
[VERSION]
|
||||||
major = 2
|
major = 2
|
||||||
minor = 1
|
minor = 1
|
||||||
build = 13
|
build = 14
|
||||||
|
Loading…
Reference in New Issue
Block a user