mirror of
https://github.com/meshtastic/firmware.git
synced 2025-04-27 02:14:37 +00:00
Gut NodeDb and remove deprecated protos
This commit is contained in:
parent
bdcf17a3f7
commit
08f1ac785a
@ -1 +1 @@
|
|||||||
Subproject commit 57bd75ea8b3c4fe551dcaf1dcd402646878176a8
|
Subproject commit 7bf13761bbeebd6cfe0604d851cbce818655999d
|
@ -64,7 +64,7 @@ uint32_t error_address = 0;
|
|||||||
static uint8_t ourMacAddr[6];
|
static uint8_t ourMacAddr[6];
|
||||||
|
|
||||||
NodeDB::NodeDB()
|
NodeDB::NodeDB()
|
||||||
: nodes(devicestate.node_db), numNodes(&devicestate.node_db_count), meshNodes(devicestate.node_db_lite),
|
: meshNodes(devicestate.node_db_lite),
|
||||||
numMeshNodes(&devicestate.node_db_lite_count)
|
numMeshNodes(&devicestate.node_db_lite_count)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -284,9 +284,6 @@ void NodeDB::installDefaultChannels()
|
|||||||
|
|
||||||
void NodeDB::resetNodes()
|
void NodeDB::resetNodes()
|
||||||
{
|
{
|
||||||
devicestate.node_db_count = 0;
|
|
||||||
memset(devicestate.node_db, 0, sizeof(devicestate.node_db));
|
|
||||||
|
|
||||||
devicestate.node_db_lite_count = 0;
|
devicestate.node_db_lite_count = 0;
|
||||||
memset(devicestate.node_db_lite, 0, sizeof(devicestate.node_db_lite));
|
memset(devicestate.node_db_lite, 0, sizeof(devicestate.node_db_lite));
|
||||||
saveDeviceStateToDisk();
|
saveDeviceStateToDisk();
|
||||||
@ -297,12 +294,11 @@ void NodeDB::installDefaultDeviceState()
|
|||||||
LOG_INFO("Installing default DeviceState\n");
|
LOG_INFO("Installing default DeviceState\n");
|
||||||
memset(&devicestate, 0, sizeof(meshtastic_DeviceState));
|
memset(&devicestate, 0, sizeof(meshtastic_DeviceState));
|
||||||
|
|
||||||
*numNodes = 0;
|
*numMeshNodes = 0;
|
||||||
|
|
||||||
// init our devicestate with valid flags so protobuf writing/reading will work
|
// init our devicestate with valid flags so protobuf writing/reading will work
|
||||||
devicestate.has_my_node = true;
|
devicestate.has_my_node = true;
|
||||||
devicestate.has_owner = true;
|
devicestate.has_owner = true;
|
||||||
devicestate.node_db_count = 0;
|
|
||||||
devicestate.node_db_lite_count = 0;
|
devicestate.node_db_lite_count = 0;
|
||||||
devicestate.version = DEVICESTATE_CUR_VER;
|
devicestate.version = DEVICESTATE_CUR_VER;
|
||||||
devicestate.receive_queue_count = 0; // Not yet implemented FIXME
|
devicestate.receive_queue_count = 0; // Not yet implemented FIXME
|
||||||
@ -331,10 +327,8 @@ void NodeDB::init()
|
|||||||
|
|
||||||
// likewise - we always want the app requirements to come from the running appload
|
// likewise - we always want the app requirements to come from the running appload
|
||||||
myNodeInfo.min_app_version = 20300; // format is Mmmss (where M is 1+the numeric major number. i.e. 20120 means 1.1.20
|
myNodeInfo.min_app_version = 20300; // format is Mmmss (where M is 1+the numeric major number. i.e. 20120 means 1.1.20
|
||||||
myNodeInfo.max_channels = MAX_NUM_CHANNELS; // tell others the max # of channels we can understand
|
|
||||||
// Note! We do this after loading saved settings, so that if somehow an invalid nodenum was stored in preferences we won't
|
// Note! We do this after loading saved settings, so that if somehow an invalid nodenum was stored in preferences we won't
|
||||||
// keep using that nodenum forever. Crummy guess at our nodenum (but we will check against the nodedb to avoid conflicts)
|
// keep using that nodenum forever. Crummy guess at our nodenum (but we will check against the nodedb to avoid conflicts)
|
||||||
strncpy(myNodeInfo.firmware_version, optstr(APP_VERSION), sizeof(myNodeInfo.firmware_version));
|
|
||||||
pickNewNodeNum();
|
pickNewNodeNum();
|
||||||
|
|
||||||
// Set our board type so we can share it with others
|
// Set our board type so we can share it with others
|
||||||
@ -345,19 +339,6 @@ void NodeDB::init()
|
|||||||
info->user = owner;
|
info->user = owner;
|
||||||
info->has_user = true;
|
info->has_user = true;
|
||||||
|
|
||||||
if (*numNodes > 0) {
|
|
||||||
LOG_DEBUG("Legacy NodeDB detected... Migrating to NodeDBLite\n");
|
|
||||||
uint32_t readIndex = 0;
|
|
||||||
const meshtastic_NodeInfo *oldNodeInfo = nodeDB.readNextNodeInfo(readIndex);
|
|
||||||
while (oldNodeInfo != NULL) {
|
|
||||||
migrateToNodeInfoLite(oldNodeInfo);
|
|
||||||
oldNodeInfo = nodeDB.readNextNodeInfo(readIndex);
|
|
||||||
}
|
|
||||||
LOG_DEBUG("Migration complete! Clearing out legacy NodeDB...\n");
|
|
||||||
devicestate.node_db_count = 0;
|
|
||||||
memset(devicestate.node_db, 0, sizeof(devicestate.node_db));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef ARCH_ESP32
|
#ifdef ARCH_ESP32
|
||||||
Preferences preferences;
|
Preferences preferences;
|
||||||
preferences.begin("meshtastic", false);
|
preferences.begin("meshtastic", false);
|
||||||
@ -367,7 +348,7 @@ void NodeDB::init()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
resetRadioConfig(); // If bogus settings got saved, then fix them
|
resetRadioConfig(); // If bogus settings got saved, then fix them
|
||||||
LOG_DEBUG("region=%d, NODENUM=0x%x, dbsize=%d\n", config.lora.region, myNodeInfo.my_node_num, *numNodes);
|
LOG_DEBUG("region=%d, NODENUM=0x%x, dbsize=%d\n", config.lora.region, myNodeInfo.my_node_num, *numMeshNodes);
|
||||||
|
|
||||||
if (devicestateCRC != crc32Buffer(&devicestate, sizeof(devicestate)))
|
if (devicestateCRC != crc32Buffer(&devicestate, sizeof(devicestate)))
|
||||||
saveWhat |= SEGMENT_DEVICESTATE;
|
saveWhat |= SEGMENT_DEVICESTATE;
|
||||||
@ -613,14 +594,6 @@ void NodeDB::saveToDisk(int saveWhat)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const meshtastic_NodeInfo *NodeDB::readNextNodeInfo(uint32_t &readIndex)
|
|
||||||
{
|
|
||||||
if (readIndex < *numNodes)
|
|
||||||
return &nodes[readIndex++];
|
|
||||||
else
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
const meshtastic_NodeInfoLite *NodeDB::readNextMeshNode(uint32_t &readIndex)
|
const meshtastic_NodeInfoLite *NodeDB::readNextMeshNode(uint32_t &readIndex)
|
||||||
{
|
{
|
||||||
if (readIndex < *numMeshNodes)
|
if (readIndex < *numMeshNodes)
|
||||||
@ -798,17 +771,6 @@ uint8_t NodeDB::getMeshNodeChannel(NodeNum n)
|
|||||||
return info->channel;
|
return info->channel;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Find a node in our DB, return null for missing
|
|
||||||
/// NOTE: This function might be called from an ISR
|
|
||||||
meshtastic_NodeInfo *NodeDB::getNodeInfo(NodeNum n)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < *numNodes; i++)
|
|
||||||
if (nodes[i].num == n)
|
|
||||||
return &nodes[i];
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Find a node in our DB, return null for missing
|
/// Find a node in our DB, return null for missing
|
||||||
/// NOTE: This function might be called from an ISR
|
/// NOTE: This function might be called from an ISR
|
||||||
meshtastic_NodeInfoLite *NodeDB::getMeshNode(NodeNum n)
|
meshtastic_NodeInfoLite *NodeDB::getMeshNode(NodeNum n)
|
||||||
@ -854,57 +816,6 @@ meshtastic_NodeInfoLite *NodeDB::getOrCreateMeshNode(NodeNum n)
|
|||||||
return lite;
|
return lite;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NodeDB::migrateToNodeInfoLite(const meshtastic_NodeInfo *node)
|
|
||||||
{
|
|
||||||
meshtastic_NodeInfoLite *lite = getMeshNode(node->num);
|
|
||||||
|
|
||||||
if (!lite) {
|
|
||||||
if ((*numMeshNodes >= MAX_NUM_NODES) || (memGet.getFreeHeap() < meshtastic_NodeInfoLite_size * 3)) {
|
|
||||||
screen->print("warning: node_db_lite full! erasing oldest entry\n");
|
|
||||||
// look for oldest node and erase it
|
|
||||||
uint32_t oldest = UINT32_MAX;
|
|
||||||
int oldestIndex = -1;
|
|
||||||
for (int i = 0; i < *numMeshNodes; i++) {
|
|
||||||
if (meshNodes[i].last_heard < oldest) {
|
|
||||||
oldest = meshNodes[i].last_heard;
|
|
||||||
oldestIndex = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Shove the remaining nodes down the chain
|
|
||||||
for (int i = oldestIndex; i < *numMeshNodes - 1; i++) {
|
|
||||||
meshNodes[i] = meshNodes[i + 1];
|
|
||||||
}
|
|
||||||
(*numMeshNodes)--;
|
|
||||||
}
|
|
||||||
// add the node at the end
|
|
||||||
lite = &meshNodes[(*numMeshNodes)++];
|
|
||||||
|
|
||||||
// everything is missing except the nodenum
|
|
||||||
memset(lite, 0, sizeof(*lite));
|
|
||||||
lite->num = node->num;
|
|
||||||
lite->snr = node->snr;
|
|
||||||
lite->last_heard = node->last_heard;
|
|
||||||
lite->channel = node->channel;
|
|
||||||
|
|
||||||
if (node->has_position) {
|
|
||||||
lite->has_position = true;
|
|
||||||
lite->position.latitude_i = node->position.latitude_i;
|
|
||||||
lite->position.longitude_i = node->position.longitude_i;
|
|
||||||
lite->position.altitude = node->position.altitude;
|
|
||||||
lite->position.location_source = node->position.location_source;
|
|
||||||
lite->position.time = node->position.time;
|
|
||||||
}
|
|
||||||
if (node->has_user) {
|
|
||||||
lite->has_user = true;
|
|
||||||
lite->user = node->user;
|
|
||||||
}
|
|
||||||
if (node->has_device_metrics) {
|
|
||||||
lite->has_device_metrics = true;
|
|
||||||
lite->device_metrics = node->device_metrics;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Record an error that should be reported via analytics
|
/// Record an error that should be reported via analytics
|
||||||
void recordCriticalError(meshtastic_CriticalErrorCode code, uint32_t address, const char *filename)
|
void recordCriticalError(meshtastic_CriticalErrorCode code, uint32_t address, const char *filename)
|
||||||
{
|
{
|
||||||
|
@ -19,7 +19,7 @@ DeviceState versions used to be defined in the .proto file but really only this
|
|||||||
#define SEGMENT_DEVICESTATE 4
|
#define SEGMENT_DEVICESTATE 4
|
||||||
#define SEGMENT_CHANNELS 8
|
#define SEGMENT_CHANNELS 8
|
||||||
|
|
||||||
#define DEVICESTATE_CUR_VER 20
|
#define DEVICESTATE_CUR_VER 21
|
||||||
#define DEVICESTATE_MIN_VER DEVICESTATE_CUR_VER
|
#define DEVICESTATE_MIN_VER DEVICESTATE_CUR_VER
|
||||||
|
|
||||||
extern meshtastic_DeviceState devicestate;
|
extern meshtastic_DeviceState devicestate;
|
||||||
@ -45,9 +45,6 @@ class NodeDB
|
|||||||
// Eventually use a smarter datastructure
|
// Eventually use a smarter datastructure
|
||||||
// HashMap<NodeNum, NodeInfo> nodes;
|
// HashMap<NodeNum, NodeInfo> nodes;
|
||||||
// Note: these two references just point into our static array we serialize to/from disk
|
// Note: these two references just point into our static array we serialize to/from disk
|
||||||
meshtastic_NodeInfo *nodes;
|
|
||||||
pb_size_t *numNodes;
|
|
||||||
|
|
||||||
meshtastic_NodeInfoLite *meshNodes;
|
meshtastic_NodeInfoLite *meshNodes;
|
||||||
pb_size_t *numMeshNodes;
|
pb_size_t *numMeshNodes;
|
||||||
|
|
||||||
@ -137,18 +134,6 @@ class NodeDB
|
|||||||
private:
|
private:
|
||||||
/// Find a node in our DB, create an empty NodeInfoLite if missing
|
/// Find a node in our DB, create an empty NodeInfoLite if missing
|
||||||
meshtastic_NodeInfoLite *getOrCreateMeshNode(NodeNum n);
|
meshtastic_NodeInfoLite *getOrCreateMeshNode(NodeNum n);
|
||||||
void migrateToNodeInfoLite(const meshtastic_NodeInfo *node);
|
|
||||||
/// Find a node in our DB, return null for missing
|
|
||||||
meshtastic_NodeInfo *getNodeInfo(NodeNum n);
|
|
||||||
/// Allow the bluetooth layer to read our next nodeinfo record, or NULL if done reading
|
|
||||||
const meshtastic_NodeInfo *readNextNodeInfo(uint32_t &readIndex);
|
|
||||||
size_t getNumNodes() { return *numNodes; }
|
|
||||||
|
|
||||||
meshtastic_NodeInfo *getNodeByIndex(size_t x)
|
|
||||||
{
|
|
||||||
assert(x < *numNodes);
|
|
||||||
return &nodes[x];
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Notify observers of changes to the DB
|
/// Notify observers of changes to the DB
|
||||||
void notifyObservers(bool forceUpdate = false)
|
void notifyObservers(bool forceUpdate = false)
|
||||||
@ -228,10 +213,6 @@ inline uint32_t getConfiguredOrDefaultMs(uint32_t configuredInterval, uint32_t d
|
|||||||
|
|
||||||
/// Sometimes we will have Position objects that only have a time, so check for
|
/// Sometimes we will have Position objects that only have a time, so check for
|
||||||
/// valid lat/lon
|
/// valid lat/lon
|
||||||
static inline bool hasValidPosition(const meshtastic_NodeInfo *n)
|
|
||||||
{
|
|
||||||
return n->has_position && (n->position.latitude_i != 0 || n->position.longitude_i != 0);
|
|
||||||
}
|
|
||||||
static inline bool hasValidPosition(const meshtastic_NodeInfoLite *n)
|
static inline bool hasValidPosition(const meshtastic_NodeInfoLite *n)
|
||||||
{
|
{
|
||||||
return n->has_position && (n->position.latitude_i != 0 || n->position.longitude_i != 0);
|
return n->has_position && (n->position.latitude_i != 0 || n->position.longitude_i != 0);
|
||||||
|
File diff suppressed because one or more lines are too long
@ -603,60 +603,12 @@ typedef struct _meshtastic_MyNodeInfo {
|
|||||||
/* Tells the phone what our node number is, default starting value is
|
/* Tells the phone what our node number is, default starting value is
|
||||||
lowbyte of macaddr, but it will be fixed if that is already in use */
|
lowbyte of macaddr, but it will be fixed if that is already in use */
|
||||||
uint32_t my_node_num;
|
uint32_t my_node_num;
|
||||||
/* Deprecated in 2.1.x (Source from device_metadata)
|
|
||||||
Note: This flag merely means we detected a hardware GPS in our node.
|
|
||||||
Not the same as UserPreferences.location_sharing */
|
|
||||||
bool has_gps;
|
|
||||||
/* Deprecated in 2.1.x
|
|
||||||
The maximum number of 'software' channels that can be set on this node. */
|
|
||||||
uint32_t max_channels;
|
|
||||||
/* Deprecated in 2.1.x (Source from device_metadata)
|
|
||||||
0.0.5 etc... */
|
|
||||||
char firmware_version[18];
|
|
||||||
/* An error message we'd like to report back to the mothership through analytics.
|
|
||||||
It indicates a serious bug occurred on the device, the device coped with it,
|
|
||||||
but we still want to tell the devs about the bug.
|
|
||||||
This field will be cleared after the phone reads MyNodeInfo
|
|
||||||
(i.e. it will only be reported once)
|
|
||||||
a numeric error code to go with error message, zero means no error */
|
|
||||||
meshtastic_CriticalErrorCode error_code;
|
|
||||||
/* A numeric error address (nonzero if available) */
|
|
||||||
uint32_t error_address;
|
|
||||||
/* The total number of errors this node has ever encountered
|
|
||||||
(well - since the last time we discarded preferences) */
|
|
||||||
uint32_t error_count;
|
|
||||||
/* The total number of reboots this node has ever encountered
|
/* The total number of reboots this node has ever encountered
|
||||||
(well - since the last time we discarded preferences) */
|
(well - since the last time we discarded preferences) */
|
||||||
uint32_t reboot_count;
|
uint32_t reboot_count;
|
||||||
/* Deprecated in 2.1.x
|
|
||||||
Calculated bitrate of the current channel (in Bytes Per Second) */
|
|
||||||
float bitrate;
|
|
||||||
/* Deprecated in 2.1.x
|
|
||||||
How long before we consider a message abandoned and we can clear our
|
|
||||||
caches of any messages in flight Normally quite large to handle the worst case
|
|
||||||
message delivery time, 5 minutes.
|
|
||||||
Formerly called FLOOD_EXPIRE_TIME in the device code */
|
|
||||||
uint32_t message_timeout_msec;
|
|
||||||
/* The minimum app version that can talk to this device.
|
/* The minimum app version that can talk to this device.
|
||||||
Phone/PC apps should compare this to their build number and if too low tell the user they must update their app */
|
Phone/PC apps should compare this to their build number and if too low tell the user they must update their app */
|
||||||
uint32_t min_app_version;
|
uint32_t min_app_version;
|
||||||
/* Deprecated in 2.1.x (Only used on device to keep track of utilization)
|
|
||||||
24 time windows of 1hr each with the airtime transmitted out of the device per hour. */
|
|
||||||
pb_size_t air_period_tx_count;
|
|
||||||
uint32_t air_period_tx[8];
|
|
||||||
/* Deprecated in 2.1.x (Only used on device to keep track of utilization)
|
|
||||||
24 time windows of 1hr each with the airtime of valid packets for your mesh. */
|
|
||||||
pb_size_t air_period_rx_count;
|
|
||||||
uint32_t air_period_rx[8];
|
|
||||||
/* Deprecated in 2.1.x (Source from DeviceMetadata instead)
|
|
||||||
Is the device wifi capable? */
|
|
||||||
bool has_wifi;
|
|
||||||
/* Deprecated in 2.1.x (Source from DeviceMetrics telemetry payloads)
|
|
||||||
Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise). */
|
|
||||||
float channel_utilization;
|
|
||||||
/* Deprecated in 2.1.x (Source from DeviceMetrics telemetry payloads)
|
|
||||||
Percent of airtime for transmission used within the last hour. */
|
|
||||||
float air_util_tx;
|
|
||||||
} meshtastic_MyNodeInfo;
|
} meshtastic_MyNodeInfo;
|
||||||
|
|
||||||
/* Debug output from the device.
|
/* Debug output from the device.
|
||||||
@ -869,7 +821,6 @@ extern "C" {
|
|||||||
#define meshtastic_MeshPacket_delayed_ENUMTYPE meshtastic_MeshPacket_Delayed
|
#define meshtastic_MeshPacket_delayed_ENUMTYPE meshtastic_MeshPacket_Delayed
|
||||||
|
|
||||||
|
|
||||||
#define meshtastic_MyNodeInfo_error_code_ENUMTYPE meshtastic_CriticalErrorCode
|
|
||||||
|
|
||||||
#define meshtastic_LogRecord_level_ENUMTYPE meshtastic_LogRecord_Level
|
#define meshtastic_LogRecord_level_ENUMTYPE meshtastic_LogRecord_Level
|
||||||
|
|
||||||
@ -894,7 +845,7 @@ extern "C" {
|
|||||||
#define meshtastic_MqttClientProxyMessage_init_default {"", 0, {{0, {0}}}, 0}
|
#define meshtastic_MqttClientProxyMessage_init_default {"", 0, {{0, {0}}}, 0}
|
||||||
#define meshtastic_MeshPacket_init_default {0, 0, 0, 0, {meshtastic_Data_init_default}, 0, 0, 0, 0, 0, _meshtastic_MeshPacket_Priority_MIN, 0, _meshtastic_MeshPacket_Delayed_MIN}
|
#define meshtastic_MeshPacket_init_default {0, 0, 0, 0, {meshtastic_Data_init_default}, 0, 0, 0, 0, 0, _meshtastic_MeshPacket_Priority_MIN, 0, _meshtastic_MeshPacket_Delayed_MIN}
|
||||||
#define meshtastic_NodeInfo_init_default {0, false, meshtastic_User_init_default, false, meshtastic_Position_init_default, 0, 0, false, meshtastic_DeviceMetrics_init_default, 0}
|
#define meshtastic_NodeInfo_init_default {0, false, meshtastic_User_init_default, false, meshtastic_Position_init_default, 0, 0, false, meshtastic_DeviceMetrics_init_default, 0}
|
||||||
#define meshtastic_MyNodeInfo_init_default {0, 0, 0, "", _meshtastic_CriticalErrorCode_MIN, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, 0}
|
#define meshtastic_MyNodeInfo_init_default {0, 0, 0}
|
||||||
#define meshtastic_LogRecord_init_default {"", 0, "", _meshtastic_LogRecord_Level_MIN}
|
#define meshtastic_LogRecord_init_default {"", 0, "", _meshtastic_LogRecord_Level_MIN}
|
||||||
#define meshtastic_QueueStatus_init_default {0, 0, 0, 0}
|
#define meshtastic_QueueStatus_init_default {0, 0, 0, 0}
|
||||||
#define meshtastic_FromRadio_init_default {0, 0, {meshtastic_MeshPacket_init_default}}
|
#define meshtastic_FromRadio_init_default {0, 0, {meshtastic_MeshPacket_init_default}}
|
||||||
@ -912,7 +863,7 @@ extern "C" {
|
|||||||
#define meshtastic_MqttClientProxyMessage_init_zero {"", 0, {{0, {0}}}, 0}
|
#define meshtastic_MqttClientProxyMessage_init_zero {"", 0, {{0, {0}}}, 0}
|
||||||
#define meshtastic_MeshPacket_init_zero {0, 0, 0, 0, {meshtastic_Data_init_zero}, 0, 0, 0, 0, 0, _meshtastic_MeshPacket_Priority_MIN, 0, _meshtastic_MeshPacket_Delayed_MIN}
|
#define meshtastic_MeshPacket_init_zero {0, 0, 0, 0, {meshtastic_Data_init_zero}, 0, 0, 0, 0, 0, _meshtastic_MeshPacket_Priority_MIN, 0, _meshtastic_MeshPacket_Delayed_MIN}
|
||||||
#define meshtastic_NodeInfo_init_zero {0, false, meshtastic_User_init_zero, false, meshtastic_Position_init_zero, 0, 0, false, meshtastic_DeviceMetrics_init_zero, 0}
|
#define meshtastic_NodeInfo_init_zero {0, false, meshtastic_User_init_zero, false, meshtastic_Position_init_zero, 0, 0, false, meshtastic_DeviceMetrics_init_zero, 0}
|
||||||
#define meshtastic_MyNodeInfo_init_zero {0, 0, 0, "", _meshtastic_CriticalErrorCode_MIN, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, 0}
|
#define meshtastic_MyNodeInfo_init_zero {0, 0, 0}
|
||||||
#define meshtastic_LogRecord_init_zero {"", 0, "", _meshtastic_LogRecord_Level_MIN}
|
#define meshtastic_LogRecord_init_zero {"", 0, "", _meshtastic_LogRecord_Level_MIN}
|
||||||
#define meshtastic_QueueStatus_init_zero {0, 0, 0, 0}
|
#define meshtastic_QueueStatus_init_zero {0, 0, 0, 0}
|
||||||
#define meshtastic_FromRadio_init_zero {0, 0, {meshtastic_MeshPacket_init_zero}}
|
#define meshtastic_FromRadio_init_zero {0, 0, {meshtastic_MeshPacket_init_zero}}
|
||||||
@ -996,21 +947,8 @@ extern "C" {
|
|||||||
#define meshtastic_NodeInfo_device_metrics_tag 6
|
#define meshtastic_NodeInfo_device_metrics_tag 6
|
||||||
#define meshtastic_NodeInfo_channel_tag 7
|
#define meshtastic_NodeInfo_channel_tag 7
|
||||||
#define meshtastic_MyNodeInfo_my_node_num_tag 1
|
#define meshtastic_MyNodeInfo_my_node_num_tag 1
|
||||||
#define meshtastic_MyNodeInfo_has_gps_tag 2
|
|
||||||
#define meshtastic_MyNodeInfo_max_channels_tag 3
|
|
||||||
#define meshtastic_MyNodeInfo_firmware_version_tag 4
|
|
||||||
#define meshtastic_MyNodeInfo_error_code_tag 5
|
|
||||||
#define meshtastic_MyNodeInfo_error_address_tag 6
|
|
||||||
#define meshtastic_MyNodeInfo_error_count_tag 7
|
|
||||||
#define meshtastic_MyNodeInfo_reboot_count_tag 8
|
#define meshtastic_MyNodeInfo_reboot_count_tag 8
|
||||||
#define meshtastic_MyNodeInfo_bitrate_tag 9
|
|
||||||
#define meshtastic_MyNodeInfo_message_timeout_msec_tag 10
|
|
||||||
#define meshtastic_MyNodeInfo_min_app_version_tag 11
|
#define meshtastic_MyNodeInfo_min_app_version_tag 11
|
||||||
#define meshtastic_MyNodeInfo_air_period_tx_tag 12
|
|
||||||
#define meshtastic_MyNodeInfo_air_period_rx_tag 13
|
|
||||||
#define meshtastic_MyNodeInfo_has_wifi_tag 14
|
|
||||||
#define meshtastic_MyNodeInfo_channel_utilization_tag 15
|
|
||||||
#define meshtastic_MyNodeInfo_air_util_tx_tag 16
|
|
||||||
#define meshtastic_LogRecord_message_tag 1
|
#define meshtastic_LogRecord_message_tag 1
|
||||||
#define meshtastic_LogRecord_time_tag 2
|
#define meshtastic_LogRecord_time_tag 2
|
||||||
#define meshtastic_LogRecord_source_tag 3
|
#define meshtastic_LogRecord_source_tag 3
|
||||||
@ -1173,21 +1111,8 @@ X(a, STATIC, SINGULAR, UINT32, channel, 7)
|
|||||||
|
|
||||||
#define meshtastic_MyNodeInfo_FIELDLIST(X, a) \
|
#define meshtastic_MyNodeInfo_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, my_node_num, 1) \
|
X(a, STATIC, SINGULAR, UINT32, my_node_num, 1) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, has_gps, 2) \
|
|
||||||
X(a, STATIC, SINGULAR, UINT32, max_channels, 3) \
|
|
||||||
X(a, STATIC, SINGULAR, STRING, firmware_version, 4) \
|
|
||||||
X(a, STATIC, SINGULAR, UENUM, error_code, 5) \
|
|
||||||
X(a, STATIC, SINGULAR, UINT32, error_address, 6) \
|
|
||||||
X(a, STATIC, SINGULAR, UINT32, error_count, 7) \
|
|
||||||
X(a, STATIC, SINGULAR, UINT32, reboot_count, 8) \
|
X(a, STATIC, SINGULAR, UINT32, reboot_count, 8) \
|
||||||
X(a, STATIC, SINGULAR, FLOAT, bitrate, 9) \
|
X(a, STATIC, SINGULAR, UINT32, min_app_version, 11)
|
||||||
X(a, STATIC, SINGULAR, UINT32, message_timeout_msec, 10) \
|
|
||||||
X(a, STATIC, SINGULAR, UINT32, min_app_version, 11) \
|
|
||||||
X(a, STATIC, REPEATED, UINT32, air_period_tx, 12) \
|
|
||||||
X(a, STATIC, REPEATED, UINT32, air_period_rx, 13) \
|
|
||||||
X(a, STATIC, SINGULAR, BOOL, has_wifi, 14) \
|
|
||||||
X(a, STATIC, SINGULAR, FLOAT, channel_utilization, 15) \
|
|
||||||
X(a, STATIC, SINGULAR, FLOAT, air_util_tx, 16)
|
|
||||||
#define meshtastic_MyNodeInfo_CALLBACK NULL
|
#define meshtastic_MyNodeInfo_CALLBACK NULL
|
||||||
#define meshtastic_MyNodeInfo_DEFAULT NULL
|
#define meshtastic_MyNodeInfo_DEFAULT NULL
|
||||||
|
|
||||||
@ -1329,7 +1254,7 @@ extern const pb_msgdesc_t meshtastic_DeviceMetadata_msg;
|
|||||||
#define meshtastic_LogRecord_size 81
|
#define meshtastic_LogRecord_size 81
|
||||||
#define meshtastic_MeshPacket_size 321
|
#define meshtastic_MeshPacket_size 321
|
||||||
#define meshtastic_MqttClientProxyMessage_size 501
|
#define meshtastic_MqttClientProxyMessage_size 501
|
||||||
#define meshtastic_MyNodeInfo_size 179
|
#define meshtastic_MyNodeInfo_size 18
|
||||||
#define meshtastic_NeighborInfo_size 142
|
#define meshtastic_NeighborInfo_size 142
|
||||||
#define meshtastic_Neighbor_size 11
|
#define meshtastic_Neighbor_size 11
|
||||||
#define meshtastic_NodeInfo_size 261
|
#define meshtastic_NodeInfo_size 261
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
#define MAX_RX_TOPHONE 32
|
#define MAX_RX_TOPHONE 32
|
||||||
|
|
||||||
/// max number of nodes allowed in the mesh
|
/// max number of nodes allowed in the mesh
|
||||||
#define MAX_NUM_NODES (member_size(meshtastic_DeviceState, node_db) / member_size(meshtastic_DeviceState, node_db[0]))
|
#define MAX_NUM_NODES (member_size(meshtastic_DeviceState, node_db_lite) / member_size(meshtastic_DeviceState, node_db_lite[0]))
|
||||||
|
|
||||||
/// Max number of channels allowed
|
/// Max number of channels allowed
|
||||||
#define MAX_NUM_CHANNELS (member_size(meshtastic_ChannelFile, channels) / member_size(meshtastic_ChannelFile, channels[0]))
|
#define MAX_NUM_CHANNELS (member_size(meshtastic_ChannelFile, channels) / member_size(meshtastic_ChannelFile, channels[0]))
|
||||||
|
Loading…
Reference in New Issue
Block a user