fermentord/vendor/github.com/JuulLabs-OSS/cbgo/service.go

60 lines
1.5 KiB
Go
Raw Normal View History

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
}