协议
计数器
在 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
获取当前凭据。
返回的凭据将源自之前对 ProvisionNetwork
、JoinNetwork
或 FormNetwork
的调用。如果设备未配置(例如,通过调用 LeaveNetwork()
),则此方法不会返回任何内容。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
credential |
Credential?
|
GetCurrentMacAddress
返回此设备当前使用的 MAC 地址,可能不同于出厂分配的静态 MAC 地址。
此地址通常是静态的,但当设备重新关联到其他网络或恢复出厂设置时,该地址可能会发生变化。
请求
<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 连接状态
此枚举描述设备提供的连接级别。
名称 | 值 | 说明 |
---|---|---|
INACTIVE |
1 |
非活跃状态。 在此状态下,该设备将被取消配置并被管理停用(非活跃)。 您始终可以通过依次调用 |
预备 |
2 |
就绪状态。 在此状态下,设备已针对网络进行配置,但被管理停用(非活动状态)。 可以根据当前连接状态执行下列操作,从而直接进入此状态:
|
离线 |
3 |
离线状态。 在这种状态下,设备已由管理启用(活动)但并未配置,因此没有要连接的网络。 可以根据当前连接状态执行下列操作,从而直接进入此状态:
|
正在附加 |
4 |
附加状态。 在这种状态下,设备已以管理方式启用(活动),并且是针对网络进行配置的,或者即将针对网络进行配置。 接口会在以下情况下进入此状态:开始尝试查找其他节点,以便连接到任何现有的网络片段;或者在构建新网络时为未指定的参数计算最佳值。 可以根据当前连接状态执行下列操作,从而直接进入此状态:
|
已附加 |
5 |
关联状态。 在此状态下,设备既是已管理启用(处于活跃状态),又是为网络预配的。设备是网络上的活跃参与者,可以与对等方通信。 此状态通常意味着对等设备可用,但受当前网络条件或隐私保护措施的影响,实际情况可能并非如此。 此状态通常无法直接进入,而一旦建立连接(重新)连接,设备会自动从 |
孤立 |
6 |
隔离状态。 在此状态下,设备既是已管理启用(处于活跃状态),又是为网络预配的。但是,设备没有网络连接,因为所预配的网络范围内没有对等网络。 同一网络上的对等设备进入覆盖范围内后,连接状态最终将切换回 此状态通常不能直接进入,而设备可能会从 |
委托 |
7 |
调试状态。 目前未使用,但稍后将用于支持带内调试。除了设备仍处于未配置状态外,通常不妨将此状态视为 |
角色 flexible
类型:int32
在 fuchsia.lowpan.device/device.fidl 中定义
LoWPAN 角色类型。
此类型描述了设备在网络上可以担任的角色。
名称 | 值 | 说明 |
---|---|---|
已分离 |
1 |
已分离的角色。该接口当前未加入该网络,原因在于它找不到父级 |
END_DEVICE |
2 |
终端设备角色。最终设备不会代表其他节点路由流量。 |
路线 |
3 |
路由器角色。路由器有助于在网状网络周围路由流量。 请注意,此角色与设备是否为“边界路由器”无关。 并非所有网络类型都支持此角色。 |
SLEEPY_END_DEVICE |
4 |
“Sleepy End-Device”角色。 具有此角色的终端设备名义上处于休眠状态,会定期唤醒以签入其父项,查看是否有发往它们的数据包。此类设备的功耗非常低,但数据包延迟时间可能长达几十秒(具体取决于节点的配置方式)。并非所有网络类型都支持此角色。 并非所有网络类型都支持此角色。 |
SLEEPY_ROUTER |
5 |
Sleepy-router 角色。 具有此角色的路由器名义上处于休眠状态,会定期唤醒以签入其他路由器及其子路由器。 并非所有网络类型都支持此角色。 |
领导者 |
6 |
领导角色。 在 Thread 网络上,对于每个分区/fragment,有一个路由器被指定为“主要”路由器,这意味着它被视为对所有网络数据的权威。在大多数情况下,此角色可被视为 Role::ROUTER 的同义词。 并非所有网络类型都支持此角色。 |
协调者 |
7 |
协调者角色。 并非所有网络类型都支持此角色。 |
表
AllCounters
在 fuchsia.lowpan.device/counters.fidl 中定义
描述所有计数器。
如果不支持任何计数器,则可能为空。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
mac_tx |
MacCounters
|
适用于 TX 的 MAC 计数器 |
2 |
mac_rx |
MacCounters
|
用于 RX 的 MAC 计数器 |
3 |
coex_tx |
CoexCounters
|
TX 的共存计数器 |
4 |
coex_rx |
CoexCounters
|
适用于 RX 的共存计数器 |
5 |
coex_saturated |
bool
|
由于内部计数器溢出,共存统计数据可能不正确。 重置计数器以清除此标志。 |
6 |
ip_tx |
IpCounters
|
TX 的 IP 计数器。 添加:8 项
|
7 |
ip_rx |
IpCounters
|
用于 RX 的 IP 计数器。 添加:8 项
|
CoexCounters
在 fuchsia.lowpan.device/counters.fidl 中定义
与 RF 共存相关的计数器。
某些计数器仅对 RX 或 TX 有效。如需了解详情,请参阅此处。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
requests |
uint64
|
请求数量 |
2 |
grant_immediate |
uint64
|
授权进行期间的请求数量 |
3 |
grant_wait |
uint64
|
授权无效时的请求数量 |
4 |
grant_wait_activated |
uint64
|
授权处于无效状态时最终获得授权的请求数 |
5 |
grant_wait_timeout |
uint64
|
授权无效且超时的请求数 |
6 |
grant_deactivated_during_request |
uint64
|
停用授权时进行中的请求数 |
7 |
delayed_grant |
uint64
|
在 50 微秒内未被授予的请求数量 |
8 |
avg_delay_request_to_grant_usec |
uint32
|
从请求到授权的平均时间(以微秒为单位) |
9 |
grant_none |
uint64
|
已完成且未获得授权的请求数量。 仅接收。 |
DeviceState
在 fuchsia.lowpan.device/device.fidl 中定义
LoWPAN 设备的组合状态
包含 LoWPAN 设备的各种属性,这些属性用于定义其当前运行状态。
您将在第一次调用 WatchDeviceState()
时获取当前状态的快照,之后,之后再次调用该方法将返回增量。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
connectivity_state |
ConnectivityState
|
LoWPAN 连接状态 此字段描述了此设备提供的当前连接级别。 |
2 |
role |
Role
|
LoWPAN 角色 此字段描述了此设备在当前网络上担任的角色。 |
EnergyScanParameters
在 fuchsia.lowpan.device/energy_scanner.fidl 中定义
描述能量扫描的参数。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
channels |
vector<uint16>[200]
|
要扫描的频道子集。 如果未指定,系统将扫描所有频道。 |
2 |
dwell_time_ms |
uint32
|
能量扫描的每个通道所需的停留时间(以毫秒为单位)。 请注意,固件限制可能会导致无法使用精确停留时间。在这种情况下,将使用近似值。 实现必须能够支持至少 5000 毫秒(5 秒)的停留时间。受支持的确切停留时间范围取决于设备/驱动程序。 如果设置的值超出此设备支持的值范围,则该值将被限制到最接近的有效值,因此将值设为 0 将始终请求设备支持的最短能量扫描持续时间。 如果未指定,将使用约 500 毫秒的停留时间。 |
EnergyScanResult
在 fuchsia.lowpan.device/energy_scanner.fidl 中定义
描述能量扫描一个通道的结果。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
channel_index |
fuchsia.lowpan/ChannelIndex
|
此能量扫描结果的信道指数。 |
2 |
max_rssi |
int32
|
在此频道中检测到的最大 RSSI。 |
3 |
min_rssi |
int32
|
在此频道上检测到的最小 RSSI。 |
身份
在 fuchsia.lowpan.device/device.fidl 中定义
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
raw_name |
vector<uint8>[63]
|
网络名称的原始字节。 这通常是 StringPrep'd UTF8 编码。 请注意,在向用户显示此值时必须格外小心,因为有多种方法可以制作外观相似的 UTF8 字符串,这些字符串具有不同的字节码表示形式。 |
3 |
net_type |
NetworkType
|
用于标识网络类型的字符串。 众所周知的协议 ID 与特定的字符串值相关联(如“org.threadgroup.std.thread”或“org.zigbee.std.zigbee-ip”)。对于未知协议 ID,该字符串将映射到类似 |
4 |
channel |
fuchsia.lowpan/ChannelIndex
|
渠道索引。 |
5 |
panid |
uint16
|
基于 802.14.5 的网络(或等效网络)的 PANID。 |
6 |
mesh_local_prefix |
fuchsia.net/Ipv6AddressWithPrefix
|
IPv6 网状网本地前缀。 此参数可让您确定当前网络的网状网本地 IPv6 前缀,也可在预配网络接口或构建新网络时指定一个前缀。 前缀长度始终为 64 位,因此仅使用值的高 64 位:读取时必须忽略最低有效位,设置时必须忽略最低有效位。 如果提供给 |
7 |
xpanid |
uint8[8]
|
扩展 PANID。 添加:11
|
IpCounters
在 fuchsia.lowpan.device/counters.fidl 中定义
与 IP 层关联的计数器。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
success |
uint32
|
成功传输/接收的 IPv6 数据包的数量。 |
2 |
failure |
uint32
|
IPv6 数据包发送/接收失败。 |
MacCounters
在 fuchsia.lowpan.device/counters.fidl 中定义
与 MAC 层相关联的计数器。
某些计数器仅对 RX 或 TX 有效。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
total |
uint32
|
帧总数 |
2 |
unicast |
uint32
|
单播帧的总数 |
3 |
broadcast |
uint32
|
广播帧的总数 |
4 |
ack_requested |
uint32
|
收到确认请求的帧数 |
5 |
acked |
uint32
|
已确认的帧数 |
6 |
no_ack_requested |
uint32
|
无确认请求的帧数 |
7 |
data |
uint32
|
数据帧的数量 |
8 |
data_poll |
uint32
|
数据轮询帧的数量 |
9 |
beacon |
uint32
|
信标帧数 |
10 |
beacon_request |
uint32
|
信标请求帧数 |
11 |
other |
uint32
|
其他类型的帧的数量 |
12 |
address_filtered |
uint32
|
按地址过滤器(许可名单或拒绝名单)过滤的帧数。 |
13 |
retries |
uint32
|
重新传输尝试次数。 仅限 TX。 |
14 |
direct_max_retry_expiry |
uint32
|
私信的已过期重新传输重试次数。仅限 TX。 |
15 |
indirect_max_retry_expiry |
uint32
|
仅适用于间接消息 TX 的过期重新传输重试次数。 |
16 |
dest_addr_filtered |
uint32
|
已接收的经目标检查滤除的帧数。 仅限 RX。 |
17 |
duplicated |
uint32
|
收到的重复帧的数量。 仅限 RX。 |
18 |
err_no_frame |
uint32
|
已接收的不含内容或格式有误的帧数。 仅限 RX。 |
19 |
err_unknown_neighbor |
uint32
|
从未知相邻项接收到的帧数。 仅限 RX。 |
20 |
err_invalid_src_addr |
uint32
|
已接收的源地址无效的帧数量。 仅限 RX。 |
21 |
err_sec |
uint32
|
已接收存在安全错误的帧的数量。 仅限 RX。 |
22 |
err_fcs |
uint32
|
已接收存在 FCS 错误的帧数。 仅限 RX。 |
23 |
err_cca |
uint32
|
CCA 失败次数。 仅限 TX。 |
24 |
err_abort |
uint32
|
因中止错误而导致的帧传输失败次数。仅限 TX。 |
25 |
err_busy_channel |
uint32
|
因通道繁忙而丢失的帧数。仅限 TX。 |
26 |
err_other |
uint32
|
遇到其他错误的帧数。 |
联合
凭据灵活
在 fuchsia.lowpan.device/device.fidl 中定义
描述 LoWPAN 凭据。
目前仅支持对称网络密钥,但将来可能会进行扩展,以支持其他类型的凭据,例如密码、PAKE 密钥或对证书/私钥对的引用。
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
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 ] |
描述网络类型的字符串。 |