Example #1
0
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
}
Example #2
0
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)
	}
}
Example #3
0
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))
	}
}