#include #include #include #include #include struct _i2cee i2cee; int32_t eeptr; int32_t eevalue; int32_t eestatus; void i2cee_identify(void){ uint8_t i; uint8_t buffer[4]; uint16_t result; for (i=0;i<8;i++){ buffer[0] = 0x00; buffer[1] = 0x00; result = (i2c_transfer( 0xA0 + (i<<1), buffer, 2 )); if (result == 2){ i2cee.emask |= (1<flags.read){ switch (telegram->regno){ case 0x9000: telegram->i32 = i2cee_size(); return 0; case 0x9001: telegram->i32 = i2cee.emask; return 0; case 0x9010: telegram->i32 = eeptr; return 0; case 0x9011: telegram->i32 = eevalue; return 0; case 0x9012: telegram->i32 = eestatus; return 0; }; } else { switch (telegram->regno){ case 0x9010: eeptr = telegram->i32; i2cee_load(eeptr,&eevalue,4); return 0; case 0x9011: eevalue = telegram->i32; eestatus = i2cee_save(eeptr,&eevalue,4); return 0; case 0x9012: return 0; }; }; return -1; };