mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-10-31 22:25:33 -04:00
bluetooth: Add specific form factor for phones
When a phone is paired, use PA_BT_FORM_FACTOR_PHONE to properly specify its form factor.
This commit is contained in:
parent
11d7a2d197
commit
b394743fb3
2 changed files with 22 additions and 8 deletions
|
|
@ -1801,7 +1801,7 @@ pa_hook* pa_bluetooth_discovery_hook(pa_bluetooth_discovery *y, pa_bluetooth_hoo
|
||||||
}
|
}
|
||||||
|
|
||||||
pa_bt_form_factor_t pa_bluetooth_get_form_factor(uint32_t class) {
|
pa_bt_form_factor_t pa_bluetooth_get_form_factor(uint32_t class) {
|
||||||
unsigned i;
|
unsigned major, minor;
|
||||||
pa_bt_form_factor_t r;
|
pa_bt_form_factor_t r;
|
||||||
|
|
||||||
static const pa_bt_form_factor_t table[] = {
|
static const pa_bt_form_factor_t table[] = {
|
||||||
|
|
@ -1815,16 +1815,27 @@ pa_bt_form_factor_t pa_bluetooth_get_form_factor(uint32_t class) {
|
||||||
[10] = PA_BT_FORM_FACTOR_HIFI
|
[10] = PA_BT_FORM_FACTOR_HIFI
|
||||||
};
|
};
|
||||||
|
|
||||||
if (((class >> 8) & 31) != 4)
|
/*
|
||||||
return PA_BT_FORM_FACTOR_UNKNOWN;
|
* See Bluetooth Assigned Numbers:
|
||||||
|
* https://www.bluetooth.org/Technical/AssignedNumbers/baseband.htm
|
||||||
|
*/
|
||||||
|
major = (class >> 8) & 0x1F;
|
||||||
|
minor = (class >> 2) & 0x3F;
|
||||||
|
|
||||||
if ((i = (class >> 2) & 63) >= PA_ELEMENTSOF(table))
|
switch (major) {
|
||||||
r = PA_BT_FORM_FACTOR_UNKNOWN;
|
case 2:
|
||||||
else
|
return PA_BT_FORM_FACTOR_PHONE;
|
||||||
r = table[i];
|
case 4:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
pa_log_debug("Unknown Bluetooth major device class %u", major);
|
||||||
|
return PA_BT_FORM_FACTOR_UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
|
r = minor < PA_ELEMENTSOF(table) ? table[minor] : PA_BT_FORM_FACTOR_UNKNOWN;
|
||||||
|
|
||||||
if (!r)
|
if (!r)
|
||||||
pa_log_debug("Unknown Bluetooth minor device class %u", i);
|
pa_log_debug("Unknown Bluetooth minor device class %u", minor);
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
@ -1849,6 +1860,8 @@ const char *pa_bt_form_factor_to_string(pa_bt_form_factor_t ff) {
|
||||||
return "car";
|
return "car";
|
||||||
case PA_BT_FORM_FACTOR_HIFI:
|
case PA_BT_FORM_FACTOR_HIFI:
|
||||||
return "hifi";
|
return "hifi";
|
||||||
|
case PA_BT_FORM_FACTOR_PHONE:
|
||||||
|
return "phone";
|
||||||
}
|
}
|
||||||
|
|
||||||
pa_assert_not_reached();
|
pa_assert_not_reached();
|
||||||
|
|
|
||||||
|
|
@ -164,6 +164,7 @@ typedef enum pa_bt_form_factor {
|
||||||
PA_BT_FORM_FACTOR_PORTABLE,
|
PA_BT_FORM_FACTOR_PORTABLE,
|
||||||
PA_BT_FORM_FACTOR_CAR,
|
PA_BT_FORM_FACTOR_CAR,
|
||||||
PA_BT_FORM_FACTOR_HIFI,
|
PA_BT_FORM_FACTOR_HIFI,
|
||||||
|
PA_BT_FORM_FACTOR_PHONE,
|
||||||
} pa_bt_form_factor_t;
|
} pa_bt_form_factor_t;
|
||||||
|
|
||||||
pa_bt_form_factor_t pa_bluetooth_get_form_factor(uint32_t class);
|
pa_bt_form_factor_t pa_bluetooth_get_form_factor(uint32_t class);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue