The PHP FTDI Extension - bindings for libftdi1

Maintainers

Package info

github.com/php-io-extensions/ftdi

Language:C

Type:php-ext

Ext name:ext-ftdi

pkg:composer/php-io-extensions/ftdi

Statistics

Installs: 9

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

0.4.2 2026-05-21 04:15 UTC

This package is auto-updated.

Last update: 2026-05-21 04:25:37 UTC


README

This project provides direct bindings to libftdi1.

Extension repository: https://github.com/php-io-extensions/ftdi

Highlights

  • Direct access to libftdi1 functions from PHP
  • Support for serial-only devices (such as FT232RL) and MPSSE-capable devices (such as FT232H)
  • USB open/read/write/flush/reset operations
  • EEPROM read/write/decode/build operations
  • Asynchronous transfer submission and completion

Requirements

  • PHP 8.3+
  • libftdi1 — required at compile and runtime
    • Debian/Ubuntu/Raspberry Pi OS: libftdi1-dev (runtime: libftdi1-2)
    • macOS: brew install libftdi
  • If your intended workflow includes MPSSE device usage, install mpsse as well

Compilation Requirements

  • A C language toolchain

  • libftdi1 development headers and pkg-config metadata (see Requirements)

  • Manual installation

    • Zephir PHP
    • ext-zephir_parser
  • Automated installation

    • PIE

Manual compilation instructions

Zephir

  • Clone this repository and checkout the release to use (or master for the latest updates)
  • cd ftdi
  • Install libftdi1 if it is not already present (see Requirements)
  • This extension is intended to be used with MPSSE-capable devices (for example FT232H) and serial-only devices (for example FT232RL)
  • If MPSSE is intended, install mpsse as well
  • The installers include procedures to do this for you. However, if they are already installed, using PIE is easiest.
  • Run the installer for your platform
    • Raspberry Pi / Debian Trixie: bash install-debian-trixie.sh
    • macOS: bash install-macos.sh

PIE

If dependencies are already installed, using PIE is the easiest path:

  • Clone this repository and checkout the release to use (or master for the latest updates)
  • cd ftdi
  • pie install

Do not run sudo pie install from a development checkout — that can leave root-owned files under ext/ and break later builds. Use pie install (it prompts only for the final install step) or the platform install scripts above.

Automated compilation instructions

  • Ensure libftdi1 is installed first

  • If MPSSE usage is intended, ensure mpsse is installed as well

  • pie install php-io-extensions/ftdi

  • PIE should compile the extension and place it where your default PHP binary expects extensions

  • If PIE does not automatically enable the extension, add it to your php.ini:

    extension=ftdi

Confirm the module is loaded:

php -m | grep ftdi

Usage

FTDI bindings are invoked through the Ftdi\FTDI class. All methods are static.

<?php

use Ftdi\FTDI;

$ftdi = FTDI::ftdiNew();
if ($ftdi->handle < 0) {
    throw new RuntimeException('ftdi_new failed');
}

FTDI::ftdiInit($ftdi);

// FT232RL default IDs: vendor 0x0403, product 0x6001
if (FTDI::ftdiUSBOpen($ftdi, 0x0403, 0x6001) !== 0) {
    throw new RuntimeException(FTDI::ftdiGetErrorString($ftdi));
}

FTDI::ftdiSetBaudrate($ftdi, 115200);
FTDI::ftdiSetLineProperty($ftdi, 8, 1, 0); // 8N1

FTDI::ftdiWriteData($ftdi, "hello\n", 6);
$response = FTDI::ftdiReadData($ftdi, 256);

FTDI::ftdiUSBClose($ftdi);
FTDI::ftdiDeinit($ftdi);
FTDI::ftdiFree($ftdi);

Constants and enum values follow libftdi1 conventions. Define them in PHP or load them from your platform headers.

C-ish global helper style

This extension can also be used in a C-ish style through global helper methods by installing microscrap/ftdi.

composer require microscrap/ftdi

If you want to utilize MPSSE, install microscrap/mpsse instead:

composer require microscrap/mpsse

microscrap/mpsse also installs microscrap/ftdi.

You can also roll your own helper layer, or use this extension directly without helper packages.

Static Methods API

FTDI::ftdiNew(): FTDIContext

