19adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan/******************************************************************************
29adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan *
39adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan *  Copyright (C) 2003-2013 Broadcom Corporation
49adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan *
59adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan *  Licensed under the Apache License, Version 2.0 (the "License");
69adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan *  you may not use this file except in compliance with the License.
79adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan *  You may obtain a copy of the License at:
89adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan *
99adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan *  http://www.apache.org/licenses/LICENSE-2.0
109adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan *
119adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan *  Unless required by applicable law or agreed to in writing, software
129adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan *  distributed under the License is distributed on an "AS IS" BASIS,
139adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
149adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan *  See the License for the specific language governing permissions and
159adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan *  limitations under the License.
169adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan *
179adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan ******************************************************************************/
189adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan#include <string.h>
199adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
209adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan#include "gki.h"
219adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan#include "avrc_api.h"
229adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan#include "avrc_int.h"
239adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
249adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
259adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan#if (AVRC_METADATA_INCLUDED == TRUE)
269adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
279adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan/**************************************************************************
289adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
299adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan** Function         AVRC_IsValidAvcType
309adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
319adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan** Description      Check if correct AVC type is specified
329adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
339adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan** Returns          returns TRUE if it is valid
349adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
359adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
369adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan*******************************************************************************/
379adddf4965e9ddb01e339b934c343fcbd842a977Ravi NagarajanBOOLEAN AVRC_IsValidAvcType(UINT8 pdu_id, UINT8 avc_type)
389adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan{
399adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    BOOLEAN result=FALSE;
409adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
419adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    if (avc_type < AVRC_RSP_NOT_IMPL) /* command msg */
429adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    {
439adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        switch (pdu_id)
449adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        {
459adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        case AVRC_PDU_GET_CAPABILITIES:            /* 0x10 */
469adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        case AVRC_PDU_LIST_PLAYER_APP_ATTR:        /* 0x11 */
479adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        case AVRC_PDU_LIST_PLAYER_APP_VALUES:      /* 0x12 */
489adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        case AVRC_PDU_GET_CUR_PLAYER_APP_VALUE:    /* 0x13 */
499adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        case AVRC_PDU_GET_PLAYER_APP_ATTR_TEXT:    /* 0x15 */
509adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        case AVRC_PDU_GET_PLAYER_APP_VALUE_TEXT:   /* 0x16 */
519adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        case AVRC_PDU_GET_ELEMENT_ATTR:            /* 0x20 */
529adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        case AVRC_PDU_GET_PLAY_STATUS:             /* 0x30 */
539adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan             if (avc_type == AVRC_CMD_STATUS)
549adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan                result=TRUE;
559adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan             break;
569adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
579adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        case AVRC_PDU_SET_PLAYER_APP_VALUE:        /* 0x14 */
589adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        case AVRC_PDU_INFORM_DISPLAY_CHARSET:      /* 0x17 */
599adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        case AVRC_PDU_INFORM_BATTERY_STAT_OF_CT:   /* 0x18 */
609adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        case AVRC_PDU_REQUEST_CONTINUATION_RSP:    /* 0x40 */
619adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        case AVRC_PDU_ABORT_CONTINUATION_RSP:      /* 0x41 */
629adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan             if (avc_type == AVRC_CMD_CTRL)
639adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan                result=TRUE;
649adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan             break;
659adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
669adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        case AVRC_PDU_REGISTER_NOTIFICATION:       /* 0x31 */
679adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan             if (avc_type == AVRC_CMD_NOTIF)
689adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan                result=TRUE;
699adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan             break;
709adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        }
719adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    }
729adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    else  /* response msg */
739adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    {
749adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        if (avc_type >= AVRC_RSP_NOT_IMPL  &&
759adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan           avc_type <= AVRC_RSP_INTERIM    )
769adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan           result=TRUE;
779adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    }
789adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
799adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    return result;
809adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan}
819adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
829adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan/*******************************************************************************
839adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
849adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan** Function         avrc_is_valid_player_attrib_value
859adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
869adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan** Description      Check if the given attrib value is valid for its attribute
879adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
889adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan** Returns          returns TRUE if it is valid
899adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
909adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan*******************************************************************************/
919adddf4965e9ddb01e339b934c343fcbd842a977Ravi NagarajanBOOLEAN avrc_is_valid_player_attrib_value(UINT8 attrib, UINT8 value)
929adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan{
939adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    BOOLEAN result=FALSE;
949adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
959adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    switch(attrib)
969adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    {
979adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    case AVRC_PLAYER_SETTING_EQUALIZER:
989adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan         if ((value > 0)  &&
999adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan            (value <= AVRC_PLAYER_VAL_ON))
1009adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan            result=TRUE;
1019adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan         break;
1029adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
1039adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    case AVRC_PLAYER_SETTING_REPEAT:
1049adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan         if ((value > 0)  &&
1059adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan            (value <= AVRC_PLAYER_VAL_GROUP_REPEAT))
1069adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan            result=TRUE;
1079adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan         break;
1089adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
1099adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    case AVRC_PLAYER_SETTING_SHUFFLE:
1109adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    case AVRC_PLAYER_SETTING_SCAN:
1119adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan         if ((value > 0)  &&
1129adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan            (value <= AVRC_PLAYER_VAL_GROUP_SHUFFLE))
1139adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan            result=TRUE;
1149adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan         break;
1159adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    }
1169adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
1176b20f3eaef7a523334c013545d5ca3ebef9589d3Mike J. Chen    if (attrib >= AVRC_PLAYER_SETTING_LOW_MENU_EXT)
1189adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan       result = TRUE;
1199adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
1209adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    if (!result)
121b44cc59d286ad255e872c60df02e032bd8d9d75bSharvil Nanavati        AVRC_TRACE_ERROR(
1229adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan            "avrc_is_valid_player_attrib_value() found not matching attrib(x%x)-value(x%x) pair!",
1239adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan            attrib, value);
1249adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
1259adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    return result;
1269adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan}
1279adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
1289adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan/*******************************************************************************
1299adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
1309adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan** Function         AVRC_IsValidPlayerAttr
1319adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
1329adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan** Description      Check if the given attrib value is a valid one
1339adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
1349adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan** Returns          returns TRUE if it is valid
1359adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
1369adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan*******************************************************************************/
1379adddf4965e9ddb01e339b934c343fcbd842a977Ravi NagarajanBOOLEAN AVRC_IsValidPlayerAttr(UINT8 attr)
1389adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan{
1399adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    BOOLEAN result=FALSE;
1409adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
1419adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    if ( (attr >= AVRC_PLAYER_SETTING_EQUALIZER && attr <= AVRC_PLAYER_SETTING_SCAN) ||
1426b20f3eaef7a523334c013545d5ca3ebef9589d3Mike J. Chen         (attr >= AVRC_PLAYER_SETTING_LOW_MENU_EXT) )
1439adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    {
1449adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan       result = TRUE;
1459adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    }
1469adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
1479adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    return result;
1489adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan}
1499adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
1509adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
1519adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
1529adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan/*******************************************************************************
1539adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
1549adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan** Function         avrc_pars_pass_thru
1559adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
1569adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan** Description      This function parses the pass thru commands defined by
1579adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**                  Bluetooth SIG
1589adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
1599adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan** Returns          AVRC_STS_NO_ERROR, if the message in p_data is parsed successfully.
1609adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**                  Otherwise, the error code defined by AVRCP 1.4
1619adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
1629adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan*******************************************************************************/
1639adddf4965e9ddb01e339b934c343fcbd842a977Ravi NagarajantAVRC_STS avrc_pars_pass_thru(tAVRC_MSG_PASS *p_msg, UINT16 *p_vendor_unique_id)
1649adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan{
1659adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    UINT8      *p_data;
1669adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    UINT32      co_id;
1679adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    UINT16      id;
1689adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    tAVRC_STS  status = AVRC_STS_BAD_CMD;
1699adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
1709adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    if (p_msg->op_id == AVRC_ID_VENDOR && p_msg->pass_len == AVRC_PASS_THRU_GROUP_LEN)
1719adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    {
1729adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        p_data = p_msg->p_pass_data;
1739adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        AVRC_BE_STREAM_TO_CO_ID (co_id, p_data);
1749adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        if (co_id == AVRC_CO_METADATA)
1759adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        {
1769adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan            BE_STREAM_TO_UINT16 (id, p_data);
1779adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan            if (AVRC_IS_VALID_GROUP(id))
1789adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan            {
1799adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan                *p_vendor_unique_id = id;
1809adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan                status = AVRC_STS_NO_ERROR;
1819adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan            }
1829adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        }
1839adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    }
1849adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    return status;
1859adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan}
1869adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
1879adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan/*******************************************************************************
1889adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
1899adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan** Function         avrc_opcode_from_pdu
1909adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
1919adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan** Description      This function returns the opcode of the given pdu
1929adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
1939adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan** Returns          AVRC_OP_VENDOR, AVRC_OP_PASS_THRU or AVRC_OP_BROWSE
1949adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
1959adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan*******************************************************************************/
1969adddf4965e9ddb01e339b934c343fcbd842a977Ravi NagarajanUINT8 avrc_opcode_from_pdu(UINT8 pdu)
1979adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan{
1989adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    UINT8 opcode = 0;
1999adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
2009adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    switch (pdu)
2019adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    {
2029adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    case AVRC_PDU_NEXT_GROUP:
2039adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    case AVRC_PDU_PREV_GROUP: /* pass thru */
2049adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        opcode  = AVRC_OP_PASS_THRU;
2059adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        break;
2069adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
2079adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    default: /* vendor */
2089adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        opcode  = AVRC_OP_VENDOR;
2099adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        break;
2109adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    }
2119adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
2129adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    return opcode;
2139adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan}
2149adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
2159adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan/*******************************************************************************
2169adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
2179adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan** Function         avrc_is_valid_opcode
2189adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
2199adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan** Description      This function returns the opcode of the given pdu
2209adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
2219adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan** Returns          AVRC_OP_VENDOR, AVRC_OP_PASS_THRU or AVRC_OP_BROWSE
2229adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan**
2239adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan*******************************************************************************/
2249adddf4965e9ddb01e339b934c343fcbd842a977Ravi NagarajanBOOLEAN avrc_is_valid_opcode(UINT8 opcode)
2259adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan{
2269adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    BOOLEAN is_valid = FALSE;
2279adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    switch (opcode)
2289adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    {
2299adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    case AVRC_OP_BROWSE:
2309adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    case AVRC_OP_PASS_THRU:
2319adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    case AVRC_OP_VENDOR:
2329adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        is_valid = TRUE;
2339adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan        break;
2349adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    }
2359adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan    return is_valid;
2369adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan}
2379adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
2389adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan#endif /* (AVRC_METADATA_INCLUDED == TRUE) */
2399adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan
240