19adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan/****************************************************************************** 29adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan * 3a408eb7227b7060aaa84b2dada7ddd9b6a955761Avish Shah * Copyright (C) 2003-2016 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 "avrc_api.h" 219adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan#include "avrc_int.h" 22911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#include "bt_common.h" 239adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan 249adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan#if (AVRC_METADATA_INCLUDED == TRUE) 259adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan 269adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan/************************************************************************** 27ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 28ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function AVRC_IsValidAvcType 29ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 30ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Description Check if correct AVC type is specified 31ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 32ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Returns returns true if it is valid 33ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 34ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 35ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/ 36911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonbool AVRC_IsValidAvcType(uint8_t pdu_id, uint8_t avc_type) { 37911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson bool result = false; 38911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson 39911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson if (avc_type < AVRC_RSP_NOT_IMPL) /* command msg */ 40911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson { 41911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson switch (pdu_id) { 42911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson case AVRC_PDU_GET_CAPABILITIES: /* 0x10 */ 43911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson case AVRC_PDU_LIST_PLAYER_APP_ATTR: /* 0x11 */ 44911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson case AVRC_PDU_LIST_PLAYER_APP_VALUES: /* 0x12 */ 45911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson case AVRC_PDU_GET_CUR_PLAYER_APP_VALUE: /* 0x13 */ 46911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson case AVRC_PDU_GET_PLAYER_APP_ATTR_TEXT: /* 0x15 */ 47911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson case AVRC_PDU_GET_PLAYER_APP_VALUE_TEXT: /* 0x16 */ 48911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson case AVRC_PDU_GET_ELEMENT_ATTR: /* 0x20 */ 49911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson case AVRC_PDU_GET_PLAY_STATUS: /* 0x30 */ 50911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson if (avc_type == AVRC_CMD_STATUS) result = true; 51911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson break; 529adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan 53911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson case AVRC_PDU_SET_PLAYER_APP_VALUE: /* 0x14 */ 54911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson case AVRC_PDU_INFORM_DISPLAY_CHARSET: /* 0x17 */ 55911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson case AVRC_PDU_INFORM_BATTERY_STAT_OF_CT: /* 0x18 */ 56911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson case AVRC_PDU_REQUEST_CONTINUATION_RSP: /* 0x40 */ 57911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson case AVRC_PDU_ABORT_CONTINUATION_RSP: /* 0x41 */ 58911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson if (avc_type == AVRC_CMD_CTRL) result = true; 59911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson break; 60a408eb7227b7060aaa84b2dada7ddd9b6a955761Avish Shah 61911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson case AVRC_PDU_GET_FOLDER_ITEMS: /* 0x71 */ 62911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson result = true; 63911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson break; 64a408eb7227b7060aaa84b2dada7ddd9b6a955761Avish Shah 65911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson case AVRC_PDU_SET_ABSOLUTE_VOLUME: /* 0x50 */ 66911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson case AVRC_PDU_SET_ADDRESSED_PLAYER: /* 0x60 */ 67911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson case AVRC_PDU_PLAY_ITEM: /* 0x74 */ 68911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson case AVRC_PDU_ADD_TO_NOW_PLAYING: /* 0x90 */ 69911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson if (avc_type == AVRC_CMD_CTRL) result = true; 70911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson break; 719adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan 72911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson case AVRC_PDU_REGISTER_NOTIFICATION: /* 0x31 */ 73911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson if (avc_type == AVRC_CMD_NOTIF) result = true; 74911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson break; 759adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan } 76911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson } else /* response msg */ 77911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson { 78911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson if (avc_type >= AVRC_RSP_NOT_IMPL && avc_type <= AVRC_RSP_INTERIM) 79911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson result = true; 80911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson } 819adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan 82911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson return result; 839adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan} 849adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan 859adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan/******************************************************************************* 86ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 87ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function avrc_is_valid_player_attrib_value 88ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 89ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Description Check if the given attrib value is valid for its attribute 90ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 91ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Returns returns true if it is valid 92ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 93ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/ 94911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonbool avrc_is_valid_player_attrib_value(uint8_t attrib, uint8_t value) { 95911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson bool result = false; 969adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan 97911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson switch (attrib) { 989adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan case AVRC_PLAYER_SETTING_EQUALIZER: 99911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson if ((value > 0) && (value <= AVRC_PLAYER_VAL_ON)) result = true; 100911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson break; 1019adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan 1029adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan case AVRC_PLAYER_SETTING_REPEAT: 103911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson if ((value > 0) && (value <= AVRC_PLAYER_VAL_GROUP_REPEAT)) result = true; 104911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson break; 1059adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan 1069adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan case AVRC_PLAYER_SETTING_SHUFFLE: 1079adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan case AVRC_PLAYER_SETTING_SCAN: 108911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson if ((value > 0) && (value <= AVRC_PLAYER_VAL_GROUP_SHUFFLE)) 109911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson result = true; 110911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson break; 111911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson } 112911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson 113911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson if (attrib >= AVRC_PLAYER_SETTING_LOW_MENU_EXT) result = true; 114911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson 115911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson if (!result) { 116911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson AVRC_TRACE_ERROR(" %s found not matching attrib(x%x)-value(x%x) pair!", 1178843cc830b522cfe6f1e361297fc28fd331a1378Hemant Gupta __func__, attrib, value); 118911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson } 119911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson return result; 1209adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan} 1219adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan 1229adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan/******************************************************************************* 123ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 124ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function AVRC_IsValidPlayerAttr 125ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 126ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Description Check if the given attrib value is a valid one 127ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 128ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Returns returns true if it is valid 129ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 130ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/ 131911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonbool AVRC_IsValidPlayerAttr(uint8_t attr) { 132911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson bool result = false; 1339adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan 134911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson if ((attr >= AVRC_PLAYER_SETTING_EQUALIZER && 135911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson attr <= AVRC_PLAYER_SETTING_SCAN) || 136911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson (attr >= AVRC_PLAYER_SETTING_LOW_MENU_EXT)) { 137911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson result = true; 138911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson } 1399adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan 140911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson return result; 1419adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan} 1429adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan 1439adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan/******************************************************************************* 144ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 145ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function avrc_pars_pass_thru 146ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 147ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Description This function parses the pass thru commands defined by 148ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Bluetooth SIG 149ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 1509ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * Returns AVRC_STS_NO_ERROR, if the message in p_data is parsed 1519ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * successfully. 152ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Otherwise, the error code defined by AVRCP 1.4 153ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 154ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/ 155911d1ae03efec2d54c3b1b605589d790d1745488Myles WatsontAVRC_STS avrc_pars_pass_thru(tAVRC_MSG_PASS* p_msg, 156911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson uint16_t* p_vendor_unique_id) { 157911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson uint8_t* p_data; 158911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson uint32_t co_id; 159911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson uint16_t id; 160911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson tAVRC_STS status = AVRC_STS_BAD_CMD; 161911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson 162911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson if (p_msg->op_id == AVRC_ID_VENDOR && 163911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson p_msg->pass_len == AVRC_PASS_THRU_GROUP_LEN) { 164911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson p_data = p_msg->p_pass_data; 165911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson AVRC_BE_STREAM_TO_CO_ID(co_id, p_data); 166911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson if (co_id == AVRC_CO_METADATA) { 167911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson BE_STREAM_TO_UINT16(id, p_data); 168911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson if (AVRC_IS_VALID_GROUP(id)) { 169911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson *p_vendor_unique_id = id; 170911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson status = AVRC_STS_NO_ERROR; 171911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson } 1729adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan } 173911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson } 174911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson return status; 1759adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan} 1769adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan 1779adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan/******************************************************************************* 178ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 179ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function avrc_opcode_from_pdu 180ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 181ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Description This function returns the opcode of the given pdu 182ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 183ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Returns AVRC_OP_VENDOR, AVRC_OP_PASS_THRU or AVRC_OP_BROWSE 184ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 185ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/ 186911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonuint8_t avrc_opcode_from_pdu(uint8_t pdu) { 187911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson uint8_t opcode = 0; 1889adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan 189911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson switch (pdu) { 190a408eb7227b7060aaa84b2dada7ddd9b6a955761Avish Shah case AVRC_PDU_SET_BROWSED_PLAYER: 191a408eb7227b7060aaa84b2dada7ddd9b6a955761Avish Shah case AVRC_PDU_GET_FOLDER_ITEMS: 192a408eb7227b7060aaa84b2dada7ddd9b6a955761Avish Shah case AVRC_PDU_CHANGE_PATH: 193a408eb7227b7060aaa84b2dada7ddd9b6a955761Avish Shah case AVRC_PDU_GET_ITEM_ATTRIBUTES: 194a408eb7227b7060aaa84b2dada7ddd9b6a955761Avish Shah case AVRC_PDU_SEARCH: 195a408eb7227b7060aaa84b2dada7ddd9b6a955761Avish Shah case AVRC_PDU_GENERAL_REJECT: 196a408eb7227b7060aaa84b2dada7ddd9b6a955761Avish Shah case AVRC_PDU_GET_TOTAL_NUM_OF_ITEMS: 197911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson opcode = AVRC_OP_BROWSE; 198911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson break; 199a408eb7227b7060aaa84b2dada7ddd9b6a955761Avish Shah 2009adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan case AVRC_PDU_NEXT_GROUP: 2019adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan case AVRC_PDU_PREV_GROUP: /* pass thru */ 202911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson opcode = AVRC_OP_PASS_THRU; 203911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson break; 2049adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan 2059adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan default: /* vendor */ 206911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson opcode = AVRC_OP_VENDOR; 207911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson break; 208911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson } 2099adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan 210911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson return opcode; 2119adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan} 2129adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan 2139adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan/******************************************************************************* 214ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 215ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Function avrc_is_valid_opcode 216ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 217ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Description This function returns the opcode of the given pdu 218ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 219ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Returns AVRC_OP_VENDOR, AVRC_OP_PASS_THRU or AVRC_OP_BROWSE 220ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * 221ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/ 222911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonbool avrc_is_valid_opcode(uint8_t opcode) { 223911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson bool is_valid = false; 224911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson switch (opcode) { 2259adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan case AVRC_OP_BROWSE: 2269adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan case AVRC_OP_PASS_THRU: 2279adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan case AVRC_OP_VENDOR: 228911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson is_valid = true; 229911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson break; 230911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson } 231911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson return is_valid; 2329adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan} 2339adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan 2349adddf4965e9ddb01e339b934c343fcbd842a977Ravi Nagarajan#endif /* (AVRC_METADATA_INCLUDED == TRUE) */ 235