Builder主要支持3种搜索方式:
(1)盲扫。根据预置频点搜索节目信息,建立完整节目数据库。
(2)网络搜索。根据输入频点搜索NIT表,根据网络信息搜索该网络的所有节目信息,建立完整的网络节目信息数据库。
(3)手动搜索。根据输入频点搜索该频点,建立该频点完整的节目信息数据库。
2.2 PSI模块
PSI模块需要Demux模块提供Section数据的搜索功能,其建立在Demux驱动之上,为EPG、Builder等模块提供完整表及条件捕获接口。PSI模块结构图如图3所示。
PSI模块提供2种得到表方式:
GetTable:通过该功能接口,直接得到表数据返回,如果超时没有得到表数据,返回超时。
Capture:通过该功能接口,先提出表申请,通过异步通信方式获得表结构并通知应用模块。
在捕获方式中都有3种模式:
(1)Update Mode:在得到版本更新时通知应用模块。
(2)Complete Mode:当得到完整表结构时通知应用模块。
(3)Section Mode:当接收到Section数据时候就立即通知应用模块。
2.3 DBaseMgr模块
该模块是一个数据库管理系统,主要功能是实现对频道、频点、系统信息、EPG等信息的存储与管理,以及对节目频点的添加、删除、排序、查找、编辑等。该模块主要与Builder、EPG、USIF、Player 4个模块交互,并通过与Flash交互进行物理操作。为了保证数据元素操作的效率,避免产生大量的内存碎片,也为了元素操作方便,该设计以静动结合的思路采用静态双向链表的数据结构。在多个进程或线程同时对同一个数据库进行操作时,要考虑同步互斥机制了。在对数据库进行任何操作之前先对数据库加锁,当数据库操作完成之后,再解锁,这样就保证了数据库操作的一致性。数据库模块结构如图4所示。
数据库管理系统功能特点主要有以下几点:
(1)功能完备。该模块需要提供完备的功能接口,包括数据库的创建、管理以及删除等基本操作。另还需要满足多视窗操作。
(2)多用户操作。本系统采用的是嵌入式Linux系统,它是一个多用户分时系统,所以该数据库需要保证同时满足多用户操作需要,保证系统的安全。
(3)数据完整。本系统属于嵌入式系统,该模块必须保证掉电后数据库数据的完整性。
从前几节的内容可以看出,有关节目的操作与PSI表的处理有着十分密切的关系。这是因为PSI表的分析管理直接影响到节目数据库的内容,而节目的各种操作又都是与数据库紧密相连的。节目操作管理部分的软件设计主要可分成3大部分:PSI表处理模块、节目数据库模块和节目操作模块。其中PSI处理模块主要完成PSI表的各种操作,如表的获取、分析及管理等;节目数据库模块主要完成关于数据库的操作,如数据库的初始化、建立、内容的读写及更新等;节目操作模块则实现有关节目的操作,如节目的搜索、删除、恢复、选择等。这3部分有机结合起来就形成了节目操作的整体软件模块。
3 机顶盒应用程序的开发
机顶盒应用程序主要实现用户交互选单的显示等功能,因此选择MiniGUI开源软件开发机顶盒应用程序。
MiniGUI作为嵌入式Linux系统下的一个轻量级图形用户界面支持系统已被应用到很多实际项目中。与其他嵌入式GUI相比,其具有系统资源消耗小、可配置和可定制性高、稳定性高、可移植性好等优势。
MiniGUI具有良好的软件架构,通过抽象层IAL、GAL将MiniGUI上层和底层操作系统隔离开来。基于MiniGUI的应用程序一般通过支持库、操作系统和驱动程序接口以及MiniGUI自身提供的API来实现自己的功能。