Broadcast when a newly powered mesh node wants to find a node num it can use Sent from the phone over bluetooth to set the user id for the owner of this node. Also sent from nodes to each other when a new node signs on (so all clients can have this info) The algorithm is as follows: when a node starts up, it broadcasts their user and the normal flow is for all other nodes to reply with their User as well (so the new node can build its nodedb) If a node ever receives a User (not just the first broadcast) message where the sender node number equals our node number, that indicates a collision has occurred and the following steps should happen: If the receiving node (that was already in the mesh)'s macaddr is LOWER than the new User who just tried to sign in: it gets to keep its nodenum. We send a broadcast message of OUR User (we use a broadcast so that the other node can receive our message, considering we have the same id - it also serves to let observers correct their nodedb) - this case is rare so it should be okay. If any node receives a User where the macaddr is GTE than their local macaddr, they have been vetoed and should pick a new random nodenum (filtering against whatever it knows about the nodedb) and rebroadcast their User. A few nodenums are reserved and will never be requested: 0xff - broadcast 0 through 3 - for future use

from message meshtastic.User

Hierarchy

Constructors

  • Parameters

    • Optionaldata: PartialMessage<User>

    Returns User

Properties

hwModel: HardwareModel

TBEAM, HELTEC, etc... Starting in 1.2.11 moved to hw_model enum in the NodeInfo object. Apps will still need the string here for older builds (so OTA update can find the right image), but if the enum is available it will be used instead.

from field: meshtastic.HardwareModel hw_model = 5;

id: string

A globally unique ID string for this user. In the case of Signal that would mean +16504442323, for the default macaddr derived id it would be !<8 hexidecimal bytes>. Note: app developers are encouraged to also use the following standard node IDs "^all" (for broadcast), "^local" (for the locally connected node)

from field: string id = 1;

isLicensed: boolean

In some regions Ham radio operators have different bandwidth limitations than others. If this user is a licensed operator, set this flag. Also, "long_name" should be their licence number.

from field: bool is_licensed = 6;

longName: string

A full name for this user, i.e. "Kevin Hester"

from field: string long_name = 2;

macaddr: Uint8Array

Deprecated in Meshtastic 2.1.x This is the addr of the radio. Not populated by the phone, but added by the esp32 when broadcasting

from field: bytes macaddr = 4 [deprecated = true];

publicKey: Uint8Array

The public key of the user's device. This is sent out to other nodes on the mesh to allow them to compute a shared secret key.

from field: bytes public_key = 8;

Indicates that the user's role in the mesh

from field: meshtastic.Config.DeviceConfig.Role role = 7;

shortName: string

A VERY short name, ideally two characters. Suitable for a tiny OLED screen

from field: string short_name = 3;

fields: FieldList
runtime: ProtoRuntime
typeName: "meshtastic.User" = "meshtastic.User"

Methods

  • Create a deep copy.

    Returns User

  • Compare with a message of the same type. Note that this function disregards extensions and unknown fields.

    Parameters

    • other:
          | undefined
          | null
          | User
          | PlainMessage<User>

    Returns boolean

  • Parse from binary data, merging fields.

    Repeated fields are appended. Map entries are added, overwriting existing keys.

    If a message field is already present, it will be merged with the new data.

    Parameters

    • bytes: Uint8Array
    • Optionaloptions: Partial<BinaryReadOptions>

    Returns this

  • Parse a message from a JSON value.

    Parameters

    • jsonValue: JsonValue
    • Optionaloptions: Partial<JsonReadOptions>

    Returns this

  • Parse a message from a JSON string.

    Parameters

    • jsonString: string
    • Optionaloptions: Partial<JsonReadOptions>

    Returns this

  • Retrieve the MessageType of this message - a singleton that represents the protobuf message declaration and provides metadata for reflection- based operations.

    Returns MessageType<User>

  • Serialize the message to binary data.

    Parameters

    • Optionaloptions: Partial<BinaryWriteOptions>

    Returns Uint8Array

  • Override for serialization behavior. This will be invoked when calling JSON.stringify on this message (i.e. JSON.stringify(msg)).

    Note that this will not serialize google.protobuf.Any with a packed message because the protobuf JSON format specifies that it needs to be unpacked, and this is only possible with a type registry to look up the message type. As a result, attempting to serialize a message with this type will throw an Error.

    This method is protected because you should not need to invoke it directly -- instead use JSON.stringify or toJsonString for stringified JSON. Alternatively, if actual JSON is desired, you should use toJson.

    Returns JsonValue

  • Serialize the message to a JSON value, a JavaScript value that can be passed to JSON.stringify().

    Parameters

    • Optionaloptions: Partial<JsonWriteOptions>

    Returns JsonValue

  • Serialize the message to a JSON string.

    Parameters

    • Optionaloptions: Partial<JsonWriteStringOptions>

    Returns string

  • Parameters

    • a: undefined | User | PlainMessage<User>
    • b: undefined | User | PlainMessage<User>

    Returns boolean

  • Parameters

    • bytes: Uint8Array
    • Optionaloptions: Partial<BinaryReadOptions>

    Returns User

  • Parameters

    • jsonValue: JsonValue
    • Optionaloptions: Partial<JsonReadOptions>

    Returns User

  • Parameters

    • jsonString: string
    • Optionaloptions: Partial<JsonReadOptions>

    Returns User