1 // SPDX-License-Identifier: LGPL-2.1-or-later
4 * BlueZ - Bluetooth protocol stack for Linux
6 * Copyright (C) 2011-2014 Intel Corporation
7 * Copyright (C) 2002-2010 Marcel Holtmann <marcel@holtmann.org>
21 #ifdef HAVE_UDEV_HWDB_NEW
24 bool hwdb_get_vendor_model(const char *modalias, char **vendor, char **model)
27 struct udev_hwdb *hwdb;
28 struct udev_list_entry *head, *entry;
35 hwdb = udev_hwdb_new(udev);
44 head = udev_hwdb_get_properties_list_entry(hwdb, modalias, 0);
46 udev_list_entry_foreach(entry, head) {
47 const char *name = udev_list_entry_get_name(entry);
52 if (!*vendor && !strcmp(name, "ID_VENDOR_FROM_DATABASE"))
53 *vendor = strdup(udev_list_entry_get_value(entry));
54 else if (!*model && !strcmp(name, "ID_MODEL_FROM_DATABASE"))
55 *model = strdup(udev_list_entry_get_value(entry));
58 hwdb = udev_hwdb_unref(hwdb);
63 udev = udev_unref(udev);
68 bool hwdb_get_company(const uint8_t *bdaddr, char **company)
71 struct udev_hwdb *hwdb;
72 struct udev_list_entry *head, *entry;
76 if (!bdaddr[2] && !bdaddr[1] && !bdaddr[0])
79 sprintf(modalias, "OUI:%2.2X%2.2X%2.2X",
80 bdaddr[5], bdaddr[4], bdaddr[3]);
86 hwdb = udev_hwdb_new(udev);
94 head = udev_hwdb_get_properties_list_entry(hwdb, modalias, 0);
96 udev_list_entry_foreach(entry, head) {
97 const char *name = udev_list_entry_get_name(entry);
99 if (name && !strcmp(name, "ID_OUI_FROM_DATABASE")) {
100 *company = strdup(udev_list_entry_get_value(entry));
105 hwdb = udev_hwdb_unref(hwdb);
110 udev = udev_unref(udev);
115 bool hwdb_get_vendor_model(const char *modalias, char **vendor, char **model)
120 bool hwdb_get_company(const uint8_t *bdaddr, char **company)