60 lines
1.5 KiB
Go
60 lines
1.5 KiB
Go
|
package cbgo
|
||
|
|
||
|
import "unsafe"
|
||
|
|
||
|
/*
|
||
|
// See cutil.go for C compiler flags.
|
||
|
#import "bt.h"
|
||
|
*/
|
||
|
import "C"
|
||
|
|
||
|
// Service: https://developer.apple.com/documentation/corebluetooth/cbservice
|
||
|
type Service struct {
|
||
|
ptr unsafe.Pointer
|
||
|
}
|
||
|
|
||
|
// UUID: https://developer.apple.com/documentation/corebluetooth/cbattribute/1620638-uuid
|
||
|
func (s Service) UUID() UUID {
|
||
|
cstr := C.cb_svc_uuid(s.ptr)
|
||
|
return MustParseUUID(C.GoString(cstr))
|
||
|
}
|
||
|
|
||
|
// Peripheral: https://developer.apple.com/documentation/corebluetooth/cbservice/1434334-peripheral
|
||
|
func (s Service) Peripheral() Peripheral {
|
||
|
prphPtr := C.cb_svc_peripheral(s.ptr)
|
||
|
return Peripheral{prphPtr}
|
||
|
}
|
||
|
|
||
|
// IsPrimary: https://developer.apple.com/documentation/corebluetooth/cbservice/1434326-isprimary
|
||
|
func (s Service) IsPrimary() bool {
|
||
|
return bool(C.cb_svc_is_primary(s.ptr))
|
||
|
}
|
||
|
|
||
|
// Characteristics: https://developer.apple.com/documentation/corebluetooth/cbservice/1434319-characteristics
|
||
|
func (s Service) Characteristics() []Characteristic {
|
||
|
oa := C.cb_svc_characteristics(s.ptr)
|
||
|
defer C.free(unsafe.Pointer(oa.objs))
|
||
|
|
||
|
chrs := make([]Characteristic, oa.count)
|
||
|
for i, _ := range chrs {
|
||
|
obj := getObjArrElem(&oa, i)
|
||
|
chrs[i] = Characteristic{ptr: obj}
|
||
|
}
|
||
|
|
||
|
return chrs
|
||
|
}
|
||
|
|
||
|
// IncludedServices: https://developer.apple.com/documentation/corebluetooth/cbservice/1434324-includedservices
|
||
|
func (s Service) IncludedServices() []Service {
|
||
|
oa := C.cb_svc_included_svcs(s.ptr)
|
||
|
defer C.free(unsafe.Pointer(oa.objs))
|
||
|
|
||
|
svcs := make([]Service, oa.count)
|
||
|
for i, _ := range svcs {
|
||
|
obj := getObjArrElem(&oa, i)
|
||
|
svcs[i] = Service{ptr: obj}
|
||
|
}
|
||
|
|
||
|
return svcs
|
||
|
}
|