Wird dann folgende Paketgröße ausreichend sein?:
1 Längenbyte(Anzahl an Datenbytes die übertragen werden)
1 ID-byte
X Datenbytes
2 CRC-bytes(oder änliches)

Bezüglich R/W Bit:
Beispiel, Master will vom Slave Daten hollen:
1) I2C Start.
2) Setzte Write Bit (Multimaster fordert Daten vom slave mit einer bestimmten ID an)
3) Setzte Read Bit(Multimaster holt Antwort ein "Paket war in Ordnung"/"Paket war fehlerhaft")
4) Wenn "Paket war in Ordnung" als Antwort kommt. gehe zu Punkt 5.
Wenn "Paket war fehlerhaft" gehe zu Punkt 2 zurück.
5) Warte auf Paket mit benötigten Daten.
6) I2C Stop

Beispiel, Master will zum Slave Daten schicken:
1) I2C Start.
2) Setzte Write Bit (Multimaster schickt Daten zum slave mit einer bestimmten ID)
3) Setzte Read Bit(Multimaster holt Antwort ein "Paket war in Ordnung"/"Paket war fehlerhaft")
4) Wenn "Paket war in Ordnung" als Antwort kommt. gehe zu Punkt 5.
Wenn "Paket war fehlerhaft" gehe zu Punkt 2 zurück.
Wenn nach X Zyklen keine Antwort vom Slave kommt, gehe zu Punkt 2 zurück(sollte nie eine Antwort kommen, hängt sich das Gerät auf)
5) I2C Stop

So wie ich das sehe, braucht der Slave doch noch ein Signal ob er nun Daten zurück schicken soll oder ob er Daten speichern soll.
Oder der Slave entscheidet selber anhand des Längenbytes im Paket(sollte dieses 0 sein, nimmt er an, er soll Daten mit entsprechender ID an den Master zurück schicken) wie die restliche Komunikation auszusehen hat.

mfg