boot adverts are now zero hop instead of flood

This commit is contained in:
liamcottle 2026-01-26 22:20:36 +13:00
parent 4b7684c7df
commit ed589f9620
11 changed files with 30 additions and 17 deletions

View file

@ -854,10 +854,14 @@ bool MyMesh::formatFileSystem() {
#endif #endif
} }
void MyMesh::sendSelfAdvertisement(int delay_millis) { void MyMesh::sendSelfAdvertisement(int delay_millis, bool flood) {
mesh::Packet *pkt = createSelfAdvert(); mesh::Packet *pkt = createSelfAdvert();
if (pkt) { if (pkt) {
sendFlood(pkt, delay_millis); if (flood) {
sendFlood(pkt, delay_millis);
} else {
sendZeroHop(pkt, delay_millis);
}
} else { } else {
MESH_DEBUG_PRINTLN("ERROR: unable to create advertisement packet!"); MESH_DEBUG_PRINTLN("ERROR: unable to create advertisement packet!");
} }

View file

@ -187,7 +187,7 @@ public:
void applyTempRadioParams(float freq, float bw, uint8_t sf, uint8_t cr, int timeout_mins) override; void applyTempRadioParams(float freq, float bw, uint8_t sf, uint8_t cr, int timeout_mins) override;
bool formatFileSystem() override; bool formatFileSystem() override;
void sendSelfAdvertisement(int delay_millis) override; void sendSelfAdvertisement(int delay_millis, bool flood) override;
void updateAdvertTimer() override; void updateAdvertTimer() override;
void updateFloodAdvertTimer() override; void updateFloodAdvertTimer() override;

View file

@ -87,8 +87,8 @@ void setup() {
ui_task.begin(the_mesh.getNodePrefs(), FIRMWARE_BUILD_DATE, FIRMWARE_VERSION); ui_task.begin(the_mesh.getNodePrefs(), FIRMWARE_BUILD_DATE, FIRMWARE_VERSION);
#endif #endif
// send out initial Advertisement to the mesh // send out initial zero hop Advertisement to the mesh
the_mesh.sendSelfAdvertisement(16000); the_mesh.sendSelfAdvertisement(16000, false);
} }
void loop() { void loop() {

View file

@ -675,10 +675,14 @@ bool MyMesh::formatFileSystem() {
#endif #endif
} }
void MyMesh::sendSelfAdvertisement(int delay_millis) { void MyMesh::sendSelfAdvertisement(int delay_millis, bool flood) {
mesh::Packet *pkt = createSelfAdvert(); mesh::Packet *pkt = createSelfAdvert();
if (pkt) { if (pkt) {
sendFlood(pkt, delay_millis); if (flood) {
sendFlood(pkt, delay_millis);
} else {
sendZeroHop(pkt, delay_millis);
}
} else { } else {
MESH_DEBUG_PRINTLN("ERROR: unable to create advertisement packet!"); MESH_DEBUG_PRINTLN("ERROR: unable to create advertisement packet!");
} }

View file

@ -177,7 +177,7 @@ public:
void applyTempRadioParams(float freq, float bw, uint8_t sf, uint8_t cr, int timeout_mins) override; void applyTempRadioParams(float freq, float bw, uint8_t sf, uint8_t cr, int timeout_mins) override;
bool formatFileSystem() override; bool formatFileSystem() override;
void sendSelfAdvertisement(int delay_millis) override; void sendSelfAdvertisement(int delay_millis, bool flood) override;
void updateAdvertTimer() override; void updateAdvertTimer() override;
void updateFloodAdvertTimer() override; void updateFloodAdvertTimer() override;

View file

@ -76,8 +76,8 @@ void setup() {
ui_task.begin(the_mesh.getNodePrefs(), FIRMWARE_BUILD_DATE, FIRMWARE_VERSION); ui_task.begin(the_mesh.getNodePrefs(), FIRMWARE_BUILD_DATE, FIRMWARE_VERSION);
#endif #endif
// send out initial Advertisement to the mesh // send out initial zero hop Advertisement to the mesh
the_mesh.sendSelfAdvertisement(16000); the_mesh.sendSelfAdvertisement(16000, false);
} }
void loop() { void loop() {

View file

@ -787,10 +787,14 @@ void SensorMesh::applyTempRadioParams(float freq, float bw, uint8_t sf, uint8_t
revert_radio_at = futureMillis(2000 + timeout_mins*60*1000); // schedule when to revert radio params revert_radio_at = futureMillis(2000 + timeout_mins*60*1000); // schedule when to revert radio params
} }
void SensorMesh::sendSelfAdvertisement(int delay_millis) { void SensorMesh::sendSelfAdvertisement(int delay_millis, bool flood) {
mesh::Packet* pkt = createSelfAdvert(); mesh::Packet* pkt = createSelfAdvert();
if (pkt) { if (pkt) {
sendFlood(pkt, delay_millis); if (flood) {
sendFlood(pkt, delay_millis);
} else {
sendZeroHop(pkt, delay_millis);
}
} else { } else {
MESH_DEBUG_PRINTLN("ERROR: unable to create advertisement packet!"); MESH_DEBUG_PRINTLN("ERROR: unable to create advertisement packet!");
} }

View file

@ -60,7 +60,7 @@ public:
NodePrefs* getNodePrefs() { return &_prefs; } NodePrefs* getNodePrefs() { return &_prefs; }
void savePrefs() override { _cli.savePrefs(_fs); } void savePrefs() override { _cli.savePrefs(_fs); }
bool formatFileSystem() override; bool formatFileSystem() override;
void sendSelfAdvertisement(int delay_millis) override; void sendSelfAdvertisement(int delay_millis, bool flood) override;
void updateAdvertTimer() override; void updateAdvertTimer() override;
void updateFloodAdvertTimer() override; void updateFloodAdvertTimer() override;
void setLoggingOn(bool enable) override { } void setLoggingOn(bool enable) override { }

View file

@ -110,8 +110,8 @@ void setup() {
ui_task.begin(the_mesh.getNodePrefs(), FIRMWARE_BUILD_DATE, FIRMWARE_VERSION); ui_task.begin(the_mesh.getNodePrefs(), FIRMWARE_BUILD_DATE, FIRMWARE_VERSION);
#endif #endif
// send out initial Advertisement to the mesh // send out initial zero hop Advertisement to the mesh
the_mesh.sendSelfAdvertisement(16000); the_mesh.sendSelfAdvertisement(16000, false);
} }
void loop() { void loop() {

View file

@ -197,7 +197,8 @@ void CommonCLI::handleCommand(uint32_t sender_timestamp, const char* command, ch
if (memcmp(command, "reboot", 6) == 0) { if (memcmp(command, "reboot", 6) == 0) {
_board->reboot(); // doesn't return _board->reboot(); // doesn't return
} else if (memcmp(command, "advert", 6) == 0) { } else if (memcmp(command, "advert", 6) == 0) {
_callbacks->sendSelfAdvertisement(1500); // longer delay, give CLI response time to be sent first // send flood advert
_callbacks->sendSelfAdvertisement(1500, true); // longer delay, give CLI response time to be sent first
strcpy(reply, "OK - Advert sent"); strcpy(reply, "OK - Advert sent");
} else if (memcmp(command, "clock sync", 10) == 0) { } else if (memcmp(command, "clock sync", 10) == 0) {
uint32_t curr = getRTCClock()->getCurrentTime(); uint32_t curr = getRTCClock()->getCurrentTime();

View file

@ -61,7 +61,7 @@ public:
virtual const char* getBuildDate() = 0; virtual const char* getBuildDate() = 0;
virtual const char* getRole() = 0; virtual const char* getRole() = 0;
virtual bool formatFileSystem() = 0; virtual bool formatFileSystem() = 0;
virtual void sendSelfAdvertisement(int delay_millis) = 0; virtual void sendSelfAdvertisement(int delay_millis, bool flood) = 0;
virtual void updateAdvertTimer() = 0; virtual void updateAdvertTimer() = 0;
virtual void updateFloodAdvertTimer() = 0; virtual void updateFloodAdvertTimer() = 0;
virtual void setLoggingOn(bool enable) = 0; virtual void setLoggingOn(bool enable) = 0;