[svn-commits] markster: branch 1.4 r4141 - /branches/1.4/kernel/zaptel-base.c
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Fri Apr 4 18:12:05 CDT 2008
Author: markster
Date: Fri Apr 4 18:12:04 2008
New Revision: 4141
URL: http://svn.digium.com/view/zaptel?view=rev&rev=4141
Log:
Allow continuous MFR2 transmission continuously
Modified:
branches/1.4/kernel/zaptel-base.c
Modified: branches/1.4/kernel/zaptel-base.c
URL: http://svn.digium.com/view/zaptel/branches/1.4/kernel/zaptel-base.c?view=diff&rev=4141&r1=4140&r2=4141
==============================================================================
--- branches/1.4/kernel/zaptel-base.c (original)
+++ branches/1.4/kernel/zaptel-base.c Fri Apr 4 18:12:04 2008
@@ -378,6 +378,8 @@
struct zt_tone mfr1[15]; /* MFR1 tones for this zone, with desired length */
struct zt_tone mfr2_fwd[15]; /* MFR2 FWD tones for this zone, with desired length */
struct zt_tone mfr2_rev[15]; /* MFR2 REV tones for this zone, with desired length */
+ struct zt_tone mfr2_fwd_continuous[16]; /* MFR2 FWD tones for this zone, continuous play */
+ struct zt_tone mfr2_rev_continuous[16]; /* MFR2 REV tones for this zone, continuous play */
};
static struct zt_span *spans[ZT_MAX_SPANS];
@@ -1195,6 +1197,48 @@
} else {
res = -EINVAL;
}
+ } else if (chan->digitmode == DIGIT_MODE_MFR2_FWD) {
+ if ((tone >= ZT_TONE_MFR2_FWD_BASE) && (tone <= ZT_TONE_MFR2_FWD_MAX)) {
+ chan->dialing = 1;
+ res = 0;
+ tone -= ZT_TONE_MFR2_FWD_BASE;
+ if (chan->curzone) {
+ /* Have a tone zone */
+ if (chan->curzone->mfr2_fwd_continuous[tone].tonesamples) {
+ chan->curtone = &chan->curzone->mfr2_fwd_continuous[tone];
+ res = 0;
+ } else {
+ /* Indicate that zone is loaded but no such tone exists */
+ res = -ENOSYS;
+ }
+ } else {
+ /* Note that no tone zone exists at the moment */
+ res = -ENODATA;
+ }
+ } else {
+ res = -EINVAL;
+ }
+ } else if (chan->digitmode == DIGIT_MODE_MFR2_REV) {
+ if ((tone >= ZT_TONE_MFR2_REV_BASE) && (tone <= ZT_TONE_MFR2_REV_MAX)) {
+ chan->dialing = 1;
+ res = 0;
+ tone -= ZT_TONE_MFR2_REV_BASE;
+ if (chan->curzone) {
+ /* Have a tone zone */
+ if (chan->curzone->mfr2_rev_continuous[tone].tonesamples) {
+ chan->curtone = &chan->curzone->mfr2_rev_continuous[tone];
+ res = 0;
+ } else {
+ /* Indicate that zone is loaded but no such tone exists */
+ res = -ENOSYS;
+ }
+ } else {
+ /* Note that no tone zone exists at the moment */
+ res = -ENODATA;
+ }
+ } else {
+ res = -EINVAL;
+ }
} else {
chan->dialing = 0;
res = -EINVAL;
@@ -2797,9 +2841,16 @@
t->next = &mfr1_silence;
break;
case MFR2_FWD_TONE:
+ t->tonesamples = global_dialparams.mfr2_tonelen;
+ t->next = &dtmf_silence;
+ z->mfr2_fwd_continuous[td.tone] = *t;
+ z->mfr2_fwd_continuous[td.tone].next = &z->mfr2_fwd_continuous[td.tone];
+ break;
case MFR2_REV_TONE:
t->tonesamples = global_dialparams.mfr2_tonelen;
t->next = &dtmf_silence;
+ z->mfr2_rev_continuous[td.tone] = *t;
+ z->mfr2_rev_continuous[td.tone].next = &z->mfr2_rev_continuous[td.tone];
break;
}
}
More information about the svn-commits
mailing list