Add more wireless device properties
This commit is contained in:
parent
2c7e6be272
commit
337d0bb01e
1 changed files with 129 additions and 6 deletions
|
@ -11,7 +11,18 @@ const (
|
||||||
|
|
||||||
// Methods
|
// Methods
|
||||||
DeviceWirelessGetAccessPoints = DeviceWirelessInterface + ".GetAccessPoints"
|
DeviceWirelessGetAccessPoints = DeviceWirelessInterface + ".GetAccessPoints"
|
||||||
|
DeviceWirelessGetAllAccessPoints = DeviceWirelessInterface + ".GetAllAccessPoints"
|
||||||
DeviceWirelessRequestScan = DeviceWirelessInterface + ".RequestScan"
|
DeviceWirelessRequestScan = DeviceWirelessInterface + ".RequestScan"
|
||||||
|
|
||||||
|
// Properties
|
||||||
|
DeviceWirelessPropertyHwAddress = DeviceWirelessInterface + ".HwAddress" // readable s
|
||||||
|
DeviceWirelessPropertyPermHwAddress = DeviceWirelessInterface + ".PermHwAddress" // readable s
|
||||||
|
DeviceWirelessPropertyMode = DeviceWirelessInterface + ".Mode" // readable u
|
||||||
|
DeviceWirelessPropertyBitrate = DeviceWirelessInterface + ".Bitrate" // readable u
|
||||||
|
DeviceWirelessPropertyAccessPoints = DeviceWirelessInterface + ".AccessPoints" // readable ao
|
||||||
|
DeviceWirelessPropertyActiveAccessPoint = DeviceWirelessInterface + ".ActiveAccessPoint" // readable o
|
||||||
|
DeviceWirelessPropertyWirelessCapabilities = DeviceWirelessInterface + ".WirelessCapabilities" // readable u
|
||||||
|
DeviceWirelessPropertyLastScan = DeviceWirelessInterface + ".LastScan" // readable x
|
||||||
)
|
)
|
||||||
|
|
||||||
type DeviceWireless interface {
|
type DeviceWireless interface {
|
||||||
|
@ -23,7 +34,40 @@ type DeviceWireless interface {
|
||||||
// GetAllAccessPoints() method.
|
// GetAllAccessPoints() method.
|
||||||
GetAccessPoints() ([]AccessPoint, error)
|
GetAccessPoints() ([]AccessPoint, error)
|
||||||
|
|
||||||
RequestScan()
|
// GetAllAccessPoints gets the list of all access points visible to this
|
||||||
|
// device, including hidden ones for which the SSID is not yet known.
|
||||||
|
GetAllAccessPoints() ([]AccessPoint, error)
|
||||||
|
|
||||||
|
// Request the device to scan. To know when the scan is finished, use the
|
||||||
|
// "PropertiesChanged" signal from "org.freedesktop.DBus.Properties" to listen
|
||||||
|
// to changes to the "LastScan" property.
|
||||||
|
RequestScan() error
|
||||||
|
|
||||||
|
// The active hardware address of the device.
|
||||||
|
GetPropertyHwAddress() (string, error)
|
||||||
|
|
||||||
|
// The permanent hardware address of the device.
|
||||||
|
GetPropertyPermHwAddress() (string, error)
|
||||||
|
|
||||||
|
// The operating mode of the wireless device.
|
||||||
|
GetPropertyMode() (Nm80211Mode, error)
|
||||||
|
|
||||||
|
// The bit rate currently used by the wireless device, in kilobits/second (Kb/s).
|
||||||
|
GetPropertyBitrate() (uint32, error)
|
||||||
|
|
||||||
|
// List of object paths of access point visible to this wireless device.
|
||||||
|
GetPropertyAccessPoints() ([]AccessPoint, error)
|
||||||
|
|
||||||
|
// Object path of the access point currently used by the wireless device.
|
||||||
|
GetPropertyActiveAccessPoint() (AccessPoint, error)
|
||||||
|
|
||||||
|
// The capabilities of the wireless device.
|
||||||
|
GetPropertyWirelessCapabilities() (uint32, error)
|
||||||
|
|
||||||
|
// The timestamp (in CLOCK_BOOTTIME milliseconds) for the last finished
|
||||||
|
// network scan. A value of -1 means the device never scanned for access
|
||||||
|
// points.
|
||||||
|
GetPropertyLastScan() (int64, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewDeviceWireless(objectPath dbus.ObjectPath) (DeviceWireless, error) {
|
func NewDeviceWireless(objectPath dbus.ObjectPath) (DeviceWireless, error) {
|
||||||
|
@ -55,13 +99,92 @@ func (d *deviceWireless) GetAccessPoints() ([]AccessPoint, error) {
|
||||||
return aps, nil
|
return aps, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *deviceWireless) RequestScan() {
|
func (d *deviceWireless) GetAllAccessPoints() ([]AccessPoint, error) {
|
||||||
|
var apPaths []dbus.ObjectPath
|
||||||
|
err := d.callWithReturn(&apPaths, DeviceWirelessGetAllAccessPoints)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
aps := make([]AccessPoint, len(apPaths))
|
||||||
|
|
||||||
|
for i, path := range apPaths {
|
||||||
|
aps[i], err = NewAccessPoint(path)
|
||||||
|
if err != nil {
|
||||||
|
return aps, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return aps, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *deviceWireless) RequestScan() error {
|
||||||
var options map[string]interface{}
|
var options map[string]interface{}
|
||||||
d.obj.Call(DeviceWirelessRequestScan, 0, options).Store()
|
return d.obj.Call(DeviceWirelessRequestScan, 0, options).Store()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *deviceWireless) GetPropertyHwAddress() (string, error) {
|
||||||
|
return d.getStringProperty(DeviceWirelessPropertyHwAddress)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *deviceWireless) GetPropertyPermHwAddress() (string, error) {
|
||||||
|
return d.getStringProperty(DeviceWirelessPropertyPermHwAddress)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *deviceWireless) GetPropertyMode() (Nm80211Mode, error) {
|
||||||
|
v, err := d.getUint32Property(DeviceWirelessPropertyMode)
|
||||||
|
return Nm80211Mode(v), err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *deviceWireless) GetPropertyBitrate() (uint32, error) {
|
||||||
|
return d.getUint32Property(DeviceWirelessPropertyBitrate)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *deviceWireless) GetPropertyAccessPoints() ([]AccessPoint, error) {
|
||||||
|
apPaths, err := d.getSliceObjectProperty(DeviceWirelessPropertyAccessPoints)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
ap := make([]AccessPoint, len(apPaths))
|
||||||
|
for i, path := range apPaths {
|
||||||
|
ap[i], err = NewAccessPoint(path)
|
||||||
|
if err != nil {
|
||||||
|
return ap, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ap, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *deviceWireless) GetPropertyActiveAccessPoint() (AccessPoint, error) {
|
||||||
|
path, err := d.getObjectProperty(DeviceWirelessPropertyActiveAccessPoint)
|
||||||
|
if err != nil || path == "/" {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return NewAccessPoint(path)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *deviceWireless) GetPropertyWirelessCapabilities() (uint32, error) {
|
||||||
|
return d.getUint32Property(DeviceWirelessPropertyWirelessCapabilities)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *deviceWireless) GetPropertyLastScan() (int64, error) {
|
||||||
|
return d.getInt64Property(DeviceWirelessPropertyLastScan)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *deviceWireless) MarshalJSON() ([]byte, error) {
|
func (d *deviceWireless) MarshalJSON() ([]byte, error) {
|
||||||
m := d.device.marshalMap()
|
m := d.device.marshalMap()
|
||||||
m["AccessPoints"], _ = d.GetAccessPoints()
|
m["AccessPoints"], _ = d.GetPropertyAccessPoints()
|
||||||
|
m["HwAddress"], _ = d.GetPropertyHwAddress()
|
||||||
|
m["PermHwAddress"], _ = d.GetPropertyPermHwAddress()
|
||||||
|
m["Mode"], _ = d.GetPropertyMode()
|
||||||
|
m["Bitrate"], _ = d.GetPropertyBitrate()
|
||||||
|
m["AccessPoints"], _ = d.GetPropertyAccessPoints()
|
||||||
|
m["ActiveAccessPoint"], _ = d.GetPropertyActiveAccessPoint()
|
||||||
|
m["WirelessCapabilities"], _ = d.GetPropertyWirelessCapabilities()
|
||||||
|
m["LastScan"], _ = d.GetPropertyLastScan()
|
||||||
return json.Marshal(m)
|
return json.Marshal(m)
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue