Giter Site home page Giter Site logo

protobufs's Introduction

Meshtastic Protobuf Definitions

CI CLA assistant Fiscal Contributors Vercel

Overview

The Protobuf message definitions for the Meshtastic project (used by apps and the device firmware).

Documentation/API Reference

Stats

Alt

protobufs's People

Contributors

a-f-g-u-c avatar ajmcquilkin avatar andrekir avatar android606 avatar caveman99 avatar charminultra avatar crossan007 avatar garthvh avatar geeksville avatar gjelsoe avatar guvwaf avatar heltec-aaron-lee avatar joshpirihi avatar jp-bennett avatar markbirss avatar mc-hamster avatar mkinney avatar mrekin avatar ndoo avatar neilhao avatar prampec avatar puzzled-pancake avatar ricinnewmexico avatar s5nc avatar sachaw avatar sigmahour avatar srichs avatar thebentern avatar tobymurray avatar uhuruhashimoto avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

protobufs's Issues

Not all emojis can be represented as fixed 32 bit values

Noticed that in Waypoint and the Data messages emojis are represented using fixed 32 bit values:

/*
* Designator icon for the waypoint in the form of a unicode emoji
*/
fixed32 icon = 8;
and
/*
* Defaults to false. If true, then what is in the payload should be treated as an emoji like giving
* a message a heart or poop emoji.
*/
fixed32 emoji = 8;

Noticed in the Android app that for waypoints some emojis don't work, or show different icons. For example, the pirate flag emoji just shows as a black flag on the map.

Add Wind Speed to Environment Metrics, Remove Power

Add windspeed to Environment metrics to support serially connected weather stations and hopefully annenometers if we can find some suitable hardware.

Also remove the power fields from this message that were hacked on here.

GPS Improvements

Proposal:

Reduce uncertainty about device GPS config:

  1. Remove specific fields: gps_accept_2d, gps_max_dop and likely more, assume sensible defaults.
  2. Make the gps_operation field a boolean, rename gps_disabled
  3. Make the location_share field a boolean

TTL on NodeDB[Feature Request]:

Platform

ESP32

Description

Currently MQTT nodes lock-up with large node databases. Work around is to soft reset the node and quickly reset NodeDB.

Request to set a TTL on the NodeDB to about 60 minutes (RF and MQTT nodes). If nodes aren't heard within the 60 minutes - They're dropped from the DB.

Rename and repurpose environmental plugin

Proposal:

Repurpose the existing environmental plugin to be a generic telemetry module.

The functionality should include:

  1. Allow rapid streaming of AirTime, BatteryLevel, ChannelUtil and other high frequency data over the phone api, likely to be own message:
message deviceMetric  {

  float channel_utilization = 1;

  float air_util_tx = 2;

  int32 battery_level = 3;
}
  1. Allow generic sensor data to be sent over the mesh (current functionality)
  2. For the mesh traffic, have a flagged enum field (in radioConfig.telemetry) to determine what sensor data is sent (identical to the existing position_flags field), another generic setting to determine the interval

Move plugin configuration to its own section

There are a few FIXMEs noting the fact that plugins currently configured in RadioConfig.UserPreferences should have their own section. Is this as simple as adding a RadioConfig.PluginPreferences and updating the plugin code in meshtastic-device? If so, I'm happy to submit a PR for it, I'm just wondering how often protobuf changes are propagated to the other projects.

Add Telemetry Type: Compass

In order to support dynamic heading from the compass to supplement/replace the derived heading from GPS, it would help to add a telemetry type for Compass sensors. These sensors all at least provide their raw 3-axis measurements. Some also will provide a derived 2d azimuth in the x/y plane that can be used after calibration directly.

Remove Canned Messages Parts 2-4

Using all 4 canned message parts uses a ton of memory and slows down the device leading to a bad experience. One part stores enough messages for most uses and is a much better user experience

This is performing badly with multiple parts in 1.2 and 1.3 devices are doing quite a bit more.

