1
#! /bin/sh /usr/share/dpatch/dpatch-run
2
## zaptelh_14.dpatch by Tzafrir Cohen <tzafrir.cohen@xorcom.com>
4
## All lines beginning with `## DP:' are a description of the patch.
5
## DP: New interfaces of zaptel 1.4. This allows building asterisk 1.4
8
diff -urNad zaptel-1.2.9.1.dfsg~/zaptel.h zaptel-1.2.9.1.dfsg/zaptel.h
9
--- zaptel-1.2.9.1.dfsg~/zaptel.h 2006-10-08 00:15:11.000000000 +0200
10
+++ zaptel-1.2.9.1.dfsg/zaptel.h 2006-10-08 00:16:47.000000000 +0200
12
#define ZT_SIG_DACS (__ZT_SIG_DACS | ZT_SIG_CLEAR) /* Cross connect */
13
#define ZT_SIG_EM_E1 (1 << 17) /* E1 E&M Variation */
14
#define ZT_SIG_DACS_RBS ((1 << 18) | __ZT_SIG_DACS) /* Cross connect w/ RBS */
15
+#define ZT_SIG_HARDHDLC ((1 << 19) | ZT_SIG_CLEAR)
17
/* tone flag values */
18
#define ZT_REVERSE_RXTONE 1 /* reverse polarity rx tone logic */
21
#define ZT_SETPOLARITY _IOW (ZT_CODE, 92, int)
24
+ * Transcoder operations
26
+#define ZT_TRANSCODE_OP _IOWR(ZT_CODE, 93, int)
29
* Startup or Shutdown a span
32
#define ZT_TONE_STUTTER 10
33
#define ZT_TONE_MAX 16
35
+#define ZT_TONE_DTMF_BASE 64
38
+ * These must be in the same order as the dtmf_tones array in tones.h
41
+ ZT_TONE_DTMF_0 = ZT_TONE_DTMF_BASE,
59
+#define ZT_TONE_DTMF_MAX ZT_TONE_DTMF_D
61
#define ZT_MAX_CADENCE 16
63
#define ZT_TONEDETECT_ON (1 << 0) /* Detect tones */
64
#define ZT_TONEDETECT_MUTE (1 << 1) /* Mute audio in received channel */
66
+#define ZT_TRANSCODE_MAGIC 0x74a9c0de
69
+#define ZT_TCOP_RESET 1 /* Reset the channel state / codec selection */
70
+#define ZT_TCOP_TRANSCODE 2 /* Begin transcoding a block */
71
+#define ZT_TCOP_GETINFO 3 /* Get information (use zt_transcode_info) */
73
+typedef struct zt_transcode_info {
77
+ unsigned int srcfmts;
78
+ unsigned int dstfmts;
81
+#define ZT_TCCONF_USETS (1 << 0) /* Use/update timestamp field */
82
+#define ZT_TCCONF_USESEQ (1 << 1) /* Use/update seqno field */
84
+#define ZT_TCSTAT_DSTRDY (1 << 0) /* Destination data is ready */
85
+#define ZT_TCSTAT_DSTBUSY (1 << 1) /* Destination data is outstanding */
87
+#define __ZT_TRANSCODE_BUFSIZ 16384
88
+#define ZT_TRANSCODE_HDRLEN 256
89
+#define ZT_TRANSCODE_BUFSIZ ((__ZT_TRANSCODE_BUFSIZ) - (ZT_TRANSCODE_HDRLEN))
90
+#define ZT_TRANSCODE_DSTOFFSET (((ZT_TRANSCODE_BUFSIZ) / 2) + ZT_TRANSCODE_HDRLEN)
91
+#define ZT_TRANSCODE_SRCOFFSET (((ZT_TRANSCODE_BUFSIZ) / 2) + ZT_TRANSCODE_HDRLEN)
93
+typedef struct zt_transcode_header {
94
+ unsigned int srcfmt; /* See formats.h -- use TCOP_RESET when you change */
95
+ unsigned int srcoffset; /* In bytes -- written by user */
96
+ unsigned int srclen; /* In bytes -- written by user */
97
+ unsigned int srctimestamp; /* In samples -- written by user (only used if ZT_TCCONF_USETS is set) */
98
+ unsigned int srcseqno; /* In units -- written by user (only used if ZT_TCCONF_USESEQ is set) */
100
+ unsigned int dstfmt; /* See formats.h -- use TCOP_RESET when you change */
101
+ unsigned int dstoffset; /* In bytes -- written by user */
102
+ unsigned int dsttimestamp; /* In samples -- read by user */
103
+ unsigned int dstseqno; /* In units -- read by user (only used if ZT_TCCONF_USESEQ is set) */
104
+ unsigned int dstlen; /* In bytes -- read by user */
105
+ unsigned int dstsamples; /* In timestamp units -- read by user */
107
+ unsigned int magic; /* Magic value -- ZT_TRANSCODE_MAGIC, read by user */
108
+ unsigned int config; /* Read/write by user */
109
+ unsigned int status; /* Read/write by user */
111
+ /* XXX: fix this to automatically calculate somehow */
112
+ unsigned char userhdr[ZT_TRANSCODE_HDRLEN - (sizeof(unsigned int) * 14)]; /* Storage for user parameters */
113
+ unsigned char srcdata[ZT_TRANSCODE_BUFSIZ / 2]; /* Storage of source data */
114
+ unsigned char dstdata[ZT_TRANSCODE_BUFSIZ / 2]; /* Storage of destination data */
115
+} ZT_TRANSCODE_HEADER;
117
struct zt_ring_cadence {
118
int ringcadence [ZT_MAX_CADENCE];
120
@@ -1360,6 +1443,33 @@
124
+struct zt_transcoder_channel {
126
+ struct zt_transcoder *parent;
127
+ wait_queue_head_t ready;
130
+ unsigned int flags;
131
+ unsigned int srcfmt;
132
+ unsigned int dstfmt;
133
+ struct zt_transcode_header *tch;
136
+#define ZT_TC_FLAG_BUSY (1 << 0)
137
+#define ZT_TC_FLAG_TRANSIENT (1 << 1)
140
+struct zt_transcoder {
141
+ struct zt_transcoder *next;
144
+ unsigned int srcfmts;
145
+ unsigned int dstfmts;
146
+ int (*operation)(struct zt_transcoder_channel *channel, int op);
147
+ /* Transcoder channels */
148
+ struct zt_transcoder_channel channels[0];
151
#define ZT_WATCHDOG_NOINTS (1 << 0)
153
#define ZT_WATCHDOG_INIT 1000