mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-12-17 08:35:33 +08:00
Add I2C Transmit and Receive function (#25637)
* feat: adds a transmit and receive i2c method * fix: address the i2c transmit and receive length on u16 * Add AVR/LUFA implementation Didn't add a progmem version, since that would only apply to receive. Figured it wasn't worth it, but can add. * Rearrange order of functions * Add docs * Fix doc gen error * Fix lint issues * fix more lint issues
This commit is contained in:
@@ -72,6 +72,21 @@ i2c_status_t i2c_transmit_P(uint8_t address, const uint8_t* data, uint16_t lengt
|
||||
*/
|
||||
i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);
|
||||
|
||||
/**
|
||||
* \brief Send multiple bytes and then receive multiple bytes from the selected I2C device.
|
||||
*
|
||||
* \param address The 7-bit I2C address of the device.
|
||||
* \param tx_data A pointer to the data to transmit.
|
||||
* \param tx_length The number of bytes to write. Take care not to overrun the length of `tx_data`.
|
||||
* \param rx_data A pointer to a buffer to read into.
|
||||
* \param rx_length The number of bytes to read. Take care not to overrun the length of `rx_data`.
|
||||
* \param timeout The time in milliseconds to wait for a response from the target device.
|
||||
*
|
||||
* \return `I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
|
||||
*/
|
||||
|
||||
i2c_status_t i2c_transmit_and_receive(uint8_t address, const uint8_t* tx_data, uint16_t tx_length, uint8_t* rx_data, uint16_t rx_length, uint16_t timeout);
|
||||
|
||||
/**
|
||||
* \brief Write to a register with an 8-bit address on the I2C device.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user