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

📄 dvb-cwidx.diff

📁 这是一个LINUX环境的 VDR 插件源代码,可支持Irdeto, Seca, Viaccess, Nagra, Conax & Cryptoworks等CA系统的读卡、共享等操作。
💻 DIFF
字号:
diff -ur linux/drivers/media/dvb/ttpci/av7110_ca.c linux/drivers/media/dvb/ttpci/av7110_ca.c--- linux/drivers/media/dvb/ttpci/av7110_ca.c	2004-01-09 14:44:57.000000000 +0100+++ linux/drivers/media/dvb/ttpci/av7110_ca.c	2006-05-09 19:49:42.000000000 +0200@@ -37,6 +37,9 @@ #include <linux/poll.h> #include <linux/byteorder/swabb.h> #include <linux/smp_lock.h>+#ifndef LINUX_VERSION_CODE+#include <linux/version.h>+#endif  #define DEBUG_VARIABLE av7110_debug extern int av7110_debug;@@ -263,10 +266,31 @@ 	}  	case CA_GET_MSG:-		break;+        {+                ca_pid_t *arg = (ca_pid_t*) parg;+                u16 buf[4], res[2];+                buf[0]=0x0745;+                buf[1]=2;+                buf[2]=arg->pid >> 16;+                buf[3]=arg->pid & 0xFFFF;+                av7110_fw_request(av7110,buf,sizeof(buf),res,2);+                arg->index=(res[0]<<16) + res[1];+                break;+        }  	case CA_SEND_MSG:-		break;+        {+                ca_pid_t *arg = (ca_pid_t*) parg;+                u16 buf[6], res[2];+                buf[0]=0x0746;+                buf[1]=4;+                buf[2]=arg->pid >> 16;+                buf[3]=arg->pid & 0xFFFF;+                buf[4]=arg->index >> 16;+                buf[5]=arg->index & 0xFFFF;+                av7110_fw_request(av7110,buf,sizeof(buf),res,2);+                break;+        }  	case CA_GET_DESCR_INFO: 	{@@ -295,6 +319,45 @@ 		break; 	} +        case CA_SET_PID:+        {+                int handle;+                ca_pid_t *pid = (ca_pid_t*) parg;++                if (pid->pid >= 0x1fff)+                        return -EINVAL;+                if (pid->index < 0 || pid->index >= 16)+                        return -EINVAL;++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16))+                if (down_interruptible (&av7110->demux.mutex))+#else+                if (mutex_lock_interruptible (&av7110->demux.mutex))+#endif+		        return -ERESTARTSYS;++                for(handle=0; handle<32; handle++) {+                  struct dvb_demux_filter *dvbdmxfilter=av7110->handle2filter[handle];+                  if(dvbdmxfilter) {+                    struct dvb_demux_feed *feed=dvbdmxfilter->feed;+                    if(feed && feed->state==DMX_STATE_GO && feed->pid==pid->pid) {+                      /* we map the new cmd to CacheError as it's not+                         implemented anyways, i.e. free. */+                      av7110_fw_cmd(av7110, COMTYPE_PIDFILTER, CacheError, 1,+                                  (handle<<8)|pid->index); /* hw handle / cw index*/+                      break;+                      }+                    }+                  }++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16))+                up(&av7110->demux.mutex);+#else+                mutex_unlock(&av7110->demux.mutex);+#endif+                break;+        }+ 	default: 		return -EINVAL; 	}

⌨️ 快捷键说明

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