CapabilityFilter

CapabilityFilter is an object that wraps an NSArray of required capabilities. This CapabilityFilter is used for determining which devices will appear in DiscoveryManager’s compatibleDevices array. The contents of a CapabilityFilter’s array must be any of the string constants defined in the Capability header files.

CapabilityFilter values

Here are some examples of values for the Capability constants.

  • kMediaPlayerPlayVideo = “MediaPlayer.Display.Video”
  • kMediaPlayerDisplayImage = “MediaPlayer.Display.Image”
  • kVolumeControlSubscribe = “VolumeControl.Subscribe”
  • kMediaControlAny = “Media.Control.Any”

All Capability header files also define a constant array of all capabilities defined in that header (ex. kVolumeControlCapabilities).

AND/OR Filtering

CapabilityFilter is an AND filter. A ConnectableDevice would need to satisfy all conditions of a CapabilityFilter to pass.

[DiscoveryManager capabilityFilters] is an OR filter. a ConnectableDevice only needs to satisfy one condition (CapabilityFilter) to pass.

Examples

Filter for all devices that support video playback AND any media controls AND volume up/down.

NSArray *capabilities = @[
    kMediaPlayerPlayVideo,
    kMediaControlAny,
    kVolumeControlVolumeUpDown
];

CapabilityFilter *filter =
    [CapabilityFilter filterWithCapabilities:capabilities];

[[DiscoveryManager sharedManager] setCapabilityFilters:@[filter]];

Filter for all devices that support (video playback AND any media controls AND volume up/down) OR (image display).

NSArray *videoCapabilities = @[
    kMediaPlayerPlayVideo,
    kMediaControlAny,
    kVolumeControlVolumeUpDown
];

NSArray *imageCapabilities = @[
    kMediaPlayerDisplayImage
];

CapabilityFilter *videoFilter =
    [CapabilityFilter filterWithCapabilities:videoCapabilities];
CapabilityFilter *imageFilter =
    [CapabilityFilter filterWithCapabilities:imageCapabilities];

[[DiscoveryManager sharedManager] setCapabilityFilters:@[videoFilter, imageFilter]];

Properties

NSArray * capabilities
Array of capabilities required by this filter. This property is readonly use the addCapability or addCapabilities to build this object.

Methods

+ (CapabilityFilter *) filterWithCapabilities:(NSArray *)capabilities

Create a CapabilityFilter with the given array required capabilities.

Parameters

  • capabilities – Capabilities to be added to the new filter
- (void) addCapability:(NSString *)capability

Add a required capability to the filter.

Parameters

  • capability – Capability name to add (see capability header files for NSString constants)
- (void) addCapabilities:(NSArray *)capabilities

Add array of required capabilities to the filter.

Parameters

  • capabilities – List of capability names (see capability header files for NSString constants)