Our Asterisk machine was having problems with Pulse Dial phones where the dial pulses started about 500ms (half a second) after going off hook.
We tracked this down to a DEBOUNCE timer in dahdi-base.c with the value set in a dadhi/include/kernel.h file.
The setting was set to 600. Lowering it 300 solved the problem.
Now our equipment that goes off hook then very almost immediately sends dial pulses works fine.
For interested readers, the equipment is a combination of a telephone, a strowger exchange and Asterisk.
The user dials 402 on a phone connected to a strowger. The strowger acts on the first digit (the ‘4’) and when it receives a ‘4’ it opens up a path to the Asterisk machine and then passes through the remaining pulse dial digits.
So Asterisk machine receives the ‘0’ and the ‘2’.
However when the strowger opens the path to asterisk (and asterisk sees an Off-Hook status) our dahdi drivers were waiting 600ms before accepting pulse digits. As a result asterisk chopped of the start of the pulse train and received ‘9’ ‘2’ and not ‘0’ ‘2’,
All sorted now thanks to open source drivers and being able to lower the debounce period in DAHDI for when it is safe to start accepting Pulse Dial after going off hook.