case I2C_EVENT_SLAVE_TX: iox_data[0] = 0x49;//H iox_data[1] = 0x48;//i iox_xfer.txBuff = iox_data;// buffer[0]; break; |
/* Slave event handler for simulated EEPROM */ static void i2c_iox_events(I2C_ID_T id, I2C_EVENT_T event) { switch (event) { case I2C_EVENT_DONE: iox_xfer.rxBuff = &iox_data[1]; iox_xfer.rxSz = sizeof(iox_data); iox_xfer.txBuff = (const uint8_t *) iox_data; iox_xfer.txSz = sizeof(iox_data) + 1; break; case I2C_EVENT_SLAVE_RX: iox_xfer.rxBuff = &iox_data[1]; iox_xfer.rxSz = sizeof(iox_data); i2c_iox_update_regs(1); break; case I2C_EVENT_SLAVE_TX: if (iox_xfer.txSz == 1) { iox_xfer.txBuff = (const uint8_t *) iox_data[0]; iox_xfer.txSz = sizeof(iox_data) + 1; } break; } } |
/*-------- IO Expansion slave device implementation ----------*/ /* Update IN/OUT port states to real devices */ void i2c_iox_update_regs(int ops) { if (ops & 1) {/* update out port */ Board_LED_Set(0, iox_data[1] & 1); Board_LED_Set(1, iox_data[1] & 2); Board_LED_Set(2, iox_data[1] & 4); Board_LED_Set(3, iox_data[1] & 8); } } |