Allocates a new libftdi1 context via ftdi_new() and returns a hydrated FTDIContext. Check handle >= 0 before use; -1 means allocation failed.

Example

<?php

use Ftdi\FTDI;

$ftdi = FTDI::ftdiNew();

if ($ftdi->handle < 0) {
    throw new RuntimeException($ftdi->errorStr);
}

FTDI::ftdiInit(FTDIContext $ftdi): int

Initialises an allocated context (ftdi_init). Returns 0 on success, non-zero on failure (libftdi1 error code).

Example

<?php

use Ftdi\FTDI;

$ftdi = FTDI::ftdiNew();
if (FTDI::ftdiInit($ftdi) !== 0) {
    throw new RuntimeException(FTDI::ftdiGetErrorString($ftdi));
}

FTDI::ftdiSetInterface(FTDIContext $ftdi, int $iface): int

Selects the interface channel on multi-port chips (ftdi_set_interface). Use libftdi1 INTERFACE_* constants (INTERFACE_ANY, INTERFACE_A, INTERFACE_B, …). Returns 0 on success.

FTDI::ftdiDeinit(FTDIContext $ftdi): void

Deinitialises a context (ftdi_deinit) without freeing it. Call before ftdiFree() when you are done with a device session.

FTDI::ftdiFree(FTDIContext $ftdi): void

Frees the libftdi1 context (ftdi_free). Do not use the FTDIContext after this call.

Example

<?php

use Ftdi\FTDI;

FTDI::ftdiUSBClose($ftdi);
FTDI::ftdiDeinit($ftdi);
FTDI::ftdiFree($ftdi);

FTDI::ftdiSetUSBDev(FTDIContext $ftdi, int $usbDevHandle): void

Attaches an existing libusb device handle (opaque integer) to the context (ftdi_set_usbdev).

FTDI::ftdiGetLibraryVersion(): FTDIVersionInfo

Returns libftdi1 version information without opening a device (ftdi_get_library_version).

Example

<?php

use Ftdi\FTDI;

$vi = FTDI::ftdiGetLibraryVersion();
echo $vi->versionStr; // e.g. "1.5"

FTDI::ftdiUSBFindAll(FTDIContext $ftdi, int $vendor, int $product): array

Enumerates matching USB devices (ftdi_usb_find_all). Returns:

  • count — number of devices found (or negative error code)
  • listHandle — opaque pointer to the device list; pass to ftdiListFree() or ftdiListFree2()

Example

<?php

use Ftdi\FTDI;

$found = FTDI::ftdiUSBFindAll($ftdi, 0x0403, 0x6014);
if ($found['count'] > 0 && $found['listHandle'] !== 0) {
    FTDI::ftdiListFree($found['listHandle']);
}

FTDI::ftdiListFree(int $listHandle): void

Frees a device list allocated by ftdi_usb_find_all (ftdi_list_free).

FTDI::ftdiListFree2(int $listHandle): void

Alternative list free (ftdi_list_free2).

FTDI::ftdiUSBGetStrings(FTDIContext $ftdi, int $devHandle): array

Reads USB string descriptors for a device (ftdi_usb_get_strings). Returns manufacturer, description, and serial strings. $devHandle is an opaque libusb_device pointer.

FTDI::ftdiUSBGetStrings2(FTDIContext $ftdi, int $devHandle): array

Same as ftdiUSBGetStrings, using ftdi_usb_get_strings2.

FTDI::ftdiUSBOpenDev(FTDIContext $ftdi, int $devHandle): int

Opens a specific USB device by opaque handle (ftdi_usb_open_dev). Returns 0 on success.

FTDI::ftdiUSBOpen(FTDIContext $ftdi, int $vendor, int $product): int

Opens the first device matching vendor and product IDs (ftdi_usb_open). Returns 0 on success.

Example — FT232H

<?php

use Ftdi\FTDI;

if (FTDI::ftdiUSBOpen($ftdi, 0x0403, 0x6014) !== 0) {
    throw new RuntimeException(FTDI::ftdiGetErrorString($ftdi));
}

FTDI::ftdiUSBOpenDesc(FTDIContext $ftdi, int $vendor, int $product, mixed $description, mixed $serial): int

Opens a device matching vendor/product and optional description/serial strings (ftdi_usb_open_desc). Pass empty strings to skip a filter.

