0,0 → 1,180 |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;; ;; |
;; Copyright (C) KolibriOS team 2004-2014. All rights reserved. ;; |
;; Distributed under terms of the GNU General Public License ;; |
;; ;; |
;; Include file for apps which want to use FTDI device ;; |
;; ;; |
;; GNU GENERAL PUBLIC LICENSE ;; |
;; Version 2, June 1991 ;; |
;; ;; |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
|
;Bitmode constants |
BITMODE_RESET = 0x00 ;Switch off bitbang mode, back to regular serial FIFO |
BITMODE_BITBANG= 0x01 ;Classical asynchronous bitbang mode, introduced with B-type chips */ |
BITMODE_MPSSE = 0x02 ;MPSSE mode, available on 2232x chips */ |
BITMODE_SYNCBB = 0x04 ;Synchronous bitbang mode, available on 2232x and R-type chips */ |
BITMODE_MCU = 0x08 ;MCU Host Bus Emulation mode, available on 2232x chips */ |
;CPU-style fifo mode gets set via EEPROM (cuurenntly EEPROM burn not supported in KolibriOS) |
BITMODE_OPTO = 0x10 ;Fast Opto-Isolated Serial Interface Mode, available on 2232x chips */ |
BITMODE_CBUS = 0x20 ;Bitbang on CBUS pins of R-type chips, configure in EEPROM before */ |
BITMODE_SYNCFF = 0x40 ;Single Channel Synchronous FIFO mode, available on 2232H chips */ |
BITMODE_FT1284 = 0x80 ;FT1284 mode, available on 232H chips |
|
;Line property constants |
;parity |
NONE = 0 shl 8 |
ODD = 1 shl 8 |
EVEN = 2 shl 8 |
MARK = 3 shl 8 |
SPACE = 4 shl 8 |
;stop bits |
STOP_BIT_1 = 0 shl 11 |
STOP_BIT_15 = 1 shl 11 |
STOP_BIT_2 = 2 shl 11 |
;break type |
BREAK_OFF = 0 shl 14 |
BREAK_OFF = 1 shl 14 |
;number of bits has to be at lower byte |
|
;Flow control |
SIO_DISABLE_FLOW_CTRL = 0x0 |
SIO_RTS_CTS_HS = (0x1 shl 8) |
SIO_DTR_DSR_HS = (0x2 shl 8) |
SIO_XON_XOFF_HS= (0x4 shl 8) |
|
;Chip types |
TYPE_AM = 0 |
TYPE_BM = 1 |
TYPE_2232C = 2 |
TYPE_R = 3 |
TYPE_2232H = 4 |
TYPE_4232H = 5 |
TYPE_232H = 6 |
TYPE_230X = 7 |
|
;IO codes |
;Get list of detected ftdi chips |
FTDI_GET_LIST = 1 |
;Acquire lock on ftdi device |
;[input+8] - none |
;[output] - PID device is locked by |
FTDI_LOCK = 2 |
;Unlock ftdi device |
;[input+8] - none |
;[output] - 0 if unclock success, overwise PID device is locked by |
FTDI_UNLOCK = 3 |
;[output] - chunksize |
FTDI_GET_WRITE_CHUNKSIZE = 4 |
;[output] - chunksize |
FTDI_GET_READ_CHUNKSIZE = 5 |
;[input+8] - chunksize |
FTDI_SET_WRITE_CHUNKSIZE = 6 |
;[input+8] - chunksize |
FTDI_SET_READ_CHUNKSIZE = 7 |
;Writes data in chunks to the chip |
;[input+8] - size of data, [input+12] - beginning of data |
FTDI_WRITE_DATA = 8 |
;Reads data in chunks from the chip |
;[input+8] - size of data, [output] - red data |
FTDI_READ_DATA = 9 |
;Sets the chip baud rate |
;[input+8] - baudrate |
FTDI_SET_BAUDRATE = 10 |
;Enable/disable bitbang modes |
;[input+8] - 0xnnnnXXYY, where XX-bitmask, YY-bitmode |
FTDI_SET_BITMODE = 11 |
;Set rts line high |
;[input+8] - none |
FTDI_SET_RTS_HIGH = 12 |
;Set rts line low |
;[input+8] - none |
FTDI_SET_RTS_LOW = 13 |
;Set dtr line high |
;[input+8] - none |
FTDI_SET_DTR_HIGH = 14 |
;Set dtr line low |
;[input+8] - none |
FTDI_SET_DTR_LOW = 15 |
;Resets the ftdi device |
;[input+8] - none |
FTDI_USB_RESET = 16 |
;Set flowcontrol for ftdi chip |
;dword[input+8] - one of flow control constants |
FTDI_SET_FLOW_CONTROL = 17 |
;Set the special event character |
;[input+8] - 0xnnnnXXYY, where XX-1/0(enable/disable), YY-event char |
FTDI_SET_EVENT_CHAR = 18 |
;Set error character |
;[input+8] - 0xnnnnXXYY, where XX-1/0(enable/disable), YY-error char |
FTDI_SET_ERROR_CHAR = 19 |
;FTDI chip keeps data in the internal buffer for a specific |
;amount of time if the buffer is not full yet to decrease |
;load on the usb bus |
;[input+8] - 0xnnnnXXXX, where XX-latency |
FTDI_SET_LATENCY_TIMER = 20 |
;Get latency timer |
;[output] - latency |
FTDI_GET_LATENCY_TIMER = 21 |
;Directly read pin state, circumventing the read buffer. Useful for bitbang mode |
;[output] - pins' values |
FTDI_READ_PINS = 22 |
;This function allows the retrieve the two status bytes of the device. |
;The device sends these bytes also as a header for each read access |
;where they are discarded by ftdi_read_data(). The chip generates |
;the two stripped status bytes in the absence of data every 40 ms |
; |
; Layout of the first byte: |
; - B0..B3 - must be 0 |
; - B4 Clear to send (CTS) |
; 0 = inactive |
; 1 = active |
; - B5 Data set ready (DTS) |
; 0 = inactive |
; 1 = active |
; - B6 Ring indicator (RI) |
; 0 = inactive |
; 1 = active |
; - B7 Receive line signal detect (RLSD) |
; 0 = inactive |
; 1 = active |
|
; Layout of the second byte: |
; - B0 Data ready (DR) |
; - B1 Overrun error (OE) |
; - B2 Parity error (PE) |
; - B3 Framing error (FE) |
; - B4 Break interrupt (BI) |
; - B5 Transmitter holding register (THRE) |
; - B6 Transmitter empty (TEMT) |
; - B7 Error in RCVR FIFO |
;[output] - poll modem status |
FTDI_POLL_MODEM_STATUS = 23 |
;Set (RS232) line characteristics |
;dword[input+8] - line property constants combination |
FTDI_SET_LINE_PROPERTY = 24 |
;Clears the read buffer on the chip |
;[input+8] - none |
FTDI_PURGE_RX_BUFFER = 25 |
;Clears the write buffer on the chip |
;[input+8] - none |
FTDI_PURGE_RX_BUFFER = 26 |
|
;Structures |
;list layout from FTDI_GET_LIST |
struct dev_list |
size dd ? |
nodes rd size*sizeof.node |
ends |
|
struct node |
islocked dd ? ; Will be 'LCKD', if dev is already locked; or 'NLKD', if dev is free |
chip_type dd ? ; FTDI chip type (see Chip types constants) |
dev_handle dd ? ; Device handle, value the same as in in_buf_map.dev_handle |
ends |
|
;input buffer map for requests above FTDI_GET_LIST |
struc in_buf_map |
pid dd ? ; Should be PID of application using this file |
dev_handle dd ? ; Should be value acquired from one of dev_list's nodes |