diff options
Diffstat (limited to 'hcid/dbus-hci.c')
| -rw-r--r-- | hcid/dbus-hci.c | 61 | 
1 files changed, 4 insertions, 57 deletions
diff --git a/hcid/dbus-hci.c b/hcid/dbus-hci.c index f03b2a85..f4e5b884 100644 --- a/hcid/dbus-hci.c +++ b/hcid/dbus-hci.c @@ -280,8 +280,7 @@ static void adapter_mode_changed(struct adapter *adapter, uint8_t scan_enable)  	case (SCAN_PAGE | SCAN_INQUIRY):  		if (adapter->discov_timeout != 0) -			adapter->timeout_id = g_timeout_add(adapter->discov_timeout * 1000, -					discov_timeout_handler, adapter); +			adapter_set_discov_timeout(adapter, adapter->discov_timeout * 1000);  		if (adapter->mode == MODE_LIMITED) {  			mode = "limited"; @@ -293,8 +292,8 @@ static void adapter_mode_changed(struct adapter *adapter, uint8_t scan_enable)  	case SCAN_INQUIRY:  		/* Address the scenario where another app changed the scan mode */  		if (adapter->discov_timeout != 0) -			adapter->timeout_id = g_timeout_add(adapter->discov_timeout * 1000, -					discov_timeout_handler, adapter); +			adapter_set_discov_timeout(adapter, adapter->discov_timeout * 1000); +  		/* ignore, this event should not be sent*/  	default:  		/* ignore, reserved */ @@ -1594,55 +1593,6 @@ int set_service_classes(int dd, const uint8_t *cls, uint8_t value)  	return 0;  } -gboolean discov_timeout_handler(void *data) -{ -	struct adapter *adapter = data; -	struct hci_request rq; -	int dd; -	uint8_t scan_enable = adapter->scan_enable; -	uint8_t status = 0; -	gboolean retval = TRUE; -	uint16_t dev_id = adapter_get_dev_id(adapter); - -	scan_enable &= ~SCAN_INQUIRY; - -	dd = hci_open_dev(dev_id); -	if (dd < 0) { -		error("HCI device open failed: hci%d", dev_id); -		return TRUE; -	} - -	memset(&rq, 0, sizeof(rq)); -	rq.ogf    = OGF_HOST_CTL; -	rq.ocf    = OCF_WRITE_SCAN_ENABLE; -	rq.cparam = &scan_enable; -	rq.clen   = sizeof(scan_enable); -	rq.rparam = &status; -	rq.rlen   = sizeof(status); -	rq.event  = EVT_CMD_COMPLETE; - -	if (hci_send_req(dd, &rq, 1000) < 0) { -		error("Sending write scan enable command to hci%d failed: %s (%d)", -				dev_id, strerror(errno), errno); -		goto failed; -	} -	if (status) { -		error("Setting scan enable failed with status 0x%02x", status); -		goto failed; -	} - -	set_limited_discoverable(dd, adapter->dev.class, FALSE); - -	adapter->timeout_id = 0; -	retval = FALSE; - -failed: -	if (dd >= 0) -		hci_close_dev(dd); - -	return retval; -} -  /* Section reserved to device HCI callbacks */  void hcid_dbus_setname_complete(bdaddr_t *local) @@ -1731,10 +1681,7 @@ void hcid_dbus_setscan_enable_complete(bdaddr_t *local)  		goto failed;  	} -	if (adapter->timeout_id) { -		g_source_remove(adapter->timeout_id); -		adapter->timeout_id = 0; -	} +	adapter_remove_discov_timeout(adapter);  	if (adapter->scan_enable != rp.enable)  		adapter_mode_changed(adapter, rp.enable);  | 
