int fmradio_i2c_write(unsigned char address, const unsigned char* buf, int count) { int i,x=0; fmradio_i2c_start(); fmradio_i2c_outb(address & 0xfe); if (fmradio_i2c_getack()) { for (i=0; i<count; i++) { fmradio_i2c_outb(buf[i]); if (!fmradio_i2c_getack()) { x=-2; break; } } } else { logf("fmradio_i2c_write() - no ack\n"); x=-1; } fmradio_i2c_stop(); return x; }
int fmradio_i2c_read(unsigned char address, unsigned char* buf, int count) { int i,x=0; fmradio_i2c_start(); fmradio_i2c_outb(address | 1); if (fmradio_i2c_getack()) { for (i=count; i>0; i--) { *buf++ = fmradio_i2c_inb(); fmradio_i2c_ack(i == 1); } } else x=-1; fmradio_i2c_stop(); return x; }