1/*
2 * Copyright (c) 2007-2008 by Michael Lotz
3 * Heavily based on the original usb_serial driver which is:
4 *
5 * Copyright (c) 2003-2004 by Siarzhuk Zharski <imker@gmx.li>
6 * Distributed under the terms of the MIT License.
7 */
8#ifndef _USB_KLSI_H_
9#define _USB_KLSI_H_
10
11
12#include "SerialDevice.h"
13
14
15/* supported vendor and product ids */
16#define VENDOR_PALM		0x0830
17#define VENDOR_KLSI		0x05e9
18
19const usb_serial_device kKLSIDevices[] = {
20	{VENDOR_PALM, 0x0080, "PalmConnect RS232"},
21	{VENDOR_KLSI, 0x00c0, "KLSI KL5KUSB105D"}
22};
23
24
25/* protocol defines */
26#define KLSI_SET_REQUEST			0x01
27#define KLSI_POLL_REQUEST			0x02
28#define KLSI_CONF_REQUEST			0x03
29#define KLSI_CONF_REQUEST_READ_ON	0x03
30#define KLSI_CONF_REQUEST_READ_OFF	0x02
31
32// not sure
33#define KLSI_BUFFER_SIZE			64
34
35enum {
36	klsi_sio_b115200 = 0,
37	klsi_sio_b57600 = 1,
38	klsi_sio_b38400 = 2,
39	klsi_sio_b19200 = 4,
40	klsi_sio_b9600 = 6,
41	/* unchecked */
42	klsi_sio_b4800 = 8,
43	klsi_sio_b2400 = 9,
44	klsi_sio_b1200 = 10,
45	klsi_sio_b600 = 11,
46	klsi_sio_b300 = 12
47};
48
49
50class KLSIDevice : public SerialDevice {
51public:
52								KLSIDevice(usb_device device, uint16 vendorID,
53									uint16 productID, const char *description);
54
55virtual	status_t				AddDevice(const usb_configuration_info *config);
56
57virtual	status_t				ResetDevice();
58
59virtual	status_t				SetLineCoding(usb_cdc_line_coding *coding);
60
61virtual	void					OnRead(char **buffer, size_t *numBytes);
62virtual	void					OnWrite(const char *buffer, size_t *numBytes,
63									size_t *packetBytes);
64virtual	void					OnClose();
65};
66
67
68#endif //_USB_KLSI_H_
69