For RobotC:
Prior to our regional competition we were experiencing random false starts in our Autonomous program. It simply bypassed the built-in waitForStart(); command for no apparent reason. Eventually we narrowed it down to a combination of the LEGO color sensor and the HiTechnic motor controllers. With both of these enabled the program would randomly bypass the waitForStart(); function. With either one removed it waited for the FCS to issue the start.
Via the RobotC forums we were pointed in the direction of a modification that others had made to the pre-existing code within the joystick.c library. For them, the modification had fixed similar (but not identical) odd behavior related to the joystick packets. Adding the hogCPU/releaseCPU worked for us. No more false starts. If you experience anything similar to this we’d suggest adding this code to joystick.c before spending a long time trying other solutions. The two additional lines are the ones with the comments…
if (nNoMessageCounter > nNoMessageCounterLimit)
{
hogCPU(); //**************************************** take exclusive control
if (!bOverrideJoystickDisabling)
{
bTempUserMode = joystickCopy.UserMode;
bTempStopPgm = joystickCopy.StopPgm;
memset(joystickCopy, 0, sizeof(joystickCopy));
joystickCopy.UserMode = bTempUserMode;
joystickCopy.StopPgm = bTempStopPgm;
joystickCopy.joy1_TopHat = -1;
joystickCopy.joy2_TopHat = -1;
}
bDisconnected = true;
releaseCPU(); //************************** copying is done, relinquish control
}
Hope this helpful to someone.