#include "eeprom_driver.h" #include "i2c_driver.h" #include "config.h" static uint8_t eeprom_initialized; static uint8_t eeprom_init_attempted; static ret_code_t eeprom_last_error; ret_code_t eeprom_init(void) { ret_code_t ret; uint32_t speed = I2C1_SPEED; eeprom_init_attempted = 1; ret = i2c_init(speed); if (ret == RET_OK) { eeprom_initialized = 1; } eeprom_last_error = ret; return ret; } ret_code_t eeprom_write(uint16_t addr, const uint8_t *data, uint32_t len) { ret_code_t ret; if (addr + len > EEPROM_TOTAL_SIZE) { eeprom_last_error = RET_INVALID_PARAM; return RET_INVALID_PARAM; } ret = i2c_mem_write(EEPROM_DEV_ADDR, addr, 1, data, len); eeprom_last_error = ret; return ret; } ret_code_t eeprom_read(uint16_t addr, uint8_t *data, uint32_t len) { ret_code_t ret; if (addr + len > EEPROM_TOTAL_SIZE) { eeprom_last_error = RET_INVALID_PARAM; return RET_INVALID_PARAM; } ret = i2c_mem_read(EEPROM_DEV_ADDR, addr, 1, data, len); eeprom_last_error = ret; return ret; } ret_code_t eeprom_get_last_error(void) { return eeprom_last_error; } uint8_t eeprom_is_initialized(void) { return eeprom_initialized; } void eeprom_reset_status(void) { eeprom_last_error = RET_OK; }