I am creating a HID application that sends a HID report at a periodic interval. The period is adjustable from 10ms to 30ms, and the report is generated by the MSP430 itself (i.e. it doesn't require a serial port to send the data).
What I am seeing is that when I set the period to 10ms, the bluetooth OTA traces have gaps in them. I may see 5-10 messages in a row that are on the periodic 10ms tick, and then it goes silent for 20-30ms and then sends a couple of the queued messages quickly (i.e. within 1-2ms of each other).
This pattern repeats many times and is easy to reproduce.
To generate the 10ms pattern, I am using:
BTPS_AddFunctionToScheduler(hidTxLoop, NULL, 10);
This should create a new task in the scheduler that executes every 10ms. The task populates a 10-byte HID report and calls HID_Data_Write().
The question I have is, why is my data not coming out at a reliable 10ms pacing? Is the Bluetopia stack blocking for a long period of time, or is the scheduler tick not very accurate, or something else?
The only other task I have is the IdleFunction() one that came with the demo, and I adjusted it to run on a 10ms tick as well so there shouldn't be much else competing for resources on the system.
I'll start profiling the tasks using the LED GPIOs to see if I can determine whether the tasks are being run at the specified tick interval or not. I thought I'd ask the question here first to see if anyone had ideas.
Thanks!