Caller ID FSK access

An issue that I have right now is that my Call Waiting lacks Call Waiting Caller ID (CWCID). I’ve been thinking about this for a while, since I need to be able to send CAS signal followed by the FSK for this properly. I haven’t been able to find any good orange box utilities for Linux, but since chan_dahdi has everything needed for this already, I’m trying to see if there’s any way I can make use of what’s already in the DAHDI channel driver, in a channel-agnostic way.

The relevant places in chan_dahdi.c seem to be around lines 1510 and 5050, roughly.

I’m wondering what the best way would be to get access to these underlying functions in the dialplan, like send_callerid(), for instance. Generating the CAS signal using PlayTones is trivial enough, but I think it would be foolish to try to generate FSK that way, and I don’t want to try.

Is there any way this is exposed that could be used from the dialplan? Or would I be looking at developing some kind of custom mini application here to do that? I’m assuming it would be best to try to leverage what’s already in Asterisk to do this, and it seems like tapping into DAHDI would be the best way to do this. Any thoughts?