mirror of
https://github.com/meshcore-dev/MeshCore.git
synced 2026-04-20 22:13:47 +00:00
Merge pull request #353 from hank/mymesh-refactor2
MyMesh Refactor and Advert Button
This commit is contained in:
commit
accbe3b307
11 changed files with 1872 additions and 1597 deletions
84
.clang-format
Normal file
84
.clang-format
Normal file
|
|
@ -0,0 +1,84 @@
|
||||||
|
# .clang-format
|
||||||
|
Language: Cpp
|
||||||
|
AccessModifierOffset: -2
|
||||||
|
AlignAfterOpenBracket: Align
|
||||||
|
AlignConsecutiveAssignments: false
|
||||||
|
AlignConsecutiveDeclarations: false
|
||||||
|
AlignConsecutiveMacros:
|
||||||
|
Enabled: true
|
||||||
|
AcrossEmptyLines: true
|
||||||
|
AcrossComments: true
|
||||||
|
AlignOperands: true
|
||||||
|
AlignTrailingComments: true
|
||||||
|
AllowAllParametersOfDeclarationOnNextLine: false
|
||||||
|
AllowShortBlocksOnASingleLine: false
|
||||||
|
AllowShortCaseLabelsOnASingleLine: false
|
||||||
|
AllowShortFunctionsOnASingleLine: Inline
|
||||||
|
AllowShortIfStatementsOnASingleLine: true
|
||||||
|
AllowShortLoopsOnASingleLine: false
|
||||||
|
AlwaysBreakAfterDefinitionReturnType: None
|
||||||
|
AlwaysBreakAfterReturnType: None
|
||||||
|
AlwaysBreakBeforeMultilineStrings: false
|
||||||
|
AlwaysBreakTemplateDeclarations: No
|
||||||
|
BinPackArguments: true
|
||||||
|
BinPackParameters: true
|
||||||
|
BraceWrapping:
|
||||||
|
AfterClass: false
|
||||||
|
AfterControlStatement: false
|
||||||
|
AfterEnum: false
|
||||||
|
AfterFunction: false
|
||||||
|
AfterNamespace: false
|
||||||
|
AfterObjCDeclaration: false
|
||||||
|
AfterStruct: false
|
||||||
|
AfterUnion: false
|
||||||
|
BeforeCatch: true
|
||||||
|
BeforeElse: true
|
||||||
|
IndentBraces: false
|
||||||
|
BreakBeforeBinaryOperators: None
|
||||||
|
BreakBeforeBraces: Attach
|
||||||
|
BreakBeforeTernaryOperators: true
|
||||||
|
BreakConstructorInitializersBeforeComma: false
|
||||||
|
ColumnLimit: 110
|
||||||
|
CommentPragmas: '^ IWYU pragma:'
|
||||||
|
CompactNamespaces: false
|
||||||
|
ConstructorInitializerAllOnOneLineOrOnePerLine: false
|
||||||
|
Cpp11BracedListStyle: false
|
||||||
|
DerivePointerAlignment: false
|
||||||
|
DisableFormat: false
|
||||||
|
IncludeBlocks: Regroup
|
||||||
|
IndentCaseLabels: false
|
||||||
|
IndentPPDirectives: None
|
||||||
|
IndentWidth: 2
|
||||||
|
IndentWrappedFunctionNames: false
|
||||||
|
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||||
|
MacroBlockBegin: ''
|
||||||
|
MacroBlockEnd: ''
|
||||||
|
MaxEmptyLinesToKeep: 1
|
||||||
|
NamespaceIndentation: None
|
||||||
|
ObjCBinPackProtocolList: Auto
|
||||||
|
PenaltyBreakBeforeFirstCallParameter: 19
|
||||||
|
PenaltyBreakComment: 300
|
||||||
|
PenaltyBreakFirstLessLess: 120
|
||||||
|
PenaltyBreakString: 1000
|
||||||
|
PenaltyExcessCharacter: 100000
|
||||||
|
PenaltyReturnTypeOnItsOwnLine: 60
|
||||||
|
PointerAlignment: Right
|
||||||
|
ReflowComments: true
|
||||||
|
SortIncludes: true
|
||||||
|
SpaceAfterCStyleCast: false
|
||||||
|
SpaceAfterTemplateKeyword: true
|
||||||
|
SpaceBeforeAssignmentOperators: true
|
||||||
|
SpaceBeforeCtorInitializerColon: true
|
||||||
|
SpaceBeforeInheritanceColon: true
|
||||||
|
SpaceBeforeParens: ControlStatements
|
||||||
|
SpaceInEmptyParentheses: false
|
||||||
|
SpacesBeforeTrailingComments: 1
|
||||||
|
SpacesInAngles: false
|
||||||
|
SpacesInContainerLiterals: false
|
||||||
|
SpacesInCStyleCastParentheses: false
|
||||||
|
SpacesInParentheses: false
|
||||||
|
SpacesInSquareBrackets: false
|
||||||
|
Standard: Auto
|
||||||
|
TabWidth: 2
|
||||||
|
UseTab: Never
|
||||||
|
AlignEscapedNewlines: LeftWithLastLine
|
||||||
1536
examples/companion_radio/MyMesh.cpp
Normal file
1536
examples/companion_radio/MyMesh.cpp
Normal file
File diff suppressed because it is too large
Load diff
221
examples/companion_radio/MyMesh.h
Normal file
221
examples/companion_radio/MyMesh.h
Normal file
|
|
@ -0,0 +1,221 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <Mesh.h>
|
||||||
|
#ifdef DISPLAY_CLASS
|
||||||
|
#include "UITask.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*------------ Frame Protocol --------------*/
|
||||||
|
#define FIRMWARE_VER_CODE 5
|
||||||
|
|
||||||
|
#ifndef FIRMWARE_BUILD_DATE
|
||||||
|
#define FIRMWARE_BUILD_DATE "24 May 2025"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef FIRMWARE_VERSION
|
||||||
|
#define FIRMWARE_VERSION "v1.6.2"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
|
||||||
|
#include <InternalFileSystem.h>
|
||||||
|
#elif defined(RP2040_PLATFORM)
|
||||||
|
#include <LittleFS.h>
|
||||||
|
#elif defined(ESP32)
|
||||||
|
#include <SPIFFS.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "NodePrefs.h"
|
||||||
|
|
||||||
|
#include <RTClib.h>
|
||||||
|
#include <helpers/ArduinoHelpers.h>
|
||||||
|
#include <helpers/BaseSerialInterface.h>
|
||||||
|
#include <helpers/IdentityStore.h>
|
||||||
|
#include <helpers/SimpleMeshTables.h>
|
||||||
|
#include <helpers/StaticPoolPacketManager.h>
|
||||||
|
#include <target.h>
|
||||||
|
|
||||||
|
/* ---------------------------------- CONFIGURATION ------------------------------------- */
|
||||||
|
|
||||||
|
#ifndef LORA_FREQ
|
||||||
|
#define LORA_FREQ 915.0
|
||||||
|
#endif
|
||||||
|
#ifndef LORA_BW
|
||||||
|
#define LORA_BW 250
|
||||||
|
#endif
|
||||||
|
#ifndef LORA_SF
|
||||||
|
#define LORA_SF 10
|
||||||
|
#endif
|
||||||
|
#ifndef LORA_CR
|
||||||
|
#define LORA_CR 5
|
||||||
|
#endif
|
||||||
|
#ifndef LORA_TX_POWER
|
||||||
|
#define LORA_TX_POWER 20
|
||||||
|
#endif
|
||||||
|
#ifndef MAX_LORA_TX_POWER
|
||||||
|
#define MAX_LORA_TX_POWER LORA_TX_POWER
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef MAX_CONTACTS
|
||||||
|
#define MAX_CONTACTS 100
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef OFFLINE_QUEUE_SIZE
|
||||||
|
#define OFFLINE_QUEUE_SIZE 16
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef BLE_NAME_PREFIX
|
||||||
|
#define BLE_NAME_PREFIX "MeshCore-"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <helpers/BaseChatMesh.h>
|
||||||
|
|
||||||
|
#define SEND_TIMEOUT_BASE_MILLIS 500
|
||||||
|
#define FLOOD_SEND_TIMEOUT_FACTOR 16.0f
|
||||||
|
#define DIRECT_SEND_PERHOP_FACTOR 6.0f
|
||||||
|
#define DIRECT_SEND_PERHOP_EXTRA_MILLIS 250
|
||||||
|
#define LAZY_CONTACTS_WRITE_DELAY 5000
|
||||||
|
|
||||||
|
#define PUBLIC_GROUP_PSK "izOH6cXN6mrJ5e26oRXNcg=="
|
||||||
|
|
||||||
|
// these are _pushed_ to client app at any time
|
||||||
|
#define PUSH_CODE_ADVERT 0x80
|
||||||
|
#define PUSH_CODE_PATH_UPDATED 0x81
|
||||||
|
#define PUSH_CODE_SEND_CONFIRMED 0x82
|
||||||
|
#define PUSH_CODE_MSG_WAITING 0x83
|
||||||
|
#define PUSH_CODE_RAW_DATA 0x84
|
||||||
|
#define PUSH_CODE_LOGIN_SUCCESS 0x85
|
||||||
|
#define PUSH_CODE_LOGIN_FAIL 0x86
|
||||||
|
#define PUSH_CODE_STATUS_RESPONSE 0x87
|
||||||
|
#define PUSH_CODE_LOG_RX_DATA 0x88
|
||||||
|
#define PUSH_CODE_TRACE_DATA 0x89
|
||||||
|
#define PUSH_CODE_NEW_ADVERT 0x8A
|
||||||
|
#define PUSH_CODE_TELEMETRY_RESPONSE 0x8B
|
||||||
|
|
||||||
|
#define ERR_CODE_UNSUPPORTED_CMD 1
|
||||||
|
#define ERR_CODE_NOT_FOUND 2
|
||||||
|
#define ERR_CODE_TABLE_FULL 3
|
||||||
|
#define ERR_CODE_BAD_STATE 4
|
||||||
|
#define ERR_CODE_FILE_IO_ERROR 5
|
||||||
|
#define ERR_CODE_ILLEGAL_ARG 6
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#define REQ_TYPE_GET_STATUS 0x01 // same as _GET_STATS
|
||||||
|
#define REQ_TYPE_KEEP_ALIVE 0x02
|
||||||
|
#define REQ_TYPE_GET_TELEMETRY_DATA 0x03
|
||||||
|
|
||||||
|
#define MAX_SIGN_DATA_LEN (8 * 1024) // 8K
|
||||||
|
|
||||||
|
class MyMesh : public BaseChatMesh {
|
||||||
|
public:
|
||||||
|
MyMesh(mesh::Radio &radio, mesh::RNG &rng, mesh::RTCClock &rtc, SimpleMeshTables &tables);
|
||||||
|
|
||||||
|
void begin(FILESYSTEM &fs, bool has_display);
|
||||||
|
void startInterface(BaseSerialInterface &serial);
|
||||||
|
void loadPrefsInt(const char *filename);
|
||||||
|
void savePrefs();
|
||||||
|
|
||||||
|
const char *getNodeName();
|
||||||
|
NodePrefs *getNodePrefs();
|
||||||
|
uint32_t getBLEPin();
|
||||||
|
|
||||||
|
void loop();
|
||||||
|
void handleCmdFrame(size_t len);
|
||||||
|
bool advert();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
float getAirtimeBudgetFactor() const override;
|
||||||
|
int getInterferenceThreshold() const override;
|
||||||
|
int calcRxDelay(float score, uint32_t air_time) const override;
|
||||||
|
|
||||||
|
void logRxRaw(float snr, float rssi, const uint8_t raw[], int len) override;
|
||||||
|
bool isAutoAddEnabled() const override;
|
||||||
|
void onDiscoveredContact(ContactInfo &contact, bool is_new) override;
|
||||||
|
void onContactPathUpdated(const ContactInfo &contact) override;
|
||||||
|
bool processAck(const uint8_t *data) override;
|
||||||
|
void queueMessage(const ContactInfo &from, uint8_t txt_type, mesh::Packet *pkt, uint32_t sender_timestamp,
|
||||||
|
const uint8_t *extra, int extra_len, const char *text);
|
||||||
|
|
||||||
|
void onMessageRecv(const ContactInfo &from, mesh::Packet *pkt, uint32_t sender_timestamp,
|
||||||
|
const char *text) override;
|
||||||
|
void onCommandDataRecv(const ContactInfo &from, mesh::Packet *pkt, uint32_t sender_timestamp,
|
||||||
|
const char *text) override;
|
||||||
|
void onSignedMessageRecv(const ContactInfo &from, mesh::Packet *pkt, uint32_t sender_timestamp,
|
||||||
|
const uint8_t *sender_prefix, const char *text) override;
|
||||||
|
void onChannelMessageRecv(const mesh::GroupChannel &channel, mesh::Packet *pkt, uint32_t timestamp,
|
||||||
|
const char *text) override;
|
||||||
|
|
||||||
|
uint8_t onContactRequest(const ContactInfo &contact, uint32_t sender_timestamp, const uint8_t *data,
|
||||||
|
uint8_t len, uint8_t *reply) override;
|
||||||
|
void onContactResponse(const ContactInfo &contact, const uint8_t *data, uint8_t len) override;
|
||||||
|
void onRawDataRecv(mesh::Packet *packet) override;
|
||||||
|
void onTraceRecv(mesh::Packet *packet, uint32_t tag, uint32_t auth_code, uint8_t flags,
|
||||||
|
const uint8_t *path_snrs, const uint8_t *path_hashes, uint8_t path_len) override;
|
||||||
|
|
||||||
|
uint32_t calcFloodTimeoutMillisFor(uint32_t pkt_airtime_millis) const override;
|
||||||
|
uint32_t calcDirectTimeoutMillisFor(uint32_t pkt_airtime_millis, uint8_t path_len) const override;
|
||||||
|
void onSendTimeout() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void writeOKFrame();
|
||||||
|
void writeErrFrame(uint8_t err_code);
|
||||||
|
void writeDisabledFrame();
|
||||||
|
void writeContactRespFrame(uint8_t code, const ContactInfo &contact);
|
||||||
|
void updateContactFromFrame(ContactInfo &contact, const uint8_t *frame, int len);
|
||||||
|
void addToOfflineQueue(const uint8_t frame[], int len);
|
||||||
|
int getFromOfflineQueue(uint8_t frame[]);
|
||||||
|
void loadMainIdentity();
|
||||||
|
bool saveMainIdentity(const mesh::LocalIdentity &identity);
|
||||||
|
void loadContacts();
|
||||||
|
void saveContacts();
|
||||||
|
void loadChannels();
|
||||||
|
void saveChannels();
|
||||||
|
int getBlobByKey(const uint8_t key[], int key_len, uint8_t dest_buf[]) override;
|
||||||
|
bool putBlobByKey(const uint8_t key[], int key_len, const uint8_t src_buf[], int len) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
FILESYSTEM *_fs;
|
||||||
|
IdentityStore *_identity_store;
|
||||||
|
NodePrefs _prefs;
|
||||||
|
uint32_t pending_login;
|
||||||
|
uint32_t pending_status;
|
||||||
|
uint32_t pending_telemetry;
|
||||||
|
BaseSerialInterface *_serial;
|
||||||
|
|
||||||
|
ContactsIterator _iter;
|
||||||
|
uint32_t _iter_filter_since;
|
||||||
|
uint32_t _most_recent_lastmod;
|
||||||
|
uint32_t _active_ble_pin;
|
||||||
|
bool _iter_started;
|
||||||
|
uint8_t app_target_ver;
|
||||||
|
uint8_t *sign_data;
|
||||||
|
uint32_t sign_data_len;
|
||||||
|
unsigned long dirty_contacts_expiry;
|
||||||
|
|
||||||
|
uint8_t cmd_frame[MAX_FRAME_SIZE + 1];
|
||||||
|
uint8_t out_frame[MAX_FRAME_SIZE + 1];
|
||||||
|
CayenneLPP telemetry;
|
||||||
|
|
||||||
|
struct Frame {
|
||||||
|
uint8_t len;
|
||||||
|
uint8_t buf[MAX_FRAME_SIZE];
|
||||||
|
};
|
||||||
|
int offline_queue_len;
|
||||||
|
Frame offline_queue[OFFLINE_QUEUE_SIZE];
|
||||||
|
|
||||||
|
struct AckTableEntry {
|
||||||
|
unsigned long msg_sent;
|
||||||
|
uint32_t ack;
|
||||||
|
};
|
||||||
|
#define EXPECTED_ACK_TABLE_SIZE 8
|
||||||
|
AckTableEntry expected_ack_table[EXPECTED_ACK_TABLE_SIZE]; // circular table
|
||||||
|
int next_ack_idx;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern StdRNG fast_rng;
|
||||||
|
extern SimpleMeshTables tables;
|
||||||
|
extern MyMesh the_mesh;
|
||||||
|
#ifdef DISPLAY_CLASS
|
||||||
|
extern UITask ui_task;
|
||||||
|
#endif
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
#ifndef NODE_PREFS_H
|
#pragma once
|
||||||
#define NODE_PREFS_H
|
|
||||||
|
|
||||||
#include <cstdint> // For uint8_t, uint32_t
|
#include <cstdint> // For uint8_t, uint32_t
|
||||||
|
|
||||||
#define TELEM_MODE_DENY 0
|
#define TELEM_MODE_DENY 0
|
||||||
|
|
@ -22,6 +20,4 @@ struct NodePrefs { // persisted to file
|
||||||
uint8_t telemetry_mode_env;
|
uint8_t telemetry_mode_env;
|
||||||
float rx_delay_base;
|
float rx_delay_base;
|
||||||
uint32_t ble_pin;
|
uint32_t ble_pin;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // NODE_PREFS_H
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include <helpers/TxtDataHelpers.h>
|
#include <helpers/TxtDataHelpers.h>
|
||||||
#include "NodePrefs.h"
|
#include "NodePrefs.h"
|
||||||
|
#include "MyMesh.h"
|
||||||
|
|
||||||
#define AUTO_OFF_MILLIS 15000 // 15 seconds
|
#define AUTO_OFF_MILLIS 15000 // 15 seconds
|
||||||
#define BOOT_SCREEN_MILLIS 4000 // 4 seconds
|
#define BOOT_SCREEN_MILLIS 4000 // 4 seconds
|
||||||
|
|
@ -340,8 +341,14 @@ void UITask::handleButtonShortPress() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void UITask::handleButtonDoublePress() {
|
void UITask::handleButtonDoublePress() {
|
||||||
MESH_DEBUG_PRINTLN("UITask: double press triggered");
|
MESH_DEBUG_PRINTLN("UITask: double press triggered, sending advert");
|
||||||
// Not implemented. TODO: possibly send an advert here?
|
// ADVERT
|
||||||
|
if(the_mesh.advert()) {
|
||||||
|
MESH_DEBUG_PRINTLN("Advert sent!");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
MESH_DEBUG_PRINTLN("Advert failed!");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UITask::handleButtonTriplePress() {
|
void UITask::handleButtonTriplePress() {
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -62,7 +62,7 @@ build_flags =
|
||||||
; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1
|
; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1
|
||||||
; NOTE: DO NOT ENABLE --> -D ESPNOW_DEBUG_LOGGING=1
|
; NOTE: DO NOT ENABLE --> -D ESPNOW_DEBUG_LOGGING=1
|
||||||
build_src_filter = ${Generic_ESPNOW.build_src_filter}
|
build_src_filter = ${Generic_ESPNOW.build_src_filter}
|
||||||
+<../examples/companion_radio/main.cpp>
|
+<../examples/companion_radio>
|
||||||
lib_deps =
|
lib_deps =
|
||||||
${Generic_ESPNOW.lib_deps}
|
${Generic_ESPNOW.lib_deps}
|
||||||
densaugeo/base64 @ ~1.4.0
|
densaugeo/base64 @ ~1.4.0
|
||||||
|
|
|
||||||
|
|
@ -186,7 +186,7 @@ build_flags = ${ProMicroLLCC68.build_flags}
|
||||||
; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1
|
; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1
|
||||||
; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1
|
; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1
|
||||||
build_src_filter = ${ProMicroLLCC68.build_src_filter}
|
build_src_filter = ${ProMicroLLCC68.build_src_filter}
|
||||||
+<../examples/companion_radio/main.cpp>
|
+<../examples/companion_radio>
|
||||||
lib_deps = ${ProMicroLLCC68.lib_deps}
|
lib_deps = ${ProMicroLLCC68.lib_deps}
|
||||||
adafruit/RTClib @ ^2.1.3
|
adafruit/RTClib @ ^2.1.3
|
||||||
densaugeo/base64 @ ~1.4.0
|
densaugeo/base64 @ ~1.4.0
|
||||||
|
|
@ -205,7 +205,7 @@ build_flags = ${ProMicroLLCC68.build_flags}
|
||||||
; -D MESH_DEBUG=1
|
; -D MESH_DEBUG=1
|
||||||
build_src_filter = ${ProMicroLLCC68.build_src_filter}
|
build_src_filter = ${ProMicroLLCC68.build_src_filter}
|
||||||
+<helpers/nrf52/SerialBLEInterface.cpp>
|
+<helpers/nrf52/SerialBLEInterface.cpp>
|
||||||
+<../examples/companion_radio/main.cpp>
|
+<../examples/companion_radio>
|
||||||
lib_deps = ${ProMicroLLCC68.lib_deps}
|
lib_deps = ${ProMicroLLCC68.lib_deps}
|
||||||
adafruit/RTClib @ ^2.1.3
|
adafruit/RTClib @ ^2.1.3
|
||||||
densaugeo/base64 @ ~1.4.0
|
densaugeo/base64 @ ~1.4.0
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,7 @@ build_flags =
|
||||||
; -D MESH_DEBUG=1
|
; -D MESH_DEBUG=1
|
||||||
build_src_filter = ${Heltec_t114.build_src_filter}
|
build_src_filter = ${Heltec_t114.build_src_filter}
|
||||||
+<helpers/nrf52/*.cpp>
|
+<helpers/nrf52/*.cpp>
|
||||||
+<../examples/companion_radio/main.cpp>
|
+<../examples/companion_radio>
|
||||||
lib_deps =
|
lib_deps =
|
||||||
${Heltec_t114.lib_deps}
|
${Heltec_t114.lib_deps}
|
||||||
densaugeo/base64 @ ~1.4.0
|
densaugeo/base64 @ ~1.4.0
|
||||||
|
|
@ -68,7 +68,7 @@ build_flags =
|
||||||
; -D MESH_DEBUG=1
|
; -D MESH_DEBUG=1
|
||||||
build_src_filter = ${Xiao_nrf52.build_src_filter}
|
build_src_filter = ${Xiao_nrf52.build_src_filter}
|
||||||
+<helpers/nrf52/SerialBLEInterface.cpp>
|
+<helpers/nrf52/SerialBLEInterface.cpp>
|
||||||
+<../examples/companion_radio/main.cpp>
|
+<../examples/companion_radio>
|
||||||
lib_deps =
|
lib_deps =
|
||||||
${Xiao_nrf52.lib_deps}
|
${Xiao_nrf52.lib_deps}
|
||||||
densaugeo/base64 @ ~1.4.0
|
densaugeo/base64 @ ~1.4.0
|
||||||
|
|
@ -84,7 +84,7 @@ build_flags =
|
||||||
; -D MESH_DEBUG=1
|
; -D MESH_DEBUG=1
|
||||||
build_src_filter = ${Xiao_nrf52.build_src_filter}
|
build_src_filter = ${Xiao_nrf52.build_src_filter}
|
||||||
+<helpers/nrf52/SerialBLEInterface.cpp>
|
+<helpers/nrf52/SerialBLEInterface.cpp>
|
||||||
+<../examples/companion_radio/main.cpp>
|
+<../examples/companion_radio>
|
||||||
lib_deps =
|
lib_deps =
|
||||||
${Xiao_nrf52.lib_deps}
|
${Xiao_nrf52.lib_deps}
|
||||||
densaugeo/base64 @ ~1.4.0
|
densaugeo/base64 @ ~1.4.0
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,7 @@ build_flags =
|
||||||
; -D MESH_DEBUG=1
|
; -D MESH_DEBUG=1
|
||||||
build_src_filter = ${Xiao_S3_WIO.build_src_filter}
|
build_src_filter = ${Xiao_S3_WIO.build_src_filter}
|
||||||
+<helpers/esp32/*.cpp>
|
+<helpers/esp32/*.cpp>
|
||||||
+<../examples/companion_radio/main.cpp>
|
+<../examples/companion_radio>
|
||||||
lib_deps =
|
lib_deps =
|
||||||
${Xiao_S3_WIO.lib_deps}
|
${Xiao_S3_WIO.lib_deps}
|
||||||
densaugeo/base64 @ ~1.4.0
|
densaugeo/base64 @ ~1.4.0
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue