summaryrefslogtreecommitdiff
path: root/kernel/zaptel.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/zaptel.h')
-rw-r--r--kernel/zaptel.h102
1 files changed, 71 insertions, 31 deletions
diff --git a/kernel/zaptel.h b/kernel/zaptel.h
index b37a2c3..e0db194 100644
--- a/kernel/zaptel.h
+++ b/kernel/zaptel.h
@@ -351,7 +351,7 @@ char netdev_name[16]; /*name for the hdlc network device*/
typedef struct zt_sfconfig
{
int chan; /* Channel we're applying this to (0 to use name) */
-char name[40]; /* Name of channel to use */
+char name[40]; /* Name of channel to use */
long rxp1; /* receive tone det. p1 */
long rxp2; /* receive tone det. p2 */
long rxp3; /* receive tone det. p3 */
@@ -371,14 +371,13 @@ int readbufs; /* How many read buffers are full (read-only) */
int writebufs; /* How many write buffers are full (read-only) */
} ZT_BUFFERINFO;
-typedef struct zt_dialparams
-{
-int mfv1_tonelen; /* MF tone length (KP = this * 5/3) */
-int dtmf_tonelen; /* DTMF tone length */
-int reserved[4]; /* Reserved for future expansion -- always set to 0 */
+typedef struct zt_dialparams {
+ int mfv1_tonelen; /* MF R1 tone length for digits */
+ int dtmf_tonelen; /* DTMF tone length */
+ int mfr2_tonelen; /* MF R2 tone length */
+ int reserved[3]; /* Reserved for future expansion -- always set to 0 */
} ZT_DIAL_PARAMS;
-
typedef struct zt_dynamic_span {
char driver[20]; /* Which low-level driver to use */
char addr[40]; /* Destination address */
@@ -387,7 +386,7 @@ typedef struct zt_dynamic_span {
int spanno; /* Span number (filled in by zaptel) */
} ZT_DYNAMIC_SPAN;
-/* Define the max # of outgoing DTMF or MFv1 digits to queue in-kernel */
+/* Define the max # of outgoing DTMF, MFR1 or MFR2 digits to queue in-kernel */
#define ZT_MAX_DTMF_BUF 256
#define ZT_DIAL_OP_APPEND 1
@@ -398,10 +397,9 @@ typedef struct zt_dynamic_span {
#define ZT_LAW_MULAW 1 /* Mu-law */
#define ZT_LAW_ALAW 2 /* A-law */
-typedef struct zt_dialoperation
-{
-int op;
-char dialstr[ZT_MAX_DTMF_BUF];
+typedef struct zt_dialoperation {
+ int op;
+ char dialstr[ZT_MAX_DTMF_BUF];
} ZT_DIAL_OPERATION;
@@ -804,7 +802,9 @@ struct zt_hwgain{
#define ZT_TONE_MAX 16
#define ZT_TONE_DTMF_BASE 64
-#define ZT_TONE_MF_BASE 80
+#define ZT_TONE_MFR1_BASE 80
+#define ZT_TONE_MFR2_FWD_BASE 96
+#define ZT_TONE_MFR2_REV_BASE 112
enum {
ZT_TONE_DTMF_0 = ZT_TONE_DTMF_BASE,
@@ -828,24 +828,64 @@ enum {
#define ZT_TONE_DTMF_MAX ZT_TONE_DTMF_D
enum {
- ZT_TONE_MF_0 = ZT_TONE_MF_BASE,
- ZT_TONE_MF_1,
- ZT_TONE_MF_2,
- ZT_TONE_MF_3,
- ZT_TONE_MF_4,
- ZT_TONE_MF_5,
- ZT_TONE_MF_6,
- ZT_TONE_MF_7,
- ZT_TONE_MF_8,
- ZT_TONE_MF_9,
- ZT_TONE_MF_s,
- ZT_TONE_MF_p,
- ZT_TONE_MF_A,
- ZT_TONE_MF_B,
- ZT_TONE_MF_C,
+ ZT_TONE_MFR1_0 = ZT_TONE_MFR1_BASE,
+ ZT_TONE_MFR1_1,
+ ZT_TONE_MFR1_2,
+ ZT_TONE_MFR1_3,
+ ZT_TONE_MFR1_4,
+ ZT_TONE_MFR1_5,
+ ZT_TONE_MFR1_6,
+ ZT_TONE_MFR1_7,
+ ZT_TONE_MFR1_8,
+ ZT_TONE_MFR1_9,
+ ZT_TONE_MFR1_KP,
+ ZT_TONE_MFR1_ST,
+ ZT_TONE_MFR1_STP,
+ ZT_TONE_MFR1_ST2P,
+ ZT_TONE_MFR1_ST3P,
+};
+
+#define ZT_TONE_MFR1_MAX ZT_TONE_MFR1_ST3P
+
+enum {
+ ZT_TONE_MFR2_FWD_1 = ZT_TONE_MFR2_FWD_BASE,
+ ZT_TONE_MFR2_FWD_2,
+ ZT_TONE_MFR2_FWD_3,
+ ZT_TONE_MFR2_FWD_4,
+ ZT_TONE_MFR2_FWD_5,
+ ZT_TONE_MFR2_FWD_6,
+ ZT_TONE_MFR2_FWD_7,
+ ZT_TONE_MFR2_FWD_8,
+ ZT_TONE_MFR2_FWD_9,
+ ZT_TONE_MFR2_FWD_10,
+ ZT_TONE_MFR2_FWD_11,
+ ZT_TONE_MFR2_FWD_12,
+ ZT_TONE_MFR2_FWD_13,
+ ZT_TONE_MFR2_FWD_14,
+ ZT_TONE_MFR2_FWD_15,
+};
+
+#define ZT_TONE_MFR2_FWD_MAX ZT_TONE_MFR2_FWD_15
+
+enum {
+ ZT_TONE_MFR2_REV_1 = ZT_TONE_MFR2_REV_BASE,
+ ZT_TONE_MFR2_REV_2,
+ ZT_TONE_MFR2_REV_3,
+ ZT_TONE_MFR2_REV_4,
+ ZT_TONE_MFR2_REV_5,
+ ZT_TONE_MFR2_REV_6,
+ ZT_TONE_MFR2_REV_7,
+ ZT_TONE_MFR2_REV_8,
+ ZT_TONE_MFR2_REV_9,
+ ZT_TONE_MFR2_REV_10,
+ ZT_TONE_MFR2_REV_11,
+ ZT_TONE_MFR2_REV_12,
+ ZT_TONE_MFR2_REV_13,
+ ZT_TONE_MFR2_REV_14,
+ ZT_TONE_MFR2_REV_15,
};
-#define ZT_TONE_MF_MAX ZT_TONE_MF_C
+#define ZT_TONE_MFR2_REV_MAX ZT_TONE_MFR2_REV_15
#define ZT_MAX_CADENCE 16
@@ -1770,8 +1810,8 @@ void zt_alarm_notify(struct zt_span *span);
/* Initialize a tone state */
void zt_init_tone_state(struct zt_tone_state *ts, struct zt_tone *zt);
-/* Get a given DTMF or MF tone struct, suitable for zt_tone_nextsample. */
-struct zt_tone *zt_dtmf_tone(const struct zt_chan *chan, char digit);
+/* Get a given MF tone struct, suitable for zt_tone_nextsample. */
+struct zt_tone *zt_mf_tone(const struct zt_chan *chan, char digit, int digitmode);
/* Echo cancel a receive and transmit chunk for a given channel. This
should be called by the low-level driver as close to the interface