diff --git a/exercises/306_microReticulum_ble_file_transfer_oled/README.md b/exercises/306_microReticulum_ble_file_transfer_oled/README.md index c421dfc..72f8b6a 100644 --- a/exercises/306_microReticulum_ble_file_transfer_oled/README.md +++ b/exercises/306_microReticulum_ble_file_transfer_oled/README.md @@ -86,8 +86,10 @@ jp_native_peripheral jp_native_dual pi_zero_1_native pi_zero_1_peripheral +pi_zero_1_dual pi_zero_2_native pi_zero_2_peripheral +pi_zero_2_dual ``` `jp_native` builds a Linux console program instead of ESP32 firmware. It uses the host Bluetooth adapter through BlueZ D-Bus, skips the OLED path, and prints received text to stdout. The current jp payload is `texts/little_boy_blue.txt`. @@ -96,6 +98,8 @@ pi_zero_2_peripheral `jp_native_dual` registers both host interfaces in one process: the Linux central/client path and the Linux peripheral/server path. +`pi_zero_1_dual` and `pi_zero_2_dual` do the same for Raspberry Pi native builds, but use Pi-specific node labels and selected text files. + ## Building ### ESP32 @@ -261,6 +265,61 @@ The Pi must have BlueZ, GLib/GIO development headers, and a BLE adapter that sup ### Two Pi Zero 2Ws +The preferred Pi-to-Pi experiment is now the dual-role pair. Each Pi starts both BlueZ roles in one process: central/client scanning and peripheral/server advertising. The two builds differ only by node label and compiled-in text payload: + +```text +pi_zero_1_dual Node-PIZERO1-DUAL little_boy_blue.txt +pi_zero_2_dual Node-PIZERO2-DUAL children.txt +``` + +Build on a Pi with the same OS architecture and compatible libraries as the target Pi Zero 2Ws: + +```bash +source /home/jlpoole/rnsenv/bin/activate +cd /usr/local/src/microreticulum/microReticulumTbeam +pio run -d exercises/306_microReticulum_ble_file_transfer_oled -e pi_zero_1_dual -e pi_zero_2_dual +``` + +The output binaries are: + +```text +exercises/306_microReticulum_ble_file_transfer_oled/.pio/build/pi_zero_1_dual/program +exercises/306_microReticulum_ble_file_transfer_oled/.pio/build/pi_zero_2_dual/program +``` + +For web/download publication, copy or rename those artifacts with names that include the platform, role mode, and poem: + +```text +microreticulum_306_rpi_arm64_dual_little_boy_blue +microreticulum_306_rpi_arm64_dual_children +``` + +On the Pi build machine, make the download copies and strip them: + +```bash +cp exercises/306_microReticulum_ble_file_transfer_oled/.pio/build/pi_zero_1_dual/program microreticulum_306_rpi_arm64_dual_little_boy_blue +cp exercises/306_microReticulum_ble_file_transfer_oled/.pio/build/pi_zero_2_dual/program microreticulum_306_rpi_arm64_dual_children +strip microreticulum_306_rpi_arm64_dual_little_boy_blue microreticulum_306_rpi_arm64_dual_children +``` + +Run one on each Pi. There should be no required start order for the dual-role test, although starting one Pi a few seconds before the other makes the log easier to read. + +```bash +./microreticulum_306_rpi_arm64_dual_little_boy_blue +./microreticulum_306_rpi_arm64_dual_children +``` + +You can copy those binaries to another Pi Zero 2W and rename them for clarity if both Pis use the same CPU architecture, OS bitness, and compatible runtime libraries. Check with: + +```bash +file exercises/306_microReticulum_ble_file_transfer_oled/.pio/build/pi_zero_1_dual/program +ldd exercises/306_microReticulum_ble_file_transfer_oled/.pio/build/pi_zero_1_dual/program +``` + +If one Pi is 32-bit and the other is 64-bit, or their GLib/BlueZ runtime libraries differ significantly, build directly on each target instead of copying binaries. + +The older split-role environments are still available for controlled tests where you want to force one Pi to advertise and the other Pi to scan: + For two Pi Zero 2Ws, build one peripheral/server binary and one central/client binary. These environments use distinct node labels and text payloads: ```text diff --git a/exercises/306_microReticulum_ble_file_transfer_oled/platformio.ini b/exercises/306_microReticulum_ble_file_transfer_oled/platformio.ini index 64a107d..6e1e624 100644 --- a/exercises/306_microReticulum_ble_file_transfer_oled/platformio.ini +++ b/exercises/306_microReticulum_ble_file_transfer_oled/platformio.ini @@ -294,6 +294,47 @@ lib_deps = microReticulum=symlink:///usr/local/src/microreticulum/microReticulum lib_compat_mode = off +[env:pi_zero_1_dual] +platform = native +build_type = debug +extra_scripts = pre:scripts/embed_text.py +custom_text_source = texts/little_boy_blue.txt +build_unflags = + -std=gnu++11 +build_flags = + -std=c++17 + -g3 + -ggdb + -Wall + -Wextra + -Wno-missing-field-initializers + -Wno-format + -Wno-unused-parameter + -include stdint.h + -D HOST_NATIVE + -D HOST_BLE_DUAL + -D NATIVE + -D RNS_USE_FS + -D RNS_PERSIST_PATHS + -D USTORE_USE_UNIVERSALFS + -D MSGPACK_USE_BOOST=OFF + -D FILE_TRANSFER_CHUNK_SIZE=32 + -D FILE_TRANSFER_CHUNK_INTERVAL_MS=500 + -D HOST_NODE_LABEL=\"Node-PIZERO1-DUAL\" + !pkg-config --cflags gio-2.0 glib-2.0 bluez + !pkg-config --libs gio-2.0 glib-2.0 bluez +build_src_filter = + + + + + + +lib_deps = + ArduinoJson@^7.4.2 + MsgPack@^0.4.2 + https://github.com/attermann/Crypto.git + https://github.com/attermann/microStore.git + microReticulum=symlink:///usr/local/src/microreticulum/microReticulum +lib_compat_mode = off + [env:pi_zero_2_native] platform = native build_type = debug @@ -373,6 +414,47 @@ lib_deps = microReticulum=symlink:///usr/local/src/microreticulum/microReticulum lib_compat_mode = off +[env:pi_zero_2_dual] +platform = native +build_type = debug +extra_scripts = pre:scripts/embed_text.py +custom_text_source = texts/children.txt +build_unflags = + -std=gnu++11 +build_flags = + -std=c++17 + -g3 + -ggdb + -Wall + -Wextra + -Wno-missing-field-initializers + -Wno-format + -Wno-unused-parameter + -include stdint.h + -D HOST_NATIVE + -D HOST_BLE_DUAL + -D NATIVE + -D RNS_USE_FS + -D RNS_PERSIST_PATHS + -D USTORE_USE_UNIVERSALFS + -D MSGPACK_USE_BOOST=OFF + -D FILE_TRANSFER_CHUNK_SIZE=32 + -D FILE_TRANSFER_CHUNK_INTERVAL_MS=500 + -D HOST_NODE_LABEL=\"Node-PIZERO2-DUAL\" + !pkg-config --cflags gio-2.0 glib-2.0 bluez + !pkg-config --libs gio-2.0 glib-2.0 bluez +build_src_filter = + + + + + + +lib_deps = + ArduinoJson@^7.4.2 + MsgPack@^0.4.2 + https://github.com/attermann/Crypto.git + https://github.com/attermann/microStore.git + microReticulum=symlink:///usr/local/src/microreticulum/microReticulum +lib_compat_mode = off + [env:amy] extends = tbeam_base upload_port = /dev/ttytAMY diff --git a/exercises/306_microReticulum_ble_file_transfer_oled/raspberrypi_downloads.html b/exercises/306_microReticulum_ble_file_transfer_oled/raspberrypi_downloads.html new file mode 100644 index 0000000..332992d --- /dev/null +++ b/exercises/306_microReticulum_ble_file_transfer_oled/raspberrypi_downloads.html @@ -0,0 +1,108 @@ + + + + + + Exercise 306 Raspberry Pi Downloads + + + +

Exercise 306 Raspberry Pi Downloads

+ +

+ These ARM64 Linux binaries run Exercise 306 microReticulum BLE file transfer + on Raspberry Pi OS Trixie 64-bit. Each executable embeds one text payload and + runs in dual BLE mode: it scans as a central and advertises as a peripheral. +

+ +

+ Use two different payload binaries for a simple exchange test. Start one on + each Pi; no fixed client/server start order is intended for the dual builds. +

+ +

Downloads

+ + + + + + + + + + + + + + + + + + + + + +
BinaryNode LabelPayload
microreticulum_306_rpi_arm64_dual_little_boy_blueNode-PIZERO1-DUALlittle_boy_blue.txt
microreticulum_306_rpi_arm64_dual_childrenNode-PIZERO2-DUALchildren.txt
+ +

Install Notes

+ +

+ Read raspberrypi_install.md for Raspberry + Pi OS setup, BlueZ checks, runtime package requirements, and first-run + troubleshooting. +

