diff --git a/Ble.jar b/Ble.jar index fb85bb4..73c9293 100644 Binary files a/Ble.jar and b/Ble.jar differ diff --git a/ble_android.go b/ble_android.go index c1d4074..6e52018 100644 --- a/ble_android.go +++ b/ble_android.go @@ -283,24 +283,7 @@ func goOnScan(cname, cid *C.char, rssi C.int, dev C.jobject) { func goOnConnect(gatt C.jobject, cid *C.char) { id := C.GoString(cid) - var peripheral Peripheral - found := false - - gBLE.peripherals.Lock() - for n, item := range gBLE.peripherals.items { - if item.p.Identifier == id { - peripheral = item.p - peripheral.gatt = gatt - gBLE.peripherals.items[n].p = peripheral - found = true - break - } - } - gBLE.peripherals.Unlock() - - if !found { - log.Printf("Go: peripheral not found!") - } + peripheral := gBLE.retrievePeripheral(id, p) if peripheral.gatt == 0 { log.Printf("goOnConnect(): gatt == null") @@ -396,15 +379,22 @@ func goOnCharacteristicChanged(cid, ccuuid *C.char, char C.jobject, cvalue *C.ch // internal convenience functions -func (b *BLE) retrievePeripheral(id string) Peripheral { +func (b *BLE) retrievePeripheral(id string, devs ...C.jobject) Peripheral { + var dev C.jobject + if len(devs) > 0 { + dev = devs[0] + } + found := false var peripheral Peripheral gBLE.peripherals.Lock() - for _, item := range gBLE.peripherals.items { + for i, item := range gBLE.peripherals.items { if item.p.Identifier == id { peripheral = item.p + peripheral.peripheral = dev found = true + gBLE.peripherals.items[i].p = peripheral break } }