FTDI::ftdiUSBOpenDescIndex(FTDIContext $ftdi, int $vendor, int $product, mixed $description, mixed $serial, int $index): int

Like ftdiUSBOpenDesc, but selects the Nth matching device (ftdi_usb_open_desc_index).

FTDI::ftdiUSBOpenBusAddr(FTDIContext $ftdi, int $bus, int $addr): int

Opens a device by USB bus and address (ftdi_usb_open_bus_addr).

FTDI::ftdiUSBOpenString(FTDIContext $ftdi, mixed $description): int

Opens a device by its USB description string (ftdi_usb_open_string).

FTDI::ftdiUSBClose(FTDIContext $ftdi): int

Closes the USB connection (ftdi_usb_close). Returns 0 on success.

FTDI::ftdiUSBReset(FTDIContext $ftdi): int

Sends a USB reset to the device (ftdi_usb_reset).

FTDI::ftdiTCIFlush(FTDIContext $ftdi): int

Flushes the input buffer (ftdi_tciflush).

FTDI::ftdiTCOFlush(FTDIContext $ftdi): int

Flushes the output buffer (ftdi_tcoflush).

FTDI::ftdiTCIOFlush(FTDIContext $ftdi): int

Flushes both directions (ftdi_tcioflush).

FTDI::ftdiUSBPurgeRXBuffer(FTDIContext $ftdi): int

Purges the device RX buffer (ftdi_usb_purge_rx_buffer).

FTDI::ftdiUSBPurgeTXBuffer(FTDIContext $ftdi): int

Purges the device TX buffer (ftdi_usb_purge_tx_buffer).

FTDI::ftdiUSBPurgeBuffers(FTDIContext $ftdi): int

Purges both RX and TX buffers (ftdi_usb_purge_buffers).

FTDI::ftdiConvertBaudrateUTExport(int $baudrate, FTDIContext $ftdi): array

Wraps convert_baudrate_UT_export and returns value and index.

FTDI::ftdiSetBaudrate(FTDIContext $ftdi, int $baudrate): int

Sets the UART baud rate (ftdi_set_baudrate). Returns 0 on success.

Example

<?php

use Ftdi\FTDI;

FTDI::ftdiSetBaudrate($ftdi, 115200);

FTDI::ftdiSetLineProperty(FTDIContext $ftdi, int $bits, int $sbit, int $parity): int

Sets data bits, stop bits, and parity (ftdi_set_line_property). Use libftdi1 BITS_*, STOP_BIT_*, and PARITY_* constants.

Example — 8 data bits, 1 stop bit, no parity

<?php

use Ftdi\FTDI;

FTDI::ftdiSetLineProperty($ftdi, 8, 1, 0);

FTDI::ftdiSetLineProperty2(FTDIContext $ftdi, int $bits, int $sbit, int $parity, int $breakType): int

Like ftdiSetLineProperty, with an additional break type argument (ftdi_set_line_property2).

FTDI::ftdiWriteData(FTDIContext $ftdi, mixed $data, int $size): int

Writes up to $size bytes to the device (ftdi_write_data). Returns the number of bytes written, or -1 on failure.

Example

<?php

use Ftdi\FTDI;

$payload = "AT\r\n";
$written = FTDI::ftdiWriteData($ftdi, $payload, strlen($payload));

FTDI::ftdiWriteDataSetChunksize(FTDIContext $ftdi, int $chunksize): int

Sets the write buffer chunk size (ftdi_write_data_set_chunksize).

FTDI::ftdiWriteDataGetChunksize(FTDIContext $ftdi): int

Returns the current write chunk size (ftdi_write_data_get_chunksize).

FTDI::ftdiReadData(FTDIContext $ftdi, int $size): string

Reads up to $size bytes (ftdi_read_data). Returns a binary string (may be shorter than requested). Returns an empty string on failure or when no data is available within the timeout.

Example

<?php

use Ftdi\FTDI;

FTDI::ftdiSetTimeouts($ftdi, 1000, 1000);
$chunk = FTDI::ftdiReadData($ftdi, 4096);

FTDI::ftdiReadDataSetChunksize(FTDIContext $ftdi, int $chunksize): int

Sets the read buffer chunk size (ftdi_read_data_set_chunksize).

