iwinfo: move builtin hardware database to /usr/share/libiwinfo/hardware.txt
SVN-Revision: 36449
This commit is contained in:
parent
accc6e309e
commit
e02d373f90
4 changed files with 35 additions and 83 deletions
|
@ -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
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue