Home | History | Annotate | Download | only in include
      1 /******************************************************************************
      2  *
      3  *  Copyright (C) 2006-2012 Broadcom Corporation
      4  *
      5  *  Licensed under the Apache License, Version 2.0 (the "License");
      6  *  you may not use this file except in compliance with the License.
      7  *  You may obtain a copy of the License at:
      8  *
      9  *  http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  *  Unless required by applicable law or agreed to in writing, software
     12  *  distributed under the License is distributed on an "AS IS" BASIS,
     13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  *  See the License for the specific language governing permissions and
     15  *  limitations under the License.
     16  *
     17  ******************************************************************************/
     18 
     19 /******************************************************************************
     20  *
     21  *  nterface to AVRCP Application Programming Interface
     22  *
     23  ******************************************************************************/
     24 #ifndef AVRC_API_H
     25 #define AVRC_API_H
     26 #include "bt_target.h"
     27 #include "avct_api.h"
     28 #include "sdp_api.h"
     29 #include "avrc_defs.h"
     30 
     31 /*****************************************************************************
     32 **  constants
     33 *****************************************************************************/
     34 
     35 /* API function return value result codes. */
     36 #define AVRC_SUCCESS        AVCT_SUCCESS        /* 0 Function successful */
     37 #define AVRC_NO_RESOURCES   AVCT_NO_RESOURCES   /* 1 Not enough resources */
     38 #define AVRC_BAD_HANDLE     AVCT_BAD_HANDLE     /* 2 Bad handle */
     39 #define AVRC_PID_IN_USE     AVCT_PID_IN_USE     /* 3 PID already in use */
     40 #define AVRC_NOT_OPEN       AVCT_NOT_OPEN       /* 4 Connection not open */
     41 #define AVRC_MSG_TOO_BIG    5                   /* 5 the message length exceed the MTU of the browsing channel */
     42 #define AVRC_FAIL           0x10                /* 0x10 generic failure */
     43 #define AVRC_BAD_PARAM      0x11                /* 0x11 bad parameter   */
     44 
     45 /* Control role - same as AVCT_TARGET/AVCT_CONTROL */
     46 #define AVRC_CT_TARGET      1                   /* target  */
     47 #define AVRC_CT_CONTROL     2                   /* controller  */
     48 #define AVRC_CT_PASSIVE     4                   /* If conflict, allow the other side to succeed  */
     49 
     50 /* Connection role */
     51 #define AVRC_CONN_INT       AVCT_INT            /* initiator */
     52 #define AVRC_CONN_ACP       AVCT_ACP            /* Acceptor  */
     53 
     54 
     55 /* AVRC CTRL events */
     56 /* AVRC_OPEN_IND_EVT event is sent when the connection is successfully opened.
     57  * This eventis sent in response to an AVRC_Open(). */
     58 #define AVRC_OPEN_IND_EVT       0
     59 
     60 /* AVRC_CLOSE_IND_EVT event is sent when a connection is closed.
     61  * This event can result from a call to AVRC_Close() or when the peer closes
     62  * the connection.  It is also sent when a connection attempted through
     63  * AVRC_Open() fails. */
     64 #define AVRC_CLOSE_IND_EVT      1
     65 
     66 /* AVRC_CONG_IND_EVT event indicates that AVCTP is congested and cannot send
     67  * any more messages. */
     68 #define AVRC_CONG_IND_EVT       2
     69 
     70 /* AVRC_UNCONG_IND_EVT event indicates that AVCTP is uncongested and ready to
     71  * send messages. */
     72 #define AVRC_UNCONG_IND_EVT     3
     73 
     74  /* AVRC_BROWSE_OPEN_IND_EVT event is sent when the browse channel is successfully opened.
     75  * This eventis sent in response to an AVRC_Open() or AVRC_OpenBrowse() . */
     76 #define AVRC_BROWSE_OPEN_IND_EVT       4
     77 
     78 /* AVRC_BROWSE_CLOSE_IND_EVT event is sent when a browse channel is closed.
     79  * This event can result from a call to AVRC_Close(), AVRC_CloseBrowse() or when the peer closes
     80  * the connection.  It is also sent when a connection attempted through
     81  * AVRC_OpenBrowse() fails. */
     82 #define AVRC_BROWSE_CLOSE_IND_EVT      5
     83 
     84 /* AVRC_BROWSE_CONG_IND_EVT event indicates that AVCTP browse channel is congested and cannot send
     85  * any more messages. */
     86 #define AVRC_BROWSE_CONG_IND_EVT       6
     87 
     88 /* AVRC_BROWSE_UNCONG_IND_EVT event indicates that AVCTP browse channel is uncongested and ready to
     89  * send messages. */
     90 #define AVRC_BROWSE_UNCONG_IND_EVT     7
     91 
     92 /* AVRC_CMD_TIMEOUT_EVT event indicates timeout waiting for AVRC command response from the peer */
     93 #define AVRC_CMD_TIMEOUT_EVT           8
     94 
     95 /* Supported categories */
     96 #define AVRC_SUPF_CT_CAT1               0x0001      /* Category 1 */
     97 #define AVRC_SUPF_CT_CAT2               0x0002      /* Category 2 */
     98 #define AVRC_SUPF_CT_CAT3               0x0004      /* Category 3 */
     99 #define AVRC_SUPF_CT_CAT4               0x0008      /* Category 4 */
    100 #define AVRC_SUPF_CT_APP_SETTINGS       0x0010      /* Player Application Settings */
    101 #define AVRC_SUPF_CT_GROUP_NAVI         0x0020      /* Group Navigation */
    102 #define AVRC_SUPF_CT_BROWSE             0x0040      /* Browsing */
    103 #define AVRC_SUPF_CT_COVER_ART_GET_IMAGE_PROP   0x0080  /* Cover Art, get image property */
    104 #define AVRC_SUPF_CT_COVER_ART_GET_IMAGE        0x0100  /* Cover Art, get image */
    105 #define AVRC_SUPF_CT_COVER_ART_GET_THUMBNAIL    0x0200  /* Cover Art, get Linked Thumbnail */
    106 
    107 #define AVRC_SUPF_TG_CAT1               0x0001      /* Category 1 */
    108 #define AVRC_SUPF_TG_CAT2               0x0002      /* Category 2 */
    109 #define AVRC_SUPF_TG_CAT3               0x0004      /* Category 3 */
    110 #define AVRC_SUPF_TG_CAT4               0x0008      /* Category 4 */
    111 #define AVRC_SUPF_TG_APP_SETTINGS       0x0010      /* Player Application Settings */
    112 #define AVRC_SUPF_TG_GROUP_NAVI         0x0020      /* Group Navigation */
    113 #define AVRC_SUPF_TG_BROWSE             0x0040      /* Browsing */
    114 #define AVRC_SUPF_TG_MULTI_PLAYER       0x0080      /* Muliple Media Player */
    115 #define AVRC_SUPF_TG_PLAYER_COVER_ART   0x0100      /* Cover Art */
    116 
    117 #define AVRC_META_SUCCESS               AVRC_SUCCESS
    118 #define AVRC_META_FAIL                  AVRC_FAIL
    119 #define AVRC_METADATA_CMD               0x0000
    120 #define AVRC_METADATA_RESP              0x0001
    121 
    122 
    123 
    124 /*****************************************************************************
    125 **  data type definitions
    126 *****************************************************************************/
    127 
    128 /* This data type is used in AVRC_FindService() to initialize the SDP database
    129  * to hold the result service search. */
    130 typedef struct
    131 {
    132     UINT32              db_len;  /* Length, in bytes, of the discovery database */
    133     tSDP_DISCOVERY_DB  *p_db;    /* Pointer to the discovery database */
    134     UINT16              num_attr;/* The number of attributes in p_attrs */
    135     UINT16             *p_attrs; /* The attributes filter. If NULL, AVRCP API sets the attribute filter
    136                                   * to be ATTR_ID_SERVICE_CLASS_ID_LIST, ATTR_ID_BT_PROFILE_DESC_LIST,
    137                                   * ATTR_ID_SUPPORTED_FEATURES, ATTR_ID_SERVICE_NAME and ATTR_ID_PROVIDER_NAME.
    138                                   * If not NULL, the input is taken as the filter. */
    139 } tAVRC_SDP_DB_PARAMS;
    140 
    141 /* This callback function returns service discovery information to the
    142  * application after the AVRC_FindService() API function is called.  The
    143  * implementation of this callback function must copy the p_service_name
    144  * and p_provider_name parameters passed to it as they are not guaranteed
    145  * to remain after the callback function exits. */
    146 typedef void (tAVRC_FIND_CBACK) (UINT16 status);
    147 
    148 
    149 /* This is the control callback function.  This function passes events
    150  * listed in Table 20 to the application. */
    151 typedef void (tAVRC_CTRL_CBACK) (UINT8 handle, UINT8 event, UINT16 result,
    152              BD_ADDR peer_addr);
    153 
    154 
    155 /* This is the message callback function.  It is executed when AVCTP has
    156  * a message packet ready for the application.  The implementation of this
    157  * callback function must copy the tAVRC_MSG structure passed to it as it
    158  * is not guaranteed to remain after the callback function exits. */
    159 typedef void (tAVRC_MSG_CBACK) (UINT8 handle, UINT8 label, UINT8 opcode,
    160              tAVRC_MSG *p_msg);
    161 
    162 typedef struct
    163 {
    164     tAVRC_CTRL_CBACK    *p_ctrl_cback;  /* pointer to application control callback */
    165     tAVRC_MSG_CBACK     *p_msg_cback;   /* pointer to application message callback */
    166     UINT32              company_id;     /* the company ID  */
    167     UINT8               conn;           /* Connection role (Initiator/acceptor) */
    168     UINT8               control;        /* Control role (Control/Target) */
    169 } tAVRC_CONN_CB;
    170 
    171 
    172 
    173 /*****************************************************************************
    174 **  external function declarations
    175 *****************************************************************************/
    176 #ifdef __cplusplus
    177 extern "C"
    178 {
    179 #endif
    180 
    181 /******************************************************************************
    182 **
    183 ** Function         AVRC_AddRecord
    184 **
    185 ** Description      This function is called to build an AVRCP SDP record.
    186 **                  Prior to calling this function the application must
    187 **                  call SDP_CreateRecord() to create an SDP record.
    188 **
    189 **                  Input Parameters:
    190 **                      service_uuid:  Indicates TG(UUID_SERVCLASS_AV_REM_CTRL_TARGET)
    191 **                                            or CT(UUID_SERVCLASS_AV_REMOTE_CONTROL)
    192 **
    193 **                      p_service_name:  Pointer to a null-terminated character
    194 **                      string containing the service name.
    195 **                      If service name is not used set this to NULL.
    196 **
    197 **                      p_provider_name:  Pointer to a null-terminated character
    198 **                      string containing the provider name.
    199 **                      If provider name is not used set this to NULL.
    200 **
    201 **                      categories:  Supported categories.
    202 **
    203 **                      sdp_handle:  SDP handle returned by SDP_CreateRecord().
    204 **
    205 **                  Output Parameters:
    206 **                      None.
    207 **
    208 ** Returns          AVRC_SUCCESS if successful.
    209 **                  AVRC_NO_RESOURCES if not enough resources to build the SDP record.
    210 **
    211 ******************************************************************************/
    212 extern UINT16 AVRC_AddRecord(UINT16 service_uuid, char *p_service_name,
    213                 char *p_provider_name, UINT16 categories, UINT32 sdp_handle,
    214                 BOOLEAN browse_supported, UINT16 profile_version);
    215 
    216 /******************************************************************************
    217 **
    218 ** Function         AVRC_FindService
    219 **
    220 ** Description      This function is called by the application to perform service
    221 **                  discovery and retrieve AVRCP SDP record information from a
    222 **                  peer device.  Information is returned for the first service
    223 **                  record found on the server that matches the service UUID.
    224 **                  The callback function will be executed when service discovery
    225 **                  is complete.  There can only be one outstanding call to
    226 **                  AVRC_FindService() at a time; the application must wait for
    227 **                  the callback before it makes another call to the function.
    228 **                  The application is responsible for allocating memory for the
    229 **                  discovery database.  It is recommended that the size of the
    230 **                  discovery database be at least 300 bytes.  The application
    231 **                  can deallocate the memory after the callback function has
    232 **                  executed.
    233 **
    234 **                  Input Parameters:
    235 **                      service_uuid: Indicates TG(UUID_SERVCLASS_AV_REM_CTRL_TARGET)
    236 **                                           or CT(UUID_SERVCLASS_AV_REMOTE_CONTROL)
    237 **
    238 **                      bd_addr:  BD address of the peer device.
    239 **
    240 **                      p_db:  SDP discovery database parameters.
    241 **
    242 **                      p_cback:  Pointer to the callback function.
    243 **
    244 **                  Output Parameters:
    245 **                      None.
    246 **
    247 ** Returns          AVRC_SUCCESS if successful.
    248 **                  AVRC_BAD_PARAMS if discovery database parameters are invalid.
    249 **                  AVRC_NO_RESOURCES if there are not enough resources to
    250 **                                    perform the service search.
    251 **
    252 ******************************************************************************/
    253 extern UINT16 AVRC_FindService(UINT16 service_uuid, BD_ADDR bd_addr,
    254                                tAVRC_SDP_DB_PARAMS *p_db, tAVRC_FIND_CBACK *p_cback);
    255 
    256 /******************************************************************************
    257 **
    258 ** Function         AVRC_Open
    259 **
    260 ** Description      This function is called to open a connection to AVCTP.
    261 **                  The connection can be either an initiator or acceptor, as
    262 **                  determined by the p_ccb->stream parameter.
    263 **                  The connection can be a target, a controller or for both role,
    264 **                  as determined by the p_ccb->control parameter.
    265 **                  By definition, a target connection is an acceptor connection
    266 **                  that waits for an incoming AVCTP connection from the peer.
    267 **                  The connection remains available to the application until
    268 **                  the application closes it by calling AVRC_Close().  The
    269 **                  application does not need to reopen the connection after an
    270 **                  AVRC_CLOSE_IND_EVT is received.
    271 **
    272 **                  Input Parameters:
    273 **                      p_ccb->company_id: Company Identifier.
    274 **
    275 **                      p_ccb->p_ctrl_cback:  Pointer to control callback function.
    276 **
    277 **                      p_ccb->p_msg_cback:  Pointer to message callback function.
    278 **
    279 **                      p_ccb->conn: AVCTP connection role.  This is set to
    280 **                      AVCTP_INT for initiator connections and AVCTP_ACP
    281 **                      for acceptor connections.
    282 **
    283 **                      p_ccb->control: Control role.  This is set to
    284 **                      AVRC_CT_TARGET for target connections, AVRC_CT_CONTROL
    285 **                      for control connections or (AVRC_CT_TARGET|AVRC_CT_CONTROL)
    286 **                      for connections that support both roles.
    287 **
    288 **                      peer_addr: BD address of peer device.  This value is
    289 **                      only used for initiator connections; for acceptor
    290 **                      connections it can be set to NULL.
    291 **
    292 **                  Output Parameters:
    293 **                      p_handle: Pointer to handle.  This parameter is only
    294 **                                valid if AVRC_SUCCESS is returned.
    295 **
    296 ** Returns          AVRC_SUCCESS if successful.
    297 **                  AVRC_NO_RESOURCES if there are not enough resources to open
    298 **                  the connection.
    299 **
    300 ******************************************************************************/
    301 extern UINT16 AVRC_Open(UINT8 *p_handle, tAVRC_CONN_CB *p_ccb,
    302                         BD_ADDR_PTR peer_addr);
    303 
    304 /******************************************************************************
    305 **
    306 ** Function         AVRC_Close
    307 **
    308 ** Description      Close a connection opened with AVRC_Open().
    309 **                  This function is called when the
    310 **                  application is no longer using a connection.
    311 **
    312 **                  Input Parameters:
    313 **                      handle: Handle of this connection.
    314 **
    315 **                  Output Parameters:
    316 **                      None.
    317 **
    318 ** Returns          AVRC_SUCCESS if successful.
    319 **                  AVRC_BAD_HANDLE if handle is invalid.
    320 **
    321 ******************************************************************************/
    322 extern UINT16 AVRC_Close(UINT8 handle);
    323 
    324 /******************************************************************************
    325 **
    326 ** Function         AVRC_OpenBrowse
    327 **
    328 ** Description      This function is called to open a browsing connection to AVCTP.
    329 **                  The connection can be either an initiator or acceptor, as
    330 **                  determined by the conn_role.
    331 **                  The handle is returned by a previous call to AVRC_Open.
    332 **
    333 ** Returns          AVRC_SUCCESS if successful.
    334 **                  AVRC_NO_RESOURCES if there are not enough resources to open
    335 **                  the connection.
    336 **
    337 ******************************************************************************/
    338 extern UINT16 AVRC_OpenBrowse(UINT8 handle, UINT8 conn_role);
    339 
    340 /******************************************************************************
    341 **
    342 ** Function         AVRC_CloseBrowse
    343 **
    344 ** Description      Close a connection opened with AVRC_OpenBrowse().
    345 **                  This function is called when the
    346 **                  application is no longer using a connection.
    347 **
    348 ** Returns          AVRC_SUCCESS if successful.
    349 **                  AVRC_BAD_HANDLE if handle is invalid.
    350 **
    351 ******************************************************************************/
    352 extern UINT16 AVRC_CloseBrowse(UINT8 handle);
    353 
    354 /******************************************************************************
    355 **
    356 ** Function         AVRC_MsgReq
    357 **
    358 ** Description      This function is used to send the AVRCP byte stream in p_pkt
    359 **                  down to AVCTP.
    360 **
    361 **                  It is expected that p_pkt->offset is at least AVCT_MSG_OFFSET
    362 **                  p_pkt->layer_specific is AVCT_DATA_CTRL or AVCT_DATA_BROWSE
    363 **                  p_pkt->event is AVRC_OP_VENDOR, AVRC_OP_PASS_THRU or AVRC_OP_BROWSING
    364 **                  The above BT_HDR settings are set by the AVRC_Bld* functions.
    365 **
    366 ** Returns          AVRC_SUCCESS if successful.
    367 **                  AVRC_BAD_HANDLE if handle is invalid.
    368 **
    369 ******************************************************************************/
    370 extern UINT16 AVRC_MsgReq (UINT8 handle, UINT8 label, UINT8 ctype, BT_HDR *p_pkt);
    371 
    372 /******************************************************************************
    373 **
    374 ** Function         AVRC_UnitCmd
    375 **
    376 ** Description      Send a UNIT INFO command to the peer device.  This
    377 **                  function can only be called for controller role connections.
    378 **                  Any response message from the peer is passed back through
    379 **                  the tAVRC_MSG_CBACK callback function.
    380 **
    381 **                  Input Parameters:
    382 **                      handle: Handle of this connection.
    383 **
    384 **                      label: Transaction label.
    385 **
    386 **                  Output Parameters:
    387 **                      None.
    388 **
    389 ** Returns          AVRC_SUCCESS if successful.
    390 **                  AVRC_BAD_HANDLE if handle is invalid.
    391 **
    392 ******************************************************************************/
    393 extern UINT16 AVRC_UnitCmd(UINT8 handle, UINT8 label);
    394 
    395 /******************************************************************************
    396 **
    397 ** Function         AVRC_SubCmd
    398 **
    399 ** Description      Send a SUBUNIT INFO command to the peer device.  This
    400 **                  function can only be called for controller role connections.
    401 **                  Any response message from the peer is passed back through
    402 **                  the tAVRC_MSG_CBACK callback function.
    403 **
    404 **                  Input Parameters:
    405 **                      handle: Handle of this connection.
    406 **
    407 **                      label: Transaction label.
    408 **
    409 **                      page: Specifies which part of the subunit type table
    410 **                      is requested.  For AVRCP it is typically zero.
    411 **                      Value range is 0-7.
    412 **
    413 **                  Output Parameters:
    414 **                      None.
    415 **
    416 ** Returns          AVRC_SUCCESS if successful.
    417 **                  AVRC_BAD_HANDLE if handle is invalid.
    418 **
    419 ******************************************************************************/
    420 extern UINT16 AVRC_SubCmd(UINT8 handle, UINT8 label, UINT8 page);
    421 
    422 
    423 /******************************************************************************
    424 **
    425 ** Function         AVRC_PassCmd
    426 **
    427 ** Description      Send a PASS THROUGH command to the peer device.  This
    428 **                  function can only be called for controller role connections.
    429 **                  Any response message from the peer is passed back through
    430 **                  the tAVRC_MSG_CBACK callback function.
    431 **
    432 **                  Input Parameters:
    433 **                      handle: Handle of this connection.
    434 **
    435 **                      label: Transaction label.
    436 **
    437 **                      p_msg: Pointer to PASS THROUGH message structure.
    438 **
    439 **                  Output Parameters:
    440 **                      None.
    441 **
    442 ** Returns          AVRC_SUCCESS if successful.
    443 **                  AVRC_BAD_HANDLE if handle is invalid.
    444 **
    445 ******************************************************************************/
    446 extern UINT16 AVRC_PassCmd(UINT8 handle, UINT8 label, tAVRC_MSG_PASS *p_msg);
    447 
    448 /******************************************************************************
    449 **
    450 ** Function         AVRC_PassRsp
    451 **
    452 ** Description      Send a PASS THROUGH response to the peer device.  This
    453 **                  function can only be called for target role connections.
    454 **                  This function must be called when a PASS THROUGH command
    455 **                  message is received from the peer through the
    456 **                  tAVRC_MSG_CBACK callback function.
    457 **
    458 **                  Input Parameters:
    459 **                      handle: Handle of this connection.
    460 **
    461 **                      label: Transaction label.  Must be the same value as
    462 **                      passed with the command message in the callback function.
    463 **
    464 **                      p_msg: Pointer to PASS THROUGH message structure.
    465 **
    466 **                  Output Parameters:
    467 **                      None.
    468 **
    469 ** Returns          AVRC_SUCCESS if successful.
    470 **                  AVRC_BAD_HANDLE if handle is invalid.
    471 **
    472 ******************************************************************************/
    473 extern UINT16 AVRC_PassRsp(UINT8 handle, UINT8 label, tAVRC_MSG_PASS *p_msg);
    474 
    475 
    476 /******************************************************************************
    477 **
    478 ** Function         AVRC_VendorCmd
    479 **
    480 ** Description      Send a VENDOR DEPENDENT command to the peer device.  This
    481 **                  function can only be called for controller role connections.
    482 **                  Any response message from the peer is passed back through
    483 **                  the tAVRC_MSG_CBACK callback function.
    484 **
    485 **                  Input Parameters:
    486 **                      handle: Handle of this connection.
    487 **
    488 **                      label: Transaction label.
    489 **
    490 **                      p_msg: Pointer to VENDOR DEPENDENT message structure.
    491 **
    492 **                  Output Parameters:
    493 **                      None.
    494 **
    495 ** Returns          AVRC_SUCCESS if successful.
    496 **                  AVRC_BAD_HANDLE if handle is invalid.
    497 **
    498 ******************************************************************************/
    499 extern UINT16 AVRC_VendorCmd(UINT8  handle, UINT8  label, tAVRC_MSG_VENDOR *p_msg);
    500 
    501 
    502 /******************************************************************************
    503 **
    504 ** Function         AVRC_VendorRsp
    505 **
    506 ** Description      Send a VENDOR DEPENDENT response to the peer device.  This
    507 **                  function can only be called for target role connections.
    508 **                  This function must be called when a VENDOR DEPENDENT
    509 **                  command message is received from the peer through the
    510 **                  tAVRC_MSG_CBACK callback function.
    511 **
    512 **                  Input Parameters:
    513 **                      handle: Handle of this connection.
    514 **
    515 **                      label: Transaction label.  Must be the same value as
    516 **                      passed with the command message in the callback function.
    517 **
    518 **                      p_msg: Pointer to VENDOR DEPENDENT message structure.
    519 **
    520 **                  Output Parameters:
    521 **                      None.
    522 **
    523 ** Returns          AVRC_SUCCESS if successful.
    524 **                  AVRC_BAD_HANDLE if handle is invalid.
    525 **
    526 ******************************************************************************/
    527 extern UINT16 AVRC_VendorRsp(UINT8  handle, UINT8  label, tAVRC_MSG_VENDOR *p_msg);
    528 
    529 
    530 /******************************************************************************
    531 **
    532 ** Function         AVRC_SetTraceLevel
    533 **
    534 ** Description      Sets the trace level for AVRC. If 0xff is passed, the
    535 **                  current trace level is returned.
    536 **
    537 **                  Input Parameters:
    538 **                      new_level:  The level to set the AVRC tracing to:
    539 **                      0xff-returns the current setting.
    540 **                      0-turns off tracing.
    541 **                      >= 1-Errors.
    542 **                      >= 2-Warnings.
    543 **                      >= 3-APIs.
    544 **                      >= 4-Events.
    545 **                      >= 5-Debug.
    546 **
    547 ** Returns          The new trace level or current trace level if
    548 **                  the input parameter is 0xff.
    549 **
    550 ******************************************************************************/
    551 extern UINT8 AVRC_SetTraceLevel (UINT8 new_level);
    552 
    553 /*******************************************************************************
    554 **
    555 ** Function         AVRC_Init
    556 **
    557 ** Description      This function is called at stack startup to allocate the
    558 **                  control block (if using dynamic memory), and initializes the
    559 **                  control block and tracing level.
    560 **
    561 ** Returns          void
    562 **
    563 *******************************************************************************/
    564 extern void AVRC_Init(void);
    565 
    566 /*******************************************************************************
    567 **
    568 ** Function         AVRC_Ctrl_ParsCommand
    569 **
    570 ** Description      This function is used to parse cmds received for CTRL
    571 **                  Currently it is for SetAbsVolume and Volume Change Notification..
    572 **
    573 ** Returns          AVRC_STS_NO_ERROR, if the message in p_data is parsed successfully.
    574 **                  Otherwise, the error code defined by AVRCP 1.4
    575 **
    576 *******************************************************************************/
    577 extern tAVRC_STS AVRC_Ctrl_ParsCommand (tAVRC_MSG *p_msg, tAVRC_COMMAND *p_result);
    578 
    579 /*******************************************************************************
    580 **
    581 ** Function         AVRC_ParsCommand
    582 **
    583 ** Description      This function is used to parse the received command.
    584 **
    585 ** Returns          AVRC_STS_NO_ERROR, if the message in p_data is parsed successfully.
    586 **                  Otherwise, the error code defined by AVRCP 1.4
    587 **
    588 *******************************************************************************/
    589 extern tAVRC_STS AVRC_ParsCommand (tAVRC_MSG *p_msg, tAVRC_COMMAND *p_result,
    590                                    UINT8 *p_buf, UINT16 buf_len);
    591 
    592 /*******************************************************************************
    593 **
    594 ** Function         AVRC_ParsResponse
    595 **
    596 ** Description      This function is used to parse the received response.
    597 **
    598 ** Returns          AVRC_STS_NO_ERROR, if the message in p_data is parsed successfully.
    599 **                  Otherwise, the error code defined by AVRCP 1.4
    600 **
    601 *******************************************************************************/
    602 extern tAVRC_STS AVRC_ParsResponse (tAVRC_MSG *p_msg, tAVRC_RESPONSE *p_result,
    603                                     UINT8 *p_buf, UINT16 buf_len);
    604 
    605 /*******************************************************************************
    606 **
    607 ** Function         AVRC_Ctrl_ParsResponse
    608 **
    609 ** Description      This function is a parse response for AVRCP Controller.
    610 **
    611 ** Returns          AVRC_STS_NO_ERROR, if the message in p_data is parsed successfully.
    612 **                  Otherwise, the error code defined by AVRCP 1.4
    613 **
    614 *******************************************************************************/
    615 extern tAVRC_STS AVRC_Ctrl_ParsResponse (tAVRC_MSG *p_msg, tAVRC_RESPONSE *p_result,
    616    UINT8 *p_buf, UINT16* buf_len);
    617 
    618 /*******************************************************************************
    619 **
    620 ** Function         AVRC_BldCommand
    621 **
    622 ** Description      This function builds the given AVRCP command to the given
    623 **                  GKI buffer
    624 **
    625 ** Returns          AVRC_STS_NO_ERROR, if the command is built successfully
    626 **                  Otherwise, the error code.
    627 **
    628 *******************************************************************************/
    629 extern tAVRC_STS AVRC_BldCommand( tAVRC_COMMAND *p_cmd, BT_HDR **pp_pkt);
    630 
    631 /*******************************************************************************
    632 **
    633 ** Function         AVRC_BldResponse
    634 **
    635 ** Description      This function builds the given AVRCP response to the given
    636 **                  GKI buffer
    637 **
    638 ** Returns          AVRC_STS_NO_ERROR, if the response is built successfully
    639 **                  Otherwise, the error code.
    640 **
    641 *******************************************************************************/
    642 extern tAVRC_STS AVRC_BldResponse( UINT8 handle, tAVRC_RESPONSE *p_rsp, BT_HDR **pp_pkt);
    643 
    644 /**************************************************************************
    645 **
    646 ** Function         AVRC_IsValidAvcType
    647 **
    648 ** Description      Check if correct AVC type is specified
    649 **
    650 ** Returns          returns TRUE if it is valid
    651 **
    652 **
    653 *******************************************************************************/
    654 extern BOOLEAN AVRC_IsValidAvcType(UINT8 pdu_id, UINT8 avc_type);
    655 
    656 /*******************************************************************************
    657 **
    658 ** Function         AVRC_IsValidPlayerAttr
    659 **
    660 ** Description      Check if the given attrib value is a valid one
    661 **
    662 **
    663 ** Returns          returns TRUE if it is valid
    664 **
    665 *******************************************************************************/
    666 extern BOOLEAN AVRC_IsValidPlayerAttr(UINT8 attr);
    667 
    668 #ifdef __cplusplus
    669 }
    670 #endif
    671 
    672 #endif /* AVRC_API_H */
    673