mirror of
https://review.haiku-os.org/haiku
synced 2025-02-01 03:06:08 +01:00
usb_serial: clean up usb device identification
* Update FTDI, KLSI, Prolific, and Silicon drivers to share a common structural layout for device identification. * More flexible and cleaner than massive switch case statements. * Avoids the problem of different chipsets from identical vendors.
This commit is contained in:
parent
667fd4d0ea
commit
5ba5e31f8a
@ -4,10 +4,16 @@
|
||||
*
|
||||
* Copyright (c) 2003 by Siarzhuk Zharski <imker@gmx.li>
|
||||
* Distributed under the terms of the MIT License.
|
||||
*
|
||||
* Authors:
|
||||
* Alexander von Gluck IV, kallisti5@unixzen.com
|
||||
*/
|
||||
|
||||
|
||||
#include "FTDI.h"
|
||||
#include "FTDIRegs.h"
|
||||
|
||||
|
||||
FTDIDevice::FTDIDevice(usb_device device, uint16 vendorID, uint16 productID,
|
||||
const char *description)
|
||||
: SerialDevice(device, vendorID, productID, description),
|
||||
@ -46,7 +52,7 @@ FTDIDevice::AddDevice(const usb_configuration_info *config)
|
||||
}
|
||||
|
||||
if (pipesSet >= 3) {
|
||||
if (ProductID() == PRODUCT_FTDI_8U100AX)
|
||||
if (ProductID() == 0x8372) // AU100AX
|
||||
fHeaderLength = 1;
|
||||
else
|
||||
fHeaderLength = 0;
|
||||
@ -84,7 +90,8 @@ FTDIDevice::SetLineCoding(usb_cdc_line_coding *lineCoding)
|
||||
lineCoding->databits);
|
||||
|
||||
int32 rate = 0;
|
||||
if (ProductID() == PRODUCT_FTDI_8U100AX) {
|
||||
if (ProductID() == 0x8372) {
|
||||
// AU100AX
|
||||
switch (lineCoding->speed) {
|
||||
case 300: rate = ftdi_sio_b300; break;
|
||||
case 600: rate = ftdi_sio_b600; break;
|
||||
|
@ -4,16 +4,24 @@
|
||||
*
|
||||
* Copyright (c) 2003 by Siarzhuk Zharski <imker@gmx.li>
|
||||
* Distributed under the terms of the MIT License.
|
||||
*
|
||||
* Authors:
|
||||
* Alexander von Gluck IV, kallisti5@unixzen.com
|
||||
*/
|
||||
#ifndef _USB_FTDI_H_
|
||||
#define _USB_FTDI_H_
|
||||
|
||||
|
||||
#include "SerialDevice.h"
|
||||
|
||||
|
||||
/* supported vendor and product ids */
|
||||
#define VENDOR_FTDI 0x0403
|
||||
#define PRODUCT_FTDI_8U100AX 0x8372
|
||||
#define PRODUCT_FTDI_8U232AM 0x6001
|
||||
#define VENDOR_FTDI 0x0403
|
||||
|
||||
const usb_serial_device kFTDIDevices[] = {
|
||||
{VENDOR_FTDI, 0x8372, "FTDI 8U100AX serial converter"},
|
||||
{VENDOR_FTDI, 0x6001, "FTDI 8U232AM serial converter"}
|
||||
};
|
||||
|
||||
#define FTDI_BUFFER_SIZE 64
|
||||
|
||||
@ -40,4 +48,5 @@ private:
|
||||
uint8 fStatusLSR;
|
||||
};
|
||||
|
||||
|
||||
#endif //_USB_FTDI_H_
|
||||
|
@ -8,13 +8,19 @@
|
||||
#ifndef _USB_KLSI_H_
|
||||
#define _USB_KLSI_H_
|
||||
|
||||
|
||||
#include "SerialDevice.h"
|
||||
|
||||
|
||||
/* supported vendor and product ids */
|
||||
#define VENDOR_PALM 0x0830
|
||||
#define VENDOR_KLSI 0x05e9
|
||||
#define PRODUCT_PALM_CONNECT 0x0080
|
||||
#define PRODUCT_KLSI_KL5KUSB105D 0x00c0
|
||||
#define VENDOR_PALM 0x0830
|
||||
#define VENDOR_KLSI 0x05e9
|
||||
|
||||
const usb_serial_device kKLSIDevices[] = {
|
||||
{VENDOR_PALM, 0x0080, "PalmConnect RS232"},
|
||||
{VENDOR_KLSI, 0x00c0, "KLSI KL5KUSB105D"}
|
||||
};
|
||||
|
||||
|
||||
/* protocol defines */
|
||||
#define KLSI_SET_REQUEST 0x01
|
||||
@ -58,4 +64,5 @@ virtual void OnWrite(const char *buffer, size_t *numBytes,
|
||||
virtual void OnClose();
|
||||
};
|
||||
|
||||
|
||||
#endif //_USB_KLSI_H_
|
||||
|
@ -4,36 +4,43 @@
|
||||
*
|
||||
* Copyright (c) 2003-2004 by Siarzhuk Zharski <imker@gmx.li>
|
||||
* Distributed under the terms of the MIT License.
|
||||
*
|
||||
* Authors:
|
||||
* Alexander von Gluck IV, kallisti5@unixzen.com
|
||||
*/
|
||||
#ifndef _USB_PROLIFIC_H_
|
||||
#define _USB_PROLIFIC_H_
|
||||
|
||||
|
||||
#include "ACM.h"
|
||||
|
||||
|
||||
/* supported vendor and product ids */
|
||||
#define VENDOR_PROLIFIC 0x067b
|
||||
#define VENDOR_IODATA 0x04bb
|
||||
#define VENDOR_ATEN 0x0557
|
||||
#define VENDOR_TDK 0x04bf
|
||||
#define VENDOR_RATOC 0x0584
|
||||
#define VENDOR_ELECOM 0x056e
|
||||
#define VENDOR_SOURCENEXT 0x0833
|
||||
#define VENDOR_HAL 0x0b41
|
||||
#define VENDOR_HAL 0x0b41
|
||||
#define VENDOR_IODATA 0x04bb
|
||||
#define VENDOR_RATOC 0x0584
|
||||
#define VENDOR_SOURCENEXT 0x0833
|
||||
#define VENDOR_TDK 0x04bf
|
||||
|
||||
const usb_serial_device kProlificDevices[] = {
|
||||
{VENDOR_PROLIFIC, 0x04bb, "PL2303 Serial adapter (IODATA USB-RSAQ2)"},
|
||||
{VENDOR_PROLIFIC, 0x2303, "PL2303 Serial adapter (ATEN/IOGEAR UC232A)"},
|
||||
{VENDOR_ATEN, 0x2008, "Aten Serial adapter"},
|
||||
{VENDOR_ELECOM, 0x5003, "Elecom UC-SGT"},
|
||||
{VENDOR_HAL, 0x0011, "HAL Corporation Crossam2+USB"},
|
||||
{VENDOR_IODATA, 0x0a03, "I/O Data USB serial adapter USB-RSAQ1"},
|
||||
{VENDOR_RATOC, 0xb000, "Ratoc USB serial adapter REX-USB60"},
|
||||
{VENDOR_SOURCENEXT, 0x039f, "SOURCENEXT KeikaiDenwa 8"},
|
||||
{VENDOR_SOURCENEXT, 0x039f, "SOURCENEXT KeikaiDenwa 8 with charger"},
|
||||
{VENDOR_TDK, 0x0117, "TDK USB-PHS Adapter UHA6400"}
|
||||
};
|
||||
|
||||
#define PRODUCT_IODATA_USBRSAQ 0x0a03
|
||||
#define PRODUCT_PROLIFIC_RSAQ2 0x04bb
|
||||
#define PRODUCT_ATEN_UC232A 0x2008
|
||||
#define PRODUCT_PROLIFIC_PL2303 0x2303
|
||||
#define PRODUCT_TDK_UHA6400 0x0117
|
||||
#define PRODUCT_RATOC_REXUSB60 0xb000
|
||||
#define PRODUCT_ELECOM_UCSGT 0x5003
|
||||
#define PRODUCT_SOURCENEXT_KEIKAI8 0x039f
|
||||
#define PRODUCT_SOURCENEXT_KEIKAI8_CHG 0x012e
|
||||
#define PRODUCT_HAL_IMR001 0x0011
|
||||
|
||||
/* protocol defines */
|
||||
#define PROLIFIC_SET_REQUEST 0x01
|
||||
|
||||
#define PROLIFIC_BUF_SIZE 256
|
||||
|
||||
struct request_item;
|
||||
@ -55,4 +62,5 @@ private:
|
||||
bool fIsHX;
|
||||
};
|
||||
|
||||
|
||||
#endif //_USB_PROLIFIC_H_
|
||||
|
@ -4,7 +4,12 @@
|
||||
*
|
||||
* Copyright (c) 2003 by Siarzhuk Zharski <imker@gmx.li>
|
||||
* Distributed under the terms of the MIT License.
|
||||
*
|
||||
* Authors:
|
||||
* Alexander von Gluck IV, kallisti5@unixzen.com
|
||||
*/
|
||||
|
||||
|
||||
#include <new>
|
||||
|
||||
#include "SerialDevice.h"
|
||||
@ -714,451 +719,47 @@ SerialDevice *
|
||||
SerialDevice::MakeDevice(usb_device device, uint16 vendorID,
|
||||
uint16 productID)
|
||||
{
|
||||
const char *description = NULL;
|
||||
|
||||
switch (vendorID) {
|
||||
case VENDOR_IODATA:
|
||||
case VENDOR_ATEN:
|
||||
case VENDOR_TDK:
|
||||
case VENDOR_RATOC:
|
||||
case VENDOR_PROLIFIC:
|
||||
case VENDOR_ELECOM:
|
||||
case VENDOR_SOURCENEXT:
|
||||
case VENDOR_HAL:
|
||||
{
|
||||
switch (productID) {
|
||||
case PRODUCT_PROLIFIC_RSAQ2:
|
||||
description = "PL2303 Serial adapter (IODATA USB-RSAQ2)";
|
||||
break;
|
||||
case PRODUCT_IODATA_USBRSAQ:
|
||||
description = "I/O Data USB serial adapter USB-RSAQ1";
|
||||
break;
|
||||
case PRODUCT_ATEN_UC232A:
|
||||
description = "Aten Serial adapter";
|
||||
break;
|
||||
case PRODUCT_TDK_UHA6400:
|
||||
description = "TDK USB-PHS Adapter UHA6400";
|
||||
break;
|
||||
case PRODUCT_RATOC_REXUSB60:
|
||||
description = "Ratoc USB serial adapter REX-USB60";
|
||||
break;
|
||||
case PRODUCT_PROLIFIC_PL2303:
|
||||
description = "PL2303 Serial adapter (ATEN/IOGEAR UC232A)";
|
||||
break;
|
||||
case PRODUCT_ELECOM_UCSGT:
|
||||
description = "Elecom UC-SGT";
|
||||
break;
|
||||
case PRODUCT_SOURCENEXT_KEIKAI8:
|
||||
description = "SOURCENEXT KeikaiDenwa 8";
|
||||
break;
|
||||
case PRODUCT_SOURCENEXT_KEIKAI8_CHG:
|
||||
description = "SOURCENEXT KeikaiDenwa 8 with charger";
|
||||
break;
|
||||
case PRODUCT_HAL_IMR001:
|
||||
description = "HAL Corporation Crossam2+USB";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description == NULL)
|
||||
break;
|
||||
|
||||
return new(std::nothrow) ProlificDevice(device, vendorID, productID,
|
||||
description);
|
||||
// FTDI Serial Device
|
||||
for (uint32 i = 0; i < sizeof(kFTDIDevices)
|
||||
/ sizeof(kFTDIDevices[0]); i++) {
|
||||
if (vendorID == kFTDIDevices[i].vendorID
|
||||
&& productID == kFTDIDevices[i].productID) {
|
||||
return new(std::nothrow) FTDIDevice(device, vendorID, productID,
|
||||
kFTDIDevices[i].deviceName);
|
||||
}
|
||||
|
||||
case VENDOR_FTDI:
|
||||
{
|
||||
switch (productID) {
|
||||
case PRODUCT_FTDI_8U100AX:
|
||||
description = "FTDI 8U100AX serial converter";
|
||||
break;
|
||||
case PRODUCT_FTDI_8U232AM:
|
||||
description = "FTDI 8U232AM serial converter";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description == NULL)
|
||||
break;
|
||||
|
||||
return new(std::nothrow) FTDIDevice(device, vendorID, productID,
|
||||
description);
|
||||
}
|
||||
|
||||
case VENDOR_PALM:
|
||||
case VENDOR_KLSI:
|
||||
{
|
||||
switch (productID) {
|
||||
case PRODUCT_PALM_CONNECT:
|
||||
description = "PalmConnect RS232";
|
||||
break;
|
||||
case PRODUCT_KLSI_KL5KUSB105D:
|
||||
description = "KLSI KL5KUSB105D";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description == NULL)
|
||||
break;
|
||||
|
||||
return new(std::nothrow) KLSIDevice(device, vendorID, productID,
|
||||
description);
|
||||
}
|
||||
|
||||
case VENDOR_RENESAS:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0x0053:
|
||||
description = "Renesas RX610 RX-Stick";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_AKATOM:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0x066A:
|
||||
description = "AKTAKOM ACE-1001";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_PIRELLI:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0xE000:
|
||||
case 0xE003:
|
||||
description = "Pirelli DP-L10 GSM Mobile";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_CYPHERLAB:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0x1000:
|
||||
description = "Cipherlab CCD Barcode Scanner";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_GEMALTO:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0x5501:
|
||||
description = "Gemalto contactless smartcard reader";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_DIGIANSWER:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0x000A:
|
||||
description = "Digianswer ZigBee MAC device";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_MEI:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0x1100:
|
||||
case 0x1101:
|
||||
description = "MEI Acceptor";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_DYNASTREAM:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0x1003:
|
||||
case 0x1004:
|
||||
case 0x1006:
|
||||
description = "Dynastream ANT development board";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_KNOCKOFF:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0xAA26:
|
||||
description = "Knock-off DCU-11";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_SIEMENS:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0x10C5:
|
||||
description = "Siemens MC60";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_NOKIA:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0xAC70:
|
||||
description = "Nokia CA-42";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_SILICON:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0x0F91:
|
||||
case 0x1101:
|
||||
case 0x1601:
|
||||
case 0x800A:
|
||||
case 0x803B:
|
||||
case 0x8044:
|
||||
case 0x804E:
|
||||
case 0x8053:
|
||||
case 0x8054:
|
||||
case 0x8066:
|
||||
case 0x806F:
|
||||
case 0x807A:
|
||||
case 0x80CA:
|
||||
case 0x80DD:
|
||||
case 0x80F6:
|
||||
case 0x8115:
|
||||
case 0x813D:
|
||||
case 0x813F:
|
||||
case 0x814A:
|
||||
case 0x814B:
|
||||
case 0x8156:
|
||||
case 0x815E:
|
||||
case 0x818B:
|
||||
case 0x819F:
|
||||
case 0x81A6:
|
||||
case 0x81AC:
|
||||
case 0x81AD:
|
||||
case 0x81C8:
|
||||
case 0x81E2:
|
||||
case 0x81E7:
|
||||
case 0x81E8:
|
||||
case 0x81F2:
|
||||
case 0x8218:
|
||||
case 0x822B:
|
||||
case 0x826B:
|
||||
case 0x8293:
|
||||
case 0x82F9:
|
||||
case 0x8341:
|
||||
case 0x8382:
|
||||
case 0x83A8:
|
||||
case 0x83D8:
|
||||
case 0x8411:
|
||||
case 0x8418:
|
||||
case 0x846E:
|
||||
case 0x8477:
|
||||
case 0x85EA:
|
||||
case 0x85EB:
|
||||
case 0x8664:
|
||||
case 0x8665:
|
||||
case 0xEA60:
|
||||
case 0xEA61:
|
||||
case 0xEA71:
|
||||
case 0xF001:
|
||||
case 0xF002:
|
||||
case 0xF003:
|
||||
case 0xF004:
|
||||
description = "Silicon Labs CP210x USB UART converter";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_SILICON2:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0xEA61:
|
||||
description = "Silicon Labs GPRS USB Modem";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_SILICON3:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0xEA6A:
|
||||
description = "Silicon Labs GPRS USB Modem 100EU";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_BALTECH:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0x9999:
|
||||
description = "Balteck card reader";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_OWEN:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0x0004:
|
||||
description = "Owen AC4 USB-RS485 Converter";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_CLIPSAL:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0x0303:
|
||||
description = "Clipsal 5500PCU C-Bus USB interface";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_JABLOTRON:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0x0001:
|
||||
description = "Jablotron serial interface";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_WIENER:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0x0010:
|
||||
case 0x0011:
|
||||
case 0x0012:
|
||||
case 0x0015:
|
||||
description = "W-IE-NE-R Plein & Baus GmbH device";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_WAVESENSE:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0xAAAA:
|
||||
description = "Wavesense Jazz blood glucose meter";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_VAISALA:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0x0200:
|
||||
description = "Vaisala USB instrument";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_ELV:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0xE00F:
|
||||
description = "ELV USB I²C interface";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_WAGO:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0x07A6:
|
||||
description = "WAGO 750-923 USB Service";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
case VENDOR_DW700:
|
||||
{
|
||||
switch (productID) {
|
||||
case 0x9500:
|
||||
description = "DW700 GPS USB interface";
|
||||
break;
|
||||
}
|
||||
|
||||
if (description != NULL)
|
||||
goto SILICON;
|
||||
break;
|
||||
}
|
||||
|
||||
SILICON:
|
||||
return new(std::nothrow) SiliconDevice(device, vendorID, productID,
|
||||
description);
|
||||
}
|
||||
|
||||
// KLSI Serial Device
|
||||
for (uint32 i = 0; i < sizeof(kKLSIDevices)
|
||||
/ sizeof(kKLSIDevices[0]); i++) {
|
||||
if (vendorID == kKLSIDevices[i].vendorID
|
||||
&& productID == kKLSIDevices[i].productID) {
|
||||
return new(std::nothrow) KLSIDevice(device, vendorID, productID,
|
||||
kKLSIDevices[i].deviceName);
|
||||
}
|
||||
}
|
||||
|
||||
// Prolific Serial Device
|
||||
for (uint32 i = 0; i < sizeof(kProlificDevices)
|
||||
/ sizeof(kProlificDevices[0]); i++) {
|
||||
if (vendorID == kProlificDevices[i].vendorID
|
||||
&& productID == kProlificDevices[i].productID) {
|
||||
return new(std::nothrow) ProlificDevice(device, vendorID, productID,
|
||||
kProlificDevices[i].deviceName);
|
||||
}
|
||||
}
|
||||
|
||||
// Silicon Serial Device
|
||||
for (uint32 i = 0; i < sizeof(kSiliconDevices)
|
||||
/ sizeof(kSiliconDevices[0]); i++) {
|
||||
if (vendorID == kSiliconDevices[i].vendorID
|
||||
&& productID == kSiliconDevices[i].productID) {
|
||||
return new(std::nothrow) SiliconDevice(device, vendorID, productID,
|
||||
kSiliconDevices[i].deviceName);
|
||||
}
|
||||
}
|
||||
|
||||
// Otherwise, return standard ACM device
|
||||
return new(std::nothrow) ACMDevice(device, vendorID, productID,
|
||||
"CDC ACM compatible device");
|
||||
}
|
||||
|
@ -4,12 +4,24 @@
|
||||
*
|
||||
* Copyright (c) 2003 by Siarzhuk Zharski <imker@gmx.li>
|
||||
* Distributed under the terms of the MIT License.
|
||||
*
|
||||
* Authors:
|
||||
* Alexander von Gluck IV, kallisti5@unixzen.com
|
||||
*/
|
||||
#ifndef _USB_DEVICE_H_
|
||||
#define _USB_DEVICE_H_
|
||||
|
||||
|
||||
#include "Driver.h"
|
||||
|
||||
|
||||
struct usb_serial_device {
|
||||
uint32 vendorID;
|
||||
uint32 productID;
|
||||
const char* deviceName;
|
||||
};
|
||||
|
||||
|
||||
class SerialDevice {
|
||||
public:
|
||||
SerialDevice(usb_device device,
|
||||
|
@ -1,6 +1,9 @@
|
||||
/*
|
||||
* Copyright 2011, Adrien Destugues <pulkomandy@pulkomandy.ath.cx>
|
||||
* Distributed under the terms of the MIT License.
|
||||
*
|
||||
* Authors:
|
||||
* Alexander von Gluck IV, kallisti5@unixzen.com
|
||||
*/
|
||||
|
||||
|
||||
|
@ -1,12 +1,133 @@
|
||||
/*
|
||||
* Copyright 2011, Adrien Destugues <pulkomandy@pulkomandy.ath.cx>
|
||||
* Distributed under the terms of the MIT License.
|
||||
*
|
||||
* Authors:
|
||||
* Alexander von Gluck IV, kallisti5@unixzen.com
|
||||
*/
|
||||
#ifndef _USB_SILICON_H_
|
||||
#define _USB_SILICON_H_
|
||||
|
||||
|
||||
#include "SerialDevice.h"
|
||||
|
||||
|
||||
/* supported vendor and product ids */
|
||||
#define VENDOR_RENESAS 0x045B
|
||||
#define VENDOR_AKATOM 0x0471
|
||||
#define VENDOR_PIRELLI 0x0489
|
||||
#define VENDOR_CYPHERLAB 0x0745
|
||||
#define VENDOR_GEMALTO 0x08E6
|
||||
#define VENDOR_DIGIANSWER 0x08FD
|
||||
#define VENDOR_MEI 0x0BED
|
||||
#define VENDOR_DYNASTREAM 0x0FCF
|
||||
#define VENDOR_KNOCKOFF 0x10A6
|
||||
#define VENDOR_SIEMENS 0x10AB
|
||||
#define VENDOR_NOKIA 0x10B5
|
||||
#define VENDOR_SILICON 0x10C4
|
||||
#define VENDOR_SILICON2 0x10C5
|
||||
#define VENDOR_SILICON3 0x10CE
|
||||
#define VENDOR_BALTECH 0x13AD
|
||||
#define VENDOR_OWEN 0x1555
|
||||
#define VENDOR_CLIPSAL 0x166A
|
||||
#define VENDOR_JABLOTRON 0x16D6
|
||||
#define VENDOR_WIENER 0x16DC
|
||||
#define VENDOR_WAVESENSE 0x17F4
|
||||
#define VENDOR_VAISALA 0x1843
|
||||
#define VENDOR_ELV 0x18EF
|
||||
#define VENDOR_WAGO 0x1BE3
|
||||
#define VENDOR_DW700 0x413C
|
||||
|
||||
const usb_serial_device kSiliconDevices[] = {
|
||||
{VENDOR_RENESAS, 0x0053, "Renesas RX610 RX-Stick"},
|
||||
{VENDOR_AKATOM, 0x066A, "AKTAKOM ACE-1001"},
|
||||
{VENDOR_PIRELLI, 0xE000, "Pirelli DP-L10 GSM Mobile"},
|
||||
{VENDOR_PIRELLI, 0xE003, "Pirelli DP-L10 GSM Mobile"},
|
||||
{VENDOR_CYPHERLAB, 0x1000, "Cipherlab CCD Barcode Scanner"},
|
||||
{VENDOR_GEMALTO, 0x5501, "Gemalto contactless smartcard reader"},
|
||||
{VENDOR_DIGIANSWER, 0x000A, "Digianswer ZigBee MAC device"},
|
||||
{VENDOR_MEI, 0x1100, "MEI Acceptor"},
|
||||
{VENDOR_MEI, 0x1101, "MEI Acceptor"},
|
||||
{VENDOR_DYNASTREAM, 0x1003, "Dynastream ANT development board"},
|
||||
{VENDOR_DYNASTREAM, 0x1004, "Dynastream ANT development board"},
|
||||
{VENDOR_DYNASTREAM, 0x1006, "Dynastream ANT development board"},
|
||||
{VENDOR_KNOCKOFF, 0xAA26, "Knock-off DCU-11"},
|
||||
{VENDOR_SIEMENS, 0x10C5, "Siemens MC60"},
|
||||
{VENDOR_NOKIA, 0xAC70, "Nokia CA-42"},
|
||||
{VENDOR_BALTECH, 0x9999, "Balteck card reader"},
|
||||
{VENDOR_OWEN, 0x0004, "Owen AC4 USB-RS485 Converter"},
|
||||
{VENDOR_CLIPSAL, 0x0303, "Clipsal 5500PCU C-Bus USB interface"},
|
||||
{VENDOR_JABLOTRON, 0x0001, "Jablotron serial interface"},
|
||||
{VENDOR_WIENER, 0x0010, "W-IE-NE-R Plein & Baus GmbH device"},
|
||||
{VENDOR_WIENER, 0x0011, "W-IE-NE-R Plein & Baus GmbH device"},
|
||||
{VENDOR_WIENER, 0x0012, "W-IE-NE-R Plein & Baus GmbH device"},
|
||||
{VENDOR_WIENER, 0x0015, "W-IE-NE-R Plein & Baus GmbH device"},
|
||||
{VENDOR_WAVESENSE, 0xAAAA, "Wavesense Jazz blood glucose meter"},
|
||||
{VENDOR_VAISALA, 0x0200, "Vaisala USB instrument"},
|
||||
{VENDOR_ELV, 0xE00F, "ELV USB I²C interface"},
|
||||
{VENDOR_WAGO, 0x07A6, "WAGO 750-923 USB Service"},
|
||||
{VENDOR_DW700, 0x9500, "DW700 GPS USB interface"},
|
||||
{VENDOR_SILICON, 0x0F91, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x1101, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x1601, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x800A, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x803B, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x8044, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x804E, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x8053, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x8054, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x8066, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x806F, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x807A, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x80CA, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x80DD, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x80F6, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x8115, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x813D, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x813F, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x814A, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x814B, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x8156, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x815E, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x818B, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x819F, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x81A6, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x81AC, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x81AD, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x81C8, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x81E2, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x81E7, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x81E8, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x81F2, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x8218, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x822B, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x826B, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x8293, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x82F9, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x8341, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x8382, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x83A8, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x83D8, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x8411, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x8418, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x846E, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x8477, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x85EA, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x85EB, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x8664, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0x8665, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0xEA60, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0xEA61, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0xEA71, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0xF001, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0xF002, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0xF003, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON, 0xF004, "Silicon Labs CP210x USB UART converter"},
|
||||
{VENDOR_SILICON2, 0xEA61, "Silicon Labs GPRS USB Modem"},
|
||||
{VENDOR_SILICON3, 0xEA6A, "Silicon Labs GPRS USB Modem 100EU"}
|
||||
};
|
||||
|
||||
|
||||
class SiliconDevice : public SerialDevice {
|
||||
public:
|
||||
SiliconDevice(usb_device device, uint16 vendorID,
|
||||
@ -98,30 +219,5 @@ status_t WriteConfig(CP210XRequest request, uint16_t* data,
|
||||
size_t size);
|
||||
};
|
||||
|
||||
#define VENDOR_RENESAS 0x045B
|
||||
#define VENDOR_AKATOM 0x0471
|
||||
#define VENDOR_PIRELLI 0x0489
|
||||
#define VENDOR_CYPHERLAB 0x0745
|
||||
#define VENDOR_GEMALTO 0x08E6
|
||||
#define VENDOR_DIGIANSWER 0x08FD
|
||||
#define VENDOR_MEI 0x0BED
|
||||
#define VENDOR_DYNASTREAM 0x0FCF
|
||||
#define VENDOR_KNOCKOFF 0x10A6
|
||||
#define VENDOR_SIEMENS 0x10AB
|
||||
#define VENDOR_NOKIA 0x10B5
|
||||
#define VENDOR_SILICON 0x10C4
|
||||
#define VENDOR_SILICON2 0x10C5
|
||||
#define VENDOR_SILICON3 0x10CE
|
||||
#define VENDOR_BALTECH 0x13AD
|
||||
#define VENDOR_OWEN 0x1555
|
||||
#define VENDOR_CLIPSAL 0x166A
|
||||
#define VENDOR_JABLOTRON 0x16D6
|
||||
#define VENDOR_WIENER 0x16DC
|
||||
#define VENDOR_WAVESENSE 0x17F4
|
||||
#define VENDOR_VAISALA 0x1843
|
||||
#define VENDOR_ELV 0x18EF
|
||||
#define VENDOR_WAGO 0x1BE3
|
||||
#define VENDOR_DW700 0x413C
|
||||
|
||||
|
||||
#endif //_USB_SILICON_H_
|
||||
|
Loading…
x
Reference in New Issue
Block a user