18.8.1.3.2 Workflow

  1. Wait for start condition from master and get transfer direction.
    dir = i2c_slave_get_direction_wait(&i2c_slave_instance);
    
  2. Depending on transfer direction, set up buffer to read to or write from, and write or read from master.
    if (dir == I2C_SLAVE_DIRECTION_READ) {
        packet.data = read_buffer;
        i2c_slave_read_packet_wait(&i2c_slave_instance, &packet);
    } else if (dir == I2C_SLAVE_DIRECTION_WRITE) {
        packet.data = write_buffer;
        i2c_slave_write_packet_wait(&i2c_slave_instance, &packet);
    }