泰信推出的T1智能数字机顶盒有一个智能卡的读卡器,可以支持传统的有线电视智能卡,但需要对应的APK应用。可参考2012年3月国家广电总局发布的NGB下载CA标准(《GY/T 255-2012 可下载条件接收系统技术规范》),智能卡操作部分我们结合标准在DTVOS中做了完善和扩展(详见泰信官方网站)。 智能卡CA应用的工作的流程和下载CA应用没有本质的区别(见下图),希望对智能卡厂家和第三方开发者有所帮助。 智能卡CA应用的开发主要包括几个方面: 1 接口: 应用开发使用的接口主要包括以下几个部分: | | | | | | | org.ngb.net.cas.controller | | | | | | | | org.ngb.net.cas.detachable | | |
接口的原型及使用说明请参考下载CA标准及泰信官方网站。 2 实现: 智能卡CA应用的实现主要包含以下内容:CA应用的框架、ECM数据的接收处理、EMM数据的接收处理、CW的设置等。 1) CA应用框架: Android平台下,CA采用service组件功能来代替Xlet。每个CA是一个单独的应用,即一个APK文件,并且自己拥有界面。CA采用android应用基本组件service来管理自己的生命周期。CA应用通过监听“android.intent.action.BOOT_COMPLETED”广播,并在广播后启动自身的service,在service启动中完成如startXlet相同的功能:完成自身的初始化,解扰服务可用后,完成向CASModuleManager的注册。CA应用采用Android的Activity来实现其图形化的管理功能,像授权信息显示,电视邮件显示、阅读、删除等。另外CA应用、平台和其他应用通过Android提供的Binder跨进程通讯机制实现交互。 2)ECM数据的接收处理: 根据ECM的属性此处建议使用SimpleSectionFilter接收ECM数据,详细原因请参照davic接口的使用。ECM数据的接收始于public void startDescrambling(CASSession casSession,CAServiceComponentInfo casci[])接口被调用,设置filter接收数据用到的TransportStream来自于参数casSession,CA system id及ECM pid的信息来自于参数casci. ECM数据被接收后,送往智能卡中解析处理得到加密的控制字CW。 3)EMM数据的接收处理: 单向情况下EMM数据的接收根据各CA的特点使用不同的filter类型,此处建议使用RingSectionFilter,大小根据实际情况设定。EMM数据的接收始于接收到CAT数据,并解析到对应的CA描述符,为此标准中给出了public void catUpdate(CADescriptor desc, org.davic.net.tuning.NetworkInterface ni);的接口,但为处理方便,我们建议上层CA应用自己申请CAT,自己把握申请CAT的时机,接收到CAT解析出EMM PID后,设置EMM的filter接收EMM数据。双向环境下可创建socket或者http(s)客户端定时向服务器申请授权信息的CA数据。接收到EMM数据后,根据各CA的情况解析得到授权、反授权等信息。 4)CW的设置: 标准中提供的设置CW的接口为:loadCW,其接口原型为: public void loadCW(int VendorID, CWKey cwKey, Key[] levelKeys, int schemeId) throws CADriverException;将智能卡解出的CW通过这个接口设置到底层,这个周期的节目就可以正常解扰播放了。循环上述的ECM接收处理和CW设置的过程就可以完成节目的正常播放了。 |