summaryrefslogtreecommitdiffstats
path: root/src/adapter.c
diff options
context:
space:
mode:
authorAlok Barsode <alok.barsode@azingo.com>2008-09-03 12:46:26 +0530
committerAlok Barsode <alok.barsode@azingo.com>2008-09-03 12:46:26 +0530
commit96adaa7ebd6e83db29df644f7952370dbea4ac85 (patch)
tree7a0002af9797005369596ec88ccf1d78472b8d3e /src/adapter.c
parent44bebaf5962f0b0a60b66ec8ab65f1d211b60b9d (diff)
Moving adapter_mode_changed to adapter.c.
Diffstat (limited to 'src/adapter.c')
-rw-r--r--src/adapter.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/adapter.c b/src/adapter.c
index bb2e131f..fe9aaef0 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -2850,6 +2850,50 @@ void adapter_remove_oor_device(struct adapter *adapter, char *peer_addr)
}
}
+void adapter_mode_changed(struct adapter *adapter, uint8_t scan_mode)
+{
+ const char *mode;
+ const gchar *path = adapter_get_path(adapter);
+
+ adapter_set_scan_mode(adapter, scan_mode);
+
+ switch (scan_mode) {
+ case SCAN_DISABLED:
+ mode = "off";
+ adapter_set_mode(adapter, MODE_OFF);
+ break;
+ case SCAN_PAGE:
+ mode = "connectable";
+ adapter_set_mode(adapter, MODE_CONNECTABLE);
+ break;
+ case (SCAN_PAGE | SCAN_INQUIRY):
+
+ if (adapter->discov_timeout != 0)
+ adapter_set_discov_timeout(adapter, adapter->discov_timeout * 1000);
+
+ if (adapter_get_mode(adapter) == MODE_LIMITED) {
+ mode = "limited";
+ } else {
+ adapter_set_mode(adapter, MODE_DISCOVERABLE);
+ mode = "discoverable";
+ }
+ break;
+ case SCAN_INQUIRY:
+ /* Address the scenario where another app changed the scan mode */
+ if (adapter->discov_timeout != 0)
+ adapter_set_discov_timeout(adapter, adapter->discov_timeout * 1000);
+
+ /* ignore, this event should not be sent*/
+ default:
+ /* ignore, reserved */
+ return;
+ }
+
+ dbus_connection_emit_property_changed(connection, path,
+ ADAPTER_INTERFACE, "Mode",
+ DBUS_TYPE_STRING, &mode);
+}
+
int btd_register_adapter_driver(struct btd_adapter_driver *driver)
{
adapter_drivers = g_slist_append(adapter_drivers, driver);