fuchsia.lowpan

STRUCTS

BeaconInfo

Defined in fuchsia.lowpan/beacon_info.fidl

NameTypeDescriptionDefault
identity Identity

The identity of the network being advertised by this beacon.

No default
rssi int32

RSSI of the beacon, measured in dBm. If unspecified, set to -128 (RSSI_UNSPECIFIED).

No default
lqi uint8

Link Quality Index (LQI) of the beacon.

  • A value of 0 (LQI_UNSPECIFIED) indicates that the LQI was not set.
  • A value of 1 indicates the worst possible quality where the decoded beacon is still valid.
  • A value of 255 indicates the best possible quality that can be recognized by the radio hardware.
  • Values 2-254 are intended to represent relative quality levels evenly distributed between the worst and best, with lower values always indicating a worse quality than higher values.
No default
address vector<uint8>[16]

The MAC address associated with this beacon.

No default
flags vector<int32>[32]

A collection of integers representing any flags associated with this beacon, like BEACON_INFO_FLAG_CAN_ASSIST.

No default

ProvisioningParams

Defined in fuchsia.lowpan/provisioning_params.fidl

NameTypeDescriptionDefault
identity Identity

The identity of the network.

No default
credential Credential?

The credential used to authenticate to the network.

No default

ENUMS

Role

Type: int32

Defined in fuchsia.lowpan/role.fidl

LoWPAN Role Type.

This type describes the role a device can assume on a network.

NameValueDescription
DETACHED 1

Detached role. The interface is not currently participating on the network, either because it cannot find a parent

END_DEVICE 2

End-device role. End devices do not route traffic on behalf of other nodes.

ROUTER 3

Router role. Routers help route traffic around the mesh network.

Note that this role is independent of the device being a "border router".

Not all network types support this role.

SLEEPY_END_DEVICE 4

Sleepy End-Device role.

End devices with this role are nominally asleep, waking up periodically to check in with their parent to see if there are packets destined for them. Such devices are capable of extraordinarily low power consumption, but packet latency can be on the order of dozens of seconds(depending on how the node is configured). Not all network types support this role.

Not all network types support this role.

SLEEPY_ROUTER 5

Sleepy-router role.

Routers with this role are nominally asleep, waking up periodically to check in with other routers and their children.

Not all network types support this role.

LEADER 6

Leader role.

On Thread networks, for each partition/fragment one router is designated as the "leader", which means that it is considered authoritative for all network data. In most cases this role can be considered as a synonym to Role::ROUTER.

Not all network types support this role.

COORDINATOR 7

Coordinator role.

Not all network types support this role.

ConnectivityState

Type: int32

Defined in fuchsia.lowpan/state.fidl

LoWPAN Connectivity State

This enum describes the level of connectivity being provided by a device.

NameValueDescription
INACTIVE 1

Inactive state.

In this state the device is unprovisioned and administratively disabled (inactive).

This state can always be explicitly entered by calling Leave followed by SetActive(false).

READY 2

Ready state.

In this state the device is provisioned for a network, but is administratively disabled (inactive).

This state can be directly entered with the following actions based on the current connectivity state:

  • INACTIVE: by calling ProvisionNetwork(...).
  • ATTACHING, ATTACHED, ISOLATED, COMMISSIONING: by calling SetActive(false).
OFFLINE 3

Offline state.

In this state the device is administratively enabled (active) but is not provisioned and thus has no network to attach to.

This state can be directly entered with the following actions based on the current connectivity state:

  • INACTIVE: by calling SetActive(true).
  • ATTACHING, ATTACHED, ISOLATED, COMMISSIONING: by calling Leave().
ATTACHING 4

Attaching state.

In this state the device is administratively enabled (active) and either provisioned for a network or shortly about to become provisioned for a network.

The interface enters this state when it starts the process of trying to find other nodes so that it can attach to any pre-existing network fragment, or when it is in the process of calculating the optimal values for unspecified parameters when forming a new network.

This state can be directly entered with the following actions based on the current connectivity state:

  • READY: by calling SetActive(true)
  • OFFLINE, ATTACHING, ATTACHED, ISOLATED, COMMISSIONING: by calling ProvisionNetwork(...), FormNetwork(...), or JoinNetwork(...)
ATTACHED 5

Attached state.

In this state the device is both administratively enabled (active) and provisioned for a network. The device is an active participant on the network and can communicate with peers.

This state usually implies that peers are available, but that may not actually be the case due to current network conditions or privacy-protecting measures.

This state cannot generally be entered directly, rather the device will enter this state automatically from the ATTACHING or ISOLATED states once connectivity has been (re)established.

ISOLATED 6