FTDI::ftdiReadDataGetChunksize(FTDIContext $ftdi): int

Returns the current read chunk size (ftdi_read_data_get_chunksize).

FTDI::ftdiSetBitmode(FTDIContext $ftdi, int $bitmask, int $mode): int

Enables bitbang or MPSSE mode (ftdi_set_bitmode). $mode uses libftdi1 BITMODE_* values (BITMODE_RESET, BITMODE_MPSSE, BITMODE_BITBANG, …). $bitmask sets the pin direction/output mask.

Example — enable MPSSE on FT232H

<?php

use Ftdi\FTDI;

// Reset then enter MPSSE mode (constants from libftdi1/ftdi.h)
FTDI::ftdiSetBitmode($ftdi, 0x00, 0x00); // BITMODE_RESET
FTDI::ftdiSetBitmode($ftdi, 0xFF, 0x02); // BITMODE_MPSSE with all outputs

FTDI::ftdiWriteDataSubmit(FTDIContext $ftdi, mixed $data, int $size): FTDITransferControl

Submits an asynchronous write (ftdi_write_data_submit). Returns an FTDITransferControl DTO; poll with ftdiTransferDataDone().

FTDI::ftdiReadDataSubmit(FTDIContext $ftdi, int $size): FTDITransferControl

Submits an asynchronous read (ftdi_read_data_submit).

FTDI::ftdiTransferDataDone(FTDITransferControl $tc): int

Blocks until an async transfer completes (ftdi_transfer_data_done). Returns bytes transferred, or -1 on error.

Example

<?php

use Ftdi\FTDI;

$tc = FTDI::ftdiWriteDataSubmit($ftdi, $payload, strlen($payload));
$done = FTDI::ftdiTransferDataDone($tc);

FTDI::ftdiTransferDataCancel(FTDITransferControl $tc): void

Cancels a pending async transfer (ftdi_transfer_data_cancel).

FTDI::ftdiDisableBitbang(FTDIContext $ftdi): int

Disables bitbang/MPSSE and returns to UART mode (ftdi_disable_bitbang).

FTDI::ftdiReadPins(FTDIContext $ftdi): int

Reads the current pin state in bitbang mode (ftdi_read_pins). Returns an 8-bit pin bitmask, or -1 on error.

FTDI::ftdiSetLatencyTimer(FTDIContext $ftdi, int $latency): int

Sets the USB latency timer in milliseconds (ftdi_set_latency_timer).

FTDI::ftdiSetTimeouts(FTDIContext $ftdi, int $readTimeout, int $writeTimeout): void

Sets FTDIContext timeout fields directly (usb_read_timeout and usb_write_timeout).

FTDI::ftdiGetLatencyTimer(FTDIContext $ftdi): int

Returns the current latency timer value (ftdi_get_latency_timer).

FTDI::ftdiPollModemStatus(FTDIContext $ftdi): int

Polls modem status lines (ftdi_poll_modem_status). Returns a status bitmask (CTS, DSR, RI, RLSD, … per libftdi1).

FTDI::ftdiSetFlowCtrl(FTDIContext $ftdi, int $flowctrl): int

Sets hardware flow control (ftdi_setflowctrl). Use libftdi1 FLOW_* constants.

FTDI::ftdiSetFlowCtrlXonXoff(FTDIContext $ftdi, int $xon, int $xoff): int

Sets software XON/XOFF flow control characters (ftdi_setflowctrl_xonxoff).

FTDI::ftdiSetDtr(FTDIContext $ftdi, int $state): int

Sets the DTR line (ftdi_setdtr).

FTDI::ftdiSetRts(FTDIContext $ftdi, int $state): int

Sets the RTS line (ftdi_setrts).

FTDI::ftdiSetDtrRts(FTDIContext $ftdi, int $dtr, int $rts): int

Sets DTR and RTS together (ftdi_setdtr_rts).

FTDI::ftdiSetEventChar(FTDIContext $ftdi, int $eventch, int $enable): int

Configures the event character (ftdi_set_event_char).

FTDI::ftdiSetErrorChar(FTDIContext $ftdi, int $errorch, int $enable): int

Configures the error character (ftdi_set_error_char).

FTDI::ftdiGetEeprom(FTDIContext $ftdi): FTDIEeprom

Returns an FTDIEeprom object populated from the current context EEPROM values.

