发明内容
本发明的主要目的在于提供一种插件管理方法、插件管理器及机顶盒,旨在减少机顶盒软件各个功能模块之间的耦合性,增强机顶盒软件在不同产品上的可移植性。
本发明提出的一种插件管理方法,包括以下步骤:
当插件模块连接于插件管理器时,所述插件管理器对所述插件模块进行注册,并获取所述插件模块的描述信息;
接收应用模块发送的查询相应插件模块是否注册的关键字信息;
当所述关键字信息与所述描述信息中关键字信息部分匹配时,返回所述相应插件模块的句柄至所述应用模块,以便所述应用模块根据所述句柄调用所述相应插件模块的功能。
优选地,所述当关键字信息与所述描述信息中关键字信息部分匹配时,返回所述相应插件模块的句柄至所述应用模块,以便所述应用模块根据所述句柄调用所述相应插件模块的功能的步骤之后还包括:
接收所述应用模块发送的卸载所述相应插件模块的卸载信息;
根据所述卸载信息将所述相应插件模块卸载。
优选地,所述当插件模块连接于插件管理器时,所述插件管理器对所述插件模块进行注册,并获取所述插件模块的描述信息的步骤包括:
当所述插件模块连接于所述插件管理器时,所述插件管理器为所述插件模块提供相应的系统功能,并获取所述插件模块提供的功能;
获取所述插件模块的描述信息;
将所述描述信息注册到所述插件管理器上。
本发明还提出一种插件管理器,包括:
注册模块,用于当插件模块连接于插件管理器时,对所述插件模块进行注册,并获取所述插件模块的描述信息;
第一接收模块,用于接收应用模块发送的查询相应插件模块是否注册的关键字信息;
查询模块,用于当所述关键字信息与所述描述信息中关键字信息部分匹配时,返回所述相应插件模块的句柄至所述应用模块,以便所述应用模块根据所述句柄调用所述相应插件模块的功能。
优选地,所述插件管理器还包括:
第二接收模块,用于接收所述应用模块发送的卸载所述相应插件模块的卸载信息;
卸载模块,用于根据所述卸载信息将所述相应插件模块卸载。
优选地,所述注册模块包括:
功能提供获取单元,用于当所述插件模块连接于所述插件管理器时,为所述插件模块提供相应的系统功能,并获取所述插件模块提供的功能;
获取单元,用于获取所述插件模块的描述信息;
注册单元,用于将所述描述信息注册到所述插件管理器上。
本发明还提出一种机顶盒,包括:插件管理器、以及分别与所述插件管理器连接的插件模块和应用模块,其中:
所述插件管理器,用于当插件模块连接于该插件管理器时,对所述插件模块进行注册,并获取所述插件模块的描述信息;接收应用模块发送的查询相应插件模块是否注册的关键字信息;当所述关键字信息与所述描述信息中关键字信息部分匹配时,返回所述相应插件模块的句柄至所述应用模块,以便所述应用模块根据所述句柄调用所述相应插件模块的功能;
所述插件模块,用于通过所述插件管理器为所述应用模块提供相应的功能;
所述应用模块,用于向所述插件管理器发送所述关键字信息,以及当所述关键字信息与所述描述信息中关键字信息部分匹配时,接收所述插件管理器返回的所述相应插件模块的句柄,并根据所述句柄调用所述相应插件模块的功能。
优选地,所述应用模块,还用于向所述插件管理器发送卸载所述相应插件模块的卸载信息;
所述插件管理器,还用于接收所述卸载信息;根据所述卸载信息将所述相应插件模块卸载;
所述插件模块,还用于将向系统申请的各种资源释放。
优选地,所述插件模块为ca插件和/或网络插件。
所述插件管理器为如上所述的插件管理器。
本发明的有益效果为:通过在机顶盒中设置插件以及插件管理器,插件通过相应的接口与插件管理器连接,应用层可根据使用需要通过插件管理器调用相应的插件的功能,实现机顶盒软件的模块化,减少机顶盒软件各个功能模块之间的耦合性,增强机顶盒软件在不同产品上的可移植性,缩短软件开发周期,以及通过动态加载插件,扩展了系统的功能,在同类插件之间可以动态选择不同的插件,从而增强产品的灵活性。
具体实施方式
本发明实施例解决方案主要是通过在机顶盒中设置插件以及插件管理器,应用层可根据使用需要通过插件管理器调用相应插件的功能,实现机顶盒软件的模块化,减少机顶盒软件各个功能模块之间的耦合性。
本发明以下实施例以机顶盒为例说明插件以及插件管理器的应用,但不仅限于机顶盒中应用上述插件以及插件管理器的情形。
如图1所示,本发明一实施例提出一种插件管理方法,包括:
步骤S101,当插件模块连接于插件管理器时,插件管理器对插件模块进行注册,并获取插件模块的描述信息;
本实施例运行环境涉及机顶盒,在机顶盒中设置有插件模块以及插件管理器,iSTB是机顶盒整个系统的各个核心模块总称,插件管理器是其中一个模块,其负责为插件模块提供iSTB其它模块的功能。插件模块则通过插件管理器与应用模块进行通讯。
在本实施例中,插件管理器与插件模块双方之间约定好一套接口,插件管理器负责管理插件模块,并通过相应接口向插件模块提供系统功能,同时为应用层(本实施例中称应用模块)提供一套API(Application Programming Interface,应用程序编程接口),以方便用户通过该应用层API使用插件模块的功能。插件模块还可以通过约定的接口让插件管理器识别其类型,并且向插件管理器注册自己的功能,不同类型的插件模块,其功能不一样,接口也不一样,但是,有一部分接口可以是所有插件模块均须实现的,每一个插件模块均具有一套固定格式的描述信息,插件管理器根据插件模块的描述信息来识别插件模块。
当插件模块通过相应接口连接于插件管理器上时,插件管理器将对插件模块进行注册,其具体注册过程为:
插件管理器在开机初始化时,在某一固定的目录去寻找文件名以“.so”结束的动态库,当找到该动态库后,插件管理器首先将动态库装载到内存里,再通过linux系统的动态库函数去执行Plugin_NP_Init()接口,通知插件模块其为插件模块所提供的系统功能,同时还获得插件模块提供的功能,当上述过程执行成功后,插件管理器调用Plugin_NPP_Get_Plugin_Info()接口,得到插件模块的描述信息,通过该描述信息来识别插件模块的类型,然后调用Plugin_NPP_Create_Plugin()接口来初始化插件模块。上述三个步骤完成后,插件模块则被注册到插件管理器中。
步骤S102,接收应用模块发送的查询相应插件模块是否注册的关键字信息;
步骤S103,当关键字信息与描述信息中关键字信息部分匹配时,返回相应插件模块的句柄至应用模块,以便应用模块根据句柄调用相应插件模块的功能。
上述步骤S102以及步骤S103中,当插件管理器完成了插件模块的注册之后,机顶盒中应用模块即可通过插件管理器调用相应插件模块的功能,其具体调用过程为:
应用模块可以根据插件模块提供的关键字信息到插件管理器中查询需要使用的插件模块是否已经注册,即向插件管理器发送查询插件模块是否注册的关键字信息,插件管理器收到该关键字信息后,经查询若发现应用模块所要查询的插件模块存在即该插件模块已注册,则会将该插件模块的句柄返回给应用模块,应用模块根据该插件模块的句柄即可以使用插件模块提供的功能。
如图2所示,步骤S101包括:
步骤S1011,当插件模块连接于插件管理器时,插件管理器为插件模块提供相应的系统功能,并获取插件模块提供的功能;
步骤S1012,获取插件模块的描述信息;
步骤S1013,将描述信息注册到插件管理器上。
需要说明的是,本实施例中插件模块根据使用需要可以设置为多个,即对于机顶盒整个系统iSTB核心模块来说,将其中经常变动的功能模块定制成相应的插件模块,实现机顶盒软件的模块化,而且本实施例中插件模块可以为设置在机顶盒上的ca插件,也可以为设置在机顶盒上的网络插件,以实现不同的功能,因此,本实施例可在机顶盒上实现多ca插件和/或多网络插件的应用。
本实施例通过在机顶盒中设置插件以及插件管理器,插件通过相应的接口与插件管理器连接,应用层可根据使用需要通过插件管理器调用相应的插件的功能,实现机顶盒软件的模块化,减少机顶盒软件各个功能模块之间的耦合性,增强机顶盒软件在不同产品上的可移植性,缩短软件开发周期,以及通过动态加载插件,扩展了系统的功能,在同类插件之间可以动态选择不同的插件,从而增强产品的灵活性。
如图3所示,本发明另一实施例提出一种插件管理方法,在上述实施例的基础上,其中,在步骤S103之后还包括:
步骤S104,接收应用模块发送的卸载相应插件模块的卸载信息;
步骤S105,根据卸载信息将相应插件模块卸载。
在本实施例中,当应用模块不需要使用插件模块的功能而需要将插件模块卸载时,可以根据插件模块的句柄调用相应的卸载函数通知插件管理器,插件管理器将调用Plugin_NPP_Destroy_plugin()接口以及Plugin_NP_Shutdown()接口,插件模块在上述接口将它向系统申请的各种资源释放出来,而且插件管理器最后将相应的动态库从内存中释放出来。
如图4所示,本发明一实施例提出一种插件管理器,包括:注册模块401、第一接收模块402以及查询模块403,其中:
注册模块401,用于当插件模块连接于插件管理器时,对插件模块进行注册,并获取插件模块的描述信息;
第一接收模块402,用于接收应用模块发送的查询相应插件模块是否注册的关键字信息;
查询模块403,用于当关键字信息与描述信息中关键字信息部分匹配时,返回相应插件模块的句柄至应用模块,以便应用模块根据句柄调用相应插件模块的功能。
在本实施例中,iSTB是机顶盒整个系统的各个核心模块总称,插件管理器以及与其通过接口连接的插件模块均设置机顶盒内,插件管理器是iSTB中的一个模块,其负责为插件模块提供iSTB其它模块的功能,插件模块通过插件管理器与机顶盒中的应用模块进行通讯,
在本实施例中,插件管理器与插件模块双方之间约定好一套接口,插件管理器负责管理插件模块,并通过相应接口向插件模块提供系统功能,同时为应用层(本实施例中称应用模块)提供一套API,以方便用户通过该应用层API使用插件模块的功能。插件模块还可以通过约定的接口让插件管理器识别其类型,并且向插件管理器注册自己的功能,不同类型的插件模块,其功能不一样,接口也不一样,但是,有一部分接口可以是所有插件模块均须实现的,每一个插件模块均具有一套固定格式的描述信息,插件管理器根据插件模块的描述信息来识别插件模块。
当插件模块通过相应接口连接于插件管理器上时,插件管理器将对插件模块进行注册,其具体注册过程为:
插件管理器在开机初始化时,在某一固定的目录去寻找文件名以“.so”结束的动态库,当找到该动态库后,插件管理器首先将动态库装载到内存里,再通过linux系统的动态库函数去执行Plugin_NP_Init()接口,通知插件模块其为插件模块所提供的系统功能,同时还获得插件模块提供的功能,当上述过程执行成功后,插件管理器调用Plugin_NPP_Get_Plugin_Info()接口,得到插件模块的描述信息,通过该描述信息来识别插件模块的类型,然后调用Plugin_NPP_Create_Plugin()接口来初始化插件模块。上述三个步骤完成后,插件模块则被注册到插件管理器中。
当插件管理器完成了插件模块的注册之后,机顶盒中应用模块即可通过插件管理器调用相应插件模块的功能,其具体调用过程为:
应用模块可以根据插件模块提供的关键字信息到插件管理器中查询需要使用的插件模块是否已经注册,即向插件管理器发送查询插件模块是否注册的关键字信息,插件管理器收到该关键字信息后,经查询若发现应用模块所要查询的插件模块存在即该插件模块已注册,则会将该插件模块的句柄返回给应用模块,应用模块根据该插件模块的句柄即可以使用插件模块提供的功能。
如图5所示,注册模块401包括:
功能提供获取单元4011,用于当插件模块连接于插件管理器时,为插件模块提供相应的系统功能,并获取插件模块提供的功能;
获取单元4012,用于获取插件模块的描述信息;
注册单元4013,用于将描述信息注册到插件管理器上。
需要说明的是,本实施例中插件模块根据使用需要可以设置为多个,即对于机顶盒整个系统iSTB核心模块来说,将其中经常变动的功能模块定制成相应的插件模块,实现机顶盒软件的模块化,而且本实施例中插件模块可以为设置在机顶盒上的ca插件,也可以为设置在机顶盒上的网络插件,以实现不同的功能,因此,本实施例可在机顶盒上实现多ca插件和/或多网络插件的应用。
本实施例通过在机顶盒中设置插件以及插件管理器,插件通过相应的接口与插件管理器连接,应用层可根据使用需要通过插件管理器调用相应的插件的功能,实现机顶盒软件的模块化,减少机顶盒软件各个功能模块之间的耦合性,增强机顶盒软件在不同产品上的可移植性,缩短软件开发周期,以及通过动态加载插件,扩展了系统的功能,在同类插件之间可以动态选择不同的插件,从而增强产品的灵活性。
如图6所示,本发明另一实施例提出一种插件管理器,在上述实施例的基础上,其中,插件管理器还包括:
第二接收模块404,用于接收应用模块发送的卸载相应插件模块的卸载信息;
卸载模块405,用于根据卸载信息将相应插件模块卸载。
在本实施例中,当应用模块不需要使用插件模块的功能而需要将插件模块卸载时,可以根据插件模块的句柄调用相应的卸载函数通知插件管理器,插件管理器将调用Plugin_NPP_Destroy_plugin()接口以及Plugin_NP_Shutdown()接口,插件模块在上述接口将它向系统申请的各种资源释放出来,而且插件管理器最后将相应的动态库从内存中释放出来。
如图7所示,本发明一实施例提出一种机顶盒,包括:插件管理器701、以及分别与插件管理器701连接的插件模块702和应用模块703,其中:
插件管理器701,用于当插件模块连接于该插件管理器时,对插件模块进行注册,并获取插件模块的描述信息;接收应用模块发送的查询相应插件模块是否注册的关键字信息;当关键字信息与所述描述信息中关键字信息部分匹配时,返回相应插件模块的句柄至应用模块,以便应用模块根据句柄调用相应插件模块的功能;
插件模块702,用于通过插件管理器为应用模块提供相应的功能;
应用模块703,用于向插件管理器发送关键字信息,以及当关键字信息与描述信息中关键字信息部分匹配时,接收插件管理器返回的相应插件模块的句柄,并根据句柄调用相应插件模块的功能。
更进一步的,应用模块703,还用于向插件管理器发送卸载相应插件模块的卸载信息;
插件管理器701,还用于接收卸载信息;根据卸载信息将相应插件模块卸载;
插件模块702,还用于将向系统申请的各种资源释放。
本实施例中插件管理器可以为上述实施例中所述的插件管理器。
需要说明的是,本实施例中插件模块根据使用需要可以设置为多个,即对于机顶盒整个系统iSTB核心模块来说,将其中经常变动的功能模块定制成相应的插件模块,实现机顶盒软件的模块化,而且本实施例中插件模块可以为设置在机顶盒上的ca插件,也可以为设置在机顶盒上的网络插件,以实现不同的功能,因此,本实施例可在机顶盒上实现多ca插件和/或多网络插件的应用。
因此,在实际应用中,插件管理器的功能可以分成三个模块来实现,即公共管理模块、ca管理模块以及网络插件管理模块。公共管理模块负责插件的注册、动态库的装载和卸载以及公用插件功能插口;ca管理模块提供ca插件功能接口;网络插件管理模块提供网络插件功能接口。
本发明实施例插件管理方法、插件管理器及机顶盒通过在机顶盒中设置插件以及插件管理器,插件通过相应的接口与插件管理器连接,应用层可根据使用需要通过插件管理器调用相应的插件的功能,实现机顶盒软件的模块化,减少机顶盒软件各个功能模块之间的耦合性,增强机顶盒软件在不同产品上的可移植性,缩短软件开发周期,以及通过动态加载插件,扩展了系统的功能,在同类插件之间可以动态选择不同的插件,从而增强产品的灵活性。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。