Isolated state.

In this state the device is both administratively enabled (active) and provisioned for a network. However, the device has no connectivity because there are no peers in range on the provisioned network.

Once peer devices on the same network come into range the connectivity state will eventually switch back to ATTACHED, indicating restored connectivity with at least one peer.

This state cannot generally be entered directly, rather the device may enter this state automatically from the ATTACHING or ATTACHED states.

COMMISSIONING 7

Commissioning state.

Currently unused, but will later be used to support in-band commissioning. It is usually appropriate to consider this as a synonym for the ATTACHING state except that the device remains unprovisioned.

TABLES

ChannelInfo

Defined in fuchsia.lowpan/channel_info.fidl

OrdinalNameTypeDescription
1 index ChannelIndex

The index used by the interface to identify this channel.

2 id string[16]

Human-readable identifier for channel.

For most network types, this is just the string representation of the index. However, some network types might have non-integer ways of identifying specific channels. This field allows the application to display the name of the channel correctly under such circumstances.

The allowed characters include:

  • Dash (-), Underscore (_), Plus(+), Semicolon(:)
  • Numbers (0-9)
  • Letters (a-z, A-Z)
3 max_transmit_power int32

The maximum transmit power allowed on this channel, in dBm.

4 spectrum_center_frequency uint64

The center RF frequency of this channel, in Hz.

For example, 802.15.4 has the following values:

Channel | Center Frequency (Hz) --------|---------------------- 11 | 2,405,000,000 12 | 2,410,000,000 13 | 2,415,000,000 14 | 2,420,000,000 15 | 2,425,000,000 16 | 2,430,000,000 17 | 2,435,000,000 18 | 2,440,000,000 19 | 2,445,000,000 20 | 2,450,000,000 21 | 2,455,000,000 22 | 2,460,000,000 23 | 2,465,000,000 24 | 2,470,000,000 25 | 2,475,000,000 26 | 2,480,000,000

5 spectrum_bandwidth uint64

The RF spectrum bandwidth used by this channel where the power level is expected to be higher than -20dBr, in Hz.

For example, 802.15.4 channels 11 thru 26 would have the value 2,000,000 (2 MHz).

6 masked_by_regulatory_domain bool

Indicates if this channel is masked by the current regulatory domain and is thus unable to be used.

Identity

Defined in fuchsia.lowpan/identity.fidl

OrdinalNameTypeDescription
1 raw_name vector<uint8>[63]

The raw bytes for the network name. This is typically a StringPrep'd UTF8 encoding.

Note that extra care must be taken when displaying this value to users, since there are many ways to make visually similar UTF8 strings that have differing bytecode representations.

2 xpanid vector<uint8>[8]

Extended PANID.

3 net_type string[64]

String identifying the type of network.

Well-known protocol ids are associated with specific string values (like "org.threadgroup.std.thread" or "org.zigbee.std.zigbee-ip"). For unknown protocol ids, the string will map to something like fuchsia.lowpan.net_type.802.15.4.pid.XX, where XX is the value of the protocol id from a 802.14.5 beacon. This field is optional when joining, forming, or provisioning.

4 channel ChannelIndex

Channel Index.

5 panid uint16

PANID for 802.14.5-based networks (or the equivalent).

UNIONS

Credential

Defined in fuchsia.lowpan/credential.fidl

Describes a LoWPAN credential.

Currently only supports a symmetric master key, but may be extended in the future to support other types of credentials, such as passwords, PAKE secrets, or a reference to a certificate/private-key pair.

NameTypeDescription
master_key vector<uint8>[32]

Describes a symmetric key credential.

The size of the symmetric key is defined by the underlying network technology. For Thread this is a 16-byte value.

Note that this value is not a password.

CONSTANTS

NameValueTypeDescription
BEACON_INFO_FLAG_CAN_ASSIST 1 uint32
LQI_UNSPECIFIED 0 uint8
RSSI_UNSPECIFIED -128 int8
CHANNEL_UNSPECIFIED 65535 uint16
MAX_CHANNELS 100 uint16
MAX_NET_TYPE_LEN 64 uint16
NET_TYPE_THREAD_1_X org.threadgroup.std.thread.1 String
NET_TYPE_ZIGBEE_IP_1_X org.zigbee.std.zigbee-ip.1 String
NET_TYPE_UNKNOWN_802_15_4_PID fuchsia.lowpan.net_type.802.15.4.pid String
NET_TYPE_RAW_6LOWPAN fuchsia.lowpan.net_type.6lowpan String

TYPE ALIASES

NameValueDescription
NetworkType string[MAX_NET_TYPE_LEN]
ChannelIndex uint16