diff options
| author | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2008-10-15 18:51:04 -0300 | 
|---|---|---|
| committer | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2008-10-15 18:51:04 -0300 | 
| commit | fd2a6409244254452bec619100d73bc6c8d04ec5 (patch) | |
| tree | b6d402a1a16eaed92c7808c5543b2bd4c4bb73e4 /src/adapter.c | |
| parent | 19d73b1c58f87a80a7c82ce8e983c0360d3d0e87 (diff) | |
Allow dynamic adapter driver registration
Diffstat (limited to 'src/adapter.c')
| -rw-r--r-- | src/adapter.c | 19 | 
1 files changed, 19 insertions, 0 deletions
diff --git a/src/adapter.c b/src/adapter.c index c2304e99..39d5f9c1 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -3246,10 +3246,29 @@ gboolean adapter_has_discov_sessions(struct btd_adapter *adapter)  	return TRUE;  } +static void probe_driver(gpointer data, gpointer user_data) +{ +	struct btd_adapter *adapter = data; +	struct btd_adapter_driver *driver = user_data; + +	if (!adapter->up) +		return; + +	driver->probe(adapter); +} +  int btd_register_adapter_driver(struct btd_adapter_driver *driver)  { +	GSList *adapters; +  	adapter_drivers = g_slist_append(adapter_drivers, driver); +	if (driver->probe == NULL) +		return 0; + +	adapters = manager_get_adapters(); +	g_slist_foreach(adapters, probe_driver, driver); +  	return 0;  }  | 