+ +

Build Artifacts

+ +

+ The files above are expected to be renamed copies of the PlatformIO outputs: +

+ +
    +
  • .pio/build/pi_zero_1_dual/program
  • +
  • .pio/build/pi_zero_2_dual/program
  • +
+ + diff --git a/exercises/306_microReticulum_ble_file_transfer_oled/raspberrypi_install.md b/exercises/306_microReticulum_ble_file_transfer_oled/raspberrypi_install.md new file mode 100644 index 0000000..09a895b --- /dev/null +++ b/exercises/306_microReticulum_ble_file_transfer_oled/raspberrypi_install.md @@ -0,0 +1,268 @@ +# Installation on RaspberryPi Trixie (64) +This documents steps to running a prebuilt Exercise 306 binary on a Raspberry Pi 4B or Pi Zero 2W. You will need a second instance to hand shake with, which can be another ARM64 Pi, an AMD64 Linux host, or a T-Beam (ESP32-S). + +![](../../img/DSC_5347_v1.jpg) +## New SD Card (Optional) +This section is optional if you already have Trixie running on a Raspberry Pi 4B or Raspberry Pi Zero 2W. This install guide has not been tested on other model. + +This assume you know where your SD Card is exposed as a device and in this example, the card is available as /dev/sdf. + + sudo dd if=/home/jlpoole/Downloads/RaspberryPi/2026-04-21-raspios-trixie-arm64-lite.img of=/dev/sdf bs=4M status=progress conv=fsync + +Example: +```bash +jlpoole@jp ~ $ date; time sudo dd if=/home/jlpoole/Downloads/RaspberryPi/2026-04-21-raspios-trixie-arm64-lite.img of=/dev/sdf bs=4M status=progress conv=fsync +Fri May 22 09:32:34 PDT 2026 +2738880512 bytes (2.7 GB, 2.6 GiB) copied, 105 s, 26.1 MB/s3229614080 bytes (3.2 GB, 3.0 GiB) copied, 105.792 s, 30.5 MB/s + +770+0 records in +770+0 records out +3229614080 bytes (3.2 GB, 3.0 GiB) copied, 140.443 s, 23.0 MB/s + +real 2m20.497s +user 0m0.008s +sys 0m0.009s +jlpoole@jp ~ $ +``` + +## 1. Confirm the target image is 64-bit ARM +Your binary is: +```bash +ELF 64-bit LSB pie executable, ARM aarch64 +interpreter /lib/ld-linux-aarch64.so.1 +``` +So your receiving Pi image must be 64-bit Raspberry Pi OS / Debian Trixie, not 32-bit. + +```bash +uname -m +getconf LONG_BIT +``` +Expected: +```bash +aarch64 +64 +``` +## 2. Install runtime packages +BlueZ is the official Linux Bluetooth protocol stack and supplies Bluetooth daemons/tools on Debian Trixie. The rfkill package is useful because blocked Bluetooth is a common fresh-image problem. For Raspberry Pi Bluetooth firmware, Debian’s bluez-firmware package specifically notes Broadcom BCM203x and Raspberry Pi chipset support. +```bash +sudo apt update + +sudo apt install -y \ + bluez \ + bluez-firmware \ + rfkill \ + bluetooth \ + libglib2.0-0t64 \ + libstdc++6 \ + libc6 \ + zlib1g \ + libmount1 \ + libselinux1 \ + libffi8 \ + libatomic1 \ + libpcre2-8-0 \ + util-linux +``` +## 3. Enable and start Bluetooth + +Raspberry Pi OS uses systemd. +```bash +sudo systemctl enable bluetooth +sudo systemctl start bluetooth +sudo systemctl status bluetooth --no-pager +``` +Then unblock the radio: +```bash +sudo rfkill unblock bluetooth +rfkill list +``` +You want Bluetooth to show: +```bash +Soft blocked: no +Hard blocked: no +``` +## 4. Verify BlueZ sees the adapter +```bash +bluetoothctl list +bluetoothctl show +``` +A quick noninteractive check: + +```bash +bluetoothctl show | egrep 'Controller|Powered|Discoverable|Discovering' +``` +If Powered: no, run: + +```bash +bluetoothctl power on +``` +The bluetoothctl tool works with both classic Bluetooth and BLE controllers, and is the standard CLI check for BlueZ state. +## 5. Copy the binary + +For Pi-to-Pi exchange, prefer the dual-role binaries. The filename should identify the platform, role mode, and poem compiled into the executable: + +```text +microreticulum_306_rpi_arm64_dual_little_boy_blue +microreticulum_306_rpi_arm64_dual_children +``` + +Example scp command to a new server named "trixie1": +```bash +scp microreticulum_306_rpi_arm64_dual_children trixie1:~ +``` +## 6. Verify shared libraries before first run +```bash +ldd ./microreticulum_306_rpi_arm64_dual_children | tee ldd_$(date +%Y%m%d_%H%M).txt +``` +Example: +```bash +jlpoole@trixie1:~ $ ldd ./microreticulum_306_rpi_arm64_dual_children | tee ldd_$(date +%Y%m%d_%H%M).txt + linux-vdso.so.1 (0x0000007f9cb5c000) + libgio-2.0.so.0 => /lib/aarch64-linux-gnu/libgio-2.0.so.0 (0x0000007f9c830000) + libgobject-2.0.so.0 => /lib/aarch64-linux-gnu/libgobject-2.0.so.0 (0x0000007f9c7a0000) + libglib-2.0.so.0 => /lib/aarch64-linux-gnu/libglib-2.0.so.0 (0x0000007f9c610000) + libstdc++.so.6 => /lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000007f9c3a0000) + libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000007f9c2f0000) + libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000007f9c2b0000) + libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000007f9c0f0000) + libgmodule-2.0.so.0 => /lib/aarch64-linux-gnu/libgmodule-2.0.so.0 (0x0000007f9c0c0000) + libz.so.1 => /lib/aarch64-linux-gnu/libz.so.1 (0x0000007f9c080000) + libmount.so.1 => /lib/aarch64-linux-gnu/libmount.so.1 (0x0000007f9bfe0000) + libselinux.so.1 => /lib/aarch64-linux-gnu/libselinux.so.1 (0x0000007f9bf80000) + /lib/ld-linux-aarch64.so.1 (0x0000007f9cb20000) + libffi.so.8 => /lib/aarch64-linux-gnu/libffi.so.8 (0x0000007f9bf50000) + libatomic.so.1 => /lib/aarch64-linux-gnu/libatomic.so.1 (0x0000007f9bf20000) + libpcre2-8.so.0 => /lib/aarch64-linux-gnu/libpcre2-8.so.0 (0x0000007f9be60000) + libblkid.so.1 => /lib/aarch64-linux-gnu/libblkid.so.1 (0x0000007f9bde0000) +jlpoole@trixie1:~ $ +``` +The pass/fail test is simple: + + ldd ./microreticulum_306_rpi_arm64_dual_children | grep 'not found' + +No output is good. + +Also document: + + file ./microreticulum_306_rpi_arm64_dual_children + +Expected: + + ELF 64-bit LSB pie executable, ARM aarch64, dynamically linked ... stripped + +## 7. Run a smoke test + +First run in foreground: + + + +Expected healthy startup: + +```bash +jlpoole@trixie1:~ $ ./microreticulum_306_rpi_arm64_dual_children +Exercise 306 native BLE file transfer console +Node=Node-PIZERO2-DUAL +Selected file=children.txt bytes=1422 chunk=32 interval_ms=500 repeat_rest_ms=10000 +[ustore] Initializing PosixFileSystem +[ustore] WARNING: FlashFSFileSystem check failed, reformatting! +BLE linux-central: adapter=/org/bluez/hci0 label=Node-PIZERO2-DUAL +BLE linux-central: scanning for Reticulum service +BLE linux-peripheral: adapter=/org/bluez/hci0 label=Node-PIZERO2-DUAL service=37145b00-442d-4a94-917f-8f42c5da28e3 +BLE linux-peripheral: advertising Reticulum service; waiting for central +Local SINGLE destination: dcf5338564d2cf21bfa86f1f2a9a89a3 +microReticulum ready; OLED skipped on host native build +BLE linux-dual waiting for peer +BLE linux-dual waiting for peer + +``` +When you have a second unit running, your console will show something like: +```bash +[Startup stuff] +... +BLE linux-dual waiting for peer +BLE linux-dual waiting for peer +BLE linux-central: peer candidate path=/org/bluez/hci0/dev_B8_27_EB_82_B2_4C name=RNS-Node-PIZERO1-DUAL +BLE linux-central: connected to /org/bluez/hci0/dev_B8_27_EB_82_B2_4C +BLE linux-central: notifications active; identity handshake sent +2026-05-22 18:24:37 [ERR] Failed to add destination 5aec1dc0939292aa8113cb8661bf06c3 to path table! +RX ANNOUNCE: label=Node-PIZERO1-DUAL hash=5aec1dc0939292aa8113cb8661bf06c3 +TX ANNOUNCE: Node-PIZERO2-DUAL +LINK ACTIVE: inbound peer=Node-PIZERO1-DUAL link_id=7993e8fb37845c2f9d1e54ad3d5e2457 + +RX FILE BEGIN: from=Node-PIZERO1-DUAL file=little_boy_blue.txt bytes=942 chunks=30 crc=8FFFB95D +TX FILE BEGIN: round=1 file=children.txt bytes=1422 chunks=45 crc=C9E80D8B +The little toy dog is covered with dust, + But sturdy and staunch he stands; + And the little toy soldier is red with rust, + And his musket molds in his hands. +Time was when the little toy dog was new, + And the soldier was passing fair; +And that was the time when our Little Boy Blue + Kissed them and put them there. + +... +What has become of our Little Boy Blue, + Since he kissed them and put them there. +RX FILE END: from=Node-PIZERO1-DUAL file=little_boy_blue.txt received=942/942 chunks=30/30 crc=8FFFB95D status=OK +TX FILE END: round=1 file=children.txt bytes=1422 chunks=45 crc=C9E80D8B next_round_in_ms=10000 + +RX FILE BEGIN: from=Node-PIZERO1-DUAL file=little_boy_blue.txt bytes=942 chunks=30 crc=8FFFB95D +The little toy dog is covered with dust, + But sturdy and staunch he stands; + And the little toy soldier is red with rust, + And his musket molds in his hands. +Time was when the little toy dog was new, + And the soldier w^CBLE linux-central: disconnected; local stop + +Stopped +jlpoole@trixie1:~ $ # + +``` + +The [ustore] WARNING: FlashFSFileSystem check failed, reformatting! line is not necessarily fatal in the native build, but the program must be run from a writable directory, because it appears to initialize local storage. + +## 9. Permission troubleshooting + +If the program cannot talk to BlueZ over D-Bus or cannot power/scan the adapter, test once with sudo: + +```bash +sudo ./microreticulum_306_rpi_arm64_dual_children +``` + +If sudo works but the normal user fails, document that this is a BlueZ/D-Bus permission issue, not a missing-library issue. The clean fix may be a D-Bus policy rule for your program’s BlueZ access, but for the first howto I would keep the instruction conservative: + +```bash +sudo usermod -aG bluetooth,netdev "$USER" +newgrp bluetooth +``` + +Then log out and back in. + +## 10. Common failure checks +### Is the adapter present? + hciconfig -a 2>/dev/null || bluetoothctl list + +### Is Bluetooth blocked? + rfkill list + +### Is the daemon running? + systemctl status bluetooth --no-pager + +### Does BlueZ respond? + bluetoothctl show + +### Are libraries missing? + ldd ./microreticulum_306_rpi_arm64_dual_children | grep 'not found' + +### Is the binary executable? + ls -l ./microreticulum_306_rpi_arm64_dual_children + + +*Note:* on an initial run, the binary will create a local Reticulum credential file `transport_identity` in the directory where you run the binary from. +Example: + +```bash +jlpoole@trixie1:~ $ ls -la transport_identity +-rw-r--r-- 1 jlpoole jlpoole 64 May 22 18:21 transport_identity +jlpoole@trixie1:~ $ +``` diff --git a/exercises/306_microReticulum_ble_file_transfer_oled/src/host_jp_main.cpp b/exercises/306_microReticulum_ble_file_transfer_oled/src/host_jp_main.cpp index 7c43b01..7c9b129 100644 --- a/exercises/306_microReticulum_ble_file_transfer_oled/src/host_jp_main.cpp +++ b/exercises/306_microReticulum_ble_file_transfer_oled/src/host_jp_main.cpp @@ -539,7 +539,7 @@ int main() { std::signal(SIGTERM, handle_signal); RNS::loglevel(RNS::LOG_NOTICE); - std::printf("Exercise 306 jp native BLE file transfer console\n"); + std::printf("Exercise 306 native BLE file transfer console\n"); std::printf("Node=%s\n", node_label.c_str()); std::printf("Selected file=%s bytes=%u chunk=%u interval_ms=%lu repeat_rest_ms=%lu\n", SELECTED_TEXT_NAME, (unsigned)SELECTED_TEXT_SIZE, diff --git a/exercises/306_microReticulum_ble_file_transfer_oled/texts/tmp/eos_build_20260521_1621.txt b/exercises/306_microReticulum_ble_file_transfer_oled/texts/tmp/eos_build_20260521_1621.txt new file mode 100644 index 0000000..fa6cd40 --- /dev/null +++ b/exercises/306_microReticulum_ble_file_transfer_oled/texts/tmp/eos_build_20260521_1621.txt @@ -0,0 +1,668 @@ +(pioenv) jlpoole@eos /usr/local/src/microreticulum/microReticulumTbeam $ pio run -d exercises/306_microReticulum_ble_file_transfer_oled -e jp_native +Processing jp_native (platform: native) +--------------------------------------------------------------------------------------------------------------------------------------- +Library Manager: Installing symlink:///usr/local/src/microreticulum/microReticulum +Library Manager: microReticulum@0.3.1 has been installed! +Library Manager: Resolving dependencies... +Library Manager: Installing ArduinoJson @ ~7.4.2 +Downloading [####################################] 100% +Unpacking [####################################] 100% +Library Manager: ArduinoJson@7.4.3 has been installed! +Library Manager: Installing MsgPack @ ~0.4.2 +Library Manager: Warning! More than one package has been found by MsgPack @ ~0.4.2 requirements: +Library Manager: - hideakitai/MsgPack@0.4.2 +Library Manager: - mbed-yihui/msgpack@0.0.0+sha.5237a514fdab +Library Manager: Please specify detailed REQUIREMENTS using package owner and version (shown above) to avoid name conflicts +Downloading [####################################] 100% +Unpacking [####################################] 100% +Library Manager: MsgPack@0.4.2 has been installed! +Library Manager: Resolving dependencies... +Library Manager: Installing hideakitai/ArxContainer @ >=0.6.0 +Downloading [####################################] 100% +Unpacking [####################################] 100% +Library Manager: ArxContainer@0.7.0 has been installed! +Library Manager: Installing hideakitai/ArxTypeTraits @ * +Downloading [####################################] 100% +Unpacking [####################################] 100% +Library Manager: ArxTypeTraits@0.3.2 has been installed! +Library Manager: Installing hideakitai/DebugLog @ >=0.8.1 +Downloading [####################################] 100% +Unpacking [####################################] 100% +Library Manager: DebugLog@0.8.4 has been installed! +Library Manager: Resolving dependencies... +Verbose mode can be enabled via `-v, --verbose` option +Embedded /usr/local/src/microreticulum/microReticulumTbeam/exercises/306_microReticulum_ble_file_transfer_oled/texts/little_boy_blue.txt (942 bytes) -> /usr/local/src/microreticulum/microReticulumTbeam/exercises/306_microReticulum_ble_file_transfer_oled/.pio/build/jp_native/generated/SelectedText.h +LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf +LDF Modes: Finder ~ chain, Compatibility ~ off +Found 8 compatible libraries +Scanning dependencies... +Dependency Graph +|-- ArduinoJson @ 7.4.3 +|-- MsgPack @ 0.4.2 +|-- Crypto @ 0.4.0+sha.da68972 +|-- microStore @ 0.1.6+sha.4b73902 +|-- microReticulum @ 0.3.1 +Building in debug mode +Compiling .pio/build/jp_native/src/HostBluezBleInterface.o +Compiling .pio/build/jp_native/src/host_jp_main.o +Compiling .pio/build/jp_native/libcc8/Crypto/AES128.o +Compiling .pio/build/jp_native/libcc8/Crypto/AES192.o +Compiling .pio/build/jp_native/libcc8/Crypto/AES256.o +Compiling .pio/build/jp_native/libcc8/Crypto/AESCommon.o +Compiling .pio/build/jp_native/libcc8/Crypto/AESEsp32.o +Compiling .pio/build/jp_native/libcc8/Crypto/AuthenticatedCipher.o +Compiling .pio/build/jp_native/libcc8/Crypto/BLAKE2b.o +Compiling .pio/build/jp_native/libcc8/Crypto/BLAKE2s.o +Compiling .pio/build/jp_native/libcc8/Crypto/BigNumberUtil.o +Compiling .pio/build/jp_native/libcc8/Crypto/BlockCipher.o +Compiling .pio/build/jp_native/libcc8/Crypto/CTR.o +Compiling .pio/build/jp_native/libcc8/Crypto/ChaCha.o +Compiling .pio/build/jp_native/libcc8/Crypto/ChaChaPoly.o +Compiling .pio/build/jp_native/libcc8/Crypto/Cipher.o +Compiling .pio/build/jp_native/libcc8/Crypto/Crypto.o +Compiling .pio/build/jp_native/libcc8/Crypto/Curve25519.o +Compiling .pio/build/jp_native/libcc8/Crypto/EAX.o +Compiling .pio/build/jp_native/libcc8/Crypto/Ed25519.o +Compiling .pio/build/jp_native/libcc8/Crypto/GCM.o +Compiling .pio/build/jp_native/libcc8/Crypto/GF128.o +Compiling .pio/build/jp_native/libcc8/Crypto/GHASH.o +Compiling .pio/build/jp_native/libcc8/Crypto/HKDF.o +Compiling .pio/build/jp_native/libcc8/Crypto/Hash.o +Compiling .pio/build/jp_native/libcc8/Crypto/KeccakCore.o +Compiling .pio/build/jp_native/libcc8/Crypto/NoiseSource.o +Compiling .pio/build/jp_native/libcc8/Crypto/OMAC.o +Compiling .pio/build/jp_native/libcc8/Crypto/P521.o +Compiling .pio/build/jp_native/libcc8/Crypto/Poly1305.o +Compiling .pio/build/jp_native/libcc8/Crypto/RNG.o +Compiling .pio/build/jp_native/libcc8/Crypto/SHA224.o +Compiling .pio/build/jp_native/libcc8/Crypto/SHA256.o +.pio/libdeps/jp_native/Crypto/RNG.cpp:87:2: warning: #warning "no hardware random number source detected for this platform" [-Wcpp] + 87 | #warning "no hardware random number source detected for this platform" + | ^~~~~~~ +Compiling .pio/build/jp_native/libcc8/Crypto/SHA3.o +Compiling .pio/build/jp_native/libcc8/Crypto/SHA384.o +Compiling .pio/build/jp_native/libcc8/Crypto/SHA512.o +Compiling .pio/build/jp_native/libcc8/Crypto/SHAKE.o +Compiling .pio/build/jp_native/libcc8/Crypto/XOF.o +Compiling .pio/build/jp_native/libcc8/Crypto/XTS.o +Compiling .pio/build/jp_native/libd98/microReticulum/Bytes.o +Compiling .pio/build/jp_native/libd98/microReticulum/Channel.o +Compiling .pio/build/jp_native/libd98/microReticulum/Cryptography/CBC.o +Compiling .pio/build/jp_native/libd98/microReticulum/Cryptography/Ed25519.o +Compiling .pio/build/jp_native/libd98/microReticulum/Cryptography/Fernet.o +Compiling .pio/build/jp_native/libd98/microReticulum/Cryptography/HKDF.o +Compiling .pio/build/jp_native/libd98/microReticulum/Cryptography/Hashes.o +Compiling .pio/build/jp_native/libd98/microReticulum/Cryptography/Token.o +Compiling .pio/build/jp_native/libd98/microReticulum/Cryptography/X25519.o +Compiling .pio/build/jp_native/libd98/microReticulum/Destination.o +Compiling .pio/build/jp_native/libd98/microReticulum/Identity.o +Compiling .pio/build/jp_native/libd98/microReticulum/Interface.o +Compiling .pio/build/jp_native/libd98/microReticulum/Link.o +Archiving .pio/build/jp_native/libcc8/libCrypto.a +Compiling .pio/build/jp_native/libd98/microReticulum/Log.o +Indexing .pio/build/jp_native/libcc8/libCrypto.a +Compiling .pio/build/jp_native/libd98/microReticulum/Packet.o +In file included from .pio/libdeps/jp_native/DebugLog/DebugLogRestoreState.h:4, + from .pio/libdeps/jp_native/DebugLog/DebugLog.h:54, + from .pio/libdeps/jp_native/MsgPack/MsgPack.h:5, + from /usr/local/src/microreticulum/microReticulum/src/Link.cpp:31: +.pio/libdeps/jp_native/DebugLog/DebugLogEnable.h:50:4: warning: #warning "Defaulting to a log level of: DEBUGLOG_DEFAULT_LOG_LEVEL_TRACE" [-Wcpp] + 50 | #warning "Defaulting to a log level of: DEBUGLOG_DEFAULT_LOG_LEVEL_TRACE" + | ^~~~~~~ +In file included from .pio/libdeps/jp_native/MsgPack/MsgPack.h:7: +.pio/libdeps/jp_native/DebugLog/DebugLogEnable.h:50:4: warning: #warning "Defaulting to a log level of: DEBUGLOG_DEFAULT_LOG_LEVEL_TRACE" [-Wcpp] + 50 | #warning "Defaulting to a log level of: DEBUGLOG_DEFAULT_LOG_LEVEL_TRACE" + | ^~~~~~~ +In file included from .pio/libdeps/jp_native/DebugLog/DebugLogRestoreState.h:4, + from .pio/libdeps/jp_native/MsgPack/MsgPack.h:19: +.pio/libdeps/jp_native/DebugLog/DebugLogEnable.h:50:4: warning: #warning "Defaulting to a log level of: DEBUGLOG_DEFAULT_LOG_LEVEL_TRACE" [-Wcpp] + 50 | #warning "Defaulting to a log level of: DEBUGLOG_DEFAULT_LOG_LEVEL_TRACE" + | ^~~~~~~ +In file included from src/HostBluezBleInterface.h:3, + from src/host_jp_main.cpp:8: +/usr/local/src/microreticulum/microReticulum/src/Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +In file included from src/HostBluezBleInterface.h:3, + from src/HostBluezBleInterface.cpp:1: +/usr/local/src/microreticulum/microReticulum/src/Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +In file included from /usr/local/src/microreticulum/microReticulum/src/Bytes.cpp:15: +/usr/local/src/microreticulum/microReticulum/src/Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +In file included from /usr/local/src/microreticulum/microReticulum/src/Cryptography/Ed25519.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Cryptography/Ed25519.cpp:15: +/usr/local/src/microreticulum/microReticulum/src/Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +In file included from /usr/local/src/microreticulum/microReticulum/src/Cryptography/Hashes.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Cryptography/Hashes.cpp:15: +/usr/local/src/microreticulum/microReticulum/src/Cryptography/../Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Cryptography/../Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +In file included from /usr/local/src/microreticulum/microReticulum/src/Cryptography/X25519.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Cryptography/X25519.cpp:15: +/usr/local/src/microreticulum/microReticulum/src/Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +In file included from /usr/local/src/microreticulum/microReticulum/src/Cryptography/HKDF.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Cryptography/HKDF.cpp:15: +/usr/local/src/microreticulum/microReticulum/src/Cryptography/../Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Cryptography/../Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +In file included from /usr/local/src/microreticulum/microReticulum/src/Cryptography/Random.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Cryptography/Fernet.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Cryptography/Fernet.cpp:15: +/usr/local/src/microreticulum/microReticulum/src/Cryptography/../Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Cryptography/../Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +In file included from /usr/local/src/microreticulum/microReticulum/src/Identity.h:18, + from /usr/local/src/microreticulum/microReticulum/src/Destination.h:20, + from /usr/local/src/microreticulum/microReticulum/src/Channel.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Channel.cpp:15: +/usr/local/src/microreticulum/microReticulum/src/Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +In file included from /usr/local/src/microreticulum/microReticulum/src/Cryptography/Random.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Cryptography/Token.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Cryptography/Token.cpp:15: +/usr/local/src/microreticulum/microReticulum/src/Cryptography/../Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Cryptography/../Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +In file included from /usr/local/src/microreticulum/microReticulum/src/Identity.h:18, + from /usr/local/src/microreticulum/microReticulum/src/Destination.h:20, + from /usr/local/src/microreticulum/microReticulum/src/Destination.cpp:15: +/usr/local/src/microreticulum/microReticulum/src/Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +In file included from /usr/local/src/microreticulum/microReticulum/src/Utilities/OS.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Log.cpp:17: +/usr/local/src/microreticulum/microReticulum/src/Utilities/../Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Utilities/../Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +In file included from /usr/local/src/microreticulum/microReticulum/src/Identity.h:18, + from /usr/local/src/microreticulum/microReticulum/src/Identity.cpp:15: +/usr/local/src/microreticulum/microReticulum/src/Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +In file included from /usr/local/src/microreticulum/microReticulum/src/Identity.h:18, + from /usr/local/src/microreticulum/microReticulum/src/Interface.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Interface.cpp:15: +/usr/local/src/microreticulum/microReticulum/src/Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +In file included from /usr/local/src/microreticulum/microReticulum/src/Identity.h:18, + from /usr/local/src/microreticulum/microReticulum/src/Destination.h:20, + from /usr/local/src/microreticulum/microReticulum/src/Link.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Link.cpp:15: +/usr/local/src/microreticulum/microReticulum/src/Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +Compiling .pio/build/jp_native/libd98/microReticulum/Persistence/DestinationEntry.o +Compiling .pio/build/jp_native/libd98/microReticulum/Resource.o +In file included from /usr/local/src/microreticulum/microReticulum/src/Identity.h:18, + from /usr/local/src/microreticulum/microReticulum/src/Destination.h:20, + from /usr/local/src/microreticulum/microReticulum/src/Link.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Packet.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Packet.cpp:15: +/usr/local/src/microreticulum/microReticulum/src/Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +In file included from .pio/libdeps/jp_native/microStore/include/microStore/FileSystem.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Utilities/OS.h:19: +.pio/libdeps/jp_native/microStore/include/microStore/File.h: In member function 'size_t microStore::File::read(uint8_t*, size_t)': +.pio/libdeps/jp_native/microStore/include/microStore/File.h:116:137: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare] + 116 | inline size_t read(uint8_t* buffer, size_t size) { assert(_impl); size_t read = _impl->read(buffer, size); if (read > 0 && read != -1) _crc = crc32(_crc, buffer, read); return read; } + | ~~~~~^~~~~ +Compiling .pio/build/jp_native/libd98/microReticulum/Reticulum.o +Compiling .pio/build/jp_native/libd98/microReticulum/Transport.o +In file included from .pio/libdeps/jp_native/microStore/include/microStore/FileSystem.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Utilities/OS.h:19, + from /usr/local/src/microreticulum/microReticulum/src/Packet.h:23, + from /usr/local/src/microreticulum/microReticulum/src/Transport.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Reticulum.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Channel.cpp:17: +.pio/libdeps/jp_native/microStore/include/microStore/File.h: In member function 'size_t microStore::File::read(uint8_t*, size_t)': +.pio/libdeps/jp_native/microStore/include/microStore/File.h:116:137: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare] + 116 | inline size_t read(uint8_t* buffer, size_t size) { assert(_impl); size_t read = _impl->read(buffer, size); if (read > 0 && read != -1) _crc = crc32(_crc, buffer, read); return read; } + | ~~~~~^~~~~ +In file included from .pio/libdeps/jp_native/microStore/include/microStore/FileSystem.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Utilities/OS.h:19, + from src/HostBluezBleInterface.cpp:3: +.pio/libdeps/jp_native/microStore/include/microStore/File.h: In member function 'size_t microStore::File::read(uint8_t*, size_t)': +.pio/libdeps/jp_native/microStore/include/microStore/File.h:116:137: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare] + 116 | inline size_t read(uint8_t* buffer, size_t size) { assert(_impl); size_t read = _impl->read(buffer, size); if (read > 0 && read != -1) _crc = crc32(_crc, buffer, read); return read; } + | ~~~~~^~~~~ +In file included from /usr/local/src/microreticulum/microReticulum/src/LinkData.h:20, + from /usr/local/src/microreticulum/microReticulum/src/Link.cpp:17: +/usr/local/src/microreticulum/microReticulum/src/Resource.h: At global scope: +/usr/local/src/microreticulum/microReticulum/src/Resource.h:108:17: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] + 108 | const Type::Resource::status status() const; + | ^~~~~ +/usr/local/src/microreticulum/microReticulum/src/Resource.h:109:17: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] + 109 | const size_t size() const; + | ^~~~~ +/usr/local/src/microreticulum/microReticulum/src/Resource.h:110:17: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] + 110 | const size_t total_size() const; + | ^~~~~ +In file included from .pio/libdeps/jp_native/microStore/include/microStore/FileSystem.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Utilities/OS.h:19, + from /usr/local/src/microreticulum/microReticulum/src/Packet.h:23, + from src/host_jp_main.cpp:18: +.pio/libdeps/jp_native/microStore/include/microStore/File.h: In member function 'size_t microStore::File::read(uint8_t*, size_t)': +.pio/libdeps/jp_native/microStore/include/microStore/File.h:116:137: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare] + 116 | inline size_t read(uint8_t* buffer, size_t size) { assert(_impl); size_t read = _impl->read(buffer, size); if (read > 0 && read != -1) _crc = crc32(_crc, buffer, read); return read; } + | ~~~~~^~~~~ +In file included from .pio/libdeps/jp_native/microStore/include/microStore/FileSystem.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Utilities/OS.h:19, + from /usr/local/src/microreticulum/microReticulum/src/Packet.h:23, + from /usr/local/src/microreticulum/microReticulum/src/Transport.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Destination.cpp:17: +.pio/libdeps/jp_native/microStore/include/microStore/File.h: In member function 'size_t microStore::File::read(uint8_t*, size_t)': +.pio/libdeps/jp_native/microStore/include/microStore/File.h:116:137: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare] + 116 | inline size_t read(uint8_t* buffer, size_t size) { assert(_impl); size_t read = _impl->read(buffer, size); if (read > 0 && read != -1) _crc = crc32(_crc, buffer, read); return read; } + | ~~~~~^~~~~ +In file included from .pio/libdeps/jp_native/microStore/include/microStore/FileSystem.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Utilities/OS.h:19, + from /usr/local/src/microreticulum/microReticulum/src/Packet.h:23, + from /usr/local/src/microreticulum/microReticulum/src/Transport.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Reticulum.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Identity.cpp:17: +.pio/libdeps/jp_native/microStore/include/microStore/File.h: In member function 'size_t microStore::File::read(uint8_t*, size_t)': +.pio/libdeps/jp_native/microStore/include/microStore/File.h:116:137: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare] + 116 | inline size_t read(uint8_t* buffer, size_t size) { assert(_impl); size_t read = _impl->read(buffer, size); if (read > 0 && read != -1) _crc = crc32(_crc, buffer, read); return read; } + | ~~~~~^~~~~ +Compiling .pio/build/jp_native/libd98/microReticulum/Utilities/Crc.o +In file included from .pio/libdeps/jp_native/microStore/include/microStore/FileSystem.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Utilities/OS.h:19, + from /usr/local/src/microreticulum/microReticulum/src/Packet.h:23, + from /usr/local/src/microreticulum/microReticulum/src/Transport.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Interface.cpp:18: +.pio/libdeps/jp_native/microStore/include/microStore/File.h: In member function 'size_t microStore::File::read(uint8_t*, size_t)': +.pio/libdeps/jp_native/microStore/include/microStore/File.h:116:137: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare] + 116 | inline size_t read(uint8_t* buffer, size_t size) { assert(_impl); size_t read = _impl->read(buffer, size); if (read > 0 && read != -1) _crc = crc32(_crc, buffer, read); return read; } + | ~~~~~^~~~~ +In file included from .pio/libdeps/jp_native/microStore/include/microStore/FileSystem.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Utilities/OS.h:19, + from /usr/local/src/microreticulum/microReticulum/src/Packet.h:23, + from /usr/local/src/microreticulum/microReticulum/src/LinkData.h:23: +.pio/libdeps/jp_native/microStore/include/microStore/File.h: In member function 'size_t microStore::File::read(uint8_t*, size_t)': +.pio/libdeps/jp_native/microStore/include/microStore/File.h:116:137: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare] + 116 | inline size_t read(uint8_t* buffer, size_t size) { assert(_impl); size_t read = _impl->read(buffer, size); if (read > 0 && read != -1) _crc = crc32(_crc, buffer, read); return read; } + | ~~~~~^~~~~ +Compiling .pio/build/jp_native/libd98/microReticulum/Utilities/Memory.o +In file included from .pio/libdeps/jp_native/microStore/include/microStore/FileSystem.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Utilities/OS.h:19, + from /usr/local/src/microreticulum/microReticulum/src/Packet.h:23: +.pio/libdeps/jp_native/microStore/include/microStore/File.h: In member function 'size_t microStore::File::read(uint8_t*, size_t)': +.pio/libdeps/jp_native/microStore/include/microStore/File.h:116:137: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare] + 116 | inline size_t read(uint8_t* buffer, size_t size) { assert(_impl); size_t read = _impl->read(buffer, size); if (read > 0 && read != -1) _crc = crc32(_crc, buffer, read); return read; } + | ~~~~~^~~~~ +/usr/local/src/microreticulum/microReticulum/src/Identity.cpp: In static member function 'static bool RNS::Identity::save_known_destinations()': +/usr/local/src/microreticulum/microReticulum/src/Identity.cpp:305:24: warning: unused variable 'save_start' [-Wunused-variable] + 305 | double save_start = OS::time(); + | ^~~~~~~~~~ +Compiling .pio/build/jp_native/libd98/microReticulum/Utilities/OS.o +Compiling .pio/build/jp_native/libd98/microReticulum/Utilities/Persistence.o +/usr/local/src/microreticulum/microReticulum/src/Packet.cpp: In member function 'std::string RNS::Packet::dumpString() const': +/usr/local/src/microreticulum/microReticulum/src/Packet.cpp:641:57: warning: ignoring return value of 'std::__cxx11::basic_string<_CharT, _Traits, _Allocator> std::operator+(__cxx11::basic_string<_CharT, _Traits, _Allocator>&&, const _CharT*) [with _CharT = char; _Traits = char_traits; _Alloc = allocator]', declared with attribute 'nodiscard' [-Wunused-result] + 641 | std::to_string(_object->_header_type) + "\n"; + | ^~~~ +In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/14/include/g++-v14/string:54, + from /usr/local/src/microreticulum/microReticulum/src/Log.h:23, + from /usr/local/src/microreticulum/microReticulum/src/Identity.h:17: +/usr/lib/gcc/x86_64-pc-linux-gnu/14/include/g++-v14/bits/basic_string.h:3733:5: note: declared here + 3733 | operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, + | ^~~~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Packet.cpp:662:60: warning: ignoring return value of 'std::__cxx11::basic_string<_CharT, _Traits, _Allocator> std::operator+(__cxx11::basic_string<_CharT, _Traits, _Allocator>&&, const _CharT*) [with _CharT = char; _Traits = char_traits; _Alloc = allocator]', declared with attribute 'nodiscard' [-Wunused-result] + 662 | std::to_string(_object->_transport_type) + "\n"; + | ^~~~ +/usr/lib/gcc/x86_64-pc-linux-gnu/14/include/g++-v14/bits/basic_string.h:3733:5: note: declared here + 3733 | operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, + | ^~~~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Packet.cpp:680:62: warning: ignoring return value of 'std::__cxx11::basic_string<_CharT, _Traits, _Allocator> std::operator+(__cxx11::basic_string<_CharT, _Traits, _Allocator>&&, const _CharT*) [with _CharT = char; _Traits = char_traits; _Alloc = allocator]', declared with attribute 'nodiscard' [-Wunused-result] + 680 | std::to_string(_object->_destination_type) + "\n"; + | ^~~~ +/usr/lib/gcc/x86_64-pc-linux-gnu/14/include/g++-v14/bits/basic_string.h:3733:5: note: declared here + 3733 | operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, + | ^~~~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Packet.cpp:707:57: warning: ignoring return value of 'std::__cxx11::basic_string<_CharT, _Traits, _Allocator> std::operator+(__cxx11::basic_string<_CharT, _Traits, _Allocator>&&, const _CharT*) [with _CharT = char; _Traits = char_traits; _Alloc = allocator]', declared with attribute 'nodiscard' [-Wunused-result] + 707 | std::to_string(_object->_packet_type) + "\n"; + | ^~~~ +/usr/lib/gcc/x86_64-pc-linux-gnu/14/include/g++-v14/bits/basic_string.h:3733:5: note: declared here + 3733 | operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, + | ^~~~~~~~ +In file included from .pio/libdeps/jp_native/MsgPack/MsgPack/Packer.h:28, + from .pio/libdeps/jp_native/MsgPack/MsgPack.h:13: +.pio/libdeps/jp_native/MsgPack/MsgPack/Unpacker.h: At global scope: +.pio/libdeps/jp_native/MsgPack/MsgPack/Unpacker.h:110:26: warning: 'template class ArduinoJson::V743HB42::StaticJsonDocument' is deprecated: use JsonDocument instead [-Wdeprecated-declarations] + 110 | bool deserialize(StaticJsonDocument& doc) { + | ^~~~~~~~~~~~~~~~~~ +In file included from .pio/libdeps/jp_native/ArduinoJson/src/ArduinoJson.hpp:65, + from .pio/libdeps/jp_native/ArduinoJson/src/ArduinoJson.h:9, + from /usr/local/src/microreticulum/microReticulum/src/Bytes.h:20: +.pio/libdeps/jp_native/ArduinoJson/src/ArduinoJson/compatibility.hpp:63:58: note: declared here + 63 | class ARDUINOJSON_DEPRECATED("use JsonDocument instead") StaticJsonDocument + | ^~~~~~~~~~~~~~~~~~ +.pio/libdeps/jp_native/MsgPack/MsgPack/Unpacker.h:113:50: warning: 'DynamicJsonDocument' is deprecated: use JsonDocument instead [-Wdeprecated-declarations] + 113 | bool deserialize(DynamicJsonDocument& doc) { + | ^ +.pio/libdeps/jp_native/ArduinoJson/src/ArduinoJson/compatibility.hpp:125:58: note: declared here + 125 | class ARDUINOJSON_DEPRECATED("use JsonDocument instead") DynamicJsonDocument + | ^~~~~~~~~~~~~~~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Packet.cpp:784:53: warning: ignoring return value of 'std::__cxx11::basic_string<_CharT, _Traits, _Allocator> std::operator+(__cxx11::basic_string<_CharT, _Traits, _Allocator>&&, const _CharT*) [with _CharT = char; _Traits = char_traits; _Alloc = allocator]', declared with attribute 'nodiscard' [-Wunused-result] + 784 | std::to_string(_object->_context) + "\n"; + | ^~~~ +/usr/lib/gcc/x86_64-pc-linux-gnu/14/include/g++-v14/bits/basic_string.h:3733:5: note: declared here + 3733 | operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, + | ^~~~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Packet.cpp:625:14: warning: variable 'encrypted' set but not used [-Wunused-but-set-variable] + 625 | bool encrypted = true; + | ^~~~~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Utilities/Memory.cpp: In static member function 'static void* RNS::Utilities::Memory::pool_malloc(pool_info&, size_t)': +/usr/local/src/microreticulum/microReticulum/src/Utilities/Memory.cpp:187:23: warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct tlsf_stats'; use assignment or value-initialization instead [-Wclass-memaccess] + 187 | memset(&stats, 0, sizeof(stats)); + | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Utilities/Memory.cpp:64:8: note: 'struct tlsf_stats' declared here + 64 | struct tlsf_stats { + | ^~~~~~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Utilities/Memory.cpp: In static member function 'static void RNS::Utilities::Memory::dump_pool_stats(pool_info&, const char*)': +/usr/local/src/microreticulum/microReticulum/src/Utilities/Memory.cpp:234:15: warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct tlsf_stats'; use assignment or value-initialization instead [-Wclass-memaccess] + 234 | memset(&stats, 0, sizeof(stats)); + | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Utilities/Memory.cpp:64:8: note: 'struct tlsf_stats' declared here + 64 | struct tlsf_stats { + | ^~~~~~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Utilities/Memory.cpp: In static member function 'static void RNS::Utilities::Memory::dump_basic_pool_stats()': +/usr/local/src/microreticulum/microReticulum/src/Utilities/Memory.cpp:256:23: warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct tlsf_stats'; use assignment or value-initialization instead [-Wclass-memaccess] + 256 | memset(&stats, 0, sizeof(stats)); + | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Utilities/Memory.cpp:64:8: note: 'struct tlsf_stats' declared here + 64 | struct tlsf_stats { + | ^~~~~~~~~~ +.pio/libdeps/jp_native/MsgPack/MsgPack/Packer.h:85:30: warning: 'template class ArduinoJson::V743HB42::StaticJsonDocument' is deprecated: use JsonDocument instead [-Wdeprecated-declarations] + 85 | void serialize(const StaticJsonDocument& doc, const size_t num_max_string_type = 32) { + | ^~~~~~~~~~~~~~~~~~ +.pio/libdeps/jp_native/ArduinoJson/src/ArduinoJson/compatibility.hpp:63:58: note: declared here + 63 | class ARDUINOJSON_DEPRECATED("use JsonDocument instead") StaticJsonDocument + | ^~~~~~~~~~~~~~~~~~ +.pio/libdeps/jp_native/MsgPack/MsgPack/Packer.h:88:93: warning: 'DynamicJsonDocument' is deprecated: use JsonDocument instead [-Wdeprecated-declarations] + 88 | void serialize(const DynamicJsonDocument& doc, const size_t num_max_string_type = 32) { + | ^ +.pio/libdeps/jp_native/ArduinoJson/src/ArduinoJson/compatibility.hpp:125:58: note: declared here + 125 | class ARDUINOJSON_DEPRECATED("use JsonDocument instead") DynamicJsonDocument + | ^~~~~~~~~~~~~~~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Utilities/Memory.cpp:269:23: warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct tlsf_stats'; use assignment or value-initialization instead [-Wclass-memaccess] + 269 | memset(&stats, 0, sizeof(stats)); + | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Utilities/Memory.cpp:64:8: note: 'struct tlsf_stats' declared here + 64 | struct tlsf_stats { + | ^~~~~~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Utilities/Memory.cpp:282:23: warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct tlsf_stats'; use assignment or value-initialization instead [-Wclass-memaccess] + 282 | memset(&stats, 0, sizeof(stats)); + | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Utilities/Memory.cpp:64:8: note: 'struct tlsf_stats' declared here + 64 | struct tlsf_stats { + | ^~~~~~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Link.cpp: In static member function 'static uint16_t RNS::Link::mtu_from_lr_packet(const RNS::Packet&)': +/usr/local/src/microreticulum/microReticulum/src/Link.cpp:146:93: warning: suggest parentheses around '+' in operand of '&' [-Wparentheses] + 146 | return (packet.data()[ECPUBSIZE] << 16) + (packet.data()[ECPUBSIZE+1] << 8) + (packet.data()[ECPUBSIZE+2]) & MTU_BYTEMASK; +/usr/local/src/microreticulum/microReticulum/src/Link.cpp: In static member function 'static uint16_t RNS::Link::mtu_from_lp_packet(const RNS::Packet&)': +/usr/local/src/microreticulum/microReticulum/src/Link.cpp:155:67: warning: suggest parentheses around '+' in operand of '&' [-Wparentheses] + 155 | return (mtu_bytes[0] << 16) + (mtu_bytes[1] << 8) + (mtu_bytes[2]) & MTU_BYTEMASK; +/usr/local/src/microreticulum/microReticulum/src/Link.cpp: In member function 'void RNS::Link::receive(const RNS::Packet&)': +/usr/local/src/microreticulum/microReticulum/src/Link.cpp:1266:52: warning: unused variable 'resource' [-Wunused-variable] + 1266 | for (auto& resource : _object->_incoming_resources) { + | ^~~~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Link.cpp:1032:40: warning: enumeration value 'RESOURCE_ADV' not handled in switch [-Wswitch] + 1032 | switch (packet.context()) { + | ^ +/usr/local/src/microreticulum/microReticulum/src/Link.cpp:1032:40: warning: enumeration value 'RESOURCE_REQ' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Link.cpp:1032:40: warning: enumeration value 'RESOURCE_HMU' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Link.cpp:1032:40: warning: enumeration value 'RESOURCE_PRF' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Link.cpp:1032:40: warning: enumeration value 'RESOURCE_ICL' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Link.cpp:1032:40: warning: enumeration value 'RESOURCE_RCL' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Link.cpp:1032:40: warning: enumeration value 'CACHE_REQUEST' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Link.cpp:1032:40: warning: enumeration value 'PATH_RESPONSE' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Link.cpp:1032:40: warning: enumeration value 'COMMAND' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Link.cpp:1032:40: warning: enumeration value 'COMMAND_STATUS' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Link.cpp:1032:40: warning: enumeration value 'CHANNEL' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Link.cpp:1032:40: warning: enumeration value 'LINKPROOF' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Link.cpp:1032:40: warning: enumeration value 'LRPROOF' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Link.cpp:1031:38: warning: variable 'should_query' set but not used [-Wunused-but-set-variable] + 1031 | bool should_query = false; + | ^~~~~~~~~~~~ +Compiling .pio/build/jp_native/libd98/microReticulum/Utilities/tlsf.o +In file included from /usr/local/src/microreticulum/microReticulum/src/Identity.h:18, + from /usr/local/src/microreticulum/microReticulum/src/Interface.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Persistence/DestinationEntry.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Persistence/DestinationEntry.cpp:15: +/usr/local/src/microreticulum/microReticulum/src/Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +Compiling .pio/build/jp_native/libd98/microReticulum/main.o +In file included from /usr/local/src/microreticulum/microReticulum/src/Identity.h:18, + from /usr/local/src/microreticulum/microReticulum/src/Destination.h:20, + from /usr/local/src/microreticulum/microReticulum/src/Resource.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Resource.cpp:15: +/usr/local/src/microreticulum/microReticulum/src/Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +In file included from /usr/local/src/microreticulum/microReticulum/src/Identity.h:18, + from /usr/local/src/microreticulum/microReticulum/src/Destination.h:20, + from /usr/local/src/microreticulum/microReticulum/src/Link.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Packet.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Transport.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Transport.cpp:15: +/usr/local/src/microreticulum/microReticulum/src/Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +In file included from /usr/local/src/microreticulum/microReticulum/src/Identity.h:18, + from /usr/local/src/microreticulum/microReticulum/src/Destination.h:20, + from /usr/local/src/microreticulum/microReticulum/src/Link.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Packet.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Transport.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Reticulum.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Reticulum.cpp:15: +/usr/local/src/microreticulum/microReticulum/src/Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +In file included from .pio/libdeps/jp_native/microStore/include/microStore/FileSystem.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Utilities/OS.h:19, + from /usr/local/src/microreticulum/microReticulum/src/Packet.h:23, + from /usr/local/src/microreticulum/microReticulum/src/Persistence/DestinationEntry.h:18: +.pio/libdeps/jp_native/microStore/include/microStore/File.h: In member function 'size_t microStore::File::read(uint8_t*, size_t)': +.pio/libdeps/jp_native/microStore/include/microStore/File.h:116:137: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare] + 116 | inline size_t read(uint8_t* buffer, size_t size) { assert(_impl); size_t read = _impl->read(buffer, size); if (read > 0 && read != -1) _crc = crc32(_crc, buffer, read); return read; } + | ~~~~~^~~~~ +/usr/local/src/microreticulum/microReticulum/src/Resource.h: At global scope: +/usr/local/src/microreticulum/microReticulum/src/Resource.h:108:17: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] + 108 | const Type::Resource::status status() const; + | ^~~~~ +/usr/local/src/microreticulum/microReticulum/src/Resource.h:109:17: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] + 109 | const size_t size() const; + | ^~~~~ +/usr/local/src/microreticulum/microReticulum/src/Resource.h:110:17: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] + 110 | const size_t total_size() const; + | ^~~~~ +In file included from .pio/libdeps/jp_native/microStore/include/microStore/FileSystem.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Utilities/OS.h:19, + from /usr/local/src/microreticulum/microReticulum/src/Packet.h:23: +.pio/libdeps/jp_native/microStore/include/microStore/File.h: In member function 'size_t microStore::File::read(uint8_t*, size_t)': +.pio/libdeps/jp_native/microStore/include/microStore/File.h:116:137: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare] + 116 | inline size_t read(uint8_t* buffer, size_t size) { assert(_impl); size_t read = _impl->read(buffer, size); if (read > 0 && read != -1) _crc = crc32(_crc, buffer, read); return read; } + | ~~~~~^~~~~ +In file included from .pio/libdeps/jp_native/microStore/include/microStore/FileSystem.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Utilities/OS.h:19, + from /usr/local/src/microreticulum/microReticulum/src/Packet.h:23, + from /usr/local/src/microreticulum/microReticulum/src/ResourceData.h:20, + from /usr/local/src/microreticulum/microReticulum/src/Resource.cpp:17: +.pio/libdeps/jp_native/microStore/include/microStore/File.h: In member function 'size_t microStore::File::read(uint8_t*, size_t)': +.pio/libdeps/jp_native/microStore/include/microStore/File.h:116:137: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare] + 116 | inline size_t read(uint8_t* buffer, size_t size) { assert(_impl); size_t read = _impl->read(buffer, size); if (read > 0 && read != -1) _crc = crc32(_crc, buffer, read); return read; } + | ~~~~~^~~~~ +In file included from /usr/local/src/microreticulum/microReticulum/src/Utilities/OS.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Utilities/OS.cpp:15: +/usr/local/src/microreticulum/microReticulum/src/Utilities/../Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Utilities/../Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +In file included from .pio/libdeps/jp_native/microStore/include/microStore/FileSystem.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Utilities/OS.h:19, + from /usr/local/src/microreticulum/microReticulum/src/Packet.h:23: +.pio/libdeps/jp_native/microStore/include/microStore/File.h: In member function 'size_t microStore::File::read(uint8_t*, size_t)': +.pio/libdeps/jp_native/microStore/include/microStore/File.h:116:137: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare] + 116 | inline size_t read(uint8_t* buffer, size_t size) { assert(_impl); size_t read = _impl->read(buffer, size); if (read > 0 && read != -1) _crc = crc32(_crc, buffer, read); return read; } + | ~~~~~^~~~~ +In file included from .pio/libdeps/jp_native/microStore/include/microStore/FileSystem.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Utilities/OS.h:19: +.pio/libdeps/jp_native/microStore/include/microStore/File.h: In member function 'size_t microStore::File::read(uint8_t*, size_t)': +.pio/libdeps/jp_native/microStore/include/microStore/File.h:116:137: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare] + 116 | inline size_t read(uint8_t* buffer, size_t size) { assert(_impl); size_t read = _impl->read(buffer, size); if (read > 0 && read != -1) _crc = crc32(_crc, buffer, read); return read; } + | ~~~~~^~~~~ +/usr/local/src/microreticulum/microReticulum/src/Resource.cpp: At global scope: +/usr/local/src/microreticulum/microReticulum/src/Resource.cpp:120:1: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] + 120 | const Type::Resource::status Resource::status() const { + | ^~~~~ +/usr/local/src/microreticulum/microReticulum/src/Resource.cpp:125:1: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] + 125 | const size_t Resource::size() const { + | ^~~~~ +/usr/local/src/microreticulum/microReticulum/src/Resource.cpp:130:1: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] + 130 | const size_t Resource::total_size() const { + | ^~~~~ +In file included from /usr/local/src/microreticulum/microReticulum/src/Identity.h:18, + from /usr/local/src/microreticulum/microReticulum/src/Destination.h:20, + from /usr/local/src/microreticulum/microReticulum/src/Link.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Packet.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Transport.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Utilities/Persistence.h:19, + from /usr/local/src/microreticulum/microReticulum/src/Utilities/Persistence.cpp:15: +/usr/local/src/microreticulum/microReticulum/src/Bytes.h: In member function 'const RNS::Bytes::Data& RNS::Bytes::collection() const': +/usr/local/src/microreticulum/microReticulum/src/Bytes.h:368:76: warning: returning reference to temporary [-Wreturn-local-addr] + 368 | inline const Data& collection() const { if (!_data) return Data(); return *_data.get(); } + | ^~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Reticulum.cpp: In member function 'void RNS::Reticulum::clean_caches()': +/usr/local/src/microreticulum/microReticulum/src/Reticulum.cpp:352:16: warning: unused variable 'now' [-Wunused-variable] + 352 | double now = OS::time(); + | ^~~ +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp: In static member function 'static bool RNS::Transport::packet_filter(const RNS::Packet&)': +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp:1271:16: warning: enumeration value 'CONTEXT_NONE' not handled in switch [-Wswitch] + 1271 | switch (packet.context()) { + | ^ +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp:1271:16: warning: enumeration value 'RESOURCE_ADV' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp:1271:16: warning: enumeration value 'RESOURCE_HMU' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp:1271:16: warning: enumeration value 'RESOURCE_ICL' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp:1271:16: warning: enumeration value 'RESOURCE_RCL' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp:1271:16: warning: enumeration value 'REQUEST' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp:1271:16: warning: enumeration value 'RESPONSE' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp:1271:16: warning: enumeration value 'PATH_RESPONSE' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp:1271:16: warning: enumeration value 'COMMAND' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp:1271:16: warning: enumeration value 'COMMAND_STATUS' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp:1271:16: warning: enumeration value 'LINKIDENTIFY' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp:1271:16: warning: enumeration value 'LINKCLOSE' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp:1271:16: warning: enumeration value 'LINKPROOF' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp:1271:16: warning: enumeration value 'LRRTT' not handled in switch [-Wswitch] +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp:1271:16: warning: enumeration value 'LRPROOF' not handled in switch [-Wswitch] +In file included from .pio/libdeps/jp_native/microStore/include/microStore/FileSystem.h:17, + from /usr/local/src/microreticulum/microReticulum/src/Utilities/OS.h:19, + from /usr/local/src/microreticulum/microReticulum/src/Packet.h:23: +.pio/libdeps/jp_native/microStore/include/microStore/File.h: In member function 'size_t microStore::File::read(uint8_t*, size_t)': +.pio/libdeps/jp_native/microStore/include/microStore/File.h:116:137: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare] + 116 | inline size_t read(uint8_t* buffer, size_t size) { assert(_impl); size_t read = _impl->read(buffer, size); if (read > 0 && read != -1) _crc = crc32(_crc, buffer, read); return read; } + | ~~~~~^~~~~ +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp: In static member function 'static void RNS::Transport::inbound(const RNS::Bytes&, const RNS::Interface&)': +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp:2152:85: warning: unused variable 'announce_context' [-Wunused-variable] + 2152 | Type::Packet::context_types announce_context = Type::Packet::CONTEXT_NONE; + | ^~~~~~~~~~~~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp: In static member function 'static bool RNS::Transport::clear_cached_packet(const RNS::Bytes&)': +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp:2843:22: warning: unused variable 'success' [-Wunused-variable] + 2843 | bool success = RNS::Utilities::OS::remove_file(packet_cache_path); + | ^~~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp: In static member function 'static void RNS::Transport::path_request(const RNS::Bytes&, bool, const RNS::Interface&, const RNS::Bytes&, const RNS::Bytes&)': +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp:3297:30: warning: unused variable 'next_hop' [-Wunused-variable] + 3297 | const Bytes& next_hop = destination_entry._received_from; + | ^~~~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp:3260:14: warning: variable 'destination_exists_on_local_client' set but not used [-Wunused-but-set-variable] + 3260 | bool destination_exists_on_local_client = false; + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from /usr/local/src/microreticulum/microReticulum/src/Persistence/DestinationEntry.h:23, + from /usr/local/src/microreticulum/microReticulum/src/Transport.h:21: +.pio/libdeps/jp_native/microStore/include/microStore/FileStore.h: In instantiation of 'microStore::BasicFileStore::BasicFileStore(const Allocator&, uint32_t, uint8_t) [with Allocator = RNS::Utilities::Memory::ContainerAllocator; uint32_t = unsigned int; uint8_t = unsigned char]': +.pio/libdeps/jp_native/microStore/include/microStore/FileStore.h:125:181: required from 'microStore::BasicFileStore::BasicFileStore(uint32_t, uint8_t) [with Allocator = RNS::Utilities::Memory::ContainerAllocator; uint32_t = unsigned int; uint8_t = unsigned char]' + 125 | BasicFileStore(uint32_t segment_size = USTORE_DEFAULT_SEGMENT_SIZE, uint8_t segment_count = USTORE_DEFAULT_SEGMENT_COUNT) : BasicFileStore(Allocator{}, segment_size, segment_count) {} + | ^ +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp:147:102: required from here + 147 | /*static*/ PathStore Transport::_path_store(RNS_PATH_TABLE_SEGMENT_SIZE, RNS_PATH_TABLE_SEGMENT_COUNT); + | ^ +.pio/libdeps/jp_native/microStore/include/microStore/FileStore.h:1451:19: warning: 'microStore::BasicFileStore >::_alloc' will be initialized after [-Wreorder] + 1451 | Allocator _alloc; + | ^~~~~~ +.pio/libdeps/jp_native/microStore/include/microStore/FileStore.h:1432:18: warning: 'uint32_t microStore::BasicFileStore >::_segment_size' [-Wreorder] + 1432 | uint32_t _segment_size = USTORE_DEFAULT_SEGMENT_SIZE; + | ^~~~~~~~~~~~~ +.pio/libdeps/jp_native/microStore/include/microStore/FileStore.h:126:18: warning: when initialized here [-Wreorder] + 126 | explicit BasicFileStore(const Allocator& alloc, uint32_t segment_size = USTORE_DEFAULT_SEGMENT_SIZE, uint8_t segment_count = USTORE_DEFAULT_SEGMENT_COUNT) + | ^~~~~~~~~~~~~~ +.pio/libdeps/jp_native/microStore/include/microStore/FileStore.h: In instantiation of 'const char* microStore::BasicFileStore::bin_str(const uint8_t*, size_t) [with Allocator = RNS::Utilities::Memory::ContainerAllocator; uint8_t = unsigned char; size_t = long unsigned int]': +.pio/libdeps/jp_native/microStore/include/microStore/FileStore.h:327:61: required from 'bool microStore::BasicFileStore::get(const uint8_t*, uint8_t, uint8_t*, uint16_t*) [with Allocator = RNS::Utilities::Memory::ContainerAllocator; uint8_t = unsigned char; uint16_t = short unsigned int]' + 327 | printf("[ustore] get: fetching key %s with data size %u\n", bin_str(key, key_len), *size); + | ^~~~~~~ +.pio/libdeps/jp_native/microStore/include/microStore/FileStore.h:418:11: required from 'bool microStore::BasicFileStore::get(const std::vector&, std::vector&) [with Allocator = RNS::Utilities::Memory::ContainerAllocator]' + 418 | if (!get(key.data(), (uint8_t)key.size(), out.data(), &size)) { + | ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.pio/libdeps/jp_native/microStore/include/microStore/TypedStore.h:52:23: required from 'bool microStore::TypedStore::get(const Key&, Value&) [with Key = RNS::Bytes; Value = RNS::Persistence::DestinationEntry; Store = microStore::BasicFileStore >; KeyCodec = microStore::Codec; ValueCodec = microStore::Codec]' + 52 | if (!store.get(k, raw)) return false; + | ~~~~~~~~~^~~~~~~~ +/usr/local/src/microreticulum/microReticulum/src/Transport.cpp:856:21: required from here + 856 | _new_path_table.get(packet.destination_hash(), destination_entry); + | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.pio/libdeps/jp_native/microStore/include/microStore/FileStore.h:1016:35: warning: comparison of integer expressions of different signedness: 'int' and 'size_t' {aka 'long unsigned int'} [-Wsign-compare] + 1016 | for (int i = 0; i < len && i < USTORE_MAX_VALUE_LEN; ++i) { + | ~~^~~~~ +Archiving .pio/build/jp_native/libd98/libmicroReticulum.a +Indexing .pio/build/jp_native/libd98/libmicroReticulum.a +Linking .pio/build/jp_native/program +==================================================== [SUCCESS] Took 24.24 seconds ==================================================== + +Environment Status Duration +------------- -------- ------------ +jp_native SUCCESS 00:00:24.240 +===================================================== 1 succeeded in 00:00:24.240 ===================================================== + +*************************************************************************************************************************************** +We found 13.44MB of unnecessary PlatformIO system data (temporary files, unnecessary packages, etc.). +Use `pio system prune --dry-run` to list them or `pio system prune` to save disk space. +(pioenv) jlpoole@eos /usr/local/src/microreticulum/microReticulumTbeam $ exercises/306_microReticulum_ble_file_transfer_oled/.pio/build/jp_native/program +Exercise 306 jp native BLE file transfer console +Node=Node-JP-CLIENT +Selected file=little_boy_blue.txt bytes=942 chunk=32 interval_ms=500 repeat_rest_ms=10000 +[ustore] Initializing PosixFileSystem +[ustore] WARNING: FlashFSFileSystem check failed, reformatting! +BLE linux-central: could not power adapter: GDBus.Error:org.bluez.Error.Failed: Failed +Local SINGLE destination: f16c76446663db34420ad557e068964b +microReticulum ready; OLED skipped on host native build +BLE linux-central waiting for peer +BLE linux-central waiting for peer +BLE linux-central waiting for peer diff --git a/img/DSC_5347_v1.jpg b/img/DSC_5347_v1.jpg new file mode 100644 index 0000000..598402a Binary files /dev/null and b/img/DSC_5347_v1.jpg differ