115 uint16_t vid, uint16_t pid,
int devnum,
const char *usbserial,
116 int usb_read_timeout_ms,
int cmd_retries,
int debug_messages,
150 uint16_t vid, uint16_t pid,
int devnum,
const char *usbserial,
151 int usb_read_timeout_ms,
int cmd_retries,
int debug_messages,
152 int trace_packets,
int scan_serial,
mcp2221_t **out_dev);
174 uint16_t vid, uint16_t pid,
int devnum,
const char *usbserial,
199 uint16_t vid, uint16_t pid,
int devnum,
const char *usbserial,
200 int i2c_speed_hz,
int scan_serial,
mcp2221_t **out_dev);
mcp2221_error_code_t mcp2221_reset(mcp2221_t *dev)
Reset the MCP2221.
mcp2221_error_code_t mcp2221_open(uint16_t vid, uint16_t pid, int devnum, const char *usbserial, int usb_read_timeout_ms, int cmd_retries, int debug_messages, int trace_packets, mcp2221_t **out_dev)
Open an MCP2221 device.
mcp2221_error_code_t mcp2221_i2c_set_speed(mcp2221_t *dev, uint32_t i2c_speed_hz)
Set the I2C bus clock frequency.
mcp2221_error_code_t mcp2221_send_cmd(mcp2221_t *dev, const uint8_t *buf, size_t len, uint8_t *response)
Send a raw MCP2221 command.
mcp2221_error_code_t mcp2221_i2c_write_ex(mcp2221_t *dev, uint8_t addr, const uint8_t *data, size_t len, mcp2221_i2c_kind_t kind, int i2c_timeout_ms)
Write data to an I2C device with an explicit transfer timeout.
mcp2221_error_code_t mcp2221_i2c_read_simple(mcp2221_t *dev, uint8_t addr, uint8_t *data, size_t len, mcp2221_i2c_kind_t kind)
Read data from an I2C device using the default transfer timeout.
mcp2221_error_code_t mcp2221_i2c_read_ex(mcp2221_t *dev, uint8_t addr, uint8_t *data, size_t len, mcp2221_i2c_kind_t kind, int i2c_timeout_ms)
Read data from an I2C device with an explicit transfer timeout.
mcp2221_error_code_t mcp2221_i2c_status(mcp2221_t *dev, mcp2221_i2c_status_t *st)
Read the current MCP2221 I2C engine status.
mcp2221_error_code_t mcp2221_open_simple(uint16_t vid, uint16_t pid, int devnum, const char *usbserial, int i2c_speed_hz, mcp2221_t **out_dev)
Open and initialize an MCP2221 using an EasyMCP2221-style setup.
mcp2221_error_code_t mcp2221_i2c_release(mcp2221_t *dev)
Release the MCP2221 I2C engine.
mcp2221_error_code_t mcp2221_i2c_write_simple(mcp2221_t *dev, uint8_t addr, const uint8_t *data, size_t len, mcp2221_i2c_kind_t kind)
Write data to an I2C device using the default transfer timeout.
struct mcp2221_device mcp2221_t
Opaque MCP2221 device handle.
mcp2221_error_code_t mcp2221_open_scan(uint16_t vid, uint16_t pid, int devnum, const char *usbserial, int usb_read_timeout_ms, int cmd_retries, int debug_messages, int trace_packets, int scan_serial, mcp2221_t **out_dev)
Open an MCP2221 device, optionally scanning the flash serial number.
mcp2221_error_code_t mcp2221_revision(mcp2221_t *dev, mcp2221_revision_t *revision)
Read the MCP2221 hardware and firmware revision.
void mcp2221_close(mcp2221_t *dev)
Close an MCP2221 device handle.
mcp2221_error_code_t mcp2221_open_simple_scan(uint16_t vid, uint16_t pid, int devnum, const char *usbserial, int i2c_speed_hz, int scan_serial, mcp2221_t **out_dev)
Open and initialize an MCP2221 with optional flash-serial scanning.
mcp2221_i2c_kind_t
I2C transfer kind.
@ MCP2221_I2C_KIND_NORMAL
@ MCP2221_I2C_KIND_REPEATED_START
@ MCP2221_I2C_KIND_NO_STOP
Error codes returned by the libeasymcp2221 v2 API.
mcp2221_error_code_t
Error codes used by libeasymcp2221.
Error-code formatting helpers.
Public symbol-visibility and C/C++ linkage helpers.
#define MCP2221_API
Export or import a public libeasymcp2221 API symbol.
#define MCP2221_END_DECLS
End a block started by MCP2221_BEGIN_DECLS.
#define MCP2221_BEGIN_DECLS
Begin a block of declarations using C linkage.
Caller-owned I2C target context.
Snapshot of the MCP2221 I2C engine status.
MCP2221 hardware and firmware revision.