Restructure radioConfig

Proposal:

To eliminate having a flat configuration structure, restructure the RadioConfig message as follows:

#before:

message RadioConfig {

  UserPreferences preferences = 1;

}
#after:

message RadioConfig {

  oneof payloadVariant {

    ModemConfig modem_config = 1;

    GpsConfig gps_config = 2;

    PowerConfig power_config = 3;

    MQTTConfig mqtt_config = 3;

  }
}

Decision:

Do people want to see Plugin(module) configuration appear at the same level as the rest of the config, or nested even further e.g:

#after:

message ModuleConfig {

  oneof payloadVariant {

    StoreForwardConfig store_forward_config = 1;

  }
}

message RadioConfig {

  oneof payloadVariant {

    ...

    ModuleConfig module_config = 4

  }
}

Add Speed & Heading to GPS data

Category

Other

Hardware

T-Beam

Firmware Version

1.3.0

Description

Would the group consider adding Speed(MPH) and Heading (degrees) to the Existing GPS DATA to be consumed in the API for web/app etc...

this data is already in the existing NMEA data and used in "NMEA GNSS modules, https://github.com/meshtastic/Meshtastic-device/blob/master/src/gps/NMEAGPS.h"

using tinygps++ (the current GPS library) you call GPSobject.speed.mph() and GPSobject.heading()

Relevant log output

No response

Unmappable character (0x98) for encoding windows-1251

Could you replace quote characters in two places in comments inside Mesh.proto. Windows cannot build protos project with following error:

main\java\com\geeksville\mesh\MeshProtos.java:11113: error: unmappable character (0x98) for encoding windows-1251
* then messages marked as reliable and finally �?background’ packets like periodic position updates.

and

 * field in MeshPacket called �?priority’.

[Feature Request]: New Lost and Found device role

Platform

NRF52, ESP32

Description

I propose a new role: Lost_and_Found. The idea behind this role is to address "SOS beacon" requests users have had, and to add new functionality not present in any of the current roles.

I also propose a new admin message that can change a device's role to this new lost_and_found one, so it can be done remotely via the mesh, to support one of two new use cases.

  • Use case 1: If a device is in Client mode, and either the person using it or the device itself is lost, remotely changing the device's role to Lost_and_Found will cause it to begin sending location packet updates at a configurable period of time (perhaps with a 1 minute default period) Either the device's onboard GPS module, the user's phone position data, or the last known position will be broadcast to the mesh with a canned message stating "I'm lost! Current pos: lat/long". This would satisfy users' request for an SOS feature, without necessarily characterizing it as a rescue feature but implementing a similar function.

  • Use case 1 modifier: Allow remote nodes, ideally only ones authorized to send admin messages, to change a remote device's role back to Client when the device in question is located, or to counter accidental or deliberate beacon spamming.

  • Use case 2: Same as use case 1, but the user manually changes their device role to Lost_and_Found. There should eventually be an easier way to do this besides changing the role in the current mobile app settings, such as a new app setting entry that has a single button labeled "Enable Lost & Found Beacon" that is not buried within app/device settings. It would ideally require user confirmation, perhaps even twice ("Are you really sure?") before activation to avoid accidental spamming of the mesh. Also some disclaimer that this does NOT alert search and rescue organizations, only other mesh devices would be necessary to avoid confusion.

  • Use case 3: Animal tracker, such as for a lost dog wearing a Meshtastic device with Tracker role configured. Same as use case 1 above, where the animal's owner would remotely set the device role to lost_and_found to help locate the lost animal.

  • Use case 1/2/3 enabler: Include a configurable Lost_and_Found role beacon period, with a reasonable default such as 1-3 minutes.

  • Use case 1/2/3 modifier: Include a setting for messages sent when there is no change in position for # (configurable) minutes; e.g. "(node name) No movement for # minutes", to advertise the node and/or user have not moved. Perhaps could rely on smart broadcast's movement distance threshold?

Consistent enum naming

