mirror of
https://github.com/meshtastic/firmware.git
synced 2026-01-05 09:30:42 +00:00
Compare commits
10 Commits
v2.6.7.2d6
...
ble-locati
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bad6c5b96a | ||
|
|
6f256c06f6 | ||
|
|
86217111b2 | ||
|
|
57d6c1fa85 | ||
|
|
62421a83fd | ||
|
|
867f50ab11 | ||
|
|
1e81ebed06 | ||
|
|
dd2cf633b0 | ||
|
|
fdbe16f650 | ||
|
|
a2903921cd |
1
.github/workflows/main_matrix.yml
vendored
1
.github/workflows/main_matrix.yml
vendored
@@ -149,6 +149,7 @@ jobs:
|
||||
secrets: inherit
|
||||
|
||||
test-native:
|
||||
if: ${{ !contains(github.ref_name, 'event/') }}
|
||||
uses: ./.github/workflows/test_native.yml
|
||||
|
||||
docker-deb-amd64:
|
||||
|
||||
16
.github/workflows/release_channels.yml
vendored
16
.github/workflows/release_channels.yml
vendored
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
8
debian/changelog
vendored
@@ -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
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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}}"
|
||||
}
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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!");
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[VERSION]
|
||||
major = 2
|
||||
minor = 6
|
||||
build = 7
|
||||
build = 8
|
||||
|
||||
Reference in New Issue
Block a user