mirror of
https://github.com/meshtastic/firmware.git
synced 2025-06-11 23:52:14 +00:00
Added new map report opt-in for compliance and limit map report (and default) to one hour (#6813)
* Added new map report opt-in for compliance and limit map report (and default) to one hour * Trunk
This commit is contained in:
parent
fc64bea698
commit
7cffd9ba70
@ -21,6 +21,7 @@
|
|||||||
#define default_neighbor_info_broadcast_secs 6 * 60 * 60
|
#define default_neighbor_info_broadcast_secs 6 * 60 * 60
|
||||||
#define min_node_info_broadcast_secs 60 * 60 // No regular broadcasts of more than once an hour
|
#define min_node_info_broadcast_secs 60 * 60 // No regular broadcasts of more than once an hour
|
||||||
#define min_neighbor_info_broadcast_secs 4 * 60 * 60
|
#define min_neighbor_info_broadcast_secs 4 * 60 * 60
|
||||||
|
#define default_map_publish_interval_secs 60 * 60
|
||||||
|
|
||||||
#define default_mqtt_address "mqtt.meshtastic.org"
|
#define default_mqtt_address "mqtt.meshtastic.org"
|
||||||
#define default_mqtt_username "meshdev"
|
#define default_mqtt_username "meshdev"
|
||||||
|
@ -328,6 +328,11 @@ NodeDB::NodeDB()
|
|||||||
moduleConfig.telemetry.health_update_interval = Default::getConfiguredOrMinimumValue(
|
moduleConfig.telemetry.health_update_interval = Default::getConfiguredOrMinimumValue(
|
||||||
moduleConfig.telemetry.health_update_interval, min_default_telemetry_interval_secs);
|
moduleConfig.telemetry.health_update_interval, min_default_telemetry_interval_secs);
|
||||||
}
|
}
|
||||||
|
if (moduleConfig.mqtt.has_map_report_settings &&
|
||||||
|
moduleConfig.mqtt.map_report_settings.publish_interval_secs < default_map_publish_interval_secs) {
|
||||||
|
moduleConfig.mqtt.map_report_settings.publish_interval_secs = default_map_publish_interval_secs;
|
||||||
|
}
|
||||||
|
|
||||||
// Ensure that the neighbor info update interval is coerced to the minimum
|
// Ensure that the neighbor info update interval is coerced to the minimum
|
||||||
moduleConfig.neighbor_info.update_interval =
|
moduleConfig.neighbor_info.update_interval =
|
||||||
Default::getConfiguredOrMinimumValue(moduleConfig.neighbor_info.update_interval, min_neighbor_info_broadcast_secs);
|
Default::getConfiguredOrMinimumValue(moduleConfig.neighbor_info.update_interval, min_neighbor_info_broadcast_secs);
|
||||||
|
@ -769,7 +769,8 @@ void MQTT::onSend(const meshtastic_MeshPacket &mp_encrypted, const meshtastic_Me
|
|||||||
|
|
||||||
void MQTT::perhapsReportToMap()
|
void MQTT::perhapsReportToMap()
|
||||||
{
|
{
|
||||||
if (!moduleConfig.mqtt.map_reporting_enabled || !(moduleConfig.mqtt.proxy_to_client_enabled || isConnectedDirectly()))
|
if (!moduleConfig.mqtt.map_reporting_enabled || !moduleConfig.mqtt.map_report_settings.should_report_location ||
|
||||||
|
!(moduleConfig.mqtt.proxy_to_client_enabled || isConnectedDirectly()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (Throttle::isWithinTimespanMs(last_report_to_map, map_publish_interval_msecs))
|
if (Throttle::isWithinTimespanMs(last_report_to_map, map_publish_interval_msecs))
|
||||||
@ -801,6 +802,7 @@ void MQTT::perhapsReportToMap()
|
|||||||
mapReport.region = config.lora.region;
|
mapReport.region = config.lora.region;
|
||||||
mapReport.modem_preset = config.lora.modem_preset;
|
mapReport.modem_preset = config.lora.modem_preset;
|
||||||
mapReport.has_default_channel = channels.hasDefaultChannel();
|
mapReport.has_default_channel = channels.hasDefaultChannel();
|
||||||
|
mapReport.has_opted_report_location = true;
|
||||||
|
|
||||||
// Set position with precision (same as in PositionModule)
|
// Set position with precision (same as in PositionModule)
|
||||||
if (map_position_precision < 32 && map_position_precision > 0) {
|
if (map_position_precision < 32 && map_position_precision > 0) {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "Default.h"
|
||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
|
|
||||||
#include "concurrency/OSThread.h"
|
#include "concurrency/OSThread.h"
|
||||||
@ -105,8 +106,7 @@ class MQTT : private concurrency::OSThread
|
|||||||
std::string mapTopic = "/2/map/"; // For protobuf-encoded MapReport messages
|
std::string mapTopic = "/2/map/"; // For protobuf-encoded MapReport messages
|
||||||
|
|
||||||
// For map reporting (only applies when enabled)
|
// For map reporting (only applies when enabled)
|
||||||
const uint32_t default_map_position_precision = 14; // defaults to max. offset of ~1459m
|
const uint32_t default_map_position_precision = 14; // defaults to max. offset of ~1459m
|
||||||
const uint32_t default_map_publish_interval_secs = 60 * 15; // defaults to 15 minutes
|
|
||||||
uint32_t last_report_to_map = 0;
|
uint32_t last_report_to_map = 0;
|
||||||
uint32_t map_position_precision = default_map_position_precision;
|
uint32_t map_position_precision = default_map_position_precision;
|
||||||
uint32_t map_publish_interval_msecs = default_map_publish_interval_secs * 1000;
|
uint32_t map_publish_interval_msecs = default_map_publish_interval_secs * 1000;
|
||||||
|
Loading…
Reference in New Issue
Block a user