Compare commits

..

10 Commits

Author SHA1 Message Date
Ben Meadors
bad6c5b96a WIP 2025-05-11 12:46:04 -05:00
Ben Meadors
6f256c06f6 Fix warning 2025-05-07 09:26:10 -05:00
Benjamin Faershtein
86217111b2 Update SECURITY.md (#6757) 2025-05-07 06:28:18 -05:00
Austin
57d6c1fa85 Fix event templates (names, PSKs) (#6753) 2025-05-06 18:05:22 -04:00
Austin
62421a83fd Fix EVENT_MODE on mqttless targets (#6750) 2025-05-06 13:12:25 -04:00
Austin
867f50ab11 Don't run test-native for event firmwares (#6749) 2025-05-06 12:03:01 -05:00
renovate[bot]
1e81ebed06 chore(deps): update meshtastic/device-ui digest to 35576e1 (#6747)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-06 11:14:45 -05:00
github-actions[bot]
dd2cf633b0 Upgrade trunk (#6745)
Co-authored-by: sachaw <11172820+sachaw@users.noreply.github.com>
2025-05-06 11:09:25 -05:00
github-actions[bot]
fdbe16f650 Bump release version (#6743)
* automated bumps

* Bump org.meshtastic.meshtasticd, fix GHA

---------

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>
Co-authored-by: vidplace7 <vidplace7@gmail.com>
2025-05-06 11:09:14 -05:00
Austin
a2903921cd Renovate: fix device-ui match (#6748) 2025-05-06 11:09:01 -05:00
15 changed files with 109 additions and 25 deletions

View File

@@ -149,6 +149,7 @@ jobs:
secrets: inherit
test-native:
if: ${{ !contains(github.ref_name, 'event/') }}
uses: ./.github/workflows/test_native.yml
docker-deb-amd64:

View File

@@ -63,21 +63,17 @@ jobs:
with:
python-version: 3.x
- name: Get release version string
run: |
echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
echo "short=$(./bin/buildinfo.py short)" >> $GITHUB_OUTPUT
echo "deb=$(./bin/buildinfo.py deb)" >> $GITHUB_OUTPUT
id: version
env:
BUILD_LOCATION: local
- name: Bump version.properties
run: |
# Bump version.properties
chmod +x ./bin/bump_version.py
./bin/bump_version.py
- name: Get new release version string
run: |
echo "short=$(./bin/buildinfo.py short)" >> $GITHUB_OUTPUT
id: new_version
- name: Ensure debian deps are installed
run: |
sudo apt-get update -y --fix-missing
@@ -94,7 +90,7 @@ jobs:
# Bump org.meshtastic.meshtasticd.metainfo.xml
pip install -r bin/bump_metainfo/requirements.txt -q
chmod +x ./bin/bump_metainfo/bump_metainfo.py
./bin/bump_metainfo/bump_metainfo.py --file bin/org.meshtastic.meshtasticd.metainfo.xml "${{ steps.version.outputs.short }}"
./bin/bump_metainfo/bump_metainfo.py --file bin/org.meshtastic.meshtasticd.metainfo.xml "${{ steps.new_version.outputs.short }}"
env:
PIP_DISABLE_PIP_VERSION_CHECK: 1

View File

@@ -10,8 +10,8 @@ lint:
enabled:
- renovate@40.0.6
- prettier@3.5.3
- trufflehog@3.88.26
- yamllint@1.37.0
- trufflehog@3.88.27
- yamllint@1.37.1
- bandit@1.8.3
- terrascan@1.19.9
- trivy@0.61.1

View File

@@ -4,8 +4,8 @@
| Firmware Version | Supported |
| ---------------- | ------------------ |
| 2.5.x | :white_check_mark: |
| <= 2.4.x | :x: |
| 2.6.x | :white_check_mark: |
| <= 2.5.x | :x: |
## Reporting a Vulnerability

View File

@@ -87,6 +87,9 @@
</screenshots>
<releases>
<release version="2.6.8" date="2025-05-05">
<url type="details">https://github.com/meshtastic/firmware/releases?q=tag%3Av2.6.8</url>
</release>
<release version="2.6.7" date="2025-04-28">
<url type="details">https://github.com/meshtastic/firmware/releases?q=tag%3Av2.6.7</url>
</release>

8
debian/changelog vendored
View File

@@ -1,9 +1,13 @@
meshtasticd (2.5.22.0) UNRELEASED; urgency=medium
meshtasticd (2.6.8.0) UNRELEASED; urgency=medium
[ Austin Lane ]
* Initial packaging
* GitHub Actions Automatic version bump
* GitHub Actions Automatic version bump
* GitHub Actions Automatic version bump
* GitHub Actions Automatic version bump
-- Austin Lane <github-actions[bot]@users.noreply.github.com> Wed, 05 Feb 2025 01:10:33 +0000
[ ]
* GitHub Actions Automatic version bump
-- <github-actions[bot]@users.noreply.github.com> Tue, 06 May 2025 01:32:49 +0000

View File

@@ -108,7 +108,7 @@ lib_deps =
[device-ui_base]
lib_deps =
# renovate: datasource=git-refs depName=meshtastic/device-ui packageName=https://github.com/meshtastic/device-ui gitBranch=master
https://github.com/meshtastic/device-ui/archive/b9e2ad1222db9f5a5080248b2f018c250f0efae5.zip
https://github.com/meshtastic/device-ui/archive/35576e131e250f259878ea81819a90df837d1307.zip
; Common libs for environmental measurements in telemetry module
[environmental_base]

View File

@@ -71,7 +71,7 @@
],
"packageRules": [
{
"matchPackageNames": ["meshtastic/device-ui"],
"matchDepNames": ["meshtastic/device-ui"],
"reviewers": ["mverch67"],
"changelogUrl": "https://github.com/meshtastic/device-ui/compare/{{currentDigest}}...{{newDigest}}"
}

View File

@@ -20,6 +20,9 @@ extern const uint8_t MESH_SERVICE_UUID_16[], TORADIO_UUID_16[16u], FROMRADIO_UUI
/// Given a level between 0-100, update the BLE attribute
void updateBatteryLevel(uint8_t level);
void updateLongitude(double longitude);
void updateLatitude(double latitude);
void updateAltitude(float altitude);
class BluetoothApi
{

View File

@@ -345,7 +345,7 @@ void Channels::setChannel(const meshtastic_Channel &c)
bool Channels::anyMqttEnabled()
{
#if USERPREFS_EVENT_MODE
#if USERPREFS_EVENT_MODE && !MESHTASTIC_EXCLUDE_MQTT
// Don't publish messages on the public MQTT broker if we are in event mode
if (mqtt && mqtt->isUsingDefaultServer()) {
return false;

View File

@@ -408,6 +408,14 @@ int MeshService::onGPSChanged(const meshtastic::GPSStatus *newStatus)
// Update our current position in the local DB
nodeDB->updatePosition(nodeDB->getNodeNum(), pos, RX_SRC_LOCAL);
if (pos.has_latitude_i && pos.has_longitude_i) {
updateLongitude(pos.longitude_i * 1e-7);
updateLatitude(pos.latitude_i * 1e-7);
if (pos.has_altitude) {
updateAltitude(pos.altitude);
}
}
return 0;
}
#endif

View File

@@ -513,7 +513,7 @@ void SerialModule::processWXSerial()
// Extract the current line
char line[meshtastic_Constants_DATA_PAYLOAD_LEN];
memset(line, '\0', sizeof(line));
if (lineEnd - lineStart < sizeof(line) - 1) {
if ((size_t)(lineEnd - lineStart) < sizeof(line) - 1) {
memcpy(line, &serialBytes[lineStart], lineEnd - lineStart);
ParsedLine parsed = parseLine(line);

View File

@@ -13,6 +13,11 @@ static BLECharacteristic fromNum = BLECharacteristic(BLEUuid(FROMNUM_UUID_16));
static BLECharacteristic fromRadio = BLECharacteristic(BLEUuid(FROMRADIO_UUID_16));
static BLECharacteristic toRadio = BLECharacteristic(BLEUuid(TORADIO_UUID_16));
static BLECharacteristic logRadio = BLECharacteristic(BLEUuid(LOGRADIO_UUID_16));
static BLECharacteristic latitude = BLECharacteristic(UUID16_CHR_LATITUDE);
static BLECharacteristic longitude = BLECharacteristic(UUID16_CHR_LONGITUDE);
static BLECharacteristic altitude = BLECharacteristic(UUID16_CHR_ELEVATION);
static BLEService locationService;
static BLEDis bledis; // DIS (Device Information Service) helper class instance
static BLEBas blebas; // BAS (Battery Service) helper class instance
@@ -106,6 +111,7 @@ void startAdv(void)
// Include Name
// Bluefruit.Advertising.addName();
Bluefruit.Advertising.addService(meshBleService);
Bluefruit.Advertising.addService(locationService);
/* Start Advertising
* - Enable auto advertising if disconnected
* - Interval: fast mode = 20 ms, slow mode = 152.5 ms
@@ -204,7 +210,36 @@ void setupMeshService(void)
logRadio.setCccdWriteCallback(onCccd);
logRadio.write32(0);
logRadio.begin();
// Configure the Location and Navigation service
locationService = BLEService(UUID16_SVC_LOCATION_AND_NAVIGATION);
// Setup the service
locationService.begin();
// Configure the latitude characteristic
latitude.setProperties(CHR_PROPS_READ | CHR_PROPS_NOTIFY);
latitude.setPermission(secMode, SECMODE_NO_ACCESS);
latitude.setFixedLen(4); // IEEE-11073 32-bit FLOAT
latitude.write32(0); // Set default value to 0
latitude.begin();
// Configure the longitude characteristic
// Properties: READ and NOTIFY
longitude.setProperties(CHR_PROPS_READ | CHR_PROPS_NOTIFY);
longitude.setPermission(secMode, SECMODE_NO_ACCESS);
longitude.setFixedLen(4); // IEEE-11073 32-bit FLOAT
longitude.write32(0); // Set default value to 0
longitude.begin();
// Configure the altitude characteristic
altitude.setProperties(CHR_PROPS_READ | CHR_PROPS_NOTIFY);
altitude.setPermission(secMode, SECMODE_NO_ACCESS);
altitude.setFixedLen(4); // IEEE-11073 32-bit FLOAT
altitude.write32(0); // Set default value to 0
altitude.begin();
}
static uint32_t configuredPasskey;
void NRF52Bluetooth::shutdown()
{
@@ -300,6 +335,40 @@ void updateBatteryLevel(uint8_t level)
{
blebas.write(level);
}
void updateLongitude(double lon)
{
if (!Bluefruit.connected()) {
return;
}
// Convert double to IEEE-11073 32-bit FLOAT format
int32_t longValue = (int32_t)(lon * 10000000); // Convert to fixed-point value (7 decimal places)
longitude.notify(&longValue, sizeof(longValue));
}
void updateLatitude(double lat)
{
if (!Bluefruit.connected()) {
return;
}
// Convert double to IEEE-11073 32-bit FLOAT format
int32_t latValue = round(lat); // Convert to fixed-point value (7 decimal places)
latitude.notify(&latValue, sizeof(latValue));
}
void updateAltitude(float alt)
{
if (!Bluefruit.connected()) {
return;
}
// Convert float to IEEE - 11073 32 - bit FLOAT format
int32_t altValue = (int32_t)(alt * 100); // Convert to centimeters (2 decimal places)
altitude.notify(&altValue, sizeof(altValue));
}
void NRF52Bluetooth::clearBonds()
{
LOG_INFO("Clear bluetooth bonds!");

View File

@@ -7,14 +7,14 @@
// "USERPREFS_CHANNEL_0_PSK": "{ 0x38, 0x4b, 0xbc, 0xc0, 0x1d, 0xc0, 0x22, 0xd1, 0x81, 0xbf, 0x36, 0xb8, 0x61, 0x21, 0xe1, 0xfb, 0x96, 0xb7, 0x2e, 0x55, 0xbf, 0x74, 0x22, 0x7e, 0x9d, 0x6a, 0xfb, 0x48, 0xd6, 0x4c, 0xb1, 0xa1 }",
// "USERPREFS_CHANNEL_0_UPLINK_ENABLED": "true",
// "USERPREFS_CHANNEL_1_DOWNLINK_ENABLED": "false",
// "USERPREFS_CHANNEL_1_NAME": "Node Build Chat",
// "USERPREFS_CHANNEL_1_NAME": "NodeChat",
// "USERPREFS_CHANNEL_1_PRECISION": "14",
// "USERPREFS_CHANNEL_1_PSK": "{ 0x38, 0x4b, 0xbc, 0xc0, 0x1d, 0xc0, 0x22, 0xd1, 0x81, 0xbf, 0x36, 0xb8, 0x61, 0x21, 0xe1, 0xfb, 0x96, 0xb7, 0x2e, 0x55, 0xbf, 0x74, 0x22, 0x7e, 0x9d, 0x6a, 0xfb, 0x48, 0xd6, 0x4c, 0xb1, 0xa2 }",
// "USERPREFS_CHANNEL_1_PSK": "{ 0x4e, 0x22, 0x1d, 0x8b, 0xc3, 0x09, 0x1b, 0xe2, 0x11, 0x9c, 0x89, 0x12, 0xf2, 0x25, 0x19, 0x5d, 0x15, 0x3e, 0x30, 0x7b, 0x86, 0xb6, 0xec, 0xc4, 0x6a, 0xc3, 0x96, 0x5e, 0x9e, 0x10, 0x9d, 0xd5 }",
// "USERPREFS_CHANNEL_1_UPLINK_ENABLED": "false",
// "USERPREFS_CHANNEL_2_DOWNLINK_ENABLED": "false",
// "USERPREFS_CHANNEL_2_NAME": "Equipment Exchange",
// "USERPREFS_CHANNEL_2_NAME": "YardSale",
// "USERPREFS_CHANNEL_2_PRECISION": "14",
// "USERPREFS_CHANNEL_2_PSK": "{ 0x38, 0x4b, 0xbc, 0xc0, 0x1d, 0xc0, 0x22, 0xd1, 0x81, 0xbf, 0x36, 0xb8, 0x61, 0x21, 0xe1, 0xfb, 0x96, 0xb7, 0x2e, 0x55, 0xbf, 0x74, 0x22, 0x7e, 0x9d, 0x6a, 0xfb, 0x48, 0xd6, 0x4c, 0xb1, 0xa3 }",
// "USERPREFS_CHANNEL_2_PSK": "{ 0x15, 0x6f, 0xfe, 0x46, 0xd4, 0x56, 0x63, 0x8a, 0x54, 0x43, 0x13, 0xf2, 0xef, 0x6c, 0x63, 0x89, 0xf0, 0x06, 0x30, 0x52, 0xce, 0x36, 0x5e, 0xb1, 0xe8, 0xbb, 0x86, 0xe6, 0x26, 0x5b, 0x1d, 0x58 }",
// "USERPREFS_CHANNEL_2_UPLINK_ENABLED": "false",
// "USERPREFS_CONFIG_GPS_MODE": "meshtastic_Config_PositionConfig_GpsMode_ENABLED",
// "USERPREFS_CONFIG_LORA_IGNORE_MQTT": "true",

View File

@@ -1,4 +1,4 @@
[VERSION]
major = 2
minor = 6
build = 7
build = 8