协议
接入点控制器
在 fuchsia.wlan.policy/access_point_provider.fidl 中定义
AccessPointController 允许调用方触发 WLA 状态更改。这包括设备是否充当接入点,以及是否为其他位于同一位置的设备提供 Wi-Fi 网络。
启动接入点
允许 Wlan 使用提供的网络配置、连接模式和频段启动 AccessPoint 操作。
请求
名称 | 类型 |
---|---|
config |
NetworkConfig
|
mode |
ConnectivityMode
|
band |
OperatingBand
|
回复
名称 | 类型 |
---|---|
status |
fuchsia.wlan.common/RequestStatus
|
停止接入点
为指定的网络配置停用 AccessPoint 操作。
请求
名称 | 类型 |
---|---|
config |
NetworkConfig
|
回复
名称 | 类型 |
---|---|
status |
fuchsia.wlan.common/RequestStatus
|
停止所有访问点
停用设备上当前运行的所有接入点。
请求
<空>
AccessPointListener
在 fuchsia.wlan.policy/access_point_provider.fidl 中定义
AccessPointListener API 为调用方提供了一种机制,用于接收有关 WLA 接入点操作的状态更改更新。
获取监听器
注册调用方以接收 Wi-Fi 接入点 (AP) 模式状态更新。
请求
名称 | 类型 |
---|---|
updates |
AccessPointStateUpdates
|
AccessPointProvider
在 fuchsia.wlan.policy/access_point_provider.fidl 中定义
AccessPointProvider API 提供了一种接入点控制机制,旨在由代表用户的应用或实体(例如“设置”)调用。其他应用在没有明确的用户控制的情况下,不能调用此 API 来更改 Wi-Fi 状态。
此 API 设计的第二个目标是通过限制控制应用的数量来消除“最后调用者获胜”模式。一次允许一个调用方发出会影响 WLA 状态的 API 调用。
获取控制器
单个调用方用于触发 WLA 接入点 (ap) 模式状态更改的控制信道。调用方还会提供一个用于接收 WLA 应用更新的通道。一次只能对一个调用方打开控制信道。如果在存在有效控件注册的情况下尝试注册为控制器,将导致新调用方提供的通道被关闭。
请求
名称 | 类型 |
---|---|
requests |
server_end<AccessPointController>
|
updates |
AccessPointStateUpdates
|
AccessPointStateUpdates
在 fuchsia.wlan.policy/access_point_provider.fidl 中定义
AccessPoint 操作状态会随关联的连接状态而变化。
OnAccessPointStateUpdate
使用 Wi-Fi 接入点操作状态的当前摘要更新已注册的监听器。当活跃接入点网络的数量及其各自的活动发生变化时,将调用此方法。已注册的监听器负责确定哪些信息发生了更改(这取决于它们上次确认更新的时间)。
请求
名称 | 类型 |
---|---|
access_points |
vector<AccessPointState>
|
回复
<空>
ClientController
在 fuchsia.wlan.policy/client_provider.fidl 中定义
ClientController 允许调用方触发 WLA 状态更改。这包括是否尝试连接、扫描触发器以及保存的网络配置更改。
API 提供的单个调用将在通过 OpenControlChannel 调用注册 wlan ClientProvider 后触发。
连接
尝试连接到指定网络的请求。连接调用的目标必须已经是已保存的网络。在连接尝试期间,此调用不会造成阻塞调用。如果无法立即尝试调用,系统将返回失败状态。如果尝试连接请求,将返回确认状态。连接状态的更新通过 ClientStateUpdates 协议进行传播。如果连接尝试失败,服务将回退到通过网络选择进行扫描和连接的默认行为。
请求
名称 | 类型 |
---|---|
id |
NetworkIdentifier
|
回复
名称 | 类型 |
---|---|
status |
fuchsia.wlan.common/RequestStatus
|
GetSavedNetworks
使用提供的迭代器检索当前保存的网络。
请求
名称 | 类型 |
---|---|
iterator |
server_end<NetworkConfigIterator>
|
移除网络
移除已保存的网络配置(如果存在)。如果使用 NetworkConfig 建立连接,此方法会自动触发断开连接。
请求
名称 | 类型 |
---|---|
config |
NetworkConfig
|
回复
名称 | 类型 |
---|---|
payload |
ClientController_RemoveNetwork_Result
|
保存网络
保存网络以及连接所需的任何凭据信息。如果凭据不同,则同一 NetworkIdentifier 可能对应多个条目。如果调用方尝试保存与之前保存的网络具有相同 NetworkIdentifier 和凭据的 NetworkConfig,则该方法实际上是一个空操作。
请求
名称 | 类型 |
---|---|
config |
NetworkConfig
|
回复
名称 | 类型 |
---|---|
payload |
ClientController_SaveNetwork_Result
|
ScanForNetwork
触发网络扫描。请注意,即使在正常操作中,某些扫描请求也可能会由于连接建立时间或其他关键连接维护的时间而被拒绝。如果扫描被取消或出现错误,调用方会通过 ScanResultIterator 中的状态更新收到通知。在当前实现中,必须先启动客户端连接才能执行扫描。
请求
名称 | 类型 |
---|---|
iterator |
server_end<ScanResultIterator>
|
StartClientConnections
允许 Wi-Fi 启动与网络的连接(通过自动连接到已保存的网络,或根据触发连接的来电执行操作)。此调用可能会影响其他设备运行(例如,充当接入点),具体取决于设备的底层功能。返回的状态表示对请求的确认。您应监控 ClientListener 协议,以了解客户端功能何时启用。
请求
<空>
回复
名称 | 类型 |
---|---|
status |
fuchsia.wlan.common/RequestStatus
|
StopClientConnections
断开与 Wi-Fi 网络的所有现有连接,并禁止启动新连接。 返回的状态表示请求的确认。您应监控 ClientListener 协议,以了解客户端功能何时停用。
请求
<空>
回复
名称 | 类型 |
---|---|
status |
fuchsia.wlan.common/RequestStatus
|
ClientListener 接口
在 fuchsia.wlan.policy/client_provider.fidl 中定义
ClientListener API 为调用方提供了一种机制,用于接收有关 Wlan 操作的状态更改更新。
获取监听器
注册调用方以接收 WLA 客户端模式状态更新。
请求
名称 | 类型 |
---|---|
updates |
ClientStateUpdates
|
ClientProvider
在 fuchsia.wlan.policy/client_provider.fidl 中定义
ClientProvider API 提供了一种 Wi-Fi 控制机制,旨在由代表用户的应用或实体(例如“设置”)调用。其他应用不得通过调用此 API 在没有明确用户控制的情况下更改 Wi-Fi 状态。
此 API 设计的第二个目标是通过限制控制应用的数量来消除“最后调用者获胜”模式。一次允许一个调用方发出会影响 WLA 状态的 API 调用。
获取控制器
单个调用方用于触发 WLA 客户端模式状态更改的控制通道。调用方还会提供一个用于接收 WLA 更新的通道。一次只能对一个调用方打开控制信道。如果在存在有效控件注册的情况下尝试注册为控制器,将导致新调用方提供的通道被关闭。
请求
名称 | 类型 |
---|---|
requests |
server_end<ClientController>
|
updates |
ClientStateUpdates
|
ClientStateUpdates
在 fuchsia.wlan.policy/client_provider.fidl 中定义
客户端连接的 Wlan 状态和关联的网络状态会发生变化。这些更新包含以下方面的信息:设备是否尝试连接到网络、已保存的网络配置更改信息、按 NetworkIdentifier 划分的个别连接状态信息和连接尝试信息。与连接和网络相关的调用基于 NetworkIdentifier,以允许在支持的设备上同时连接多个。
OnClientStateUpdate
使用 WLA 客户端状态的当前摘要更新已注册的监听器。 当状态发生任何变化时将调用此方法,并且注册的监听器负责决定哪些信息发生了变化(因为这取决于它们上次确认更新的时间)。
请求
名称 | 类型 |
---|---|
summary |
ClientStateSummary
|
回复
<空>
NetworkConfigIterator
在 fuchsia.wlan.policy/client_provider.fidl 中定义
调用方用来检索已保存的网络信息的迭代器。
获取下一步
允许处理下一个已保存网络块的方法。
请求
<空>
回复
名称 | 类型 |
---|---|
configs |
vector<NetworkConfig>
|
ScanResultIterator
在 fuchsia.wlan.policy/client_provider.fidl 中定义
该迭代器用于将扫描结果发回给调用方。扫描完成后,相应的通道将关闭,并返回结果或因出错而失败。
获取下一步
允许调用方请求下一组扫描结果。 发送所有扫描结果后,对 GetNext 的下一次调用将返回一个空矢量,且通道将关闭。如果在扫描期间遇到错误,系统将返回错误并关闭通道。系统不会提供任何扫描结果。
请求
<空>
回复
名称 | 类型 |
---|---|
payload |
ScanResultIterator_GetNext_Result
|
结构体
ClientController_RemoveNetwork_Response
在 fuchsia.wlan.policy/client_provider.fidl 中定义
<空>
ClientController_SaveNetwork_Response
在 fuchsia.wlan.policy/client_provider.fidl 中定义
<空>
空白
在 fuchsia.wlan.policy/types.fidl 中定义
用于代替可选值的空结构体。
<空>
网络标识符
在 fuchsia.wlan.policy/types.fidl 中定义
区分可用网络的主要方法 -(大多数情况下)由人可识别的名称和安全类型的组合。安全类型用于区分不同的网络保护类型(或缺少保护功能)。
字段 | 类型 | 说明 | 默认 |
---|---|---|---|
ssid |
fuchsia.wlan.ieee80211/Ssid
|
广告联盟名称,通常供用户在界面中在广告联盟之间进行选择。 |
无默认值 |
type |
SecurityType
|
网络的保护类型(或非)。 |
无默认值 |
ScanResultIterator_GetNext_Response
在 fuchsia.wlan.policy/client_provider.fidl 中定义
字段 | 类型 | 说明 | 默认 |
---|---|---|---|
scan_results |
vector<ScanResult>
|
无默认值 |
ENUMS
兼容性严格
类型:uint32
在 fuchsia.wlan.policy/client_provider.fidl 中定义
扫描结果的高级别兼容性。并非所有网络安全协议都受支持。出于安全和隐私方面的考虑,新协议可能会在可连接之前被检测到,并且已弃用的协议可能明确不受支持。
名称 | 值 | 说明 |
---|---|---|
支持 |
1 |
表示网络受支持,可以尝试连接(在需要时提供适当的凭据)。 |
DISALLOWED_INSECURE |
2 |
该网络使用已弃用的安全协议,因此明确不受支持。 |
DISALLOWED_NOT_SUPPORTED |
3 |
网络使用目前不受支持的安全协议。 |
ConnectionState 严格
类型:uint32
在 fuchsia.wlan.policy/client_provider.fidl 中定义
用于更新已注册 WLA 观察者的连接状态。
名称 | 值 | 说明 |
---|---|---|
失败 |
1 |
由于出错,连接尝试终止。 |
已断开连接 |
2 |
已断开网络连接。 |
正在连接 |
3 |
设备正在尝试连接到网络。 |
已连接 |
4 |
现在已建立连接。注意:这无法保证更高级别的网络可达性。 |
ConnectivityMode 严格
类型:uint32
在 fuchsia.wlan.policy/access_point_provider.fidl 中定义
接入点的连接操作模式。
名称 | 值 | 说明 |
---|---|---|
仅限本地 |
1 |
支持位于同一位置的设备之间建立连接。仅限本地的接入点不会将流量转发到其他网络连接。 |
不受限制 |
2 |
允许完全连接,流量可能会转发到其他网络连接(例如,网络共享模式)。 |
DisconnectStatus 严格
类型:uint32
在 fuchsia.wlan.policy/client_provider.fidl 中定义
断开连接和尝试连接失败状态代码
名称 | 值 | 说明 |
---|---|---|
已超时 |
1 |
由于超时,所请求的连接尝试失败。 |
CREDENTIALS_FAILED |
2 |
由于疑似凭据失败,因此请求的连接尝试失败。 |
连接已停止 |
3 |
现有连接已在此设备上的 Wlan 服务操作明确断开连接。这可能是由于 Wi-Fi 连接被停用、网络配置遭到移除或尝试连接到其他网络(例如)所致。 |
连接失败 |
4 |
现有连接意外失败,且不是设备(或用户)明确触发的断开连接。意外断开连接的示例包括:底层错误(驱动程序、固件等)、信标丢失、接入点故障。 |
NetworkConfigChangeError 严格
类型:uint32
在 fuchsia.wlan.policy/client_provider.fidl 中定义
保存和移除网络配置时可能会出现的错误情况。
名称 | 值 | 说明 |
---|---|---|
GENERAL_ERROR |
1 |
|
NETWORK_CONFIG_MISSING_FIELD_ERROR |
2 |
|
NETWORK_CONFIG_WRITE_ERROR |
3 |
|
SSID_EMPTY_ERROR |
4 |
|
CREDENTIAL_LEN_ERROR |
6 |
|
INVALID_SECURITY_CREDENTIAL_ERROR |
7 |
|
UNSUPPORTED_CREDENTIAL_ERROR |
8 |
OperationBand 严格
类型:uint32
在 fuchsia.wlan.policy/types.fidl 中定义
WLAN 控制请求和状态更新的操作频段。
名称 | 值 | 说明 |
---|---|---|
任意 |
1 |
允许根据设备操作模式和环境切换频段。 |
ONLY_2_4GHZ |
2 |
仅限 2.4 GHz 频段。 |
ONLY_5GHZ |
3 |
仅限 5 GHz 频段。 |
OperationState 严格
类型:uint32
在 fuchsia.wlan.policy/access_point_provider.fidl 中定义
接入点的当前详细操作状态。
名称 | 值 | 说明 |
---|---|---|
失败 |
1 |
接入点操作失败。进入失败状态的接入点会有一项更新通知已注册的监听器存在故障,然后还会再进行一项更新,即从列表中移除相应接入点。 |
正在启动 |
2 |
接入点操作正在启动。 |
有效 |
3 |
接入点操作正在进行。 |
ScanErrorCode 严格
类型:uint32
在 fuchsia.wlan.policy/client_provider.fidl 中定义
Wlan 扫描错误代码。
名称 | 值 | 说明 |
---|---|---|
GENERAL_ERROR |
1 |
无具体原因的意外扫描错误。 |
CANCELLED |
2 |
扫描已取消并停止。当操作状态发生变化、更高的操作优先级或请求冲突时,可能会发生这种情况。 |
SecurityType 严格
类型:uint32
在 fuchsia.wlan.policy/types.fidl 中定义
网络的高级保护类型。这不会传达连接机制所需的所有详细信息,而主要用于将目标网络映射到适当的扫描结果。
名称 | 值 | 说明 |
---|---|---|
无 |
1 |
|
WEP |
2 |
|
WPA |
3 |
|
WPA2 |
4 |
|
WPA3 |
5 |
WlanClientState 严格
类型:uint32
在 fuchsia.wlan.policy/client_provider.fidl 中定义
客户端连接的 Wlan 操作状态
名称 | 值 | 说明 |
---|---|---|
连接已停用 |
1 |
|
CONNECTIONS_已启用 |
2 |
表格
AccessPointState
在 fuchsia.wlan.policy/access_point_provider.fidl 中定义
各个操作接入点的相关信息。其中包括有关任何连接的客户端的有限信息。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
state |
OperatingState
|
当前接入点操作状态 |
2 |
mode |
ConnectivityMode
|
请求的操作连接模式 |
3 |
band |
OperatingBand
|
接入点操作频段。 |
4 |
frequency |
uint32
|
接入点工作频率(以 MHz 为单位)。 |
5 |
clients |
ConnectedClientInformation
|
已连接客户端的相关信息 |
6 |
id |
NetworkIdentifier
|
状态已更改的接入点的标识信息。 |
BSS
在 fuchsia.wlan.policy/client_provider.fidl 中定义
特定 ScanResult 条目的信息。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
bssid |
fuchsia.wlan.ieee80211/MacAddr
|
AP 接口的 MAC 地址。 |
2 |
rssi |
int8
|
计算出的信标/探测响应的接收信号强度。 |
3 |
frequency |
uint32
|
此网络的工作频率(以 MHz 为单位)。 |
4 |
timestamp_nanos |
zx/Time
|
扫描结果相对于系统开机的时间。 请参阅 https://fuchsia.dev/fuchsia-src/concepts/time/language_support#monotonic_time |
ClientStateSummary
在 fuchsia.wlan.policy/client_provider.fidl 中定义
有关设备当前客户端状态的信息。这包括设备是否尝试连接到接入点(如适用)、任何现有连接和活跃连接尝试及其结果。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
state |
WlanClientState
|
指示 Wlan 是否尝试连接到网络的状态。 |
2 |
networks |
vector<NetworkState>
|
活跃连接、连接尝试或失败的连接。 |
ConnectedClientInformation
在 fuchsia.wlan.policy/access_point_provider.fidl 中定义
关联的客户端信息。这一限制最初受限于连接的客户端数量。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
count |
uint8
|
连接的客户端数量 |
网络配置
在 fuchsia.wlan.policy/types.fidl 中定义
用于建立连接的网络信息。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
id |
NetworkIdentifier
|
用于表示特定网络的标识符。不保证唯一性。 |
2 |
credential |
Credential
|
加入网络所需的信息。 |
网络状态
在 fuchsia.wlan.policy/client_provider.fidl 中定义
有关当前网络连接和尝试的信息。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
id |
NetworkIdentifier
|
当前连接(或尝试)的网络 ID。 |
2 |
state |
ConnectionState
|
连接的当前状态。 |
3 |
status |
DisconnectStatus
|
有关调试或“设置”显示的额外信息 |
ScanResult
在 fuchsia.wlan.policy/client_provider.fidl 中定义
来自观察到的 WLA 网络的信息。其中包括网络名称、安全类型、检测到的接入点信息和网络兼容性信息。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
id |
NetworkIdentifier
|
用于区分网络以及对各个 AP 进行分组的网络属性。 |
2 |
entries |
vector<Bss>
|
提供指定网络的各个接入点。 |
3 |
compatibility |
Compatibility
|
指明实现是否支持检测到的网络。 |
联合
ClientController_RemoveNetwork_Result 严格
在 fuchsia.wlan.policy/client_provider.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
ClientController_RemoveNetwork_Response
|
|
2 |
err |
NetworkConfigChangeError
|
ClientController_SaveNetwork_Result 严格
在 fuchsia.wlan.policy/client_provider.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
ClientController_SaveNetwork_Response
|
|
2 |
err |
NetworkConfigChangeError
|
凭据灵活
在 fuchsia.wlan.policy/types.fidl 中定义
用于验证对目标网络的访问权限的信息。
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
none |
Empty
|
该网络不使用凭据(开放网络)。 |
2 |
password |
vector<uint8>
|
明文密码(作为二进制数据处理)。 |
3 |
psk |
vector<uint8>
|
网络口令的哈希表示法(作为二进制数据处理)。 |
ScanResultIterator_GetNext_Result 严格
在 fuchsia.wlan.policy/client_provider.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
ScanResultIterator_GetNext_Response
|
|
2 |
err |
ScanErrorCode
|