Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit caff3fc5 authored by Matthew Xie's avatar Matthew Xie Committed by Android (Google) Code Review
Browse files

Merge "Blacklist Devices that donot handle absolute volume well" into klp-dev

parents a5a0a8a5 38df6a71
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -144,6 +144,7 @@ static int uinput_driver_check();
static int  uinput_create(char *name);
static int  init_uinput (void);
static void close_uinput (void);
static BOOLEAN dev_blacklisted_for_absolute_volume(BD_ADDR peer_dev);

static const struct {
    const char *name;
@@ -161,6 +162,11 @@ static const struct {
    { NULL,           0,                0,                0 }
};

static const UINT8 rc_black_addr_prefix[][3] = {
    {0x0, 0x18, 0x6b}, // HBS-730
    {0x0, 0x26, 0x7E}  // VW Passat
};

static void send_reject_response (UINT8 rc_handle, UINT8 label,
    UINT8 pdu, UINT8 status);
static UINT8 opcode_from_pdu(UINT8 pdu);
@@ -325,6 +331,11 @@ void handle_rc_features()
    bt_bdaddr_t rc_addr;
    bdcpy(rc_addr.address, btif_rc_cb.rc_addr);

    if (dev_blacklisted_for_absolute_volume(btif_rc_cb.rc_addr))
    {
        btif_rc_cb.rc_features &= ~BTA_AV_FEAT_ADV_CTRL;
    }

    if (btif_rc_cb.rc_features & BTA_AV_FEAT_BROWSE)
    {
        rc_features |= BTRC_FEAT_BROWSE;
@@ -1620,3 +1631,26 @@ void lbl_destroy()
{
    pthread_mutex_destroy(&(device.lbllock));
}

/*******************************************************************************
**      Function       dev_blacklisted_for_absolute_volume
**
**      Description    Blacklist Devices that donot handle absolute volume well
**
**      Returns        True if the device is in the list
*******************************************************************************/
static BOOLEAN dev_blacklisted_for_absolute_volume(BD_ADDR peer_dev)
{
    int i;
    int blacklist_size = sizeof(rc_black_addr_prefix)/sizeof(rc_black_addr_prefix[0]);
    for (i = 0; i < blacklist_size; i++) {
        if (rc_black_addr_prefix[i][0] == peer_dev[0] &&
            rc_black_addr_prefix[i][1] == peer_dev[1] &&
            rc_black_addr_prefix[i][2] == peer_dev[2]) {
            BTIF_TRACE_WARNING3("blacklist absolute volume for %02x:%02x:%02x",
                                peer_dev[0], peer_dev[1], peer_dev[2]);
            return TRUE;
        }
    }
    return FALSE;
}