OSDN Git Service

Code cleanup in set_mode.
authorAlok Barsode <alok.barsode@azingo.com>
Tue, 12 May 2009 12:20:26 +0000 (17:50 +0530)
committerAlok Barsode <alok.barsode@azingo.com>
Mon, 18 May 2009 11:15:44 +0000 (16:45 +0530)
src/adapter.c

index ebbd02e..7795e8d 100644 (file)
@@ -328,38 +328,18 @@ static void adapter_set_discov_timeout(struct btd_adapter *adapter,
                                                        adapter);
 }
 
-static uint8_t mode2scan(uint8_t mode)
-{
-       switch (mode) {
-       case MODE_OFF:
-               return SCAN_DISABLED;
-       case MODE_CONNECTABLE:
-               return SCAN_PAGE;
-       case MODE_DISCOVERABLE:
-       case MODE_LIMITED:
-               return (SCAN_PAGE | SCAN_INQUIRY);
-       default:
-               error("Invalid mode given to mode2scan: %u", mode);
-               return SCAN_PAGE;
-       }
-}
-
 static int set_mode(struct btd_adapter *adapter, uint8_t new_mode)
 {
-       uint8_t scan_enable;
-       uint8_t current_scan = adapter->scan_mode;
        int err;
        const char *modestr;
 
-       scan_enable = mode2scan(new_mode);
-
-       if (!adapter->up && scan_enable != SCAN_DISABLED) {
+       if (!adapter->up && new_mode != MODE_OFF) {
                err = adapter_ops->set_powered(adapter->dev_id, TRUE);
                if (err < 0)
                        return err;
        }
 
-       if (adapter->up && scan_enable == SCAN_DISABLED) {
+       if (adapter->up && new_mode == MODE_OFF) {
                err = adapter_ops->set_powered(adapter->dev_id, FALSE);
                if (err < 0)
                        return err;
@@ -369,17 +349,20 @@ static int set_mode(struct btd_adapter *adapter, uint8_t new_mode)
                goto done;
        }
 
-       if (current_scan != scan_enable) {
-               if (scan_enable == SCAN_PAGE)
-                       err = adapter_ops->set_connectable(adapter->dev_id);
-               else
-                       err = adapter_ops->set_discoverable(adapter->dev_id);
+       if (new_mode == adapter->mode)
+               return 0;
 
-               if (err < 0)
-                       return err;
-       } else if ((scan_enable & SCAN_INQUIRY) &&
-                                               (new_mode != adapter->mode)) {
+       if (new_mode == MODE_CONNECTABLE)
+               err = adapter_ops->set_connectable(adapter->dev_id);
+       else
+               err = adapter_ops->set_discoverable(adapter->dev_id);
+
+       if (err < 0)
+               return err;
+
+       if (new_mode > MODE_CONNECTABLE) {
                adapter_remove_discov_timeout(adapter);
+
                if (adapter->discov_timeout)
                        adapter_set_discov_timeout(adapter,
                                                adapter->discov_timeout);