mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-11-15 16:39:24 +01:00
4c3cbdc8d3
This documents new DBus property that expose a bit more control to how IWD roams. Setting the affinity on the connected BSS effectively "locks" IWD to that BSS (except at critical RSSI levels, explained below). This can be useful for clients that have access to more information about the environment than IWD. For example, if a client is stationary there is likely no point in trying to roam until it has moved elsewhere. A new main.conf option would also be added: [General].CriticalRoamThreshold This would be the new roam threshold set if the currently connected BSS is in the Affinities list. If the RSSI continues to drop below this level IWD will still attempt to roam.
222 lines
7.2 KiB
Plaintext
222 lines
7.2 KiB
Plaintext
Station hierarchy
|
|
=================
|
|
|
|
Service net.connman.iwd
|
|
Interface net.connman.iwd.Station
|
|
Object path /net/connman/iwd/{phy0,phy1,...}/{1,2,...}
|
|
|
|
Methods void Scan()
|
|
|
|
Schedule a network scan.
|
|
|
|
Possible errors: net.connman.iwd.Busy
|
|
net.connman.iwd.Failed
|
|
|
|
void Disconnect()
|
|
|
|
Disconnect from the network. This also disables
|
|
iwd from trying to autoconnect to any other network
|
|
with this device.
|
|
|
|
Possible errors: net.connman.iwd.Busy
|
|
net.connman.iwd.Failed
|
|
net.connman.iwd.NotConnected
|
|
|
|
array(on) GetOrderedNetworks()
|
|
|
|
Return the list of networks found in the most recent
|
|
scan, sorted by their user interface importance
|
|
score as calculated by iwd. If the device is
|
|
currently connected to a network, that network is
|
|
always first on the list, followed by any known
|
|
networks that have been used at least once before,
|
|
followed by any other known networks and any other
|
|
detected networks as the last group. Within these
|
|
groups the maximum relative signal-strength is the
|
|
main sorting factor.
|
|
|
|
Every record returned contains a tuple of the
|
|
following values.
|
|
|
|
object Object
|
|
|
|
net.connman.iwd.Network object representing
|
|
the network.
|
|
|
|
int16 SignalStrength
|
|
|
|
Network's maximum signal strength expressed
|
|
in 100 * dBm. The value is the range of 0
|
|
(strongest signal) to -10000 (weakest signal)
|
|
|
|
array(sns) GetHiddenAccessPoints() [experimental]
|
|
|
|
Returns a list (possibly empty) of detected hidden
|
|
access points. The list is sorted according to the
|
|
relative signal strength of each access point.
|
|
|
|
Every record returned contains a 3-tuple of the
|
|
following values.
|
|
|
|
string Address
|
|
|
|
Access Point's address
|
|
|
|
int16 SignalStrength
|
|
|
|
Access Point's signal strength expressed in
|
|
100 * dBm. The value is the range of 0
|
|
(strongest signal) to -10000 (weakest signal)
|
|
|
|
string Type
|
|
|
|
The type of the hidden Access Point. Same
|
|
values as Network.Type.
|
|
|
|
void ConnectHiddenNetwork(string ssid)
|
|
|
|
Tries to find and connect to a hidden network for the
|
|
first time. Only hidden networks of type 'psk' and
|
|
'open' are supported. WPA-Enterprise hidden networks
|
|
must be provisioned.
|
|
|
|
The ssid parameter is used to find the hidden network.
|
|
If no network with the given ssid is found, an
|
|
net.connman.iwd.NotFound error is returned.
|
|
|
|
In the unlikely case that both an open and pre-shared
|
|
key hidden network with the given ssid is found an
|
|
net.connman.iwd.ServiceSetOverlap error is returned.
|
|
|
|
Once the hidden network is found, the connection will
|
|
proceed as normal. So the user agent will be asked
|
|
for a passphrase, etc.
|
|
|
|
This method should only be called once to provision
|
|
a hidden network. For all future connections the
|
|
regular Network.Connect() API should be used.
|
|
|
|
Possible errors: net.connman.iwd.Busy
|
|
net.connman.iwd.Failed
|
|
net.connman.iwd.InvalidArguments
|
|
net.connman.iwd.NotConfigured
|
|
net.connman.iwd.NotConnected
|
|
net.connman.iwd.NotFound
|
|
net.connman.iwd.ServiceSetOverlap
|
|
net.connman.iwd.AlreadyProvisioned
|
|
net.connman.iwd.NotHidden
|
|
|
|
void RegisterSignalLevelAgent(object path,
|
|
array(int16) levels)
|
|
|
|
Register the agent object to receive signal strength
|
|
level change notifications on the
|
|
net.connman.iwd.SignalLevelAgent interface, see
|
|
below. The "levels" parameters decides the
|
|
thresholds in dBm that will generate a call to the
|
|
agent's Changed method whenever current RSSI crosses
|
|
any of the values. The values must be passed in
|
|
descending order. The number and distance between
|
|
requested threshold values is a compromise between
|
|
resolution and the frequency of system wakeups and
|
|
context-switches that are going to be occurring to
|
|
update the client's signal meter. Only one agent
|
|
can be registered at any time.
|
|
|
|
Possible Errors: [service].Error.InvalidArguments
|
|
[service].Error.Failed
|
|
[service].Error.AlreadyExists
|
|
[service].Error.NotSupported
|
|
|
|
void UnregisterSignalLevelAgent(object path)
|
|
|
|
Unregister an existing agent.
|
|
|
|
Possible Errors: [service].Error.InvalidArguments
|
|
[service].Error.NotFound
|
|
|
|
Properties string State [readonly]
|
|
|
|
Reflects the general network connection state. One of:
|
|
|
|
"connected", "disconnected", "connecting",
|
|
"disconnecting", "roaming"
|
|
|
|
object ConnectedNetwork [readonly, optional]
|
|
|
|
net.connman.iwd.Network object representing the
|
|
network the device is currently connected to or to
|
|
which a connection is in progress. This property
|
|
will be updated with the object path of the Network
|
|
object as soon as the connection process is initiated,
|
|
and will remain for as long as the connection is in
|
|
progress, completed and the network has not been
|
|
disconnected.
|
|
|
|
On disconnection this property becomes invalid and
|
|
disappears from the property list. Refer to the
|
|
State property documentation if you need to track
|
|
the actual state of the connection.
|
|
|
|
boolean Scanning [readonly]
|
|
|
|
Reflects whether the station is currently scanning
|
|
for networks. net.connman.iwd.Network objects are
|
|
updated when this property goes from true to false.
|
|
|
|
object ConnectedAccessPoint [readonly, optional]
|
|
|
|
net.connman.iwd.BasicServiceSet object represeting the
|
|
BSS the device is currently connected to or to which
|
|
a connection is in progress.
|
|
|
|
ao Affinities [optional] [experimental]
|
|
|
|
Array of net.connman.iwd.BasicServiceSet object paths
|
|
that will be treated with higher affinity compared to
|
|
other BSS's. Currently the only allowed value to be
|
|
set in this array is the path to the currently connected
|
|
BasicServiceSet object, i.e.
|
|
Station.ConnectedAccessPoint.
|
|
|
|
Setting the affinity will lower the roaming threshold,
|
|
effectively locking IWD to the current BSS unless the
|
|
RSSI drops below the critical threshold set by
|
|
[General].CriticalRoamThreshold{5G} at which point
|
|
IWD will proceed with normal roaming behavior.
|
|
|
|
This property is cleared on roams/disconnections.
|
|
|
|
SignalLevelAgent hierarchy
|
|
==========================
|
|
|
|
Service unique name
|
|
Interface net.connman.iwd.SignalLevelAgent
|
|
Object path freely definable
|
|
|
|
Methods void Release(object device) [noreply]
|
|
|
|
This method gets called when the service daemon
|
|
unregisters the agent. An agent can use it to do
|
|
cleanup tasks. There is no need to unregister the
|
|
agent, because when this method gets called it has
|
|
already been unregistered.
|
|
|
|
void Changed(object device, uint8 level) [noreply]
|
|
|
|
This method gets called when the signal strength
|
|
measurement for the device's connected network changes
|
|
enough to go from one level to another out of the N
|
|
ranges defined by the array of (N-1) threshold values
|
|
passed to RegisterSignalLevelAgent(). It also gets
|
|
called immediately after the signal level agent is
|
|
registered. The level parameter is in the range from 0
|
|
to N, 0 being the strongest signal or above the first
|
|
threshold value in the array, and N being the weakest
|
|
and below the last threshold value. For example if
|
|
RegisterSignalLevelAgent was called with the array [-40,
|
|
-50, -60], the 'level' parameter of 0 would mean signal
|
|
is received at -40 or more dBm and 3 would mean below
|
|
-60 dBm and might correspond to 1 out of 4 bars on a UI
|
|
signal meter.
|