hci

package
v0.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 4, 2019 License: BSD-3-Clause Imports: 21 Imported by: 0

README

LE Command Requirements

List of the commands and events that a Controller supporting LE shall implement. [Vol 2 Part A.3.19]

  • Mandatory

    • Vol 2, Part E, 7.7.14 - Command Complete Event (0x0E)
    • Vol 2, Part E, 7.7.15 - Command Status Event (0x0F)
    • Vol 2, Part E, 7.8.16 - LE Add Device To White List Command (0x08|0x0011)
    • Vol 2, Part E, 7.8.15 - LE Clear White List Command (0x08|0x0010)
    • Vol 2, Part E, 7.8.2 - LE Read Buffer Size Command (0x08|0x0002)
    • Vol 2, Part E, 7.4.3 - Read Local Supported Features Command (0x04|0x0003)
    • Vol 2, Part E, 7.8.27 - LE Read Supported States Command (0x08|0x001C)
    • Vol 2, Part E, 7.8.14 - LE Read White List Size Command (0x08|0x000F)
    • Vol 2, Part E, 7.8.17 - LE Remove Device From White List Command (0x08|0x0012)
    • Vol 2, Part E, 7.8.1 - LE Set Event Mask Command (0x08|0x0001)
    • Vol 2, Part E, 7.8.30 - LE Test End Command (0x08|0x001F)
    • Vol 2, Part E, 7.4.6 - Read BD_ADDR Command (0x04|0x0009)
    • Vol 2, Part E, 7.8.3 - LE Read Local Supported Features Command (0x08|0x0003)
    • Vol 2, Part E, 7.4.1 - Read Local Version Information Command (0x04|0x0001)
    • Vol 2, Part E, 7.3.2 - Reset Command (0x03|0x003)
    • Vol 2, Part E, 7.4.2 - Read Local Supported Commands Command (0x04|0x0002)
    • Vol 2, Part E, 7.3.1 - Set Event Mask Command (0x03|0x0001)
  • C1: Mandatory if Controller supports transmitting packets, otherwise optional.

    • Vol 2, Part E, 7.8.6 - LE Read Advertising Channel Tx Power Command (0x08|0x0007)
    • Vol 2, Part E, 7.8.29 - LE Transmitter Test Command (0x08|0x001E)
    • Vol 2, Part E, 7.8.9 - LE Set Advertise Enable Command (0x08|0x000A)
    • Vol 2, Part E, 7.8.7 - LE Set Advertising Data Command (0x08|0x0008)
    • Vol 2, Part E, 7.8.5 - LE Set Advertising Parameters Command (0x08|0x0006)
    • Vol 2, Part E, 7.8.4 - LE Set Random Address Command (0x08|0x0005)
  • C2: Mandatory if Controller supports receiving packets, otherwise optional.

    • Vol 2, Part E, 7.7.65.2 - LE Advertising Report Event (0x3E)
    • Vol 2, Part E, 7.8.28 - LE Receiver Test Command (0x08|0x001D)
    • Vol 2, Part E, 7.8.11 - LE Set Scan Enable Command (0x08|0x000C)
    • Vol 2, Part E, 7.8.10 - LE Set Scan Parameters Command (0x08|0x000B)
  • C3: Mandatory if Controller supports transmitting and receiving packets, otherwise optional.

    • Vol 2, Part E, 7.1.6 - Disconnect Command (0x01|0x0006)
    • Vol 2, Part E, 7.7.5 - Disconnection Complete Event (0x05)
    • Vol 2, Part E, 7.7.65.1 - LE Connection Complete Event (0x3E)
    • Vol 2, Part E, 7.8.18 - LE Connection Update Command (0x08|0x0013)
    • Vol 2, Part E, 7.7.65.3 - LE Connection Update Complete Event (0x0E)
    • Vol 2, Part E, 7.8.12 - LE Create Connection Command (0x08|0x000D)
    • Vol 2, Part E, 7.8.13 - LE Create Connection Cancel Command (0x08|0x000E)
    • Vol 2, Part E, 7.8.20 - LE Read Channel Map Command (0x08|0x0015)
    • Vol 2, Part E, 7.8.21 - LE Read Remote Used Features Command (0x08|0x0016)
    • Vol 2, Part E, 7.7.65.4 - LE Read Remote Used Features Complete Event (0x3E)
    • Vol 2, Part E, 7.8.19 - LE Set Host Channel Classification Command (0x08|0x0014)
    • Vol 2, Part E, 7.8.8 - LE Set Scan Response Data Command (0x08|0x0009)
    • Vol 2, Part E, 7.3.40 - Host Number Of Completed Packets Command (0x03|0x0035)
    • Vol 2, Part E, 7.3.35 - Read Transmit Power Level Command (0x03|0x002D)
    • Vol 2, Part E, 7.1.23 - Read Remote Version Information Command (0x01|0x001D)
    • Vol 2, Part E, 7.7.12 - Read Remote Version Information Complete Event (0x0C)
    • Vol 2, Part E, 7.5.4 - Read RSSI Command (0x05|0x0005)
  • C4: Mandatory if LE Feature (LL Encryption) is supported otherwise optional.

    • Vol 2, Part E, 7.7.8 - Encryption Change Event (0x08)
    • Vol 2, Part E, 7.7.39 - Encryption Key Refresh Complete Event (0x30)
    • Vol 2, Part E, 7.8.22 - LE Encrypt Command (0x08|0x0017)
    • Vol 2, Part E, 7.7.65.5 - LE Long Term Key Request Event (0x3E)
    • Vol 2, Part E, 7.8.25 - LE Long Term Key Request Reply Command (0x08|0x001A)
    • Vol 2, Part E, 7.8.26 - LE Long Term Key Request Negative Reply Command (0x08|0x001B)
    • Vol 2, Part E, 7.8.23 - LE Rand Command (0x08|0x0018)
    • Vol 2, Part E, 7.8.24 - LE Start Encryption Command (0x08|0x0019)
  • C5: Mandatory if BR/EDR is supported otherwise optional. [Won't supported]

    • Vol 2, Part E, 7.4.5 - Read Buffer Size Command
    • Vol 2, Part E, 7.3.78 - Read LE Host Support
    • Vol 2, Part E, 7.3.79 - Write LE Host Support Command (0x03|0x006D)
  • C6: Mandatory if LE Feature (Connection Parameters Request procedure) is supported, otherwise optional.

    • Vol 2, Part E, 7.8.31 - LE Remote Connection Parameter Request Reply Command (0x08|0x0020)
    • Vol 2, Part E, 7.8.32 - LE Remote Connection Parameter Request Negative Reply Command (0x08|0x0021)
    • Vol 2, Part E, 7.7.65.6 - LE Remote Connection Parameter Request Event (0x3E)
  • C7: Mandatory if LE Ping is supported otherwise excluded

    • Vol 2, Part E, 7.3.94 - Write Authenticated Payload Timeout Command (0x01|0x007C)
    • Vol 2, Part E, 7.3.93 - Read Authenticated Payload Timeout Command (0x03|0x007B)
    • Vol 2, Part E, 7.7.75 - Authenticated Payload Timeout Expired Event (0x57)
    • Vol 2, Part E, 7.3.69 - Set Event Mask Page 2 Command (0x03|0x0063)
  • Optional support

    • Vol 2, Part E, 7.7.26 - Data Buffer Overflow Event (0x1A)
    • Vol 2, Part E, 7.7.16 - Hardware Error Event (0x10)
    • Vol 2, Part E, 7.3.39 - Host Buffer Size Command (0x03|0x0033)
    • Vol 2, Part E, 7.7.19 - Number Of Completed Packets Event (0x13)
    • Vol 2, Part E, 7.3.38 - Set Controller To Host Flow Control Command

    Vol 3, Part A, 4 L2CAP Signaling mandatory for LE-U

    • Vol 3, Part A, 4.1 - Command Reject (0x01)
    • Vol 3, Part A, 4.6 - Disconnect Request (0x06)
    • Vol 3, Part A, 4.7 - Disconnect Response (0x07)
    • Vol 3, Part A, 4.20 - Connection Parameter Update Request (0x12)
    • Vol 3, Part A, 4.21 - Connection Parameter Update Response (0x13)
    • Vol 3, Part A, 4.22 - LE Credit Based Connection Request (0x14)
    • Vol 3, Part A, 4.23 - LE Credit Based Connection Response (0x15)
    • Vol 3, Part A, 4.24 - LE Flow Control Credit (0x16)

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrBusyScanning    = errors.New("busy scanning")
	ErrBusyAdvertising = errors.New("busy advertising")
	ErrBusyDialing     = errors.New("busy dialing")
	ErrBusyListening   = errors.New("busy listening")
	ErrInvalidAddr     = errors.New("invalid address")
)

