diff --git a/src/adapter.c b/src/adapter.c
index a6a4a4b..4ca0c53 100644
--- a/src/adapter.c
+++ b/src/adapter.c
struct eir_data eir_data;
char *alias, *name;
gboolean legacy, name_known;
- uint32_t dev_class;
int err;
GSList *l;
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,
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);
diff --git a/src/eir.c b/src/eir.c
index 9226c32..e380b0f 100644
--- a/src/eir.c
+++ b/src/eir.c
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:
diff --git a/src/eir.h b/src/eir.h
index e6e870a..3a52563 100644
--- a/src/eir.h
+++ b/src/eir.h
GSList *services;
int flags;
char *name;
- uint8_t dev_class[3];
+ uint32_t class;
uint16_t appearance;
gboolean name_complete;
uint8_t *hash;
diff --git a/src/event.c b/src/event.c
index 1db73be..9626053 100644
--- a/src/event.c
+++ b/src/event.c
}
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;
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);
diff --git a/src/event.h b/src/event.h
index 7031cc9..6d001dd 100644
--- a/src/event.h
+++ b/src/event.h
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);
diff --git a/src/mgmt.c b/src/mgmt.c
index 5bba732..462e02b 100644
--- a/src/mgmt.c
+++ b/src/mgmt.c
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);
}