79 lines
3.4 KiB
Go
79 lines
3.4 KiB
Go
|
package cbgo
|
||
|
|
||
|
/*
|
||
|
// See cutil.go for C compiler flags.
|
||
|
#import "bt.h"
|
||
|
*/
|
||
|
import "C"
|
||
|
import "unsafe"
|
||
|
|
||
|
// AttributePermissions: https://developer.apple.com/documentation/corebluetooth/cbattributepermissions
|
||
|
type AttributePermissions int
|
||
|
|
||
|
const (
|
||
|
AttributePermissionsReadable = AttributePermissions(C.CBAttributePermissionsReadable)
|
||
|
AttributePermissionsWriteable = AttributePermissions(C.CBAttributePermissionsWriteable)
|
||
|
AttributePermissionsReadEncryptionRequired = AttributePermissions(C.CBAttributePermissionsReadEncryptionRequired)
|
||
|
AttributePermissionsWriteEncryptionRequired = AttributePermissions(C.CBAttributePermissionsWriteEncryptionRequired)
|
||
|
)
|
||
|
|
||
|
// ATTError: https://developer.apple.com/documentation/corebluetooth/cbatterror
|
||
|
type ATTError int
|
||
|
|
||
|
const (
|
||
|
ATTErrorSuccess = ATTError(C.CBATTErrorSuccess)
|
||
|
ATTErrorInvalidHandle = ATTError(C.CBATTErrorInvalidHandle)
|
||
|
ATTErrorReadNotPermitted = ATTError(C.CBATTErrorReadNotPermitted)
|
||
|
ATTErrorWriteNotPermitted = ATTError(C.CBATTErrorWriteNotPermitted)
|
||
|
ATTErrorInvalidPdu = ATTError(C.CBATTErrorInvalidPdu)
|
||
|
ATTErrorInsufficientAuthentication = ATTError(C.CBATTErrorInsufficientAuthentication)
|
||
|
ATTErrorRequestNotSupported = ATTError(C.CBATTErrorRequestNotSupported)
|
||
|
ATTErrorInvalidOffset = ATTError(C.CBATTErrorInvalidOffset)
|
||
|
ATTErrorInsufficientAuthorization = ATTError(C.CBATTErrorInsufficientAuthorization)
|
||
|
ATTErrorPrepareQueueFull = ATTError(C.CBATTErrorPrepareQueueFull)
|
||
|
ATTErrorAttributeNotFound = ATTError(C.CBATTErrorAttributeNotFound)
|
||
|
ATTErrorAttributeNotLong = ATTError(C.CBATTErrorAttributeNotLong)
|
||
|
ATTErrorInsufficientEncryptionKeySize = ATTError(C.CBATTErrorInsufficientEncryptionKeySize)
|
||
|
ATTErrorInvalidAttributeValueLength = ATTError(C.CBATTErrorInvalidAttributeValueLength)
|
||
|
ATTErrorUnlikelyError = ATTError(C.CBATTErrorUnlikelyError)
|
||
|
ATTErrorInsufficientEncryption = ATTError(C.CBATTErrorInsufficientEncryption)
|
||
|
ATTErrorUnsupportedGroupType = ATTError(C.CBATTErrorUnsupportedGroupType)
|
||
|
ATTErrorInsufficientResources = ATTError(C.CBATTErrorInsufficientResources)
|
||
|
)
|
||
|
|
||
|
// ATTRequest: https://developer.apple.com/documentation/corebluetooth/cbattrequest
|
||
|
type ATTRequest struct {
|
||
|
ptr unsafe.Pointer
|
||
|
}
|
||
|
|
||
|
// Central: https://developer.apple.com/documentation/corebluetooth/cbattrequest/1518995-central
|
||
|
func (r ATTRequest) Central() Central {
|
||
|
ptr := C.cb_atr_central(r.ptr)
|
||
|
return Central{unsafe.Pointer(ptr)}
|
||
|
}
|
||
|
|
||
|
// Characteristic: https://developer.apple.com/documentation/corebluetooth/cbattrequest/1518716-characteristic
|
||
|
func (r ATTRequest) Characteristic() Characteristic {
|
||
|
ptr := C.cb_atr_characteristic(r.ptr)
|
||
|
return Characteristic{unsafe.Pointer(ptr)}
|
||
|
}
|
||
|
|
||
|
// Value: https://developer.apple.com/documentation/corebluetooth/cbattrequest/1518795-value
|
||
|
func (r ATTRequest) Value() []byte {
|
||
|
ba := C.cb_atr_value(r.ptr)
|
||
|
return byteArrToByteSlice(&ba)
|
||
|
}
|
||
|
|
||
|
// SetValue: https://developer.apple.com/documentation/corebluetooth/cbattrequest/1518795-value
|
||
|
func (r ATTRequest) SetValue(v []byte) {
|
||
|
ba := byteSliceToByteArr(v)
|
||
|
defer C.free(unsafe.Pointer(ba.data))
|
||
|
|
||
|
C.cb_atr_set_value(r.ptr, &ba)
|
||
|
}
|
||
|
|
||
|
// Offset: https://developer.apple.com/documentation/corebluetooth/cbattrequest/1518857-offset
|
||
|
func (r ATTRequest) Offset() int {
|
||
|
return int(C.cb_atr_offset(r.ptr))
|
||
|
}
|