450 lines
17 KiB
Plaintext
450 lines
17 KiB
Plaintext
enum @beta Efl.Net.Control.Access_Point_State {
|
|
[[Provides the access point state.
|
|
]]
|
|
idle, [[Nothing is happening with this access point]]
|
|
association, [[The access point is trying to associate itself. This is the first state after a connection attempt.]]
|
|
configuration, [[The access point is configuring itself, such as DHCP.]]
|
|
local, [[The access point is connected but the internet connection hasn't been validated.]]
|
|
online, [[The access point is connected and the internet connection has been validated.]]
|
|
disconnect, [[The access point is disconnecting.]]
|
|
failure, [[The connection attempt failed, @Efl.Net.Control.Access_Point.error will provide more details]]
|
|
}
|
|
|
|
enum @beta Efl.Net.Control.Access_Point_Error {
|
|
[[The reason for the connection error.
|
|
]]
|
|
none, [[All OK, no errors]]
|
|
out_of_range, [[Wireless device is out of range.]]
|
|
pin_missing, [[PIN was required and is missing.]]
|
|
dhcp_failed, [[DHCP failed to provide configuration.]]
|
|
connect_failed, [[Could not connect to access point.]]
|
|
login_failed, [[Login or authentication information was incorrect, agent_request_input event may be emitted.]]
|
|
}
|
|
|
|
enum @beta Efl.Net.Control.Access_Point_Security {
|
|
[[Bitwise-able securities supported by an access point.
|
|
]]
|
|
unknow = 0, [[Unknown]]
|
|
none = (1 << 0), [[Open access, no security]]
|
|
wep = (1 << 1), [[WEP]]
|
|
psk = (1 << 2), [[PSK (Pre Shared Key), such as WPA or RSN]]
|
|
ieee802_1x = (1 << 3), [[IEEE 802.1X]]
|
|
}
|
|
|
|
enum @beta Efl.Net.Control.Access_Point_Ipv4_Method {
|
|
[[The method used to configure IPv4
|
|
]]
|
|
off, [[IPv4 is disabled.]]
|
|
dhcp, [[IPv4 is configured using DHCP.]]
|
|
manual, [[IPv4 is manually set using address, netmask and gateway]]
|
|
unset, [[Only to be used with @Efl.Net.Control.Access_Point.configuration_ipv4]]
|
|
}
|
|
|
|
enum @beta Efl.Net.Control.Access_Point_Ipv6_Method {
|
|
[[The method used to configure IPv6
|
|
]]
|
|
off, [[IPv6 is disabled.]]
|
|
fixed, [[IPv6 is fixed by operator and cannot be changed.]]
|
|
manual, [[IPv6 is manually set using address, netmask and gateway.]]
|
|
auto_privacy_none, [[IPv6 is set using dhcp or using a tunnel6to4. No privacy extensions should be used.]]
|
|
auto_privacy_public, [[IPv6 is set using dhcp or using a tunnel6to4, privacy extensions are used and the system prefers a public IP address over temporary addresses.]]
|
|
auto_privacy_temporary, [[IPv6 is set using dhcp or using a tunnel6to4, privacy extensions are used and the system prefers a temporary IP address over public addresses.]]
|
|
tunnel6to4, [[IPv6 was configured using a 6-to-4 tunnel. This cannot be set by the user, which is set to "auto" instead]]
|
|
unset, [[Only to be used with @Efl.Net.Control.Access_Point.configuration_ipv6]]
|
|
}
|
|
|
|
enum @beta Efl.Net.Control.Access_Point_Proxy_Method {
|
|
[[The method used to configure Proxies.
|
|
]]
|
|
off, [[Direct connection to the internet, no proxy used.]]
|
|
auto, [[Proxy is autoconfigured using Proxy-Auto-Configuration (PAC) using given URL.]]
|
|
manual, [[Proxy is configured manually using servers and excludes.]]
|
|
unset, [[Only to be used with @Efl.Net.Control.Access_Point.configuration_proxy.]]
|
|
}
|
|
|
|
class @beta Efl.Net.Control.Access_Point extends Efl.Loop_Consumer {
|
|
[[An access point for network connectivity.
|
|
|
|
The @Efl.Net.Control.Manager is composed of multiple technologies, each
|
|
create access points to allow configuration and connection.
|
|
|
|
An application requiring only a network connection can just
|
|
use a @Efl.Net.Session instead.
|
|
]]
|
|
|
|
events {
|
|
changed: void; [[Called when some properties were changed.]]
|
|
}
|
|
|
|
methods {
|
|
connect {
|
|
[[Connects to this access point.
|
|
|
|
This connection will happen asynchronously in the
|
|
background, with results being delivered by events in
|
|
the access point object, such as the "changed".
|
|
|
|
Successful connections will remember the device and set
|
|
it to auto-connect using the property @.auto_connect.
|
|
|
|
See @.forget, @.remembered, @.auto_connect and
|
|
@.disconnect
|
|
|
|
The future may fail with non-fatal errors such as
|
|
EINPROGRESS (the connection was already ongoing) and
|
|
EALREADY (the connection was already established).
|
|
]]
|
|
return: future<void> @move; [[Future for asynchronous connect]]
|
|
}
|
|
|
|
disconnect {
|
|
[[Disconnects from this access point.
|
|
|
|
When disconnected previously connected access points
|
|
won't be forgotten. The configuration and other details
|
|
such as priority and passphrase will be available for
|
|
future re-connection with a call to @.connect. If you
|
|
need to disconnect and forget all access point
|
|
information, use @.forget instead.
|
|
]]
|
|
}
|
|
|
|
forget {
|
|
[[Disconnects and forgets about this access point.
|
|
|
|
Successful @.connect will always remember the access
|
|
point for future re-connections. This method overrides
|
|
this by disconnecting and forgetting the access
|
|
point and its configuration, which will set
|
|
@.remembered to $false.
|
|
]]
|
|
}
|
|
|
|
@property state {
|
|
[[The current state of the access point.
|
|
|
|
Whenever the state changes, "changed" will be emitted.
|
|
]]
|
|
get { }
|
|
values {
|
|
state: Efl.Net.Control.Access_Point_State; [[Access point state]]
|
|
}
|
|
}
|
|
|
|
@property error {
|
|
[[If the access point is in error state, this states the error.]]
|
|
get { }
|
|
values {
|
|
error: Efl.Net.Control.Access_Point_Error; [[Access point error]]
|
|
}
|
|
}
|
|
|
|
@property ssid {
|
|
[[The user-friendly access point name.
|
|
|
|
For hidden WiFi networks, this is empty.
|
|
]]
|
|
get { }
|
|
values {
|
|
name: string; [[Access point name]]
|
|
}
|
|
}
|
|
|
|
@property priority {
|
|
[[The access point priority in the current access point listing.
|
|
|
|
This property is dynamic and reflects the index of the
|
|
access point in the current access points list. As
|
|
access points may come and go, the value may change at
|
|
any time and send notifications via the "changed" event.
|
|
|
|
If set, then it will reorder priorities, moving all other
|
|
services at equal or higher priority up. To move as the
|
|
first (most priority), then use 0. To move as the last
|
|
priority, use UINT32_MAX or the last known priority + 1.
|
|
|
|
Note: Only stored access points may be reordered
|
|
among themselves. Those that are not remembered will
|
|
always come last in a random order defined by the backend.
|
|
]]
|
|
get { }
|
|
set { }
|
|
values {
|
|
priority: uint; [[Access point priority in listing]]
|
|
}
|
|
}
|
|
|
|
@property technology {
|
|
[[The technology that generated this access point]]
|
|
get { }
|
|
values {
|
|
technology: Efl.Net.Control.Technology; [[Access point technology]]
|
|
}
|
|
}
|
|
|
|
@property strength {
|
|
[[Signal strength percentage in 0-100]]
|
|
get { }
|
|
values {
|
|
strength: uint8; [[Access point signal strength]]
|
|
}
|
|
}
|
|
|
|
@property roaming {
|
|
[[If it's a cellular access point and it's on roaming.]]
|
|
get { }
|
|
values {
|
|
roaming: bool; [[$true if the access point is cellular and uses roaming, $false otherwise]]
|
|
}
|
|
}
|
|
|
|
@property auto_connect {
|
|
[[Whenever to auto-connect to this access point if no other is connected.
|
|
|
|
By default successfully connected access points are
|
|
remembered and set to auto-connect. This behavior can be
|
|
changed with this property.
|
|
|
|
An access point is only connected automatically if there
|
|
are no other connected and if it is not on roaming.
|
|
]]
|
|
get { }
|
|
set { }
|
|
values {
|
|
auto_connect: bool; [[$true when auto-connect is set for this access point, $false otherwise]]
|
|
}
|
|
}
|
|
|
|
@property remembered {
|
|
[[Successfully connected access points are remembered.
|
|
|
|
To forget about this access point, call @.forget.
|
|
]]
|
|
get { }
|
|
values {
|
|
remembered: bool; [[$true if this access point will be remembered, $false otherwise]]
|
|
}
|
|
}
|
|
|
|
@property immutable {
|
|
[[Immutable access points are those defined in configuration files and its properties can't be changed using API.]]
|
|
get { }
|
|
values {
|
|
immutable: bool; [[$true is this access point is immutable, $false otherwise]]
|
|
}
|
|
}
|
|
|
|
@property security {
|
|
[[Security options such as WEP, WPS, PSK or none (open).]]
|
|
get { }
|
|
values {
|
|
security: Efl.Net.Control.Access_Point_Security; [[Bitwise OR of security supported by this access point]]
|
|
}
|
|
}
|
|
|
|
@property name_servers {
|
|
[[DNS (Domain Name Servers) in use for this access point.
|
|
|
|
These are the actual values used. Configure them using
|
|
@.configuration_name_servers. This may generate changes
|
|
to this property, triggering the "changed"
|
|
event.
|
|
]]
|
|
get { }
|
|
values {
|
|
name_servers: iterator<string> @move; [[Iterator to DNS server]]
|
|
}
|
|
}
|
|
|
|
@property time_servers {
|
|
[[NTP (Time Server) in use for this access point.
|
|
|
|
These are the actual values used. Configure them using
|
|
@.configuration_name_servers. This may generate changes
|
|
to this property, triggering the "changed"
|
|
event.
|
|
]]
|
|
get { }
|
|
values {
|
|
time_servers: iterator<string> @move; [[Iterator to time server]]
|
|
}
|
|
}
|
|
|
|
@property domains {
|
|
[[Searches domains in use for this access point.
|
|
|
|
These are the actual values used. Configure them using
|
|
@.configuration_name_servers. This may generate changes
|
|
to this property, triggering the "changed"
|
|
event.
|
|
]]
|
|
get { }
|
|
values {
|
|
domains: iterator<string> @move; [[Iterator to search domains]]
|
|
}
|
|
}
|
|
|
|
@property ipv4 {
|
|
[[IPv4 in use for this access point.
|
|
|
|
These are the actual values used. Configure them using
|
|
@.configuration_name_servers. This may generate changes
|
|
to this property, triggering the "changed"
|
|
event.
|
|
]]
|
|
get { }
|
|
values {
|
|
method: Efl.Net.Control.Access_Point_Ipv4_Method; [[IPv4 method]]
|
|
address: string; [[IPv4 address]]
|
|
netmask: string; [[IPv4 netmask]]
|
|
gateway: string; [[IPv4 gateway]]
|
|
}
|
|
}
|
|
|
|
@property ipv6 {
|
|
[[IPv6 in use for this access point.
|
|
|
|
These are the actual values used. Configure them using
|
|
@.configuration_name_servers. This may generate changes
|
|
to this property, triggering the "changed"
|
|
event.
|
|
]]
|
|
get { }
|
|
values {
|
|
method: Efl.Net.Control.Access_Point_Ipv6_Method; [[IPv6 method]]
|
|
address: string; [[IPv6 address]]
|
|
prefix_length: uint8; [[IPv6 prefix length]]
|
|
netmask: string; [[IPv6 netmask]]
|
|
gateway: string; [[IPv6 gateway]]
|
|
}
|
|
}
|
|
|
|
@property proxy {
|
|
[[Proxy in use for this access point.
|
|
|
|
These are the actual values used. Configure them using
|
|
@.configuration_name_servers. This may generate changes
|
|
to this property, triggering the "changed"
|
|
event.
|
|
]]
|
|
get { }
|
|
values {
|
|
method: Efl.Net.Control.Access_Point_Proxy_Method; [[Proxy method]]
|
|
url: string; [[If @Efl.Net.Control.Access_Point_Proxy_Method.auto, then states the URL to use for proxy auto-configuration]]
|
|
servers: iterator<string> @move; [[If @Efl.Net.Control.Access_Point_Proxy_Method.manual, then states the URI with proxy servers to use, like "http://proxy.domain.com:911"]]
|
|
excludes: iterator<string> @move; [[If @Efl.Net.Control.Access_Point_Proxy_Method.manual, then states the hosts or patterns to exclude from proxy access, such as "localhost", ".domain.com", or "10.0.0.0..."]]
|
|
}
|
|
}
|
|
|
|
@property configuration_name_servers {
|
|
[[DNS (Domain Name Servers) configured by user for this access point.
|
|
|
|
These are user configured values, which will be
|
|
applied by the backend system and in turn may result in
|
|
"changed" event to notify of @.name_servers property
|
|
with the actual value in use, which may differ from
|
|
this.
|
|
]]
|
|
set { }
|
|
get { }
|
|
values {
|
|
name_servers: iterator<string> @move; [[Iterator to user DNS server]]
|
|
}
|
|
}
|
|
|
|
@property configuration_time_servers {
|
|
[[NTP (Time Server) configured by user for this access point.
|
|
|
|
These are user configured values, which will be
|
|
applied by the backend system and in turn may result in
|
|
"changed" event to notify of @.name_servers property
|
|
with the actual value in use, which may differ from
|
|
this.
|
|
]]
|
|
set { }
|
|
get { }
|
|
values {
|
|
time_servers: iterator<string> @move; [[Iterator to user time server]]
|
|
}
|
|
}
|
|
|
|
@property configuration_domains {
|
|
[[Searches domains configured by user for this access point.
|
|
|
|
These are user configured values, which will be
|
|
applied by the backend system and in turn may result in
|
|
"changed" event to notify of @.domains property
|
|
with the actual value in use, which may differ from
|
|
this.
|
|
]]
|
|
set { }
|
|
get { }
|
|
values {
|
|
domains: iterator<string> @move; [[Iterator to user search domains]]
|
|
}
|
|
}
|
|
|
|
@property configuration_ipv4 {
|
|
[[IPv4 configured by user for this access point.
|
|
|
|
These are user configured values, which will be
|
|
applied by the backend system and in turn may result in
|
|
"changed" event to notify of @.ipv4 property
|
|
with the actual value in use, which may differ from
|
|
this.
|
|
]]
|
|
set { }
|
|
get { }
|
|
values {
|
|
method: Efl.Net.Control.Access_Point_Ipv4_Method; [[IPv4 method]]
|
|
address: string; [[IPv4 address]]
|
|
netmask: string; [[IPv4 netmask]]
|
|
gateway: string; [[IPv4 gateway]]
|
|
}
|
|
}
|
|
|
|
@property configuration_ipv6 {
|
|
[[IPv6 configured by user for this access point.
|
|
|
|
These are user configured values, which will be
|
|
applied by the backend system and in turn may result in
|
|
"changed" event to notify of @.ipv6 property
|
|
with the actual value in use, which may differ from
|
|
this.
|
|
]]
|
|
set { }
|
|
get { }
|
|
values {
|
|
method: Efl.Net.Control.Access_Point_Ipv6_Method; [[IPv6 method]]
|
|
address: string; [[IPv6 address]]
|
|
prefix_length: uint8; [[IPv6 prefix length]]
|
|
netmask: string; [[IPv6 netmask]]
|
|
gateway: string; [[IPv6 gateway]]
|
|
}
|
|
}
|
|
|
|
@property configuration_proxy {
|
|
[[Proxy configured by user for this access point.
|
|
|
|
These are user configured values, which will be
|
|
applied by the backend system and in turn may result in
|
|
"changed" event to notify of @.proxy property
|
|
with the actual value in use, which may differ from
|
|
this.
|
|
]]
|
|
set { }
|
|
get { }
|
|
values {
|
|
method: Efl.Net.Control.Access_Point_Proxy_Method; [[Proxy method]]
|
|
url: string; [[If @Efl.Net.Control.Access_Point_Proxy_Method.auto, then states the URL to use for proxy auto-configuration]]
|
|
servers: iterator<string> @move; [[If @Efl.Net.Control.Access_Point_Proxy_Method.manual, then states the URI with proxy servers to use, like "http://proxy.domain.com:911"]]
|
|
excludes: iterator<string> @move; [[If @Efl.Net.Control.Access_Point_Proxy_Method.manual, then states the hosts or patterns to exclude from proxy access, such as "localhost", ".domain.com", or "10.0.0.0..."]]
|
|
}
|
|
}
|
|
}
|
|
|
|
implements {
|
|
Efl.Object.destructor;
|
|
}
|
|
}
|