errors

Functions

This section is empty.

Types

type Advertisement struct {
	// contains filtered or unexported fields
}

Advertisement implements ble.Advertisement and other functions that are only available on Linux.

func (*Advertisement) Address

func (a *Advertisement) Address() ble.Addr

Address returns the address of the remote peripheral.

func (*Advertisement) AddressType

func (a *Advertisement) AddressType() uint8

AddressType returns the address type of the Advertisement. This is linux sepcific.

func (*Advertisement) Connectable

func (a *Advertisement) Connectable() bool

Connectable indicates weather the remote peripheral is connectable.

func (*Advertisement) Data

func (a *Advertisement) Data() []byte

Data returns the advertising data of the packet. This is linux sepcific.

func (*Advertisement) EventType

func (a *Advertisement) EventType() uint8

EventType returns the event type of Advertisement. This is linux sepcific.

func (*Advertisement) LocalName

func (a *Advertisement) LocalName() string

LocalName returns the LocalName of the remote peripheral.

func (*Advertisement) ManufacturerData

func (a *Advertisement) ManufacturerData() []byte

ManufacturerData returns the ManufacturerData of the advertisement.

func (*Advertisement) OverflowService

func (a *Advertisement) OverflowService() []ble.UUID

OverflowService returns the UUIDs of overflowed service.

