| /****************************************************************************** | |
| * | |
| * 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 */ |