diff --git a/android/handsfree.c b/android/handsfree.c
index 9bb8f43..aa8765e 100644
--- a/android/handsfree.c
+++ b/android/handsfree.c
static GIOChannel *sco_server = NULL;
+static unsigned int max_hfp_clients = 0;
+
static void set_state(struct hf_device *dev, uint8_t state)
{
struct hal_ev_handsfree_conn_state ev;
if (dev)
return dev;
- /* TODO For now allow only 1 remote device */
- if (!queue_isempty(devices))
+ if (queue_length(devices) == max_hfp_clients)
return NULL;
return device_create(bdaddr);
bool bt_handsfree_register(struct ipc *ipc, const bdaddr_t *addr, uint8_t mode,
int max_clients)
{
- DBG("mode 0x%x", mode);
+ DBG("mode 0x%x max_clients %d", mode, max_clients);
bacpy(&adapter_addr, addr);
+ if (max_clients < 1)
+ return false;
+
devices = queue_new();
if (!devices)
return false;
if (mode == HAL_MODE_HANDSFREE_HSP_ONLY)
goto done;
- /* TODO: Handle max_clients argument */
-
hfp_ag_features = HFP_AG_FEATURES;
if (mode == HAL_MODE_HANDSFREE_HFP_WBS)
bt_sco_register(NULL);
+ max_hfp_clients = max_clients;
+
return true;
}
queue_destroy(devices, (queue_destroy_func_t) device_destroy);
devices = NULL;
+
+ max_hfp_clients = 0;
}