func (*Advertisement) RSSI

func (a *Advertisement) RSSI() int

RSSI returns RSSI signal strength.

func (*Advertisement) ScanResponse

func (a *Advertisement) ScanResponse() []byte

ScanResponse returns the scan response of the packet, if it presents. This is linux sepcific.

func (*Advertisement) ServiceData

func (a *Advertisement) ServiceData() []ble.ServiceData

ServiceData returns the service data of the advertisement.

func (*Advertisement) Services

func (a *Advertisement) Services() []ble.UUID

Services returns the service UUIDs of the advertisement.

func (*Advertisement) SolicitedService

func (a *Advertisement) SolicitedService() []ble.UUID

SolicitedService returns UUIDs of solicited services.

func (*Advertisement) TxPowerLevel

func (a *Advertisement) TxPowerLevel() int

TxPowerLevel returns the tx power level of the remote peripheral.

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client ...

func NewClient

func NewClient(p *Pool) *Client

NewClient ...

func (*Client) Get

func (c *Client) Get() *bytes.Buffer

Get returns a buffer from the shared buffer pool.

func (*Client) LockPool

func (c *Client) LockPool()

LockPool ...

func (*Client) Put

func (c *Client) Put()

Put puts the oldest sent buffer back to the shared pool.

func (*Client) PutAll

func (c *Client) PutAll()

PutAll puts all the sent buffers back to the shared pool.

func (*Client) UnlockPool

func (c *Client) UnlockPool()

UnlockPool ...

type Command

type Command interface {
	OpCode() int
	Len() int
	Marshal([]byte) error
}

Command ...

type CommandRP

type CommandRP interface {
	Unmarshal(b []byte) error
}

CommandRP ...

