I'm trying to use the RFDuino with a Sparkfun Razor AHARS board. I'm receiving yaw, pitch and roll values over the serial link. The values are binary floating point, which are 4 bytes each. I have the AHARS running in a mode where it sends me one frame (12 bytes) each time I send it a request, so buffer overruns shouldn't be an issue. Nevertheless, I'm losing characters at 9600 baud.
I created a minimal test case that shows the problem. I have a sender, sending a fixed pattern of data, and a receiver, reading the serial port and checking for the expected data.
The sender, running on the Sparkfun board waits to receive a 'g' character, and then sends serial data continuously at 9600 baud, cycling through the values 0..255. The receiver just sends the 'g', and then monitors the serial port (actually it uses the Arduino serialEvent hook), and places the characters in a ring buffer. If the receiver gets a character other than the next byte in the sequence, it sets one of the GPIOs to high, and echoes the contents of the ring buffer (up to 10 bytes), so that I can see the discrepancy on my logic analyzer.
With BLE not enabled, the first byte is always missed, and then the link runs reliably. With BLE enabled, the first byte always arrived correctly, but a byte gets dropped every couple of seconds. The logic analyzer shows the incoming data looking as it should.
I'm attaching the two sketches. I could also submit files from the Saleae logic analyzer if those are of interest.
Any suggestions or workaround ideas?