PeterH:
Also, can you estimate the duration of the shortest encoder pulse that you want to be able to detect i.e. based on the speed you'll be turning the dial at, and the encoder resolution?
It seems it may be the speed of the loop after all. Measured the speed of the default loop with switch statement through millis()
25487
26006
26521
27036
so each cycle of the program in its default state takes around 500ms.
the dial() only loop is much faster
27092
27111
27129
27148
Measuring the time dial() detects a pulse when its by itself in loop()
51267
51363
51457
51554
so around 100 ms or less between pulses.
when I measure callStatus by itself in the loop.
90011
90526
91044
91560
So I need to figure out some way to both measure callstatus and dialing accounting for these speeds. The default gsm library for the regular gsm shield contains a delay of 1000ms for each cycle
http://arduino.cc/en/Tutorial/GSMExamplesReceiveVoiceCall
I feel I should probably add this in but it'd make the problem even worse. I don't see how the shield would be able to detect even button presses with all the delays these libraries seem to have built in.