Currently we use both CamelCase and UPPER_SNAKE_CASE, camel seems to be the most widely used here.

Protobuf Compilation not Working after Namespacing

Super excited about the namespace change! One issue -- I'm not able to compile files with the new import style of import "meshtastic/FILE.proto". I'm pointing protoc towards the new protobufs/meshtastic directory, but it will only compile when I replace all import "meshtastic/FILE.proto" imports with import "FILE.proto". Not super familiar with protobuf compilation so very possible I'm doing something wrong.

Add support for RP2040_DIY variant

SOC

Other

Lora IC

sx1262

Product Link

https://github.com/paoloponzano/ponzy-meshtastic.git

Description

Hi, i'd like to contribute to the firmware adding the needed changes to support a DIY variant based on a RP2040 board. I currently built one using a VCC-GND RP2040, eByte E22-900M30S radio module and common oled display. It has run without problems since last month and power consumption is great too. It could be interesting to those wanting to build a cheap node. Bluetooth support is ot of my skills for now
(photo: https://media.discordapp.net/attachments/919642584480112750/1215576756937822219/camphoto_824023566.jpg?ex=65fd4113&is=65eacc13&hm=782217e6a89a2caf07acfcda50664c0fdfc9bf37f57f4addfbea66fe6c8c19f2&=&format=webp&width=895&height=671)

This might be useful for who wants to use the ebyte module with other boards too.

How to extract message id directly from protobuff?

Hi, I am writing a small " router " application for meshtastic mqtt messages. I need to extract the message ID from the raw message that the nodes send to the mqtt broker. However, I would like to not use the meshtastic library or any protobuff (I am writing my application in go)

There is some way to extract the message ID directly from the raw data without using protobuff libraries?

I tried to search on the docs but it appears that there isn’t any indication on how the data are encoded.

I also tried to look at some data with a hex editor and I wasn’t able to find the message id.

Can anyone help me?

Best regards, Lorenzo

[Feature Request]: add temperature and pressure sensor BMP180 (and BMP085)

Platform

ESP32

Description

The "old" BMP180 sensors, which are way cheaper than the currently supported BMP280 and about 1/3 smaller, basically provide the same funcionality as the BMP280. AFAIK, the only significant difference is that the BMP180 only supports I2C, whereas the newer BMP280 also supports SPI (coming with a larger footprint).

The BMP180 is supported by the Adafruit Library for the BMP085, and i already did a first working implementation based on this library.

The changes would basically be an additional entry in TelemetrySensorType in the protobuf repository, and for the firmware the addition of the BMP085 library, a new class BMP085Sensor and some additions in the environmental telemetry code.

Getting Errors when generating new protos using swift protobuf

Generating admin.proto...
module_config.proto:90:7: "DEFAULT" is already defined in "ModuleConfig.SerialConfig".
module_config.proto:90:7: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "DEFAULT" must be unique within "ModuleConfig.SerialConfig", not just within "Serial_Mode".
mesh.proto:8:1: Import "module_config.proto" was not found or had errors.
mesh.proto:83:5: "UNSET" is already defined in "Position".
mesh.proto:83:5: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "UNSET" must be unique within "Position", not just within "AltSource".
mesh.proto:88:5: "MANUAL" is already defined in "Position".
mesh.proto:88:5: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "MANUAL" must be unique within "Position", not just within "AltSource".
mesh.proto:93:5: "GPS_INTERNAL" is already defined in "Position".
mesh.proto:93:5: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "GPS_INTERNAL" must be unique within "Position", not just within "AltSource".
mesh.proto:98:5: "GPS_EXTERNAL" is already defined in "Position".
mesh.proto:98:5: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "GPS_EXTERNAL" must be unique within "Position", not just within "AltSource".
mesh.proto:218:3: "UNSET" is already defined in file "telemetry.proto".
mesh.proto:218:3: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "UNSET" must be unique within the global scope, not just within "HardwareModel".
mesh.proto:838:3: "UNSET" is already defined in file "telemetry.proto".
mesh.proto:838:3: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "UNSET" must be unique within the global scope, not just within "Constants".
mesh.proto:1234:5: "ModuleConfig" is not defined.
admin.proto:10:1: Import "mesh.proto" was not found or had errors.
admin.proto:11:1: Import "module_config.proto" was not found or had errors.
admin.proto:128:5: "User" is not defined.
admin.proto:148:5: "ModuleConfig" is not defined.
admin.proto:178:5: "User" is not defined.
admin.proto:197:5: "ModuleConfig" is not defined.
Generating apponly.proto...
Generating cannedmessages.proto...
Generating channel.proto...
Generating config.proto...
Generating device_metadata.proto...
Generating deviceonly.proto...
module_config.proto:90:7: "DEFAULT" is already defined in "ModuleConfig.SerialConfig".
module_config.proto:90:7: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "DEFAULT" must be unique within "ModuleConfig.SerialConfig", not just within "Serial_Mode".
mesh.proto:8:1: Import "module_config.proto" was not found or had errors.
mesh.proto:83:5: "UNSET" is already defined in "Position".
mesh.proto:83:5: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "UNSET" must be unique within "Position", not just within "AltSource".
mesh.proto:88:5: "MANUAL" is already defined in "Position".
mesh.proto:88:5: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "MANUAL" must be unique within "Position", not just within "AltSource".
mesh.proto:93:5: "GPS_INTERNAL" is already defined in "Position".
mesh.proto:93:5: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "GPS_INTERNAL" must be unique within "Position", not just within "AltSource".
mesh.proto:98:5: "GPS_EXTERNAL" is already defined in "Position".
mesh.proto:98:5: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "GPS_EXTERNAL" must be unique within "Position", not just within "AltSource".
mesh.proto:218:3: "UNSET" is already defined in file "telemetry.proto".
mesh.proto:218:3: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "UNSET" must be unique within the global scope, not just within "HardwareModel".
mesh.proto:838:3: "UNSET" is already defined in file "telemetry.proto".
mesh.proto:838:3: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "UNSET" must be unique within the global scope, not just within "Constants".
mesh.proto:1234:5: "ModuleConfig" is not defined.
deviceonly.proto:8:1: Import "mesh.proto" was not found or had errors.
deviceonly.proto:24:3: "MyNodeInfo" is not defined.
deviceonly.proto:29:3: "User" is not defined.
deviceonly.proto:34:12: "NodeInfo" is not defined.
deviceonly.proto:39:12: "MeshPacket" is not defined.
deviceonly.proto:53:3: "MeshPacket" is not defined.
Generating localonly.proto...
module_config.proto:90:7: "DEFAULT" is already defined in "ModuleConfig.SerialConfig".
module_config.proto:90:7: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "DEFAULT" must be unique within "ModuleConfig.SerialConfig", not just within "Serial_Mode".
localonly.proto:8:1: Import "module_config.proto" was not found or had errors.
localonly.proto:36:3: "Config.WiFiConfig" is not defined.
localonly.proto:65:3: "ModuleConfig.MQTTConfig" is not defined.
localonly.proto:70:3: "ModuleConfig.SerialConfig" is not defined.
localonly.proto:75:3: "ModuleConfig.ExternalNotificationConfig" is not defined.
localonly.proto:80:3: "ModuleConfig.StoreForwardConfig" is not defined.
localonly.proto:85:3: "ModuleConfig.RangeTestConfig" is not defined.
localonly.proto:90:3: "ModuleConfig.TelemetryConfig" is not defined.
localonly.proto:95:3: "ModuleConfig.CannedMessageConfig" is not defined.
Generating mesh.proto...
module_config.proto:90:7: "DEFAULT" is already defined in "ModuleConfig.SerialConfig".
module_config.proto:90:7: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "DEFAULT" must be unique within "ModuleConfig.SerialConfig", not just within "Serial_Mode".
mesh.proto:8:1: Import "module_config.proto" was not found or had errors.
mesh.proto:83:5: "UNSET" is already defined in "Position".
mesh.proto:83:5: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "UNSET" must be unique within "Position", not just within "AltSource".
mesh.proto:88:5: "MANUAL" is already defined in "Position".
mesh.proto:88:5: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "MANUAL" must be unique within "Position", not just within "AltSource".
mesh.proto:93:5: "GPS_INTERNAL" is already defined in "Position".
mesh.proto:93:5: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "GPS_INTERNAL" must be unique within "Position", not just within "AltSource".
mesh.proto:98:5: "GPS_EXTERNAL" is already defined in "Position".
mesh.proto:98:5: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "GPS_EXTERNAL" must be unique within "Position", not just within "AltSource".
mesh.proto:218:3: "UNSET" is already defined in file "telemetry.proto".
mesh.proto:218:3: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "UNSET" must be unique within the global scope, not just within "HardwareModel".
mesh.proto:838:3: "UNSET" is already defined in file "telemetry.proto".
mesh.proto:838:3: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "UNSET" must be unique within the global scope, not just within "Constants".
mesh.proto:1234:5: "ModuleConfig" is not defined.
Generating module_config.proto...
module_config.proto:90:7: "DEFAULT" is already defined in "ModuleConfig.SerialConfig".
module_config.proto:90:7: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "DEFAULT" must be unique within "ModuleConfig.SerialConfig", not just within "Serial_Mode".
Generating mqtt.proto...
module_config.proto:90:7: "DEFAULT" is already defined in "ModuleConfig.SerialConfig".
module_config.proto:90:7: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "DEFAULT" must be unique within "ModuleConfig.SerialConfig", not just within "Serial_Mode".
mesh.proto:8:1: Import "module_config.proto" was not found or had errors.
mesh.proto:83:5: "UNSET" is already defined in "Position".
mesh.proto:83:5: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "UNSET" must be unique within "Position", not just within "AltSource".
mesh.proto:88:5: "MANUAL" is already defined in "Position".
mesh.proto:88:5: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "MANUAL" must be unique within "Position", not just within "AltSource".
mesh.proto:93:5: "GPS_INTERNAL" is already defined in "Position".
mesh.proto:93:5: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "GPS_INTERNAL" must be unique within "Position", not just within "AltSource".
mesh.proto:98:5: "GPS_EXTERNAL" is already defined in "Position".
mesh.proto:98:5: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "GPS_EXTERNAL" must be unique within "Position", not just within "AltSource".
mesh.proto:218:3: "UNSET" is already defined in file "telemetry.proto".
mesh.proto:218:3: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "UNSET" must be unique within the global scope, not just within "HardwareModel".
mesh.proto:838:3: "UNSET" is already defined in file "telemetry.proto".
mesh.proto:838:3: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "UNSET" must be unique within the global scope, not just within "Constants".
mesh.proto:1234:5: "ModuleConfig" is not defined.
mqtt.proto:7:1: Import "mesh.proto" was not found or had errors.
mqtt.proto:19:3: "MeshPacket" is not defined.
Generating portnums.proto...
Generating remote_hardware.proto...
Generating storeforward.proto...
Generating telemetry.proto...
Done generating the swift files from the proto files.

Restructure Channel Config

Currently, all LoRa config is performed on the primary channel.

This should be handled along with the upcoming RadioConfig refactor.

#111

Increase MQTT Password Length

The default password length for adafruit.io mqtt keys is 42 characters, so we probably need to increase the length of this field to 44-46 to support longer keys

Feature Request/Proposal: Provide ability to disable (through admin channel) pairing new BT devices

Right now anyone who will find a node can bind their phone/other device to it and get access to the network.
It would be nice to add ability to completely turn off (and later optionally turn on) pairing of new devices to given nodes via admin channel commands.

Technically it will work through [Bluetooth enabled] parameter but that would work only for router-kind nodes. For end-user nodes usecase is - continue support of existing paired devices but don't allow new devices to join.

Another hacky way for screen-less devices is setting to random pin.

But again most convenient way would probably be - adding "bluetooth.mode" - "disabled". (while "bluetooth.enabled" - "true").
Also I suggest rename bluetooth.mode -> bluetooth.pairing_mode.

Use of reserved keyword 'None' may cause confusion in Python

I'm not sure if this has been reported before: None is a reserved word in Python and should never be used as an identifier for any programming element.

https://github.com/meshtastic/Meshtastic-protobufs/blob/e24fa8c6edd46c2bf66005f45d2547ebd15887c1/mesh.proto#L626-L627

Changing None to NoError or similar should fix the problem, however since this may (likely) impact other parts of the code, a more cautious / phased approach may be required.

Add Mute to channel module config

I had a channel mute (for os notifications) feature that was removed because of the transient nature of channel data, it was requested again and I would like to add it back meshtastic/Meshtastic-Apple#616 but I think I need a place to store the boolean on the device so it is retained when channel data is updated.

Remove Analog Telemetry Environment Sensors

We are standardizing the Telemetry Environment sensors on I2C so we can stop posting nagging alerts about dangerous GPIO in the docs and make the user experience cleaner by autodetecting sensors.

Add field to NodeDB entries indicating "favorite" status (which would also prevent them from DB removal

Platform

NRF52, ESP32

Description

The title largely describes it. Currently, "favorite" is an abstraction present in the iOS app. This helps keep frequent DM targets top of node list on the phome. If this were actually a NodeDB attribute (settable via CLI), then devices could be pre-provisioned for use by ad hoc groups with no user setup required beyond device pairing, wtih these "favorites" already noted for other devices in the group.

Trying to install protobufs in Node-red and get the following error

  • decode : Error: Cannot find module '/home/test/.node-red/node_modules/@meshtastic/node-red-contrib-meshtastic/dist/cjs/decode.js'
    Require stack:
  • /usr/lib/node_modules/node-red/node_modules/@node-red/registry/lib/loader.js
  • /usr/lib/node_modules/node-red/node_modules/@node-red/registry/lib/index.js
  • /usr/lib/node_modules/node-red/node_modules/@node-red/runtime/lib/nodes/index.js
  • /usr/lib/node_modules/node-red/node_modules/@node-red/runtime/lib/index.js
  • /usr/lib/node_modules/node-red/lib/red.js
  • /usr/lib/node_modules/node-red/red.js

Create generic deviceRole field

Proposal:

Create a new enum field deviceRole to supersede is_router, is_low_power and likely more.

This will also allow for centralized configuration for the device's "purpose" and decrease influence of device's power state on usage.

This should also reduce edge cases by removing possible unwanted config combinations

Unclear semantics for `modem_config`

In mesh.proto, there's a comment above modem_config:

  /// Note: This is the 'old' mechanism for specifying channel parameters.                                                                                                                                                                                                                  
  /// Either modem_config or bandwidth/spreading/coding will be specified - NOT                                                                                                                                                                                                             
  /// BOTH. As a heuristic: If bandwidth is specified, do not use modem_config.                                                                                                                                                                                                             
  /// Because protobufs take ZERO space when the value is zero this works out                                                                                                                                                                                                               
  /// nicely.                                                                                                                                                                                                                                                                               
  ///                                                                                                                                                                                                                                                                                       
  /// This value replaces bandwidth/spread_factor/coding_rate.  If you'd like to                                                                                                                                                                                                            
  /// experiment with other options add them to MeshRadio.cpp in the device                                                                                                                                                                                                                 
  /// code.                                                                                                                                                                                                                                                                                 
  ModemConfig modem_config = 3;

The comment suggests to me that modem_config is the "old" mechanism, and that bandwidth/spread_factor/coding_rate is therefore the new mechanism. However, it says that this value replaces bandwidth/spread_factor/coding_rate.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.