Compare commits

..

2 Commits

5 changed files with 51518 additions and 52443 deletions

View File

@ -326,7 +326,7 @@ func goOnDiscoverService(cid, cuuid *C.char, serv C.jobject) {
} }
//export goOnDiscoverCharacteristic //export goOnDiscoverCharacteristic
func goOnDiscoverCharacteristic(cid, csuuid *C.char, serv C.jobject, ccuuid *C.char, char C.jobject) { func goOnDiscoverCharacteristic(cid, csuuid *C.char, serv C.jobject, ccuuid *C.char, characteristic C.jobject) {
id := C.GoString(cid) id := C.GoString(cid)
suuid := C.GoString(csuuid) suuid := C.GoString(csuuid)
cuuid := C.GoString(ccuuid) cuuid := C.GoString(ccuuid)
@ -339,34 +339,34 @@ func goOnDiscoverCharacteristic(cid, csuuid *C.char, serv C.jobject, ccuuid *C.c
service: serv, service: serv,
} }
characteristic := Characteristic{ ch := Characteristic{
UUID: cuuid, UUID: cuuid,
characteristic: char, characteristic: characteristic,
} }
gBLE.events <- DiscoverCharacteristicEvent{ gBLE.events <- DiscoverCharacteristicEvent{
Peripheral: peripheral, Peripheral: peripheral,
Service: service, Service: service,
Characteristic: characteristic, Characteristic: ch,
Gatt: gatt.Characteristic{cuuid}, Gatt: gatt.Characteristic{cuuid},
} }
} }
//export goOnCharacteristicChanged //export goOnCharacteristicChanged
func goOnCharacteristicChanged(cid, ccuuid *C.char, char C.jobject, cvalue *C.char, length C.jint) { func goOnCharacteristicChanged(cid, ccuuid *C.char, characteristic C.jobject, cvalue *C.char, length C.jint) {
id := C.GoString(cid) id := C.GoString(cid)
cuuid := C.GoString(ccuuid) cuuid := C.GoString(ccuuid)
peripheral := gBLE.retrievePeripheral(id) peripheral := gBLE.retrievePeripheral(id)
characteristic := Characteristic{ ch := Characteristic{
UUID: cuuid, UUID: cuuid,
characteristic: char, characteristic: characteristic,
} }
gBLE.events <- UpdateValueEvent{ gBLE.events <- UpdateValueEvent{
Peripheral: peripheral, Peripheral: peripheral,
Characteristic: characteristic, Characteristic: ch,
Data: C.GoBytes(unsafe.Pointer(cvalue), length), Data: C.GoBytes(unsafe.Pointer(cvalue), length),
} }
} }

View File

