Ver Fonte

* Repeater: slight refactor of 'bridge' instantiation

Scott Powell há 11 meses atrás
pai
commit
5344f04d89
1 ficheiros alterados com 14 adições e 17 exclusões
  1. 14 17
      examples/simple_repeater/main.cpp

+ 14 - 17
examples/simple_repeater/main.cpp

@@ -124,10 +124,6 @@ struct ClientInfo {
   #define MAX_CLIENTS           32
 #endif
 
-#ifdef WITH_BRIDGE
-AbstractBridge* bridge;
-#endif
-
 struct NeighbourInfo {
   mesh::Identity id;
   uint32_t advert_timestamp;
@@ -154,6 +150,11 @@ class MyMesh : public mesh::Mesh, public CommonCLICallbacks {
   float pending_bw;
   uint8_t pending_sf;
   uint8_t pending_cr;
+#if defined(WITH_RS232_BRIDGE)
+  RS232Bridge bridge;
+#elif defined(WITH_ESPNOW_BRIDGE)
+  ESPNowBridge bridge;
+#endif
 
   ClientInfo* putClient(const mesh::Identity& id) {
     uint32_t min_time = 0xFFFFFFFF;
@@ -315,7 +316,7 @@ protected:
   }
   void logTx(mesh::Packet* pkt, int len) override {
 #ifdef WITH_BRIDGE
-    bridge->onPacketTransmitted(pkt);
+    bridge.onPacketTransmitted(pkt);
 #endif
     if (_logging) {
       File f = openAppend(PACKET_LOG_FILE);
@@ -581,16 +582,12 @@ public:
   MyMesh(mesh::MainBoard& board, mesh::Radio& radio, mesh::MillisecondClock& ms, mesh::RNG& rng, mesh::RTCClock& rtc, mesh::MeshTables& tables)
      : mesh::Mesh(radio, ms, rng, rtc, *new StaticPoolPacketManager(32), tables),
       _cli(board, rtc, &_prefs, this), telemetry(MAX_PACKET_PAYLOAD - 4)
-  {
-#ifdef WITH_BRIDGE
 #if defined(WITH_RS232_BRIDGE)
-    bridge = new RS232Bridge(WITH_RS232_BRIDGE, _mgr, &rtc);
+      , bridge(WITH_RS232_BRIDGE, _mgr, &rtc)
 #elif defined(WITH_ESPNOW_BRIDGE)
-    bridge = new ESPNowBridge(_mgr, &rtc);
-#else
-#error "You must choose either RS232 or ESPNow bridge"
-#endif
+      , bridge(_mgr, &rtc)
 #endif
+  {
     memset(known_clients, 0, sizeof(known_clients));
     next_local_advert = next_flood_advert = 0;
     set_radio_at = revert_radio_at = 0;
@@ -626,6 +623,10 @@ public:
     // load persisted prefs
     _cli.loadPrefs(_fs);
 
+  #ifdef WITH_BRIDGE
+    bridge.begin();
+  #endif
+
     radio_set_params(_prefs.freq, _prefs.bw, _prefs.sf, _prefs.cr);
     radio_set_tx_power(_prefs.tx_power_dbm);
 
@@ -792,7 +793,7 @@ public:
 
   void loop() {
 #ifdef WITH_BRIDGE
-    bridge->loop();
+    bridge.loop();
 #endif
 
     mesh::Mesh::loop();
@@ -843,10 +844,6 @@ void setup() {
   Serial.begin(115200);
   delay(1000);
 
-#ifdef WITH_BRIDGE
-  bridge->begin();
-#endif
-
   board.begin();
 
 #ifdef DISPLAY_CLASS