func (w *BleDbusWrapper) OnPeripheralConnected(p gatt.Peripheral, err error) { id, _ := normalizeHex(p.ID()) w.devicesDiscovered[id].peripheral = p w.devicesConnectedsync.Lock() w.devicesConnected[id] = &sync.Mutex{} w.devicesConnectedsync.Unlock() w.connChan <- true }
func (w *BleDbusWrapper) OnPeripheralDisconnected(p gatt.Peripheral, err error) { w.devicesConnectedsync.Lock() defer w.devicesConnectedsync.Unlock() id, _ := normalizeHex(p.ID()) if _, ok := w.devicesDiscovered[id]; ok { delete(w.devicesDiscovered, id) } if _, ok := w.devicesConnected[id]; ok { log.Printf("Disconnected: %s", id) delete(w.devicesConnected, id) w.emitPeripheralDisconnected(id) } }
func (w *BleDbusWrapper) OnPeripheralDiscovered(p gatt.Peripheral, a *gatt.Advertisement, rssi int) { w.devicesDiscoveredsync.Lock() defer w.devicesDiscoveredsync.Unlock() id, _ := normalizeHex(p.ID()) name := strings.Trim(p.Name(), "\x00") dev, ok := w.devicesDiscovered[id] if !ok { w.devicesDiscovered[id] = &DiscoveredDeviceInfo{name: name, rssi: rssi, peripheral: p, ready: false, connectedOnce: false} w.emitPeripheralDiscovered(id, name, int16(rssi)) } else { if (dev.name == "") && (name != "") { dev.name = name } w.emitPeripheralDiscovered(id, dev.name, int16(rssi)) } }