Bladeren bron

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

Scott Powell 10 maanden geleden
bovenliggende
commit
93c0180740

+ 1 - 13
examples/simple_repeater/MyMesh.cpp

@@ -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);
 }

+ 1 - 13
examples/simple_room_server/MyMesh.cpp

@@ -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);
 }

+ 1 - 13
examples/simple_sensor/SensorMesh.cpp

@@ -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);
 }

+ 14 - 0
src/helpers/CommonCLI.cpp

@@ -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

+ 1 - 0
src/helpers/CommonCLI.h

@@ -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);
 };