+ while (retries--)
+ {
+ wr_len = eeprom_writeRaw(_fd, _buf, size);
+ /* rewind to verify what we have just written */
+ kfile_seek(_fd, -(kfile_off_t)wr_len, KSM_SEEK_CUR);
+ if (wr_len == size
+ && eeprom_verify(fd, _buf, wr_len))
+ {
+ /* Forward to go after what we have written*/
+ kfile_seek(_fd, wr_len, KSM_SEEK_CUR);
+ return wr_len;
+ }
+ }
+ return wr_len;
+}
+
+
+/**
+ * Copy \a size bytes
+ * from eeprom to RAM to buffer \a _buf.
+ *
+ * \return the number of bytes read.
+ */
+static size_t eeprom_read(struct KFile *_fd, void *_buf, size_t size)
+{
+ Eeprom *fd = EEPROM_CAST(_fd);
+ uint8_t addr_buf[2];
+ uint8_t addr_len;
+ size_t rd_len = 0;
+ uint8_t *buf = (uint8_t *)_buf;