| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279 |
- /******************************************************************************
- *
- * Copyright (C) 2003-2012 Broadcom Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************/
- /******************************************************************************
- *
- * This interface file contains the interface to the Audio Video Control
- * Transport Protocol (AVCTP).
- *
- ******************************************************************************/
- #ifndef AVCT_API_H
- #define AVCT_API_H
- #include "bt_types.h"
- #include "bt_target.h"
- /*****************************************************************************
- ** Constants
- *****************************************************************************/
- /* API function return value result codes. */
- #define AVCT_SUCCESS 0 /* Function successful */
- #define AVCT_NO_RESOURCES 1 /* Not enough resources */
- #define AVCT_BAD_HANDLE 2 /* Bad handle */
- #define AVCT_PID_IN_USE 3 /* PID already in use */
- #define AVCT_NOT_OPEN 4 /* Connection not open */
- /* PSM for AVCT. */
- #define AVCT_PSM 0x0017
- #define AVCT_BR_PSM 0x001B
- /* Protocol revision numbers */
- #define AVCT_REV_1_0 0x0100
- #define AVCT_REV_1_2 0x0102
- #define AVCT_REV_1_3 0x0103
- #define AVCT_REV_1_4 0x0104
- /* the layer_specific settings */
- #define AVCT_DATA_CTRL 0x0001 /* for the control channel */
- #define AVCT_DATA_BROWSE 0x0002 /* for the browsing channel */
- #define AVCT_DATA_PARTIAL 0x0100 /* Only have room for a partial message */
- #define AVCT_MIN_CONTROL_MTU 48 /* Per the AVRC spec, minimum MTU for the control channel */
- #define AVCT_MIN_BROWSE_MTU 335 /* Per the AVRC spec, minimum MTU for the browsing channel */
- /* Message offset. The number of bytes needed by the protocol stack for the
- ** protocol headers of an AVCTP message packet.
- */
- #define AVCT_MSG_OFFSET 15
- #define AVCT_BROWSE_OFFSET 17 /* the default offset for browsing channel */
- /* Connection role. */
- #define AVCT_INT 0 /* Initiator connection */
- #define AVCT_ACP 1 /* Acceptor connection */
- /* Control role. */
- #define AVCT_TARGET 1 /* target */
- #define AVCT_CONTROL 2 /* controller */
- #define AVCT_PASSIVE 4 /* If conflict, allow the other side to succeed */
- /* Command/Response indicator. */
- #define AVCT_CMD 0 /* Command message */
- #define AVCT_RSP 2 /* Response message */
- #define AVCT_REJ 3 /* Message rejected */
- /* Control callback events. */
- #define AVCT_CONNECT_CFM_EVT 0 /* Connection confirm */
- #define AVCT_CONNECT_IND_EVT 1 /* Connection indication */
- #define AVCT_DISCONNECT_CFM_EVT 2 /* Disconnect confirm */
- #define AVCT_DISCONNECT_IND_EVT 3 /* Disconnect indication */
- #define AVCT_CONG_IND_EVT 4 /* Congestion indication */
- #define AVCT_UNCONG_IND_EVT 5 /* Uncongestion indication */
- #define AVCT_BROWSE_CONN_CFM_EVT 6 /* Browse Connection confirm */
- #define AVCT_BROWSE_CONN_IND_EVT 7 /* Browse Connection indication */
- #define AVCT_BROWSE_DISCONN_CFM_EVT 8 /* Browse Disconnect confirm */
- #define AVCT_BROWSE_DISCONN_IND_EVT 9 /* Browse Disconnect indication */
- #define AVCT_BROWSE_CONG_IND_EVT 10 /* Congestion indication */
- #define AVCT_BROWSE_UNCONG_IND_EVT 11 /* Uncongestion indication */
- /* General purpose failure result code for callback events. */
- #define AVCT_RESULT_FAIL 5
- /*****************************************************************************
- ** Type Definitions
- *****************************************************************************/
- /* Control callback function. */
- typedef void (tAVCT_CTRL_CBACK)(UINT8 handle, UINT8 event, UINT16 result,
- BD_ADDR peer_addr);
- /* Message callback function */
- /* p_pkt->layer_specific is AVCT_DATA_CTRL or AVCT_DATA_BROWSE */
- typedef void (tAVCT_MSG_CBACK)(UINT8 handle, UINT8 label, UINT8 cr,
- BT_HDR *p_pkt);
- /* Structure used by AVCT_CreateConn. */
- typedef struct {
- tAVCT_CTRL_CBACK *p_ctrl_cback; /* Control callback */
- tAVCT_MSG_CBACK *p_msg_cback; /* Message callback */
- UINT16 pid; /* Profile ID */
- UINT8 role; /* Initiator/acceptor role */
- UINT8 control; /* Control role (Control/Target) */
- } tAVCT_CC;
- /*****************************************************************************
- ** External Function Declarations
- *****************************************************************************/
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- /*******************************************************************************
- **
- ** Function AVCT_Register
- **
- ** Description This is the system level registration function for the
- ** AVCTP protocol. This function initializes AVCTP and
- ** prepares the protocol stack for its use. This function
- ** must be called once by the system or platform using AVCTP
- ** before the other functions of the API an be used.
- **
- **
- ** Returns void
- **
- *******************************************************************************/
- extern void AVCT_Register(UINT16 mtu, UINT16 mtu_br, UINT8 sec_mask);
- /*******************************************************************************
- **
- ** Function AVCT_Deregister
- **
- ** Description This function is called to deregister use AVCTP protocol.
- ** It is called when AVCTP is no longer being used by any
- ** application in the system. Before this function can be
- ** called, all connections must be removed with
- ** AVCT_RemoveConn().
- **
- **
- ** Returns void
- **
- *******************************************************************************/
- extern void AVCT_Deregister(void);
- /*******************************************************************************
- **
- ** Function AVCT_CreateConn
- **
- ** Description Create an AVCTP connection. There are two types of
- ** connections, initiator and acceptor, as determined by
- ** the p_cc->role parameter. When this function is called to
- ** create an initiator connection, an AVCTP connection to
- ** the peer device is initiated if one does not already exist.
- ** If an acceptor connection is created, the connection waits
- ** passively for an incoming AVCTP connection from a peer device.
- **
- **
- ** Returns AVCT_SUCCESS if successful, otherwise error.
- **
- *******************************************************************************/
- extern UINT16 AVCT_CreateConn(UINT8 *p_handle, tAVCT_CC *p_cc,
- BD_ADDR peer_addr);
- /*******************************************************************************
- **
- ** Function AVCT_RemoveConn
- **
- ** Description Remove an AVCTP connection. This function is called when
- ** the application is no longer using a connection. If this
- ** is the last connection to a peer the L2CAP channel for AVCTP
- ** will be closed.
- **
- **
- ** Returns AVCT_SUCCESS if successful, otherwise error.
- **
- *******************************************************************************/
- extern UINT16 AVCT_RemoveConn(UINT8 handle);
- /*******************************************************************************
- **
- ** Function AVCT_CreateBrowse
- **
- ** Description Create an AVCTP connection. There are two types of
- ** connections, initiator and acceptor, as determined by
- ** the p_cc->role parameter. When this function is called to
- ** create an initiator connection, an AVCTP connection to
- ** the peer device is initiated if one does not already exist.
- ** If an acceptor connection is created, the connection waits
- ** passively for an incoming AVCTP connection from a peer device.
- **
- **
- ** Returns AVCT_SUCCESS if successful, otherwise error.
- **
- *******************************************************************************/
- extern UINT16 AVCT_CreateBrowse(UINT8 handle, UINT8 role);
- /*******************************************************************************
- **
- ** Function AVCT_RemoveBrowse
- **
- ** Description Remove an AVCTP connection. This function is called when
- ** the application is no longer using a connection. If this
- ** is the last connection to a peer the L2CAP channel for AVCTP
- ** will be closed.
- **
- **
- ** Returns AVCT_SUCCESS if successful, otherwise error.
- **
- *******************************************************************************/
- extern UINT16 AVCT_RemoveBrowse(UINT8 handle);
- /*******************************************************************************
- **
- ** Function AVCT_GetBrowseMtu
- **
- ** Description Get the peer_mtu for the AVCTP Browse channel of the given
- ** connection.
- **
- ** Returns the peer browsing channel MTU.
- **
- *******************************************************************************/
- extern UINT16 AVCT_GetBrowseMtu (UINT8 handle);
- /*******************************************************************************
- **
- ** Function AVCT_GetPeerMtu
- **
- ** Description Get the peer_mtu for the AVCTP channel of the given
- ** connection.
- **
- ** Returns the peer MTU size.
- **
- *******************************************************************************/
- extern UINT16 AVCT_GetPeerMtu (UINT8 handle);
- /*******************************************************************************
- **
- ** Function AVCT_MsgReq
- **
- ** Description Send an AVCTP message to a peer device. In calling
- ** AVCT_MsgReq(), the application should keep track of the
- ** congestion state of AVCTP as communicated with events
- ** AVCT_CONG_IND_EVT and AVCT_UNCONG_IND_EVT. If the
- ** application calls AVCT_MsgReq() when AVCTP is congested
- ** the message may be discarded. The application may make its
- ** first call to AVCT_MsgReq() after it receives an
- ** AVCT_CONNECT_CFM_EVT or AVCT_CONNECT_IND_EVT on control channel or
- ** AVCT_BROWSE_CONN_CFM_EVT or AVCT_BROWSE_CONN_IND_EVT on browsing channel.
- **
- ** p_msg->layer_specific must be set to
- ** AVCT_DATA_CTRL for control channel traffic;
- ** AVCT_DATA_BROWSE for for browse channel traffic.
- **
- ** Returns AVCT_SUCCESS if successful, otherwise error.
- **
- *******************************************************************************/
- extern UINT16 AVCT_MsgReq(UINT8 handle, UINT8 label, UINT8 cr, BT_HDR *p_msg);
- #ifdef __cplusplus
- }
- #endif
- #endif /* AVCT_API_H */
|