type Conn

type Conn struct {

	// The channel identifiers. This may be a fixed ID for some protocols (LE)
	// but dynamic for others (BR/EDR) [Vol 3, Part A, 2.1]
	SourceID      uint16
	DestinationID uint16
	// contains filtered or unexported fields
}

Conn ...

func (*Conn) Close

func (c *Conn) Close() error

Close disconnects the connection by sending hci disconnect command to the device.

func (*Conn) ConfigurationRequest

func (c *Conn) ConfigurationRequest(options []l2cap.Option, timeout time.Duration) error

ConfigurationRequest [Vol 3, Part A, 4.4]

func (*Conn) ConnectionRequest

func (c *Conn) ConnectionRequest(psm uint16, timeout time.Duration) error

ConnectionRequest [Vol 3, Part A, 4.2]

func (*Conn) Context

func (c *Conn) Context() context.Context

Context returns the context that is used by this Conn.

func (*Conn) Disconnected

func (c *Conn) Disconnected() <-chan struct{}

Disconnected returns a receiving channel, which is closed when the connection disconnects.

func (*Conn) InformationRequest

func (c *Conn) InformationRequest(infoType uint16, timeout time.Duration) error

InformationRequest [Vol 3, Part A, 4.10]

func (*Conn) LECreditBasedConnectionRequest

func (c *Conn) LECreditBasedConnectionRequest(s sigCmd) error

LECreditBasedConnectionRequest ...

func (*Conn) LEFlowControlCredit

func (c *Conn) LEFlowControlCredit(s sigCmd) error

LEFlowControlCredit ...

func (*Conn) LocalAddr

func (c *Conn) LocalAddr() ble.Addr

LocalAddr returns local device's MAC address.

func (*Conn) Read

func (c *Conn) Read(sdu []byte) (n int, err error)

Read copies re-assembled L2CAP PDUs into sdu.

func (*Conn) RemoteAddr

func (c *Conn) RemoteAddr() ble.Addr

RemoteAddr returns remote device's MAC address.

func (*Conn) RxMTU

func (c *Conn) RxMTU() int

RxMTU returns the MTU which the upper layer is capable of accepting.

func (*Conn) SetContext

func (c *Conn) SetContext(ctx context.Context)

SetContext sets the context that is used by this Conn.

func (*Conn) SetRxMTU

func (c *Conn) SetRxMTU(mtu int)

SetRxMTU sets the MTU which the upper layer is capable of accepting.

func (*Conn) SetTxMTU

func (c *Conn) SetTxMTU(mtu int)

SetTxMTU sets the MTU which the remote device is capable of accepting.

func (*Conn) Signal

func (c *Conn) Signal(req Signal, rsp Signal, timeout time.Duration) error

Signal ...

func (*Conn) TxMTU

func (c *Conn) TxMTU() int

TxMTU returns the MTU which the remote device is capable of accepting.

func (*Conn) Write

func (c *Conn) Write(sdu []byte) (int, error)

Write breaks down a L2CAP SDU into segmants [Vol 3, Part A, 7.3.1]

type ConnectionCompleteEvent

type ConnectionCompleteEvent interface {
	PeerAddress() [6]byte
	ConnectionHandle() uint16
	Role() uint8
}

type ErrCommand

type ErrCommand byte

ErrCommand [Vol2, Part D, 1.3 ]

