at24c
uint16_t rem = at24c->at_len - at24c->at_curaddr + 1;
(void) memcpy(buf, &at24c->at_data[at24c->at_curaddr], toread);
at24c->at_curaddr += toread;
if (at24c->at_curaddr == at24c->at_len)
at24c->at_curaddr = 0;
at24c_t *at24c = calloc(1, sizeof (at24c_t));
if (at24c == NULL) {
at24c->at_len = len;
at24c->at_data = calloc(sizeof (uint8_t), len);
if (at24c->at_data == NULL) {
(void) memset(at24c->at_data, 0xff, at24c->at_len);
(void) memcpy(at24c->at_data, data, dlen);
at24c->at_page = page;
at24c->at_addr16 = addr16;
dev->dev_arg = at24c;
at24c_t *at24c = arg;
if (at24c->at_addr16) {
at24c->at_curaddr = buf[0] << 8;
at24c->at_curaddr |= buf[1];
at24c->at_curaddr = buf[0];
uint32_t page_start = at24c->at_curaddr &
~(at24c->at_page - 1);
uint32_t page_end = page_start + at24c->at_page - 1;
uint32_t page_rem = page_end - at24c->at_curaddr + 1;
(void) memcpy(&at24c->at_data[at24c->at_curaddr], buf, towrite);
at24c->at_curaddr += towrite;
if (at24c->at_curaddr == page_end + 1) {
at24c->at_curaddr = page_start;
at24c_t *at24c = arg;