I have created simple DTMF detector and generator for STM32-103STK platform (olimex). It is based on STM32 cortex-m3 cpu, and should be easily ported to another platforms as well.
DTMF generator is based on AVR314 appnote, and the detector is my practice in signal processing using "Goertzel algorithm". Everything is written for integer/fixedpoint arithmetics. (no floats at all)
The source is not perfect and still needs some final touch. Right now the detector works and sets the generator to whatever it hears on input. The STM32-103stk board has integrated microphone amplifier and headphone amplifier that is fed from PWM output (through series of filters)
Generator generates signal using PWM, by changing the duty cycle each period. Two sine signals (low and high) are generated using LUT and mixed before feeding into the PWM.
Detection is done by using 8 simultaneous signal detectors. One for each frequency in dtmf. After 205samples energie of each frequency is calculated and peak detected.