code: func NewDevice(opts ...Option) (*Device, error) {
  	d := &Device{
  		rspc:   make(chan msg),
  		conns:  make(map[string]*conn),
  		chConn: make(chan *conn),
  		chars:  make(map[int]*ble.Characteristic),
  		base:   1,
  	}
  	if err := d.Option(opts...); err != nil {
  		return nil, err
  	}
  
  	d.pm = xpc.XpcConnect("com.apple.blued", d)
  	d.cm = xpc.XpcConnect("com.apple.blued", d)
  
  	return d, errors.Wrap(d.Init(), "can't init")
  }
docs: // NewDevice returns a BLE device.