OSDN Git Service

eir: Store class in struct eir_data as uint32_t
authorSzymon Janc <szymon.janc@tieto.com>
Wed, 3 Oct 2012 13:18:16 +0000 (15:18 +0200)
committerJohan Hedberg <johan.hedberg@intel.com>
Wed, 3 Oct 2012 19:40:28 +0000 (22:40 +0300)
This simplify code as class is stored on storage as uint32_t and
had to be converted to it in few places.

src/adapter.c
src/eir.c
src/eir.h
src/event.c
src/event.h
src/mgmt.c

index a6a4a4b..4ca0c53 100644 (file)
@@ -3063,7 +3063,6 @@ void adapter_update_found_devices(struct btd_adapter *adapter,
        struct eir_data eir_data;
        char *alias, *name;
        gboolean legacy, name_known;
-       uint32_t dev_class;
        int err;
        GSList *l;
 
@@ -3074,10 +3073,8 @@ void adapter_update_found_devices(struct btd_adapter *adapter,
                return;
        }
 
-       dev_class = eir_data.dev_class[0] | (eir_data.dev_class[1] << 8) |
-                                               (eir_data.dev_class[2] << 16);
-       if (dev_class != 0)
-               write_remote_class(&adapter->bdaddr, bdaddr, dev_class);
+       if (eir_data.class != 0)
+               write_remote_class(&adapter->bdaddr, bdaddr, eir_data.class);
 
        if (eir_data.appearance != 0)
                write_remote_appearance(&adapter->bdaddr, bdaddr, bdaddr_type,
@@ -3133,8 +3130,8 @@ void adapter_update_found_devices(struct btd_adapter *adapter,
        alias = read_stored_data(&adapter->bdaddr, bdaddr, bdaddr_type,
                                                                "aliases");
 
-       dev = found_device_new(bdaddr, bdaddr_type, name, alias, dev_class,
-                                               legacy, eir_data.flags);
+       dev = found_device_new(bdaddr, bdaddr_type, name, alias,
+                               eir_data.class, legacy, eir_data.flags);
        free(name);
        free(alias);
 
index 9226c32..e380b0f 100644 (file)
--- a/src/eir.c
+++ b/src/eir.c
@@ -166,7 +166,8 @@ int eir_parse(struct eir_data *eir, uint8_t *eir_data, uint8_t eir_len)
                case EIR_CLASS_OF_DEV:
                        if (data_len < 3)
                                break;
-                       memcpy(eir->dev_class, data, 3);
+                       eir->class = data[0] | (data[1] << 8) |
+                                                       (data[2] << 16);
                        break;
 
                case EIR_GAP_APPEARANCE:
index e6e870a..3a52563 100644 (file)
--- a/src/eir.h
+++ b/src/eir.h
@@ -47,7 +47,7 @@ struct eir_data {
        GSList *services;
        int flags;
        char *name;
-       uint8_t dev_class[3];
+       uint32_t class;
        uint16_t appearance;
        gboolean name_complete;
        uint8_t *hash;
index 1db73be..9626053 100644 (file)
@@ -452,7 +452,7 @@ int btd_event_ltk_notify(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type,
 }
 
 void btd_event_conn_complete(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type,
-                                               char *name, uint8_t *dev_class)
+                                               char *name, uint32_t class)
 {
        struct btd_adapter *adapter;
        struct btd_device *device;
@@ -462,13 +462,8 @@ void btd_event_conn_complete(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_typ
 
        update_lastused(local, peer, bdaddr_type);
 
-       if (dev_class != NULL) {
-               uint32_t class = dev_class[0] | (dev_class[1] << 8) |
-                                                       (dev_class[2] << 16);
-
-               if (class != 0)
-                       write_remote_class(local, peer, class);
-       }
+       if (class != 0)
+               write_remote_class(local, peer, class);
 
        device_set_addr_type(device, bdaddr_type);
 
index 7031cc9..6d001dd 100644 (file)
@@ -30,7 +30,7 @@ void btd_event_set_legacy_pairing(bdaddr_t *local, bdaddr_t *peer, gboolean lega
 void btd_event_remote_class(bdaddr_t *local, bdaddr_t *peer, uint32_t class);
 void btd_event_remote_name(bdaddr_t *local, bdaddr_t *peer, char *name);
 void btd_event_conn_complete(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type,
-                                       char *name, uint8_t *dev_class);
+                                               char *name, uint32_t class);
 void btd_event_conn_failed(bdaddr_t *local, bdaddr_t *peer, uint8_t status);
 void btd_event_disconn_complete(bdaddr_t *local, bdaddr_t *peer);
 void btd_event_simple_pairing_complete(bdaddr_t *local, bdaddr_t *peer, uint8_t status);
index 5bba732..462e02b 100644 (file)
@@ -515,7 +515,7 @@ static void mgmt_device_connected(int sk, uint16_t index, void *buf, size_t len)
        btd_event_conn_complete(&info->bdaddr, &ev->addr.bdaddr,
                                                ev->addr.type,
                                                eir_data.name,
-                                               eir_data.dev_class);
+                                               eir_data.class);
 
        eir_data_free(&eir_data);
 }