FTDI::ftdiEepromInitDefaults(FTDIContext $ftdi, mixed $manufacturer, mixed $product, mixed $serial): int

Initialises EEPROM defaults with string descriptors (ftdi_eeprom_initdefaults).

FTDI::ftdiEepromSetStrings(FTDIContext $ftdi, mixed $manufacturer, mixed $product, mixed $serial): int

Updates manufacturer, product, and serial strings in the EEPROM image (ftdi_eeprom_set_strings).

FTDI::ftdiEepromGetStrings(FTDIContext $ftdi): array

Reads EEPROM string fields. Returns manufacturer, product, and serial.

FTDI::ftdiEepromBuild(FTDIContext $ftdi): int

Builds the EEPROM binary image from the in-memory structure (ftdi_eeprom_build).

FTDI::ftdiEepromDecode(FTDIContext $ftdi, int $verbose): int

Decodes a raw EEPROM buffer already loaded into the context (ftdi_eeprom_decode).

FTDI::ftdiGetEepromValue(FTDIContext $ftdi, int $valueName): int

Reads an integer EEPROM field by libftdi1 name constant (ftdi_get_eeprom_value).

FTDI::ftdiSetEepromValue(FTDIContext $ftdi, int $valueName, int $value): int

Sets an integer EEPROM field (ftdi_set_eeprom_value).

FTDI::ftdiGetEepromBuf(FTDIContext $ftdi, int $size): string

Returns $size bytes from the raw EEPROM image buffer (ftdi_get_eeprom_buf).

FTDI::ftdiSetEepromBuf(FTDIContext $ftdi, mixed $buf): int

Replaces the raw EEPROM image buffer (ftdi_set_eeprom_buf).

FTDI::ftdiSetEepromUserData(FTDIContext $ftdi, mixed $buf): int

Sets the EEPROM user-data section (ftdi_set_eeprom_user_data).

FTDI::setFT232HCbus(FTDIEeprom $eeprom): string

Encodes FT232H CBUS pin functions into the five raw EEPROM bytes at offsets 0x180x1c via libftdi's set_ft232h_cbus. Returns an empty string if the EEPROM handle is missing.

FTDI::ftdiReadEepromLocation(FTDIContext $ftdi, int $eepromAddr): int

Reads one 16-bit word from EEPROM at $eepromAddr (ftdi_read_eeprom_location).

FTDI::ftdiReadEeprom(FTDIContext $ftdi): int

Reads the full EEPROM from the device into the context (ftdi_read_eeprom).

FTDI::ftdiReadChipId(FTDIContext $ftdi): array

Reads the chip ID (ftdi_read_chipid). Returns result (libftdi1 return code) and chipid (unsigned integer).

Example

<?php

use Ftdi\FTDI;

$id = FTDI::ftdiReadChipId($ftdi);
if ($id['result'] === 0) {
    printf("chip id: 0x%X\n", $id['chipid']);
}

FTDI::ftdiWriteEepromLocation(FTDIContext $ftdi, int $eepromAddr, int $eepromVal): int

Writes one 16-bit word to EEPROM at $eepromAddr (ftdi_write_eeprom_location).

FTDI::ftdiWriteEeprom(FTDIContext $ftdi): int

Programs the EEPROM from the in-memory image (ftdi_write_eeprom). Destructive — use with care.

FTDI::ftdiEraseEeprom(FTDIContext $ftdi): int

Erases the device EEPROM (ftdi_erase_eeprom). Destructive.

FTDI::ftdiGetErrorString(FTDIContext $ftdi): string

Returns the last libftdi1 error string for the context (ftdi_get_error_string).

Example

<?php

use Ftdi\FTDI;

if (FTDI::ftdiUSBOpen($ftdi, 0x0403, 0x6001) !== 0) {
    fwrite(STDERR, FTDI::ftdiGetErrorString($ftdi) . PHP_EOL);
}

Quick reference

