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