From 7f3b96cff91221e70413b807849f729a5f052677 Mon Sep 17 00:00:00 2001 From: Yurii Soldak Date: Mon, 1 Nov 2021 23:35:48 +0100 Subject: [PATCH] adapter: address --- adapter_linux.go | 13 +++++++++++++ adapter_nrf51.go | 9 +++++++++ adapter_nrf528xx.go | 9 +++++++++ examples/advertisement/main.go | 5 +++-- 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/adapter_linux.go b/adapter_linux.go index 15aa354..336a031 100644 --- a/adapter_linux.go +++ b/adapter_linux.go @@ -6,6 +6,8 @@ package bluetooth import ( + "errors" + "github.com/muka/go-bluetooth/api" "github.com/muka/go-bluetooth/bluez/profile/adapter" ) @@ -41,3 +43,14 @@ func (a *Adapter) Enable() (err error) { } return nil } + +func (a *Adapter) Address() (MACAddress, error) { + if a.adapter == nil { + return MACAddress{}, errors.New("adapter not enabled") + } + mac, err := ParseMAC(a.adapter.Properties.Address) + if err != nil { + return MACAddress{}, err + } + return MACAddress{MAC: mac}, nil +} diff --git a/adapter_nrf51.go b/adapter_nrf51.go index b706f6d..1463698 100644 --- a/adapter_nrf51.go +++ b/adapter_nrf51.go @@ -106,3 +106,12 @@ func handleEvent() { } } } + +func (a *Adapter) Address() (MACAddress, error) { + var addr C.ble_gap_addr_t + errCode := C.sd_ble_gap_address_get(&addr) + if errCode != 0 { + return MACAddress{}, Error(errCode) + } + return MACAddress{MAC: addr.addr}, nil +} diff --git a/adapter_nrf528xx.go b/adapter_nrf528xx.go index 50047b4..ca8594f 100644 --- a/adapter_nrf528xx.go +++ b/adapter_nrf528xx.go @@ -54,3 +54,12 @@ func (a *Adapter) enable() error { errCode = C.sd_ble_enable(&appRAMBase) return makeError(errCode) } + +func (a *Adapter) Address() (MACAddress, error) { + var addr C.ble_gap_addr_t + errCode := C.sd_ble_gap_addr_get(&addr) + if errCode != 0 { + return MACAddress{}, Error(errCode) + } + return MACAddress{MAC: addr.addr}, nil +} diff --git a/examples/advertisement/main.go b/examples/advertisement/main.go index a842234..56a5e8c 100644 --- a/examples/advertisement/main.go +++ b/examples/advertisement/main.go @@ -17,9 +17,10 @@ func main() { must("start adv", adv.Start()) println("advertising...") + address, _ := adapter.Address() for { - // Sleep forever. - time.Sleep(time.Hour) + println("Go Bluetooth /", address.MAC.String()) + time.Sleep(time.Second) } }