fuchsia.lowpan.device

添加次数:7

协议

计数器

fuchsia.lowpan.device/counters.fidl 中定义

获取

返回计数器的快照,而不重置计数器。

请求

<EMPTY>

响应

名称类型
counters AllCounters

重置

将所有计数器重置为零,紧接着返回之前的计数器值。

请求

<EMPTY>

响应

名称类型
counters AllCounters

CountersConnector

fuchsia.lowpan.device/counters.fidl 中定义

用于连接到 LoWPAN 接口上的计数器的协议。

连接

连接到指定的 LoWPAN 接口上的 DeviceCounters 协议。

可通过调用 [`fuchsia.lowpan/Lookup.GetDevices] 了解接口的名称。

如果在处理此请求时发生错误,则指定频道会关闭,并使用一段级义码代码来描述失败原因:

  • ZX_ERR_INVALID_ARGUMENT:给定的接口名称格式不正确或无效。
  • ZX_ERR_NOT_FOUND:找不到具有指定名称的接口。
  • ZX_ERR_NOT_SUPPORTED:接口存在,但不支持此协议。

请求

名称类型
name fuchsia.lowpan/InterfaceName
server_end server_end<Counters>

设备

fuchsia.lowpan.device/device.fidl 中定义

LoWPAN 设备协议。

此协议为客户端提供了控制和监控设备的方法。

请注意,设备中处理个人身份信息的各个方面必须通过 DeviceExtra 协议进行监控和控制。

GetSupportedNetworkTypes

返回此接口支持的广告网络类型。

LoWPAN 设备通常仅支持一种网络类型,但某些设备可能支持多种网络类型。最多可返回 MAX_NETWORK_TYPES 种网络类型。

请求

<EMPTY>

响应

名称类型
network_types vector<string>[16]

LeaveNetwork

关闭网络接口,忘记有关当前网络的所有非易失性详细信息。

完成后,有关当前网络的所有非易失性和瞬态状态都会被清除,并且接口将处于离线状态。

具体而言,调用此方法将产生以下可观察的影响:

  • DeviceState.connectivity_state 将转换为 State::OFFLINE(假设它尚未处于该状态)。
  • DeviceExtra::WatchIdentity 会发出一个空的 Identity(假设它尚不为空)。

如果之前未预配该接口,则调用此方法不会产生任何问题。

请求

<EMPTY>

响应

<EMPTY>

ProvisionNetwork

为身份和凭据所描述的网络预配接口。这与 JoinNetwork 类似,不同之处在于(假设身份和凭据有效),即使附近没有对等设备,它也会始终成功(假设满足所有前提条件)。

必须指定 ProvisioningParams 的以下字段:

  • identity.raw_name
  • identity.xpanid
  • identity.panid
  • identity.channel_index
  • credential

如果未指定任何必填字段,频道将使用 epitaph ZX_ERR_INVALID_ARGUMENT 关闭。

此外,如果存在 identity.net_type 字段且与此设备支持的网络类型不匹配,则该频道也会以 epitaph ZX_ERR_NOT_SUPPORTED 结束。

此方法会在设备成功重新配置后返回。状态变化可以通过 WatchDeviceState() 监控。任何阻止操作成功完成的错误都会导致协议被关闭。

请求

名称类型
params ProvisioningParams

响应

<EMPTY>

SetActive

启用(“开启”)或停用(“关闭”)网络接口。

请注意,仅将此值设置为 true 并不意味着网络接口一定处于在线状态并且可用。如需了解详情,请参阅 DeviceState 表的 connectivity_state 字段。

该方法会在操作成功完成后返回。 状态变化可以通过 WatchDeviceState() 监控。任何阻止操作成功完成的错误都会导致协议被关闭。

请求

名称类型
active bool

响应

<EMPTY>

WatchDeviceState

观察 DeviceState 的更改。

首次调用始终返回当前状态的快照。后续调用将阻塞,直到状态发生变化,并返回设备内部状态的增量。

更改未加入队列。返回的值始终表示最新且最准确的状态值,即使两次调用之间发生了多次更改,也是如此。

请求

<EMPTY>

响应

名称类型
device_combined_state DeviceState

DeviceConnector

fuchsia.lowpan.device/device.fidl 中定义

用于在 LoWPAN 接口上连接到设备的协议。

连接

连接到指定的 LoWPAN 接口上的 Device 协议。

可通过调用 fuchsia.lowpan/Lookup.GetDevices() 了解接口的名称。

如果在处理此请求时发生错误,则指定频道会关闭,并使用一段级义码代码来描述失败原因:

  • ZX_ERR_INVALID_ARGUMENT:给定的接口名称格式不正确或无效。
  • ZX_ERR_NOT_FOUND:找不到具有指定名称的接口。
  • ZX_ERR_NOT_SUPPORTED:接口存在,但不支持此协议。

请求

名称类型
name fuchsia.lowpan/InterfaceName
server_end server_end<Device>

DeviceExtra

fuchsia.lowpan.device/device.fidl 中定义

LoWPAN 设备“额外”协议。

此协议为客户端提供一种方法来控制和监控 LoWPAN 设备可能直接或间接泄露个人身份信息或加密密钥的各个方面。

GetCredential

获取当前凭据。

返回的凭据将源自之前对 ProvisionNetworkJoinNetworkFormNetwork 的调用。如果设备未配置(例如,通过调用 LeaveNetwork()),则此方法不会返回任何内容。

请求

<EMPTY>

响应

名称类型
credential Credential?

GetCurrentMacAddress

返回此设备当前使用的 MAC 地址,可能不同于出厂分配的静态 MAC 地址。

此地址通常是静态的,但当设备重新关联到其他网络或恢复出厂设置时,该地址可能会发生变化。

添加次数:9

请求

<EMPTY>

响应

名称类型
address fuchsia.lowpan/MacAddress

WatchIdentity

观察当前网络身份的更改。

首次调用始终会返回当前身份的快照。后续调用将阻塞,直到身份发生更改,然后返回整个更新后的身份。

如果当前没有与设备关联的身份,则返回的身份将为空。

更改未加入队列。返回的身份始终表示最新且最准确的值,即使在调用之间发生了多次更改也是如此。

请注意,这些更改不是增量更改:每当发生更改时,系统都会返回当前的整个 LoWPAN 身份。

可通过以下任一调用更改身份的值:

  • Device.ProvisionNetwork()
  • Device.LeaveNetwork()
  • DeviceExtra.JoinNetwork()
  • DeviceExtra.FormNetwork()

请求

<EMPTY>

响应

名称类型
identity Identity

DeviceExtraConnector

fuchsia.lowpan.device/device.fidl 中定义

用于在 LoWPAN 接口上连接到 DeviceExtra 的协议。

连接

连接到指定的 LoWPAN 接口上的 DeviceExtra 协议。

可通过调用 fuchsia.lowpan/Lookup.GetDevices 了解接口的名称。

如果在处理此请求时发生错误,则指定频道会关闭,并使用一段级义码代码来描述失败原因:

  • ZX_ERR_INVALID_ARGUMENT:给定的接口名称格式不正确或无效。
  • ZX_ERR_NOT_FOUND:找不到具有指定名称的接口。
  • ZX_ERR_NOT_SUPPORTED:接口存在,但不支持此协议。

请求

名称类型
name fuchsia.lowpan/InterfaceName
server_end server_end<DeviceExtra>

EnergyScan

fuchsia.lowpan.device/energy_scanner.fidl 中定义

StartEnergyScan

启动能量扫描操作。

这可用于调查频谱,以识别应避开的频道。

可以通过关闭流协议来取消扫描操作。

如果某个扫描在另一项扫描正在进行时开始,系统将允许前一扫描在执行新扫描并开始返回结果之前完成。

在扫描过程中,所有扫描都应完全占用 LoWPAN 设备,以防止其他操作在扫描完成之前完成。此外,在扫描过程中,所有网络数据包都应会被丢弃。

执行能量扫描可用于分析位置的频谱能量,因此可用于确定或优化粗略位置信息。

请求

名称类型
params EnergyScanParameters
stream server_end<EnergyScanResultStream>

EnergyScanConnector

fuchsia.lowpan.device/energy_scanner.fidl 中定义

用于在 LoWPAN 接口上连接到 EnergyScan 的协议。

连接

连接到指定的 LoWPAN 接口上的 EnergyScan 协议。

可通过调用 fuchsia.lowpan/Lookup.GetDevices 了解接口的名称。

如果在处理此请求时发生错误,则指定频道会关闭,并使用一段级义码代码来描述失败原因:

  • ZX_ERR_INVALID_ARGUMENT:给定的接口名称格式不正确或无效。
  • ZX_ERR_NOT_FOUND:找不到具有指定名称的接口。
  • ZX_ERR_NOT_SUPPORTED:接口存在,但不支持此协议。

请求

名称类型
name fuchsia.lowpan/InterfaceName
server_end server_end<EnergyScan>

EnergyScanResultStream

fuchsia.lowpan.device/energy_scanner.fidl 中定义

用于返回能量扫描操作结果的协议。

关闭协议会取消关联的扫描操作。

继续

进行调用以获取下一组能量扫描结果。

最后一组将没有任何内容,协议将被关闭。

请求

<EMPTY>

响应

名称类型
results vector<EnergyScanResult>[32]

结构

ProvisioningParams

fuchsia.lowpan.device/provision_params.fidl 中定义

字段类型说明默认
identity Identity

网络的身份。

无默认取景方式
credential Credential?

用于向网络进行身份验证的凭据。

无默认取景方式

枚举

ConnectivityState 灵活

类型:int32

fuchsia.lowpan.device/device.fidl 中定义

LoWPAN 连接状态

此枚举描述设备提供的连接级别。

名称说明
1

非活跃状态。

在此状态下,该设备将被取消配置并被管理停用(非活跃)。

您始终可以通过依次调用 LeaveSetActive(false) 来明确输入此状态。

2

就绪状态。

在此状态下,设备已针对网络进行配置,但被管理停用(非活动状态)。

可以根据当前连接状态执行下列操作,从而直接进入此状态:

  • INACTIVE:通过调用 ProvisionNetwork(...)
  • ATTACHINGATTACHEDISOLATEDCOMMISSIONING:通过调用 SetActive(false)
3

离线状态。

在这种状态下,设备已由管理启用(活动)但并未配置,因此没有要连接的网络。

可以根据当前连接状态执行下列操作,从而直接进入此状态:

  • INACTIVE:通过调用 SetActive(true)
  • ATTACHINGATTACHEDISOLATEDCOMMISSIONING:通过调用 Leave()
4

附加状态。

在这种状态下,设备已以管理方式启用(活动),并且是针对网络进行配置的,或者即将针对网络进行配置。

接口会在以下情况下进入此状态:开始尝试查找其他节点,以便连接到任何现有的网络片段;或者在构建新网络时为未指定的参数计算最佳值。

可以根据当前连接状态执行下列操作,从而直接进入此状态:

  • READY:通过调用 SetActive(true)
  • OFFLINEATTACHINGATTACHEDISOLATEDCOMMISSIONING:通过调用 ProvisionNetwork(...)FormNetwork(...)JoinNetwork(...)
5

关联状态。

在此状态下,设备既是已管理启用(处于活跃状态),又是为网络预配的。设备是网络上的活跃参与者,可以与对等方通信。

此状态通常意味着对等设备可用,但受当前网络条件或隐私保护措施的影响,实际情况可能并非如此。

此状态通常无法直接进入,而一旦建立连接(重新)连接,设备会自动从 ATTACHINGISOLATED 状态进入此状态。

6

隔离状态。

在此状态下,设备既是已管理启用(处于活跃状态),又是为网络预配的。但是,设备没有网络连接,因为所预配的网络范围内没有对等网络。

同一网络上的对等设备进入覆盖范围内后,连接状态最终将切换回 ATTACHED,这表示已恢复与至少一个对等端的连接。

此状态通常不能直接进入,而设备可能会从 ATTACHINGATTACHED 状态自动进入此状态。

7

调试状态。

目前未使用,但稍后将用于支持带内调试。除了设备仍处于未配置状态外,通常不妨将此状态视为 ATTACHING 状态的同义词。

角色 flexible

类型:int32

fuchsia.lowpan.device/device.fidl 中定义

LoWPAN 角色类型。

此类型描述了设备在网络上可以担任的角色。

名称说明
1

已分离的角色。该接口当前未加入该网络,原因在于它找不到父级

2

终端设备角色。最终设备不会代表其他节点路由流量。

3

路由器角色。路由器有助于在网状网络周围路由流量。

请注意,此角色与设备是否为“边界路由器”无关。

并非所有网络类型都支持此角色。

4

“Sleepy End-Device”角色。

具有此角色的终端设备名义上处于休眠状态,会定期唤醒以签入其父项,查看是否有发往它们的数据包。此类设备的功耗非常低,但数据包延迟时间可能长达几十秒(具体取决于节点的配置方式)。并非所有网络类型都支持此角色。

并非所有网络类型都支持此角色。

5

Sleepy-router 角色。

具有此角色的路由器名义上处于休眠状态,会定期唤醒以签入其他路由器及其子路由器。

并非所有网络类型都支持此角色。

6

领导角色。

在 Thread 网络上,对于每个分区/fragment,有一个路由器被指定为“主要”路由器,这意味着它被视为对所有网络数据的权威。在大多数情况下,此角色可被视为 Role::ROUTER 的同义词。

并非所有网络类型都支持此角色。

7

协调者角色。

并非所有网络类型都支持此角色。

AllCounters

fuchsia.lowpan.device/counters.fidl 中定义

描述所有计数器。

如果不支持任何计数器,则可能为空。

序数字段类型说明
mac_tx MacCounters

适用于 TX 的 MAC 计数器

mac_rx MacCounters

用于 RX 的 MAC 计数器

coex_tx CoexCounters

TX 的共存计数器

coex_rx CoexCounters

适用于 RX 的共存计数器

coex_saturated bool

由于内部计数器溢出,共存统计数据可能不正确。

重置计数器以清除此标志。

ip_tx IpCounters

TX 的 IP 计数器。

添加:8 项
ip_rx IpCounters

用于 RX 的 IP 计数器。

添加:8 项

CoexCounters

fuchsia.lowpan.device/counters.fidl 中定义

与 RF 共存相关的计数器。

某些计数器仅对 RX 或 TX 有效。如需了解详情,请参阅此处

序数字段类型说明
requests uint64

请求数量

grant_immediate uint64

授权进行期间的请求数量

grant_wait uint64

授权无效时的请求数量

grant_wait_activated uint64

授权处于无效状态时最终获得授权的请求数

grant_wait_timeout uint64

授权无效且超时的请求数

grant_deactivated_during_request uint64

停用授权时进行中的请求数

delayed_grant uint64

在 50 微秒内未被授予的请求数量

avg_delay_request_to_grant_usec uint32

从请求到授权的平均时间(以微秒为单位)

grant_none uint64

已完成且未获得授权的请求数量。

仅接收。

DeviceState

fuchsia.lowpan.device/device.fidl 中定义

LoWPAN 设备的组合状态

包含 LoWPAN 设备的各种属性,这些属性用于定义其当前运行状态。

您将在第一次调用 WatchDeviceState() 时获取当前状态的快照,之后,之后再次调用该方法将返回增量。

序数字段类型说明
connectivity_state ConnectivityState

LoWPAN 连接状态

此字段描述了此设备提供的当前连接级别。

role Role

LoWPAN 角色

此字段描述了此设备在当前网络上担任的角色。

EnergyScanParameters

fuchsia.lowpan.device/energy_scanner.fidl 中定义

描述能量扫描的参数。

序数字段类型说明
channels vector<uint16>[200]

要扫描的频道子集。

如果未指定,系统将扫描所有频道。

dwell_time_ms uint32

能量扫描的每个通道所需的停留时间(以毫秒为单位)。

请注意,固件限制可能会导致无法使用精确停留时间。在这种情况下,将使用近似值。

实现必须能够支持至少 5000 毫秒(5 秒)的停留时间。受支持的确切停留时间范围取决于设备/驱动程序。

如果设置的值超出此设备支持的值范围,则该值将被限制到最接近的有效值,因此将值设为 0 将始终请求设备支持的最短能量扫描持续时间。

如果未指定,将使用约 500 毫秒的停留时间。

EnergyScanResult

fuchsia.lowpan.device/energy_scanner.fidl 中定义

描述能量扫描一个通道的结果。

序数字段类型说明
channel_index fuchsia.lowpan/ChannelIndex

此能量扫描结果的信道指数。

max_rssi int32

在此频道中检测到的最大 RSSI。

min_rssi int32

在此频道上检测到的最小 RSSI。

身份

fuchsia.lowpan.device/device.fidl 中定义

序数字段类型说明
raw_name vector<uint8>[63]

网络名称的原始字节。 这通常是 StringPrep'd UTF8 编码。

请注意,在向用户显示此值时必须格外小心,因为有多种方法可以制作外观相似的 UTF8 字符串,这些字符串具有不同的字节码表示形式。

net_type NetworkType

用于标识网络类型的字符串。

众所周知的协议 ID 与特定的字符串值相关联(如“org.threadgroup.std.thread”或“org.zigbee.std.zigbee-ip”)。对于未知协议 ID,该字符串将映射到类似 fuchsia.lowpan.net_type.802.15.4.pid.XX 的内容,其中 XX 是来自 802.14.5 信标的协议 ID 的值。在联接、形成或预配时,此字段是可选的。

channel fuchsia.lowpan/ChannelIndex

渠道索引。

panid uint16

基于 802.14.5 的网络(或等效网络)的 PANID。

mesh_local_prefix fuchsia.net/Ipv6AddressWithPrefix

IPv6 网状网本地前缀。

此参数可让您确定当前网络的网状网本地 IPv6 前缀,也可在预配网络接口或构建新网络时指定一个前缀。

前缀长度始终为 64 位,因此仅使用值的高 64 位:读取时必须忽略最低有效位,设置时必须忽略最低有效位。

如果提供给 JoinNetwork(),此字段会被忽略。

xpanid uint8[8]

扩展 PANID。

添加:11

IpCounters

fuchsia.lowpan.device/counters.fidl 中定义

与 IP 层关联的计数器。

添加:8 项

序数字段类型说明
success uint32

成功传输/接收的 IPv6 数据包的数量。

failure uint32

IPv6 数据包发送/接收失败。

MacCounters

fuchsia.lowpan.device/counters.fidl 中定义

与 MAC 层相关联的计数器。

某些计数器仅对 RX 或 TX 有效。

序数字段类型说明
total uint32

帧总数

unicast uint32

单播帧的总数

broadcast uint32

广播帧的总数

ack_requested uint32

收到确认请求的帧数

acked uint32

已确认的帧数

no_ack_requested uint32

无确认请求的帧数

data uint32

数据帧的数量

data_poll uint32

数据轮询帧的数量

beacon uint32

信标帧数

beacon_request uint32

信标请求帧数

other uint32

其他类型的帧的数量

address_filtered uint32

按地址过滤器(许可名单或拒绝名单)过滤的帧数。

retries uint32

重新传输尝试次数。 仅限 TX。

direct_max_retry_expiry uint32

私信的已过期重新传输重试次数。仅限 TX。

indirect_max_retry_expiry uint32

仅适用于间接消息 TX 的过期重新传输重试次数。

dest_addr_filtered uint32

已接收的经目标检查滤除的帧数。 仅限 RX。

duplicated uint32

收到的重复帧的数量。 仅限 RX。

err_no_frame uint32

已接收的不含内容或格式有误的帧数。 仅限 RX。

err_unknown_neighbor uint32

从未知相邻项接收到的帧数。 仅限 RX。

err_invalid_src_addr uint32

已接收的源地址无效的帧数量。 仅限 RX。

err_sec uint32

已接收存在安全错误的帧的数量。 仅限 RX。

err_fcs uint32

已接收存在 FCS 错误的帧数。 仅限 RX。

err_cca uint32

CCA 失败次数。 仅限 TX。

err_abort uint32

因中止错误而导致的帧传输失败次数。仅限 TX。

err_busy_channel uint32

因通道繁忙而丢失的帧数。仅限 TX。

err_other uint32

遇到其他错误的帧数。

联合

凭据灵活

fuchsia.lowpan.device/device.fidl 中定义

描述 LoWPAN 凭据。

目前仅支持对称网络密钥,但将来可能会进行扩展,以支持其他类型的凭据,例如密码、PAKE 密钥或对证书/私钥对的引用。

序数变体类型说明
network_key vector<uint8>[32]

描述对称密钥凭据。

对称密钥的大小由底层网络技术定义。对于 Thread,这是一个 16 字节的值。

请注意,此值不是密码。

常量

名称类型说明
MAX_CHANNELS 200 uint16

Device.GetSupportedChannels 可以返回的频道数上限。

值是任意选择的,足够大,可以适应任何合理的未来用例。

MAX_NETWORK_TYPES 16 uint16

LoWPAN 设备可以支持的不同网络类型的数量上限。

选项 16 是任意上限。大多数设备将只支持一种设备,或许有一天设备可能支持两种设备。之所以选择 16 个,是因为它足够大,足以解释任何想象力失败,但又足够小,不会导致系统稳定性问题。

MAX_NET_TYPE_LEN 64 uint16

网络类型字符串的最大长度。

任意选择大小,足以容纳未来任何合理的网络类型。

MAX_STREAM_SET_SIZE 32 uint16

扫描流一次可以返回的最大项数。

NET_TYPE_RAW_6LOWPAN fuchsia.lowpan.net_type.6lowpan String
NET_TYPE_THREAD_1_X org.threadgroup.std.thread.1 String
NET_TYPE_UNKNOWN_802_15_4_PID fuchsia.lowpan.net_type.802.15.4.pid String
NET_TYPE_ZIGBEE_IP_1_X org.zigbee.std.zigbee-ip.1 String

别名

名称说明
NetworkType string[MAX_NET_TYPE_LEN]

描述网络类型的字符串。