mirror of
https://github.com/meshtastic/firmware.git
synced 2026-01-25 11:17:25 +00:00
Compare commits
22 Commits
v1.2.36
...
v1.2.38.45
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
451b085c13 | ||
|
|
3c4f3316c0 | ||
|
|
2f607d5a8c | ||
|
|
42f3154079 | ||
|
|
e7e09cb7ed | ||
|
|
c6092ea520 | ||
|
|
29ff778e22 | ||
|
|
d80814a12e | ||
|
|
cfeb0b47e9 | ||
|
|
6f14d017d8 | ||
|
|
cf4e508fb3 | ||
|
|
96fc1f5272 | ||
|
|
5b65fd5754 | ||
|
|
29587d4c4e | ||
|
|
a98bf80c24 | ||
|
|
49869ca044 | ||
|
|
5699abc8ad | ||
|
|
6b56583023 | ||
|
|
abe95ae1a4 | ||
|
|
4e8e85c9f1 | ||
|
|
26bb4ffe79 | ||
|
|
c857e5707e |
9
.github/workflows/main.yml
vendored
9
.github/workflows/main.yml
vendored
@@ -78,9 +78,16 @@ jobs:
|
|||||||
- name: Build everything
|
- name: Build everything
|
||||||
run: bin/build-all.sh
|
run: bin/build-all.sh
|
||||||
|
|
||||||
- name: Store release zip as an artifact
|
- name: Store binaries as an artifact
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: built
|
name: built
|
||||||
path: release/archive/firmware-*.zip
|
path: release/archive/firmware-*.zip
|
||||||
retention-days: 30
|
retention-days: 30
|
||||||
|
|
||||||
|
- name: Store debugging elf files as an artifact
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: debug-elfs
|
||||||
|
path: release/archive/elfs-*.zip
|
||||||
|
retention-days: 7
|
||||||
|
|||||||
16
.github/workflows/release.yml
vendored
16
.github/workflows/release.yml
vendored
@@ -49,7 +49,7 @@ jobs:
|
|||||||
|
|
||||||
# Will be available in steps.version.outputs.version
|
# Will be available in steps.version.outputs.version
|
||||||
- name: Get version string
|
- name: Get version string
|
||||||
run: echo "::set-output name=version::$(./bin/buildinfo.py)"
|
run: echo "::set-output name=version::$(./bin/buildinfo.py long)"
|
||||||
id: version
|
id: version
|
||||||
|
|
||||||
- name: Build everything
|
- name: Build everything
|
||||||
@@ -69,7 +69,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ github.token }}
|
GITHUB_TOKEN: ${{ github.token }}
|
||||||
|
|
||||||
- name: Add artifact to release
|
- name: Add bins to release
|
||||||
uses: actions/upload-release-asset@v1
|
uses: actions/upload-release-asset@v1
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ github.token }}
|
GITHUB_TOKEN: ${{ github.token }}
|
||||||
@@ -77,4 +77,14 @@ jobs:
|
|||||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||||
asset_path: release/archive/firmware-${{ steps.version.outputs.version }}.zip
|
asset_path: release/archive/firmware-${{ steps.version.outputs.version }}.zip
|
||||||
asset_name: firmware-${{ steps.version.outputs.version }}.zip
|
asset_name: firmware-${{ steps.version.outputs.version }}.zip
|
||||||
asset_content_type: application/zip
|
asset_content_type: application/zip
|
||||||
|
|
||||||
|
- name: Add debug elfs to release
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ github.token }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||||
|
asset_path: release/archive/elfs-${{ steps.version.outputs.version }}.zip
|
||||||
|
asset_name: debug-elfs-${{ steps.version.outputs.version }}.zip
|
||||||
|
asset_content_type: application/zip
|
||||||
@@ -187,7 +187,7 @@ Hard resetting via RTS pin...
|
|||||||
|
|
||||||
# Meshtastic Android app
|
# Meshtastic Android app
|
||||||
|
|
||||||
The companion (optional) Meshtastic Android app is [here](https://play.google.com/store/apps/details?id=com.geeksville.mesh&referrer=utm_source%3Dgithub-dev-readme). You can also download it on Google Play.
|
The companion (optional, free, open-source) Meshtastic Android app is available on various appstores [see this page for details](https://github.com/meshtastic/Meshtastic-Android/blob/master/README.md).
|
||||||
|
|
||||||
# Python API
|
# Python API
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ BOARDS_ESP32="tlora-v2 tlora-v1 tlora_v1_3 tlora-v2-1-1.6 tbeam heltec-v2.0 helt
|
|||||||
|
|
||||||
# FIXME note nrf52840dk build is for some reason only generating a BIN file but not a HEX file nrf52840dk-geeksville is fine
|
# FIXME note nrf52840dk build is for some reason only generating a BIN file but not a HEX file nrf52840dk-geeksville is fine
|
||||||
BOARDS_NRF52="rak4631 t-echo"
|
BOARDS_NRF52="rak4631 t-echo"
|
||||||
|
#BOARDS_NRF52=""
|
||||||
|
|
||||||
OUTDIR=release/latest
|
OUTDIR=release/latest
|
||||||
|
|
||||||
@@ -98,6 +99,9 @@ XML
|
|||||||
|
|
||||||
echo Generating $ARCHIVEDIR/firmware-$VERSION.zip
|
echo Generating $ARCHIVEDIR/firmware-$VERSION.zip
|
||||||
rm -f $ARCHIVEDIR/firmware-$VERSION.zip
|
rm -f $ARCHIVEDIR/firmware-$VERSION.zip
|
||||||
zip --junk-paths $ARCHIVEDIR/firmware-$VERSION.zip $ARCHIVEDIR/spiffs-$VERSION.bin $OUTDIR/bins/universal/firmware-*-$VERSION.* images/system-info.bin bin/device-install.sh bin/device-update.sh
|
zip --junk-paths $ARCHIVEDIR/firmware-$VERSION.zip $ARCHIVEDIR/spiffs-$VERSION.bin $OUTDIR/bins/universal/firmware-*-$VERSION.* images/system-info.bin bin/device-install.* bin/device-update.*
|
||||||
|
echo Generating $ARCHIVEDIR/elfs-$VERSION.zip
|
||||||
|
rm -f $ARCHIVEDIR/elfs-$VERSION.zip
|
||||||
|
zip --junk-paths $ARCHIVEDIR/elfs-$VERSION.zip $OUTDIR/elfs/universal/firmware-*-$VERSION.*
|
||||||
|
|
||||||
echo BUILT ALL
|
echo BUILT ALL
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
|
set -e
|
||||||
|
|
||||||
echo "This script is only for developers who are publishing new builds on github. Most users don't need it"
|
echo "This script is only for developers who are publishing new builds on github. Most users don't need it"
|
||||||
|
|
||||||
VERSION=`bin/buildinfo.py`
|
VERSION=`bin/buildinfo.py long`
|
||||||
|
|
||||||
# Must have a V prefix to trigger github
|
# Must have a V prefix to trigger github
|
||||||
git tag "v${VERSION}"
|
git tag "v${VERSION}"
|
||||||
|
|||||||
@@ -2,22 +2,19 @@
|
|||||||
|
|
||||||
You probably don't care about this section - skip to the next one.
|
You probably don't care about this section - skip to the next one.
|
||||||
|
|
||||||
* DONE investigate TCP on ESP32 https://github.com/meshtastic/Meshtastic-device/issues/807
|
* list portduino on platformio
|
||||||
* DONE fix python tool problem with windows and the heartbeat
|
|
||||||
* router mode dropping messages? https://meshtastic.discourse.group/t/router-mode-missing-messages/3329/3
|
* router mode dropping messages? https://meshtastic.discourse.group/t/router-mode-missing-messages/3329/3
|
||||||
* fix ttgo eink screen
|
* fix ttgo eink screen
|
||||||
* list portduino on platformio
|
|
||||||
* DONE make native sim not touch hardware
|
|
||||||
* DONE reenable sim in CI builds
|
|
||||||
* figure our wss for mqtt.meshtastic - use cloudflare? 2052 ws, 2053 crypt
|
* figure our wss for mqtt.meshtastic - use cloudflare? 2052 ws, 2053 crypt
|
||||||
|
* measure rak4630 power draw and turn off power for GPS most of the time. We should be able to run on the small solar panel.
|
||||||
* pine64 lora module
|
* pine64 lora module
|
||||||
* @havealoha fixedposition not working
|
* @havealoha fixedposition not working
|
||||||
* ask for vercel access
|
* ask for vercel access
|
||||||
* finish plan for riot.im
|
* finish plan for riot.im
|
||||||
* turn on setTx(timeout) and state = setDioIrqParams(SX126X_IRQ_TX_DONE | SX126X_IRQ_TIMEOUT, SX126X_IRQ_TX_DONE | SX126X_IRQ_TIMEOUT); in sx1262 code
|
* turn on setTx(timeout) and state = setDioIrqParams(SX126X_IRQ_TX_DONE | SX126X_IRQ_TIMEOUT, SX126X_IRQ_TX_DONE | SX126X_IRQ_TIMEOUT); in sx1262 code
|
||||||
* DONE fix this sleep problem: https://meshtastic.discourse.group/t/new-device-release-1-2-30-ready-for-alpha-testing/3272/13?u=geeksville
|
|
||||||
* add rak4600 support (with rf95 radio and limited ram)
|
* add rak4600 support (with rf95 radio and limited ram)
|
||||||
|
* store esp32 crashes to flash (and 64KB coredump partition) - https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/core_dump.html
|
||||||
|
*
|
||||||
* Switch to use https://github.com/adafruit/Adafruit_nRF52_Arduino.git when available (see arduino code for examples)
|
* Switch to use https://github.com/adafruit/Adafruit_nRF52_Arduino.git when available (see arduino code for examples)
|
||||||
* DONE @luxonn reports that after a while the android app stops showing new messages
|
* DONE @luxonn reports that after a while the android app stops showing new messages
|
||||||
* DONE release android APK - fix recent 1.2.28 crash report
|
* DONE release android APK - fix recent 1.2.28 crash report
|
||||||
|
|||||||
7
geeksville-private/windows-build-instructions.md
Normal file
7
geeksville-private/windows-build-instructions.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
* install python
|
||||||
|
* install git (including git-bash)
|
||||||
|
* install platformio
|
||||||
|
* install vscode
|
||||||
|
* install https://sourceforge.net/projects/mingw-w64/ (for windows gcc/g++) - you'll need to add the bin directory to your PATH
|
||||||
2
proto
2
proto
Submodule proto updated: dfcfba8d1a...f5b3d0643b
@@ -5,6 +5,7 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
#include <cstring>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A printer that doesn't go anywhere
|
* A printer that doesn't go anywhere
|
||||||
|
|||||||
@@ -4,8 +4,6 @@
|
|||||||
#include <queue>
|
#include <queue>
|
||||||
#include <unordered_set>
|
#include <unordered_set>
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
/// We clear our old flood record five minute after we see the last of it
|
/// We clear our old flood record five minute after we see the last of it
|
||||||
#define FLOOD_EXPIRE_TIME (5 * 60 * 1000L)
|
#define FLOOD_EXPIRE_TIME (5 * 60 * 1000L)
|
||||||
|
|
||||||
@@ -23,7 +21,7 @@ struct PacketRecord {
|
|||||||
class PacketRecordHashFunction
|
class PacketRecordHashFunction
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
size_t operator()(const PacketRecord &p) const { return (hash<NodeNum>()(p.sender)) ^ (hash<PacketId>()(p.id)); }
|
size_t operator()(const PacketRecord &p) const { return (std::hash<NodeNum>()(p.sender)) ^ (std::hash<PacketId>()(p.id)); }
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Order packet records by arrival time, we want the oldest packets to be in the front of our heap
|
/// Order packet records by arrival time, we want the oldest packets to be in the front of our heap
|
||||||
@@ -54,7 +52,7 @@ class PacketHistory
|
|||||||
/** FIXME: really should be a std::unordered_set with the key being sender,id.
|
/** FIXME: really should be a std::unordered_set with the key being sender,id.
|
||||||
* This would make checking packets in wasSeenRecently faster.
|
* This would make checking packets in wasSeenRecently faster.
|
||||||
*/
|
*/
|
||||||
vector<PacketRecord> recentPackets;
|
std::vector<PacketRecord> recentPackets;
|
||||||
// priority_queue<PacketRecord, vector<PacketRecord>, PacketRecordOrderFunction> arrivalTimes;
|
// priority_queue<PacketRecord, vector<PacketRecord>, PacketRecordOrderFunction> arrivalTimes;
|
||||||
// unordered_set<PacketRecord, PacketRecordHashFunction> recentPackets;
|
// unordered_set<PacketRecord, PacketRecordHashFunction> recentPackets;
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ struct PendingPacket {
|
|||||||
class GlobalPacketIdHashFunction
|
class GlobalPacketIdHashFunction
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
size_t operator()(const GlobalPacketId &p) const { return (hash<NodeNum>()(p.node)) ^ (hash<PacketId>()(p.id)); }
|
size_t operator()(const GlobalPacketId &p) const { return (std::hash<NodeNum>()(p.node)) ^ (std::hash<PacketId>()(p.id)); }
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -60,7 +60,7 @@ class GlobalPacketIdHashFunction
|
|||||||
class ReliableRouter : public FloodingRouter
|
class ReliableRouter : public FloodingRouter
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
unordered_map<GlobalPacketId, PendingPacket, GlobalPacketIdHashFunction> pending;
|
std::unordered_map<GlobalPacketId, PendingPacket, GlobalPacketIdHashFunction> pending;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ typedef enum _HardwareModel {
|
|||||||
|
|
||||||
typedef enum _Constants {
|
typedef enum _Constants {
|
||||||
Constants_Unused = 0,
|
Constants_Unused = 0,
|
||||||
Constants_DATA_PAYLOAD_LEN = 240
|
Constants_DATA_PAYLOAD_LEN = 237
|
||||||
} Constants;
|
} Constants;
|
||||||
|
|
||||||
typedef enum _CriticalErrorCode {
|
typedef enum _CriticalErrorCode {
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ size_t pb_encode_to_bytes(uint8_t *destbuf, size_t destbufsize, const pb_msgdesc
|
|||||||
|
|
||||||
pb_ostream_t stream = pb_ostream_from_buffer(destbuf, destbufsize);
|
pb_ostream_t stream = pb_ostream_from_buffer(destbuf, destbufsize);
|
||||||
if (!pb_encode(&stream, fields, src_struct)) {
|
if (!pb_encode(&stream, fields, src_struct)) {
|
||||||
DEBUG_MSG("Panic: can't encode protobuf reason='%s', reason=%s\n", PB_GET_ERROR(&stream));
|
DEBUG_MSG("Panic: can't encode protobuf reason='%s'\n", PB_GET_ERROR(&stream));
|
||||||
assert(0); // If this asser fails it probably means you made a field too large for the max limits specified in mesh.options
|
assert(0); // If this asser fails it probably means you made a field too large for the max limits specified in mesh.options
|
||||||
} else {
|
} else {
|
||||||
return stream.bytes_written;
|
return stream.bytes_written;
|
||||||
@@ -30,7 +30,7 @@ bool pb_decode_from_bytes(const uint8_t *srcbuf, size_t srcbufsize, const pb_msg
|
|||||||
{
|
{
|
||||||
pb_istream_t stream = pb_istream_from_buffer(srcbuf, srcbufsize);
|
pb_istream_t stream = pb_istream_from_buffer(srcbuf, srcbufsize);
|
||||||
if (!pb_decode(&stream, fields, dest_struct)) {
|
if (!pb_decode(&stream, fields, dest_struct)) {
|
||||||
DEBUG_MSG("Error: can't decode protobuf reason='%s', pb_msgdesc 0x%p, reason=%s\n", PB_GET_ERROR(&stream), fields);
|
DEBUG_MSG("Error: can't decode protobuf reason='%s', pb_msgdesc 0x%p\n", PB_GET_ERROR(&stream), fields);
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
../nrf52/wifi-stubs.cpp
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
//#include "mesh/wifi/WebServer.h"
|
//#include "mesh/wifi/WebServer.h"
|
||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
|
|
||||||
#ifndef NO_ESP32
|
#ifdef NO_ESP32
|
||||||
|
|
||||||
//#include "mesh/wifi/WiFiAPClient.h"
|
//#include "mesh/wifi/WiFiAPClient.h"
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[VERSION]
|
[VERSION]
|
||||||
major = 1
|
major = 1
|
||||||
minor = 2
|
minor = 2
|
||||||
build = 36
|
build = 38
|
||||||
|
|||||||
Reference in New Issue
Block a user