Rearrange order of functions

This commit is contained in:
Drashna Jael're
2025-09-08 23:13:19 -07:00
parent 96baa67420
commit 2510208658
2 changed files with 23 additions and 8 deletions

View File

@@ -42,8 +42,6 @@ void i2c_init(void);
*/
i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout);
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);
#if defined(__AVR__) || defined(__DOXYGEN__)
/**
* \brief Send multiple bytes from PROGMEM to the selected I2C device.
@@ -74,6 +72,23 @@ 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.
*

View File

@@ -154,18 +154,18 @@ i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length,
return i2c_epilogue(status);
}
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) {
i2cStart(&I2C_DRIVER, &i2cconfig);
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (address >> 1), tx_data, tx_length, rx_data, rx_length, TIME_MS2I(timeout));
return i2c_epilogue(status);
}
i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout) {
i2cStart(&I2C_DRIVER, &i2cconfig);
msg_t status = i2cMasterReceiveTimeout(&I2C_DRIVER, (address >> 1), data, length, TIME_MS2I(timeout));
return i2c_epilogue(status);
}
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) {
i2cStart(&I2C_DRIVER, &i2cconfig);
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (address >> 1), tx_data, tx_length, rx_data, rx_length, TIME_MS2I(timeout));
return i2c_epilogue(status);
}
i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) {
i2cStart(&I2C_DRIVER, &i2cconfig);