const (
	ErrUnknownCommand       ErrCommand = 0x01 // Unknown HCI Command
	ErrConnID               ErrCommand = 0x02 // Unknown Connection Identifier
	ErrHardware             ErrCommand = 0x03 // Hardware Failure
	ErrPageTimeout          ErrCommand = 0x04 // Page Timeout
	ErrAuth                 ErrCommand = 0x05 // Authentication Failure
	ErrPINMissing           ErrCommand = 0x06 // PIN or Key Missing
	ErrMemoryCapacity       ErrCommand = 0x07 // Memory Capacity Exceeded
	ErrConnTimeout          ErrCommand = 0x08 // Connection Timeout
	ErrConnLimit            ErrCommand = 0x09 // Connection Limit Exceeded
	ErrSCOConnLimit         ErrCommand = 0x0A // Synchronous Connection Limit To A Device Exceeded
	ErrACLConnExists        ErrCommand = 0x0B // ACL Connection Already Exists
	ErrDisallowed           ErrCommand = 0x0C // Command Disallowed
	ErrLimitedResource      ErrCommand = 0x0D // Connection Rejected due to Limited Resources
	ErrSecurity             ErrCommand = 0x0E // Connection Rejected Due To Security Reasons
	ErrBDADDR               ErrCommand = 0x0F // Connection Rejected due to Unacceptable BD_ADDR
	ErrConnAcceptTimeout    ErrCommand = 0x10 // Connection Accept Timeout Exceeded
	ErrUnsupportedParams    ErrCommand = 0x11 // Unsupported Feature or Parameter Value
	ErrInvalidParams        ErrCommand = 0x12 // Invalid HCI Command Parameters
	ErrRemoteUser           ErrCommand = 0x13 // Remote User Terminated Connection
	ErrRemoteLowResources   ErrCommand = 0x14 // Remote Device Terminated Connection due to Low Resources
	ErrRemotePowerOff       ErrCommand = 0x15 // Remote Device Terminated Connection due to Power Off
	ErrLocalHost            ErrCommand = 0x16 // Connection Terminated By Local Host
	ErrRepeatedAttempts     ErrCommand = 0x17 // Repeated Attempts
	ErrPairingNotAllowed    ErrCommand = 0x18 // Pairing Not Allowed
	ErrUnknownLMP           ErrCommand = 0x19 // Unknown LMP PDU
	ErrUnsupportedLMP       ErrCommand = 0x1A // Unsupported Remote Feature / Unsupported LMP Feature
	ErrSCOOffset            ErrCommand = 0x1B // SCO Offset Rejected
	ErrSCOInterval          ErrCommand = 0x1C // SCO Interval Rejected
	ErrSCOAirMode           ErrCommand = 0x1D // SCO Air Mode Rejected
	ErrInvalidLLParams      ErrCommand = 0x1E // Invalid LMP Parameters / Invalid LL Parameters
	ErrUnspecified          ErrCommand = 0x1F // Unspecified Error
	ErrUnsupportedLLParams  ErrCommand = 0x20 // Unsupported LMP Parameter Value / Unsupported LL Parameter Value
	ErrRoleChangeNotAllowed ErrCommand = 0x21 // Role Change Not Allowed
	ErrLLResponseTimeout    ErrCommand = 0x22 // LMP Response Timeout / LL Response Timeout
	ErrLMPTransColl         ErrCommand = 0x23 // LMP Error Transaction Collision
	ErrLMPPDU               ErrCommand = 0x24 // LMP PDU Not Allowed
	ErrEncNotAccepted       ErrCommand = 0x25 // Encryption Mode Not Acceptable
	ErrLinkKey              ErrCommand = 0x26 // Link Key cannot be Changed
	ErrQoSNotSupported      ErrCommand = 0x27 // Requested QoS Not Supported
	ErrInstantPassed        ErrCommand = 0x28 // Instant Passed
	ErrUnitKeyNotSupported  ErrCommand = 0x29 // Pairing With Unit Key Not Supported
	ErrDifferentTransColl   ErrCommand = 0x2A // Different Transaction Collision
	ErrQOSParameter         ErrCommand = 0x2C // QoS Unacceptable Parameter
	ErrQOSReject            ErrCommand = 0x2D // QoS Rejected
	ErrChannelClass         ErrCommand = 0x2E // Channel Classification Not Supported
	ErrInsufficientSecurity ErrCommand = 0x2F // Insufficient Security
	ErrOutOfRange           ErrCommand = 0x30 // Parameter Out Of Mandatory Range
	ErrRoleSwitchPending    ErrCommand = 0x32 // Role Switch Pending
	ErrReservedSlot         ErrCommand = 0x34 // Reserved Slot Violation
	ErrRoleSwitch           ErrCommand = 0x35 // Role Switch Failed
	ErrEIRTooLarge          ErrCommand = 0x36 // Extended Inquiry Response Too Large
	ErrSecureSimplePairing  ErrCommand = 0x37 // Secure Simple Pairing Not Supported By Host
	ErrHostBusy             ErrCommand = 0x38 // Host Busy - Pairing
	ErrNoChannel            ErrCommand = 0x39 // Connection Rejected due to No Suitable Channel Found
	ErrControllerBusy       ErrCommand = 0x3A // Controller Busy
	ErrConnParams           ErrCommand = 0x3B // Unacceptable Connection Parameters
	ErrDirAdvTimeout        ErrCommand = 0x3C // Directed Advertising Timeout
	ErrMIC                  ErrCommand = 0x3D // Connection Terminated due to MIC Failure
	ErrEstablished          ErrCommand = 0x3E // Connection Failed to be Established
	ErrMACConn              ErrCommand = 0x3F // MAC Connection Failed
	ErrCoarseClock          ErrCommand = 0x40 // Coarse Clock Adjustment Rejected but Will Try to Adjust Using Clock Dragging

)

