From 002532401d789dd989215ca2ba44cdfa663222f7 Mon Sep 17 00:00:00 2001 From: Jm Date: Wed, 17 Mar 2021 21:52:30 -0700 Subject: [PATCH 1/9] #743 - Stub out for "mode 10" - NMEA string. --- src/plugins/SerialPlugin.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/plugins/SerialPlugin.cpp b/src/plugins/SerialPlugin.cpp index a2e2113b3..a79982129 100644 --- a/src/plugins/SerialPlugin.cpp +++ b/src/plugins/SerialPlugin.cpp @@ -186,9 +186,19 @@ bool SerialPluginRadio::handleReceived(const MeshPacket &mp) } } else { - // DEBUG_MSG("* * Message came from the mesh\n"); - // Serial2.println("* * Message came from the mesh"); - Serial2.printf("%s", p.payload.bytes); + + if (radioConfig.preferences.serialplugin_mode == 0 || radioConfig.preferences.serialplugin_mode == 1) { + // DEBUG_MSG("* * Message came from the mesh\n"); + // Serial2.println("* * Message came from the mesh"); + Serial2.printf("%s", p.payload.bytes); + + } else if (radioConfig.preferences.serialplugin_mode == 10) { + /* + @jobionekabnoi + Add code here to handle what gets sent out to the serial interface. + Format it the way you want. + */ + } } } else { From 3bb1206b9c8f5c329d7080774b98d7898c45eebb Mon Sep 17 00:00:00 2001 From: Jm Date: Wed, 17 Mar 2021 22:47:19 -0700 Subject: [PATCH 2/9] Update RangeTestPlugin.md --- docs/software/plugins/RangeTestPlugin.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/docs/software/plugins/RangeTestPlugin.md b/docs/software/plugins/RangeTestPlugin.md index ab2f2c4df..4915016c3 100644 --- a/docs/software/plugins/RangeTestPlugin.md +++ b/docs/software/plugins/RangeTestPlugin.md @@ -63,6 +63,26 @@ Be sure to turn off either the plugin configured as a sender or the device where Also be mindful of your space usage on the file system. It has protections from filling up the space but it's best to delete old range test results. +# Application Examples + +## Google Earth Integration + +@jfirwin on our forum [meshtastic.discourse.org](https://meshtastic.discourse.group/t/new-plugin-rangetestplugin/2591/49?u=mc-hamster) shared how to integrate the resulting csv file with Google Earth. + +Steps: + +1. [Download](https://www.google.com/earth/versions/#download-pro) 1 and open Google Earth + 1. Select File > Import + 2. Select CSV + 3. Select Delimited, Comma + 4. Make sure the button that states “This dataset does not contain latitude/longitude information, but street addresses” is unchecked + 5. Select “rx lat” & “rx long” for the appropriate lat/lng fields + 6. Click finish +2. When it prompts you to create a style template, click yes. + 1. Set the name field to whichever column you want to be displayed on the map (don’t worry about this too much, when you click on an icon, all the relavant data appears) + 2. select a color, icon, etc. and hit ok. + +Your data will load onto the map, make sure to click the checkbox next to your dataset in the sidebar to view it. # Known Problems From dd9beff9a5d7b500c451a420e3e81ea312bbbc4f Mon Sep 17 00:00:00 2001 From: Jm Date: Fri, 19 Mar 2021 23:34:36 -0700 Subject: [PATCH 3/9] Script to publish nightly builds. --- bin/build-nightly.sh | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100755 bin/build-nightly.sh diff --git a/bin/build-nightly.sh b/bin/build-nightly.sh new file mode 100755 index 000000000..cd545c7fb --- /dev/null +++ b/bin/build-nightly.sh @@ -0,0 +1,37 @@ +#!/bin/bash +source ~/.bashrc + +# Meshtastic Nightly Build Script. +# McHamster (jm@casler.org) +# +# This is the script that is used for the nightly build server. +# +# It's probably not useful for most people, but you may want to run your own +# nightly builds. +# +# The last line of ~/.bashrc contains an inclusion of platformio in the path. +# Without this, the build script won't run from the crontab: +# +# export PATH="$HOME/.platformio/penv/bin:$PATH" +# +# The crontab contains: +# 0 2 * * * cd ~/meshtastic/github/meshtastic && source "~/.bashrc"; ./build-nightly.sh > ~/cronout.txt 2> ~/cronout.txt + +cd Meshtastic-device + +git pull + +bin/build-all.sh + +date_stamp=$(date +'%Y-%m-%d') + +cd .. + +# TODO: Archive the same binaries used by the build-all script. +zip -r meshtastic_device_nightly_${date_stamp} Meshtastic-device/release/latest/bins + +# Copy the file to the webserver +scp meshtastic_device_nightly_${date_stamp}.zip jm@10.11.12.20:/volume1/web/meshtastic/nightly_builds/ + +# Delete the local copy +rm meshtastic_device_nightly_${date_stamp}.zip From b357d8ae5b1ed40928c2ef22869980b5aaf43d82 Mon Sep 17 00:00:00 2001 From: Jm Date: Fri, 19 Mar 2021 23:35:46 -0700 Subject: [PATCH 4/9] Update RangeTestPlugin.md --- docs/software/plugins/RangeTestPlugin.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/docs/software/plugins/RangeTestPlugin.md b/docs/software/plugins/RangeTestPlugin.md index 4915016c3..79b4ddcd7 100644 --- a/docs/software/plugins/RangeTestPlugin.md +++ b/docs/software/plugins/RangeTestPlugin.md @@ -65,9 +65,11 @@ Also be mindful of your space usage on the file system. It has protections from # Application Examples -## Google Earth Integration +## Google Integration -@jfirwin on our forum [meshtastic.discourse.org](https://meshtastic.discourse.group/t/new-plugin-rangetestplugin/2591/49?u=mc-hamster) shared how to integrate the resulting csv file with Google Earth. +@jfirwin on our forum [meshtastic.discourse.org](https://meshtastic.discourse.group/t/new-plugin-rangetestplugin/2591/49?u=mc-hamster) shared how to integrate the resulting csv file with Google Products. + +### Earth Steps: @@ -84,6 +86,14 @@ Steps: Your data will load onto the map, make sure to click the checkbox next to your dataset in the sidebar to view it. +### My Maps + +You can use [My Maps](http://mymaps.google.com/). It takes CSVs and the whole interface is much easier to work with. + +Google has instructions on how to do that [here](https://support.google.com/mymaps/answer/3024836?co=GENIE.Platform%3DDesktop&hl=en#zippy=%2Cstep-prepare-your-info%2Cstep-import-info-into-the-map). + +You can style the ranges differently based on the values, so you can have the pins be darker the if the SNR or RSSI (if that gets added) is higher. + # Known Problems * If turned on, using mesh network will become unwieldly because messages are sent over the same channel as the other messages. See TODO below. From 0ce7a3f0ec17eb38bc7bc6bb84e814fa0eac5f04 Mon Sep 17 00:00:00 2001 From: Jm Date: Fri, 19 Mar 2021 23:43:06 -0700 Subject: [PATCH 5/9] Update to how S&F reserves space on PSRAM --- src/plugins/esp32/StoreForwardPlugin.cpp | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/plugins/esp32/StoreForwardPlugin.cpp b/src/plugins/esp32/StoreForwardPlugin.cpp index 1726a0b27..e5694caa3 100644 --- a/src/plugins/esp32/StoreForwardPlugin.cpp +++ b/src/plugins/esp32/StoreForwardPlugin.cpp @@ -231,6 +231,10 @@ bool StoreForwardPlugin::handleReceived(const MeshPacket &mp) DEBUG_MSG("Packet came from - PortNum_POSITION_APP\n"); } else if (mp.decoded.portnum == PortNum_NODEINFO_APP) { DEBUG_MSG("Packet came from - PortNum_NODEINFO_APP\n"); + } else if (mp.decoded.portnum == PortNum_ROUTING_APP) { + DEBUG_MSG("Packet came from - PortNum_ROUTING_APP\n"); + } else if (mp.decoded.portnum == PortNum_ADMIN_APP) { + DEBUG_MSG("Packet came from - PortNum_ADMIN_APP\n"); } else if (mp.decoded.portnum == PortNum_REPLY_APP) { DEBUG_MSG("Packet came from - PortNum_REPLY_APP\n"); } else if (mp.decoded.portnum == PortNum_IP_TUNNEL_APP) { @@ -276,40 +280,34 @@ StoreForwardPlugin::StoreForwardPlugin() Uncomment the preferences below if you want to use the plugin without having to configure it from the PythonAPI or WebUI. + */ radioConfig.preferences.store_forward_plugin_enabled = 1; radioConfig.preferences.is_router = 1; - */ if (radioConfig.preferences.store_forward_plugin_enabled) { + + // Router if (radioConfig.preferences.is_router) { DEBUG_MSG("Initializing Store & Forward Plugin - Enabled as Router\n"); - // Router if (ESP.getPsramSize()) { - if (ESP.getFreePsram() >= 2048 * 1024) { + if (ESP.getFreePsram() >= 1024 * 1024) { + // Do the startup here this->populatePSRAM(); - - // packetHistory[0].bytes; - // return (10 * 1000); - } else { - DEBUG_MSG("Device has less than 2M of PSRAM free. Aborting startup.\n"); + DEBUG_MSG("Device has less than 1M of PSRAM free. Aborting startup.\n"); DEBUG_MSG("Store & Forward Plugin - Aborting Startup.\n"); - - // return (INT32_MAX); } } else { DEBUG_MSG("Device doesn't have PSRAM.\n"); DEBUG_MSG("Store & Forward Plugin - Aborting Startup.\n"); - - // return (INT32_MAX); } + // Client } else { DEBUG_MSG("Initializing Store & Forward Plugin - Enabled as Client\n"); - // return (5 * 1000); } } #endif From baeb0022458bd0e5372c6b32a79f2eb5c5200679 Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Sat, 20 Mar 2021 00:38:53 -0700 Subject: [PATCH 6/9] Fix small bug in range test plugin. packetSequence was an unsigned int but i was using %d. oops --- proto | 2 +- src/plugins/esp32/RangeTestPlugin.cpp | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/proto b/proto index b8c0499f2..94bd0aae4 160000 --- a/proto +++ b/proto @@ -1 +1 @@ -Subproject commit b8c0499f28f9673d1df17d04da562e30703f01cb +Subproject commit 94bd0aae44e2c16c7776289225c804100c856cd4 diff --git a/src/plugins/esp32/RangeTestPlugin.cpp b/src/plugins/esp32/RangeTestPlugin.cpp index 2332b687a..35d39714e 100644 --- a/src/plugins/esp32/RangeTestPlugin.cpp +++ b/src/plugins/esp32/RangeTestPlugin.cpp @@ -35,9 +35,9 @@ int32_t RangeTestPlugin::runOnce() without having to configure it from the PythonAPI or WebUI. */ - //radioConfig.preferences.range_test_plugin_enabled = 1; - //radioConfig.preferences.range_test_plugin_sender = 45; - //radioConfig.preferences.range_test_plugin_save = 1; + // radioConfig.preferences.range_test_plugin_enabled = 1; + // radioConfig.preferences.range_test_plugin_sender = 45; + // radioConfig.preferences.range_test_plugin_save = 1; // Fixed position is useful when testing indoors. // radioConfig.preferences.fixed_position = 1; @@ -112,7 +112,7 @@ void RangeTestPluginRadio::sendPayload(NodeNum dest, bool wantReplies) packetSequence++; static char heartbeatString[20]; - snprintf(heartbeatString, sizeof(heartbeatString), "seq %d", packetSequence); + snprintf(heartbeatString, sizeof(heartbeatString), "seq %u", packetSequence); p->decoded.payload.size = strlen(heartbeatString); // You must specify how many bytes are in the reply memcpy(p->decoded.payload.bytes, heartbeatString, p->decoded.payload.size); @@ -290,7 +290,7 @@ bool RangeTestPluginRadio::appendFile(const MeshPacket &mp) fileToAppend.printf("??:??:??,"); // Time } - fileToAppend.printf("%d,", getFrom(&mp)); // From + fileToAppend.printf("%d,", getFrom(&mp)); // From fileToAppend.printf("%s,", n->user.long_name); // Long Name fileToAppend.printf("%f,", n->position.latitude_i * 1e-7); // Sender Lat fileToAppend.printf("%f,", n->position.longitude_i * 1e-7); // Sender Long From 103ffde025f7d4faf7cfddab581fcac7b883595f Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Sat, 20 Mar 2021 20:47:48 -0700 Subject: [PATCH 7/9] Fixes for build of tlora_v1_3 --- platformio.ini | 7 +++++++ src/configuration.h | 4 +--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/platformio.ini b/platformio.ini index f2142b8e4..519da9c31 100644 --- a/platformio.ini +++ b/platformio.ini @@ -13,6 +13,7 @@ default_envs = tbeam ;default_envs = tbeam0.7 ;default_envs = heltec ;default_envs = tlora-v1 +;default_envs = tlora_v1_3 ;default_envs = tlora-v2 ;default_envs = lora-relay-v1 # nrf board ;default_envs = eink @@ -158,6 +159,12 @@ build_flags = ${esp32_base.build_flags} -D TLORA_V1 ; note: the platformio definition for lora32-v2 seems stale, it is missing a pins_arduino.h file, therefore I don't think it works +[env:tlora_v1_3] +extends = esp32_base +board = ttgo-lora32-v1 +build_flags = + ${esp32_base.build_flags} -D TLORA_V1_3 + [env:tlora-v2] extends = esp32_base board = ttgo-lora32-v1 diff --git a/src/configuration.h b/src/configuration.h index 3d4fb652d..0299b8fed 100644 --- a/src/configuration.h +++ b/src/configuration.h @@ -311,7 +311,7 @@ along with this program. If not, see . #elif defined(TLORA_V1_3) // This string must exactly match the case used in release file names or the android updater won't work -#define HW_VENDOR HardwareModel_TLORA_V1p3 +#define HW_VENDOR HardwareModel_TLORA_V1_1p3 #undef GPS_RX_PIN #undef GPS_TX_PIN @@ -459,8 +459,6 @@ along with this program. If not, see . #define DEBUG_PORT console // Serial debug port - - // What platforms should use SEGGER? #ifdef NRF52_SERIES From da732c291f85be4c32cd020304eae8e32d601cbd Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Sun, 21 Mar 2021 07:43:55 -0700 Subject: [PATCH 8/9] Update build-all for tlora_v1_3 --- bin/build-all.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/build-all.sh b/bin/build-all.sh index 1e2f159bb..3f52db901 100755 --- a/bin/build-all.sh +++ b/bin/build-all.sh @@ -4,7 +4,7 @@ set -e VERSION=`bin/buildinfo.py` -BOARDS_ESP32="tlora-v2 tlora-v1 tlora-v2-1-1.6 tbeam heltec tbeam0.7" +BOARDS_ESP32="tlora-v2 tlora-v1 tlora_v1_3 tlora-v2-1-1.6 tbeam heltec tbeam0.7" #BOARDS_ESP32=tbeam # FIXME note nrf52840dk build is for some reason only generating a BIN file but not a HEX file nrf52840dk-geeksville is fine From a74384f3f56bcf6967c8e40bec588a3579090803 Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Sun, 21 Mar 2021 07:44:08 -0700 Subject: [PATCH 9/9] Update airtime.h to add override --- src/airtime.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/airtime.h b/src/airtime.h index d78db86a4..134bad47d 100644 --- a/src/airtime.h +++ b/src/airtime.h @@ -47,8 +47,7 @@ class AirTime : private concurrency::OSThread void logAirtime(reportTypes reportType, uint32_t airtime_ms); protected: - - virtual int32_t runOnce(); + virtual int32_t runOnce() override; }; extern AirTime *airTime; \ No newline at end of file