Method Signature
ftdiNew FTDI::ftdiNew(): FTDIContext
ftdiInit FTDI::ftdiInit(FTDIContext $ftdi): int
ftdiSetInterface FTDI::ftdiSetInterface(FTDIContext $ftdi, int $iface): int
ftdiDeinit FTDI::ftdiDeinit(FTDIContext $ftdi): void
ftdiFree FTDI::ftdiFree(FTDIContext $ftdi): void
ftdiSetUSBDev FTDI::ftdiSetUSBDev(FTDIContext $ftdi, int $usbDevHandle): void
ftdiGetLibraryVersion FTDI::ftdiGetLibraryVersion(): FTDIVersionInfo
ftdiUSBFindAll FTDI::ftdiUSBFindAll(FTDIContext $ftdi, int $vendor, int $product): array
ftdiListFree FTDI::ftdiListFree(int $listHandle): void
ftdiListFree2 FTDI::ftdiListFree2(int $listHandle): void
ftdiUSBGetStrings FTDI::ftdiUSBGetStrings(FTDIContext $ftdi, int $devHandle): array
ftdiUSBGetStrings2 FTDI::ftdiUSBGetStrings2(FTDIContext $ftdi, int $devHandle): array
ftdiUSBOpenDev FTDI::ftdiUSBOpenDev(FTDIContext $ftdi, int $devHandle): int
ftdiUSBOpen FTDI::ftdiUSBOpen(FTDIContext $ftdi, int $vendor, int $product): int
ftdiUSBOpenDesc FTDI::ftdiUSBOpenDesc(FTDIContext $ftdi, int $vendor, int $product, mixed $description, mixed $serial): int
ftdiUSBOpenDescIndex FTDI::ftdiUSBOpenDescIndex(FTDIContext $ftdi, int $vendor, int $product, mixed $description, mixed $serial, int $index): int
ftdiUSBOpenBusAddr FTDI::ftdiUSBOpenBusAddr(FTDIContext $ftdi, int $bus, int $addr): int
ftdiUSBOpenString FTDI::ftdiUSBOpenString(FTDIContext $ftdi, mixed $description): int
ftdiUSBClose FTDI::ftdiUSBClose(FTDIContext $ftdi): int
ftdiUSBReset FTDI::ftdiUSBReset(FTDIContext $ftdi): int
ftdiTCIFlush FTDI::ftdiTCIFlush(FTDIContext $ftdi): int
ftdiTCOFlush FTDI::ftdiTCOFlush(FTDIContext $ftdi): int
ftdiTCIOFlush FTDI::ftdiTCIOFlush(FTDIContext $ftdi): int
ftdiUSBPurgeRXBuffer FTDI::ftdiUSBPurgeRXBuffer(FTDIContext $ftdi): int
ftdiUSBPurgeTXBuffer FTDI::ftdiUSBPurgeTXBuffer(FTDIContext $ftdi): int
ftdiUSBPurgeBuffers FTDI::ftdiUSBPurgeBuffers(FTDIContext $ftdi): int
ftdiConvertBaudrateUTExport FTDI::ftdiConvertBaudrateUTExport(int $baudrate, FTDIContext $ftdi): array
ftdiSetBaudrate FTDI::ftdiSetBaudrate(FTDIContext $ftdi, int $baudrate): int
ftdiSetLineProperty FTDI::ftdiSetLineProperty(FTDIContext $ftdi, int $bits, int $sbit, int $parity): int
ftdiSetLineProperty2 FTDI::ftdiSetLineProperty2(FTDIContext $ftdi, int $bits, int $sbit, int $parity, int $breakType): int
ftdiWriteData FTDI::ftdiWriteData(FTDIContext $ftdi, mixed $data, int $size): int
ftdiWriteDataSetChunksize FTDI::ftdiWriteDataSetChunksize(FTDIContext $ftdi, int $chunksize): int
ftdiWriteDataGetChunksize FTDI::ftdiWriteDataGetChunksize(FTDIContext $ftdi): int
ftdiReadData FTDI::ftdiReadData(FTDIContext $ftdi, int $size): string
ftdiReadDataSetChunksize FTDI::ftdiReadDataSetChunksize(FTDIContext $ftdi, int $chunksize): int
ftdiReadDataGetChunksize FTDI::ftdiReadDataGetChunksize(FTDIContext $ftdi): int
ftdiSetBitmode FTDI::ftdiSetBitmode(FTDIContext $ftdi, int $bitmask, int $mode): int
ftdiWriteDataSubmit FTDI::ftdiWriteDataSubmit(FTDIContext $ftdi, mixed $data, int $size): FTDITransferControl
ftdiReadDataSubmit FTDI::ftdiReadDataSubmit(FTDIContext $ftdi, int $size): FTDITransferControl
ftdiTransferDataDone FTDI::ftdiTransferDataDone(FTDITransferControl $tc): int
ftdiTransferDataCancel FTDI::ftdiTransferDataCancel(FTDITransferControl $tc): void
ftdiDisableBitbang FTDI::ftdiDisableBitbang(FTDIContext $ftdi): int
ftdiReadPins FTDI::ftdiReadPins(FTDIContext $ftdi): int
ftdiSetLatencyTimer FTDI::ftdiSetLatencyTimer(FTDIContext $ftdi, int $latency): int
ftdiSetTimeouts FTDI::ftdiSetTimeouts(FTDIContext $ftdi, int $readTimeout, int $writeTimeout): void
ftdiGetLatencyTimer FTDI::ftdiGetLatencyTimer(FTDIContext $ftdi): int
ftdiPollModemStatus FTDI::ftdiPollModemStatus(FTDIContext $ftdi): int
ftdiSetFlowCtrl FTDI::ftdiSetFlowCtrl(FTDIContext $ftdi, int $flowctrl): int
ftdiSetFlowCtrlXonXoff FTDI::ftdiSetFlowCtrlXonXoff(FTDIContext $ftdi, int $xon, int $xoff): int
ftdiSetDtr FTDI::ftdiSetDtr(FTDIContext $ftdi, int $state): int
ftdiSetRts FTDI::ftdiSetRts(FTDIContext $ftdi, int $state): int
ftdiSetDtrRts FTDI::ftdiSetDtrRts(FTDIContext $ftdi, int $dtr, int $rts): int
ftdiSetEventChar FTDI::ftdiSetEventChar(FTDIContext $ftdi, int $eventch, int $enable): int
ftdiSetErrorChar FTDI::ftdiSetErrorChar(FTDIContext $ftdi, int $errorch, int $enable): int
ftdiGetEeprom FTDI::ftdiGetEeprom(FTDIContext $ftdi): FTDIEeprom
ftdiEepromInitDefaults FTDI::ftdiEepromInitDefaults(FTDIContext $ftdi, mixed $manufacturer, mixed $product, mixed $serial): int
ftdiEepromSetStrings FTDI::ftdiEepromSetStrings(FTDIContext $ftdi, mixed $manufacturer, mixed $product, mixed $serial): int
ftdiEepromGetStrings FTDI::ftdiEepromGetStrings(FTDIContext $ftdi): array
ftdiEepromBuild FTDI::ftdiEepromBuild(FTDIContext $ftdi): int
ftdiEepromDecode FTDI::ftdiEepromDecode(FTDIContext $ftdi, int $verbose): int
ftdiGetEepromValue FTDI::ftdiGetEepromValue(FTDIContext $ftdi, int $valueName): int
ftdiSetEepromValue FTDI::ftdiSetEepromValue(FTDIContext $ftdi, int $valueName, int $value): int
ftdiGetEepromBuf FTDI::ftdiGetEepromBuf(FTDIContext $ftdi, int $size): string
ftdiSetEepromBuf FTDI::ftdiSetEepromBuf(FTDIContext $ftdi, mixed $buf): int
ftdiSetEepromUserData FTDI::ftdiSetEepromUserData(FTDIContext $ftdi, mixed $buf): int
setFT232HCbus FTDI::setFT232HCbus(FTDIEeprom $eeprom): string
ftdiReadEepromLocation FTDI::ftdiReadEepromLocation(FTDIContext $ftdi, int $eepromAddr): int
ftdiReadEeprom FTDI::ftdiReadEeprom(FTDIContext $ftdi): int
ftdiReadChipId FTDI::ftdiReadChipId(FTDIContext $ftdi): array
ftdiWriteEepromLocation FTDI::ftdiWriteEepromLocation(FTDIContext $ftdi, int $eepromAddr, int $eepromVal): int
ftdiWriteEeprom FTDI::ftdiWriteEeprom(FTDIContext $ftdi): int
ftdiEraseEeprom FTDI::ftdiEraseEeprom(FTDIContext $ftdi): int
ftdiGetErrorString FTDI::ftdiGetErrorString(FTDIContext $ftdi): string