open a terminal window, change to the directory where you downloaded the files above, and run these commands:
Photon:
dfu-util -d 2b04:d006 -a 0 -s 0x8020000 -D system-part1_044_i2c.bin
dfu-util -d 2b04:d006 -a 0 -s 0x8060000:leave -D system-part2_044_i2c.bin
Then flash your app as usual. If you want to revert to v0.4.4 firmware, you can put your Photon in DFU mode and run particle update from the command line if you have the CLI installed.
I noticed something very curious - data was output on Slave B before SendData() was called.
So, I removed the call to SendData() altogether, and now get a single set of repeating data, "HELLO", ie
HELLO [delay] HELLO [delay] HELLO [delay]
(I had changed the data string prior from "ONCE")
Conclusion: I2C Slave B is buffering the data, and is for some reason, repeating the dump of its buffer.
@BDub, no doubt given this new understanding, it changes the focus.....
Q1. Is there a low level I2C "resend" instruction or similar that could explain the Slave B resending its data?
Q2. Why does the work around fix the issue?
I understand fully that another line of investigation is
"Q3. Is there an issue with Slave B firmware/hardware?". To start on this I removed all calls to the Slave A (OLED display) and it worked fine, ie only the single output of data as expected. Can dig in further as need be.