diff options
Diffstat (limited to 'hcid/main.c')
| -rw-r--r-- | hcid/main.c | 10 | 
1 files changed, 10 insertions, 0 deletions
diff --git a/hcid/main.c b/hcid/main.c index a41afe7b..2c307176 100644 --- a/hcid/main.c +++ b/hcid/main.c @@ -394,12 +394,16 @@ static void init_all_devices(int ctl)  		if (hcid.auto_init)  			init_device(dr->dev_id); +		add_device(dr->dev_id); +  		if (hcid.auto_init && hci_test_bit(HCI_UP, &dr->dev_opt))  			configure_device(dr->dev_id);  		if (hcid.security && hci_test_bit(HCI_UP, &dr->dev_opt))  			start_security_manager(dr->dev_id); +		start_device(dr->dev_id); +  #ifdef ENABLE_DBUS  		hcid_dbus_register_device(dr->dev_id);  #endif @@ -454,6 +458,7 @@ static inline void device_event(GIOChannel *chan, evt_stack_internal *si)  		syslog(LOG_INFO, "HCI dev %d registered", sd->dev_id);  		if (hcid.auto_init)  			init_device(sd->dev_id); +		add_device(sd->dev_id);  #ifdef ENABLE_DBUS  		hcid_dbus_register_device(sd->dev_id);  #endif @@ -464,6 +469,7 @@ static inline void device_event(GIOChannel *chan, evt_stack_internal *si)  #ifdef ENABLE_DBUS  		hcid_dbus_unregister_device(sd->dev_id);  #endif +		remove_device(sd->dev_id);  		break;  	case HCI_DEV_UP: @@ -472,12 +478,14 @@ static inline void device_event(GIOChannel *chan, evt_stack_internal *si)  			configure_device(sd->dev_id);  		if (hcid.security)  			start_security_manager(sd->dev_id); +		start_device(sd->dev_id);  		break;  	case HCI_DEV_DOWN:  		syslog(LOG_INFO, "HCI dev %d down", sd->dev_id);  		if (hcid.security)  			stop_security_manager(sd->dev_id); +		stop_device(sd->dev_id);  		break;  	}  } @@ -633,6 +641,8 @@ int main(int argc, char *argv[], char *env[])  	if (read_config(hcid.config_file) < 0)  		syslog(LOG_ERR, "Config load failed"); +	init_devices(); +  #ifdef ENABLE_DBUS  	if (hcid_dbus_init() == FALSE && hcid.dbus_pin_helper) {  		syslog(LOG_ERR, "Unable to get on D-BUS");  | 
