mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-07-30 08:48:12 +00:00
* new CLI config: flood.max.advert (default 16)
This commit is contained in:
@@ -431,6 +431,7 @@ bool MyMesh::allowPacketForward(const mesh::Packet *packet) {
|
|||||||
if (packet->isRouteFlood()) {
|
if (packet->isRouteFlood()) {
|
||||||
if (packet->getPathHashCount() >= _prefs.flood_max) return false;
|
if (packet->getPathHashCount() >= _prefs.flood_max) return false;
|
||||||
if (packet->getRouteType() == ROUTE_TYPE_FLOOD && packet->getPathHashCount() >= _prefs.flood_max_unscoped) return false;
|
if (packet->getRouteType() == ROUTE_TYPE_FLOOD && packet->getPathHashCount() >= _prefs.flood_max_unscoped) return false;
|
||||||
|
if (packet->getPayloadType() == PAYLOAD_TYPE_ADVERT && packet->getPathHashCount() >= _prefs.flood_max_advert) return false;
|
||||||
}
|
}
|
||||||
if (packet->isRouteFlood() && recv_pkt_region == NULL) {
|
if (packet->isRouteFlood() && recv_pkt_region == NULL) {
|
||||||
MESH_DEBUG_PRINTLN("allowPacketForward: unknown transport code, or wildcard not allowed for FLOOD packet");
|
MESH_DEBUG_PRINTLN("allowPacketForward: unknown transport code, or wildcard not allowed for FLOOD packet");
|
||||||
@@ -890,6 +891,7 @@ MyMesh::MyMesh(mesh::MainBoard &board, mesh::Radio &radio, mesh::MillisecondCloc
|
|||||||
_prefs.flood_advert_interval = 47; // 47 hours
|
_prefs.flood_advert_interval = 47; // 47 hours
|
||||||
_prefs.flood_max = 64;
|
_prefs.flood_max = 64;
|
||||||
_prefs.flood_max_unscoped = 64;
|
_prefs.flood_max_unscoped = 64;
|
||||||
|
_prefs.flood_max_advert = 16;
|
||||||
_prefs.interference_threshold = 0; // disabled
|
_prefs.interference_threshold = 0; // disabled
|
||||||
|
|
||||||
// bridge defaults
|
// bridge defaults
|
||||||
|
|||||||
@@ -285,6 +285,7 @@ bool MyMesh::allowPacketForward(const mesh::Packet *packet) {
|
|||||||
if (packet->isRouteFlood()) {
|
if (packet->isRouteFlood()) {
|
||||||
if (packet->getPathHashCount() >= _prefs.flood_max) return false;
|
if (packet->getPathHashCount() >= _prefs.flood_max) return false;
|
||||||
if (packet->getRouteType() == ROUTE_TYPE_FLOOD && packet->getPathHashCount() >= _prefs.flood_max_unscoped) return false;
|
if (packet->getRouteType() == ROUTE_TYPE_FLOOD && packet->getPathHashCount() >= _prefs.flood_max_unscoped) return false;
|
||||||
|
if (packet->getPayloadType() == PAYLOAD_TYPE_ADVERT && packet->getPathHashCount() >= _prefs.flood_max_advert) return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -647,6 +648,7 @@ MyMesh::MyMesh(mesh::MainBoard &board, mesh::Radio &radio, mesh::MillisecondCloc
|
|||||||
_prefs.flood_advert_interval = 47; // 47 hours
|
_prefs.flood_advert_interval = 47; // 47 hours
|
||||||
_prefs.flood_max = 64;
|
_prefs.flood_max = 64;
|
||||||
_prefs.flood_max_unscoped = 64;
|
_prefs.flood_max_unscoped = 64;
|
||||||
|
_prefs.flood_max_advert = 16;
|
||||||
_prefs.interference_threshold = 0; // disabled
|
_prefs.interference_threshold = 0; // disabled
|
||||||
#ifdef ROOM_PASSWORD
|
#ifdef ROOM_PASSWORD
|
||||||
StrHelper::strncpy(_prefs.guest_password, ROOM_PASSWORD, sizeof(_prefs.guest_password));
|
StrHelper::strncpy(_prefs.guest_password, ROOM_PASSWORD, sizeof(_prefs.guest_password));
|
||||||
|
|||||||
@@ -90,7 +90,8 @@ void CommonCLI::loadPrefsInt(FILESYSTEM* fs, const char* filename) {
|
|||||||
file.read((uint8_t *)_prefs->owner_info, sizeof(_prefs->owner_info)); // 170
|
file.read((uint8_t *)_prefs->owner_info, sizeof(_prefs->owner_info)); // 170
|
||||||
file.read((uint8_t *)&_prefs->rx_boosted_gain, sizeof(_prefs->rx_boosted_gain)); // 290
|
file.read((uint8_t *)&_prefs->rx_boosted_gain, sizeof(_prefs->rx_boosted_gain)); // 290
|
||||||
file.read((uint8_t *)&_prefs->flood_max_unscoped, sizeof(_prefs->flood_max_unscoped)); // 291
|
file.read((uint8_t *)&_prefs->flood_max_unscoped, sizeof(_prefs->flood_max_unscoped)); // 291
|
||||||
// next: 292
|
file.read((uint8_t *)&_prefs->flood_max_advert, sizeof(_prefs->flood_max_advert)); // 292
|
||||||
|
// next: 293
|
||||||
|
|
||||||
// sanitise bad pref values
|
// sanitise bad pref values
|
||||||
_prefs->rx_delay_base = constrain(_prefs->rx_delay_base, 0, 20.0f);
|
_prefs->rx_delay_base = constrain(_prefs->rx_delay_base, 0, 20.0f);
|
||||||
@@ -182,7 +183,8 @@ void CommonCLI::savePrefs(FILESYSTEM* fs) {
|
|||||||
file.write((uint8_t *)_prefs->owner_info, sizeof(_prefs->owner_info)); // 170
|
file.write((uint8_t *)_prefs->owner_info, sizeof(_prefs->owner_info)); // 170
|
||||||
file.write((uint8_t *)&_prefs->rx_boosted_gain, sizeof(_prefs->rx_boosted_gain)); // 290
|
file.write((uint8_t *)&_prefs->rx_boosted_gain, sizeof(_prefs->rx_boosted_gain)); // 290
|
||||||
file.write((uint8_t *)&_prefs->flood_max_unscoped, sizeof(_prefs->flood_max_unscoped)); // 291
|
file.write((uint8_t *)&_prefs->flood_max_unscoped, sizeof(_prefs->flood_max_unscoped)); // 291
|
||||||
// next: 292
|
file.write((uint8_t *)&_prefs->flood_max_advert, sizeof(_prefs->flood_max_advert)); // 292
|
||||||
|
// next: 293
|
||||||
|
|
||||||
file.close();
|
file.close();
|
||||||
}
|
}
|
||||||
@@ -610,19 +612,28 @@ void CommonCLI::handleSetCmd(uint32_t sender_timestamp, char* command, char* rep
|
|||||||
} else {
|
} else {
|
||||||
strcpy(reply, "Error, must be 0-2");
|
strcpy(reply, "Error, must be 0-2");
|
||||||
}
|
}
|
||||||
} else if (memcmp(config, "flood.max ", 10) == 0) {
|
} else if (memcmp(config, "flood.max.unscoped ", 19) == 0) {
|
||||||
uint8_t m = atoi(&config[10]);
|
uint8_t m = atoi(&config[19]);
|
||||||
if (m <= 64) {
|
if (m <= 64) {
|
||||||
_prefs->flood_max = m;
|
_prefs->flood_max_unscoped = m;
|
||||||
savePrefs();
|
savePrefs();
|
||||||
strcpy(reply, "OK");
|
strcpy(reply, "OK");
|
||||||
} else {
|
} else {
|
||||||
strcpy(reply, "Error, max 64");
|
strcpy(reply, "Error, max 64");
|
||||||
}
|
}
|
||||||
} else if (memcmp(config, "flood.max.unscoped ", 19) == 0) {
|
} else if (memcmp(config, "flood.max.advert ", 17) == 0) {
|
||||||
uint8_t m = atoi(&config[19]);
|
uint8_t m = atoi(&config[17]);
|
||||||
if (m <= 64) {
|
if (m <= 64) {
|
||||||
_prefs->flood_max_unscoped = m;
|
_prefs->flood_max_advert = m;
|
||||||
|
savePrefs();
|
||||||
|
strcpy(reply, "OK");
|
||||||
|
} else {
|
||||||
|
strcpy(reply, "Error, max 64");
|
||||||
|
}
|
||||||
|
} else if (memcmp(config, "flood.max ", 10) == 0) {
|
||||||
|
uint8_t m = atoi(&config[10]);
|
||||||
|
if (m <= 64) {
|
||||||
|
_prefs->flood_max = m;
|
||||||
savePrefs();
|
savePrefs();
|
||||||
strcpy(reply, "OK");
|
strcpy(reply, "OK");
|
||||||
} else {
|
} else {
|
||||||
@@ -803,6 +814,8 @@ void CommonCLI::handleGetCmd(uint32_t sender_timestamp, char* command, char* rep
|
|||||||
sprintf(reply, "> %s", StrHelper::ftoa(_prefs->rx_delay_base));
|
sprintf(reply, "> %s", StrHelper::ftoa(_prefs->rx_delay_base));
|
||||||
} else if (memcmp(config, "txdelay", 7) == 0) {
|
} else if (memcmp(config, "txdelay", 7) == 0) {
|
||||||
sprintf(reply, "> %s", StrHelper::ftoa(_prefs->tx_delay_factor));
|
sprintf(reply, "> %s", StrHelper::ftoa(_prefs->tx_delay_factor));
|
||||||
|
} else if (memcmp(config, "flood.max.advert", 16) == 0) {
|
||||||
|
sprintf(reply, "> %d", (uint32_t)_prefs->flood_max_advert);
|
||||||
} else if (memcmp(config, "flood.max.unscoped", 18) == 0) {
|
} else if (memcmp(config, "flood.max.unscoped", 18) == 0) {
|
||||||
sprintf(reply, "> %d", (uint32_t)_prefs->flood_max_unscoped);
|
sprintf(reply, "> %d", (uint32_t)_prefs->flood_max_unscoped);
|
||||||
} else if (memcmp(config, "flood.max", 9) == 0) {
|
} else if (memcmp(config, "flood.max", 9) == 0) {
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ struct NodePrefs { // persisted to file
|
|||||||
float bw;
|
float bw;
|
||||||
uint8_t flood_max;
|
uint8_t flood_max;
|
||||||
uint8_t flood_max_unscoped;
|
uint8_t flood_max_unscoped;
|
||||||
|
uint8_t flood_max_advert;
|
||||||
uint8_t interference_threshold;
|
uint8_t interference_threshold;
|
||||||
uint8_t agc_reset_interval; // secs / 4
|
uint8_t agc_reset_interval; // secs / 4
|
||||||
// Bridge settings
|
// Bridge settings
|
||||||
|
|||||||
Reference in New Issue
Block a user