mirror of
https://github.com/meshcore-dev/MeshCore.git
synced 2026-04-20 22:13:47 +00:00
* Refactor of UITask, moved to /ui-new
This commit is contained in:
parent
29fd5da5e8
commit
acde9921b5
9 changed files with 86 additions and 101 deletions
46
examples/companion_radio/AbstractUITask.h
Normal file
46
examples/companion_radio/AbstractUITask.h
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <MeshCore.h>
|
||||||
|
#include <helpers/ui/DisplayDriver.h>
|
||||||
|
#include <helpers/ui/UIScreen.h>
|
||||||
|
#include <helpers/SensorManager.h>
|
||||||
|
#include <helpers/BaseSerialInterface.h>
|
||||||
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
#ifdef PIN_BUZZER
|
||||||
|
#include <helpers/ui/buzzer.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "NodePrefs.h"
|
||||||
|
|
||||||
|
enum class UIEventType {
|
||||||
|
none,
|
||||||
|
contactMessage,
|
||||||
|
channelMessage,
|
||||||
|
roomMessage,
|
||||||
|
newContactMessage,
|
||||||
|
ack
|
||||||
|
};
|
||||||
|
|
||||||
|
class AbstractUITask {
|
||||||
|
protected:
|
||||||
|
mesh::MainBoard* _board;
|
||||||
|
BaseSerialInterface* _serial;
|
||||||
|
bool _connected;
|
||||||
|
|
||||||
|
AbstractUITask(mesh::MainBoard* board, BaseSerialInterface* serial) : _board(board), _serial(serial) {
|
||||||
|
_connected = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
void setHasConnection(bool connected) { _connected = connected; }
|
||||||
|
bool hasConnection() const { return _connected; }
|
||||||
|
uint16_t getBattMilliVolts() const { return _board->getBattMilliVolts(); }
|
||||||
|
bool isSerialEnabled() const { return _serial->isEnabled(); }
|
||||||
|
void enableSerial() { _serial->enable(); }
|
||||||
|
void disableSerial() { _serial->disable(); }
|
||||||
|
virtual void msgRead(int msgcount) = 0;
|
||||||
|
virtual void newMsg(uint8_t path_len, const char* from_name, const char* text, int msgcount) = 0;
|
||||||
|
virtual void soundBuzzer(UIEventType bet = UIEventType::none) = 0;
|
||||||
|
virtual void loop();
|
||||||
|
};
|
||||||
|
|
@ -109,10 +109,6 @@
|
||||||
|
|
||||||
#define MAX_SIGN_DATA_LEN (8 * 1024) // 8K
|
#define MAX_SIGN_DATA_LEN (8 * 1024) // 8K
|
||||||
|
|
||||||
#ifdef DISPLAY_CLASS
|
|
||||||
#include "UITask.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void MyMesh::writeOKFrame() {
|
void MyMesh::writeOKFrame() {
|
||||||
uint8_t buf[1];
|
uint8_t buf[1];
|
||||||
buf[0] = RESP_CODE_OK;
|
buf[0] = RESP_CODE_OK;
|
||||||
|
|
@ -247,7 +243,7 @@ void MyMesh::onDiscoveredContact(ContactInfo &contact, bool is_new, uint8_t path
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
#ifdef DISPLAY_CLASS
|
#ifdef DISPLAY_CLASS
|
||||||
ui_task.soundBuzzer(UIEventType::newContactMessage);
|
if (_ui) _ui->soundBuzzer(UIEventType::newContactMessage);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -354,10 +350,10 @@ void MyMesh::queueMessage(const ContactInfo &from, uint8_t txt_type, mesh::Packe
|
||||||
#ifdef DISPLAY_CLASS
|
#ifdef DISPLAY_CLASS
|
||||||
// we only want to show text messages on display, not cli data
|
// we only want to show text messages on display, not cli data
|
||||||
bool should_display = txt_type == TXT_TYPE_PLAIN || txt_type == TXT_TYPE_SIGNED_PLAIN;
|
bool should_display = txt_type == TXT_TYPE_PLAIN || txt_type == TXT_TYPE_SIGNED_PLAIN;
|
||||||
if (should_display) {
|
if (should_display && _ui) {
|
||||||
ui_task.newMsg(path_len, from.name, text, offline_queue_len);
|
_ui->newMsg(path_len, from.name, text, offline_queue_len);
|
||||||
if (!_serial->isConnected()) {
|
if (!_serial->isConnected()) {
|
||||||
ui_task.soundBuzzer(UIEventType::contactMessage);
|
_ui->soundBuzzer(UIEventType::contactMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -416,7 +412,7 @@ void MyMesh::onChannelMessageRecv(const mesh::GroupChannel &channel, mesh::Packe
|
||||||
_serial->writeFrame(frame, 1);
|
_serial->writeFrame(frame, 1);
|
||||||
} else {
|
} else {
|
||||||
#ifdef DISPLAY_CLASS
|
#ifdef DISPLAY_CLASS
|
||||||
ui_task.soundBuzzer(UIEventType::channelMessage);
|
if (_ui) _ui->soundBuzzer(UIEventType::channelMessage);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#ifdef DISPLAY_CLASS
|
#ifdef DISPLAY_CLASS
|
||||||
|
|
@ -426,7 +422,7 @@ void MyMesh::onChannelMessageRecv(const mesh::GroupChannel &channel, mesh::Packe
|
||||||
if (getChannel(channel_idx, channel_details)) {
|
if (getChannel(channel_idx, channel_details)) {
|
||||||
channel_name = channel_details.name;
|
channel_name = channel_details.name;
|
||||||
}
|
}
|
||||||
ui_task.newMsg(path_len, channel_name, text, offline_queue_len);
|
if (_ui) _ui->newMsg(path_len, channel_name, text, offline_queue_len);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -635,9 +631,9 @@ uint32_t MyMesh::calcDirectTimeoutMillisFor(uint32_t pkt_airtime_millis, uint8_t
|
||||||
|
|
||||||
void MyMesh::onSendTimeout() {}
|
void MyMesh::onSendTimeout() {}
|
||||||
|
|
||||||
MyMesh::MyMesh(mesh::Radio &radio, mesh::RNG &rng, mesh::RTCClock &rtc, SimpleMeshTables &tables, DataStore& store)
|
MyMesh::MyMesh(mesh::Radio &radio, mesh::RNG &rng, mesh::RTCClock &rtc, SimpleMeshTables &tables, DataStore& store, AbstractUITask* ui)
|
||||||
: BaseChatMesh(radio, *new ArduinoMillis(), rng, rtc, *new StaticPoolPacketManager(16), tables),
|
: BaseChatMesh(radio, *new ArduinoMillis(), rng, rtc, *new StaticPoolPacketManager(16), tables),
|
||||||
_serial(NULL), telemetry(MAX_PACKET_PAYLOAD - 4), _store(&store) {
|
_serial(NULL), telemetry(MAX_PACKET_PAYLOAD - 4), _store(&store), _ui(ui) {
|
||||||
_iter_started = false;
|
_iter_started = false;
|
||||||
_cli_rescue = false;
|
_cli_rescue = false;
|
||||||
offline_queue_len = 0;
|
offline_queue_len = 0;
|
||||||
|
|
@ -1041,7 +1037,7 @@ void MyMesh::handleCmdFrame(size_t len) {
|
||||||
if ((out_len = getFromOfflineQueue(out_frame)) > 0) {
|
if ((out_len = getFromOfflineQueue(out_frame)) > 0) {
|
||||||
_serial->writeFrame(out_frame, out_len);
|
_serial->writeFrame(out_frame, out_len);
|
||||||
#ifdef DISPLAY_CLASS
|
#ifdef DISPLAY_CLASS
|
||||||
ui_task.msgRead(offline_queue_len);
|
if (_ui) _ui->msgRead(offline_queue_len);
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
out_frame[0] = RESP_CODE_NO_MORE_MESSAGES;
|
out_frame[0] = RESP_CODE_NO_MORE_MESSAGES;
|
||||||
|
|
@ -1643,7 +1639,7 @@ void MyMesh::loop() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DISPLAY_CLASS
|
#ifdef DISPLAY_CLASS
|
||||||
ui_task.setHasConnection(_serial->isConnected());
|
if (_ui) _ui->setHasConnection(_serial->isConnected());
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,7 @@
|
||||||
|
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include <Mesh.h>
|
#include <Mesh.h>
|
||||||
#ifdef DISPLAY_CLASS
|
#include "AbstractUITask.h"
|
||||||
#include "UITask.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*------------ Frame Protocol --------------*/
|
/*------------ Frame Protocol --------------*/
|
||||||
#define FIRMWARE_VER_CODE 7
|
#define FIRMWARE_VER_CODE 7
|
||||||
|
|
@ -87,7 +85,7 @@ struct AdvertPath {
|
||||||
|
|
||||||
class MyMesh : public BaseChatMesh, public DataStoreHost {
|
class MyMesh : public BaseChatMesh, public DataStoreHost {
|
||||||
public:
|
public:
|
||||||
MyMesh(mesh::Radio &radio, mesh::RNG &rng, mesh::RTCClock &rtc, SimpleMeshTables &tables, DataStore& store);
|
MyMesh(mesh::Radio &radio, mesh::RNG &rng, mesh::RTCClock &rtc, SimpleMeshTables &tables, DataStore& store, AbstractUITask* ui=NULL);
|
||||||
|
|
||||||
void begin(bool has_display);
|
void begin(bool has_display);
|
||||||
void startInterface(BaseSerialInterface &serial);
|
void startInterface(BaseSerialInterface &serial);
|
||||||
|
|
@ -179,6 +177,7 @@ private:
|
||||||
uint32_t pending_telemetry, pending_discovery; // pending _TELEMETRY_REQ
|
uint32_t pending_telemetry, pending_discovery; // pending _TELEMETRY_REQ
|
||||||
uint32_t pending_req; // pending _BINARY_REQ
|
uint32_t pending_req; // pending _BINARY_REQ
|
||||||
BaseSerialInterface *_serial;
|
BaseSerialInterface *_serial;
|
||||||
|
AbstractUITask* _ui;
|
||||||
|
|
||||||
ContactsIterator _iter;
|
ContactsIterator _iter;
|
||||||
uint32_t _iter_filter_since;
|
uint32_t _iter_filter_since;
|
||||||
|
|
@ -216,6 +215,3 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
extern MyMesh the_mesh;
|
extern MyMesh the_mesh;
|
||||||
#ifdef DISPLAY_CLASS
|
|
||||||
extern UITask ui_task;
|
|
||||||
#endif
|
|
||||||
|
|
@ -75,14 +75,19 @@ static uint32_t _atoi(const char* sp) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* GLOBAL OBJECTS */
|
/* GLOBAL OBJECTS */
|
||||||
StdRNG fast_rng;
|
|
||||||
SimpleMeshTables tables;
|
|
||||||
MyMesh the_mesh(radio_driver, fast_rng, rtc_clock, tables, store);
|
|
||||||
|
|
||||||
#ifdef DISPLAY_CLASS
|
#ifdef DISPLAY_CLASS
|
||||||
#include "UITask.h"
|
#include "UITask.h"
|
||||||
UITask ui_task(&board, &serial_interface);
|
UITask ui_task(&board, &serial_interface);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
StdRNG fast_rng;
|
||||||
|
SimpleMeshTables tables;
|
||||||
|
MyMesh the_mesh(radio_driver, fast_rng, rtc_clock, tables, store
|
||||||
|
#ifdef DISPLAY_CLASS
|
||||||
|
, &ui_task
|
||||||
|
#endif
|
||||||
|
);
|
||||||
|
|
||||||
/* END GLOBAL OBJECTS */
|
/* END GLOBAL OBJECTS */
|
||||||
|
|
||||||
void halt() {
|
void halt() {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
#include "UITask.h"
|
#include "UITask.h"
|
||||||
#include <helpers/TxtDataHelpers.h>
|
#include <helpers/TxtDataHelpers.h>
|
||||||
#include "NodePrefs.h"
|
#include "../MyMesh.h"
|
||||||
#include "MyMesh.h"
|
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
|
|
||||||
#define AUTO_OFF_MILLIS 15000 // 15 seconds
|
#define AUTO_OFF_MILLIS 15000 // 15 seconds
|
||||||
|
|
@ -11,29 +11,16 @@
|
||||||
#include <helpers/ui/buzzer.h>
|
#include <helpers/ui/buzzer.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "NodePrefs.h"
|
#include "../AbstractUITask.h"
|
||||||
|
#include "../NodePrefs.h"
|
||||||
|
|
||||||
enum class UIEventType {
|
class UITask : public AbstractUITask {
|
||||||
none,
|
|
||||||
contactMessage,
|
|
||||||
channelMessage,
|
|
||||||
roomMessage,
|
|
||||||
newContactMessage,
|
|
||||||
ack
|
|
||||||
};
|
|
||||||
|
|
||||||
#define MAX_TOP_LEVEL 8
|
|
||||||
|
|
||||||
class UITask {
|
|
||||||
DisplayDriver* _display;
|
DisplayDriver* _display;
|
||||||
mesh::MainBoard* _board;
|
|
||||||
BaseSerialInterface* _serial;
|
|
||||||
SensorManager* _sensors;
|
SensorManager* _sensors;
|
||||||
#ifdef PIN_BUZZER
|
#ifdef PIN_BUZZER
|
||||||
genericBuzzer buzzer;
|
genericBuzzer buzzer;
|
||||||
#endif
|
#endif
|
||||||
unsigned long _next_refresh, _auto_off;
|
unsigned long _next_refresh, _auto_off;
|
||||||
bool _connected;
|
|
||||||
NodePrefs* _node_prefs;
|
NodePrefs* _node_prefs;
|
||||||
char _alert[80];
|
char _alert[80];
|
||||||
unsigned long _alert_expiry;
|
unsigned long _alert_expiry;
|
||||||
|
|
@ -55,28 +42,24 @@ class UITask {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
UITask(mesh::MainBoard* board, BaseSerialInterface* serial) : _board(board), _serial(serial), _display(NULL), _sensors(NULL) {
|
UITask(mesh::MainBoard* board, BaseSerialInterface* serial) : AbstractUITask(board, serial), _display(NULL), _sensors(NULL) {
|
||||||
next_batt_chck = _next_refresh = 0;
|
next_batt_chck = _next_refresh = 0;
|
||||||
ui_started_at = 0;
|
ui_started_at = 0;
|
||||||
_connected = false;
|
|
||||||
curr = NULL;
|
curr = NULL;
|
||||||
}
|
}
|
||||||
void begin(DisplayDriver* display, SensorManager* sensors, NodePrefs* node_prefs);
|
void begin(DisplayDriver* display, SensorManager* sensors, NodePrefs* node_prefs);
|
||||||
|
|
||||||
void gotoHomeScreen() { setCurrScreen(home); }
|
void gotoHomeScreen() { setCurrScreen(home); }
|
||||||
void showAlert(const char* text, int duration_millis);
|
void showAlert(const char* text, int duration_millis);
|
||||||
void setHasConnection(bool connected) { _connected = connected; }
|
|
||||||
bool hasConnection() const { return _connected; }
|
|
||||||
uint16_t getBattMilliVolts() const { return _board->getBattMilliVolts(); }
|
|
||||||
bool isSerialEnabled() const { return _serial->isEnabled(); }
|
|
||||||
void enableSerial() { _serial->enable(); }
|
|
||||||
void disableSerial() { _serial->disable(); }
|
|
||||||
int getMsgCount() const { return _msgcount; }
|
int getMsgCount() const { return _msgcount; }
|
||||||
bool hasDisplay() const { return _display != NULL; }
|
bool hasDisplay() const { return _display != NULL; }
|
||||||
bool isButtonPressed() const;
|
bool isButtonPressed() const;
|
||||||
void msgRead(int msgcount);
|
|
||||||
void newMsg(uint8_t path_len, const char* from_name, const char* text, int msgcount);
|
// from AbsractUITask
|
||||||
void soundBuzzer(UIEventType bet = UIEventType::none);
|
void msgRead(int msgcount) override;
|
||||||
|
void newMsg(uint8_t path_len, const char* from_name, const char* text, int msgcount) override;
|
||||||
|
void soundBuzzer(UIEventType bet = UIEventType::none) override;
|
||||||
|
void loop() override;
|
||||||
|
|
||||||
void shutdown(bool restart = false);
|
void shutdown(bool restart = false);
|
||||||
void loop();
|
|
||||||
};
|
};
|
||||||
|
|
@ -103,6 +103,7 @@ lib_deps =
|
||||||
extends = Heltec_lora32_v3
|
extends = Heltec_lora32_v3
|
||||||
build_flags =
|
build_flags =
|
||||||
${Heltec_lora32_v3.build_flags}
|
${Heltec_lora32_v3.build_flags}
|
||||||
|
-I examples/companion_radio/ui-new
|
||||||
-D MAX_CONTACTS=160
|
-D MAX_CONTACTS=160
|
||||||
-D MAX_GROUP_CHANNELS=8
|
-D MAX_GROUP_CHANNELS=8
|
||||||
-D DISPLAY_CLASS=SSD1306Display
|
-D DISPLAY_CLASS=SSD1306Display
|
||||||
|
|
@ -117,6 +118,7 @@ build_src_filter = ${Heltec_lora32_v3.build_src_filter}
|
||||||
+<helpers/ui/MomentaryButton.cpp>
|
+<helpers/ui/MomentaryButton.cpp>
|
||||||
+<helpers/esp32/*.cpp>
|
+<helpers/esp32/*.cpp>
|
||||||
+<../examples/companion_radio>
|
+<../examples/companion_radio>
|
||||||
|
+<../examples/companion_radio/ui-new>
|
||||||
lib_deps =
|
lib_deps =
|
||||||
${Heltec_lora32_v3.lib_deps}
|
${Heltec_lora32_v3.lib_deps}
|
||||||
densaugeo/base64 @ ~1.4.0
|
densaugeo/base64 @ ~1.4.0
|
||||||
|
|
@ -244,49 +246,3 @@ build_src_filter = ${Heltec_lora32_v3.build_src_filter}
|
||||||
lib_deps =
|
lib_deps =
|
||||||
${Heltec_lora32_v3.lib_deps}
|
${Heltec_lora32_v3.lib_deps}
|
||||||
${esp32_ota.lib_deps}
|
${esp32_ota.lib_deps}
|
||||||
|
|
||||||
[env:Heltec_WSL3_espnow_bridge]
|
|
||||||
extends = Heltec_lora32_v3
|
|
||||||
build_flags =
|
|
||||||
${Heltec_lora32_v3.build_flags}
|
|
||||||
; -D LORA_FREQ=915.8
|
|
||||||
-D MESH_PACKET_LOGGING=1
|
|
||||||
-D ENV_INCLUDE_AHTX0=0
|
|
||||||
-D ENV_INCLUDE_BME280=0
|
|
||||||
-D ENV_INCLUDE_BMP280=0
|
|
||||||
-D ENV_INCLUDE_INA3221=0
|
|
||||||
-D ENV_INCLUDE_INA219=0
|
|
||||||
-D ENV_INCLUDE_MLX90614=0
|
|
||||||
-D ENV_INCLUDE_VL53L0X=0
|
|
||||||
-D ENV_INCLUDE_GPS=0
|
|
||||||
; -D MESH_DEBUG=1
|
|
||||||
build_src_filter = ${Heltec_lora32_v3.build_src_filter}
|
|
||||||
+<../examples/simple_bridge/main.cpp>
|
|
||||||
+<helpers/esp32/ESPNOWRadio.cpp>
|
|
||||||
lib_deps =
|
|
||||||
${Heltec_lora32_v3.lib_deps}
|
|
||||||
bakercp/CRC32 @ ^2.0.0
|
|
||||||
|
|
||||||
[env:Heltec_WSL3_serial_bridge]
|
|
||||||
extends = Heltec_lora32_v3
|
|
||||||
build_flags =
|
|
||||||
${Heltec_lora32_v3.build_flags}
|
|
||||||
; -D LORA_FREQ=915.8
|
|
||||||
-D MESH_PACKET_LOGGING=1
|
|
||||||
-D SERIAL_BRIDGE_RX=47
|
|
||||||
-D SERIAL_BRIDGE_TX=48
|
|
||||||
-D ENV_INCLUDE_AHTX0=0
|
|
||||||
-D ENV_INCLUDE_BME280=0
|
|
||||||
-D ENV_INCLUDE_BMP280=0
|
|
||||||
-D ENV_INCLUDE_INA3221=0
|
|
||||||
-D ENV_INCLUDE_INA219=0
|
|
||||||
-D ENV_INCLUDE_MLX90614=0
|
|
||||||
-D ENV_INCLUDE_VL53L0X=0
|
|
||||||
-D ENV_INCLUDE_GPS=0
|
|
||||||
; -D MESH_DEBUG=1
|
|
||||||
build_src_filter = ${Heltec_lora32_v3.build_src_filter}
|
|
||||||
+<../examples/simple_bridge/main.cpp>
|
|
||||||
+<../examples/simple_bridge/SerialBridgeRadio.cpp>
|
|
||||||
lib_deps =
|
|
||||||
${Heltec_lora32_v3.lib_deps}
|
|
||||||
bakercp/CRC32 @ ^2.0.0
|
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,7 @@ build_flags =
|
||||||
extends = Heltec_t114
|
extends = Heltec_t114
|
||||||
build_flags =
|
build_flags =
|
||||||
${Heltec_t114.build_flags}
|
${Heltec_t114.build_flags}
|
||||||
|
-I examples/companion_radio/ui-new
|
||||||
-D MAX_CONTACTS=100
|
-D MAX_CONTACTS=100
|
||||||
-D MAX_GROUP_CHANNELS=8
|
-D MAX_GROUP_CHANNELS=8
|
||||||
-D BLE_PIN_CODE=123456
|
-D BLE_PIN_CODE=123456
|
||||||
|
|
@ -83,6 +84,7 @@ build_flags =
|
||||||
build_src_filter = ${Heltec_t114.build_src_filter}
|
build_src_filter = ${Heltec_t114.build_src_filter}
|
||||||
+<helpers/nrf52/SerialBLEInterface.cpp>
|
+<helpers/nrf52/SerialBLEInterface.cpp>
|
||||||
+<../examples/companion_radio>
|
+<../examples/companion_radio>
|
||||||
|
+<../examples/companion_radio/ui-new>
|
||||||
lib_deps =
|
lib_deps =
|
||||||
${Heltec_t114.lib_deps}
|
${Heltec_t114.lib_deps}
|
||||||
densaugeo/base64 @ ~1.4.0
|
densaugeo/base64 @ ~1.4.0
|
||||||
|
|
@ -91,6 +93,7 @@ lib_deps =
|
||||||
extends = Heltec_t114
|
extends = Heltec_t114
|
||||||
build_flags =
|
build_flags =
|
||||||
${Heltec_t114.build_flags}
|
${Heltec_t114.build_flags}
|
||||||
|
-I examples/companion_radio/ui-new
|
||||||
-D MAX_CONTACTS=100
|
-D MAX_CONTACTS=100
|
||||||
-D MAX_GROUP_CHANNELS=8
|
-D MAX_GROUP_CHANNELS=8
|
||||||
; -D BLE_PIN_CODE=123456
|
; -D BLE_PIN_CODE=123456
|
||||||
|
|
@ -100,6 +103,7 @@ build_flags =
|
||||||
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>
|
+<../examples/companion_radio>
|
||||||
|
+<../examples/companion_radio/ui-new>
|
||||||
lib_deps =
|
lib_deps =
|
||||||
${Heltec_t114.lib_deps}
|
${Heltec_t114.lib_deps}
|
||||||
densaugeo/base64 @ ~1.4.0
|
densaugeo/base64 @ ~1.4.0
|
||||||
Loading…
Add table
Add a link
Reference in a new issue