The both get the job done, but there are differences:
- isNewControlData() needs to be polled to determine when new data is ready
- isNewControlData() always clears the internal state "newControlData", so you can't have two threads waiting for new data. Note that the IterativeRobot class calls isNewControlData(), so IterativeRobots can't really call it anywhere else.
- waitForData() uses the standard Java wait/notify routines, and blocks the caller until data is ready (or the time expires).