* Refactor: advert_loc_policy now applied in new method CommonCLI::buildAdvertData()

This commit is contained in:
Scott Powell
2025-10-12 12:49:26 +11:00
parent 837e7dcbdb
commit 93c0180740
5 changed files with 18 additions and 39 deletions

View File

@@ -287,19 +287,7 @@ int MyMesh::handleRequest(ClientInfo *sender, uint32_t sender_timestamp, uint8_t
mesh::Packet *MyMesh::createSelfAdvert() {
uint8_t app_data[MAX_ADVERT_DATA_SIZE];
uint8_t app_data_len;
{
if (_prefs.advert_loc_policy == ADVERT_LOC_NONE) {
AdvertDataBuilder builder(ADV_TYPE_REPEATER, _prefs.node_name);
app_data_len = builder.encodeTo(app_data);
} else if (_prefs.advert_loc_policy == ADVERT_LOC_SHARE) {
AdvertDataBuilder builder(ADV_TYPE_REPEATER, _prefs.node_name, sensors.node_lat, sensors.node_lon);
app_data_len = builder.encodeTo(app_data);
} else {
AdvertDataBuilder builder(ADV_TYPE_REPEATER, _prefs.node_name, _prefs.node_lat, _prefs.node_lon);
app_data_len = builder.encodeTo(app_data);
}
}
uint8_t app_data_len = _cli.buildAdvertData(ADV_TYPE_REPEATER, app_data);
return createAdvert(self_id, app_data, app_data_len);
}

View File

@@ -114,19 +114,7 @@ bool MyMesh::processAck(const uint8_t *data) {
mesh::Packet *MyMesh::createSelfAdvert() {
uint8_t app_data[MAX_ADVERT_DATA_SIZE];
uint8_t app_data_len;
{
if (_prefs.advert_loc_policy == ADVERT_LOC_NONE) {
AdvertDataBuilder builder(ADV_TYPE_ROOM, _prefs.node_name);
app_data_len = builder.encodeTo(app_data);
} else if (_prefs.advert_loc_policy == ADVERT_LOC_SHARE) {
AdvertDataBuilder builder(ADV_TYPE_ROOM, _prefs.node_name, sensors.node_lat, sensors.node_lon);
app_data_len = builder.encodeTo(app_data);
} else {
AdvertDataBuilder builder(ADV_TYPE_ROOM, _prefs.node_name, _prefs.node_lat, _prefs.node_lon);
app_data_len = builder.encodeTo(app_data);
}
}
uint8_t app_data_len = _cli.buildAdvertData(ADV_TYPE_ROOM, app_data);
return createAdvert(self_id, app_data, app_data_len);
}

View File

@@ -239,19 +239,7 @@ uint8_t SensorMesh::handleRequest(uint8_t perms, uint32_t sender_timestamp, uint
mesh::Packet* SensorMesh::createSelfAdvert() {
uint8_t app_data[MAX_ADVERT_DATA_SIZE];
uint8_t app_data_len;
{
if (_prefs.advert_loc_policy == ADVERT_LOC_NONE) {
AdvertDataBuilder builder(ADV_TYPE_SENSOR, _prefs.node_name);
app_data_len = builder.encodeTo(app_data);
} else if (_prefs.advert_loc_policy == ADVERT_LOC_SHARE) {
AdvertDataBuilder builder(ADV_TYPE_SENSOR, _prefs.node_name, sensors.node_lat, sensors.node_lon);
app_data_len = builder.encodeTo(app_data);
} else {
AdvertDataBuilder builder(ADV_TYPE_SENSOR, _prefs.node_name, _prefs.node_lat, _prefs.node_lon);
app_data_len = builder.encodeTo(app_data);
}
}
uint8_t app_data_len = _cli.buildAdvertData(ADV_TYPE_SENSOR, app_data);
return createAdvert(self_id, app_data, app_data_len);
}

View File

@@ -1,6 +1,7 @@
#include <Arduino.h>
#include "CommonCLI.h"
#include "TxtDataHelpers.h"
#include "AdvertDataHelpers.h"
#include <RTClib.h>
// Believe it or not, this std C function is busted on some platforms!
@@ -160,6 +161,19 @@ void CommonCLI::savePrefs() {
_callbacks->savePrefs();
}
uint8_t CommonCLI::buildAdvertData(uint8_t node_type, uint8_t* app_data) {
if (_prefs->advert_loc_policy == ADVERT_LOC_NONE) {
AdvertDataBuilder builder(node_type, _prefs->node_name);
return builder.encodeTo(app_data);
} else if (_prefs->advert_loc_policy == ADVERT_LOC_SHARE) {
AdvertDataBuilder builder(node_type, _prefs->node_name, sensors.node_lat, sensors.node_lon);
return builder.encodeTo(app_data);
} else {
AdvertDataBuilder builder(node_type, _prefs->node_name, _prefs->node_lat, _prefs->node_lon);
return builder.encodeTo(app_data);
}
}
void CommonCLI::handleCommand(uint32_t sender_timestamp, const char* command, char* reply) {
if (memcmp(command, "reboot", 6) == 0) {
_board->reboot(); // doesn't return

View File

@@ -98,4 +98,5 @@ public:
void loadPrefs(FILESYSTEM* _fs);
void savePrefs(FILESYSTEM* _fs);
void handleCommand(uint32_t sender_timestamp, const char* command, char* reply);
uint8_t buildAdvertData(uint8_t node_type, uint8_t* app_data);
};