libeasymcp2221 2.0.3
mcp2221_smbus.h
Go to the documentation of this file.
1
6#ifndef MCP2221_SMBUS_H
7#define MCP2221_SMBUS_H
8
9#include <stddef.h>
10#include <stdint.h>
11
12#include "mcp2221.h"
13
15
23#define MCP2221_I2C_SMBUS_BLOCK_MAX 255
24
35typedef struct mcp2221_smbus {
50
64
94MCP2221_API mcp2221_error_code_t mcp2221_smbus_init(mcp2221_smbus_t *bus, mcp2221_t *existing_mcp, int device_index, uint16_t vid, uint16_t pid,
95 const char *usbserial, uint32_t i2c_speed_hz);
96
109
121
133
145MCP2221_API mcp2221_error_code_t mcp2221_smbus_read_byte_data(mcp2221_smbus_t *bus, uint8_t addr, uint8_t reg, uint8_t *value);
146
159
174MCP2221_API mcp2221_error_code_t mcp2221_smbus_read_word_data(mcp2221_smbus_t *bus, uint8_t addr, uint8_t reg, int16_t *value);
175
190
207MCP2221_API mcp2221_error_code_t mcp2221_smbus_process_call(mcp2221_smbus_t *bus, uint8_t addr, uint8_t reg, int16_t value, int16_t *response);
208
226MCP2221_API mcp2221_error_code_t mcp2221_smbus_read_block_data(mcp2221_smbus_t *bus, uint8_t addr, uint8_t reg, uint8_t *buffer, size_t *length);
227
244MCP2221_API mcp2221_error_code_t mcp2221_smbus_write_block_data(mcp2221_smbus_t *bus, uint8_t addr, uint8_t reg, const uint8_t *data, size_t length);
245
267MCP2221_API mcp2221_error_code_t mcp2221_smbus_block_process_call(mcp2221_smbus_t *bus, uint8_t addr, uint8_t reg, const uint8_t *data,
268 size_t length, uint8_t *response, size_t *resp_len);
269
286MCP2221_API mcp2221_error_code_t mcp2221_smbus_read_i2c_block_data(mcp2221_smbus_t *bus, uint8_t addr, uint8_t reg, uint8_t *buffer, size_t length);
287
304MCP2221_API mcp2221_error_code_t mcp2221_smbus_write_i2c_block_data(mcp2221_smbus_t *bus, uint8_t addr, uint8_t reg, const uint8_t *data,
305 size_t length);
306
308#endif // MCP2221_SMBUS_H
Core MCP2221 device and I2C master API.
struct mcp2221_device mcp2221_t
Opaque MCP2221 device handle.
Definition: mcp2221.h:28
mcp2221_error_code_t
Error codes used by libeasymcp2221.
#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.
mcp2221_error_code_t mcp2221_smbus_read_word_data(mcp2221_smbus_t *bus, uint8_t addr, uint8_t reg, int16_t *value)
Read a 16-bit word from an SMBus command/register.
mcp2221_error_code_t mcp2221_smbus_write_block_data(mcp2221_smbus_t *bus, uint8_t addr, uint8_t reg, const uint8_t *data, size_t length)
Write an SMBus length-prefixed block.
mcp2221_error_code_t mcp2221_smbus_write_byte_data(mcp2221_smbus_t *bus, uint8_t addr, uint8_t reg, uint8_t value)
Write one byte to an SMBus command/register.
void mcp2221_smbus_close(mcp2221_smbus_t *bus)
Close an SMBus context.
mcp2221_error_code_t mcp2221_smbus_block_process_call(mcp2221_smbus_t *bus, uint8_t addr, uint8_t reg, const uint8_t *data, size_t length, uint8_t *response, size_t *resp_len)
Perform an SMBus block process call.
mcp2221_error_code_t mcp2221_smbus_read_block_data(mcp2221_smbus_t *bus, uint8_t addr, uint8_t reg, uint8_t *buffer, size_t *length)
Read an SMBus length-prefixed block.
mcp2221_error_code_t mcp2221_smbus_write_i2c_block_data(mcp2221_smbus_t *bus, uint8_t addr, uint8_t reg, const uint8_t *data, size_t length)
Write a fixed-length I2C block to an SMBus command/register.
mcp2221_error_code_t mcp2221_smbus_write_byte(mcp2221_smbus_t *bus, uint8_t addr, uint8_t value)
Write one byte directly to an SMBus target.
mcp2221_error_code_t mcp2221_smbus_process_call(mcp2221_smbus_t *bus, uint8_t addr, uint8_t reg, int16_t value, int16_t *response)
Perform an SMBus process call.
mcp2221_error_code_t mcp2221_smbus_read_byte_data(mcp2221_smbus_t *bus, uint8_t addr, uint8_t reg, uint8_t *value)
Read one byte from an SMBus command/register.
struct mcp2221_smbus mcp2221_smbus_t
Caller-owned SMBus helper context.
mcp2221_error_code_t mcp2221_smbus_write_word_data(mcp2221_smbus_t *bus, uint8_t addr, uint8_t reg, int16_t value)
Write a 16-bit word to an SMBus command/register.
mcp2221_error_code_t mcp2221_smbus_read_byte(mcp2221_smbus_t *bus, uint8_t addr, uint8_t *value)
Read one byte directly from an SMBus target.
mcp2221_error_code_t mcp2221_smbus_init(mcp2221_smbus_t *bus, mcp2221_t *existing_mcp, int device_index, uint16_t vid, uint16_t pid, const char *usbserial, uint32_t i2c_speed_hz)
Initialize a caller-owned SMBus context.
mcp2221_error_code_t mcp2221_smbus_read_i2c_block_data(mcp2221_smbus_t *bus, uint8_t addr, uint8_t reg, uint8_t *buffer, size_t length)
Read a fixed-length I2C block from an SMBus command/register.
Caller-owned SMBus helper context.
Definition: mcp2221_smbus.h:35
mcp2221_t * mcp
MCP2221 device handle used for SMBus transfers.
Definition: mcp2221_smbus.h:49
int owns_mcp
Ownership flag for mcp.
Definition: mcp2221_smbus.h:62