MCAP PICS for the PTS tool.

PTS version: 5.1

* - different than PTS defaults
# - not yet implemented/supported

M - mandatory
O - optional

		Protocols
-------------------------------------------------------------------------------
Parameter Name	Selected	Description
-------------------------------------------------------------------------------
TSPC_MCAP_1_A_1	True (*)	Supports Standard Op Codes (C.1)
TSPC_MCAP_1_A_2	False		Supports Clock Synchronization Protocol (C.1)
-------------------------------------------------------------------------------
C.1: Support for at least one of the defined protocols is Mandatory.
-------------------------------------------------------------------------------


		Roles
-------------------------------------------------------------------------------
Parameter Name	Selected	Description
-------------------------------------------------------------------------------
TSPC_MCAP_1_1	True (*)	Supports Source Role (C.1)
TSPC_MCAP_1_2	True (*)	Supports Sink Role (C.1)
TSPC_MCAP_1_3	False		Supports Sync-Slave Role (C.2)
TSPC_MCAP_1_4	False		Supports Sync-Master Role (C.3)
-------------------------------------------------------------------------------
C.1: If support for TSPC_MCAP_1_A_1 is supported, at least one of the
	defined roles is Mandatory otherwise Excluded.
C.2: Mandatory if TSPC_MCAP_1_A_2 is supported, otherwise Excluded.
C.3: Optional if TSPC_MCAP_1_A_2 is supported, otherwise Excluded.
-------------------------------------------------------------------------------


		L2CAP Features - Source
-------------------------------------------------------------------------------
Parameter Name	Selected	Description
-------------------------------------------------------------------------------
TSPC_MCAP_2_1	True (*)	Supports L2CAP Control Channel (M)
TSPC_MCAP_2_2	True (*)	Supports at least one L2CAP Data Channel (M)
TSPC_MCAP_2_3	True (*)	Maximum number of simultaneous L2CAP Data
				Channels supported (DCmax) per MCL (M)
TSPC_MCAP_2_4	False		Can support multiple simultaneous MCLs with
				Standard Op Codes (O)
-------------------------------------------------------------------------------


		Connection Management - Source
-------------------------------------------------------------------------------
Parameter Name	Selected	Description
-------------------------------------------------------------------------------
TSPC_MCAP_3_1			This row inentionally left blank
TSPC_MCAP_3_2	True (*)	Initiate creation of Control and Data Channels
				(C.1)
TSPC_MCAP_3_3	True (*)	Accept creation of Control and Data Channels
				(C.1)
TSPC_MCAP_3_4	True (*)	Initiate Disconnection of MCL (M)
TSPC_MCAP_3_5	True (*)	Accept Disconnection of MCL (M)
TSPC_MCAP_3_6	True (*)	Initiate Disconnection of MDL (M)
TSPC_MCAP_3_7	True (*)	Accept Disconnection of MDL (M)
TSPC_MCAP_3_8	False		Initiate Reconnection of MDL (O)
TSPC_MCAP_3_9	False		Accept Reconnection of MDL (C.2)
TSPC_MCAP_3_10	False		Initiate Deletion of MDL (O)
TSPC_MCAP_3_11	True (*)	Accept Deletion of MDL (M)
TSPC_MCAP_3_12	False		Initiate Delete of All MDLs using 0xFFFF (O)
TSPC_MCAP_3_13	True (*)	Accept Delete of All MDLs using 0xFFFF (M)
TSPC_MCAP_3_14	False		Send MDL Abort request (O)
TSPC_MCAP_3_15	True (*)	Accept MDL Abort request (M)
-------------------------------------------------------------------------------
C.1: Support for at least one of TSPC_MCAP_3_2 or TSPC_MCAP_3_3 is Mandatory.
C.2: Mandatory if TSPC_MCAP_3_3 is supported, otherwise Excluded.
-------------------------------------------------------------------------------


		L2CAP Features - Sink
-------------------------------------------------------------------------------
Parameter Name	Selected	Description
-------------------------------------------------------------------------------
TSPC_MCAP_4_1	True (*)	Supports L2CAP Control Channel (M)
TSPC_MCAP_4_2	True (*)	Supports at least one L2CAP Data Channel (M)
TSPC_MCAP_4_3	True (*)	Maximum number of simultaneous L2CAP Data
				Channels supported (DCmax) per MCL (M)
TSPC_MCAP_4_4	False		Can support multiple simultaneous MCLs with
				Standard Op Codes (O)
-------------------------------------------------------------------------------


		Connection Management - Sink
-------------------------------------------------------------------------------
Parameter Name	Selected	Description
-------------------------------------------------------------------------------
TSPC_MCAP_5_1			This row intentionally left blank
TSPC_MCAP_5_2	True (*)	Initiate creation of Control and Data Channels
				(M)
TSPC_MCAP_5_3	True (*)	Accept creation of Control and Data Channels
				(M)
TSPC_MCAP_5_4	True (*)	Initiate Disconnection of MCL (M)
TSPC_MCAP_5_5	True (*)	Accept Disconnection of MCL (M)
TSPC_MCAP_5_6	True (*)	Initiate Disconnection of MDL (M)
TSPC_MCAP_5_7	True (*)	Accept Disconnection of MDL (M)
TSPC_MCAP_5_8	False		Initiate Reconnection of MDL (O)
TSPC_MCAP_5_9	True (*)	Accept Reconnection of MDL (M)
TSPC_MCAP_5_10	False		Initiate Deletion of MDL (O)
TSPC_MCAP_5_11	True (*)	Accept Deletion of MDL (M)
TSPC_MCAP_5_12	False		Initiate Delete of All MDLs using 0xFFFF (O)
TSPC_MCAP_5_13	True (*)	Accept Delete of All MDLs using 0xFFFF (M)
TSPC_MCAP_5_14	False		Send MDL Abort request (O)
TSPC_MCAP_5_15	True (*)	Accept MDL Abort request (M)
-------------------------------------------------------------------------------


		Clock Synchronization Features - Sync-Slave
-------------------------------------------------------------------------------
Parameter Name	Selected	Description
-------------------------------------------------------------------------------
TSPC_MCAP_6_1	False (*)	Accept MD_SYNC_CAP_REQ and MD_SYNC_SET_REQ and
				Initiate MD_SYNC_INFO_IND (C.1)
TSPC_MCAP_6_2			This row intentionally left blank
TSPC_MCAP_6_3	False		Can support multiple simultaneous MCLs with CSP
				(O)
TSPC_MCAP_6_4	False		Can access Bluetooth Clock (O)
-------------------------------------------------------------------------------
C.1: Mandatory if MCAP TSPC_MCAP_1_A_2 is supported, otherwise Excluded.
-------------------------------------------------------------------------------


		Clock Synchronization Features - Sync-Master
-------------------------------------------------------------------------------
Parameter Name	Selected	Description
-------------------------------------------------------------------------------
TSPC_MCAP_7_1			This row intentionally left blank
TSPC_MCAP_7_2	False (*)	Initiate MD_SYNC_CAP_REQ and MD_SYNC_SET_REQ
				and Accept MD_SYNC_INFO_IND (C.1)
TSPC_MCAP_7_3	False		Can support multiple simultaneous MCLs with CSP (O)
TSPC_MCAP_7_4	False (*)	Can access Bluetooth Clock (O)
-------------------------------------------------------------------------------
C.1: Mandatory to support IF TSPC_MCAP_1_A_2 is supported.
-------------------------------------------------------------------------------
