diff options
-rw-r--r-- | bta/av/bta_av_act.c | 12 | ||||
-rw-r--r-- | stack/include/avrc_defs.h | 2 |
2 files changed, 10 insertions, 4 deletions
diff --git a/bta/av/bta_av_act.c b/bta/av/bta_av_act.c index 8181e57..4693a6e 100644 --- a/bta/av/bta_av_act.c +++ b/bta/av/bta_av_act.c @@ -887,9 +887,15 @@ void bta_av_rc_msg(tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data) else if (!(p_cb->features & BTA_AV_FEAT_VENDOR) && p_data->rc_msg.msg.hdr.ctype <= AVRC_CMD_GEN_INQ) { - /* reject it */ - p_data->rc_msg.msg.hdr.ctype = BTA_AV_RSP_NOT_IMPL; - AVRC_VendorRsp(p_data->rc_msg.handle, p_data->rc_msg.label, &p_data->rc_msg.msg.vendor); + if(p_data->rc_msg.msg.vendor.p_vendor_data[0] == AVRC_PDU_INVALID) + { + /* reject it */ + p_data->rc_msg.msg.hdr.ctype = BTA_AV_RSP_REJ; + p_data->rc_msg.msg.vendor.p_vendor_data[4] = AVRC_STS_BAD_CMD; + } + else + p_data->rc_msg.msg.hdr.ctype = BTA_AV_RSP_NOT_IMPL; + AVRC_VendorRsp(p_data->rc_msg.handle, p_data->rc_msg.label, &p_data->rc_msg.msg.vendor); } } diff --git a/stack/include/avrc_defs.h b/stack/include/avrc_defs.h index b902bff..3f82948 100644 --- a/stack/include/avrc_defs.h +++ b/stack/include/avrc_defs.h @@ -208,7 +208,7 @@ * The len for vendor unique data is 5 */ #define AVRC_PASS_THRU_GROUP_LEN 5 - +#define AVRC_PDU_INVALID 0xff /* 6.15.3 error status code for general reject */ #define AVRC_STS_BAD_CMD 0x00 /* Invalid command, sent if TG received a PDU that it did not understand. */ #define AVRC_STS_BAD_PARAM 0x01 /* Invalid parameter, sent if the TG received a PDU with a parameter ID that it did not understand. Sent if there is only one parameter ID in the PDU. */ |