From 6a48dcd61e2a49de94b6bc52d02f27b1887c364f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Ryb=C3=A1rsky?= Date: Tue, 13 Jan 2026 01:14:51 +0100 Subject: [PATCH] upd --- ...b8de1c376c1e7394fcaec2d3f2322ffc-.snapshot | 2 +- User/lib/config.c | 5 +- User/main.c | 23 +++-- User/meshcore/meshframing.c | 83 +++++++++++++++++-- User/meshcore/meshframing.h | 8 ++ User/meshcore/packets/anonymous.c | 1 + User/meshcore/packets/encrypted.c | 77 +++++++++-------- User/meshcore/packetstructs.h | 3 +- User/sx1262.c | 12 ++- User/sx1262.h | 1 + 10 files changed, 163 insertions(+), 52 deletions(-) diff --git a/.mrs/b8de1c376c1e7394fcaec2d3f2322ffc-.snapshot b/.mrs/b8de1c376c1e7394fcaec2d3f2322ffc-.snapshot index b8435f0..9053693 100644 --- a/.mrs/b8de1c376c1e7394fcaec2d3f2322ffc-.snapshot +++ b/.mrs/b8de1c376c1e7394fcaec2d3f2322ffc-.snapshot @@ -1 +1 @@ -{"partsEditor":{"editorpart.state":{"serializedGrid":{"root":{"type":"branch","data":[{"type":"leaf","data":{"id":1,"editors":[{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/config.c\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/config.c\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/config.c\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/config.h\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/config.h\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/config.h\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/main.c\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/main.c\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/main.c\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/encrypted.c\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/encrypted.c\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/encrypted.c\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/base64.c\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/base64.c\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/base64.c\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/util/hexdump.c\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/util/hexdump.c\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/util/hexdump.c\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/sx1262.h\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/sx1262.h\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/sx1262.h\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/util/hexdump.h\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/util/hexdump.h\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/util/hexdump.h\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/sx1262.c\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/sx1262.c\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/sx1262.c\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"}],"mru":[3,2,0,1,7,6,5,4,8]},"size":1853}],"size":761},"orientation":1,"width":1853,"height":761},"activeGroup":1,"mostRecentActiveGroups":[1]}},"textFileEditor":{"textEditorViewState":[["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/Peripheral/src/ch32v30x_adc.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1099,"column":5},"position":{"lineNumber":1099,"column":5}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1086,"column":1},"firstPositionDeltaTop":-6},"contributionsState":{"editor.contrib.folding":{"lineCount":1183,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":20654}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/adc/temperature.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":105,"column":26},"position":{"lineNumber":105,"column":26}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":11,"column":1},"firstPositionDeltaTop":-8},"contributionsState":{"editor.contrib.folding":{"lineCount":107,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":231}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/telemetry/telemetry.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":1,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/telemetry/telemetry.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":88,"column":13},"position":{"lineNumber":88,"column":16}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":69,"column":1},"firstPositionDeltaTop":-15},"contributionsState":{"editor.contrib.folding":{"lineCount":93,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":1340}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/custom.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":3,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/multipart.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":4,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/trace.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":4,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/ack.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":8,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/control.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":14,"column":44},"position":{"lineNumber":14,"column":44}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":16,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/custom.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":6,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/multipart.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":4,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/trace.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":6,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/system_ch32v30x.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":28,"column":1},"position":{"lineNumber":28,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":33,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/ch32v30x_conf.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":27,"column":27},"position":{"lineNumber":27,"column":27}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":46,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/ch32v30x_it.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":23,"column":17},"position":{"lineNumber":23,"column":17}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":247,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":33}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/ch32v30x_it.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":20,"column":1},"position":{"lineNumber":20,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":21,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/Peripheral/inc/ch32v30x_tim.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":24,"column":2},"position":{"lineNumber":24,"column":2}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":9,"column":1},"firstPositionDeltaTop":-19},"contributionsState":{"editor.contrib.folding":{"lineCount":518,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":212}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/system_ch32v30x.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":693,"column":2},"position":{"lineNumber":621,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":610,"column":1},"firstPositionDeltaTop":-7},"contributionsState":{"editor.contrib.folding":{"lineCount":1037,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":12220}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/FreeRTOS/include/mpu_wrappers.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":77,"column":60},"position":{"lineNumber":77,"column":69}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":58,"column":1},"firstPositionDeltaTop":-4},"contributionsState":{"editor.contrib.folding":{"lineCount":218,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":1177}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/FreeRTOS/include/task.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":1855,"column":6},"position":{"lineNumber":1855,"column":15}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1836,"column":1},"firstPositionDeltaTop":-4},"contributionsState":{"editor.contrib.folding":{"lineCount":3113,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":36737}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/FreeRTOS/portable/Common/mpu_wrappers.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":323,"column":15},"position":{"lineNumber":323,"column":15}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":304,"column":1},"firstPositionDeltaTop":-10},"contributionsState":{"editor.contrib.folding":{"lineCount":1483,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":6103}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/FreeRTOS/tasks.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":4440,"column":28},"position":{"lineNumber":4440,"column":41}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":4429,"column":1},"firstPositionDeltaTop":-9},"contributionsState":{"editor.contrib.folding":{"lineCount":5443,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":88602}}}}],["file:///usr/share/MRS2/MRS-linux-x64/resources/app/resources/linux/components/WCH/Toolchain/RISC-V%20Embedded%20GCC12/riscv-wch-elf/include/stdio.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":200,"column":5},"position":{"lineNumber":200,"column":11}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":188,"column":1},"firstPositionDeltaTop":-5},"contributionsState":{"editor.contrib.folding":{"lineCount":804,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":3745}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/FreeRTOS/include/FreeRTOS.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":1002,"column":43},"position":{"lineNumber":1002,"column":55}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":983,"column":1},"firstPositionDeltaTop":-4},"contributionsState":{"editor.contrib.folding":{"lineCount":1363,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":19644}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/FreeRTOS/include/mpu_prototypes.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":261,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/FreeRTOS/include/croutine.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":122,"column":4},"position":{"lineNumber":122,"column":16}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":113,"column":1},"firstPositionDeltaTop":-16},"contributionsState":{"editor.contrib.folding":{"lineCount":754,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":2256}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/Debug/debug.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":45,"column":12},"position":{"lineNumber":45,"column":18}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":26,"column":1},"firstPositionDeltaTop":-4},"contributionsState":{"editor.contrib.folding":{"lineCount":56,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":537}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/FreeRTOSConfig.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":102,"column":50},"position":{"lineNumber":102,"column":50}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":82,"column":1},"firstPositionDeltaTop":-13},"contributionsState":{"editor.contrib.folding":{"lineCount":157,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":1666}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/Peripheral/src/ch32v30x_rtc.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":73,"column":10},"position":{"lineNumber":73,"column":10}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":58,"column":1},"firstPositionDeltaTop":-12},"contributionsState":{"editor.contrib.folding":{"lineCount":316,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":1185}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/FreeRTOS/include/projdefs.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":43,"column":7},"position":{"lineNumber":38,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":30,"column":1},"firstPositionDeltaTop":-5},"contributionsState":{"editor.contrib.folding":{"lineCount":123,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":618}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/stats.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":6,"column":26},"position":{"lineNumber":6,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":6,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/util/log.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":34,"column":1},"position":{"lineNumber":34,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":34,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":33}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/advert.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":6,"column":39},"position":{"lineNumber":6,"column":39}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":14,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/stats.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":5,"column":16},"position":{"lineNumber":5,"column":16}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":11,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/ed25519/verify.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":59,"column":18},"position":{"lineNumber":59,"column":18}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":46,"column":1},"firstPositionDeltaTop":-6},"contributionsState":{"editor.contrib.folding":{"lineCount":112,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":939}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/ed25519/sign.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":63,"column":2},"position":{"lineNumber":63,"column":2}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":38,"column":1},"firstPositionDeltaTop":-2},"contributionsState":{"editor.contrib.folding":{"lineCount":65,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":775}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/anonymous.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":7,"column":8},"position":{"lineNumber":7,"column":8}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":11,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/control.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":126,"column":88},"position":{"lineNumber":126,"column":88}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":106,"column":1},"firstPositionDeltaTop":-9},"contributionsState":{"editor.contrib.folding":{"lineCount":150,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":2004}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/cifra/hmac.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":109,"column":5},"position":{"lineNumber":109,"column":16}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":88,"column":1},"firstPositionDeltaTop":-9},"contributionsState":{"editor.contrib.folding":{"lineCount":118,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":1695}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/cifra/handy.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":54,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":87,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":1040}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/cifra/prp.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":45,"column":1},"firstPositionDeltaTop":-12},"contributionsState":{"editor.contrib.folding":{"lineCount":65,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":881}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/cifra/sha2.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":70,"column":13},"position":{"lineNumber":70,"column":27}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":58,"column":1},"firstPositionDeltaTop":-15},"contributionsState":{"editor.contrib.folding":{"lineCount":236,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":1131}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/cifra/sha256.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":49,"column":6},"position":{"lineNumber":49,"column":20}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":28,"column":1},"firstPositionDeltaTop":-9},"contributionsState":{"editor.contrib.folding":{"lineCount":232,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":555}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/ack.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":19,"column":1},"position":{"lineNumber":36,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":9,"column":1},"firstPositionDeltaTop":-5},"contributionsState":{"editor.contrib.folding":{"lineCount":43,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":190}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/cifra/chash.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":19,"column":20},"position":{"lineNumber":19,"column":20}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":138,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/ed25519/license.txt",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":15,"column":1},"position":{"lineNumber":15,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":17,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/group.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":11,"column":52},"position":{"lineNumber":11,"column":52}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":13,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/group.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":101,"column":73},"position":{"lineNumber":101,"column":73}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":74,"column":1},"firstPositionDeltaTop":-17},"contributionsState":{"editor.contrib.folding":{"lineCount":107,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":1404}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/rtc/rtc.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":6,"column":24},"position":{"lineNumber":6,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":33},"contributionsState":{"editor.contrib.folding":{"lineCount":293,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":true,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/rtc/rtc.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":76,"column":1},"firstPositionDeltaTop":-6},"contributionsState":{"editor.contrib.folding":{"lineCount":97,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":1431}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/meshframing.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":28,"column":43},"position":{"lineNumber":28,"column":43}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":37,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/advert.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":176,"column":16},"position":{"lineNumber":176,"column":27}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":161,"column":1},"firstPositionDeltaTop":-1},"contributionsState":{"editor.contrib.folding":{"lineCount":209,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":3041}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/encrypted.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":27,"column":61},"position":{"lineNumber":27,"column":61}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":29,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":33}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/anonymous.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":212,"column":15},"position":{"lineNumber":212,"column":15}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":188,"column":1},"firstPositionDeltaTop":-12},"contributionsState":{"editor.contrib.folding":{"lineCount":217,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":3598}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/meshcore.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":14,"column":20},"position":{"lineNumber":14,"column":20}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":16,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/ed25519/ed_25519.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":4,"column":61},"position":{"lineNumber":4,"column":30}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":29,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/ed25519/keypair.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":6,"column":105},"position":{"lineNumber":6,"column":109}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":24,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/Peripheral/src/ch32v30x_rng.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":43,"column":10},"position":{"lineNumber":43,"column":10}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":19,"column":1},"firstPositionDeltaTop":-8},"contributionsState":{"editor.contrib.folding":{"lineCount":155,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":383}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/Ld/Link.ld",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":187,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":173,"column":1},"firstPositionDeltaTop":-6},"contributionsState":{"editor.contrib.folding":{"lineCount":187,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":3307}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/Peripheral/src/ch32v30x_flash.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1227,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1179,"column":1},"firstPositionDeltaTop":-11},"contributionsState":{"editor.contrib.folding":{"lineCount":1227,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":22426}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/meshframing.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":383,"column":44},"position":{"lineNumber":383,"column":44}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":361,"column":1},"firstPositionDeltaTop":-12},"contributionsState":{"editor.contrib.folding":{"lineCount":491,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":6852}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/adc/temperature.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":215,"column":5},"position":{"lineNumber":215,"column":15}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":194,"column":1},"firstPositionDeltaTop":-9},"contributionsState":{"editor.contrib.folding":{"lineCount":250,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":3676}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/meshcore.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":38,"column":15},"position":{"lineNumber":38,"column":17}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":48,"column":1},"firstPositionDeltaTop":-10},"contributionsState":{"editor.contrib.folding":{"lineCount":82,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":903}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packetstructs.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":157,"column":22},"position":{"lineNumber":157,"column":22}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":136,"column":1},"firstPositionDeltaTop":-9},"contributionsState":{"editor.contrib.folding":{"lineCount":248,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":2574}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/sx1262.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":90,"column":30},"position":{"lineNumber":90,"column":30}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":77,"column":1},"firstPositionDeltaTop":-18},"contributionsState":{"editor.contrib.folding":{"lineCount":980,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":1495}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/base64.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":24,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/util/hexdump.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":26,"column":82},"position":{"lineNumber":26,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":3,"column":1},"firstPositionDeltaTop":-18},"contributionsState":{"editor.contrib.folding":{"lineCount":39,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":56}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/sx1262.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":374,"column":33},"position":{"lineNumber":374,"column":33}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":355,"column":1},"firstPositionDeltaTop":-2},"contributionsState":{"editor.contrib.folding":{"lineCount":453,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":6728}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/util/hexdump.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":9,"column":6},"position":{"lineNumber":9,"column":21}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":11,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/config.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":50,"column":13},"position":{"lineNumber":50,"column":26}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":21,"column":1},"firstPositionDeltaTop":-9},"contributionsState":{"editor.contrib.folding":{"lineCount":79,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":389}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/config.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":244,"column":30},"position":{"lineNumber":244,"column":30}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":224,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":274,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":4237}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/main.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":150,"column":27},"position":{"lineNumber":150,"column":27}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":128,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":265,"foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":2413}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/encrypted.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":715,"column":59},"position":{"lineNumber":715,"column":59}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":696,"column":1},"firstPositionDeltaTop":-18},"contributionsState":{"editor.contrib.folding":{"lineCount":775,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false}}}]]},"labeledBookmarks":{"vscLabeledBookmarks.groups":[{"name":"bookmark","color":"865fc5ff","shape":"bookmark","iconText":"bookmark"}],"vscLabeledBookmarks.bookmarks":[],"vscLabeledBookmarks.activeGroup":"bookmark","vscLabeledBookmarks.hideInactiveGroups":false,"vscLabeledBookmarks.hideAll":false}} \ No newline at end of file +{"partsEditor":{"editorpart.state":{"serializedGrid":{"root":{"type":"branch","data":[{"type":"leaf","data":{"id":1,"editors":[{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/config.c\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/config.c\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/config.c\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/config.h\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/config.h\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/config.h\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packetstructs.h\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packetstructs.h\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packetstructs.h\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/main.c\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/main.c\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/main.c\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/rtc/rtc.c\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/rtc/rtc.c\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/rtc/rtc.c\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/encrypted.c\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/encrypted.c\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/encrypted.c\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/meshcore.c\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/meshcore.c\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/meshcore.c\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/anonymous.c\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/anonymous.c\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/anonymous.c\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/meshframing.c\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/meshframing.c\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/meshframing.c\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/sx1262.c\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/sx1262.c\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/sx1262.c\",\"scheme\":\"file\"},\"encoding\":\"utf8\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/Debug/debug.c\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/Debug/debug.c\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/Debug/debug.c\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/ack.c\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/ack.c\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/ack.c\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/meshframing.h\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/meshframing.h\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/meshframing.h\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/base64.c\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/base64.c\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/base64.c\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/util/hexdump.c\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/util/hexdump.c\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/util/hexdump.c\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/sx1262.h\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/sx1262.h\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/sx1262.h\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"},{"id":"workbench.editors.files.fileEditorInput","value":"{\"resourceJSON\":{\"$mid\":1,\"fsPath\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/util/hexdump.h\",\"external\":\"file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/util/hexdump.h\",\"path\":\"/home/bruno/Documents/Programming/projects/femtomesh_sw/User/util/hexdump.h\",\"scheme\":\"file\"},\"encoding\":\"gbk\"}"}],"mru":[9,8,5,3,0,15,6,10,2,7,12,11,1,4,16,14,13],"preview":10},"size":1853}],"size":761},"orientation":1,"width":1853,"height":761},"activeGroup":1,"mostRecentActiveGroups":[1]}},"textFileEditor":{"textEditorViewState":[["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/Peripheral/src/ch32v30x_adc.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1099,"column":5},"position":{"lineNumber":1099,"column":5}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1086,"column":1},"firstPositionDeltaTop":-6},"contributionsState":{"editor.contrib.folding":{"lineCount":1183,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":20654}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/adc/temperature.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":105,"column":26},"position":{"lineNumber":105,"column":26}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":11,"column":1},"firstPositionDeltaTop":-8},"contributionsState":{"editor.contrib.folding":{"lineCount":107,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":231}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/telemetry/telemetry.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":1,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/telemetry/telemetry.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":88,"column":13},"position":{"lineNumber":88,"column":16}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":69,"column":1},"firstPositionDeltaTop":-15},"contributionsState":{"editor.contrib.folding":{"lineCount":93,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":1340}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/custom.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":3,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/multipart.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":4,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/trace.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":4,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/ack.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":8,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/control.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":14,"column":44},"position":{"lineNumber":14,"column":44}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":16,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/custom.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":6,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/multipart.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":4,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/trace.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":6,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/system_ch32v30x.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":28,"column":1},"position":{"lineNumber":28,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":33,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/ch32v30x_conf.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":27,"column":27},"position":{"lineNumber":27,"column":27}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":46,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/ch32v30x_it.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":23,"column":17},"position":{"lineNumber":23,"column":17}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":247,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":33}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/ch32v30x_it.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":20,"column":1},"position":{"lineNumber":20,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":21,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/Peripheral/inc/ch32v30x_tim.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":24,"column":2},"position":{"lineNumber":24,"column":2}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":9,"column":1},"firstPositionDeltaTop":-19},"contributionsState":{"editor.contrib.folding":{"lineCount":518,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":212}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/system_ch32v30x.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":693,"column":2},"position":{"lineNumber":621,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":610,"column":1},"firstPositionDeltaTop":-7},"contributionsState":{"editor.contrib.folding":{"lineCount":1037,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":12220}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/FreeRTOS/include/mpu_wrappers.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":77,"column":60},"position":{"lineNumber":77,"column":69}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":58,"column":1},"firstPositionDeltaTop":-4},"contributionsState":{"editor.contrib.folding":{"lineCount":218,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":1177}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/FreeRTOS/include/task.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":1855,"column":6},"position":{"lineNumber":1855,"column":15}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1836,"column":1},"firstPositionDeltaTop":-4},"contributionsState":{"editor.contrib.folding":{"lineCount":3113,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":36737}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/FreeRTOS/portable/Common/mpu_wrappers.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":323,"column":15},"position":{"lineNumber":323,"column":15}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":304,"column":1},"firstPositionDeltaTop":-10},"contributionsState":{"editor.contrib.folding":{"lineCount":1483,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":6103}}}}],["file:///usr/share/MRS2/MRS-linux-x64/resources/app/resources/linux/components/WCH/Toolchain/RISC-V%20Embedded%20GCC12/riscv-wch-elf/include/stdio.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":200,"column":5},"position":{"lineNumber":200,"column":11}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":188,"column":1},"firstPositionDeltaTop":-5},"contributionsState":{"editor.contrib.folding":{"lineCount":804,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":3745}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/FreeRTOS/include/FreeRTOS.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":1002,"column":43},"position":{"lineNumber":1002,"column":55}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":983,"column":1},"firstPositionDeltaTop":-4},"contributionsState":{"editor.contrib.folding":{"lineCount":1363,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":19644}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/FreeRTOS/include/mpu_prototypes.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":261,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/FreeRTOS/include/croutine.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":122,"column":4},"position":{"lineNumber":122,"column":16}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":113,"column":1},"firstPositionDeltaTop":-16},"contributionsState":{"editor.contrib.folding":{"lineCount":754,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":2256}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/Debug/debug.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":45,"column":12},"position":{"lineNumber":45,"column":18}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":26,"column":1},"firstPositionDeltaTop":-4},"contributionsState":{"editor.contrib.folding":{"lineCount":56,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":537}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/FreeRTOSConfig.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":102,"column":50},"position":{"lineNumber":102,"column":50}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":82,"column":1},"firstPositionDeltaTop":-13},"contributionsState":{"editor.contrib.folding":{"lineCount":157,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":1666}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/Peripheral/src/ch32v30x_rtc.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":73,"column":10},"position":{"lineNumber":73,"column":10}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":58,"column":1},"firstPositionDeltaTop":-12},"contributionsState":{"editor.contrib.folding":{"lineCount":316,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":1185}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/FreeRTOS/include/projdefs.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":43,"column":7},"position":{"lineNumber":38,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":30,"column":1},"firstPositionDeltaTop":-5},"contributionsState":{"editor.contrib.folding":{"lineCount":123,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":618}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/stats.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":6,"column":26},"position":{"lineNumber":6,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":6,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/util/log.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":34,"column":1},"position":{"lineNumber":34,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":34,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":33}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/advert.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":6,"column":39},"position":{"lineNumber":6,"column":39}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":14,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/stats.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":5,"column":16},"position":{"lineNumber":5,"column":16}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":11,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/ed25519/verify.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":59,"column":18},"position":{"lineNumber":59,"column":18}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":46,"column":1},"firstPositionDeltaTop":-6},"contributionsState":{"editor.contrib.folding":{"lineCount":112,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":939}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/ed25519/sign.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":63,"column":2},"position":{"lineNumber":63,"column":2}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":38,"column":1},"firstPositionDeltaTop":-2},"contributionsState":{"editor.contrib.folding":{"lineCount":65,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":775}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/anonymous.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":7,"column":8},"position":{"lineNumber":7,"column":8}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":11,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/control.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":126,"column":88},"position":{"lineNumber":126,"column":88}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":106,"column":1},"firstPositionDeltaTop":-9},"contributionsState":{"editor.contrib.folding":{"lineCount":150,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":2004}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/cifra/hmac.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":109,"column":5},"position":{"lineNumber":109,"column":16}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":88,"column":1},"firstPositionDeltaTop":-9},"contributionsState":{"editor.contrib.folding":{"lineCount":118,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":1695}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/cifra/handy.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":54,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":87,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":1040}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/cifra/prp.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":45,"column":1},"firstPositionDeltaTop":-12},"contributionsState":{"editor.contrib.folding":{"lineCount":65,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":881}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/cifra/sha2.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":70,"column":13},"position":{"lineNumber":70,"column":27}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":58,"column":1},"firstPositionDeltaTop":-15},"contributionsState":{"editor.contrib.folding":{"lineCount":236,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":1131}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/cifra/sha256.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":49,"column":6},"position":{"lineNumber":49,"column":20}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":28,"column":1},"firstPositionDeltaTop":-9},"contributionsState":{"editor.contrib.folding":{"lineCount":232,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":555}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/cifra/chash.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":19,"column":20},"position":{"lineNumber":19,"column":20}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":138,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/ed25519/license.txt",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":15,"column":1},"position":{"lineNumber":15,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":17,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/group.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":11,"column":52},"position":{"lineNumber":11,"column":52}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":13,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/group.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":101,"column":73},"position":{"lineNumber":101,"column":73}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":74,"column":1},"firstPositionDeltaTop":-17},"contributionsState":{"editor.contrib.folding":{"lineCount":107,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":1404}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/rtc/rtc.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":76,"column":1},"firstPositionDeltaTop":-6},"contributionsState":{"editor.contrib.folding":{"lineCount":97,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":1431}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/advert.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":176,"column":16},"position":{"lineNumber":176,"column":27}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":161,"column":1},"firstPositionDeltaTop":-1},"contributionsState":{"editor.contrib.folding":{"lineCount":209,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":3041}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/encrypted.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":27,"column":61},"position":{"lineNumber":27,"column":61}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":29,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":33}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/meshcore.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":14,"column":20},"position":{"lineNumber":14,"column":20}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":16,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/ed25519/ed_25519.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":4,"column":61},"position":{"lineNumber":4,"column":30}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":29,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/ed25519/keypair.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":6,"column":105},"position":{"lineNumber":6,"column":109}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":24,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/Peripheral/src/ch32v30x_rng.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":43,"column":10},"position":{"lineNumber":43,"column":10}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":19,"column":1},"firstPositionDeltaTop":-8},"contributionsState":{"editor.contrib.folding":{"lineCount":155,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":383}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/Ld/Link.ld",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":187,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":173,"column":1},"firstPositionDeltaTop":-6},"contributionsState":{"editor.contrib.folding":{"lineCount":187,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":3307}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/Peripheral/src/ch32v30x_flash.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1227,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1179,"column":1},"firstPositionDeltaTop":-11},"contributionsState":{"editor.contrib.folding":{"lineCount":1227,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":22426}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/base64.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":1,"column":1},"position":{"lineNumber":1,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":24,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/util/hexdump.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":26,"column":82},"position":{"lineNumber":26,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":3,"column":1},"firstPositionDeltaTop":-18},"contributionsState":{"editor.contrib.folding":{"lineCount":39,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":56}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/util/hexdump.h",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":9,"column":6},"position":{"lineNumber":9,"column":21}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":0},"contributionsState":{"editor.contrib.folding":{"lineCount":11,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/rtc/rtc.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":75,"column":25},"position":{"lineNumber":75,"column":25}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":53,"column":1},"firstPositionDeltaTop":-12},"contributionsState":{"editor.contrib.folding":{"lineCount":293,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":1000}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/FreeRTOS/tasks.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":3708,"column":1},"position":{"lineNumber":3708,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":3681,"column":1},"firstPositionDeltaTop":-17},"contributionsState":{"editor.contrib.folding":{"lineCount":5443,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":69937}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/cifra/aes.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":386,"column":1},"position":{"lineNumber":386,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":365,"column":1},"firstPositionDeltaTop":-9},"contributionsState":{"editor.contrib.folding":{"lineCount":416,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":6925}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/Startup/startup_ch32v30x_D8C.S",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":329,"column":1},"position":{"lineNumber":329,"column":1}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":308,"column":1},"firstPositionDeltaTop":-9},"contributionsState":{"editor.contrib.folding":{"lineCount":375,"provider":"indent","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":5875}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/config.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":44,"column":13},"position":{"lineNumber":44,"column":13}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":23,"column":1},"firstPositionDeltaTop":-6},"contributionsState":{"editor.contrib.folding":{"lineCount":79,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":424}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/ack.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":27,"column":5},"position":{"lineNumber":27,"column":19}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":6,"column":1},"firstPositionDeltaTop":-9},"contributionsState":{"editor.contrib.folding":{"lineCount":43,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":104}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/meshframing.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":18,"column":16},"position":{"lineNumber":18,"column":16}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":10,"column":1},"firstPositionDeltaTop":-16},"contributionsState":{"editor.contrib.folding":{"lineCount":45,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":187}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/adc/temperature.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":239,"column":6},"position":{"lineNumber":239,"column":6}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":226,"column":1},"firstPositionDeltaTop":-11},"contributionsState":{"editor.contrib.folding":{"lineCount":250,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":4286}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/anonymous.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":145,"column":37},"position":{"lineNumber":145,"column":37}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":123,"column":1},"firstPositionDeltaTop":-9},"contributionsState":{"editor.contrib.folding":{"lineCount":218,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":2360}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packetstructs.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":5,"column":20},"position":{"lineNumber":5,"column":20}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":1,"column":1},"firstPositionDeltaTop":33},"contributionsState":{"editor.contrib.folding":{"lineCount":249,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":true,"scrollTop":0}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/Debug/debug.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":68,"column":6},"position":{"lineNumber":68,"column":6}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":55,"column":1},"firstPositionDeltaTop":-11},"contributionsState":{"editor.contrib.folding":{"lineCount":254,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":1070}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/meshcore.c",{"1":{"cursorState":[{"inSelectionMode":true,"selectionStart":{"lineNumber":38,"column":15},"position":{"lineNumber":38,"column":17}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":12,"column":1},"firstPositionDeltaTop":-6},"contributionsState":{"editor.contrib.folding":{"lineCount":82,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":248}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/sx1262.h",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":451,"column":24},"position":{"lineNumber":451,"column":24}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":432,"column":1},"firstPositionDeltaTop":-13},"contributionsState":{"editor.contrib.folding":{"lineCount":454,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":8202}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/lib/config.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":226,"column":55},"position":{"lineNumber":226,"column":55}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":207,"column":1},"firstPositionDeltaTop":-16},"contributionsState":{"editor.contrib.folding":{"lineCount":276,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":3930}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/main.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":165,"column":18},"position":{"lineNumber":165,"column":18}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":141,"column":1},"firstPositionDeltaTop":-9},"contributionsState":{"editor.contrib.folding":{"lineCount":274,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":2669}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/packets/encrypted.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":59,"column":6},"position":{"lineNumber":59,"column":6}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":46,"column":1},"firstPositionDeltaTop":-1},"contributionsState":{"editor.contrib.folding":{"lineCount":798,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":856}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/meshcore/meshframing.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":327,"column":10},"position":{"lineNumber":327,"column":10}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":313,"column":1},"firstPositionDeltaTop":-3},"contributionsState":{"editor.contrib.folding":{"lineCount":564,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":true,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":5931}}}}],["file:///home/bruno/Documents/Programming/projects/femtomesh_sw/User/sx1262.c",{"1":{"cursorState":[{"inSelectionMode":false,"selectionStart":{"lineNumber":747,"column":19},"position":{"lineNumber":747,"column":19}}],"viewState":{"scrollLeft":0,"firstPosition":{"lineNumber":732,"column":1},"firstPositionDeltaTop":-11},"contributionsState":{"editor.contrib.folding":{"lineCount":988,"provider":"syntax","foldedImports":false},"editor.contrib.wordHighlighter":false,"editor.contrib.findController":{"widgetViewZoneVisible":false,"scrollTop":13900}}}}]]},"labeledBookmarks":{"vscLabeledBookmarks.groups":[{"name":"bookmark","color":"865fc5ff","shape":"bookmark","iconText":"bookmark"}],"vscLabeledBookmarks.bookmarks":[],"vscLabeledBookmarks.activeGroup":"bookmark","vscLabeledBookmarks.hideInactiveGroups":false,"vscLabeledBookmarks.hideAll":false}} \ No newline at end of file diff --git a/User/lib/config.c b/User/lib/config.c index 97411ca..1fdaa13 100644 --- a/User/lib/config.c +++ b/User/lib/config.c @@ -212,7 +212,8 @@ void populateDefaults() { uint8_t seed[32]; //memcpy(seed, "vFt0FRugSOeqnkshImMCVfgHM5vBxz4", 32); //chat node identity - memcpy (seed, "vFt0FRugSOeqnkshImMCVfgHM5vBxz3", 32); // repeater identity + //memcpy (seed, "vFt0FRugSOeqnkshImMCVfgHM5vBxz3", 32); // repeater identity + memcpy (seed, "vFt0FRugSOeqnkshImMCVfgHM5vBxz0", 32); // repeater identity // genSeed(seed); //random identity ed25519_create_keypair (persistent.pubkey, persistent.privkey, seed); @@ -222,7 +223,7 @@ void populateDefaults() { persistent.nodeType = NODE_TYPE_REPEATER; memset (persistent.password, 0, sizeof (persistent.password)); strcpy (persistent.password, "hesielko"); - strcpy (persistent.nodeName, "BRN RiscVpeater"); + strcpy (persistent.nodeName, "BRN WCHNode RISCV"); //strcpy (persistent.nodeName, "BRN RiscVnode"); persistent.adcMultiplier = 0; diff --git a/User/main.c b/User/main.c index 22d2d0b..638cab5 100644 --- a/User/main.c +++ b/User/main.c @@ -82,10 +82,16 @@ TaskHandle_t Task2Task_Handler; // uint8_t bufIn[260]; +uint8_t bootedUp = 0; + void task2_task (void *pvParameters) { char x; MESH_LOGD (TAG, "Task2 boot"); while (1) { + if (bootedUp == 0) { + vTaskDelay(pdMS_TO_TICKS(1000)); + continue; + } if (USART_GetFlagStatus (USART1, USART_FLAG_RXNE) == SET) { x = USART_ReceiveData (USART1); if (x == 'M') { @@ -147,14 +153,17 @@ void task1_task (void *pvParameters) { memset (&stats, 0, sizeof (stats)); - DiscoverRequestPayload discReq; - discReq.prefixOnly = 0; - discReq.since = 0; - discReq.tag = RTC_GetCounter(); - discReq.typeFilter = 0xFF; - sendDiscoverRequest (&discReq); + /* + DiscoverRequestPayload discReq; + discReq.prefixOnly = 0; + discReq.since = 0; + discReq.tag = RTC_GetCounter(); + discReq.typeFilter = 0xFF; + sendDiscoverRequest (&discReq); - sendAdvert (1); + */ + sendAdvert (0); + bootedUp = 1; while (1) { start_time = xTaskGetTickCount(); diff --git a/User/meshcore/meshframing.c b/User/meshcore/meshframing.c index 14e0122..20fead5 100644 --- a/User/meshcore/meshframing.c +++ b/User/meshcore/meshframing.c @@ -218,19 +218,28 @@ void printFrameHeader (const FrameStruct *frame) { } void LoRaTransmit (const FrameStruct *frame) { - uint8_t len = 2; // header + path_len + addToNotReTX(frame); + uint16_t len = 2; // header + path_len - if ((frame->header & ROUTE_TYPE_MASK) == ROUTE_TYPE_TRANSPORT_DIRECT || - (frame->header & ROUTE_TYPE_MASK) == ROUTE_TYPE_TRANSPORT_FLOOD) { + if ( + ((frame->header & ROUTE_TYPE_MASK) == ROUTE_TYPE_TRANSPORT_DIRECT) || + ((frame->header & ROUTE_TYPE_MASK) == ROUTE_TYPE_TRANSPORT_FLOOD) + ) { len += 4; } len += frame->path.pathLen; len += frame->payloadLen; + if (len > 255) { + MESH_LOGE(TAG, "%d is too big for sx1262", len); + } + uint16_t irqStatus; char rv = 0; + size_t outCounter = 0; + if (txActive == 0) { txActive = 1; @@ -262,6 +271,7 @@ void LoRaTransmit (const FrameStruct *frame) { switch (state) { case 0: // header out = frame->header; + outCounter = 0; state = ((frame->header & ROUTE_TYPE_MASK) == ROUTE_TYPE_TRANSPORT_DIRECT || (frame->header & ROUTE_TYPE_MASK) == ROUTE_TYPE_TRANSPORT_FLOOD) ? 1 @@ -293,6 +303,7 @@ void LoRaTransmit (const FrameStruct *frame) { } while (SPI_I2S_GetFlagStatus (SPI1, SPI_I2S_FLAG_TXE) == RESET); + outCounter++; SPI_I2S_SendData (SPI1, out); while (SPI_I2S_GetFlagStatus (SPI1, SPI_I2S_FLAG_RXNE) == RESET); @@ -303,14 +314,30 @@ void LoRaTransmit (const FrameStruct *frame) { WaitForIdle (BUSY_WAIT, "end WriteBuffer", 0); - SetTx (5000); + MESH_LOGD(TAG, + "TX payloadLen=%u pathLen=%u totalLen=%u header=0x%02X", + frame->payloadLen, + frame->path.pathLen, + len, + frame->header); + + + MESH_LOGD(TAG, "Starting tx mode, sent %d, should %d", outCounter, len); + + SetTx (3000); + + MESH_LOGD(TAG, "SetTx running"); irqStatus = GetIrqStatus(); while (!(irqStatus & (SX126X_IRQ_TX_DONE | SX126X_IRQ_TIMEOUT))) { - vTaskDelay (1); + vTaskDelay (pdMS_TO_TICKS(10)); irqStatus = GetIrqStatus(); + if (debugPrint) { + MESH_LOGD(TAG, "irq: 0x%04X", irqStatus); + } } + MESH_LOGD(TAG, "Finished tx"); txActive = 0; SetRx (0xFFFFFF); @@ -380,8 +407,54 @@ void sendFrame (const FrameStruct *frame) { } */ +KnownPacketHistoryType dontReTXHistory[NON_RETX_HISTORY]; +uint8_t dontReTXHistoryIndex = 0; + +void getFrameHash(const FrameStruct *frame, uint8_t *hash) { + cf_sha256_context ctx; + + // 1. Initialize + cf_sha256_init (&ctx); + + // 2. Feed in your data + cf_sha256_update (&ctx, frame->payload, frame->payloadLen); + + // 3. Compute digest + cf_sha256_digest (&ctx, hash); +} + +void addToNotReTX(const FrameStruct *frame) { + KnownPacketHistoryType * knownHist = &(dontReTXHistory[dontReTXHistoryIndex]); + + getFrameHash(frame, knownHist->hash); + knownHist->populated = 1; + + dontReTXHistoryIndex++; + if (dontReTXHistoryIndex >= NON_RETX_HISTORY) { + dontReTXHistoryIndex = 0; + } +} + void retransmitFrame (FrameStruct *frame) { + uint8_t hashTmp[CF_SHA256_HASHSZ]; + getFrameHash(frame, hashTmp); + + uint8_t found = 0; + for (uint8_t i = 0; i < NON_RETX_HISTORY; i++) { + KnownPacketHistoryType * knownHist = &(dontReTXHistory[dontReTXHistoryIndex]); + if (knownHist->populated == 0) { + continue; + } + if (memcmp(knownHist->hash, hashTmp, CF_SHA256_HASHSZ) == 0) { + found = 1; + break; + } + } + if (found) { + return; + } + /* -------- FLOOD -------- */ if (frame->header & ROUTE_TYPE_FLOOD || frame->header & ROUTE_TYPE_TRANSPORT_FLOOD) { diff --git a/User/meshcore/meshframing.h b/User/meshcore/meshframing.h index c94341f..0a55fe4 100644 --- a/User/meshcore/meshframing.h +++ b/User/meshcore/meshframing.h @@ -11,6 +11,7 @@ #define KEY_SIZE 16 // 128-bit AES #define HMAC_SIZE 2 // meshcore size #define MAX_FLOOD_TTL 64 +#define NON_RETX_HISTORY 64 int ReadFrame (FrameStruct *frame, int8_t *rssiPacket, int8_t *snrPacket, int8_t *rawSnr); @@ -33,5 +34,12 @@ int encrypt_then_mac (const uint8_t *aes_key, const uint8_t keySize, const uint8 int mac_then_decrypt (const uint8_t *aes_key, const uint8_t keySize, const uint8_t *input, size_t ilen, uint8_t *plaintext); +void addToNotReTX(const FrameStruct *frame); + +typedef struct KnownPacketHistoryType { + uint8_t hash[32]; + uint8_t populated; +} KnownPacketHistoryType; + #endif \ No newline at end of file diff --git a/User/meshcore/packets/anonymous.c b/User/meshcore/packets/anonymous.c index f35e757..24e019b 100644 --- a/User/meshcore/packets/anonymous.c +++ b/User/meshcore/packets/anonymous.c @@ -142,6 +142,7 @@ void decodeAnonReq (const FrameStruct *frame) { if (foundNode == NULL) { foundNode = getNextNode(); strcpy (foundNode->name, "Anonymous node"); + foundNode->path.pathLen = 0; memcpy (foundNode->pubKey, anonReq.pubKey, sizeof (foundNode->pubKey)); ed25519_key_exchange ((unsigned char *)foundNode->secret, anonReq.pubKey, persistent.privkey); foundNode->gps_latitude = 0; diff --git a/User/meshcore/packets/encrypted.c b/User/meshcore/packets/encrypted.c index 1194b60..a3712b6 100644 --- a/User/meshcore/packets/encrypted.c +++ b/User/meshcore/packets/encrypted.c @@ -24,7 +24,8 @@ void sendEncryptedFrame (const NodeEntry *targetNode, uint8_t payloadType, const uint8_t *plain, size_t plainLen) { FrameStruct frame; - uint8_t offset = 0; + memset(&frame, 0, sizeof(frame)); + size_t offset = 0; // 1. Header frame.header = @@ -46,6 +47,8 @@ void sendEncryptedFrame (const NodeEntry *targetNode, uint8_t payloadType, const frame.payload + offset, &encLen); + MESH_LOGD(TAG, "Plain len: %d, enc len: %d", plainLen, encLen); + offset += encLen; // 5. Finalize @@ -54,6 +57,7 @@ void sendEncryptedFrame (const NodeEntry *targetNode, uint8_t payloadType, const hexdump ("Encrypted frame", frame.payload, frame.payloadLen); LoRaTransmit (&frame); + MESH_LOGD (TAG, "Encrypted frame tx finish\n"); } void sendEncryptedTextMessage (const NodeEntry *targetNode, const PlainTextMessagePayload *msg) { @@ -317,52 +321,57 @@ void parseEncryptedPayload (const EncryptedPayloadStruct *enc) { Response resp; resp.tag = req.timestamp; enc->remNode->last_seen_rt = req.timestamp; - uint8_t index2 = 0; - resp.data[index2++] = TELEM_CHANNEL_SELF; - resp.data[index2++] = LPP_TEMPERATURE; + resp.dataLen = 0; + resp.data[resp.dataLen++] = TELEM_CHANNEL_SELF; + resp.data[resp.dataLen++] = LPP_TEMPERATURE; int16_t dataTemp = getDeciTemperature(); - printf ("The temperature is %d decicelsius\n", dataTemp); + resp.data[resp.dataLen++] = (dataTemp >> 8) & 0xFF; - resp.data[index2++] = (dataTemp >> 8) & 0xFF; + resp.data[resp.dataLen++] = dataTemp & 0xFF; - resp.data[index2++] = dataTemp & 0xFF; - - - resp.data[index2++] = TELEM_CHANNEL_SELF; - resp.data[index2++] = LPP_VOLTAGE; + resp.data[resp.dataLen++] = TELEM_CHANNEL_SELF; + resp.data[resp.dataLen++] = LPP_VOLTAGE; int16_t dataVolt = stats.millivolts / 10; - resp.data[index2++] = (dataVolt >> 8) & 0xFF; + resp.data[resp.dataLen++] = (dataVolt >> 8) & 0xFF; - resp.data[index2++] = dataVolt & 0xFF; + resp.data[resp.dataLen++] = dataVolt & 0xFF; + + resp.data[resp.dataLen++] = 2; + resp.data[resp.dataLen++] = LPP_VOLTAGE; + + dataVolt = 1973; + + resp.data[resp.dataLen++] = (dataVolt >> 8) & 0xFF; + + resp.data[resp.dataLen++] = dataVolt & 0xFF; if (enc->remNode->authenticated) { - encode_gps (TELEM_CHANNEL_SELF, persistent.latitude / 1000000.0f, persistent.longitude / 1000000.0f, persistent.altitude / 100.0f, &(resp.data[index2])); - // encode_gps(TELEM_CHANNEL_SELF, 48.1909f, 17.0303f, 234.0f, &(resp.data[index2])); - - index2 += LPP_GPS_SIZE; - } - - if (enc->remNode->authenticated) { - - resp.data[index2++] = 2; - resp.data[index2++] = LPP_TEMPERATURE; + resp.data[resp.dataLen++] = 2; // channel 2 + resp.data[resp.dataLen++] = LPP_TEMPERATURE; int16_t jokeTemp = 6942; - resp.data[index2++] = (jokeTemp >> 8) & 0xFF; + resp.data[resp.dataLen++] = (jokeTemp >> 8) & 0xFF; - resp.data[index2++] = jokeTemp & 0xFF; + resp.data[resp.dataLen++] = jokeTemp & 0xFF; - resp.dataLen = index2; + + encode_gps (TELEM_CHANNEL_SELF, persistent.latitude / 1000000.0f, persistent.longitude / 1000000.0f, persistent.altitude / 100.0f, &(resp.data[resp.dataLen])); + // encode_gps(TELEM_CHANNEL_SELF, 48.1909f, 17.0303f, 234.0f, &(resp.data[resp.dataLen])); + + resp.dataLen += LPP_GPS_SIZE + 2; } + sendEncryptedResponse (enc->remNode, &resp); + printf ("Sent response, the temperature is %d decicelsius\n", dataTemp); + break; } case REQUEST_GET_MIN_MAX_AVG: @@ -421,8 +430,8 @@ void parseEncryptedPayload (const EncryptedPayloadStruct *enc) { } } -//#define STR_EQ_LIT(s, lit) (memcmp ((s), (lit), sizeof (lit) - 1) == 0) -#define STR_EQ_LIT(s, lit) (strcmp(s, lit) == 0) +// #define STR_EQ_LIT(s, lit) (memcmp ((s), (lit), sizeof (lit) - 1) == 0) +#define STR_EQ_LIT(s, lit) (strcmp (s, lit) == 0) void processCommand (char *cmd, NodeEntry *remNode) { PlainTextMessagePayload replyPayload; @@ -493,11 +502,11 @@ void processCommand (char *cmd, NodeEntry *remNode) { } } - /* + /* else if (STR_EQ_LIT (cmd, "tempradio ")) { char tmp[64]; strcpy (tmp, &cmd[10]); - + const char *parts[5]; int num = mesh_ParseTextParts (tmp, parts, 5); // assume helper float freq = num > 0 ? strtof (parts[0], NULL) : 0.0f; @@ -575,9 +584,9 @@ void processCommand (char *cmd, NodeEntry *remNode) { */ } else if (memcmp (config, "public.key", 10) == 0) { strcpy (reply, "> "); - hexdump_compact(persistent.pubkey, sizeof(persistent.pubkey), &(reply[2]), 70); + hexdump_compact (persistent.pubkey, sizeof (persistent.pubkey), &(reply[2]), 70); } else if (memcmp (config, "role", 4) == 0) { - sprintf (reply, "> %s", getStringRole(persistent.nodeType)); + sprintf (reply, "> %s", getStringRole (persistent.nodeType)); } else if (memcmp (config, "adc.multiplier", 14) == 0) { sprintf (reply, "> %.3f", persistent.adcMultiplier); } else { @@ -613,7 +622,7 @@ void processCommand (char *cmd, NodeEntry *remNode) { persistent.allowReadOnly = 0; strcpy (reply, "OK"); } - //savePrefs(); + // savePrefs(); /* } else if (memcmp (config, "flood.advert.interval ", 22) == 0) { int hours = _atoi (&config[22]); @@ -735,7 +744,7 @@ void processCommand (char *cmd, NodeEntry *remNode) { } // savePrefs(); strcpy (reply, "OK - reboot to apply"); - + } else if (memcmp (config, "adc.multiplier ", 15) == 0) { persistent.adcMultiplier = atof (&config[15]); if (persistent.adcMultiplier == 0.0f) { diff --git a/User/meshcore/packetstructs.h b/User/meshcore/packetstructs.h index 31a54fd..4a421be 100644 --- a/User/meshcore/packetstructs.h +++ b/User/meshcore/packetstructs.h @@ -2,6 +2,7 @@ #define PACKETSTRUCTS_FILE #include +#include "stddef.h" #define ROUTE_TYPE_MASK 0x03 #define PAYLOAD_TYPE_MASK 0x3C #define PAYLOAD_VERSION_MASK 0xC0 @@ -90,7 +91,7 @@ typedef struct FrameStruct { uint8_t header; uint8_t transportCodes[4]; Path path; - uint8_t payloadLen; + size_t payloadLen; uint8_t payload[184]; } FrameStruct; diff --git a/User/sx1262.c b/User/sx1262.c index 4b6eea2..76c9cf9 100644 --- a/User/sx1262.c +++ b/User/sx1262.c @@ -14,7 +14,7 @@ uint8_t PacketParams[6]; char txActive; int txLost = 0; -static char debugPrint; +char debugPrint; // Arduino compatible macros #define delayMicroseconds(us) esp_rom_delay_us (us) @@ -25,6 +25,7 @@ void LoRaError (int error) { MESH_LOGE (TAG, "LoRaErrorDefault=%d", error); } while (1) { + printf("GONE WRONG\n"); vTaskDelay (1); } } @@ -706,11 +707,18 @@ void SetTx (uint32_t timeoutInMs) { buf[2] = (uint8_t)(tout & 0xFF); WriteCommand (SX126X_CMD_SET_TX, buf, 3); // 0x83 - for (int retry = 0; retry < 10; retry++) { + if (debugPrint) { + MESH_LOGD(TAG, "Written command, retrying"); + } + + for (int retry = 0; retry < 20; retry++) { if ((GetStatus() & 0x70) == 0x60) break; vTaskDelay (1); } + if (debugPrint) { + MESH_LOGI(TAG, "Broke out"); + } if ((GetStatus() & 0x70) != 0x60) { MESH_LOGE (TAG, "SetTx Illegal Status"); LoRaError (ERR_INVALID_SETTX_STATE); diff --git a/User/sx1262.h b/User/sx1262.h index 4cc2225..a938e5b 100644 --- a/User/sx1262.h +++ b/User/sx1262.h @@ -448,5 +448,6 @@ void LoRaError (int error); extern uint8_t PacketParams[6]; extern char txActive; extern int txLost; +extern char debugPrint; #endif