packages feed

usb-id-database 0.2.1 → 0.3

raw patch · 9 files changed

+211/−151 lines, 9 filesdep +binarydep −bimapdep −encodingdep −utf8-stringdep ~bytestring

Dependencies added: binary

Dependencies removed: bimap, encoding, utf8-string

Dependency ranges changed: bytestring

Files

System/USB/IDDB.hs view
@@ -6,43 +6,46 @@ Example usage:  @-import Data.ByteString.Char8 ('pack', 'unpack') import System.USB.IDDB-import System.USB.IDDB.LinuxUsbIdRepo-import Text.Printf+import System.USB.IDDB.LinuxUsbIdRepo (staticDb)+import Text.Printf (printf)  main :: IO () main = do -- Load a snapshot from the linux-usb.org database.           db <- 'staticDb'+@++@           -- Print the name of vendor 0x1d6b-          'putStrLn' $ 'maybe' \"unknown VID!\" 'unpack'+          putStrLn $ maybe \"unknown VID!\" id                    $ 'vendorName' db 0x1d6b @  @           -- Print the ID of \"Linux Foundation\"-          'putStrLn' $ 'maybe' \"unknown vendor name!\" ('printf' \"0x%04x\")-                   $ 'vendorId' db ('pack' "Linux Foundation")+          putStrLn $ maybe \"unknown vendor name!\" ('printf' \"0x%04x\")+                   $ 'vendorId' db \"Linux Foundation\" @  @           -- Print the name of the product with ID 0x0101 from the           -- vendor with ID 0x1d6b.-          'putStrLn' $ 'maybe' \"unknown PID!\" 'unpack'+          putStrLn $ maybe \"unknown PID!\" id                    $ 'productName' db 0x1d6b 0x0101 @  @           -- Print the ID of the product with the name \"Audio Gadget\"           -- from the vendor with ID 0x1d6b.-          'putStrLn' $ 'maybe' \"unknown product name!\" ('printf' \"0x%04x\")-                   $ 'productId' db 0x1d6b ('pack' \"Audio Gadget\")+          putStrLn $ maybe \"unknown product name!\" ('printf' \"0x%04x\")+                   $ 'productId' db 0x1d6b \"Audio Gadget\" @ -} module System.USB.IDDB     ( -- *Types       IDDB +    , ID,         Name     , VendorID,   VendorName     , ProductID,  ProductName     , ClassID,    ClassName
System/USB/IDDB/Base.hs view
@@ -3,7 +3,8 @@ module System.USB.IDDB.Base     ( IDDB(..) -    , VendorID,   VendorName,   VendorDB+    , ID,         Name+    , VendorID,   VendorName     , ProductID,  ProductName,  ProductDB     , ClassID,    ClassName,    ClassDB     , SubClassID, SubClassName, SubClassDB@@ -23,10 +24,10 @@     )     where -import Data.ByteString (ByteString)+import Data.Binary (Binary(..), Get) -import qualified Data.Bimap as BM-import qualified Data.Map   as MP+import qualified Data.IntMap as IM+import qualified Data.Map    as MP  #ifdef BUILD_WITH_CABAL import Paths_usb_id_database (getDataFileName)@@ -40,7 +41,7 @@ -------------------------------------------------------------------------------  type ID          = Int-type Name        = ByteString+type Name        = String  type VendorID    = ID type ProductID   = ID@@ -54,52 +55,77 @@ type SubClassName = Name type ProtocolName = Name -type VendorDB   = BM.Bimap VendorID VendorName-type ProductDB  = BM.Bimap ProductID ProductName-type ClassDB    = MP.Map ClassID (ClassName, SubClassDB)-type SubClassDB = MP.Map SubClassID (SubClassName, ProtocolDB)-type ProtocolDB = MP.Map ProtocolID ProtocolName+type ProductDB  = ( MP.Map ProductName ProductID+                  , IM.IntMap ProductName+                  )+type ClassDB    = IM.IntMap (ClassName, SubClassDB)+type SubClassDB = IM.IntMap (SubClassName, ProtocolDB)+type ProtocolDB = IM.IntMap ProtocolName  -- |A database of USB identifiers. Contains both vendor identifiers -- and product identifiers.-data IDDB = IDDB { dbVendors  :: VendorDB-                 , dbProducts :: MP.Map VendorID ProductDB-                 , dbClasses  :: ClassDB+data IDDB = IDDB { dbVendorNameId :: MP.Map VendorName VendorID+                 , dbVendorIdName :: IM.IntMap VendorName+                 , dbProducts     :: IM.IntMap ProductDB+                 , dbClasses      :: ClassDB                  } --- |An empty database./+-- |An empty database. emptyDb :: IDDB-emptyDb = IDDB { dbVendors  = BM.empty-               , dbProducts = MP.empty-               , dbClasses  = MP.empty+emptyDb = IDDB { dbVendorNameId = MP.empty+               , dbVendorIdName = IM.empty+               , dbProducts     = IM.empty+               , dbClasses      = IM.empty                }  -------------------------------------------------------------------------------+-- Binary serialisation+-------------------------------------------------------------------------------++instance Binary IDDB where+    put db = put ( dbVendorNameId db+                 , dbVendorIdName db+                 , dbProducts     db+                 , dbClasses      db+                 )++    get = do (a, b, c, d) <- get :: Get ( MP.Map VendorName VendorID+                                        , IM.IntMap VendorName+                                        , IM.IntMap ProductDB+                                        , ClassDB+                                        )+             return IDDB { dbVendorNameId = a+                         , dbVendorIdName = b+                         , dbProducts     = c+                         , dbClasses      = d+                         }++------------------------------------------------------------------------------- -- Query database -------------------------------------------------------------------------------  vendorName :: IDDB -> VendorID -> Maybe VendorName-vendorName db vid = BM.lookup vid $ dbVendors db+vendorName db vid = IM.lookup vid $ dbVendorIdName db  vendorId :: IDDB -> VendorName -> Maybe VendorID-vendorId db name = BM.lookupR name $ dbVendors db+vendorId db name = MP.lookup name $ dbVendorNameId db  productName :: IDDB -> VendorID -> ProductID -> Maybe ProductName-productName db vid pid = BM.lookup pid =<< MP.lookup vid (dbProducts db)+productName db vid pid = IM.lookup pid . snd =<< IM.lookup vid (dbProducts db)  productId :: IDDB -> VendorID -> ProductName -> Maybe ProductID-productId db vid name = BM.lookupR name =<< MP.lookup vid (dbProducts db)+productId db vid name = MP.lookup name . fst =<< IM.lookup vid (dbProducts db)  className :: IDDB -> ClassID -> Maybe ClassName-className db cid = fmap fst $ MP.lookup cid $ dbClasses db+className db cid = fmap fst . IM.lookup cid $ dbClasses db  subClassName :: IDDB -> ClassID -> SubClassID -> Maybe SubClassName-subClassName db cid scid = fmap fst $   MP.lookup scid . snd-                                    =<< MP.lookup cid (dbClasses db)+subClassName db cid scid = fmap fst $   IM.lookup scid . snd+                                    =<< IM.lookup cid (dbClasses db)  protocolName :: IDDB -> ClassID -> SubClassID -> ProtocolID -> Maybe ProtocolName-protocolName db cid scid protId =   MP.lookup protId . snd-                                =<< MP.lookup scid   . snd-                                =<< MP.lookup cid (dbClasses db)+protocolName db cid scid protId =   IM.lookup protId . snd+                                =<< IM.lookup scid   . snd+                                =<< IM.lookup cid (dbClasses db)  
System/USB/IDDB/LinuxUsbIdRepo.hs view
@@ -5,93 +5,89 @@     , fromWeb     ) where -import Control.Monad        (liftM)-import Data.Encoding        ( decodeStrictByteString-                            , encodeStrictByteString-                            )+import Control.Monad        (fmap) import Data.Maybe           (fromJust)-import Data.String.UTF8     (UTF8, fromRep)-import Network.Download     (openURI)+import Network.Download     (openURIString) import Numeric              (readHex) import Parsimony import Parsimony.Char       (char, hexDigit, spaces, tab)-import System.IO            (FilePath)+import System.IO            (FilePath, readFile) import System.USB.IDDB.Base-import System.USB.IDDB.Misc (BSParser, eitherMaybe, restOfLine)+import System.USB.IDDB.Misc (eitherMaybe, swap, restOfLine) -import qualified Codec.Binary.UTF8.String as UTF8 (encode)-import qualified Data.Bimap               as BM   (Bimap, fromList)-import qualified Data.ByteString          as BS   (ByteString, pack, readFile)-import qualified Data.Encoding.ISO88591   as Enc  (ISO88591(..))-import qualified Data.Encoding.UTF8       as Enc  (UTF8(..))-import qualified Data.Map                 as MP   (Map, fromList)+import qualified Data.IntMap as IM (IntMap, fromList)+import qualified Data.Map    as MP (Map,    fromList)   -- |Construct a database from a string in the format used by -- <http://linux-usb.org>.-parseDb :: UTF8 BS.ByteString -> Maybe IDDB+parseDb :: String -> Maybe IDDB parseDb = eitherMaybe . parse dbParser -dbParser :: BSParser IDDB+dbParser :: Parser String IDDB dbParser = do spaces               comments-              (vendorDB, productDB) <- lexeme vendorSection+              (vendorNameId, vendorIdName, productDB) <- lexeme vendorSection               comments               classDB <- classSection -              return IDDB { dbVendors  = vendorDB-                          , dbProducts = productDB-                          , dbClasses  = classDB+              return IDDB { dbVendorNameId = vendorNameId+                          , dbVendorIdName = vendorIdName+                          , dbProducts     = productDB+                          , dbClasses      = classDB                           }     where-      utf8BS :: String -> BS.ByteString-      utf8BS = BS.pack . UTF8.encode--      lexeme :: BSParser a -> BSParser a+      lexeme :: Parser String a -> Parser String a       lexeme p = do x <- p                     spaces                     return x -      comment :: BSParser String+      comment :: Parser String String       comment = char '#' >> restOfLine -      comments :: BSParser [String]+      comments :: Parser String [String]       comments = many $ lexeme comment -      hexId :: Num n => Int -> BSParser n+      hexId :: Num n => Int -> Parser String n       hexId d = do ds <- count d hexDigit                    case readHex ds of                      [(n, _)]  -> return n                      _         -> error "impossible" -      vendorSection :: BSParser (VendorDB, MP.Map VendorID ProductDB)+      vendorSection :: Parser String ( MP.Map VendorName VendorID+                                     , IM.IntMap VendorName+                                     , IM.IntMap ProductDB+                                     )       vendorSection = do xs <- lexeme $ many vendorParser-                         return ( BM.fromList [(vid, name) | (vid, name, _)   <- xs]-                                , MP.fromList [(vid, pdb)  | (vid, _,    pdb) <- xs]+                         return ( MP.fromList [(name, vid) | (vid, name, _)   <- xs]+                                , IM.fromList [(vid, name) | (vid, name, _)   <- xs]+                                , IM.fromList [(vid, pdb)  | (vid, _,    pdb) <- xs]                                 ) -      vendorParser :: BSParser (VendorID, VendorName, BM.Bimap ProductID ProductName)+      vendorParser :: Parser String (VendorID, VendorName, ProductDB)       vendorParser = do vid  <- hexId 4                         count 2 $ char ' '                         name <- restOfLine                         products <- many productParser                         return ( vid-                               , utf8BS name-                               , BM.fromList products+                               , name+                               , ( MP.fromList $ fmap swap products+                                 , IM.fromList products+                                 )                                ) -      productParser :: BSParser (ProductID, ProductName)+      productParser :: Parser String (ProductID, ProductName)       productParser = do tab                          pid  <- hexId 4                          count 2 $ char ' '                          name <- restOfLine-                         return (pid, utf8BS name)+                         return (pid, name) -      classSection :: BSParser ClassDB+      classSection :: Parser String ClassDB       classSection = do xs <- lexeme $ many classParser-                        return $ MP.fromList xs+                        return $ IM.fromList xs -      classParser :: BSParser (ClassID, (ClassName, SubClassDB))+      classParser :: Parser String (ClassID, (ClassName, SubClassDB))       classParser = do char 'C'                        char ' '                        cid  <- hexId 2@@ -99,42 +95,42 @@                        name <- restOfLine                        subClasses <- many subClassParser                        return ( cid-                              , (utf8BS name, MP.fromList subClasses)+                              , (name, IM.fromList subClasses)                               ) -      subClassParser :: BSParser (SubClassID, (SubClassName, ProtocolDB))+      subClassParser :: Parser String (SubClassID, (SubClassName, ProtocolDB))       subClassParser = do tab                           scid <- hexId 2                           count 2 $ char ' '                           name <- restOfLine                           protocols <- many (try protocolParser)                           return ( scid-                                 , (utf8BS name, MP.fromList protocols)+                                 , (name, IM.fromList protocols)                                  ) -      protocolParser :: BSParser (ProtocolID, ProtocolName)+      protocolParser :: Parser String (ProtocolID, ProtocolName)       protocolParser = do count 2 tab                           protId <- hexId 2                           count 2 $ char ' '                           name <- restOfLine-                          return (protId, utf8BS name)+                          return (protId, name)  -- |Construct a database from the data available at -- <http://linux-usb.org/usb.ids>. fromWeb :: IO (Maybe IDDB)-fromWeb = liftM ( either (const Nothing)-                                    (parseDb . fromRep . iso88591_to_utf8)-                           ) $ openURI dbURL+fromWeb = fmap ( either (const Nothing)+                        parseDb+               ) $ openURIString dbURL +-- |Load a vendor database from file. If the file can not be read for+-- some reason an error will be thrown. fromFile :: FilePath -> IO (Maybe IDDB)-fromFile = liftM (parseDb . fromRep . iso88591_to_utf8) . BS.readFile--iso88591_to_utf8 :: BS.ByteString -> BS.ByteString-iso88591_to_utf8 = encodeStrictByteString Enc.UTF8-                 . decodeStrictByteString Enc.ISO88591+fromFile = fmap parseDb . readFile +-- |Load a database from a snapshot of the linux-usb.org database which is+--  supplied with the package. staticDb :: IO IDDB-staticDb = getDataFileName staticDbPath >>= liftM fromJust . fromFile+staticDb = getDataFileName staticDbPath >>= fmap fromJust . fromFile  staticDbPath :: FilePath staticDbPath = "usb_id_repo_db.txt"
System/USB/IDDB/Misc.hs view
@@ -1,20 +1,19 @@ module System.USB.IDDB.Misc-    ( BSParser-    , eitherMaybe+    ( eitherMaybe+    , swap     , restOfLine     ) where -import Data.ByteString  (ByteString)-import Data.String.UTF8 (UTF8) import Parsimony        (Parser, manyTill) import Parsimony.Char   (anyChar, newline)  -type BSParser = Parser (UTF8 ByteString)-- eitherMaybe :: Either e a -> Maybe a eitherMaybe = either (const Nothing) Just -restOfLine :: BSParser String+swap :: (a, b) -> (b, a)+swap = uncurry $ flip (,)++restOfLine :: Parser String String restOfLine = manyTill anyChar newline+
System/USB/IDDB/UsbDotOrg.hs view
@@ -5,46 +5,47 @@     , fromWeb     ) where -import Control.Monad        (liftM)+import Control.Monad        (fmap) import Data.Maybe           (fromJust)-import Data.String.UTF8     (UTF8, fromRep)-import Network.Download     (openURI)+import Network.Download     (openURIString) import Parsimony import Parsimony.Char       (char, digit)-import System.IO            (FilePath)+import System.IO            (FilePath, readFile) import System.USB.IDDB.Base ( IDDB(..)                             , VendorID, VendorName                             , getDataFileName                             )-import System.USB.IDDB.Misc (BSParser, eitherMaybe, restOfLine)+import System.USB.IDDB.Misc ( eitherMaybe+                            , swap+                            , restOfLine+                            ) -import qualified Codec.Binary.UTF8.String as UTF8 (encode)-import qualified Data.Bimap               as BM   (fromList)-import qualified Data.ByteString          as BS   (ByteString, pack, readFile)-import qualified Data.Map                 as MP   (empty)+import qualified Data.IntMap as IM (fromList, empty)+import qualified Data.Map    as MP (fromList)   -- |Construct a database from a string in the format used by usb.org.-parseDb :: UTF8 BS.ByteString -> Maybe IDDB+parseDb :: String -> Maybe IDDB parseDb = eitherMaybe . parse staticDbParser -staticDbParser :: BSParser IDDB+staticDbParser :: Parser String IDDB staticDbParser = do vendors <- many vendorParser-                    return IDDB { dbVendors  = BM.fromList vendors-                                , dbProducts = MP.empty-                                , dbClasses  = MP.empty+                    return IDDB { dbVendorNameId = MP.fromList $ fmap swap vendors+                                , dbVendorIdName = IM.fromList vendors+                                , dbProducts = IM.empty+                                , dbClasses  = IM.empty                                 }     where-      vendorParser :: BSParser (VendorID, VendorName)+      vendorParser :: Parser String (VendorID, VendorName)       vendorParser = do vid  <- many1 digit                         char '|'                         name <- restOfLine-                        return (read vid, BS.pack $ UTF8.encode name)+                        return (read vid, name)  -- |Load a vendor database from file. If the file can not be read for --  some reason an error will be thrown. fromFile :: FilePath -> IO (Maybe IDDB)-fromFile = liftM (parseDb . fromRep) . BS.readFile+fromFile = fmap parseDb . readFile  -- |Construct a database from the list of companies available at --  <http://www.usb.org/developers/tools/comp_dump>. The website@@ -53,9 +54,9 @@ --  list seems to be quite stable. Using this function more than once --  a day is probably overkill. fromWeb :: IO (Maybe IDDB)-fromWeb = liftM ( either (const Nothing)-                                     (parseDb . fromRep)-                            ) $ openURI dbURL+fromWeb = fmap ( either (const Nothing)+                        parseDb+               ) $ openURIString dbURL  staticDbPath :: FilePath staticDbPath = "usb_dot_org_db.txt"@@ -66,4 +67,4 @@ -- |Load a database from a snapshot of the usb.org database which is --  supplied with the package. staticDb :: IO IDDB-staticDb = getDataFileName staticDbPath >>= liftM fromJust . fromFile+staticDb = getDataFileName staticDbPath >>= fmap fromJust . fromFile
example.hs view
@@ -1,9 +1,8 @@ module Main where -import Data.ByteString.Char8 (pack, unpack) import System.USB.IDDB-import System.USB.IDDB.LinuxUsbIdRepo-import Text.Printf+import System.USB.IDDB.LinuxUsbIdRepo (staticDb)+import Text.Printf (printf)   main :: IO ()@@ -11,19 +10,19 @@           db <- staticDb            -- Print the name of vendor 0x1d6b-          putStrLn $ maybe "unknown VID!" unpack+          putStrLn $ maybe "unknown VID!" id                    $ vendorName db 0x1d6b            -- Print the ID of "Linux Foundation"           putStrLn $ maybe "unknown vendor name!" (printf "0x%04x")-                   $ vendorId db (pack "Linux Foundation")+                   $ vendorId db "Linux Foundation"            -- Print the name of the product with ID 0x0101 from the           -- vendor with ID 0x1d6b.-          putStrLn $ maybe "unknown PID!" unpack+          putStrLn $ maybe "unknown PID!" id                    $ productName db 0x1d6b 0x0101            -- Print the ID of the product with the name "Audio Gadget"           -- from the vendor with ID 0x1d6b.           putStrLn $ maybe "unknown product name!" (printf "0x%04x")-                   $ productId db 0x1d6b (pack "Audio Gadget")+                   $ productId db 0x1d6b "Audio Gadget"
usb-id-database.cabal view
@@ -1,5 +1,5 @@ name:          usb-id-database-version:       0.2.1+version:       0.3 cabal-version: >=1.6 build-type:    Simple stability:     provisional@@ -22,15 +22,17 @@   description: Build an example program   default:     False +flag profile-example+  description: Enable profiling for the example program+  default:     False+ library-  build-depends: base        >= 3     && < 4.2-               , bimap       >= 0.2   && < 0.3-               , bytestring  >= 0.9   && < 1.0-               , containers  >= 0.2   && < 0.3-               , download    >= 0.3   && < 0.4-               , encoding    >= 0.6.2 && < 0.7-               , parsimony   >= 1     && < 1.1-               , utf8-string >= 0.3.5 && < 0.4+  build-depends: base        >= 3 && < 4.2+               , binary      == 0.5.*+               , bytestring  == 0.9.*+               , containers  == 0.2.*+               , download    == 0.3.*+               , parsimony   >= 1 && < 1.1   ghc-options: -Wall   cpp-options: -DBUILD_WITH_CABAL   exposed-modules: System.USB.IDDB@@ -42,10 +44,15 @@  executable example   extensions: CPP-  ghc-options: -Wall   cpp-options: -DBUILD_WITH_CABAL   main-is: example.hs+   if flag(example)     buildable: True   else     buildable: False++  if flag(profile-example)+    ghc-options: -Wall -prof -auto-all -caf-all -fforce-recomp+  else+    ghc-options: -Wall
usb_dot_org_db.txt view
@@ -1,4 +1,3 @@-1|Kavi-EVAL 1003|Atmel Corporation 1006|Mitsumi 1008|Hewlett Packard@@ -182,9 +181,11 @@ 1975|TIME Interconnect Ltd. 1988|Datafab Systems Inc. 1994|AVerMedia Technologies, Inc.+1996|Carry Computer Eng., Co., Ltd. 1999|Casio Computer Co., Ltd. 2001|D-Link Corp. 2010|Arasan Chip Systems Inc.+2015|David Electronics Company, Ltd. 2038|Circuit Assembly Corp. 2039|Century Corporation 2041|Dotop Technology, Inc.@@ -201,11 +202,11 @@ 2247|TAI TWUN ENTERPRISE CO., LTD. 2276|Pioneer Corporation 2278|Gemalto SA-2288|CardScan Inc. 2297|Wipro Technologies 2310|FARADAY Technology Corp. 2313|Audio-Technica Corp. 2316|Silicon Motion, Inc. - Taiwan+2334|Garmin International 2338|Dymo Corporation 2352|Toshiba Corporation 2362|Pixart Imaging, Inc.@@ -218,7 +219,6 @@ 2395|Medialogic Corporation 2438|Panasonic Electric Works Co., Ltd. 2468|Contech Research, Inc.-2472|Lin Shiung Enterprise Co., Ltd. 2475|Japan Cash Machine Co., Ltd. 2497|ARRIS International 2498|NISCA Corporation@@ -260,6 +260,7 @@ 2965|ASIX Electronics Corporation 2967|O2 Micro, Inc. 2996|HTC Corporation+3010|Seagate Technology LLC 3034|Realtek Semiconductor Corp. 3035|Ericsson AB 3044|Elka International Ltd.@@ -289,18 +290,18 @@ 3351|NALTEC, Inc. 3353|Hank Connection Industrial Co., Ltd. 3388|SRI CABLE TECHNOLOGY LTD.-3393|Ta Yun Terminals Industrial Co., Ltd.+3393|Ta Yun Electronic Technology Co., Ltd. 3402|NF Corporation 3403|Grape Systems Inc. 3409|Volex (Asia) Pte Ltd 3413|ASKA Technologies Inc. 3425|MEILU ELECTRONICS (SHENZHEN) CO., LTD. 3426|Darfon Electronics Corp.-3450|MARX CryptoTech LP 3452|Taiwan Line Tek Electronic Co., Ltd. 3463|Dolby Laboratories Inc. 3468|C-MEDIA ELECTRONICS INC. 3471|Pitney Bowes+3484|Chee Chen Hi-Technology Co., Ltd. 3495|IOGEAR, Inc. 3524|Macpower & Tytech Technology Co., LTD. 3525|SDK Co, Ltd.@@ -344,11 +345,13 @@ 4016|Haurtian Wire & Cable Co., Ltd. 4024|Wistron Corporation 4026|SAN SHING ELECTRONICS CO., LTD..+4027|Bitwise Systems, Inc. 4046|Sony Ericsson Mobile Communications AB 4087|CHI SHING COMPUTER ACCESSORIES CO., LTD. 4100|LG Electronics Inc. 4134|Newly Corporation 4168|Targus Group International+4172|AMCO TEC International Inc. 4183|ON Semiconductor 4184|Western Digital Technologies, Inc. 4185|Giesecke & Devrient GmbH@@ -388,7 +391,6 @@ 4756|RISO KAGAKU CORP. 4779|Honey Bee Electronic International Ltd. 4792|Zhejiang Xinya Electronic Technology Co., Ltd.-4813|Cables Unlimited 4818|LINE TECH INDUSTRIAL CO., LTD. 4823|Better Holdings (HK) Limited 4907|Konica Minolta Holdings, Inc.@@ -429,6 +431,7 @@ 5377|Pine-Tum Enterprise Co., Ltd. 5398|Skymedi Corporation 5404|VeriSilicon Holdings Co., Ltd.+5421|JMicron Technology Corp. 5422|HLDS (Hitachi-LG Data Storage, Inc.) 5440|Phihong Technology Co., Ltd. 5451|PNY Technologies Inc.@@ -490,7 +493,6 @@ 6397|FineArch Inc. 6420|Alco Digital Devices Limited 6421|Nordic Semiconductor ASA-6447|Avago Technologies, Pte. 6448|Shenzhen Xianhe Technology Co., Ltd. 6449|Ningbo Broad Telecommunication Co., Ltd. 6473|Lab126@@ -505,7 +507,6 @@ 6632|Industrial Technology Research Institute 6639|Pak Heng Technology (Shenzhen) Co., Ltd. 6666|USB-IF non-workshop-6693|Amphenol East Asia Ltd. 6709|Astec Power, a division of Emerson Network Power 6710|Biwin Technology Ltd. 6720|TERMINUS TECHNOLOGY INC.@@ -518,7 +519,7 @@ 6779|Lumberg Connect  GmbH 6795|SGS Taiwan Ltd. 6808|Leica Camera AG-6821|UBeacon Technologies, Inc.+6809|Asia Tai Technology (Dongguan) Co., Ltd. 6822|eFortune Technology Corp. 6830|Johnson Component & Equipments Co., Ltd. 6859|Salcomp Plc@@ -531,6 +532,7 @@ 6946|WiLinx Corp. 6962|Ugobe, Inc. 6984|Plastron Precision Co., Ltd.+7001|K.S. Terminals Inc. 7002|Chao Zhou Kai Yuan Electric Co., Ltd. 7013|The Hong Kong Standards and Testing Centre Ltd. 7046|Dongguan Guanshang Electronics Co., Ltd.@@ -548,16 +550,16 @@ 7184|Lanterra Industrial Co., Ltd. 7202|ZHONGSHAN CHIANG YU ELECTRIC CO., LTD. 7207|SHENZHEN D&S INDUSTRIES LIMITED+7217|LS Mtron 7229|NONIN MEDICAL INC. 7275|Philips & Lite-ON Digital Solutions Corporation 7288|Mindray DS USA, Inc.-7291|LUXSHARE PRECISION INDUSTRY (SHENZHEN) CO., LTD. 7310|ASTRON INTERNATIONAL CORP. 7320|ALPINE ELECTRONICS, INC. 7329|Symwave, Inc. 7347|Aces Electronic Co., Ltd. 7348|OPEX CORPORATION-7358|Luminary Micro Inc.+7358|Texas Instruments - Stellaris 7359|FORTAT SKYMARK INDUSTRIAL COMPANY 7360|PlantSense 7370|NextWave Broadband Inc.@@ -572,6 +574,7 @@ 7490|DRAGON JOY LIMITED 7491|Montage Technology, Inc. 7493|Qisda Corporation+7496|Shenzhen XinYonghui Precise Technology Co., Ltd. 7497|SHENZHEN LINKCONN ELECTRONICS CO., LTD. 7501|Pegatron Corporation 7502|INPHI CORPORATION@@ -612,12 +615,9 @@ 7863|WIN WIN PRECISION INDUSTRIAL CO., LTD. 7881|MOSER BAER INDIA LIMITED 7899|BLACKMAGIC DESIGN PTY.-7910|SHENZHEN EVERWIN PRECISION TECHNOLOGY CO., LTD. 7911|EPCOS 7912|ONDA COMMUNICATION S.p.a. 7913|PC PARTNER LIMITED-7923|JIANGXI SHIP ELECTRONICS CO., LTD.-7924|TATA ELXSI LTD. 7936|YUEQING ZHONGLI COMPUTER ELECTRONICS CO., LTD. 7950|Inflexis Corporation 7951|Action Technology (SZ) Co., Ltd.@@ -694,4 +694,7 @@ 8439|SOFTHARD Technology Ltd. 8446|Elektrobit Inc. 8448|RT Systems Inc.+8457|VIA Labs, Inc.+8469|Alliance Material Co., Ltd.+8470|KT Tech Inc. 8888|Motorola MDS
usb_id_repo_db.txt view
@@ -9,8 +9,8 @@ #	The latest version can be obtained from #		http://www.linux-usb.org/usb.ids #-# Version: 2009.08.25-# Date:    2009-08-25 20:34:02+# Version: 2009.09.17+# Date:    2009-09-17 20:34:02 #  # Vendors, devices and interfaces. Please keep sorted.@@ -870,6 +870,7 @@ 	00d8  WLI-U2-SG54HP 	00d9  WLI-U2-G54HP 	00da  WLI-U2-KG54L 802.11bg+	0157  Buffalo External Hard Drive HD-PEU2 0412  Award Software International 0413  Leadtek Research, Inc. 	1310  WinFast TV - NTSC + FM@@ -1957,6 +1958,7 @@ 	0a02  Premium Stereo USB Headset 350 	0a03  Logitech USB Microphone 	0a04  V20 portable speakers (USB powered)+	0a13  Z-5 Speakers 	0b02  BT Mini-Receiver (HID proxy mode) 	8801  Video Camera 	b305  BT Mini-Receiver@@ -2680,6 +2682,7 @@ 	10a8  iP6220D 	10a9  iP6600D 	10b6  PIXMA iP4300 Printer+	10c2  PIXMA iP1800 Printer 	1404  W6400PG 	1405  W8400PG 	150f  BIJ2350 PCL@@ -4040,6 +4043,7 @@ 	0004  Direct Connect 	0012  F8T012 Bluetooth Adapter 	0013  F8T013 Bluetooth Adapter+	0017  B8T017 Bluetooth+EDR 2.1 	0050  F5D6050 802.11b Wireless Adapter 	0081  F8T001v2 Bluetooth 	0083  Bluetooth Device@@ -4563,6 +4567,7 @@ 	0010  Graphire 	0011  Graphire 2 	0013  Graphire 3 4x5+	0017  Bamboo Fun 	0020  Intuos 4x5 	0021  Intuos 6x8 	0022  Intuos 9x12@@ -4994,6 +4999,7 @@ 	017c  HDD/1394B 	0251  Optical 	0252  Optical+	0470  Prestige Portable Hard Drive 	1052  DVD+RW External Drive 059c  A-Trend Technology Co., Ltd 059d  Advanced Input Devices@@ -5670,6 +5676,7 @@ 0642  VIA Medical Corp. 0644  TEAC Corp. 	0000  Floppy+	0200  All-In-One Multi-Card Reader CA200/B/S 	1000  CD-ROM Drive 	800d  TASCAM Portastudio DP-01FX 	d001  CD-R/RW Unit@@ -5694,7 +5701,9 @@ 064e  Suyin Corp. 	a100  Acer OrbiCam 	a101  Acer CrystalEye Webcam+	a102  Lenovo Webcam 	a110  HP Webcam+	c107  HP webcam [dv6-1190en] 	d101  Acer CrystalEye Webcam 064f  WIBU-Systems AG 	0bd7  BOX/U@@ -7018,6 +7027,7 @@ 	0002  AVerTV PVR USB/EZMaker Pro Device 	0026  AVerTV 	1228  MPEG-2 Capture Device (M038)+	a309  HP DVB-T TV Tuner [HP dv6-1190en] 	e880  MPEG-2 Capture Device (E880) 	e882  MPEG-2 Capture Device (E882) 07cb  Kingmax Technology, Inc.@@ -7164,6 +7174,7 @@ 	0002  Cash Drawer I/F 07ef  STSN 	0001  Internet Access Device+07f2  Microcomputer Applications, Inc. 07f6  Circuit Assembly Corp. 07f7  Century Corp. 	0005  ScanLogic/Century Corporation uATA@@ -7618,6 +7629,7 @@ 	0030  TravelDrive 	0822  TravelDrive 2C 	0832  Hi-Speed Mass Storage Device+	0834  M-Disk 220 	0998  Kingston Data Traveler2.0 Disk Driver 	0999  Kingston Data Traveler2.0 Disk Driver 	1000  TravelDrive 2C@@ -8266,6 +8278,7 @@ 	2123  Bluetooth dongle 	2130  2045 Bluetooth 2.0 USB-UHE Device with trace filter 	2131  2045 Bluetooth 2.0 Device with trace filter+	2150  BCM2046 Bluetooth Device 	4500  BCM2046B1 USB 2.0 Hub (part of BCM2046 Bluetooth) 	4502  Keyboard (Boot Interface Subclass) 	5800  BCM5880 Secure Applications Processor@@ -8893,7 +8906,7 @@ 	0153  Mass Storage Device 	0156  Mass Storage Device 	0157  Mass Storage Device-	0158  Mass Storage Device+	0158  USB 2.0 multicard reader 	0161  Mass Storage Device 	0168  Mass Storage Device 	0169  Mass Storage Device@@ -9726,6 +9739,7 @@ 	0004  Virtual CCID 	0005  Virtual Mass Storage 	0006  Virtual Keyboard+	f80a  Smoker FX2 0e16  JMTek, LLC 0e17  Walex Electronic, Ltd 0e1b  Crewave@@ -10638,6 +10652,8 @@ 134e  Digby's Bitpile, Inc. DBA D Bit 1357  P&E Microcomputer Systems 	0503  USB-ML-12 HCS08/HCS12 Multilink+1366  SEGGER+	0101  J-Link ARM 136b  STEC 1370  Swissbit 	0323  Swissmemory cirrusWHITE@@ -11235,6 +11251,8 @@ 1772  System Level Solutions, Inc. 1776  Arowana 	501c  300K CMOS Camera+177f  Sweex+	0313  LW313 802.11n Adapter [ralink rt2770 + rt2720] 1781  Multiple Vendors 	083e  MetaGeek Wi-Spy 	0938  Iguanaworks USB IR Transceiver@@ -11362,6 +11380,7 @@ 19d2  ONDA Communication S.p.A. 	0002  ET502HS/MT505UP ZTE MF632 	0031  ZTE MF636+	0064  ZTE MF627 AU 	2000  ZTE MF627/MF628/MF628+ HSDPA 19e1  WeiDuan Electronic Accessory (S.Z.) Co., Ltd. 19e8  Industrial Technology Research Institute@@ -11552,6 +11571,7 @@ 1bc5  AVIXE Technology (China) Ltd. 1bce  Contac Cable Industrial Limited 1bcf  Sunplus Innovation Technology Inc.+	0007  Optical Mouse 1bd0  Hangzhou Riyue Electronic Co., Ltd. 1bde  P-TWO INDUSTRIES, INC. 1bef  Shenzhen Tongyuan Network-Communication Cables Co., Ltd@@ -11637,6 +11657,7 @@ 1e68  TrekStor GmbH & Co. KG 	001b  DataStation maxi g.u 1ebb  NuCORE Technology, Inc.+1f28  Cal-Comp 2001  D-Link Corp. [hex] 	0001  DWL-120 WIRELESS ADAPTER 	0201  DHN-120 10Mb Home Phoneline Adapter@@ -11720,6 +11741,8 @@ 2222  MacAlly 	0004  iWebKey Keyboard 	4050  AirStick joystick+2227  SAMWOO Enterprise+	3105  SKYDATA SKD-U100 2233  RadioShack Corporation 	6323  USB Electronic Scale 22b8  Motorola PCS@@ -12198,6 +12221,9 @@ 	2000  Flashdisk 9016  Sitecom 	182d  WL-022 802.11b Adapter+9148  GeoLab, Ltd+# All of GeoLab's devices share the same ID 0004.+	0004  R3 Compatible Device 9710  MosChip Semiconductor 	7703  MCS7703 Serial Port Adapter 	7705  Printer cable