iwinfo: move builtin hardware database to /usr/share/libiwinfo/hardware.txt

SVN-Revision: 36449
This commit is contained in:
Jo-Philipp Wich 2013-04-26 13:20:15 +00:00
parent accc6e309e
commit e02d373f90
4 changed files with 35 additions and 83 deletions

View file

@ -7,7 +7,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=libiwinfo PKG_NAME:=libiwinfo
PKG_RELEASE:=42 PKG_RELEASE:=43
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
PKG_CONFIG_DEPENDS := \ PKG_CONFIG_DEPENDS := \
@ -101,6 +101,8 @@ endef
define Package/libiwinfo/install define Package/libiwinfo/install
$(INSTALL_DIR) $(1)/usr/lib $(INSTALL_DIR) $(1)/usr/lib
$(INSTALL_BIN) $(PKG_BUILD_DIR)/libiwinfo.so $(1)/usr/lib/libiwinfo.so $(INSTALL_BIN) $(PKG_BUILD_DIR)/libiwinfo.so $(1)/usr/lib/libiwinfo.so
$(INSTALL_DIR) $(1)/usr/share/libiwinfo
$(INSTALL_DATA) $(PKG_BUILD_DIR)/hardware.txt $(1)/usr/share/libiwinfo/hardware.txt
endef endef
define Package/libiwinfo-lua/install define Package/libiwinfo-lua/install

View file

@ -132,8 +132,8 @@ struct iwinfo_hardware_id {
}; };
struct iwinfo_hardware_entry { struct iwinfo_hardware_entry {
const char *vendor_name; char vendor_name[64];
const char *device_name; char device_name[64];
uint16_t vendor_id; uint16_t vendor_id;
uint16_t device_id; uint16_t device_id;
uint16_t subsystem_vendor_id; uint16_t subsystem_vendor_id;
@ -143,7 +143,8 @@ struct iwinfo_hardware_entry {
}; };
extern const struct iwinfo_iso3166_label IWINFO_ISO3166_NAMES[]; extern const struct iwinfo_iso3166_label IWINFO_ISO3166_NAMES[];
extern const struct iwinfo_hardware_entry IWINFO_HARDWARE_ENTRIES[];
#define IWINFO_HARDWARE_FILE "/usr/share/libiwinfo/hardware.txt"
struct iwinfo_ops { struct iwinfo_ops {

View file

@ -313,76 +313,6 @@ const struct iwinfo_iso3166_label IWINFO_ISO3166_NAMES[] = {
{ 0, "" } { 0, "" }
}; };
/*
* hardware database
*/
const char VENDOR_UBNT[] = "Ubiquiti";
const char VENDOR_ATH[] = "Atheros";
const char VENDOR_RALINK[] = "RaLink";
const struct iwinfo_hardware_entry IWINFO_HARDWARE_ENTRIES[] = {
/* { vendor, model, vendorid, deviceid, subsys vendorid, subsys deviceid, poweroff, freqoff } */
#if defined(USE_MADWIFI) || defined(USE_NL80211)
{ VENDOR_UBNT, "PowerStation2 (18V)", 0xffff, 0xffff, 0xffff, 0xb102, 0, 0 },
{ VENDOR_UBNT, "PowerStation2 (16D)", 0xffff, 0xffff, 0xffff, 0xb202, 0, 0 },
{ VENDOR_UBNT, "PowerStation2 (EXT)", 0xffff, 0xffff, 0xffff, 0xb302, 0, 0 },
{ VENDOR_UBNT, "PowerStation5 (22V)", 0xffff, 0xffff, 0xffff, 0xb105, 0, 0 },
{ VENDOR_UBNT, "PowerStation5 (EXT)", 0xffff, 0xffff, 0xffff, 0xb305, 0, 0 },
{ VENDOR_UBNT, "PicoStation2", 0xffff, 0xffff, 0xffff, 0xc302, 0, 0 },
{ VENDOR_UBNT, "PicoStation2 HP", 0xffff, 0xffff, 0xffff, 0xc3a2, 10, 0 },
{ VENDOR_UBNT, "WispStation5", 0xffff, 0xffff, 0xffff, 0xa105, 0, 0 },
{ VENDOR_UBNT, "LiteStation2", 0xffff, 0xffff, 0xffff, 0xa002, 10, 0 },
{ VENDOR_UBNT, "LiteStation5", 0xffff, 0xffff, 0xffff, 0xa005, 5, 0 },
{ VENDOR_UBNT, "NanoStation2", 0xffff, 0xffff, 0xffff, 0xc002, 10, 0 },
{ VENDOR_UBNT, "NanoStation5", 0xffff, 0xffff, 0xffff, 0xc005, 5, 0 },
{ VENDOR_UBNT, "NanoStation Loco2", 0xffff, 0xffff, 0xffff, 0xc102, 10, 0 },
{ VENDOR_UBNT, "NanoStation Loco5", 0xffff, 0xffff, 0xffff, 0xc105, 5, 0 },
{ VENDOR_UBNT, "Bullet2", 0xffff, 0xffff, 0xffff, 0xc202, 10, 0 },
{ VENDOR_UBNT, "Bullet5", 0xffff, 0xffff, 0xffff, 0xc205, 5, 0 },
{ VENDOR_UBNT, "XR2", 0x168c, 0x001b, 0x0777, 0x3002, 10, 0 },
{ VENDOR_UBNT, "XR2", 0x168c, 0x001b, 0x7777, 0x3002, 10, 0 },
{ VENDOR_UBNT, "XR2.3", 0x168c, 0x001b, 0x0777, 0x3b02, 10, 0 },
{ VENDOR_UBNT, "XR2.6", 0x168c, 0x001b, 0x0777, 0x3c02, 10, 0 },
{ VENDOR_UBNT, "XR3-2.8", 0x168c, 0x001b, 0x0777, 0x3b03, 10, 0 },
{ VENDOR_UBNT, "XR3-3.6", 0x168c, 0x001b, 0x0777, 0x3c03, 10, 0 },
{ VENDOR_UBNT, "XR3", 0x168c, 0x001b, 0x0777, 0x3003, 10, 0 },
{ VENDOR_UBNT, "XR4", 0x168c, 0x001b, 0x0777, 0x3004, 10, 0 },
{ VENDOR_UBNT, "XR5", 0x168c, 0x001b, 0x0777, 0x3005, 10, 0 },
{ VENDOR_UBNT, "XR5", 0x168c, 0x001b, 0x7777, 0x3005, 10, 0 },
{ VENDOR_UBNT, "XR7", 0x168c, 0x001b, 0x0777, 0x3007, 10, 0 },
{ VENDOR_UBNT, "XR9", 0x168c, 0x001b, 0x0777, 0x3009, 10, -1520 },
{ VENDOR_ATH, "AR5413", 0x168c, 0x001b, 0x168c, 0x2063, 0, 0 },
{ VENDOR_UBNT, "SRC", 0x168c, 0x0013, 0x168c, 0x1042, 1, 0 },
{ VENDOR_UBNT, "SR2", 0x168c, 0x0013, 0x0777, 0x2041, 10, 0 },
{ VENDOR_UBNT, "SR4", 0x168c, 0x0013, 0x0777, 0x2004, 6, 0 },
{ VENDOR_UBNT, "SR4", 0x168c, 0x0013, 0x7777, 0x2004, 6, 0 },
{ VENDOR_UBNT, "SR4C", 0x168c, 0x0013, 0x0777, 0x1004, 6, 0 },
{ VENDOR_UBNT, "SR4C", 0x168c, 0x0013, 0x7777, 0x1004, 6, 0 },
{ VENDOR_UBNT, "SR5", 0x168c, 0x0013, 0x168c, 0x2042, 7, 0 },
{ VENDOR_UBNT, "SR9", 0x168c, 0x0013, 0x7777, 0x2009, 12, -1500 },
{ VENDOR_UBNT, "SR71A", 0x168c, 0x0027, 0x168c, 0x2082, 7, 0 },
{ VENDOR_UBNT, "SR71", 0x168c, 0x0027, 0x0777, 0x4082, 7, 0 },
{ VENDOR_UBNT, "SR71-15", 0x168c, 0x0029, 0x0777, 0x4005, 7, 0 },
#endif
#ifdef USE_NL80211
{ VENDOR_UBNT, "PicoStation M2", 0x168c, 0x002a, 0x0777, 0xe302, 12, 0 }, /* ToDo: confirm offset */
{ VENDOR_UBNT, "NanoStation M2", 0x168c, 0x002a, 0x0777, 0xe012, 12, 0 }, /* ToDo: confirm offset */
{ VENDOR_UBNT, "NanoStation M5", 0x168c, 0x002a, 0x0777, 0xe005, 5, 0 }, /* ToDo: confirm offset */
{ VENDOR_UBNT, "Bullet M2", 0x168c, 0x002a, 0x0777, 0xe202, 12, 0 },
{ VENDOR_UBNT, "Bullet M5", 0x168c, 0x002a, 0x0777, 0xe805, 5, 0 },
{ VENDOR_ATH, "AR9220", 0x168c, 0x0029, 0x168c, 0xa094, 0, 0 },
{ VENDOR_ATH, "AR9223", 0x168c, 0x0029, 0x168c, 0xa095, 0, 0 },
{ VENDOR_ATH, "AR9280", 0x168c, 0x002a, 0x168c, 0xa093, 0, 0 },
{ VENDOR_ATH, "AR9285", 0x168c, 0x002b, 0x168c, 0xa091, 0, 0 },
{ VENDOR_RALINK, "Rt3050", 0x1814, 0x3050, 0x1814, 0x0005, 0, 0 },
{ VENDOR_RALINK, "Rt3052", 0x1814, 0x3052, 0x1814, 0x0008, 0, 0 },
{ VENDOR_RALINK, "Rt3352", 0x1814, 0x3352, 0x1814, 0x000c, 0, 0 },
#endif
{ NULL }
};
const char * iwinfo_type(const char *ifname) const char * iwinfo_type(const char *ifname)
{ {

View file

@ -129,27 +129,46 @@ void iwinfo_close(void)
struct iwinfo_hardware_entry * iwinfo_hardware(struct iwinfo_hardware_id *id) struct iwinfo_hardware_entry * iwinfo_hardware(struct iwinfo_hardware_id *id)
{ {
const struct iwinfo_hardware_entry *e; FILE *db;
char buf[256] = { 0 };
static struct iwinfo_hardware_entry e;
for (e = IWINFO_HARDWARE_ENTRIES; e->vendor_name; e++) if (!(db = fopen(IWINFO_HARDWARE_FILE, "r")))
return NULL;
while (fgets(buf, sizeof(buf) - 1, db) != NULL)
{ {
if ((e->vendor_id != 0xffff) && (e->vendor_id != id->vendor_id)) memset(&e, 0, sizeof(e));
if (sscanf(buf, "%hx %hx %hx %hx %hd %hd \"%63[^\"]\" \"%63[^\"]\"",
&e.vendor_id, &e.device_id,
&e.subsystem_vendor_id, &e.subsystem_device_id,
&e.txpower_offset, &e.frequency_offset,
e.vendor_name, e.device_name) < 8)
continue; continue;
if ((e->device_id != 0xffff) && (e->device_id != id->device_id)) if ((e.vendor_id != 0xffff) && (e.vendor_id != id->vendor_id))
continue; continue;
if ((e->subsystem_vendor_id != 0xffff) && if ((e.device_id != 0xffff) && (e.device_id != id->device_id))
(e->subsystem_vendor_id != id->subsystem_vendor_id))
continue; continue;
if ((e->subsystem_device_id != 0xffff) && if ((e.subsystem_vendor_id != 0xffff) &&
(e->subsystem_device_id != id->subsystem_device_id)) (e.subsystem_vendor_id != id->subsystem_vendor_id))
continue; continue;
return (struct iwinfo_hardware_entry *)e; if ((e.subsystem_device_id != 0xffff) &&
(e.subsystem_device_id != id->subsystem_device_id))
continue;
break;
} }
fclose(db);
if (e.device_name[0])
return &e;
return NULL; return NULL;
} }