code: func (cln *Client) DiscoverServices(ss []ble.UUID) ([]*ble.Service, error) {
  	rsp := cln.conn.sendReq(45, xpc.Dict{
  		"kCBMsgArgDeviceUUID": cln.id,
  		"kCBMsgArgUUIDs":      uuidSlice(ss),
  	})
  	if rsp.err() != nil {
  		return nil, rsp.err()
  	}
  	svcs := []*ble.Service{}
  	for _, xss := range rsp.services() {
  		xs := msg(xss.(xpc.Dict))
  		svcs = append(svcs, &ble.Service{
  			UUID:      ble.MustParse(xs.uuid()),
  			Handle:    uint16(xs.serviceStartHandle()),
  			EndHandle: uint16(xs.serviceEndHandle()),
  		})
  	}
  	if cln.profile == nil {
  		cln.profile = &ble.Profile{Services: svcs}
  	}
  	return svcs, nil
  }
docs: // DiscoverServices finds all the primary services on a server. [Vol 3, Part G, 4.4.1]
  // If filter is specified, only filtered services are returned.