@ -156,7 +156,7 @@ func (p Peripheral) DiscoverCharacteristics(serv Service) {
//SetNotifyValue subscribes to a characteristic //SetNotifyValue subscribes to a characteristic
func (p Peripheral) SetNotifyValue(c Characteristic) { func (p Peripheral) SetNotifyValue(c Characteristic) {
p.p.SetNotifyValue(1, c) p.p.SetNotifyValue((ns.BOOL)(true), c)
} }
//NewBLE returns a pointer to a BLE struct after setting up the OS //NewBLE returns a pointer to a BLE struct after setting up the OS
@ -207,7 +207,8 @@ func (b *BLE) Enable(v uintptr) {
// Core Bluetooth callback functions // Core Bluetooth callback functions
func didUpdateState(c *ns.CBCentralManager) { func didUpdateState(d ns.CBDelegate, c *ns.CBCentralManager) {
fmt.Print("didUpdateState")
b := cdLookup[c.Ptr()] b := cdLookup[c.Ptr()]
st := c.CBManager.State() st := c.CBManager.State()
if st == (ns.CBManagerState)(ns.CBManagerStatePoweredOn) { if st == (ns.CBManagerState)(ns.CBManagerStatePoweredOn) {
@ -230,7 +231,7 @@ func didUpdateState(c *ns.CBCentralManager) {
b.events <- UpdateStateEvent{State: b.stringState()} b.events <- UpdateStateEvent{State: b.stringState()}
} }
func didDiscoverPeripheral(c *ns.CBCentralManager, p *ns.CBPeripheral, d *ns.NSDictionary, rssi *ns.NSNumber) { func didDiscoverPeripheral(d_ ns.CBDelegate, c *ns.CBCentralManager, p *ns.CBPeripheral, d *ns.NSDictionary, rssi *ns.NSNumber) {
b := cdLookup[c.Ptr()] b := cdLookup[c.Ptr()]
peripheral := newPeripheral(p) peripheral := newPeripheral(p)
peripheral.RSSI = (int)(rssi.IntValue()) peripheral.RSSI = (int)(rssi.IntValue())
@ -247,7 +248,7 @@ func _didDiscoverPeripheral(b *BLE, peripheral Peripheral) {
} }
} }
func didConnectPeripheral(c *ns.CBCentralManager, p *ns.CBPeripheral) { func didConnectPeripheral(d ns.CBDelegate, c *ns.CBCentralManager, p *ns.CBPeripheral) {
fmt.Printf("Did connect peripheral\n") fmt.Printf("Did connect peripheral\n")
b := cdLookup[c.Ptr()] b := cdLookup[c.Ptr()]
@ -280,7 +281,7 @@ func didConnectPeripheral(c *ns.CBCentralManager, p *ns.CBPeripheral) {
fmt.Printf("Go: didConnectPeripheral returning\n") fmt.Printf("Go: didConnectPeripheral returning\n")
} }
func didDisconnectPeripheral(c *ns.CBCentralManager, p *ns.CBPeripheral, e *ns.NSError) { func didDisconnectPeripheral(d ns.CBDelegate, c *ns.CBCentralManager, p *ns.CBPeripheral, e *ns.NSError) {
fmt.Printf("Did disconnect peripheral\n"); fmt.Printf("Did disconnect peripheral\n");
b := cdLookup[c.Ptr()] b := cdLookup[c.Ptr()]
@ -311,7 +312,7 @@ func didDisconnectPeripheral(c *ns.CBCentralManager, p *ns.CBPeripheral, e *ns.N
}() }()
} }
func didDiscoverServices(p *ns.CBPeripheral, e *ns.NSError) { func didDiscoverServices(d ns.CBDelegate, p *ns.CBPeripheral, e *ns.NSError) {
b := pdLookup[p.Ptr()] b := pdLookup[p.Ptr()]
fmt.Printf("Did discover services\n") fmt.Printf("Did discover services\n")
p.Services().ObjectEnumerator().ForIn(func(o *ns.Id) bool { p.Services().ObjectEnumerator().ForIn(func(o *ns.Id) bool {
@ -327,7 +328,7 @@ func didDiscoverServices(p *ns.CBPeripheral, e *ns.NSError) {
fmt.Printf("Go: didDiscoverServices returning\n") fmt.Printf("Go: didDiscoverServices returning\n")
} }
func didDiscoverCharacteristics(p *ns.CBPeripheral, s *ns.CBService, e *ns.NSError) { func didDiscoverCharacteristics(d ns.CBDelegate, p *ns.CBPeripheral, s *ns.CBService, e *ns.NSError) {
b := pdLookup[p.Ptr()] b := pdLookup[p.Ptr()]
fmt.Printf("Did discover characteristics\n") fmt.Printf("Did discover characteristics\n")
s.Characteristics().ObjectEnumerator().ForIn(func(o *ns.Id) bool { s.Characteristics().ObjectEnumerator().ForIn(func(o *ns.Id) bool {
@ -345,7 +346,7 @@ func didDiscoverCharacteristics(p *ns.CBPeripheral, s *ns.CBService, e *ns.NSErr
fmt.Printf("Go: didDiscoverCharacteristics returning\n") fmt.Printf("Go: didDiscoverCharacteristics returning\n")
} }
func didUpdateValue(p *ns.CBPeripheral, chr *ns.CBCharacteristic, e *ns.NSError) { func didUpdateValue(d ns.CBDelegate, p *ns.CBPeripheral, chr *ns.CBCharacteristic, e *ns.NSError) {
b := pdLookup[p.Ptr()] b := pdLookup[p.Ptr()]
v := chr.Value() v := chr.Value()
b.events <-UpdateValueEvent{ b.events <-UpdateValueEvent{

View File

@ -15,27 +15,20 @@ import "C"
import ( import (
"unsafe" "unsafe"
"fmt"
) )
//export CBDelegateCentralManagerDidUpdateState
func CBDelegateCentralManagerDidUpdateState(o unsafe.Pointer, central unsafe.Pointer) {
CBDelegateMux.RLock()
cb := CBDelegateLookup[o].CentralManagerDidUpdateState
CBDelegateMux.RUnlock()
if cb == nil { return }
a1 := &CBCentralManager{}; a1.ptr = central
cb(a1)
}
//export CBDelegateCentralManagerDidConnectPeripheral //export CBDelegateCentralManagerDidConnectPeripheral
func CBDelegateCentralManagerDidConnectPeripheral(o unsafe.Pointer, central unsafe.Pointer, peripheral unsafe.Pointer) { func CBDelegateCentralManagerDidConnectPeripheral(o unsafe.Pointer, central unsafe.Pointer, peripheral unsafe.Pointer) {
CBDelegateMux.RLock() CBDelegateMux.RLock()
cb := CBDelegateLookup[o].CentralManagerDidConnectPeripheral cb := CBDelegateLookup[o].CentralManagerDidConnectPeripheral
CBDelegateMux.RUnlock() CBDelegateMux.RUnlock()
if cb == nil { return } if cb == nil { return }
self := CBDelegate{}
self.ptr = o
a1 := &CBCentralManager{}; a1.ptr = central a1 := &CBCentralManager{}; a1.ptr = central
a2 := &CBPeripheral{}; a2.ptr = peripheral a2 := &CBPeripheral{}; a2.ptr = peripheral
cb(a1, a2) cb(self, a1, a2)
} }
//export CBDelegateCentralManagerDidDisconnectPeripheral //export CBDelegateCentralManagerDidDisconnectPeripheral
@ -44,10 +37,12 @@ func CBDelegateCentralManagerDidDisconnectPeripheral(o unsafe.Pointer, central u
cb := CBDelegateLookup[o].CentralManagerDidDisconnectPeripheral cb := CBDelegateLookup[o].CentralManagerDidDisconnectPeripheral
CBDelegateMux.RUnlock() CBDelegateMux.RUnlock()
if cb == nil { return } if cb == nil { return }
self := CBDelegate{}
self.ptr = o
a1 := &CBCentralManager{}; a1.ptr = central a1 := &CBCentralManager{}; a1.ptr = central
a2 := &CBPeripheral{}; a2.ptr = peripheral a2 := &CBPeripheral{}; a2.ptr = peripheral
a3 := &NSError{}; a3.ptr = error a3 := &NSError{}; a3.ptr = error
cb(a1, a2, a3) cb(self, a1, a2, a3)
} }
//export CBDelegateCentralManagerDidDiscoverPeripheral //export CBDelegateCentralManagerDidDiscoverPeripheral
@ -56,11 +51,26 @@ func CBDelegateCentralManagerDidDiscoverPeripheral(o unsafe.Pointer, central uns
cb := CBDelegateLookup[o].CentralManagerDidDiscoverPeripheral cb := CBDelegateLookup[o].CentralManagerDidDiscoverPeripheral
CBDelegateMux.RUnlock() CBDelegateMux.RUnlock()
if cb == nil { return } if cb == nil { return }
self := CBDelegate{}
self.ptr = o
a1 := &CBCentralManager{}; a1.ptr = central a1 := &CBCentralManager{}; a1.ptr = central
a2 := &CBPeripheral{}; a2.ptr = peripheral a2 := &CBPeripheral{}; a2.ptr = peripheral
a3 := &NSDictionary{}; a3.ptr = advertisementData a3 := &NSDictionary{}; a3.ptr = advertisementData
a4 := &NSNumber{}; a4.ptr = RSSI a4 := &NSNumber{}; a4.ptr = RSSI
cb(a1, a2, a3, a4) cb(self, a1, a2, a3, a4)
}
//export CBDelegateCentralManagerDidUpdateState
func CBDelegateCentralManagerDidUpdateState(o unsafe.Pointer, central unsafe.Pointer) {
fmt.Print("CentralManagerDidUpdateState")
CBDelegateMux.RLock()
cb := CBDelegateLookup[o].CentralManagerDidUpdateState
CBDelegateMux.RUnlock()
if cb == nil { return }
self := CBDelegate{}
self.ptr = o
a1 := &CBCentralManager{}; a1.ptr = central
cb(self, a1)
} }
//export CBDelegatePeripheralDidDiscoverServices //export CBDelegatePeripheralDidDiscoverServices
@ -69,9 +79,11 @@ func CBDelegatePeripheralDidDiscoverServices(o unsafe.Pointer, peripheral unsafe
cb := CBDelegateLookup[o].PeripheralDidDiscoverServices cb := CBDelegateLookup[o].PeripheralDidDiscoverServices
CBDelegateMux.RUnlock() CBDelegateMux.RUnlock()
if cb == nil { return } if cb == nil { return }
self := CBDelegate{}
self.ptr = o
a1 := &CBPeripheral{}; a1.ptr = peripheral a1 := &CBPeripheral{}; a1.ptr = peripheral
a2 := &NSError{}; a2.ptr = error a2 := &NSError{}; a2.ptr = error
cb(a1, a2) cb(self, a1, a2)
} }
//export CBDelegatePeripheralDidDiscoverCharacteristicsForService //export CBDelegatePeripheralDidDiscoverCharacteristicsForService
@ -80,10 +92,12 @@ func CBDelegatePeripheralDidDiscoverCharacteristicsForService(o unsafe.Pointer,
cb := CBDelegateLookup[o].PeripheralDidDiscoverCharacteristicsForService cb := CBDelegateLookup[o].PeripheralDidDiscoverCharacteristicsForService
CBDelegateMux.RUnlock() CBDelegateMux.RUnlock()
if cb == nil { return } if cb == nil { return }
self := CBDelegate{}
self.ptr = o
a1 := &CBPeripheral{}; a1.ptr = peripheral a1 := &CBPeripheral{}; a1.ptr = peripheral
a2 := &CBService{}; a2.ptr = service a2 := &CBService{}; a2.ptr = service
a3 := &NSError{}; a3.ptr = error a3 := &NSError{}; a3.ptr = error
cb(a1, a2, a3) cb(self, a1, a2, a3)
} }
//export CBDelegatePeripheralDidUpdateValueForCharacteristic //export CBDelegatePeripheralDidUpdateValueForCharacteristic
@ -92,8 +106,10 @@ func CBDelegatePeripheralDidUpdateValueForCharacteristic(o unsafe.Pointer, perip
cb := CBDelegateLookup[o].PeripheralDidUpdateValueForCharacteristic cb := CBDelegateLookup[o].PeripheralDidUpdateValueForCharacteristic
CBDelegateMux.RUnlock() CBDelegateMux.RUnlock()
if cb == nil { return } if cb == nil { return }
self := CBDelegate{}
self.ptr = o
a1 := &CBPeripheral{}; a1.ptr = peripheral a1 := &CBPeripheral{}; a1.ptr = peripheral
a2 := &CBCharacteristic{}; a2.ptr = characteristic a2 := &CBCharacteristic{}; a2.ptr = characteristic
a3 := &NSError{}; a3.ptr = error a3 := &NSError{}; a3.ptr = error
cb(a1, a2, a3) cb(self, a1, a2, a3)
} }

103876
ns/main.go

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
inputfiles: inputfiles:
- /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h - /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h
- /System/Library/Frameworks/CoreBluetooth.framework/Headers/CoreBluetooth.h - /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreBluetooth.framework/Headers/CoreBluetooth.h
classes: classes:
- NSObject - NSObject