X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/rsbs2/blobdiff_plain/77ad1a84f7fa19a455a228d7b9679291e94550ea..18037a5ad01238943aa7b82104787caaae838ea3:/bmc/i2c.c diff --git a/bmc/i2c.c b/bmc/i2c.c index 7104758..92c00cc 100644 --- a/bmc/i2c.c +++ b/bmc/i2c.c @@ -3,32 +3,87 @@ #include #include "i2c.h" #include "bmc.h" +#include "ipmb.h" #define TWCR_ACK TWCR = (1<= sizeof(i2c_databuf)) { + TWCR_RESET; + i2c_pos = 0x00; + break; + } + i2c_databuf[i2c_pos] = TWDR; + i2c_pos++; TWCR_ACK; break; @@ -45,20 +105,16 @@ ISR (TWI_vect, ISR_BLOCK) #ifdef DEBUG printf("I2C: STOP received\n"); #endif - decode_bmc_cmd((unsigned char*)databuf, pos); - pos = 0x00; + i2c_len = i2c_pos; + i2c_pos = 0x00; + i2c_done = 0x01; TWCR_RESET; break; - case TW_ST_SLA_ACK: - case TW_ST_DATA_ACK: - printf("I2C: Data requested\n"); - TWDR = 0x00; - TWCR_ACK; - break; - default: - printf("I2C: Unimplemented status 0x%02x\n", TW_STATUS); +#ifdef DEBUG + printf("I2C: Unimplemented status 0x%02x\n", (TW_STATUS & 0xf8)); +#endif TWCR_RESET; break; }