X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fdrv%2Feeprom.c;h=26bd90fb3d63a46c8985b483d51cbf495001eaae;hb=c00549cc35cb40d68160db6addb24cc82afe052e;hp=f66135fc0865bdbcc0552ea3e662f4cb0c095a38;hpb=ee668d15beb93a94fbb5d145284c9b39bdfa8c90;p=bertos.git diff --git a/bertos/drv/eeprom.c b/bertos/drv/eeprom.c index f66135fc..26bd90fb 100644 --- a/bertos/drv/eeprom.c +++ b/bertos/drv/eeprom.c @@ -108,6 +108,12 @@ STATIC_ASSERT(countof(mem_info) == EEPROM_CNT); #define CHUNCK_SIZE 16 +/** + * Erase EEPROM. + * \param eep is the Kblock context. + * \param addr eeprom address where start to erase + * \param size number of byte to erase + */ bool eeprom_erase(Eeprom *eep, e2addr_t addr, e2_size_t size) { uint8_t tmp[CHUNCK_SIZE] = { [0 ... (CHUNCK_SIZE - 1)] = 0xFF }; @@ -127,6 +133,13 @@ bool eeprom_erase(Eeprom *eep, e2addr_t addr, e2_size_t size) return true; } +/** + * Verify EEPROM. + * \param eep is the Kblock context. + * \param addr eeprom address where start to verify. + * \param buf buffer of data to compare with eeprom data read. + * \param size number of byte to verify. + */ bool eeprom_verify(Eeprom *eep, e2addr_t addr, const void *buf, size_t size) { uint8_t verify_buf[CHUNCK_SIZE]; @@ -168,9 +181,8 @@ static size_t eeprom_write(KBlock *blk, block_idx_t idx, const void *buf, size_t STATIC_ASSERT(countof(addr_buf) <= sizeof(e2addr_t)); - /* clamp size to memory limit (otherwise may roll back) */ - ASSERT(idx <= blk->blk_cnt); + ASSERT(idx < blk->priv.blk_start + blk->blk_cnt); size = MIN(size, blk->blk_size - offset); if (mem_info[eep->type].has_dev_addr) @@ -217,7 +229,7 @@ static size_t eeprom_readDirect(struct KBlock *_blk, block_idx_t idx, void *_buf STATIC_ASSERT(countof(addr_buf) <= sizeof(e2addr_t)); /* clamp size to memory limit (otherwise may roll back) */ - ASSERT(idx <= blk->blk.blk_cnt); + ASSERT(idx < blk->blk.priv.blk_start + blk->blk.blk_cnt); size = MIN(size, blk->blk.blk_size - offset); e2dev_addr_t dev_addr; @@ -313,10 +325,11 @@ static const KBlockVTable eeprom_unbuffered_vt = /** * Initialize EEPROM module. - * \param b is the Kblock context. + * \param eep is the Kblock context. * \param type is the eeprom device we want to initialize (\see EepromType) * \param i2c context for i2c channel * \param addr is the i2c devide address (usually pins A0, A1, A2). + * \param verify enable the write check. */ void eeprom_init_5(Eeprom *eep, I2c *i2c, EepromType type, e2dev_addr_t addr, bool verify) {