From 30e5706eaa313966fe8a636606fb85cfa12aad7a Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 5 Nov 2022 15:10:43 -0500 Subject: [PATCH 01/15] Fix for alpine linux builds --- src/gps/NMEAWPL.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gps/NMEAWPL.h b/src/gps/NMEAWPL.h index 853c850eb..44e081bf7 100644 --- a/src/gps/NMEAWPL.h +++ b/src/gps/NMEAWPL.h @@ -3,5 +3,5 @@ #include #include "main.h" -uint printWPL(char *buf, const Position &pos, const char *name); -uint printGGA(char *buf, const Position &pos); +uin32_t printWPL(char *buf, const Position &pos, const char *name); +uin32_t printGGA(char *buf, const Position &pos); From a08ac5a47e0d21d5cd3dba20ad97e88e915ed01a Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 5 Nov 2022 15:11:11 -0500 Subject: [PATCH 02/15] Update NMEAWPL.cpp --- src/gps/NMEAWPL.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/gps/NMEAWPL.cpp b/src/gps/NMEAWPL.cpp index 95e69343b..d23e78182 100644 --- a/src/gps/NMEAWPL.cpp +++ b/src/gps/NMEAWPL.cpp @@ -15,7 +15,7 @@ * ------------------------------------------- */ -uint printWPL(char *buf, const Position &pos, const char *name) +uint32_t printWPL(char *buf, const Position &pos, const char *name) { uint len = sprintf(buf, "$GNWPL,%07.2f,%c,%08.2f,%c,%s", pos.latitude_i * 1e-5, pos.latitude_i < 0 ? 'S' : 'N', pos.longitude_i * 1e-5, pos.longitude_i < 0 ? 'W' : 'E', name); uint chk = 0; @@ -50,9 +50,9 @@ uint printWPL(char *buf, const Position &pos, const char *name) * ------------------------------------------- */ -uint printGGA(char *buf, const Position &pos) +uint32_t printGGA(char *buf, const Position &pos) { - uint len = sprintf(buf, "$GNGGA,%06u.%03u,%07.2f,%c,%08.2f,%c,%u,%02u,%04u,%04d,%c,%04d,%c,%d,%04d", + uint32_t len = sprintf(buf, "$GNGGA,%06u.%03u,%07.2f,%c,%08.2f,%c,%u,%02u,%04u,%04d,%c,%04d,%c,%d,%04d", pos.time / 1000, pos.time % 1000, pos.latitude_i * 1e-5, pos.latitude_i < 0 ? 'S' : 'N', @@ -67,10 +67,10 @@ uint printGGA(char *buf, const Position &pos) 0, 0); - uint chk = 0; - for (uint i = 1; i < len; i++) { + uint32_t chk = 0; + for (uint32_t i = 1; i < len; i++) { chk ^= buf[i]; } len += sprintf(buf + len, "*%02X\r\n", chk); return len; -} \ No newline at end of file +} From a7a020f431cc153932e783ef7ba35d1f44b7085a Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 5 Nov 2022 15:14:08 -0500 Subject: [PATCH 03/15] Update NMEAWPL.cpp --- src/gps/NMEAWPL.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gps/NMEAWPL.cpp b/src/gps/NMEAWPL.cpp index d23e78182..666f9131b 100644 --- a/src/gps/NMEAWPL.cpp +++ b/src/gps/NMEAWPL.cpp @@ -17,8 +17,8 @@ uint32_t printWPL(char *buf, const Position &pos, const char *name) { - uint len = sprintf(buf, "$GNWPL,%07.2f,%c,%08.2f,%c,%s", pos.latitude_i * 1e-5, pos.latitude_i < 0 ? 'S' : 'N', pos.longitude_i * 1e-5, pos.longitude_i < 0 ? 'W' : 'E', name); - uint chk = 0; + uint32_t len = sprintf(buf, "$GNWPL,%07.2f,%c,%08.2f,%c,%s", pos.latitude_i * 1e-5, pos.latitude_i < 0 ? 'S' : 'N', pos.longitude_i * 1e-5, pos.longitude_i < 0 ? 'W' : 'E', name); + uint32_t chk = 0; for (uint i = 1; i < len; i++) { chk ^= buf[i]; } From d641adc0fc677548753af2d1571441c27997913a Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 5 Nov 2022 15:20:09 -0500 Subject: [PATCH 04/15] Update NMEAWPL.h --- src/gps/NMEAWPL.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gps/NMEAWPL.h b/src/gps/NMEAWPL.h index 44e081bf7..aaa18933c 100644 --- a/src/gps/NMEAWPL.h +++ b/src/gps/NMEAWPL.h @@ -3,5 +3,5 @@ #include #include "main.h" -uin32_t printWPL(char *buf, const Position &pos, const char *name); -uin32_t printGGA(char *buf, const Position &pos); +uint32_t printWPL(char *buf, const Position &pos, const char *name); +uint32_t printGGA(char *buf, const Position &pos); From 9c0483975c2406a0c13333037a08c62432beb04c Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 5 Nov 2022 15:34:54 -0500 Subject: [PATCH 05/15] Somehow I still missed one :-| --- src/gps/NMEAWPL.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gps/NMEAWPL.cpp b/src/gps/NMEAWPL.cpp index 666f9131b..222a2d04c 100644 --- a/src/gps/NMEAWPL.cpp +++ b/src/gps/NMEAWPL.cpp @@ -19,7 +19,7 @@ uint32_t printWPL(char *buf, const Position &pos, const char *name) { uint32_t len = sprintf(buf, "$GNWPL,%07.2f,%c,%08.2f,%c,%s", pos.latitude_i * 1e-5, pos.latitude_i < 0 ? 'S' : 'N', pos.longitude_i * 1e-5, pos.longitude_i < 0 ? 'W' : 'E', name); uint32_t chk = 0; - for (uint i = 1; i < len; i++) { + for (uint32_t i = 1; i < len; i++) { chk ^= buf[i]; } len += sprintf(buf + len, "*%02X\r\n", chk); From d74bcd3583ced44764301a045d133c0ea5f0c68f Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 5 Nov 2022 18:21:35 -0500 Subject: [PATCH 06/15] Portduino build flags --- variants/portduino/platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/variants/portduino/platformio.ini b/variants/portduino/platformio.ini index c95ae37fe..016ef61bd 100644 --- a/variants/portduino/platformio.ini +++ b/variants/portduino/platformio.ini @@ -1,6 +1,6 @@ [env:native] platform = https://github.com/meshtastic/platform-native.git -build_flags = ${portduino_base.build_flags} -O0 -I variants/portduino +build_flags = ${portduino_base.build_flags} -O0 -I variants/portduino -E framework = arduino board = cross_platform lib_deps = ${portduino_base.lib_deps} From e1e607cba3f9c30c6f9b7ea31ac727886d7e9143 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 5 Nov 2022 19:09:04 -0500 Subject: [PATCH 07/15] Remove flag --- variants/portduino/platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/variants/portduino/platformio.ini b/variants/portduino/platformio.ini index 016ef61bd..c95ae37fe 100644 --- a/variants/portduino/platformio.ini +++ b/variants/portduino/platformio.ini @@ -1,6 +1,6 @@ [env:native] platform = https://github.com/meshtastic/platform-native.git -build_flags = ${portduino_base.build_flags} -O0 -I variants/portduino -E +build_flags = ${portduino_base.build_flags} -O0 -I variants/portduino framework = arduino board = cross_platform lib_deps = ${portduino_base.lib_deps} From 9805319940a2499386a1c84fa6030c9e9f579818 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 5 Nov 2022 21:08:29 -0500 Subject: [PATCH 08/15] Docker is back --- Dockerfile | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..45aa5df45 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM debian:bullseye-slim +RUN apt-get update +RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install wget python3 g++ zip python3-venv git vim +RUN wget https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py -O get-platformio.py; chmod +x get-platformio.py +RUN python3 get-platformio.py +RUN git clone https://github.com/meshtastic/firmware --recurse-submodules +RUN cd firmware +RUN chmod +x ./firmware/bin/build-native.sh +RUN . ~/.platformio/penv/bin/activate; cd firmware; sh ./bin/build-native.sh + +CMD ["/firmware/release/meshtasticd_linux_amd64"] From f1416ac9f779e5713504af7816285e33574bc18c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sun, 6 Nov 2022 14:49:02 +0100 Subject: [PATCH 09/15] Reduce retention to 30 days. --- .github/workflows/main_matrix.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main_matrix.yml b/.github/workflows/main_matrix.yml index 4736de06e..aacdc72af 100644 --- a/.github/workflows/main_matrix.yml +++ b/.github/workflows/main_matrix.yml @@ -170,7 +170,7 @@ jobs: path: | release/*.bin release/*.elf - retention-days: 90 + retention-days: 30 build-nrf52: strategy: @@ -229,7 +229,7 @@ jobs: release/*.uf2 release/*.elf release/*.zip - retention-days: 90 + retention-days: 30 build-rpi2040: strategy: @@ -283,7 +283,7 @@ jobs: path: | release/*.uf2 release/*.elf - retention-days: 90 + retention-days: 30 build-native: runs-on: ubuntu-latest @@ -342,7 +342,7 @@ jobs: release/meshtasticd_linux_amd64 release/device-*.sh release/device-*.bat - retention-days: 90 + retention-days: 30 after-checks: runs-on: ubuntu-latest From 9513209b70baa5286917b1791ae3deccb268f81e Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sun, 6 Nov 2022 09:30:46 -0600 Subject: [PATCH 10/15] Alpine --- Dockerfile | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 45aa5df45..01d262ce3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:bullseye-slim +FROM debian:bullseye-slim AS builder RUN apt-get update RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install wget python3 g++ zip python3-venv git vim RUN wget https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py -O get-platformio.py; chmod +x get-platformio.py @@ -8,4 +8,8 @@ RUN cd firmware RUN chmod +x ./firmware/bin/build-native.sh RUN . ~/.platformio/penv/bin/activate; cd firmware; sh ./bin/build-native.sh -CMD ["/firmware/release/meshtasticd_linux_amd64"] +FROM frolvlad/alpine-glibc +WORKDIR /root/ +COPY --from=builder /firmware/release/meshtasticd_linux_amd64 ./ +RUN apk --update add --no-cache g++ +CMD ["./meshtasticd_linux_amd64"] From 6934e0bce7a18fb087e54c8f443ef14f04c5d300 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sun, 6 Nov 2022 18:36:17 +0100 Subject: [PATCH 11/15] Fix assert --- src/mesh/RadioLibInterface.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/mesh/RadioLibInterface.cpp b/src/mesh/RadioLibInterface.cpp index 262a10c18..c08220555 100644 --- a/src/mesh/RadioLibInterface.cpp +++ b/src/mesh/RadioLibInterface.cpp @@ -317,7 +317,13 @@ ErrorCode RadioLibInterface::send(MeshPacket *p) void RadioLibInterface::handleReceiveInterrupt() { uint32_t xmitMsec; - assert(isReceiving); + + // when this is called, we should be in receive mode - if we are not, just jump out instead of bombing. Possible Race Condition? + if (!isReceiving) { + DEBUG_MSG("*** WAS_ASSERT *** handleReceiveInterrupt called when not in receive mode\n"); + return; + } + isReceiving = false; // read the number of actually received bytes From 0832cc50a89d03f06e5bf223989b4c62913d5d57 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sun, 6 Nov 2022 13:19:49 -0600 Subject: [PATCH 12/15] Add a docker-compose --- docker-compose.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..28b8c2ebd --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,5 @@ +version: "3.7" + +services: + meshtastic-device: + build: . From f0f5107a5dbab4745f8f1e64df2a76f6bd9e355e Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sun, 6 Nov 2022 19:22:20 -0600 Subject: [PATCH 13/15] Added docker compose 4 nodes example --- docker-compose.yml | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 28b8c2ebd..ea1e01a85 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,23 @@ version: "3.7" services: - meshtastic-device: + meshtastic-node-1: build: . + command: ["./meshtasticd_linux_amd64", "--hwid", "12:2E:9C:CF:65:7C"] + ports: + - 4403:4403 + meshtastic-node-2: + build: . + command: ["./meshtasticd_linux_amd64", "--hwid", "93:DD:85:BB:36:54"] + ports: + - 4404:4403 + meshtastic-node-3: + build: . + command: ["./meshtasticd_linux_amd64", "--hwid", "05:97:96:0A:0B:B4"] + ports: + - 4405:4403 + meshtastic-node-4: + build: . + command: ["./meshtasticd_linux_amd64", "--hwid", "07:67:32:9D:84:00"] + ports: + - 4406:4403 From b13eaee6b3501da771ed1cb7aee90da72f3e168a Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 7 Nov 2022 13:28:37 -0600 Subject: [PATCH 14/15] More fun --- Dockerfile | 5 +++-- docker-compose.yml | 28 +++++++++------------------- 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/Dockerfile b/Dockerfile index 01d262ce3..20460b175 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,5 +11,6 @@ RUN . ~/.platformio/penv/bin/activate; cd firmware; sh ./bin/build-native.sh FROM frolvlad/alpine-glibc WORKDIR /root/ COPY --from=builder /firmware/release/meshtasticd_linux_amd64 ./ -RUN apk --update add --no-cache g++ -CMD ["./meshtasticd_linux_amd64"] +RUN apk --update add --no-cache g++ && \ + apk add openssl +CMD sh -cx "./meshtasticd_linux_amd64 --hwid '$RANDOM'" \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index ea1e01a85..f137139c2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,23 +1,13 @@ version: "3.7" services: - meshtastic-node-1: + meshtastic-node: build: . - command: ["./meshtasticd_linux_amd64", "--hwid", "12:2E:9C:CF:65:7C"] - ports: - - 4403:4403 - meshtastic-node-2: - build: . - command: ["./meshtasticd_linux_amd64", "--hwid", "93:DD:85:BB:36:54"] - ports: - - 4404:4403 - meshtastic-node-3: - build: . - command: ["./meshtasticd_linux_amd64", "--hwid", "05:97:96:0A:0B:B4"] - ports: - - 4405:4403 - meshtastic-node-4: - build: . - command: ["./meshtasticd_linux_amd64", "--hwid", "07:67:32:9D:84:00"] - ports: - - 4406:4403 + deploy: + mode: replicated + replicas: 80 + networks: + - mesh + +networks: + mesh: \ No newline at end of file From e122232761826a096e9dc68f479edc74019245fe Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 7 Nov 2022 13:29:34 -0600 Subject: [PATCH 15/15] Removed defunct line --- Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 20460b175..0ce4e3326 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,6 +11,5 @@ RUN . ~/.platformio/penv/bin/activate; cd firmware; sh ./bin/build-native.sh FROM frolvlad/alpine-glibc WORKDIR /root/ COPY --from=builder /firmware/release/meshtasticd_linux_amd64 ./ -RUN apk --update add --no-cache g++ && \ - apk add openssl +RUN apk --update add --no-cache g++ CMD sh -cx "./meshtasticd_linux_amd64 --hwid '$RANDOM'" \ No newline at end of file