ZAP_COMMAND_GENERATE_RING_OFF,
ZAP_COMMAND_OFFHOOK,
ZAP_COMMAND_ONHOOK,
+ ZAP_COMMAND_FLASH,
ZAP_COMMAND_ENABLE_PROGRESS_DETECT,
ZAP_COMMAND_DISABLE_PROGRESS_DETECT,
ZAP_COMMAND_TRACE_INPUT,
zap_clear_flag_locked(zchan, ZAP_CHANNEL_OFFHOOK);
}
break;
+ case ZAP_COMMAND_FLASH:
+ {
+ int command = ZT_FLASH;
+ if (ioctl(zchan->sockfd, ZT_HOOK, &command)) {
+ snprintf(zchan->last_error, sizeof(zchan->last_error), "FLASH Failed");
+ return ZAP_FAIL;
+ }
+ }
+ break;
case ZAP_COMMAND_GENERATE_RING_ON:
{
int command = ZT_RING;
if (zap_buffer_read(zchan->gen_dtmf_buffer, digits, dblen) && !zap_strlen_zero_buf(digits)) {
zap_log(ZAP_LOG_DEBUG, "%d:%d GENERATE DTMF [%s]\n", zchan->span_id, zchan->chan_id, digits);
- for (cur = digits; *cur; cur++) {
+ cur = digits;
+
+ if (*cur == 'F') {
+ zap_channel_command(zchan, ZAP_COMMAND_FLASH, NULL);
+ cur++;
+ }
+
+ for (; *cur; cur++) {
int wrote = 0;
if ((wrote = teletone_mux_tones(&zchan->tone_session, &zchan->tone_session.TONES[(int)*cur]))) {
zap_buffer_write(zchan->dtmf_buffer, zchan->tone_session.buffer, wrote * 2);