⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wcusb.h

📁 This a SOFTWARE pbx DRIVER
💻 H
字号:
#ifndef _WCUSB_H#define _WCUSB_H#include <linux/kernel.h>#include <linux/errno.h>#include <linux/module.h>#include <linux/usb.h>#include <linux/version.h>#if LINUX_VERSION_CODE > KERNEL_VERSION(2,4,19)#define USB2420#endif#include "zaptel.h"#define WC_MAX_IFACES           128#define POWERSAVE_TIME 4000 /* Powersaving timeout for devices with a proslic *//* Various registers and data ports on the tigerjet part */#define WCUSB_SPORT0				0x26#define WCUSB_SPORT1				0x27#define WCUSB_SPORT2				0x28#define WCUSB_SPORT_CTRL			0x29#define WC_AUX0 0x1#define WC_AUX1 0x2#define WC_AUX2 0x4#define WC_AUX3 0x8#define CONTROL_TIMEOUT_MS              (500)           /* msec */#define CONTROL_TIMEOUT_JIFFIES ((CONTROL_TIMEOUT_MS * HZ) / 1000)#define REQUEST_NORMAL 4#define FLAG_RUNNING    (1 << 0) /* Important data structures and data types *//* States for the Proslic read state machine */typedef enum {        STATE_WCREAD_WRITEREG,        STATE_WCREAD_READRES,        STATE_WCWRITE_WRITEREG,        STATE_WCWRITE_WRITERES,} proslic_state_t;/* Used for current stream state */typedef enum {        STREAM_NORMAL, /* Sends normal (unmodified) audio data */        STREAM_DTMF, /* (For keypad device) Sends dtmf data */} stream_t;/* States for the Keypad state machine */typedef enum {        STATE_FOR_LOOP_1_OUT,        STATE_FOR_LOOP_2_IN,        STATE_FOR_LOOP_PROC_DATA,        STATE_FOR_LOOP_CLEAR_DIGIT,} keypad_state_t;/* Device types.  For radical changes in a new device, use a switch based on the device type */typedef enum {        WC_KEYPAD,  /* The tigerjet phone with the keypad.  That was a bugger to implement */        WC_PROSLIC, /* For various devices with a proslic */} dev_type_t;struct wc_keypad_data {        keypad_state_t state; /* Current state in the keypad detect routine */#ifdef USB2420        struct urb urb;  /* urb used for the keypad data transport ... can't remember whether it is used or not */#else        urb_t urb;  /* urb used for the keypad data transport ... can't remember whether it is used or not */#endif	int running;        char data;        char data12;        char tmp;        int scanned_event;        int i;        int count;        /* DTMF tone generation stuff for zaptel */        struct zt_tone_state ts;        struct zt_tone *tone;};struct stinky_urb {#ifdef USB2420        struct urb urb;#ifndef LINUX26        struct iso_packet_descriptor isoframe[1];#endif		#else        urb_t urb;        iso_packet_descriptor_t isoframe[1];#endif};struct wc_usb_pvt {        struct usb_device *dev;        dev_type_t devclass;        int usecount;        int dead;        struct zt_span span;        struct zt_chan chan;        struct stinky_urb dataread[2];        struct stinky_urb datawrite[2];#ifdef USB2420        struct urb          control;        struct usb_ctrlrequest      dr;#else        urb_t           control;        devrequest      dr;#endif        proslic_state_t controlstate;        int urbcount;        int flags;        int timer;        int lowpowertimer;        int idletxhookstate;        int hookstate;        __u8 newtxhook;        __u8 txhook;        int pos;        unsigned char auxstatus;        unsigned char wcregindex;        unsigned char wcregbuf[4];        unsigned char wcregval;        short readchunk[ZT_MAX_CHUNKSIZE * 2];        short writechunk[ZT_MAX_CHUNKSIZE * 2];        stream_t sample;        void *pvt_data;};struct wc_usb_desc {        char *name;        int flags;};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -