mirror of
https://github.com/meshtastic/firmware.git
synced 2025-09-19 08:17:26 +00:00
Compare commits
6 Commits
65710a9299
...
f334dcfe57
Author | SHA1 | Date | |
---|---|---|---|
![]() |
f334dcfe57 | ||
![]() |
1e186af963 | ||
![]() |
0d95b1afcc | ||
![]() |
46235f6f8b | ||
![]() |
d1068fd1e4 | ||
![]() |
f41afb14b1 |
@ -29,6 +29,7 @@ RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
|
|||||||
gpg \
|
gpg \
|
||||||
gnupg2 \
|
gnupg2 \
|
||||||
libusb-1.0-0-dev \
|
libusb-1.0-0-dev \
|
||||||
|
libuv1-dev \
|
||||||
libi2c-dev \
|
libi2c-dev \
|
||||||
libxcb-xkb-dev \
|
libxcb-xkb-dev \
|
||||||
libxkbcommon-dev \
|
libxkbcommon-dev \
|
||||||
|
2
.github/actions/setup-native/action.yml
vendored
2
.github/actions/setup-native/action.yml
vendored
@ -11,4 +11,4 @@ runs:
|
|||||||
- name: Install libs needed for native build
|
- name: Install libs needed for native build
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get install -y libbluetooth-dev libgpiod-dev libyaml-cpp-dev openssl libssl-dev libulfius-dev liborcania-dev libusb-1.0-0-dev libi2c-dev
|
sudo apt-get install -y libbluetooth-dev libgpiod-dev libyaml-cpp-dev openssl libssl-dev libulfius-dev liborcania-dev libusb-1.0-0-dev libi2c-dev libuv1-dev
|
||||||
|
@ -13,7 +13,7 @@ ENV TZ=Etc/UTC
|
|||||||
ENV PIP_ROOT_USER_ACTION=ignore
|
ENV PIP_ROOT_USER_ACTION=ignore
|
||||||
RUN apt-get update && apt-get install --no-install-recommends -y \
|
RUN apt-get update && apt-get install --no-install-recommends -y \
|
||||||
wget g++ zip git ca-certificates \
|
wget g++ zip git ca-certificates \
|
||||||
libgpiod-dev libyaml-cpp-dev libbluetooth-dev libi2c-dev \
|
libgpiod-dev libyaml-cpp-dev libbluetooth-dev libi2c-dev libuv1-dev \
|
||||||
libusb-1.0-0-dev libulfius-dev liborcania-dev libssl-dev pkg-config \
|
libusb-1.0-0-dev libulfius-dev liborcania-dev libssl-dev pkg-config \
|
||||||
&& apt-get clean && rm -rf /var/lib/apt/lists/* \
|
&& apt-get clean && rm -rf /var/lib/apt/lists/* \
|
||||||
&& pip install --no-cache-dir -U platformio \
|
&& pip install --no-cache-dir -U platformio \
|
||||||
@ -38,7 +38,7 @@ ENV TZ=Etc/UTC
|
|||||||
USER root
|
USER root
|
||||||
|
|
||||||
RUN apt-get update && apt-get --no-install-recommends -y install \
|
RUN apt-get update && apt-get --no-install-recommends -y install \
|
||||||
libc-bin libc6 libgpiod2 libyaml-cpp0.7 libi2c0 libulfius2.7 libusb-1.0-0-dev liborcania2.3 libssl3 \
|
libc-bin libc6 libgpiod2 libyaml-cpp0.7 libi2c0 libuv1 libusb-1.0-0-dev liborcania2.3 libulfius2.7 libssl3 \
|
||||||
&& apt-get clean && rm -rf /var/lib/apt/lists/* \
|
&& apt-get clean && rm -rf /var/lib/apt/lists/* \
|
||||||
&& mkdir -p /var/lib/meshtasticd \
|
&& mkdir -p /var/lib/meshtasticd \
|
||||||
&& mkdir -p /etc/meshtasticd/config.d \
|
&& mkdir -p /etc/meshtasticd/config.d \
|
||||||
|
@ -9,7 +9,7 @@ FROM python:3.13-alpine3.21 AS builder
|
|||||||
ENV PIP_ROOT_USER_ACTION=ignore
|
ENV PIP_ROOT_USER_ACTION=ignore
|
||||||
RUN apk --no-cache add \
|
RUN apk --no-cache add \
|
||||||
bash g++ libstdc++-dev linux-headers zip git ca-certificates libgpiod-dev yaml-cpp-dev bluez-dev \
|
bash g++ libstdc++-dev linux-headers zip git ca-certificates libgpiod-dev yaml-cpp-dev bluez-dev \
|
||||||
libusb-dev i2c-tools-dev openssl-dev pkgconf argp-standalone \
|
libusb-dev i2c-tools-dev libuv-dev openssl-dev pkgconf argp-standalone \
|
||||||
&& rm -rf /var/cache/apk/* \
|
&& rm -rf /var/cache/apk/* \
|
||||||
&& pip install --no-cache-dir -U platformio \
|
&& pip install --no-cache-dir -U platformio \
|
||||||
&& mkdir /tmp/firmware
|
&& mkdir /tmp/firmware
|
||||||
@ -32,7 +32,7 @@ FROM alpine:3.21
|
|||||||
USER root
|
USER root
|
||||||
|
|
||||||
RUN apk --no-cache add \
|
RUN apk --no-cache add \
|
||||||
libstdc++ libgpiod yaml-cpp libusb i2c-tools \
|
libstdc++ libgpiod yaml-cpp libusb i2c-tools libuv \
|
||||||
&& rm -rf /var/cache/apk/* \
|
&& rm -rf /var/cache/apk/* \
|
||||||
&& mkdir -p /var/lib/meshtasticd \
|
&& mkdir -p /var/lib/meshtasticd \
|
||||||
&& mkdir -p /etc/meshtasticd/config.d \
|
&& mkdir -p /etc/meshtasticd/config.d \
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
; The Portduino based 'native' environment. Currently supported on Linux targets with real LoRa hardware (or simulated).
|
; The Portduino based 'native' environment. Currently supported on Linux targets with real LoRa hardware (or simulated).
|
||||||
[portduino_base]
|
[portduino_base]
|
||||||
platform = https://github.com/meshtastic/platform-native.git#562d189828f09fbf4c4093b3c0104bae9d8e9ff9
|
platform = https://github.com/meshtastic/platform-native.git#df71ed0040e9aad767a002829330965b78fc452a
|
||||||
framework = arduino
|
framework = arduino
|
||||||
|
|
||||||
build_src_filter =
|
build_src_filter =
|
||||||
@ -34,10 +34,12 @@ build_flags =
|
|||||||
-Isrc/platform/portduino
|
-Isrc/platform/portduino
|
||||||
-DRADIOLIB_EEPROM_UNSUPPORTED
|
-DRADIOLIB_EEPROM_UNSUPPORTED
|
||||||
-DPORTDUINO_LINUX_HARDWARE
|
-DPORTDUINO_LINUX_HARDWARE
|
||||||
|
-DHAS_UDP_MULTICAST
|
||||||
-lpthread
|
-lpthread
|
||||||
-lstdc++fs
|
-lstdc++fs
|
||||||
-lbluetooth
|
-lbluetooth
|
||||||
-lgpiod
|
-lgpiod
|
||||||
-lyaml-cpp
|
-lyaml-cpp
|
||||||
-li2c
|
-li2c
|
||||||
|
-luv
|
||||||
-std=c++17
|
-std=c++17
|
||||||
|
1
debian/control
vendored
1
debian/control
vendored
@ -17,6 +17,7 @@ Build-Depends: debhelper-compat (= 13),
|
|||||||
libbluetooth-dev,
|
libbluetooth-dev,
|
||||||
libusb-1.0-0-dev,
|
libusb-1.0-0-dev,
|
||||||
libi2c-dev,
|
libi2c-dev,
|
||||||
|
libuv1-dev,
|
||||||
openssl,
|
openssl,
|
||||||
libssl-dev,
|
libssl-dev,
|
||||||
libulfius-dev,
|
libulfius-dev,
|
||||||
|
@ -36,6 +36,7 @@ BuildRequires: pkgconfig(libgpiod)
|
|||||||
BuildRequires: pkgconfig(bluez)
|
BuildRequires: pkgconfig(bluez)
|
||||||
BuildRequires: pkgconfig(libusb-1.0)
|
BuildRequires: pkgconfig(libusb-1.0)
|
||||||
BuildRequires: libi2c-devel
|
BuildRequires: libi2c-devel
|
||||||
|
BuildRequires: pkgconfig(libuv)
|
||||||
# Web components:
|
# Web components:
|
||||||
BuildRequires: pkgconfig(openssl)
|
BuildRequires: pkgconfig(openssl)
|
||||||
BuildRequires: pkgconfig(liborcania)
|
BuildRequires: pkgconfig(liborcania)
|
||||||
|
@ -822,6 +822,11 @@ void setup()
|
|||||||
#ifdef HAS_UDP_MULTICAST
|
#ifdef HAS_UDP_MULTICAST
|
||||||
LOG_DEBUG("Start multicast thread");
|
LOG_DEBUG("Start multicast thread");
|
||||||
udpThread = new UdpMulticastThread();
|
udpThread = new UdpMulticastThread();
|
||||||
|
#ifdef ARCH_PORTDUINO
|
||||||
|
// FIXME: portduino does not ever call onNetworkConnected so call it here because I don't know what happen if I call
|
||||||
|
// onNetworkConnected there
|
||||||
|
udpThread->start();
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
service = new MeshService();
|
service = new MeshService();
|
||||||
service->init();
|
service->init();
|
||||||
|
@ -22,8 +22,13 @@ class UdpMulticastThread : public concurrency::OSThread
|
|||||||
|
|
||||||
void start()
|
void start()
|
||||||
{
|
{
|
||||||
if (udp.listenMulticast(udpIpAddress, UDP_MULTICAST_DEFAUL_PORT)) {
|
if (udp.listenMulticast(udpIpAddress, UDP_MULTICAST_DEFAUL_PORT, 64)) {
|
||||||
|
#if !defined(ARCH_PORTDUINO)
|
||||||
|
// FIXME(PORTDUINO): arduino lacks IPAddress::toString()
|
||||||
LOG_DEBUG("UDP Listening on IP: %s", WiFi.localIP().toString().c_str());
|
LOG_DEBUG("UDP Listening on IP: %s", WiFi.localIP().toString().c_str());
|
||||||
|
#else
|
||||||
|
LOG_DEBUG("UDP Listening");
|
||||||
|
#endif
|
||||||
udp.onPacket([this](AsyncUDPPacket packet) { onReceive(packet); });
|
udp.onPacket([this](AsyncUDPPacket packet) { onReceive(packet); });
|
||||||
} else {
|
} else {
|
||||||
LOG_DEBUG("Failed to listen on UDP");
|
LOG_DEBUG("Failed to listen on UDP");
|
||||||
@ -33,7 +38,10 @@ class UdpMulticastThread : public concurrency::OSThread
|
|||||||
void onReceive(AsyncUDPPacket packet)
|
void onReceive(AsyncUDPPacket packet)
|
||||||
{
|
{
|
||||||
size_t packetLength = packet.length();
|
size_t packetLength = packet.length();
|
||||||
|
#ifndef ARCH_PORTDUINO
|
||||||
|
// FIXME(PORTDUINO): arduino lacks IPAddress::toString()
|
||||||
LOG_DEBUG("UDP broadcast from: %s, len=%u", packet.remoteIP().toString().c_str(), packetLength);
|
LOG_DEBUG("UDP broadcast from: %s, len=%u", packet.remoteIP().toString().c_str(), packetLength);
|
||||||
|
#endif
|
||||||
meshtastic_MeshPacket mp;
|
meshtastic_MeshPacket mp;
|
||||||
LOG_DEBUG("Decoding MeshPacket from UDP len=%u", packetLength);
|
LOG_DEBUG("Decoding MeshPacket from UDP len=%u", packetLength);
|
||||||
bool isPacketDecoded = pb_decode_from_bytes(packet.data(), packetLength, &meshtastic_MeshPacket_msg, &mp);
|
bool isPacketDecoded = pb_decode_from_bytes(packet.data(), packetLength, &meshtastic_MeshPacket_msg, &mp);
|
||||||
@ -48,9 +56,14 @@ class UdpMulticastThread : public concurrency::OSThread
|
|||||||
|
|
||||||
bool onSend(const meshtastic_MeshPacket *mp)
|
bool onSend(const meshtastic_MeshPacket *mp)
|
||||||
{
|
{
|
||||||
if (!mp || WiFi.status() != WL_CONNECTED) {
|
if (!mp || !udp) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
#if !defined(ARCH_PORTDUINO)
|
||||||
|
if (WiFi.status() != WL_CONNECTED) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
LOG_DEBUG("Broadcasting packet over UDP (id=%u)", mp->id);
|
LOG_DEBUG("Broadcasting packet over UDP (id=%u)", mp->id);
|
||||||
uint8_t buffer[meshtastic_MeshPacket_size];
|
uint8_t buffer[meshtastic_MeshPacket_size];
|
||||||
size_t encodedLength = pb_encode_to_bytes(buffer, sizeof(buffer), &meshtastic_MeshPacket_msg, mp);
|
size_t encodedLength = pb_encode_to_bytes(buffer, sizeof(buffer), &meshtastic_MeshPacket_msg, mp);
|
||||||
@ -70,4 +83,4 @@ class UdpMulticastThread : public concurrency::OSThread
|
|||||||
IPAddress udpIpAddress;
|
IPAddress udpIpAddress;
|
||||||
AsyncUDP udp;
|
AsyncUDP udp;
|
||||||
};
|
};
|
||||||
#endif // ARCH_ESP32
|
#endif // HAS_UDP_MULTICAST
|
@ -468,81 +468,83 @@ void SerialModule::processWXSerial()
|
|||||||
// Extract the current line
|
// Extract the current line
|
||||||
char line[meshtastic_Constants_DATA_PAYLOAD_LEN];
|
char line[meshtastic_Constants_DATA_PAYLOAD_LEN];
|
||||||
memset(line, '\0', sizeof(line));
|
memset(line, '\0', sizeof(line));
|
||||||
memcpy(line, &serialBytes[lineStart], lineEnd - lineStart);
|
if (lineEnd - lineStart < sizeof(line) - 1) {
|
||||||
if (strstr(line, "Wind") != NULL) // we have a wind line
|
memcpy(line, &serialBytes[lineStart], lineEnd - lineStart);
|
||||||
{
|
if (strstr(line, "Wind") != NULL) // we have a wind line
|
||||||
gotwind = true;
|
{
|
||||||
// Find the positions of "=" signs in the line
|
gotwind = true;
|
||||||
char *windDirPos = strstr(line, "WindDir = ");
|
// Find the positions of "=" signs in the line
|
||||||
char *windSpeedPos = strstr(line, "WindSpeed = ");
|
char *windDirPos = strstr(line, "WindDir = ");
|
||||||
char *windGustPos = strstr(line, "WindGust = ");
|
char *windSpeedPos = strstr(line, "WindSpeed = ");
|
||||||
|
char *windGustPos = strstr(line, "WindGust = ");
|
||||||
|
|
||||||
if (windDirPos != NULL) {
|
if (windDirPos != NULL) {
|
||||||
// Extract data after "=" for WindDir
|
// Extract data after "=" for WindDir
|
||||||
strcpy(windDir, windDirPos + 15); // Add 15 to skip "WindDir = "
|
strlcpy(windDir, windDirPos + 15, sizeof(windDir)); // Add 15 to skip "WindDir = "
|
||||||
double radians = GeoCoord::toRadians(strtof(windDir, nullptr));
|
double radians = GeoCoord::toRadians(strtof(windDir, nullptr));
|
||||||
dir_sum_sin += sin(radians);
|
dir_sum_sin += sin(radians);
|
||||||
dir_sum_cos += cos(radians);
|
dir_sum_cos += cos(radians);
|
||||||
dirCount++;
|
dirCount++;
|
||||||
} else if (windSpeedPos != NULL) {
|
} else if (windSpeedPos != NULL) {
|
||||||
// Extract data after "=" for WindSpeed
|
// Extract data after "=" for WindSpeed
|
||||||
strcpy(windVel, windSpeedPos + 15); // Add 15 to skip "WindSpeed = "
|
strlcpy(windVel, windSpeedPos + 15, sizeof(windVel)); // Add 15 to skip "WindSpeed = "
|
||||||
float newv = strtof(windVel, nullptr);
|
float newv = strtof(windVel, nullptr);
|
||||||
velSum += newv;
|
velSum += newv;
|
||||||
velCount++;
|
velCount++;
|
||||||
if (newv < lull || lull == -1)
|
if (newv < lull || lull == -1)
|
||||||
lull = newv;
|
lull = newv;
|
||||||
|
|
||||||
} else if (windGustPos != NULL) {
|
} else if (windGustPos != NULL) {
|
||||||
strcpy(windGust, windGustPos + 15); // Add 15 to skip "WindSpeed = "
|
strlcpy(windGust, windGustPos + 15, sizeof(windGust)); // Add 15 to skip "WindSpeed = "
|
||||||
float newg = strtof(windGust, nullptr);
|
float newg = strtof(windGust, nullptr);
|
||||||
if (newg > gust)
|
if (newg > gust)
|
||||||
gust = newg;
|
gust = newg;
|
||||||
}
|
}
|
||||||
|
|
||||||
// these are also voltage data we care about possibly
|
// these are also voltage data we care about possibly
|
||||||
} else if (strstr(line, "BatVoltage") != NULL) { // we have a battVoltage line
|
} else if (strstr(line, "BatVoltage") != NULL) { // we have a battVoltage line
|
||||||
char *batVoltagePos = strstr(line, "BatVoltage = ");
|
char *batVoltagePos = strstr(line, "BatVoltage = ");
|
||||||
if (batVoltagePos != NULL) {
|
if (batVoltagePos != NULL) {
|
||||||
strcpy(batVoltage, batVoltagePos + 17); // 18 for ws 80, 17 for ws85
|
strlcpy(batVoltage, batVoltagePos + 17, sizeof(batVoltage)); // 18 for ws 80, 17 for ws85
|
||||||
batVoltageF = strtof(batVoltage, nullptr);
|
batVoltageF = strtof(batVoltage, nullptr);
|
||||||
break; // last possible data we want so break
|
break; // last possible data we want so break
|
||||||
}
|
}
|
||||||
} else if (strstr(line, "CapVoltage") != NULL) { // we have a cappVoltage line
|
} else if (strstr(line, "CapVoltage") != NULL) { // we have a cappVoltage line
|
||||||
char *capVoltagePos = strstr(line, "CapVoltage = ");
|
char *capVoltagePos = strstr(line, "CapVoltage = ");
|
||||||
if (capVoltagePos != NULL) {
|
if (capVoltagePos != NULL) {
|
||||||
strcpy(capVoltage, capVoltagePos + 17); // 18 for ws 80, 17 for ws85
|
strlcpy(capVoltage, capVoltagePos + 17, sizeof(capVoltage)); // 18 for ws 80, 17 for ws85
|
||||||
capVoltageF = strtof(capVoltage, nullptr);
|
capVoltageF = strtof(capVoltage, nullptr);
|
||||||
}
|
}
|
||||||
// GXTS04Temp = 24.4
|
// GXTS04Temp = 24.4
|
||||||
} else if (strstr(line, "GXTS04Temp") != NULL) { // we have a temperature line
|
} else if (strstr(line, "GXTS04Temp") != NULL) { // we have a temperature line
|
||||||
char *tempPos = strstr(line, "GXTS04Temp = ");
|
char *tempPos = strstr(line, "GXTS04Temp = ");
|
||||||
if (tempPos != NULL) {
|
if (tempPos != NULL) {
|
||||||
strcpy(temperature, tempPos + 15); // 15 spaces for ws85
|
strlcpy(temperature, tempPos + 15, sizeof(temperature)); // 15 spaces for ws85
|
||||||
temperatureF = strtof(temperature, nullptr);
|
temperatureF = strtof(temperature, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (strstr(line, "RainIntSum") != NULL) { // we have a rainsum line
|
} else if (strstr(line, "RainIntSum") != NULL) { // we have a rainsum line
|
||||||
// LOG_INFO(line);
|
|
||||||
char *pos = strstr(line, "RainIntSum = ");
|
|
||||||
if (pos != NULL) {
|
|
||||||
strcpy(rainStr, pos + 17); // 17 spaces for ws85
|
|
||||||
rainSum = int(strtof(rainStr, nullptr));
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if (strstr(line, "Rain") != NULL) { // we have a rain line
|
|
||||||
if (strstr(line, "WaveRain") == NULL) { // skip WaveRain lines though.
|
|
||||||
// LOG_INFO(line);
|
// LOG_INFO(line);
|
||||||
char *pos = strstr(line, "Rain = ");
|
char *pos = strstr(line, "RainIntSum = ");
|
||||||
if (pos != NULL) {
|
if (pos != NULL) {
|
||||||
strcpy(rainStr, pos + 17); // 17 spaces for ws85
|
strlcpy(rainStr, pos + 17, sizeof(rainStr)); // 17 spaces for ws85
|
||||||
rain = strtof(rainStr, nullptr);
|
rainSum = int(strtof(rainStr, nullptr));
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (strstr(line, "Rain") != NULL) { // we have a rain line
|
||||||
|
if (strstr(line, "WaveRain") == NULL) { // skip WaveRain lines though.
|
||||||
|
// LOG_INFO(line);
|
||||||
|
char *pos = strstr(line, "Rain = ");
|
||||||
|
if (pos != NULL) {
|
||||||
|
strlcpy(rainStr, pos + 17, sizeof(rainStr)); // 17 spaces for ws85
|
||||||
|
rain = strtof(rainStr, nullptr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Update lineStart for the next line
|
// Update lineStart for the next line
|
||||||
lineStart = lineEnd + 1;
|
lineStart = lineEnd + 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -55,32 +55,38 @@ void saveConfig(meshtastic_Config_NetworkConfig *network)
|
|||||||
prefs.end();
|
prefs.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const esp_partition_t *getAppPartition()
|
||||||
|
{
|
||||||
|
return esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_OTA_1, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool getAppDesc(const esp_partition_t *part, esp_app_desc_t *app_desc)
|
||||||
|
{
|
||||||
|
if (esp_ota_get_partition_description(part, app_desc) != ESP_OK)
|
||||||
|
return false;
|
||||||
|
if (strcmp(app_desc->project_name, appProjectName) != 0)
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool trySwitchToOTA()
|
bool trySwitchToOTA()
|
||||||
{
|
{
|
||||||
|
const esp_partition_t *part = getAppPartition();
|
||||||
esp_app_desc_t app_desc;
|
esp_app_desc_t app_desc;
|
||||||
const esp_partition_t *part = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_OTA_1, NULL);
|
if (!getAppDesc(part, &app_desc))
|
||||||
if (!part)
|
|
||||||
return false;
|
return false;
|
||||||
if (ESP_ERROR_CHECK_WITHOUT_ABORT(esp_ota_get_partition_description(part, &app_desc)) != ESP_OK)
|
if (esp_ota_set_boot_partition(part) != ESP_OK)
|
||||||
return false;
|
|
||||||
if (strcmp(app_desc.project_name, appProjectName) != 0)
|
|
||||||
return false;
|
|
||||||
if (ESP_ERROR_CHECK_WITHOUT_ABORT(esp_ota_set_boot_partition(part)) != ESP_OK)
|
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
String getVersion()
|
String getVersion()
|
||||||
{
|
{
|
||||||
String version;
|
const esp_partition_t *part = getAppPartition();
|
||||||
esp_app_desc_t app_desc;
|
esp_app_desc_t app_desc;
|
||||||
const esp_partition_t *part = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_OTA_1, NULL);
|
if (!getAppDesc(part, &app_desc))
|
||||||
if (!part)
|
return String();
|
||||||
return version;
|
return String(app_desc.version);
|
||||||
if (ESP_ERROR_CHECK_WITHOUT_ABORT(esp_ota_get_partition_description(part, &app_desc)) != ESP_OK)
|
|
||||||
return version;
|
|
||||||
version = app_desc.version;
|
|
||||||
return version;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace WiFiOTA
|
} // namespace WiFiOTA
|
||||||
|
@ -23,8 +23,9 @@ build_flags = ${rp2350_base.build_flags}
|
|||||||
-DHAS_WIFI=1
|
-DHAS_WIFI=1
|
||||||
-L "${platformio.libdeps_dir}/${this.__env__}/bsec2/src/cortex-m33"
|
-L "${platformio.libdeps_dir}/${this.__env__}/bsec2/src/cortex-m33"
|
||||||
-fexceptions # for exception handling in MQTT
|
-fexceptions # for exception handling in MQTT
|
||||||
|
-DHAS_UDP_MULTICAST=1
|
||||||
build_src_filter = ${rp2350_base.build_src_filter} +<mesh/wifi/>
|
build_src_filter = ${rp2350_base.build_src_filter} +<mesh/wifi/>
|
||||||
lib_deps =
|
lib_deps =
|
||||||
${rp2350_base.lib_deps}
|
${rp2350_base.lib_deps}
|
||||||
${networking_base.lib_deps}
|
${networking_base.lib_deps}
|
||||||
debug_build_flags = ${rp2350_base.build_flags}, -g
|
debug_build_flags = ${rp2350_base.build_flags}, -g
|
||||||
|
@ -10,9 +10,10 @@ build_flags = ${rp2040_base.build_flags}
|
|||||||
-DHW_SPI1_DEVICE
|
-DHW_SPI1_DEVICE
|
||||||
-L "${platformio.libdeps_dir}/${this.__env__}/bsec2/src/cortex-m0plus"
|
-L "${platformio.libdeps_dir}/${this.__env__}/bsec2/src/cortex-m0plus"
|
||||||
-fexceptions # for exception handling in MQTT
|
-fexceptions # for exception handling in MQTT
|
||||||
|
-DHAS_UDP_MULTICAST=1
|
||||||
build_src_filter = ${rp2040_base.build_src_filter} +<mesh/wifi/>
|
build_src_filter = ${rp2040_base.build_src_filter} +<mesh/wifi/>
|
||||||
lib_deps =
|
lib_deps =
|
||||||
${rp2040_base.lib_deps}
|
${rp2040_base.lib_deps}
|
||||||
${networking_base.lib_deps}
|
${networking_base.lib_deps}
|
||||||
debug_build_flags = ${rp2040_base.build_flags}, -g
|
debug_build_flags = ${rp2040_base.build_flags}, -g
|
||||||
debug_tool = cmsis-dap ; for e.g. Picotool
|
debug_tool = cmsis-dap ; for e.g. Picotool
|
||||||
|
Loading…
Reference in New Issue
Block a user