HCI Command Errors [Vol2, Part D, 1.3 ] FIXME: Terrible shorthand. Name them properly.

func (ErrCommand) Error

func (e ErrCommand) Error() string

type HCI

type HCI struct {
	sync.Mutex
	// contains filtered or unexported fields
}

HCI ...

func NewHCI

func NewHCI(opts ...Option) (*HCI, error)

NewHCI returns a hci device.

func (*HCI) Accept

func (h *HCI) Accept() (ble.Conn, error)

Accept starts advertising and accepts connection.

func (*HCI) Addr

func (h *HCI) Addr() ble.Addr

Addr ...

func (*HCI) Advertise

func (h *HCI) Advertise() error

Advertise starts advertising.

func (*HCI) AdvertiseIBeacon

func (h *HCI) AdvertiseIBeacon(u ble.UUID, major, minor uint16, pwr int8) error

AdvertiseIBeacon advertises iBeacon with specified parameters.

func (*HCI) AdvertiseIBeaconData

func (h *HCI) AdvertiseIBeaconData(md []byte) error

AdvertiseIBeaconData advertise iBeacon with given manufacturer data.

func (*HCI) AdvertiseMfgData

func (h *HCI) AdvertiseMfgData(id uint16, md []byte) error

AdvertiseMfgData avertises the given manufacturer data.

func (*HCI) AdvertiseNameAndServices

func (h *HCI) AdvertiseNameAndServices(name string, uuids ...ble.UUID) error

AdvertiseNameAndServices advertises device name, and specified service UUIDs. It tries to fit the UUIDs in the advertising data as much as possible. If name doesn't fit in the advertising data, it will be put in scan response.

func (*HCI) AdvertiseServiceData16

func (h *HCI) AdvertiseServiceData16(id uint16, b []byte) error

AdvertiseServiceData16 advertises data associated with a 16bit service uuid

func (*HCI) Close

func (h *HCI) Close() error

Close ...

func (*HCI) Dial

func (h *HCI) Dial(ctx context.Context, a ble.Addr) (ble.Client, error)

Dial ...

func (*HCI) DialRFCOMM

func (h *HCI) DialRFCOMM(ctx context.Context, a ble.Addr, clockOffset uint16, pageScanRepetitionMode, channel uint8) (cli ble.RFCOMMClient, err error)

func (*HCI) Error

func (h *HCI) Error() error

Error ...

func (*HCI) Init

func (h *HCI) Init() error

Init ...

func (*HCI) Inquire

func (h *HCI) Inquire(length int, numResponses int) error

Inquire starts inquiring for BR/EDR devices.

func (*HCI) Option

func (h *HCI) Option(opts ...Option) error

