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"); |