mirror of
https://github.com/alexhopeoconnor/firmware.git
synced 2026-10-13 23:21:19 +10:00
* Clamp position precision on public / known-keys (Compliance) * Fix review comments: bounds check, all-channel precision clamp, disabled channel guard * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Refactor position precision comments for clarity and update channel configuration handling in AdminModule * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
21 lines
1.2 KiB
C
21 lines
1.2 KiB
C
#pragma once
|
|
|
|
#include "meshtastic/channel.pb.h"
|
|
#include "meshtastic/mesh.pb.h"
|
|
#include <stdint.h>
|
|
|
|
// Max precision on a publicly-decryptable channel. CCPA "precise geolocation" = within a ~564m (1,850ft) radius.
|
|
// Precision is bit-truncation of latitude_i/longitude_i: the latitude cell stays ~constant in meters worldwide
|
|
// (~700m at 15 bits), while only the longitude cell varies — widest at the equator, narrowing toward the poles.
|
|
// 15 also matches the MQTT map-report public precision ceiling.
|
|
#define MAX_POSITION_PRECISION_PUBLIC_KEY 15
|
|
|
|
// Configured precision as-is; does NOT apply the public-key clamp -- use the channelIndex overload for the on-wire value.
|
|
uint32_t getPositionPrecisionForChannel(const meshtastic_Channel &channel);
|
|
|
|
// Configured precision, clamped to MAX_POSITION_PRECISION_PUBLIC_KEY when the channel's effective key is publicly decryptable.
|
|
uint32_t getPositionPrecisionForChannel(uint8_t channelIndex);
|
|
void applyPositionPrecision(meshtastic_Position &position, uint32_t precision);
|
|
bool applyPositionPrecision(meshtastic_MeshPacket &packet, uint32_t precision);
|
|
bool applyPositionPrecisionForChannel(meshtastic_MeshPacket &packet, uint8_t channelIndex);
|