Documentation ¶
Overview ¶
BlueZ D-Bus GATT API description [gatt-api.txt] GATT local and remote services share the same high-level D-Bus API. Local refers to GATT based service exported by a BlueZ plugin or an external application. Remote refers to GATT services exported by the peer.
BlueZ acts as a proxy, translating ATT operations to D-Bus method calls and Properties (or the opposite). Support for D-Bus Object Manager is mandatory for external services to allow seamless GATT declarations (Service, Characteristic and Descriptors) discovery. Each GATT service tree is required to export a D-Bus Object Manager at its root that is solely responsible for the objects that belong to that service.
Releasing a registered GATT service is not defined yet. Any API extension should avoid breaking the defined API, and if possible keep an unified GATT remote and local services representation.
Index ¶
- Constants
- Variables
- type GattCharacteristic1
- func (a *GattCharacteristic1) AcquireNotify(options map[string]interface{}) (dbus.UnixFD, uint16, error)
- func (a *GattCharacteristic1) AcquireWrite(options map[string]interface{}) (dbus.UnixFD, uint16, error)
- func (a *GattCharacteristic1) Client() *bluez.Client
- func (a *GattCharacteristic1) Close()
- func (a *GattCharacteristic1) Confirm() error
- func (a *GattCharacteristic1) GetDescriptors() ([]dbus.ObjectPath, error)
- func (a *GattCharacteristic1) GetFlags() ([]string, error)
- func (a *GattCharacteristic1) GetHandle() (uint16, error)
- func (a *GattCharacteristic1) GetMTU() (uint16, error)
- func (a *GattCharacteristic1) GetNotifyAcquired() (bool, error)
- func (a *GattCharacteristic1) GetNotifying() (bool, error)
- func (a *GattCharacteristic1) GetObjectManagerSignal() (chan *dbus.Signal, func(), error)
- func (a *GattCharacteristic1) GetProperties() (*GattCharacteristic1Properties, error)
- func (a *GattCharacteristic1) GetPropertiesSignal() (chan *dbus.Signal, error)
- func (a *GattCharacteristic1) GetProperty(name string) (dbus.Variant, error)
- func (a *GattCharacteristic1) GetService() (dbus.ObjectPath, error)
- func (a *GattCharacteristic1) GetUUID() (string, error)
- func (a *GattCharacteristic1) GetValue() ([]byte, error)
- func (a *GattCharacteristic1) GetWatchPropertiesChannel() chan *dbus.Signal
- func (a *GattCharacteristic1) GetWriteAcquired() (bool, error)
- func (a *GattCharacteristic1) Interface() string
- func (a *GattCharacteristic1) Path() dbus.ObjectPath
- func (a *GattCharacteristic1) ReadValue(options map[string]interface{}) ([]byte, error)
- func (a *GattCharacteristic1) SetDescriptors(v []dbus.ObjectPath) error
- func (a *GattCharacteristic1) SetHandle(v uint16) error
- func (a *GattCharacteristic1) SetProperty(name string, value interface{}) error
- func (a *GattCharacteristic1) SetWatchPropertiesChannel(c chan *dbus.Signal)
- func (a *GattCharacteristic1) StartNotify() error
- func (a *GattCharacteristic1) StopNotify() error
- func (a *GattCharacteristic1) ToProps() bluez.Properties
- func (a *GattCharacteristic1) UnwatchProperties(ch chan *bluez.PropertyChanged) error
- func (a *GattCharacteristic1) WatchProperties() (chan *bluez.PropertyChanged, error)
- func (a *GattCharacteristic1) WriteValue(value []byte, options map[string]interface{}) error
- type GattCharacteristic1Properties
- func (a *GattCharacteristic1Properties) FromDBusMap(props map[string]dbus.Variant) (*GattCharacteristic1Properties, error)
- func (a *GattCharacteristic1Properties) FromMap(props map[string]interface{}) (*GattCharacteristic1Properties, error)
- func (p *GattCharacteristic1Properties) Lock()
- func (a *GattCharacteristic1Properties) ToMap() (map[string]interface{}, error)
- func (p *GattCharacteristic1Properties) Unlock()
- type GattDescriptor1
- func (a *GattDescriptor1) Client() *bluez.Client
- func (a *GattDescriptor1) Close()
- func (a *GattDescriptor1) GetCharacteristic() (dbus.ObjectPath, error)
- func (a *GattDescriptor1) GetFlags() ([]string, error)
- func (a *GattDescriptor1) GetHandle() (uint16, error)
- func (a *GattDescriptor1) GetObjectManagerSignal() (chan *dbus.Signal, func(), error)
- func (a *GattDescriptor1) GetProperties() (*GattDescriptor1Properties, error)
- func (a *GattDescriptor1) GetPropertiesSignal() (chan *dbus.Signal, error)
- func (a *GattDescriptor1) GetProperty(name string) (dbus.Variant, error)
- func (a *GattDescriptor1) GetUUID() (string, error)
- func (a *GattDescriptor1) GetValue() ([]byte, error)
- func (a *GattDescriptor1) GetWatchPropertiesChannel() chan *dbus.Signal
- func (a *GattDescriptor1) Interface() string
- func (a *GattDescriptor1) Path() dbus.ObjectPath
- func (a *GattDescriptor1) ReadValue(flags map[string]interface{}) ([]byte, error)
- func (a *GattDescriptor1) SetHandle(v uint16) error
- func (a *GattDescriptor1) SetProperty(name string, value interface{}) error
- func (a *GattDescriptor1) SetWatchPropertiesChannel(c chan *dbus.Signal)
- func (a *GattDescriptor1) ToProps() bluez.Properties
- func (a *GattDescriptor1) UnwatchProperties(ch chan *bluez.PropertyChanged) error
- func (a *GattDescriptor1) WatchProperties() (chan *bluez.PropertyChanged, error)
- func (a *GattDescriptor1) WriteValue(value []byte, flags map[string]interface{}) error
- type GattDescriptor1Properties
- func (a *GattDescriptor1Properties) FromDBusMap(props map[string]dbus.Variant) (*GattDescriptor1Properties, error)
- func (a *GattDescriptor1Properties) FromMap(props map[string]interface{}) (*GattDescriptor1Properties, error)
- func (p *GattDescriptor1Properties) Lock()
- func (a *GattDescriptor1Properties) ToMap() (map[string]interface{}, error)
- func (p *GattDescriptor1Properties) Unlock()
- type GattManager1
- func (a *GattManager1) Client() *bluez.Client
- func (a *GattManager1) Close()
- func (a *GattManager1) GetObjectManagerSignal() (chan *dbus.Signal, func(), error)
- func (a *GattManager1) GetProperties() (*GattManager1Properties, error)
- func (a *GattManager1) GetPropertiesSignal() (chan *dbus.Signal, error)
- func (a *GattManager1) GetProperty(name string) (dbus.Variant, error)
- func (a *GattManager1) GetWatchPropertiesChannel() chan *dbus.Signal
- func (a *GattManager1) Interface() string
- func (a *GattManager1) Path() dbus.ObjectPath
- func (a *GattManager1) RegisterApplication(application dbus.ObjectPath, options map[string]interface{}) error
- func (a *GattManager1) SetProperty(name string, value interface{}) error
- func (a *GattManager1) SetWatchPropertiesChannel(c chan *dbus.Signal)
- func (a *GattManager1) ToProps() bluez.Properties
- func (a *GattManager1) UnregisterApplication(application dbus.ObjectPath) error
- func (a *GattManager1) UnwatchProperties(ch chan *bluez.PropertyChanged) error
- func (a *GattManager1) WatchProperties() (chan *bluez.PropertyChanged, error)
- type GattManager1Properties
- func (a *GattManager1Properties) FromDBusMap(props map[string]dbus.Variant) (*GattManager1Properties, error)
- func (a *GattManager1Properties) FromMap(props map[string]interface{}) (*GattManager1Properties, error)
- func (p *GattManager1Properties) Lock()
- func (a *GattManager1Properties) ToMap() (map[string]interface{}, error)
- func (p *GattManager1Properties) Unlock()
- type GattProfile1
- func (a *GattProfile1) Client() *bluez.Client
- func (a *GattProfile1) Close()
- func (a *GattProfile1) GetObjectManagerSignal() (chan *dbus.Signal, func(), error)
- func (a *GattProfile1) GetProperties() (*GattProfile1Properties, error)
- func (a *GattProfile1) GetPropertiesSignal() (chan *dbus.Signal, error)
- func (a *GattProfile1) GetProperty(name string) (dbus.Variant, error)
- func (a *GattProfile1) GetUUIDs() ([]string, error)
- func (a *GattProfile1) GetWatchPropertiesChannel() chan *dbus.Signal
- func (a *GattProfile1) Interface() string
- func (a *GattProfile1) Path() dbus.ObjectPath
- func (a *GattProfile1) Release() error
- func (a *GattProfile1) SetProperty(name string, value interface{}) error
- func (a *GattProfile1) SetWatchPropertiesChannel(c chan *dbus.Signal)
- func (a *GattProfile1) ToProps() bluez.Properties
- func (a *GattProfile1) UnwatchProperties(ch chan *bluez.PropertyChanged) error
- func (a *GattProfile1) WatchProperties() (chan *bluez.PropertyChanged, error)
- type GattProfile1Properties
- func (a *GattProfile1Properties) FromDBusMap(props map[string]dbus.Variant) (*GattProfile1Properties, error)
- func (a *GattProfile1Properties) FromMap(props map[string]interface{}) (*GattProfile1Properties, error)
- func (p *GattProfile1Properties) Lock()
- func (a *GattProfile1Properties) ToMap() (map[string]interface{}, error)
- func (p *GattProfile1Properties) Unlock()
- type GattService1
- func (a *GattService1) Client() *bluez.Client
- func (a *GattService1) Close()
- func (a *GattService1) GetCharacteristics() ([]dbus.ObjectPath, error)
- func (a *GattService1) GetDevice() (dbus.ObjectPath, error)
- func (a *GattService1) GetHandle() (uint16, error)
- func (a *GattService1) GetIncludes() ([]dbus.ObjectPath, error)
- func (a *GattService1) GetIsService() (bool, error)
- func (a *GattService1) GetObjectManagerSignal() (chan *dbus.Signal, func(), error)
- func (a *GattService1) GetPrimary() (bool, error)
- func (a *GattService1) GetProperties() (*GattService1Properties, error)
- func (a *GattService1) GetPropertiesSignal() (chan *dbus.Signal, error)
- func (a *GattService1) GetProperty(name string) (dbus.Variant, error)
- func (a *GattService1) GetUUID() (string, error)
- func (a *GattService1) GetWatchPropertiesChannel() chan *dbus.Signal
- func (a *GattService1) Interface() string
- func (a *GattService1) Path() dbus.ObjectPath
- func (a *GattService1) SetCharacteristics(v []dbus.ObjectPath) error
- func (a *GattService1) SetHandle(v uint16) error
- func (a *GattService1) SetIsService(v bool) error
- func (a *GattService1) SetProperty(name string, value interface{}) error
- func (a *GattService1) SetWatchPropertiesChannel(c chan *dbus.Signal)
- func (a *GattService1) ToProps() bluez.Properties
- func (a *GattService1) UnwatchProperties(ch chan *bluez.PropertyChanged) error
- func (a *GattService1) WatchProperties() (chan *bluez.PropertyChanged, error)
- type GattService1Properties
- func (a *GattService1Properties) FromDBusMap(props map[string]dbus.Variant) (*GattService1Properties, error)
- func (a *GattService1Properties) FromMap(props map[string]interface{}) (*GattService1Properties, error)
- func (p *GattService1Properties) Lock()
- func (a *GattService1Properties) ToMap() (map[string]interface{}, error)
- func (p *GattService1Properties) Unlock()
Constants ¶
const ( FlagCharacteristicBroadcast = "broadcast" FlagCharacteristicRead = "read" FlagCharacteristicWriteWithoutResponse = "write-without-response" FlagCharacteristicWrite = "write" FlagCharacteristicNotify = "notify" FlagCharacteristicIndicate = "indicate" FlagCharacteristicAuthenticatedSignedWrites = "authenticated-signed-writes" FlagCharacteristicReliableWrite = "reliable-write" FlagCharacteristicWritableAuxiliaries = "writable-auxiliaries" FlagCharacteristicEncryptRead = "encrypt-read" FlagCharacteristicEncryptWrite = "encrypt-write" FlagCharacteristicEncryptAuthenticatedRead = "encrypt-authenticated-read" FlagCharacteristicEncryptAuthenticatedWrite = "encrypt-authenticated-write" FlagCharacteristicSecureRead = "secure-read" FlagCharacteristicSecureWrite = "secure-write" )
Defines how the characteristic value can be used. See Core spec "Table 3.5: Characteristic Properties bit field", and "Table 3.8: Characteristic Extended Properties bit field"
const ( FlagDescriptorRead = "read" FlagDescriptorWrite = "write" FlagDescriptorEncryptRead = "encrypt-read" FlagDescriptorEncryptWrite = "encrypt-write" FlagDescriptorEncryptAuthenticatedRead = "encrypt-authenticated-read" FlagDescriptorEncryptAuthenticatedWrite = "encrypt-authenticated-write" FlagDescriptorSecureRead = "secure-read" FlagDescriptorSecureWrite = "secure-write" )
Descriptor specific flags
Variables ¶
var GattCharacteristic1Interface = "org.bluez.GattCharacteristic1"
var GattDescriptor1Interface = "org.bluez.GattDescriptor1"
var GattManager1Interface = "org.bluez.GattManager1"
var GattProfile1Interface = "org.bluez.GattProfile1"
var GattService1Interface = "org.bluez.GattService1"
Functions ¶
This section is empty.
Types ¶
type GattCharacteristic1 ¶
type GattCharacteristic1 struct { Properties *GattCharacteristic1Properties // contains filtered or unexported fields }
GattCharacteristic1 Characteristic hierarchy
For local GATT defined services, the object paths need to follow the service path hierarchy and are freely definable.
func NewGattCharacteristic1 ¶
func NewGattCharacteristic1(objectPath dbus.ObjectPath) (*GattCharacteristic1, error)
NewGattCharacteristic1 create a new instance of GattCharacteristic1
Args: - objectPath: [variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/serviceXX/charYYYY
func (*GattCharacteristic1) AcquireNotify ¶
func (a *GattCharacteristic1) AcquireNotify(options map[string]interface{}) (dbus.UnixFD, uint16, error)
AcquireNotify Acquire file descriptor and MTU for notify. Only
sockets are support. Usage of StartNotify will be locked causing it to return NotPermitted error. For server the MTU returned shall be equal or smaller than the negotiated MTU. Only works with characteristic that has NotifyAcquired which relies on notify Flag and no other client have called StartNotify. Notification are enabled during this procedure so StartNotify shall not be called, any notification will be dispatched via file descriptor therefore the Value property is not affected during the time where notify has been acquired. To release the lock the client shall close the file descriptor, a HUP is generated in case the device is disconnected. Note: the MTU can only be negotiated once and is symmetric therefore this method may be delayed in order to have the exchange MTU completed, because of that the file descriptor is closed during reconnections as the MTU has to be renegotiated. Possible options: "device": Object Device (Server only) "mtu": Exchanged MTU (Server only) "link": Link type (Server only) Possible Errors: org.bluez.Error.Failed org.bluez.Error.NotSupported
func (*GattCharacteristic1) AcquireWrite ¶
func (a *GattCharacteristic1) AcquireWrite(options map[string]interface{}) (dbus.UnixFD, uint16, error)
AcquireWrite Acquire file descriptor and MTU for writing. Only
sockets are supported. Usage of WriteValue will be locked causing it to return NotPermitted error. For server the MTU returned shall be equal or smaller than the negotiated MTU. For client it only works with characteristic that has WriteAcquired property which relies on write-without-response Flag. To release the lock the client shall close the file descriptor, a HUP is generated in case the device is disconnected. Note: the MTU can only be negotiated once and is symmetric therefore this method may be delayed in order to have the exchange MTU completed, because of that the file descriptor is closed during reconnections as the MTU has to be renegotiated. Possible options: "device": Object Device (Server only) "mtu": Exchanged MTU (Server only) "link": Link type (Server only) Possible Errors: org.bluez.Error.Failed org.bluez.Error.NotSupported
func (*GattCharacteristic1) Client ¶
func (a *GattCharacteristic1) Client() *bluez.Client
Client return GattCharacteristic1 dbus client
func (*GattCharacteristic1) Confirm ¶
func (a *GattCharacteristic1) Confirm() error
Confirm This method doesn't expect a reply so it is just a
confirmation that value was received. Possible Errors: org.bluez.Error.Failed
func (*GattCharacteristic1) GetDescriptors ¶
func (a *GattCharacteristic1) GetDescriptors() ([]dbus.ObjectPath, error)
GetDescriptors get Descriptors value
func (*GattCharacteristic1) GetFlags ¶
func (a *GattCharacteristic1) GetFlags() ([]string, error)
GetFlags get Flags value
func (*GattCharacteristic1) GetHandle ¶
func (a *GattCharacteristic1) GetHandle() (uint16, error)
GetHandle get Handle value
func (*GattCharacteristic1) GetMTU ¶
func (a *GattCharacteristic1) GetMTU() (uint16, error)
GetMTU get MTU value
func (*GattCharacteristic1) GetNotifyAcquired ¶
func (a *GattCharacteristic1) GetNotifyAcquired() (bool, error)
GetNotifyAcquired get NotifyAcquired value
func (*GattCharacteristic1) GetNotifying ¶
func (a *GattCharacteristic1) GetNotifying() (bool, error)
GetNotifying get Notifying value
func (*GattCharacteristic1) GetObjectManagerSignal ¶
func (a *GattCharacteristic1) GetObjectManagerSignal() (chan *dbus.Signal, func(), error)
GetObjectManagerSignal return a channel for receiving updates from the ObjectManager
func (*GattCharacteristic1) GetProperties ¶
func (a *GattCharacteristic1) GetProperties() (*GattCharacteristic1Properties, error)
GetProperties load all available properties
func (*GattCharacteristic1) GetPropertiesSignal ¶
func (a *GattCharacteristic1) GetPropertiesSignal() (chan *dbus.Signal, error)
GetPropertiesSignal return a channel for receiving udpdates on property changes
func (*GattCharacteristic1) GetProperty ¶
func (a *GattCharacteristic1) GetProperty(name string) (dbus.Variant, error)
GetProperty get a property
func (*GattCharacteristic1) GetService ¶
func (a *GattCharacteristic1) GetService() (dbus.ObjectPath, error)
GetService get Service value
func (*GattCharacteristic1) GetUUID ¶
func (a *GattCharacteristic1) GetUUID() (string, error)
GetUUID get UUID value
func (*GattCharacteristic1) GetValue ¶
func (a *GattCharacteristic1) GetValue() ([]byte, error)
GetValue get Value value
func (*GattCharacteristic1) GetWatchPropertiesChannel ¶
func (a *GattCharacteristic1) GetWatchPropertiesChannel() chan *dbus.Signal
GetWatchPropertiesChannel return the dbus channel to receive properties interface
func (*GattCharacteristic1) GetWriteAcquired ¶
func (a *GattCharacteristic1) GetWriteAcquired() (bool, error)
GetWriteAcquired get WriteAcquired value
func (*GattCharacteristic1) Interface ¶
func (a *GattCharacteristic1) Interface() string
Interface return GattCharacteristic1 interface
func (*GattCharacteristic1) Path ¶
func (a *GattCharacteristic1) Path() dbus.ObjectPath
Path return GattCharacteristic1 object path
func (*GattCharacteristic1) ReadValue ¶
func (a *GattCharacteristic1) ReadValue(options map[string]interface{}) ([]byte, error)
ReadValue Issues a request to read the value of the
characteristic and returns the value if the operation was successful. Possible options: "offset": uint16 offset "mtu": Exchanged MTU (Server only) "device": Object Device (Server only) Possible Errors: org.bluez.Error.Failed org.bluez.Error.InProgress org.bluez.Error.NotPermitted org.bluez.Error.NotAuthorized org.bluez.Error.InvalidOffset org.bluez.Error.NotSupported
func (*GattCharacteristic1) SetDescriptors ¶
func (a *GattCharacteristic1) SetDescriptors(v []dbus.ObjectPath) error
SetDescriptors set Descriptors value
func (*GattCharacteristic1) SetHandle ¶
func (a *GattCharacteristic1) SetHandle(v uint16) error
SetHandle set Handle value
func (*GattCharacteristic1) SetProperty ¶
func (a *GattCharacteristic1) SetProperty(name string, value interface{}) error
SetProperty set a property
func (*GattCharacteristic1) SetWatchPropertiesChannel ¶
func (a *GattCharacteristic1) SetWatchPropertiesChannel(c chan *dbus.Signal)
SetWatchPropertiesChannel set the dbus channel to receive properties interface
func (*GattCharacteristic1) StartNotify ¶
func (a *GattCharacteristic1) StartNotify() error
StartNotify Starts a notification session from this characteristic
if it supports value notifications or indications. Possible Errors: org.bluez.Error.Failed org.bluez.Error.NotPermitted org.bluez.Error.InProgress org.bluez.Error.NotConnected org.bluez.Error.NotSupported
func (*GattCharacteristic1) StopNotify ¶
func (a *GattCharacteristic1) StopNotify() error
StopNotify This method will cancel any previous StartNotify
transaction. Note that notifications from a characteristic are shared between sessions thus calling StopNotify will release a single session. Possible Errors: org.bluez.Error.Failed
func (*GattCharacteristic1) ToProps ¶
func (a *GattCharacteristic1) ToProps() bluez.Properties
ToProps return the properties interface
func (*GattCharacteristic1) UnwatchProperties ¶
func (a *GattCharacteristic1) UnwatchProperties(ch chan *bluez.PropertyChanged) error
func (*GattCharacteristic1) WatchProperties ¶
func (a *GattCharacteristic1) WatchProperties() (chan *bluez.PropertyChanged, error)
WatchProperties updates on property changes
func (*GattCharacteristic1) WriteValue ¶
func (a *GattCharacteristic1) WriteValue(value []byte, options map[string]interface{}) error
WriteValue Issues a request to write the value of the
characteristic. Possible options: "offset": Start offset "type": string Possible values: "command": Write without response "request": Write with response "reliable": Reliable Write "mtu": Exchanged MTU (Server only) "device": Device path (Server only) "link": Link type (Server only) "prepare-authorize": True if prepare authorization request Possible Errors: org.bluez.Error.Failed org.bluez.Error.InProgress org.bluez.Error.NotPermitted org.bluez.Error.InvalidValueLength org.bluez.Error.NotAuthorized org.bluez.Error.NotSupported
type GattCharacteristic1Properties ¶
type GattCharacteristic1Properties struct { /* Descriptors */ Descriptors []dbus.ObjectPath /* Flags Defines how the characteristic value can be used. See Core spec "Table 3.5: Characteristic Properties bit field", and "Table 3.8: Characteristic Extended Properties bit field". The "x-notify" and "x-indicate" flags restrict access to notifications and indications by imposing write restrictions on a characteristic's client characteristic configuration descriptor. Allowed values: "broadcast" "read" "write-without-response" "write" "notify" "indicate" "authenticated-signed-writes" "extended-properties" "reliable-write" "writable-auxiliaries" "encrypt-read" "encrypt-write" "encrypt-notify" (Server only) "encrypt-indicate" (Server only) "encrypt-authenticated-read" "encrypt-authenticated-write" "encrypt-authenticated-notify" (Server only) "encrypt-authenticated-indicate" (Server only) "secure-read" (Server only) "secure-write" (Server only) "secure-notify" (Server only) "secure-indicate" (Server only) "authorize" */ Flags []string /* Handle Characteristic handle. When available in the server it would attempt to use to allocate into the database which may fail, to auto allocate the value 0x0000 shall be used which will cause the allocated handle to be set once registered. */ Handle uint16 /* MTU Characteristic MTU, this is valid both for ReadValue and WriteValue but either method can use long procedures when supported. */ MTU uint16 /* NotifyAcquired True, if this characteristic has been acquired by any client using AcquireNotify. For client this properties is ommited in case 'notify' flag is not set. For server the presence of this property indicates that AcquireNotify is supported. */ NotifyAcquired bool `dbus:"ignore"` /* Notifying True, if notifications or indications on this characteristic are currently enabled. */ Notifying bool /* Service Object path of the GATT service the characteristic belongs to. */ Service dbus.ObjectPath /* UUID 128-bit characteristic UUID. */ UUID string /* Value The cached value of the characteristic. This property gets updated only after a successful read request and when a notification or indication is received, upon which a PropertiesChanged signal will be emitted. */ Value []byte `dbus:"emit"` /* WriteAcquired True, if this characteristic has been acquired by any client using AcquireWrite. For client properties is ommited in case 'write-without-response' flag is not set. For server the presence of this property indicates that AcquireWrite is supported. */ WriteAcquired bool `dbus:"ignore"` // contains filtered or unexported fields }
GattCharacteristic1Properties contains the exposed properties of an interface
func (*GattCharacteristic1Properties) FromDBusMap ¶
func (a *GattCharacteristic1Properties) FromDBusMap(props map[string]dbus.Variant) (*GattCharacteristic1Properties, error)
FromDBusMap convert a map to an GattCharacteristic1Properties
func (*GattCharacteristic1Properties) FromMap ¶
func (a *GattCharacteristic1Properties) FromMap(props map[string]interface{}) (*GattCharacteristic1Properties, error)
FromMap convert a map to an GattCharacteristic1Properties
func (*GattCharacteristic1Properties) Lock ¶
func (p *GattCharacteristic1Properties) Lock()
Lock access to properties
func (*GattCharacteristic1Properties) ToMap ¶
func (a *GattCharacteristic1Properties) ToMap() (map[string]interface{}, error)
ToMap convert a GattCharacteristic1Properties to map
func (*GattCharacteristic1Properties) Unlock ¶
func (p *GattCharacteristic1Properties) Unlock()
Unlock access to properties
type GattDescriptor1 ¶
type GattDescriptor1 struct { Properties *GattDescriptor1Properties // contains filtered or unexported fields }
GattDescriptor1 Characteristic Descriptors hierarchy
Local or remote GATT characteristic descriptors hierarchy.
func NewGattDescriptor1 ¶
func NewGattDescriptor1(objectPath dbus.ObjectPath) (*GattDescriptor1, error)
NewGattDescriptor1 create a new instance of GattDescriptor1
Args: - objectPath: [variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/serviceXX/charYYYY/descriptorZZZ
func (*GattDescriptor1) Client ¶
func (a *GattDescriptor1) Client() *bluez.Client
Client return GattDescriptor1 dbus client
func (*GattDescriptor1) GetCharacteristic ¶
func (a *GattDescriptor1) GetCharacteristic() (dbus.ObjectPath, error)
GetCharacteristic get Characteristic value
func (*GattDescriptor1) GetFlags ¶
func (a *GattDescriptor1) GetFlags() ([]string, error)
GetFlags get Flags value
func (*GattDescriptor1) GetHandle ¶
func (a *GattDescriptor1) GetHandle() (uint16, error)
GetHandle get Handle value
func (*GattDescriptor1) GetObjectManagerSignal ¶
func (a *GattDescriptor1) GetObjectManagerSignal() (chan *dbus.Signal, func(), error)
GetObjectManagerSignal return a channel for receiving updates from the ObjectManager
func (*GattDescriptor1) GetProperties ¶
func (a *GattDescriptor1) GetProperties() (*GattDescriptor1Properties, error)
GetProperties load all available properties
func (*GattDescriptor1) GetPropertiesSignal ¶
func (a *GattDescriptor1) GetPropertiesSignal() (chan *dbus.Signal, error)
GetPropertiesSignal return a channel for receiving udpdates on property changes
func (*GattDescriptor1) GetProperty ¶
func (a *GattDescriptor1) GetProperty(name string) (dbus.Variant, error)
GetProperty get a property
func (*GattDescriptor1) GetUUID ¶
func (a *GattDescriptor1) GetUUID() (string, error)
GetUUID get UUID value
func (*GattDescriptor1) GetValue ¶
func (a *GattDescriptor1) GetValue() ([]byte, error)
GetValue get Value value
func (*GattDescriptor1) GetWatchPropertiesChannel ¶
func (a *GattDescriptor1) GetWatchPropertiesChannel() chan *dbus.Signal
GetWatchPropertiesChannel return the dbus channel to receive properties interface
func (*GattDescriptor1) Interface ¶
func (a *GattDescriptor1) Interface() string
Interface return GattDescriptor1 interface
func (*GattDescriptor1) Path ¶
func (a *GattDescriptor1) Path() dbus.ObjectPath
Path return GattDescriptor1 object path
func (*GattDescriptor1) ReadValue ¶
func (a *GattDescriptor1) ReadValue(flags map[string]interface{}) ([]byte, error)
ReadValue Issues a request to read the value of the
characteristic and returns the value if the operation was successful. Possible options: "offset": Start offset "device": Device path (Server only) "link": Link type (Server only) Possible Errors: org.bluez.Error.Failed org.bluez.Error.InProgress org.bluez.Error.NotPermitted org.bluez.Error.NotAuthorized org.bluez.Error.NotSupported
func (*GattDescriptor1) SetHandle ¶
func (a *GattDescriptor1) SetHandle(v uint16) error
SetHandle set Handle value
func (*GattDescriptor1) SetProperty ¶
func (a *GattDescriptor1) SetProperty(name string, value interface{}) error
SetProperty set a property
func (*GattDescriptor1) SetWatchPropertiesChannel ¶
func (a *GattDescriptor1) SetWatchPropertiesChannel(c chan *dbus.Signal)
SetWatchPropertiesChannel set the dbus channel to receive properties interface
func (*GattDescriptor1) ToProps ¶
func (a *GattDescriptor1) ToProps() bluez.Properties
ToProps return the properties interface
func (*GattDescriptor1) UnwatchProperties ¶
func (a *GattDescriptor1) UnwatchProperties(ch chan *bluez.PropertyChanged) error
func (*GattDescriptor1) WatchProperties ¶
func (a *GattDescriptor1) WatchProperties() (chan *bluez.PropertyChanged, error)
WatchProperties updates on property changes
func (*GattDescriptor1) WriteValue ¶
func (a *GattDescriptor1) WriteValue(value []byte, flags map[string]interface{}) error
WriteValue Issues a request to write the value of the
characteristic. Possible options: "offset": Start offset "device": Device path (Server only) "link": Link type (Server only) "prepare-authorize": boolean Is prepare authorization request Possible Errors: org.bluez.Error.Failed org.bluez.Error.InProgress org.bluez.Error.NotPermitted org.bluez.Error.InvalidValueLength org.bluez.Error.NotAuthorized org.bluez.Error.NotSupported
type GattDescriptor1Properties ¶
type GattDescriptor1Properties struct { /* Characteristic Object path of the GATT characteristic the descriptor belongs to. */ Characteristic dbus.ObjectPath /* Flags Defines how the descriptor value can be used. Possible values: "read" "write" "encrypt-read" "encrypt-write" "encrypt-authenticated-read" "encrypt-authenticated-write" "secure-read" (Server Only) "secure-write" (Server Only) "authorize" */ Flags []string /* Handle Characteristic handle. When available in the server it would attempt to use to allocate into the database which may fail, to auto allocate the value 0x0000 shall be used which will cause the allocated handle to be set once registered. */ Handle uint16 /* UUID 128-bit descriptor UUID. */ UUID string /* Value The cached value of the descriptor. This property gets updated only after a successful read request, upon which a PropertiesChanged signal will be emitted. */ Value []byte `dbus:"emit"` // contains filtered or unexported fields }
GattDescriptor1Properties contains the exposed properties of an interface
func (*GattDescriptor1Properties) FromDBusMap ¶
func (a *GattDescriptor1Properties) FromDBusMap(props map[string]dbus.Variant) (*GattDescriptor1Properties, error)
FromDBusMap convert a map to an GattDescriptor1Properties
func (*GattDescriptor1Properties) FromMap ¶
func (a *GattDescriptor1Properties) FromMap(props map[string]interface{}) (*GattDescriptor1Properties, error)
FromMap convert a map to an GattDescriptor1Properties
func (*GattDescriptor1Properties) Lock ¶
func (p *GattDescriptor1Properties) Lock()
Lock access to properties
func (*GattDescriptor1Properties) ToMap ¶
func (a *GattDescriptor1Properties) ToMap() (map[string]interface{}, error)
ToMap convert a GattDescriptor1Properties to map
func (*GattDescriptor1Properties) Unlock ¶
func (p *GattDescriptor1Properties) Unlock()
Unlock access to properties
type GattManager1 ¶
type GattManager1 struct { Properties *GattManager1Properties // contains filtered or unexported fields }
GattManager1 GATT Manager hierarchy
GATT Manager allows external applications to register GATT services and profiles.
Registering a profile allows applications to subscribe to *remote* services. These must implement the GattProfile1 interface defined above.
Registering a service allows applications to publish a *local* GATT service, which then becomes available to remote devices. A GATT service is represented by a D-Bus object hierarchy where the root node corresponds to a service and the child nodes represent characteristics and descriptors that belong to that service. Each node must implement one of GattService1, GattCharacteristic1, or GattDescriptor1 interfaces described above, based on the attribute it represents. Each node must also implement the standard D-Bus Properties interface to expose their properties. These objects collectively represent a GATT service definition.
To make service registration simple, BlueZ requires that all objects that belong to a GATT service be grouped under a D-Bus Object Manager that solely manages the objects of that service. Hence, the standard DBus.ObjectManager interface must be available on the root service path. An example application hierarchy containing two separate GATT services may look like this:
-> /com/example
| - org.freedesktop.DBus.ObjectManager | -> /com/example/service0 | | - org.freedesktop.DBus.Properties | | - org.bluez.GattService1 | | | -> /com/example/service0/char0 | | - org.freedesktop.DBus.Properties | | - org.bluez.GattCharacteristic1 | | | -> /com/example/service0/char1 | | - org.freedesktop.DBus.Properties | | - org.bluez.GattCharacteristic1 | | | -> /com/example/service0/char1/desc0 | - org.freedesktop.DBus.Properties | - org.bluez.GattDescriptor1 | -> /com/example/service1 | - org.freedesktop.DBus.Properties | - org.bluez.GattService1 | -> /com/example/service1/char0 - org.freedesktop.DBus.Properties - org.bluez.GattCharacteristic1
When a service is registered, BlueZ will automatically obtain information about all objects using the service's Object Manager. Once a service has been registered, the objects of a service should not be removed. If BlueZ receives an InterfacesRemoved signal from a service's Object Manager, it will immediately unregister the service. Similarly, if the application disconnects from the bus, all of its registered services will be automatically unregistered. InterfacesAdded signals will be ignored.
Examples:
- Client test/example-gatt-client client/bluetoothctl
- Server test/example-gatt-server tools/gatt-service
func NewGattManager1 ¶
func NewGattManager1(objectPath dbus.ObjectPath) (*GattManager1, error)
NewGattManager1 create a new instance of GattManager1
Args: - objectPath: [variable prefix]/{hci0,hci1,...}
func NewGattManager1FromAdapterID ¶
func NewGattManager1FromAdapterID(adapterID string) (*GattManager1, error)
NewGattManager1FromAdapterID create a new instance of GattManager1 adapterID: ID of an adapter eg. hci0
func (*GattManager1) Client ¶
func (a *GattManager1) Client() *bluez.Client
Client return GattManager1 dbus client
func (*GattManager1) GetObjectManagerSignal ¶
func (a *GattManager1) GetObjectManagerSignal() (chan *dbus.Signal, func(), error)
GetObjectManagerSignal return a channel for receiving updates from the ObjectManager
func (*GattManager1) GetProperties ¶
func (a *GattManager1) GetProperties() (*GattManager1Properties, error)
GetProperties load all available properties
func (*GattManager1) GetPropertiesSignal ¶
func (a *GattManager1) GetPropertiesSignal() (chan *dbus.Signal, error)
GetPropertiesSignal return a channel for receiving udpdates on property changes
func (*GattManager1) GetProperty ¶
func (a *GattManager1) GetProperty(name string) (dbus.Variant, error)
GetProperty get a property
func (*GattManager1) GetWatchPropertiesChannel ¶
func (a *GattManager1) GetWatchPropertiesChannel() chan *dbus.Signal
GetWatchPropertiesChannel return the dbus channel to receive properties interface
func (*GattManager1) Interface ¶
func (a *GattManager1) Interface() string
Interface return GattManager1 interface
func (*GattManager1) Path ¶
func (a *GattManager1) Path() dbus.ObjectPath
Path return GattManager1 object path
func (*GattManager1) RegisterApplication ¶
func (a *GattManager1) RegisterApplication(application dbus.ObjectPath, options map[string]interface{}) error
RegisterApplication Registers a local GATT services hierarchy as described
above (GATT Server) and/or GATT profiles (GATT Client). The application object path together with the D-Bus system bus connection ID define the identification of the application registering a GATT based service or profile. Possible errors: org.bluez.Error.InvalidArguments org.bluez.Error.AlreadyExists
func (*GattManager1) SetProperty ¶
func (a *GattManager1) SetProperty(name string, value interface{}) error
SetProperty set a property
func (*GattManager1) SetWatchPropertiesChannel ¶
func (a *GattManager1) SetWatchPropertiesChannel(c chan *dbus.Signal)
SetWatchPropertiesChannel set the dbus channel to receive properties interface
func (*GattManager1) ToProps ¶
func (a *GattManager1) ToProps() bluez.Properties
ToProps return the properties interface
func (*GattManager1) UnregisterApplication ¶
func (a *GattManager1) UnregisterApplication(application dbus.ObjectPath) error
UnregisterApplication This unregisters the services that has been
previously registered. The object path parameter must match the same value that has been used on registration. Possible errors: org.bluez.Error.InvalidArguments org.bluez.Error.DoesNotExist
func (*GattManager1) UnwatchProperties ¶
func (a *GattManager1) UnwatchProperties(ch chan *bluez.PropertyChanged) error
func (*GattManager1) WatchProperties ¶
func (a *GattManager1) WatchProperties() (chan *bluez.PropertyChanged, error)
WatchProperties updates on property changes
type GattManager1Properties ¶
type GattManager1Properties struct {
// contains filtered or unexported fields
}
GattManager1Properties contains the exposed properties of an interface
func (*GattManager1Properties) FromDBusMap ¶
func (a *GattManager1Properties) FromDBusMap(props map[string]dbus.Variant) (*GattManager1Properties, error)
FromDBusMap convert a map to an GattManager1Properties
func (*GattManager1Properties) FromMap ¶
func (a *GattManager1Properties) FromMap(props map[string]interface{}) (*GattManager1Properties, error)
FromMap convert a map to an GattManager1Properties
func (*GattManager1Properties) Lock ¶
func (p *GattManager1Properties) Lock()
Lock access to properties
func (*GattManager1Properties) ToMap ¶
func (a *GattManager1Properties) ToMap() (map[string]interface{}, error)
ToMap convert a GattManager1Properties to map
func (*GattManager1Properties) Unlock ¶
func (p *GattManager1Properties) Unlock()
Unlock access to properties
type GattProfile1 ¶
type GattProfile1 struct { Properties *GattProfile1Properties // contains filtered or unexported fields }
GattProfile1 GATT Profile hierarchy
Local profile (GATT client) instance. By registering this type of object an application effectively indicates support for a specific GATT profile and requests automatic connections to be established to devices supporting it.
func NewGattProfile1 ¶
func NewGattProfile1(servicePath string, objectPath dbus.ObjectPath) (*GattProfile1, error)
NewGattProfile1 create a new instance of GattProfile1
Args: - servicePath: <application dependent> - objectPath: <application dependent>
func (*GattProfile1) Client ¶
func (a *GattProfile1) Client() *bluez.Client
Client return GattProfile1 dbus client
func (*GattProfile1) GetObjectManagerSignal ¶
func (a *GattProfile1) GetObjectManagerSignal() (chan *dbus.Signal, func(), error)
GetObjectManagerSignal return a channel for receiving updates from the ObjectManager
func (*GattProfile1) GetProperties ¶
func (a *GattProfile1) GetProperties() (*GattProfile1Properties, error)
GetProperties load all available properties
func (*GattProfile1) GetPropertiesSignal ¶
func (a *GattProfile1) GetPropertiesSignal() (chan *dbus.Signal, error)
GetPropertiesSignal return a channel for receiving udpdates on property changes
func (*GattProfile1) GetProperty ¶
func (a *GattProfile1) GetProperty(name string) (dbus.Variant, error)
GetProperty get a property
func (*GattProfile1) GetUUIDs ¶
func (a *GattProfile1) GetUUIDs() ([]string, error)
GetUUIDs get UUIDs value
func (*GattProfile1) GetWatchPropertiesChannel ¶
func (a *GattProfile1) GetWatchPropertiesChannel() chan *dbus.Signal
GetWatchPropertiesChannel return the dbus channel to receive properties interface
func (*GattProfile1) Interface ¶
func (a *GattProfile1) Interface() string
Interface return GattProfile1 interface
func (*GattProfile1) Path ¶
func (a *GattProfile1) Path() dbus.ObjectPath
Path return GattProfile1 object path
func (*GattProfile1) Release ¶
func (a *GattProfile1) Release() error
Release This method gets called when the service daemon
unregisters the profile. The profile can use it to do cleanup tasks. There is no need to unregister the profile, because when this method gets called it has already been unregistered.
func (*GattProfile1) SetProperty ¶
func (a *GattProfile1) SetProperty(name string, value interface{}) error
SetProperty set a property
func (*GattProfile1) SetWatchPropertiesChannel ¶
func (a *GattProfile1) SetWatchPropertiesChannel(c chan *dbus.Signal)
SetWatchPropertiesChannel set the dbus channel to receive properties interface
func (*GattProfile1) ToProps ¶
func (a *GattProfile1) ToProps() bluez.Properties
ToProps return the properties interface
func (*GattProfile1) UnwatchProperties ¶
func (a *GattProfile1) UnwatchProperties(ch chan *bluez.PropertyChanged) error
func (*GattProfile1) WatchProperties ¶
func (a *GattProfile1) WatchProperties() (chan *bluez.PropertyChanged, error)
WatchProperties updates on property changes
type GattProfile1Properties ¶
type GattProfile1Properties struct { /* UUIDs 128-bit GATT service UUIDs to auto connect. */ UUIDs []string // contains filtered or unexported fields }
GattProfile1Properties contains the exposed properties of an interface
func (*GattProfile1Properties) FromDBusMap ¶
func (a *GattProfile1Properties) FromDBusMap(props map[string]dbus.Variant) (*GattProfile1Properties, error)
FromDBusMap convert a map to an GattProfile1Properties
func (*GattProfile1Properties) FromMap ¶
func (a *GattProfile1Properties) FromMap(props map[string]interface{}) (*GattProfile1Properties, error)
FromMap convert a map to an GattProfile1Properties
func (*GattProfile1Properties) Lock ¶
func (p *GattProfile1Properties) Lock()
Lock access to properties
func (*GattProfile1Properties) ToMap ¶
func (a *GattProfile1Properties) ToMap() (map[string]interface{}, error)
ToMap convert a GattProfile1Properties to map
func (*GattProfile1Properties) Unlock ¶
func (p *GattProfile1Properties) Unlock()
Unlock access to properties
type GattService1 ¶
type GattService1 struct { Properties *GattService1Properties // contains filtered or unexported fields }
GattService1 Service hierarchy
GATT remote and local service representation. Object path for local services is freely definable.
External applications implementing local services must register the services using GattManager1 registration method and must implement the methods and properties defined in GattService1 interface.
func NewGattService1 ¶
func NewGattService1(objectPath dbus.ObjectPath) (*GattService1, error)
NewGattService1 create a new instance of GattService1
Args: - objectPath: [variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/serviceXX
func (*GattService1) Client ¶
func (a *GattService1) Client() *bluez.Client
Client return GattService1 dbus client
func (*GattService1) GetCharacteristics ¶
func (a *GattService1) GetCharacteristics() ([]dbus.ObjectPath, error)
GetCharacteristics get Characteristics value
func (*GattService1) GetDevice ¶
func (a *GattService1) GetDevice() (dbus.ObjectPath, error)
GetDevice get Device value
func (*GattService1) GetHandle ¶
func (a *GattService1) GetHandle() (uint16, error)
GetHandle get Handle value
func (*GattService1) GetIncludes ¶
func (a *GattService1) GetIncludes() ([]dbus.ObjectPath, error)
GetIncludes get Includes value
func (*GattService1) GetIsService ¶
func (a *GattService1) GetIsService() (bool, error)
GetIsService get IsService value
func (*GattService1) GetObjectManagerSignal ¶
func (a *GattService1) GetObjectManagerSignal() (chan *dbus.Signal, func(), error)
GetObjectManagerSignal return a channel for receiving updates from the ObjectManager
func (*GattService1) GetPrimary ¶
func (a *GattService1) GetPrimary() (bool, error)
GetPrimary get Primary value
func (*GattService1) GetProperties ¶
func (a *GattService1) GetProperties() (*GattService1Properties, error)
GetProperties load all available properties
func (*GattService1) GetPropertiesSignal ¶
func (a *GattService1) GetPropertiesSignal() (chan *dbus.Signal, error)
GetPropertiesSignal return a channel for receiving udpdates on property changes
func (*GattService1) GetProperty ¶
func (a *GattService1) GetProperty(name string) (dbus.Variant, error)
GetProperty get a property
func (*GattService1) GetUUID ¶
func (a *GattService1) GetUUID() (string, error)
GetUUID get UUID value
func (*GattService1) GetWatchPropertiesChannel ¶
func (a *GattService1) GetWatchPropertiesChannel() chan *dbus.Signal
GetWatchPropertiesChannel return the dbus channel to receive properties interface
func (*GattService1) Interface ¶
func (a *GattService1) Interface() string
Interface return GattService1 interface
func (*GattService1) Path ¶
func (a *GattService1) Path() dbus.ObjectPath
Path return GattService1 object path
func (*GattService1) SetCharacteristics ¶
func (a *GattService1) SetCharacteristics(v []dbus.ObjectPath) error
SetCharacteristics set Characteristics value
func (*GattService1) SetHandle ¶
func (a *GattService1) SetHandle(v uint16) error
SetHandle set Handle value
func (*GattService1) SetIsService ¶
func (a *GattService1) SetIsService(v bool) error
SetIsService set IsService value
func (*GattService1) SetProperty ¶
func (a *GattService1) SetProperty(name string, value interface{}) error
SetProperty set a property
func (*GattService1) SetWatchPropertiesChannel ¶
func (a *GattService1) SetWatchPropertiesChannel(c chan *dbus.Signal)
SetWatchPropertiesChannel set the dbus channel to receive properties interface
func (*GattService1) ToProps ¶
func (a *GattService1) ToProps() bluez.Properties
ToProps return the properties interface
func (*GattService1) UnwatchProperties ¶
func (a *GattService1) UnwatchProperties(ch chan *bluez.PropertyChanged) error
func (*GattService1) WatchProperties ¶
func (a *GattService1) WatchProperties() (chan *bluez.PropertyChanged, error)
WatchProperties updates on property changes
type GattService1Properties ¶
type GattService1Properties struct { /* Characteristics */ Characteristics []dbus.ObjectPath `dbus:"emit"` /* Device Object path of the Bluetooth device the service belongs to. Only present on services from remote devices. */ Device dbus.ObjectPath `dbus:"ignore=IsService"` /* Handle Service handle. When available in the server it would attempt to use to allocate into the database which may fail, to auto allocate the value 0x0000 shall be used which will cause the allocated handle to be set once registered. */ Handle uint16 /* Includes Array of object paths representing the included services of this service. */ Includes []dbus.ObjectPath `dbus:"omitEmpty"` /* IsService */ IsService bool `dbus:"ignore"` /* Primary Indicates whether or not this GATT service is a primary service. If false, the service is secondary. */ Primary bool /* UUID 128-bit service UUID. */ UUID string // contains filtered or unexported fields }
GattService1Properties contains the exposed properties of an interface
func (*GattService1Properties) FromDBusMap ¶
func (a *GattService1Properties) FromDBusMap(props map[string]dbus.Variant) (*GattService1Properties, error)
FromDBusMap convert a map to an GattService1Properties
func (*GattService1Properties) FromMap ¶
func (a *GattService1Properties) FromMap(props map[string]interface{}) (*GattService1Properties, error)
FromMap convert a map to an GattService1Properties
func (*GattService1Properties) Lock ¶
func (p *GattService1Properties) Lock()
Lock access to properties
func (*GattService1Properties) ToMap ¶
func (a *GattService1Properties) ToMap() (map[string]interface{}, error)
ToMap convert a GattService1Properties to map
func (*GattService1Properties) Unlock ¶
func (p *GattService1Properties) Unlock()
Unlock access to properties