diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/dahdi/kernel.h | 75 | ||||
-rw-r--r-- | include/dahdi/user.h | 66 |
2 files changed, 78 insertions, 63 deletions
diff --git a/include/dahdi/kernel.h b/include/dahdi/kernel.h index ce7d889..ec6a7a2 100644 --- a/include/dahdi/kernel.h +++ b/include/dahdi/kernel.h @@ -606,28 +606,75 @@ struct dahdi_transcoder_channel { void *pvt; struct dahdi_transcoder *parent; wait_queue_head_t ready; - int errorstatus; - int offset; - unsigned int chan_built; - unsigned int built_fmts; - unsigned int flags; - unsigned int srcfmt; - unsigned int dstfmt; - struct dahdi_transcode_header *tch; + __u32 built_fmts; +#define DAHDI_TC_FLAG_BUSY 1 +#define DAHDI_TC_FLAG_CHAN_BUILT 2 +#define DAHDI_TC_FLAG_NONBLOCK 3 +#define DAHDI_TC_FLAG_DATA_WAITING 4 + unsigned long flags; + u32 dstfmt; + u32 srcfmt; }; -#define DAHDI_TC_FLAG_BUSY (1 << 0) -#define DAHDI_TC_FLAG_TRANSIENT (1 << 1) - +static inline int +dahdi_tc_is_built(struct dahdi_transcoder_channel *dtc) { + return test_bit(DAHDI_TC_FLAG_CHAN_BUILT, &dtc->flags); +} +static inline void +dahdi_tc_set_built(struct dahdi_transcoder_channel *dtc) { + set_bit(DAHDI_TC_FLAG_CHAN_BUILT, &dtc->flags); +} +static inline void +dahdi_tc_clear_built(struct dahdi_transcoder_channel *dtc) { + clear_bit(DAHDI_TC_FLAG_CHAN_BUILT, &dtc->flags); +} +static inline int +dahdi_tc_is_nonblock(struct dahdi_transcoder_channel *dtc) { + return test_bit(DAHDI_TC_FLAG_NONBLOCK, &dtc->flags); +} +static inline void +dahdi_tc_set_nonblock(struct dahdi_transcoder_channel *dtc) { + set_bit(DAHDI_TC_FLAG_NONBLOCK, &dtc->flags); +} +static inline void +dahdi_tc_clear_nonblock(struct dahdi_transcoder_channel *dtc) { + clear_bit(DAHDI_TC_FLAG_NONBLOCK, &dtc->flags); +} +static inline int +dahdi_tc_is_data_waiting(struct dahdi_transcoder_channel *dtc) { + return test_bit(DAHDI_TC_FLAG_DATA_WAITING, &dtc->flags); +} +static inline int +dahdi_tc_is_busy(struct dahdi_transcoder_channel *dtc) { + return test_bit(DAHDI_TC_FLAG_BUSY, &dtc->flags); +} +static inline void +dahdi_tc_set_busy(struct dahdi_transcoder_channel *dtc) { + set_bit(DAHDI_TC_FLAG_BUSY, &dtc->flags); +} +static inline void +dahdi_tc_clear_busy(struct dahdi_transcoder_channel *dtc) { + clear_bit(DAHDI_TC_FLAG_BUSY, &dtc->flags); +} +static inline void +dahdi_tc_set_data_waiting(struct dahdi_transcoder_channel *dtc) { + set_bit(DAHDI_TC_FLAG_DATA_WAITING, &dtc->flags); +} +static inline void +dahdi_tc_clear_data_waiting(struct dahdi_transcoder_channel *dtc) { + clear_bit(DAHDI_TC_FLAG_DATA_WAITING, &dtc->flags); +} struct dahdi_transcoder { - struct dahdi_transcoder *next; + struct list_head node; char name[80]; int numchannels; unsigned int srcfmts; unsigned int dstfmts; - int (*operation)(struct dahdi_transcoder_channel *channel, int op); - /*! Transcoder channels */ + struct file_operations fops; + int (*allocate)(struct dahdi_transcoder_channel *channel); + int (*release)(struct dahdi_transcoder_channel *channel); + /* Transcoder channels */ struct dahdi_transcoder_channel channels[0]; }; diff --git a/include/dahdi/user.h b/include/dahdi/user.h index 4fc22ef..c71848b 100644 --- a/include/dahdi/user.h +++ b/include/dahdi/user.h @@ -411,56 +411,16 @@ enum { /* Transcoder related definitions */ -#define DAHDI_TRANSCODE_MAGIC 0x74a9c0de - -/* Operations */ -#define DAHDI_TCOP_ALLOCATE 1 /* Allocate/reset DTE channel */ -#define DAHDI_TCOP_TRANSCODE 2 /* Begin transcoding a block */ -#define DAHDI_TCOP_GETINFO 3 /* Get information (use dahdi_transcode_info) */ -#define DAHDI_TCOP_RELEASE 4 /* Release DTE channel */ -#define DAHDI_TCOP_TEST 5 /* test DTE device */ - -#define DAHDI_TCCONF_USETS (1 << 0) /* Use/update timestamp field */ -#define DAHDI_TCCONF_USESEQ (1 << 1) /* Use/update seqno field */ - -#define DAHDI_TCSTAT_DSTRDY (1 << 0) /* Destination data is ready */ -#define DAHDI_TCSTAT_DSTBUSY (1 << 1) /* Destination data is outstanding */ - -#define __DAHDI_TRANSCODE_BUFSIZ 16384 -#define DAHDI_TRANSCODE_HDRLEN 256 -#define DAHDI_TRANSCODE_BUFSIZ ((__DAHDI_TRANSCODE_BUFSIZ) - (DAHDI_TRANSCODE_HDRLEN)) -#define DAHDI_TRANSCODE_DSTOFFSET (((DAHDI_TRANSCODE_BUFSIZ) / 2) + DAHDI_TRANSCODE_HDRLEN) -#define DAHDI_TRANSCODE_SRCOFFSET (((DAHDI_TRANSCODE_BUFSIZ) / 2) + DAHDI_TRANSCODE_HDRLEN) - -struct dahdi_transcode_info { - unsigned int op; - unsigned int tcnum; - char name[80]; - int numchannels; - unsigned int srcfmts; - unsigned int dstfmts; +struct dahdi_transcoder_formats { + __u32 srcfmt; + __u32 dstfmt; }; - -struct dahdi_transcode_header { - unsigned int srcfmt; /* See formats.h -- use TCOP_RESET when you change */ - unsigned int srcoffset; /* In bytes -- written by user */ - unsigned int srclen; /* In bytes -- written by user */ - unsigned int srctimestamp; /* In samples -- written by user (only used if DAHDI_TCCONF_USETS is set) */ - unsigned int srcseqno; /* In units -- written by user (only used if DAHDI_TCCONF_USESEQ is set) */ - - unsigned int dstfmt; /* See formats.h -- use TCOP_RESET when you change */ - unsigned int dstoffset; /* In bytes -- written by user */ - unsigned int dsttimestamp; /* In samples -- read by user */ - unsigned int dstseqno; /* In units -- read by user (only used if DAHDI_TCCONF_USESEQ is set) */ - unsigned int dstlen; /* In bytes -- read by user */ - unsigned int dstsamples; /* In timestamp units -- read by user */ - - unsigned int magic; /* Magic value -- DAHDI_TRANSCODE_MAGIC, read by user */ - unsigned int config; /* Read/write by user */ - unsigned int status; /* Read/write by user */ - unsigned char userhdr[DAHDI_TRANSCODE_HDRLEN - (sizeof(unsigned int) * 14)]; /* Storage for user parameters */ - unsigned char srcdata[DAHDI_TRANSCODE_BUFSIZ / 2]; /* Storage of source data */ - unsigned char dstdata[DAHDI_TRANSCODE_BUFSIZ / 2]; /* Storage of destination data */ +struct dahdi_transcoder_info { + __u32 tcnum; + char name[80]; + __u32 numchannels; + __u32 dstfmts; + __u32 srcfmts; }; #define DAHDI_MAX_ECHOCANPARAMS 8 @@ -994,8 +954,16 @@ struct dahdi_hwgain { /* * Transcoder operations */ + +/* DAHDI_TRANSCODE_OP is an older interface that is deprecated and no longer + * supported. + */ #define DAHDI_TRANSCODE_OP _IOWR(DAHDI_CODE, 93, int) +#define DAHDI_TC_CODE 'T' +#define DAHDI_TC_ALLOCATE _IOW(DAHDI_TC_CODE, 1, struct dahdi_transcoder_formats) +#define DAHDI_TC_GETINFO _IOWR(DAHDI_TC_CODE, 2, struct dahdi_transcoder_info) + /* * VoiceMail Waiting Indication (WMWI) -- implemented by low-level driver. * Value: number of waiting messages (hence 0: switch messages off). |