Option sets the options specified.

func (*HCI) RequestRemoteName

func (h *HCI) RequestRemoteName(a ble.Addr) (string, error)

func (*HCI) Scan

func (h *HCI) Scan(allowDup bool) error

Scan starts scanning.

func (*HCI) Send

func (h *HCI) Send(c Command, r CommandRP) error

Send ...

func (*HCI) SetAdvHandler

func (h *HCI) SetAdvHandler(ah ble.AdvHandler) error

SetAdvHandler ...

func (*HCI) SetAdvertisement

func (h *HCI) SetAdvertisement(ad []byte, sr []byte) error

SetAdvertisement sets advertising data and scanResp.

func (*HCI) SetInqHandler

func (h *HCI) SetInqHandler(ah ble.InqHandler) error

SetAdvHandler ...

func (*HCI) StopAdvertising

func (h *HCI) StopAdvertising() error

StopAdvertising stops advertising.

func (*HCI) StopInquiry

func (h *HCI) StopInquiry() error

StopInquiry stops inquiring for BR/EDR devices by sending an InquiryCancel command

func (*HCI) StopScanning

func (h *HCI) StopScanning() error

StopScanning stops scanning.

type Inquiry

type Inquiry struct {
	// contains filtered or unexported fields
}

Inquiry implements ble.Inquiry and other functions that are only available on Linux.

func (*Inquiry) Address

func (i *Inquiry) Address() ble.Addr

Address returns the address of the remote peripheral.

func (*Inquiry) ClassOfDevice

func (i *Inquiry) ClassOfDevice() [3]byte

ClassOfDevice returns a bit mask as defined here: https://www.bluetooth.com/specifications/assigned-numbers/baseband

func (*Inquiry) ClockOffset

func (i *Inquiry) ClockOffset() uint16

ClockOffset returns the difference in time between the host and client

func (*Inquiry) ExtendedInquiryResponse

func (i *Inquiry) ExtendedInquiryResponse() [240]byte

func (*Inquiry) PageScanRepetitionMode

func (i *Inquiry) PageScanRepetitionMode() uint8

PageScanRepetitionMode returns the mode used for page scans

func (*Inquiry) RSSI

func (i *Inquiry) RSSI() int

RSSI returns RSSI signal strength.

type InquiryEvent

type InquiryEvent interface {
	NumResponses() uint8
	BDADDR(i int) [6]byte
	PageScanRepetitionMode(i int) uint8
	ClassOfDevice(i int) [3]byte
	ClockOffset(i int) uint16
	RSSI(i int) uint8
	ExtendedInquiryResponse() [240]byte
}

InquiryEvent interface that wraps methods common to all inquiry events

type Option

type Option func(*HCI) error

An Option is a configuration function, which configures the device.

func OptConnParams

func OptConnParams(param cmd.LECreateConnection) Option

OptConnParams overrides default connection parameters.

func OptDeviceID

func OptDeviceID(id int) Option

OptDeviceID sets HCI device ID.

func OptDialerTimeout

func OptDialerTimeout(d time.Duration) Option

OptDialerTimeout sets dialing timeout for Dialer.

func OptListenerTimeout

func OptListenerTimeout(d time.Duration) Option

OptListenerTimeout sets dialing timeout for Listener.

func OptPairingCapabilities

func OptPairingCapabilities(param smp.Capabilities) Option

OptPairingIO allows input and output for the pairing process.

type Pool

type Pool struct {
	sync.Mutex
	// contains filtered or unexported fields
}

Pool ...

func NewPool

func NewPool(sz int, cnt int) *Pool

NewPool ...

type RandomAddress

type RandomAddress struct {
	ble.Addr
}

RandomAddress is a Random Device Address.

type SMP

type SMP interface {
	Code() int
	Marshal() []byte
	Unmarshal([]byte) error
}

SMP ...

type Signal

type Signal interface {
	Code() int
	Marshal() []byte
	Unmarshal([]byte) error
}

Signal ...

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL