网络中的用户及装置的命令和控制的方法和设备的制作方法

文档序号:7586212阅读:291来源:国知局
专利名称:网络中的用户及装置的命令和控制的方法和设备的制作方法
技术领域
本发明涉及网络系统领域,更具体地说,涉及连接有多个装置的家庭网络(home network)。
背景技术
一般来说,网络包括通信链路以及具有与该通信链路连接的通信能力(capability)的各种装置。这些装置包括计算机、外围设备、路由器、存储器以及带有处理器和通信接口的家用产品。网络的一个实例就是用于家庭的家庭网络,在这种网络中互连各种装置。普通的家庭可能拥有包含计算机以及一般家里都找得到的家庭装置在内的几种家庭装置。因而,术语“装置”一般包括逻辑装置或其他具有交换数据功能和能力的器具,它不仅能包括全部家庭装置还包括通用的计算机。家庭装置包括如下电子装置安全系统、影院系统、TVS、VCR、立体声音响系统,以及也被称为数字卫星服务(DSS)的直接广播卫星服务(DBSS)系统、自动喷水系统、照明系统、微波用具、洗碗机、烤箱/炉、洗衣机/干衣机以及汽车中的处理系统。
一般来说,家庭装置用于实现改善主人的生活方式以及提高其生活标准的任务。例如,洗碗机实现洗脏碗的任务,从而将主人从必须用手洗碗中解脱出来。VCR可以记录电视机目,以使得主人能够在以后的某个时间观看特别的电视机目。安全系统保护主人的财产,并能降低主人对非法闯入的恐惧。
象家庭影院这样的家庭装置一般使用单一公用控制器,即遥控器进行控制。这种单一公用控制器允许主人采用单一接口控制和命令几种不同的家庭装置。因此,很多制造商已经开发出用于从单一接口控制和命令他们的装置的控制器。
与使用遥控器命令和控制家庭装置有关的一个缺点是提供用于控制和命令每一种家庭装置的静态和命令逻辑。因此,特殊的遥控器只能控制和命令包括有必要的控制和命令逻辑的那些家庭装置。例如,如果一种遥控器包括用于控制电视(TV)、录像机(VCR)以及数字视频光盘(DVD)逻辑,但不包括用于致密盘(CD)驱动器的逻辑,那么该遥控器就不能用于命令和控制该CD驱动器。此外,当开发出新的家庭装置时,该遥控器将不能控制和命令需要在该遥控器开发的时候还未知的控制和命令逻辑的该新家庭装置。
此外,遥控器一般只能用于命令和控制位于该遥控器的信号范围之内的那些家庭装置。因此,用户不能使用该遥控器从房间的一个位置处控制和命令互连但放在家庭的不同区的装置。例如,放在楼上卧室中的VCR可能与放在楼下客厅中的电视相连。如果用户希望在放在楼下客厅里的电视上播放装在放在楼上卧室中的VCR里的录像带,那么该用户不能从一个位置同时控制和命令电视和VCR。
与使用遥控器有关的另一个缺点是已知的遥控器不能控制多个不同类型的装置,更具体地说,不能控制具有不同的相互通信能力的装置来完成多个任务或提供服务。此外,传统的网络系统不在不同的网络装置中提供软件应用程序机构以进行自动相互通信,以便完成任务而不需要直接的用户命令。
因此需要一种方法和系统,在家庭网络中提供动态控制和命令装置。也需要这样的方法和系统提供控制多个具有不同能力的不同装置相互通信以完成任务或提供服务的能力。还需要这样的方法和系统提供各种软件应用程序的能力,以自动命令和控制其它各种软件应用程序,其中所述软件应用程序可以放在不同的网络装置中。
发明概述本发明满足以上这些需要。在一个实施例中,本发明提供通过以下方式用于在具有连接到自身的多个家庭装置的家庭网络上进行服务的方法和系统将客户机装置连接到用于显示用户接口的家庭网络;在该客户机装置上执行软件代理(software agent),用于获得网络装置的选择信息,以及将选择的信息显示在被显示在该客户机装置上的用户接口上;从被显示在该客户机装置上的用户接口中选择连接到该网络的第一家庭装置;读取第一家庭装置的第一能力数据,其中第一能力数据包括用于识别第一家庭装置的能力的结构化格式信息;读取连接到该网络的第二家庭装置的第二能力数据,其中第二能力数据包括用于识别第二家庭装置的能力的结构化格式信息;分别比较第一和第二家庭装置的第一和第二能力数据;从被显示在该客户机装置上的用户接口中选择第二家庭装置;以及将来自该客户机装置的控制和命令发送到第一和第二家庭装置,使得第一和第二家庭装置相互通信以进行服务。
如果第一和第二能力数据的至少一部分匹配,则在用户接口上的选择信息最好更新成包括第二家庭装置的选择信息,使得第一和第二家庭装置兼容。每个家庭装置的选择信息都可以包括该家庭装置的图标表示。该结构化格式可以包括XML格式。
第三家庭装置可以连接到该家庭网络,其中第三家庭装置包含结构化格式的应用程序接口描述数据,用于家庭网络上一个或多个其它装置对第三装置的装置命令控制。第一家庭装置可以通过利用所述应用程序接口描述数据发送控制和命令信息到第三家庭装置,来控制第三家庭装置。第二家庭装置通过利用所述应用程序接口描述数据发送控制和命令信息到第三家庭装置,来控制第三家庭装置。
附图简述根据下列的描述、所附权利要求和附图,本发明的这些以及其它特性、特征和优点将更加容易被理解,其中

图1是根据本发明的一个方面的网络的实施例的方框图;图2是示例性装置控制和通信情况(scenario)中的图1的方框图;图3是根据本发明的、包括多个客户机和服务器的一个示例性家庭网络系统的方框图;图4是图3的一个客户机和一个服务器的示例性实施例的方框图;图5是客户机装置的示例性实施例;图6是服务器(serverdevice)的示例性实施例;图7是两个能够相互通信并且控制的联网服务器的方框图;图8是在一个网络中包括一个信源(source)服务器、一个信宿(sink)服务器以及客户机装置在内的示例性音频/视频(A/V)模型的示例性结构方框图;图9是另外一个示例性音频/视频(A/V)模型;图10是一个网络装置的示例性能力数据表;图11是一个网络装置的示例性属性数据表;图12是用于在联网装置之间产生命令消息的构件块的示例性配置;图13是用于产生命令消息的图12的构件块的另一个示例性配置;
图14是联网的客户机装置和服务器之间的交互的三个实例;图15是关于联网的装置接口的API扩展的定义的示例性方框图;图16是关于接入另一个服务器的接口描述文档的一个服务器应用程序的示例性结构;图17是控制服务器和受控服务器之间的另一个示例性装置间(inter-device)控制体系机构;图18是在联网的装置之间的API级的通信栈中提供Web(网络)标准公共中间件层的XML协议的实施例;图19是服务器对服务器命令和控制体系结构的另一个实施例;图20是装置接口库和用于家庭网络的家用电器定义数据库之间的关系;图21是装置接口定义的实施例的分层形式;图22是图21的装置接口定义中的层的示例;图23是发送器和接收器之间的命令传输和解释过程;以及图24是根据本发明的一个方面、提供翻译服务的信息包类型和格式的部分清单的示例性表。
发明的详细描述一方面,本发明在诸如家庭网络的网络中提供装置间通信。由于家庭装置越来越智能化并且可以共享信息,所以装置间通信允许用户互连网络中的装置,以利用共享那些装置的能力的信息。因而,装置间通信在给予用户全面便捷地使用联网的装置方面起了主要作用。
参看图1,在本发明的实施例中,网络10包括至少一个客户机装置12和经由通信链路16互连的至少一个服务器14。该通信链路16可以包括提供用于在各种被连接的家庭装置之间发送和接收数据的物理层(介质)的1394串行总线。该1394串行总线既支持时分多路复用音频/视频(A/V)流,也支持标准的IP(互联网协议)通信。在某些实施例中,家庭网络将IP网络层作为家庭网络的通信层使用。但可使用其它通信协议为家庭网络提供通信。
每个客户机装置12可以与网络10中的一个或多个服务器14通信。此外,每个服务器14也可以与网络10中的一个或多个其它的服务器14以及一个或多个客户机装置12通信。每个客户机装置12可以包括含有象用于接收用户输入的鼠标和键盘的输入装置的通信接口、以及用于为用户提供控制用户接口以便于用户与联网的装置进行交互的显示器。该用户接口可以包括一个图形用户界面(GUI)显示器18,用于给用户提供信息。参考图2,正如这里限定的那样,每个服务器14除提供控制用户接口外,还为用户提供一种服务,而每个客户机装置12为用户提供与网络10交互的控制用户接口。因而,只有客户机装置12直接与用户交互,服务器14仅仅与客户机装置12和其它服务器14交互。示例性服务可以包括MPEG的发布(sourcing)/汇集(sinking)以及显示服务。
图3是包括多个客户机装置12和多个服务器14的一个示例性家庭网络的框图。每个服务器14可以包括作为网络资源的硬件,用于给用户提供服务。此外,每个服务器14可以存储用于控制该服务器硬件的服务器或服务控制程序20,并且可以包括图形控制对象(GCO)用户接口描述22,作为用户与服务器控制程序20交互的接口,如图4所示。
为了控制的客户机装置12和被控制的服务器14之间的控制,客户机装置12,例如,通过在网络上从服务器14传输GCO22到客户机装置12来接入服务器14的GCO22。然后客户机装置12使用被传输的GCO22为用户创建控制用户接口GUI18,以便于在该网络上从客户机装置12与服务器14的服务器控制程序20通信。用户从客户机装置12给至少服务器14的服务器控制程序20提供命令和控制。
在服务器自身中存储的每个服务器14的GCO22可以降低带有几个服务器14的网络中客户机装置12的处理和存储要求。此外,在服务器14中的存储GCO22可以允许每个服务器14提供自己的GUI外观和感觉给用户,而且也允许在不修改客户机装置12的前提下,修改或更新GCO22。
参考图4,为了在客户机装置12和服务器14之间提供命令和控制,在一个实施例中包括一个呈现器(renderer)24,用于利用存储在客户机装置12中、或在该网络上被从所需的服务器14中传输到客户机装置12的GCO22,显示GUI18。例如,在初始装置选择阶段,客户机装置12可以在该网络上取回至少一个服务器14的GCO22,然后呈现器24利用该GCO22显示GUI18,以控制服务器14。该GUI18最好针对服务器14进行定制,并且最好能够包括用于控制服务器14的内置命令集。
此外,各服务器14的GCO22可以包括如下共同点(1)用于显示GUI18的客户机装置呈现器24的共用GCO模型,(2)用于将GCO22从服务器14传输到客户机装置12的公共通信协议,以及(3)用于从客户机装置12到服务器14的服务器控制程序20的GUI交互的公共通信协议,其中客户机装置12不需要被控制的特别服务器14的内置知识(built-inknowledge)。
再参考图4,服务器14可以包括一个后多个服务器控制程序20,以便控制用于提供服务的服务器硬件。来自服务器14的GCO22的GUI接口18为服务器控制程序20提供接口。该服务器14还可以包括在提供的请求服务时指示该服务器14和服务器硬件的控制状态的控制状态数据26。
例如,控制状态数据26可以包括服务器14的GUI18中的控制信息状态,如VCR服务器中记录动作的定时器设置。为了服务器14的用户控制,控制状态数据26存储在被控制的服务器14中,并在控制客户机装置12上通过服务器14的GUI18显示给用户。用于显示服务器14的GUI18的控制客户机装置12不保持被控制的服务器14的控制状态数据26的知识。
每个服务器14可以由一个或多个客户机装置12进行控制。因而,存储在服务器14中的控制状态数据26包括在每个控制客户机装置12中服务器14的GUI18中的信息的状态。例如,当用户采用第一客户机装置12控制服务器14时,该用户控制结束后,在第一客户机装置12上服务器14的GUI18中的信息也被服务器14保存在该服务器14的控制状态数据26中。
另外,当用户在第一客户机装置12上与服务器14的GUI18进行交互的同时,将服务器14的控制状态数据26用在客户机装置12上服务器14的GUI18中的信息进行更新,并且在用户控制结束后,控制状态数据26保留在服务器14中。当用户采用第二客户机装置12控制服务器14时,经由在第二客户机装置12上服务器14的GUI18,使控制状态数据26成为用户进一步的控制之用。用户也可以在以后使用第一客户机装置12控制服务器14,因此经由在第一客户机装置12上服务器14的GUI18,也能使控制状态数据26成为用户进一步的控制之用。如下所述那样,服务器14还可以包括时钟28,或维持当前时间,以便根据时间或用户的时钟输入允许时间延迟动作。
客户机装置12和服务器14可以物理地作为象DTV那样的一个单元捆绑(bundle)在一起。此时,服务器14包括用于控制服务器硬件的控制程序20,并且客户机装置12提供控制用户接口给服务器控制程序20,用于至少该服务器硬件的控制和命令。图5是客户机装置12的一个实例,它可包括(1)用于显示GUI的PDA(RemoteC),(2)用于显示GUI并包含包括音频和/或视频节目条纹(streak)目标服务器的信宿服务器的DTV(STB),以及(3)用于显示GUI并包括用于提供多种服务的至少一个服务器的PC。DTV或PC客户机装置中的硬件和可执行部分还可以由其它客户机装置控制。图6是示例性的服务器14,它包括(1)作为信源服务器的DVDP智能卡,(2)作为信宿服务器的音频放大器,(3)作为信源或信宿服务器的DVCR,以及(4)用于管理远端服务器的管理服务器。该管理服务器可以包括在例如DBS-STB、有线TV-STB或ATSC-STB。这样的装置包括适合于该STB的内部运行的本地控制或管理的管理服务器。此外,通过外部网络接入的外部服务器可以由本地客户机装置用于服务,诸如视频点播、增强电视(Enhanced-TV)、互联网商务之类。
参考图7,两个服务器14之间的通信和控制由在其间传输命令和控制数据的服务器14的控制程序20实现。服务器14可以控制一个或多个在该网络上的其它服务器14。并且服务器14也可以由一个或多个服务器14,以及一个或多个客户机装置12控制。此外,用户可以利用客户机装置12控制和命令第一组服务器14,而该第一组服务器14在需要为用户执行服务时,可以自动命令和控制第二组服务器14,而不用用户的干预。
例如,对于自动时间延迟操作,用户能够“登录”到客户机装置12,以便控制第一组服务器14并指定想要的服务。然后用户从客户机装置12中“退出”。第一组服务器14在它们自身之间执行通信和控制,并在以后,该第一组中的一个或多个服务器14在需要集中提供所需服务时,自动地控制第二组服务器14而不用用户的干预。
图7是两个能够相互通信并相互控制的服务器14的示例性实施例。每个服务器14都包括上述的控制程序20、时钟28和控制状态数据26。每个服务器14还可以包括由客户机装置12直接控制的服务器14的GCO22。但GCO22不需要包括在不直接由客户机装置12控制的服务器14中,并且只与其它服务器14通信。每个服务器14还包括一种命令语言(CL)接口30以及一个命令库。该命令库包括服务器14用来发送和接收用于提供其服务的信息的命令。但对于图4所示以及以上所述的用户控制,命令语言不是必要的。
图8是在网络上包括信源服务器14、信宿服务器14和客户机装置12的示例性音频/视频(A/V)模型。信源服务器14包括用于控制该信源服务器14的数据流信源硬件32的服务器控制程序20。该信宿服务器14包括用于控制信宿服务器14的数据流信宿硬件34的服务器控制程序20。在一个示例性操作中,用户利用客户机装置12控制信源服务器14来启动数据流信源硬件32,并控制信宿服务器14来启动数据流信宿硬件34。在从数据流信源硬件32到数据流信宿硬件34的数据传输起动时,用户可以释放客户机装置12。另外,用户可以安排在以后的时间起动数据传输,并释放客户机装置12。此后,信源服务器14的数据流信源硬件32和信宿服务器14的数据流信宿硬件34在由用户安排的时间自动起动该数据传输。
例如,数据流信源硬件32可以包括诸如直接广播卫星(Direct BroadcastSatellite,DBS)这样的调谐接入装置(Tuner-Access Device)。DBS是替代有线电视的多通道,并且直接地从卫星提供类似有线电视的节目到小(直径在18英寸至3英尺)卫星抛物面天线上。借助于DBS,几路标准的模拟电视信号被数字地压缩到单一卫星转发器上,以允许多达200或更多路可由指向空中的固定位置的抛物面天线的通道被接收到。数据流信宿硬件34可以包括数字磁带录像机(DVCR),该数字磁带录像机含有能够在播放时解压缩数字视频信号的数字VCR。用户提供包括用于DVCR的“延时记录”事件数据和用于调谐接入装置的“延时选择节目”事件数据。在该延时之后,调谐接入装置选择想要的节目,以及源节目数据给接收和记录该节目数据的DVCR,而不用来自用户的进一步控制动作。
图9是在网络10上包括至少一个信源服务器14 SERVER1、一个信宿服务器14SERVER2和客户机装置12的示例性音频/视频(A/V)模型。该客户机装置12包括一个带有用户接口的会话管理器(session manager)36,用于显示选择信息,以便用户选择和控制服务器14SERVER1、SERVER2以及其它诸如SERVER3和SERVER4(未显示在图中)这样的服务器14。该选择信息可以包括在会话管理器36中被标示作Serv1、Serv2、Serv3和Serv4的图标符号,以便于用户分别选择服务器14SERVER1、SERVER2、SERVER3和SERVER4。信源服务器14SERVER1可以包括DVCR,而信宿服务器14SERVER2可以包括1/2DTV。
在一个示例性操作中,客户机装置12在选择服务器14SERVER1和SERVER2后传输每个服务器14的GCO22给客户机装置,并且显示服务器14SERVER1和SERVER2中的每个的相应GUI18。用户可以与每个服务器14的GUI18交互,以便提供命令和控制给相应的服务器14进行服务。每个服务器14可以单独或和其它服务器14组合起来提供服务。此外,当相应的服务器14需要执行服务时,会话管理器36在客户机装置12中服务器14的多个GUI18之间传输控制状态数据26。根据用户命令和控制信息,两个或多个服务器14可以在它们自身之间传递命令和控制,以便提供用户请求的服务。
会话管理器36包括一个软件代理,它的功能是接入和显示由网络10的各服务器14提供可用的家庭网络服务。软件代理还可以匹配该网络10中的各服务器14的能力,并只为具有兼容能力的那些服务器14显示选择信息。此外,会话管理器36还可以将在一个服务器14的GUI18中产生的选择与另一个服务器14的GUI18中产生的选择匹配,以帮助用户提供有意义的命令和控制信息给该服务器14。
在一个示例性操作中,会话管理器36执行用于搜索该网络并发现连接到该网络的服务器14的软件代理。该软件代理也存取存储在每个服务器14中的能力数据以判定该服务器14的能力,并将关于那些能力的信息提供给用户。然后会话管理器36显示关于服务器SERVER1、SERVER2、SERVER3和SERVER4的图标Serv1、Serv2、Serv3和Serv4,如图9所示。
会话管理器36首先启动全部选择图标Serv1、Serv2、Serv3和Serv4,以允许用户从全部四个选择图标中选择。在用户通过在Serv1选择图标上点击来选中服务器SERVER1之后,会话管理器36判定服务器SERVER3和SERVER4与服务器SERVER1在能力上不兼容。因而,会话管理器36分别禁止关于服务器SERVER3和SERVER4的选择图标Serv3和Serv4。然后用户在图标Serv2上点击来命令和控制服务器SERVER2。
当用户与选中的服务器14的GUI18交互时,由用户输入到每个GUI18的控制和命令信息提供影响由用户进行的进一步的服务器选择的额外能力信息。例如,如果VCR服务器14被选中,则会话管理器36在启动和禁止其它服务器14的选择图标的进一步动作受用户播放或记录的决定的影响。
在该网络中的每个服务器14具有一种或多种如以上通过示例、参考图9所示的服务器所讨论的服务能力。每种服务能力包括信息的发布/汇集。例如,电视具有接收视频和音频流的汇集能力。VCR装置可以发布(发送)和汇集(接收)视频和音频信号,而PC能够发送和接收视频、音频和数据。每种发布能力具有一种配套以及兼容的汇集能力。同样地,每一种汇集能力也具有配套以及兼容的发布能力。例如,一种装置的视频输出能力由另一装置的视频输入能力配套。
因为每个装置14可以是该网络上的几种不同服务的信源或信宿,因此,每个装置14存储一个如图10中示范的能力数据表(能力表1)。表1的第一列识别装置14的服务能力,第二列识别该装置14是否是第一列中相应的服务的信源和信宿。利用该能力数据表1,可以在维持与旧装置兼容的同时实施新的服务。例如,如果开发了一种与旧服务兼容的新服务,则新旧两种服务都可以进入关于实施该新服务的装置的能力数据表1,从而实施的装置仍然保留与使用该旧服务的较旧的装置的兼容性。
在一种实施中,装置管理器(Device Manager)对装置信源和信宿服务进行匹配或比较。例如,该装置管理器可以实施为软件代理,以比较各装置14的能力或性能并用匹配的能力定位装置14。例如,在该装置为从第一装置14通过该网络到第二装置14的一个介质流的情况下,该装置管理器比较该第一和第二装置14的能力,以便协助用户明智地选择兼容于第一装置14的能力的第二装置14。以下是关于服务器14实施例的服务能力的示例性清单Stream_format_video_dvStream_format_video_mpeg2tptStream_ format_video_dsstptStream_format_video_mpeg2pesStream_format_video_mpeg210801-tpt每个装置14还可以存储一个包含该装置的相关属性的属性数据表(属性表2),该表被示范在图11中。名称和值判定了表2中的每一属性。虽在表2中显示了字符长度,但这不是必要的。该属性数据可用于该网络10上的其它装置14,以便于协作和存储装置信息。例如象以下描述的装置页面(Device Page)使用该属性表2存储该装置名称。其它字段在必要时可以加进该属性数据表2。
在以上描述的用户-客户机(user-to-client)装置控制模式中,属性数据可以显示与该客户机装置12中的服务器14的GUI页面上。另外,第二级装置信息主页面可以用来显示所述属性数据。此外,表示成文本形式或可扩展标记语言(XML)文档形式的属性数据可以由软件代理存取。对于装置-装置(device-to-device)控制模式,用于该被控制的装置的属性数据存储在该装置接口应用程序接口(device interface application interface)中。
在属性表2中的装置位置属性字段用于存储每个装置14的位置或组。该装置类型属性字段指定装置的类型,例如对具体的装置指定其类型VCR、DVD、DTV、便携式摄像机、PC、安全系统等。该装置类型属性字段在装置本身不提供图标时,用于选择一个缺省装置图标代表该装置页面中的装置。该属性表2可以包括用于缺省信源和缺省信宿属性字段的多个项目。对于由装置14管理的每一数据类型,每个这样的项代表一个不同的缺省信源或信宿装置14。
该能力和属性数据最好采用分层语言(hierarchical language)封装为结构化数据。这提供了检索用于诸如在GCO传输和服务器-服务器(server device-to-server device)控制中其它目的的能力和属性数据的一种通用方法。例如,该属性数据可以包括下列结构化数据格式<pre listing-type="program-listing"><![CDATA[  <DEVICEATTRIBUTES>    <ATTRIBUTE name=DeviceManufacturer value= “Samsung Inc.”>    <ATTRIBUTE name=Manufacturer URL value=www.samsung.com>    <ATTRIBUTE name=ManufacturerIcon value=“logo.gif”>    <ATTRIBUTE name=DeviceName value=“Samsung DSS”>    <ATTRIBUTE name=DeviceModel value=“SCH1900”>    <ATTRIBUTE name=DeviceType value=DDS>    <ATTRIBUTE name=DeviceLocation value=“Livingroom”>    <ATTRIBUTE name=Deviceicon value=“device.gif”>    <ATTRIBUTE name=DeviceAddress value=105.144.30.17>  </DEVICEATTRIBUTES>]]></pre>例如,能力数据可以包括下列结构化格式<pre listing-type="program-listing"><![CDATA[ <DEVICECAPABILITIES>    <CAPABILITY type=MPEG2 value=Source>    <CAPABILITY type=MPEG2 value=Sink>    <CAPABILITY type=MPEG3 value=Source><CAPABILITY type=MPEG3 value=Sink>  </DEVICECAPABILITIES>]]></pre>应用程序接口语言用于使不同服务器14能够执行包括服务器-服务器控制的装置-装置控制。该应用程序接口语言包括命令语言,并且可以采用XML描述,细节如下。一个服务器14的控制程序20远程地控制在该网络上的另一服务器14的控制程序20,而不使用GUI18或不必用户介入。装置-装置控制的一个示例是自动操作。用户首先为想要的服务通过客户机装置12提供控制,然后两个或两个以上的服务器14自动相互通信和控制以便提供该服务,而不用用户进一步的交互。
参考图12和13,标准的应用程序接口语言最好用于允许在各服务器14中的各控制程序20之间的协作。在一个实施例中,该标准应用程序接口语言包括下列构造部件(building block):(1)诸如服务函数数据库中的服务的功能说明40,(2)在其中包括消息单元的块42,(3)行业标准格式44,(4)消息压缩46,(5)输出结构化的消息数据的消息串结构48。
图12是执行产生命令消息的函数的构造部件的示例性结构。每一消息项目由服务的函数规格说明组成,并通过选择关于该消息项的行业标准化压缩的格式(Hex)标签来标准化。这样的消息项组汇集在一起产生完整的命令串。诸如CAL和AV/C的现有命令语言按图12所示那样操作。但这样的命令语言机构规定了物理接口上的物理装置上的二进制或十六进制代码消息和系统操作,并且是基于硬件规格的。因此,这样的命令语言对于基于网络层的控制机构来说不是很必要,即在该机构中控制系统规格说明包括应用程序级的软件级的命名、寻址、装置能力发现、通信语言和命令消息,其中在控制器14的一个软件应用程序20定位和控制在网络10上被控制的装置14中的另一个软件应用程序20。所述控制结构更适合于诸如包括家用电器(例如DVCR)的数字装置以及多功能、多用途的装置(例如计算机)。
图13是图2中执行产生命令消息的构造部件的优选示例性结构。在图13中,行业标准格式44和消息压缩46的位置与在图12中的位置不同。为了产生完整的消息,从功能说明服务40选择许多文本的标准形式。以后,该消息可以由协议栈的一个较低层进行压缩。图13表示执行家用电器(CE)的服务或装置命令和控制的方法。消息合成可以通过XML标准语法定义,而压缩可以通过诸如HTTP那样的另一个协议层执行。命令接口语言被用于应用软件20的接口级,而不是更低级的硬件级。因而,该网络协议栈以表示成所述语言的命令管理,控制器14和被控制的装置14的每一个都能可以被看作用于在它们之间发送消息的、该网络的集成部分。
参考图14,它显示了客户机装置12和服务器14之间交互的三个不同的实例。在第一个实例”A”中,自然人与远端服务应用程序”S”通信。该用户采用客户机装置12中的浏览器作为用户接口,其中浏览器控制服务应用程序”S”中的服务程序20并接收超文本链接标记语言(HTML)或XML格式的响应。还包括带有浏览器的副服务器,以便接受基于XML的异步命令消息发布(posting)。例如,对于DVCR,该副服务器14可以接受诸如”VCRFAILED:TAPE BROKE.”这样的命令消息。包括浏览器的软件代理可以被用来在浏览器的GUI中为用户显示命令消息,以便以后用于用户和DVCR的控制。基于XML的客户机装置12最好包括HTTP 1.1服务器能力,以便响应在其它地方启动的关于服务器到服务器的命令和控制的命令。
在第二实例”B”中,该用户由软件客户机控制程序50取代。该软件客户机控制程序50产生基于XML的命令发布给服务应用程序”S”,并接收后面的XML命令发布。在第三实例“C”中,该软件客户机控制程序50由服务器控制程序20这样的应用程序取代,其中命令和响应在两个服务应用程序20之间交换。在那种情况下,实例“B”是实例“C”在无服务时的特例。
基于XML的应用程序接口语言用于第一服务器14和第二服务器14(装置-装置或服务-服务)之间的控制,用于启动的万维网(Web)和启动的互联网。该应用程序接口语言基于Web标准,是中间设备层。在一个实施例中,装置-装置控制包括从网络10的另一个服务器14远程地控制位于一个服务器14中的控制程序20或应用程序。因而,面向这样的应用程序20的接口(API)利用API扩展在网络上进行应用。该API扩展最好利用诸如基于XML接口这样的标准格式提供全面协作。
现在参考图15,它显示了关于在网络10上通信的被标示为服务A的第一应用程序A以及被标示为服务B的第二应用程序B的API扩展的框图定义。例如,服务A可以是用于该网络上的第一服务器A的控制程序,而服务B可以是用于该网络上的第二服务器B的控制程序。服务器B发送命令到服务器A。对于本示例,第一和第二服务器A和B可以包括CE装置。
参考服务A的API扩展,第一个最上面的块52中提供CE对象的综合定义或数据库,以及用英文描述CE装置。该综合定义或数据库也可以以能够表示对象及其特有的方法的C、XML或其他格式出现。采用XML的该综合定义或数据库被称为XCE定义。对所有装置14,第二块54提供用于表示以XML格式出现的API的格式,被标示为接口数据类型定义INTERFACE.DTD。
标示为工具A的软件代理利用关于服务A的XCE定义的一个子集,并使用关于服务A的接口数据类型INTERFACE.DTD来创建一个XML格式文档NTERFACE-A.XML。该文档INTERFACE-A.XML根据关于服务A的接口数据类型1NTERFACE.DTD,描述了该服务A所支持的对象和方法。其它的数据类型定义也可以用于创建INTERFACE-A.XML文档。
软件工具A也创建一个查找表56,以便将来自该网络接口上的服务B中的消息转换成关于服务A的API定义,它以例如C编程并且汇编成可执行的二进制。该查找表56最好在汇编时创建,因此来自服务B的输入XML格式方法消息(命令)在运行时间期间被转换成由关于服务A的、被汇编的应用程序的C代码创建的API格式。该查找表56提供将来自服务B的XML对象方法调用,运行翻译成服务A的装置的本机语言调用。该查找表56采用装置控制程序20汇编,用于在服务A的服务器A上进行本地执行。
如果服务A在接收的消息中遇到错误,则INTERFACE-A.XML可以由服务A用来进行有效性检查。INTERFACE-A.XML也可以由诸如服务B这样的外部应用程序用来在与服务A通信之前判定服务A的消息格式。此外,如果从服务B到服务A的消息引起错误,则服务B可以存取INTERFACE-A.XML文档来诊断该错误。
参考关于服务B的API扩展,第一块58提供诸如关于上述服务A的XCE定义的CE对象的综合定义或和数据库。下一块60用于向诸如关于服务A的API这样的远端服务或装置提供进行XML格式方法(命令)调用的语言定义。该语言定义是描述与该网络上的对象交互的文档型定义方法请求CALL.DTD。
标示为工具B的软件代理至少利用关于服务B的XCE定义中的对象和方法的一个子集以及CALL.DTD,产生用于将来自关于服务B汇编的C程序代码的命令转换为XML格式方法请求的查找表62。因而,该查找表62例如提供在被服务B(例如“PLAY”)调用的方法与XML文档或带该方法调用通过网络接口到达服务A的消息之间的转换。软件工具B使用的XCE定义的子集依赖于该网络的使用范围和性质。例如,该子集可以选择成全部或限制使用一个家庭网络上的所有可用服务。
因此,该API扩展使用XML为该网络上的各装置之间提供通信。在以上的示例中,服务B的程序代码20产生对API的方法调用,并且该API调用被转换成符合关于互连装置通信的Web/互联网标准的XML的XML格式。该XML方法调用(消息)被发送到该网络上的服务A,而服务A重新将来自网络接口的XML方法调用转换成关于服务A的程序代码API定义。这种转换和重新转换为网络中的不同装置提供与总是在不同装置之间要求其它二进制兼容的程序代码API的Web/互联网兼容。下面显示了利用图15中的框图的XML接口块的示例。
Interface.dtd写成xml语言、用于描述对象接口的规则<pre listing-type="program-listing"><![CDATA[  <!ELEMENT paramater#PCDATA>  <!ATTLIST paramater     Type CDATA #REQUIRED     >  <!ELEMENT method(#PCDATA,(parameter)+)>  <!ELEMENT method(#PCDATA,(method)+)>]]></pre>interface.h写成c语言形式的示例性对象接口/*对象*/<pre listing-type="program-listing"><![CDATA[typedef struct Stream{  intid;};]]></pre>/*方法*/
void streamPlay(int id,int speed);void stresmStop(int id);interface.xml使用interface.dtd的规则的写成xml语言的同一对象<pre listing-type="program-listing"><![CDATA[  <object>Stream    <method>Play    <parameter type=“int”>id</parameter>    <parameter type=“int”>speed</parameter>    </method>    <method>Stop   <parameter type=“int”>id</parameter>    </method>  <object>]]></pre>call.dtd写成xml的、用于c函数调用的规则<pre listing-type="program-listing"><![CDATA[  <!ELEMENT parameter#PCDATA>  <!ATTLIST parameter   valueCDATA #REQUIRED   >  <!ELEMENT method #PCDATA,(parameter)+)>  <!ELEMENT object (#PCDATA)>  <1ELEMEWT call (object,method)>]]></pre>controller.c写成c语言的示例性控制器命令
.
.
streamPlay(Ox0lae,500);.
.
.
call.xml使用call.dtd的写成xml语言的同一命令<pre listing-type="program-listing"><![CDATA[<!--播放流的示例-->  <call>  <object>Stream</object>    <method>Play</method>    parameter value=“500”>speed</parameter>  </call>]]></pre>此外,以上提供了用于创建可用服务的描述文档的接口定义INTERFACE.DTD和CALL.DTD的示例,即如上所述的INTERFACE.XML。CALL.DTD定义包括产生诸如XML远程程序调用(RPC)或XMLRPC消息之类的方法调用和函数调用的规则集。CALL.DTD定义描述了控制器服务14的输出接口。例如,在家庭网络中,INTERFACE.XML代表在该家庭网络上可用的服务。该可用的服务是CE空间中整个服务的一个子集。
在一次触发记录(One-Touch-Record,OTR)情况下,用户处于诸如卫星STB这样的调谐接入装置的控制下。用户利用诸如表示节目清单的图形用户界面的电子节目指南(EPG)来控制调谐。OTR记录给用户提供包括从EPG选择以后的节目用于记录的服务,而不需要用户接入VCR图形用户界面来为VCR安排一个延迟记录时间。OTR自动控制VCR。以下是OTR.XML中的动作的示例性控制清单(l)StreamOpen=播放从卫星STB输出到该网络的被选中的节目流;对于OTR,该控制是对STB装置的本地控制;(2)StorageOpen=开启一个存储服务;以及(3)StorageRecord=通过该网络发送一个记录命令给VCR。
call.dtd用于以xml语言描述c语言函数的规则<pre listing-type="program-listing"><![CDATA[  <!ELEMENT parameter#PCDATA>  <!ATTLIST parameter      valueCDATA#REQUIRED     >  <!ELEMENT method (#PCDATA,(parameter)+)>  <!ELEMENT object (#PCDATA)>  <!ELEMENT call(object,method)>]]></pre>interface.dtd用于以xml语言描述对象接口的示例<pre listing-type="program-listing"><![CDATA[  <!ELEMENT parameter#PCDATA>  <!ATTLIST parameter     valueCDATA #REQUIRED      >  <!ELEMENT method (#PCDATA,(parameter)+)>  <!ELEMENT object (#PCDATA,method+)>]]></pre>interface.xml该文档描述提供的各CE服务一整个CE空间的一个子集<pre listing-type="program-listing"><![CDATA[  <?xml version= “1.0”?>  <!DOCTYPE interface SYSTEM“interface.dtd”>  <object>Stream    <method>Open   <parameter type=“int”>id</parameter>   <parameter type=“int”>channel</parameter></method>    <method>Close   <parameter type=“int”>id</parameter>    </method>  </object>  <object>Control    <method>Set   <parameter type=“int”>id</paxametex>   <parameter type=“int”>level</parameter>    </method>  </object>  <object>Storage    <method>Open   <parameter type=“int”>id</parameter>   <parameter type=“int”>cannel</parameter>    </method>    <method>Record   <parameter type=“int”>id</parameter>    </method>    <method>Play   <parameter type=“int”>id</parameter>   <parameter type=“int”>speed</parameter>   </method>   <method>Stop   <parameter type=“int”>id</parameter>   </method>   <method>Close   <parameter type=“int”>id</parameter>   </method></object>  <object>Display   <method>Open   <parameter type=“int”>id</parameter>   <parameter type=“int”>channel</parameter>    </method>    <method>Render   <parameter type=“int”>id</parameter>    </method>    <method>Blank   <parameter type=“int”>id</parameter>    </method>    <method>Control   <parameter type=“int”>id</parameter>   <parameter type=“int”>cid</parameter>   <parameter type=“int”>level</parameter>    </method>   <method>Close   <parameter type=“int”>id</parameter>   </method>  </object>]]></pre>otr.xml一次触发记录的Xml语言表示c语言表示streamOpen(100,2);/*播放一个流(由卫星馈送推送)*/StorageOpen(24,2);/*开启一个存储服务*/StorageRecord(24);/*记录该流*/<pre listing-type="program-listing"><![CDATA[  <?xml version=“1.0”?><!CODTYPE interface SYSTEM“call.dtd”>  <call>  <object>Stream</object>   <method>Open</method>   <parameter value=100”>id</parameter>   <parameter value=“2”>channel</parameter>  </call>  <call>   <object>Storage</object>   <method>Open</method>   <parameter value=“100”>id</parameter>   <parameter value=“2”>channel</parameter>  </call>  <call>    <object>Storage</object>   <method>Record</method>   <parameter value=“100”>id</parameter>  </call>]]></pre>象结合图15的上述讨论那样,第一装置B可以接入第二装置A的INTERFACE.XML文档,以便检查第二装置A的装置能力和API接口细节,并且判定第二装置A所支持的函数和命令细节。特别地,该第一装置B可以判定重叠,因而可用的由第一装置B和第二装置A支持的方法。图16是一个示例,其中包括应用程序B的第一服务器B存取包括应用程序A的第二服务器A的INTEFACE-A.XML文档。该第一服务器B包括INTERFACE-B.XML文档,用于与第二服务器A中的INTERFACE-A.XML文档比较。
在一个情况中,第一服务器B想要控制该网络中的第二服务器A。该第二服务器A的INTERFACE-A.XML文档从第二服务器A传输到第一服务器B,并被应用程序B用于查询该第二服务器A的能力和API接口方法。这允许第一服务器B利用XML远程程序调用XMLRPC来控制第二服务器A。在另一情况中,第一服务器B在尝试与第二服务器A进行至少一次通信,但不能建立通信后,执行以上步骤。在又一情况中,第一服务器B还远程地查询第二服务器A中的INTERFACE-A.XML文档,而不用将该INTERFACE-A.XML文档传输到第一服务器B。
在检查了INTERFACE-A.XML文档的内容之后,第一服务器B可以以上述的XML格式创建用于发送到第二服务器A的命令。一般地讲,该第一服务器B可以解释INTERFACE-A.XML文档的内容的至少一部分,它与由上述第一和第二服务器B和A使用的XCE定义的一个子集重叠。如果第一服务器B不能解释INTERFACE-A.XML文档的内容的某部分,那么第一服务器B可以通过下述的翻译忽略该部分,或者获取应用程序来帮助它解释该部分。
参考图17,它显示了控制服务器14和被控制的服务器14之间的另一个示例性装置-装置或互连装置控制。该控制服务器14包括一个控制器应用程序E,而该被控制的服务器14包括一个可执行应用程序C。该被控制的服务器14还包括INTERFACE-A.XML、该应用程序C的应用程序接口描述A。应用程序E存取该被控制的服务器14中的应用程序接口描述A,以便查询该被控制的服务器14的能力和API接口方法。然后应用程序E利用XML远程程序调用来命令和控制应用程序C,以控制该被控制的服务器14的硬件或服务D。日程安排(scheduler)装置可以是由诸如VCR中的时延记录(Time-Delay-Record)控制器的日历(time of day)驱动的控制服务器14的一种情况。
在第一示例中,应用程序E利用在网上的远程查询来存取应用程序接口描述A。在第二示例中,应用程序E通过将应用程序接口描述A的一个副本从被控制的服务器14传输到控制服务器14来存取应用程序接口描述A。然后应用程序E本地地查询该接口描述A。在第三示例中,应用程序接口描述A被传输到为接口描述提供库空间的库装置64,然后应用程序E远程地查询在该库中的接口描述A。该库装置64存储可用于直接控制动作和响应的有关应用程序的地址(URI)。
参考图18,XML协议在该网络中的各装置14的应用程序20之间的API级中的通信栈66里,提供Web标准的通用中间件层。在每个装置14中,位于该通信栈的顶上的应用程序发送和接收该网上的通信消息,并且与该装置栈中,本地地控制该装置的装置硬件或服务软件的软件层通信。
标示为XML层输出68的第一XML层API用于发送消息,而标示为XML层输入70的第二XML层API用于接收消息。方法调用的XCE定义和XML定义,即,上述的文档型定义CALL.DTD被用于创建XML层输出68。此外关于方法调用的XCE定义和XML定义,即,上述的文档型定义INTERFACE.DTD被用于创建XML层输入70。例如,控制器应用程序利用XML层输出68,而被控制的应用程序利用XML层输入70。
参考图19,它显示了服务器-服务器命令和控制体系结构的另一个实施例。基于XML的控制体系结构用于关于Web和互联网启动的装置或服务的装置-装置(服务对服务)控制。第一装置A可以利用XML命令消息,远程地控制该网上的第二装置B中的应用程序20。与每个装置的接口包括与该装置中的应用程序的接口,该接口以XML格式描述。所述接口可以扩展,并且可在中间件层上使用,以由该网上的其它装置进行检索和翻译,如下所述。
服务器A和B中的每个都包括用于控制该网上的其它服务器,以及由该网上的其它服务器控制的硬件和软件。在图19种,家庭网络装置A是一个控制器或模块,而家庭网络装置B是一个被控制的装置或模块。装置A和B中的每个都包括组成接口文档INTERFACE.XML和文档型定义INTERFACE.DTD的本地装置XML接口72。该INTERFACE.XML文档包括被相应的装置14支持的对象描述、方法和参数。该INTERFACE.DTD文档可以专用于该装置的XML接口的有效性检查。
装置A和B中的每个都还包括组成用于分析和确认诸如XML接口和XMLPRC命令那样的XML消息的程序代码的XML句型分析程序74。该XML句型分析程序74类似于在以上根据图18描述的所述XML层输入70。此外装置A和B中的每个都还包括一个XMLPRC编码器和解码器(编解码器)76,用于编码XMLPRC消息中的出网调用(outgoing call)的方法名称和参数,并在它被分析之后解码引入的XMLPRC消息,以便检索其中的方法名称和参数。XMLPRC编解码器76独立于装置XML接口72和装置-装置控制体系结构,因此,允许使用不同的XMLPRC格式,而不用对该装置-装置控制体系结构的任何方面作改动。
包括程序代码的接口获取器被装置A和B中的每个用来直接从另一个装置或从家庭网络接口库80获取另一装置的装置接口。当装置14时控制器时,在控制器14中的控制器应用程序代码82通过监督控制器14中诸如XML句型分析程序74、接口获取器78和XMLPRC编解码器76这样的软件和硬件,实现对网上其它装置14的命令和控制。当装置是被控制的装置时,位于该被控制的装置14中的被控制的应用程序代码84监督装置14中的软件和硬件,以便于由其它装置14控制该装置14。装置A和B的每一个中的家庭网络装置Web服务器86管理该网络上的装置之间的通信。关于装置A和B的每一个中的本机查找表88的XML由被控制的应用程序84用来将XMLPRC消息中的信息(例如方法名称、参数名称和类型)转换成装置的本机接口(例如本机方法名称、参数名称和类型)。当在XML消息和装置的本机接口中的方法和参数名称一致时,不使用所述表88。
装置A和B的每一个都还包括一个或多个处理器90,其中每个处理器90包括从被控制的应用程序84指向一个具体装置函数的本机实现的指针。在大多数装置中,装置函数的本机实施包括运行时的二进制代码。该二进制代码在汇编时由例如包括C语言和Java等高级语言产生。因而,家用电器制造商可以为新的功能增加更多的处理器90,而不会影响现有处理程序和函数的实施。装置A和B的每一个中的硬件服务92包括装置函数的本机实施。装置A和B的每一个都还包括含有装置函数的本机实施的API的本机接口94。
此外,诸如家庭网络对象请求中间代理(broker)(HNORB)79和接口库(IL)80这样的网络对象请求中间代理为家庭网络10提供中间件层98。如图19所示,该中间件层98可以定位于第三装置96或独立的控制集线器中。该HNORB79包括由一装置14用来发现连接到网络10上的其它装置14存在的软件代理。该HNORB软件代理将装置名称组织成命名分层树形结构,将装置接口组织成所述可检索接口库,并将装置接口提供给请求接口信息的装置。
包括HNORB79和IL80的中间件层可以直接连接到互联网,使得被连接的家庭装置可以从本地家庭网络10的外部进行接入。在一个本地家庭网络中的中间件层98可以连接到互联网上的其它本地家庭网络中的中间件层98,以提供包含两个家庭网络10的集成网络。在那种情况下,拥有适当流密码的被授权用户可以从该用户的辅助家庭网络中的电视接入该用户的基本家庭网络中的DVD的换片器(changer),以便播放视频并在该电视上观看它。
为了使用接口库80,在本地家庭网络上应该运行至少一个HNORB&amp;IL。也可使用多个HNORB&amp;IL。例如,一个电缆调制解调器、几个DTV以及一个中央家庭集线器都可以具有自己的HNORB&amp;IL软件代理。为了定位HNORB&amp;IL,装置14在该本地家庭网络发送一个广播消息。响应该装置14的第一个HNORB&amp;IL由该装置14利用。在HNORB&amp;IL定位后,该装置14和HNORB&amp;IL马上可以为登录、接口请求和提取、以及装置查找服务建立点对点传输控制协议(TCP)或用户数据报协议(UDP)连接。如果UDP协议不能使用,则TCP协议可以用于诸如IEEE1394这样的高带宽连接。基于HTTP的XMLPRC也可以用于与HNORB&amp;IL通信的装置。例如,装置14可以远程地调用HNORB“登录”方法,以将该装置接口作为一个或多个参数传递,或者,XMLPRC调用可以从该IL检索部分或全部装置接口作为XMLPRC响应或返回值。
如前所述,一个以上的HNORB&amp;IL可以在本地家庭网络10中同时运行,其中每个HNORB&amp;IL识别可用装置的一个子集,并且一个HNORB&amp;IL可以与其它的HNORB&amp;IL通信,以定位它不能找到的装置14。在一个本地家庭网络10上的多个HNORB&amp;IL可以利用诸如TCP或UDP这样的广播消息自动地相互定位。在这种情况下,多个HNORB构造一个分布式对象请求中间代理,而多个接口库80构造分布式接口库。为了提供故障容错,如果一个HNORB&amp;IL发生意外终止时,应该通知用该HNORB&amp;IL登录的全部装置,并且所述装置可以自动地用其它可用的HNORB&amp;IL登录。
每个装置接口具有相关联的一致的、唯一的逻辑名称。甚至在所述装置的位置或实际网络地址发生变化之后,其它装置可以使用所述一致的、唯一的逻辑名称来识别和接入一个装置。该逻辑名称和实际装置地址的映射由用于命名HNORB中的装置的软件代理管理。最好,利用标准命名方法。最好使用分层命名结构将装置名称组织成分层树。该分层结构可以使用“/”表达,它类似于文件系统中的同一符号。该结构可以利用不同方法产生,例如由象家/MPEG2/TV这样的不同服务类型产生;或由不同的位置产生,例如家/起居室/VCR。为了性能和效率的目的,几个命名树可以共存。
在图19中的控制服务器A和控制服务器B之间的示范型命令和控制中,中间件层98位于第三装置96中,或者可以位于独立的中央集线器中。变灰的框显示用于描述在图19中的特定命令和控制处理的装置元件。在一个示例性操作情况中,当装置A和装置B在网络上成为可用和可接入之后,每个装置将它自己及其XML接口登录和提交给中央HNORB和IL中间件层98。如果中央HNORB和IL中间件层98不可用,则每个装置在本地家庭网络上广播一条消息通告自己。
装置A的控制器应用程序82尝试查询被控制的装置B的装置接口的全部或部分。如果接口库80不可用,则首先通过发送一个请求给网上的装置B,然后从装置B接收装置B的XML接口,控制器A可以直接从控制器B请求和提取被控制的装置B的装置接口。但如果接口库80可用,则控制器A可以从接口库80请求被控制的装置B的装置接口的全部或部分。HNORB的软件代理从接口库80结构获得装置B的XML装置接口,并将其发送回控制器A。
一旦控制器A接收到装置B的XML装置接口,装置A的控制器应用程序就使用装置A的XML句型分析程序74来分析和解释装置B的装置接口。然后装置A的XMLPRC编解码器76使用该句型分析程序的结果产生所需的XMLPRC命令消息。该XMLPRC命令消息被发送到该网上的被控制装置B。在接收到所述XMLPRC命令消息之后,装置B的被控制的应用程序84就使用装置B的XML句型分析程序74来分析和解释接收到的XMLPRC命令消息。然后装置B的XMLPRC编解码器76解码该句型分析程序的结果,以获得该命令消息中的方法调用信息,该信息包括执行被请求的服务的装置B函数的方法名称和参数。
然后,装置B的被控制的应用程序84使用装置B中针对本机查找表88和处理器90的XML,通过装置B的本机接口,存取和开始装置B的本机函数实施。如果函数产生任何响应或返回值,则所述任何响应或返回值被编码成XML或XMLPRC消息,并且被发送到控制器A。此外,中间件层HNORB和IL可以给控制器A提供被控制的装置的一个基准,因此,该装置A可以产生对装置B本机函数的远程调用,作为本地装置A本机函数的调用。
最好采用标准的XMLPRC格式,以便所有的装置都可以解释,和解码该网络上的RPC调用。因为被控制的装置14的装置接口可以由控制器14查询和检查,所以为了提高效率的目的,最好采用含有足够多装置接口信息的简化的XMLPRC格式。以下示例显示了关于一次触发记录(OTR)和延迟记录(TDR)操作的XMLPRC调用的两种可能格式。示例Ⅰ
XML RPC调用,包括详细标记和接口信息示例性格式1.OTR调用的示例<pre listing-type="program-listing"><![CDATA[  <? xml version =“1.0”?>  <call>    <object>DVCR1.record</object>    <method>timeDelayedRecod</method>    <parameters>  <parameter>  <name>channel</name>  <value><int>4</int></value>  </parameter>  <parameter>  <name>recordTime</name>  <value><time>2:10:30</time></value>  </parameter>    </parameters>  </call>]]></pre>2.TDR调/用的示例<pre listing-type="program-listing"><![CDATA[  <xml version=“1.0”?>    <call>  <object>DVCR1.record</object>  <method>oneTouchRecord</method>  <parameter>   <parameter>   <name>channel</name>   <value><channelName>NBC</channelName></value>   </parameter>   <parameter>   <name>startTime</name>   <value><datetime.iso8601>19990401T19:05:35</   datetime.iso8601></value></parameter>  <parameter>   <name>recordTime</name>   <value><time>2:00:00</time></value>  </parameter>    </parameter>  </call>]]></pre>示例ⅡXMLRPC调用,带有精简标记和接口信息的示例性格式1.OTR调用的示例<pre listing-type="program-listing"><![CDATA[  <?xml version=“1.0”?>  <call>     <object>DVCR1.record</object>    <method>timeDelayedRecod</method>   <parameter value=“4”>channel</parameter>   <parameter value=“2:10:30”>recordTime</parameter>  </call>]]></pre>2.TDR调用的示例<pre listing-type="program-listing"><![CDATA[  <xml version=“1.0”?>     <call>   <object>DVCR1.record</object>   <method>oneTouchRecord</method>   <parameter value=“NBC”>channel</parameter>   <parameter   value=“19990401T19:05:35”>startTime</parameter>   <parameter value=“2:00:00”>recordTime</parameter>    </call>]]></pre>参考图20,家庭装置14的装置接口基于采用标准化词汇的行业标准的结构化数据库100。关于新接口和词汇的接口数据可以增加到数据库100种。使用英文描述全部CE装置的CE对象、方法和参数的综合定义或数据库被称为CE数据库102。该综合定义或数据库可以写成C语言、XML语言或其它能够表示对象及其相应的方法和参数的格式。采用标准的XML词汇的该综合定义或数据库称为XCE定义或数据库104。
控制器和被控制的应用程序82和84使用基于XML的XCE数据库104的标准接口子集编程。每个装置接口和写成XML语言的所述应用程序82和84一起存储。虽然XCE数据库104不必写成XML语言,但在汇编时产生的所述子集在本发明的一个实施例中是XML语言的,正如以上根据图15所描述的那样。
在图20中,对于嵌入式器具14,标示为“制造商”信息的信息在制造时内置于该器具14中,而在该网络中被标示作“家庭网络”的信息是该器具的操作运行时间的状况的部分。标示为1…N的N个装置14的装置XML接口72是标准化的XCE数据库104中的数据的分支。家庭网络接口库(HNIL)106提供连接到该家庭网络的可用装置的装置接口集合。该家庭网络接口库106是整个XCE数据库104的一个子集。
在图16中,将装置接口从装置A传输到装置B,以便于装置B中的应用程序B检查该装置A的接口的内容。正如上述详述的那样,装置接口包括由装置支持的对象、方法和参数的描述,例如称为装置A的INTERFACE-A.XML。装置XML接口72是写成XML格式的装置接口。XCE数据库104的内容是提供装置接口面向服务的结构。
参考图20,XCE数据库104还包括关于CE装置的一个标准化的XCE接口文档类型定义(DTD),它提供一个标准化的规则集,以便使用XML表示CE装置14。该DTD或其子集可以用于有效性检查。被标示为制造商工具108的软件代理过滤和利用关于特定CE装置的该标准化XCE定义104的子集,并且使用该标准化的XCE接口DTD来产生该CE装置的XML装置接口72,例如INTERFACE.XML和INTERFACE.DTD。根据该标准化的XCE接口DTD,文档INTERFACE.XML包括由特定装置支持的对象、方法和参数的描述。文档INTERFACE.DTD是该标准化的XCE接口DTD的子集,可以用于关于该装置的XML接口的有效性检查。其它文档类型定义也可以用来创建INTERFACE.XML文档。
包括所述XML接口文档和所述DTD文档的CE装置的XML接口72存储在诸如家庭网络接口库106那样的通用可存取库中。软件代理收集网上的全部可接入装置14的装置接口72,并将它们与该装置名称/地址信息一起放到可搜索的结构化接口库106中。该接口库106是XCE数据库104的子集,产生接口库106的处理相似于重建部分或全部XCE数据库104的处理。该接口库106可以作为家庭网络上的全部装置14的装置接口72的集合,或根据存储器空间的利用率作为高速缓冲存储器,其中只有最近使用过的装置接口72存储在这里。在装置14根据诸如DVD播放机换盘这样的事件更新器装置接口72的情况下,该装置接口72的部分基于事件服务更新。
参考图21,最好每个装置14的装置接口定义72均具有分层形式。这是因为对于家庭装置14来说,装置接口定义72可能过于冗长。一般来说,一次存取一个或几个象用于延迟记录的单一函数这样的函数,因此,只有该装置接口72的一小部分被使用。仅呈现(render)装置接口72的一部分而不呈现整个装置接口72是更有效。通过使用分层的装置XML接口,控制器14可以通过在来自被控制的装置14或HNORB和IL中间件层98的、关于XML装置接口的请求中指定所需的函数类或多个函数组,来请求被控制的装置14的部分装置接口72。在后一种情况下,HNORB和IL中间件层98送回该装置接口72的所需部分。
参考图21,该分层装置接口结构可以包括四层(1)用于每个家庭网络的XML接口的第一层112,它列出当前可用的装置,(2)用于每个装置的XML接口的第二层114,它列出函数类,(3)用于装置的每个函数类的特定的XML接口的第三层116,以及(4)用于一个函数类中的每一个函数的具体XML接口的第四层118。在家庭网络里边,只利用了三个较低级的层114、116和118,第一层112在该家庭网络之外利用。
图22是所述的层112、114、116、118以及相应的接口示例。每一层中的接口均经过象XLink或XPointer这样的、提供双向链接的链路链接到上层或下层(如果可用的话)。Xlink包括含有以下两部分的超级链接功能的程序包(1)允许同样地认出XML文档中的链路的Xlink部件,以及(2)允许链路寻址到XML文档的精确子部分的XPointer部件。因而,Xlink控制如何将链路插入XML文档,这里的链路可以指向诸如GIF文档这样的数据。此外,XPointer控制在链接到一个XML文档时可以从任何地方(例如从HTML文件)继续一个URL的碎片(fragment)识别符。
根据本发明,在一个服务器14控制另一个服务器14的典型命令和控制模型中,第一装置14尝试在第二接口层114中查询第二装置14的装置接口。在选择函数类(FC)之后,第一装置14查询诸如记录类这样的第二装置14中的特殊函数类的接口层116。此外,该第一装置14可以查询诸如OTR或TDR这样的特殊函数类的接口层118,以便对所述函数进行调用。分层或树结构使得查找接口函数变得更有效和节约网络带宽。示例性接口文件结构和层可以是第一层112-HN1.xml第二层114-VCR1.xml第三层116-VCR1_RecordCategory.xml第四层118-VCR1_RecordCategory_OTR.xml类似地,家庭网络接口库106最好是分层的,并且以各种各样的方式结构化,例如按装置的不同服务类型方式或按诸如房间这样的不同位置方式。所述分层结构是本地家庭网络10与其它家庭网络或互联网的接口。
以下显示的是可以以XML语法实现的示例性分层装置接口定义72。
<pre listing-type="program-listing"><![CDATA[consumer(document_file, doc)  +----document_file<server_home.dtd, server_auto.dtd>  +----doc(services_home, server_auto, server_samsung_web_site,avc_comands,cal_commands,,)  +----services_home(xml_utility,client,server_av,lighting,comms,hvac,utility,security,appliances,convenience,,)  +----xml_utility(download_DTD_file,,)  +----client(acknowledge, attention, error, post_message, sound,stop_schedule,stop_all,,)   +----sound(alarm,ring,buzz,,)   +----server_av(controls_gen,source,sink)   +----controls_gen(ping,process_infor,setup,,) +----process_info(s/wid,h/wid) +----h/wid(ser_no,manuf,model,class,,) +----s/wid(ser_no,exe_name,version,,) +----setup(clock,,) +----clock(hours,minutes,seconds)+----source(service_id, media, rate, protocol, stream_format,  controls_av,,)  +----sink(service_id,media,rate,protocol,stream_format, controls_av,,)  +----service_id(url,,)    +----media(tpt_stream,ram,disk,tape,,)     +----disk(name,number,,)  +----rate<value>  +----protocol(61883/1394,UDP/IP/Ethernet,,)   +----61883/1394(isoch_ch_no)  +----stream_format(video,audio,,)   +----video(dv,mpeg2tpt,dsstpt,mpeg2pes,mpeg10801-tpt,)   +----audio(mpeg3,ac-3,midi,,)  +----controls_av(flow_control,tune,timer_record, ui_control,,)   +----timer_record(tune,flow_control)   +----flow_control(play,stop,goto,record,,)   +----play(time_params)   +----record(time_params)   +----time_params(now,start,duration,end,,)   +----tune(send_epg,channel,,)   +----channel(number,id,time_params,,)   +----ui__control(dispiay,acoustic)   +----display(brightness,contrast,color/tint,horiz_size,   vert_size,,)  +----acoustic(volumn,base,treble,balance,fade,)  +----lighting(sensors,lights,send_epg)   +----sensors(living_room,sky,,)   +----lights(rooms_up,rooms_down,yard,,)   +----rooms_up(bed1,bed2,bed3,bed4,,)   +----bedl(lamp,dimmer,,)  +----dimmer<value>   +----rooms_down(family,kitchen,living,dining,soho, garage,,)+----yard(front,back)   +----comms(homehub,intercoin,telco,)   +----homehub(send_device_list,send_configuration,send_snmp_mib,,)  +----intercom()  +----telco()   +----hvac(controls_gen,controls_havc,,)   +----controls_hvac(a/c,heat,temp,humidity,)   +----temp(low,high,hysteresis,,)  +----utility(meters,energy_mgmt,,)   +----meters(water,gas,electric,,)   +----water<value>,gas<value>,electric<value>  +----security(sensors,send_epg,alarm,,)   +----sensors(peripheral,motion,,)   +----peripheral(rooms_up,rooms_down,,)   +----motion(room_down,yard,,)   +----appliances(microwave,range,oven,fridge,freezer,coffee,toaster,  washer,dryer,water_heater,,)  +----microwave(send_epg,controls,,)  +----fridge(temp,,)  +----water_heater(temp)   +----convenience(window,curtain_open,door/gate,pool/spa,bath,   fountain,lift,jacuzzi,,)   +----curtain_open<value>   +----server_auto(message,server_anto_ford_explorer_98,,)   +----server_auto_ford_explorer_98(mileage,maintenance,,)   +----mileage<data>   +----maintenance<data>  +----server_samsung_web_site(message,service,help,,,)  +----avc commands<,,,command_string,,,>   +----service_id url,,)  +cal commands<,,,command_string,,,>+----service_id url,,)]]></pre>所述的分层装置接口定义72可以包括下列字段‘document&#160;file’名称,它提供该文档类型定义(DTD)文件的名称,该文件可以由XML句型分析程序74用于确认XCE数据库104、或者XCE数据库104的XML版的部分的合法性和正确性。针对XCE结构的不同部分可以存在几种DTD文件,其中所述多个DTD不同于关于针对通信的RPC.CALL和INTERFACE.DTD文档类型定义。
‘doc’名称,提供覆盖能力、属性、通信和控制接口的区域的顶级名称。
‘Server_home’,提供关于家庭自动化、家用电器、公用设施等的区域。
‘Server_auto’,用于车库的汽车,显示可用于一种或多种汽车类型的消息接口。例如,server_anto_ford_explorer_98是关于一种特定汽车的接口。这允许接入该汽车的里程和维护接口,并且还可以用来例如由汽车制造商或车库远程接入,用于检修和远程诊断。
‘server_samsung_web_site’,提供与家庭之外的制造商Web站点的通信。包括消息、服务、帮助等接口。
‘AVC_commands’和‘CAL_commands’,例如提供能够解释AV/C和CAL语言的传统(legacy)装置。该结构的这一部分识别所述语言中的命令,这里的命令以XML语言标注和携带。因而,该内容不是XCE(Web)对象,并且协议转换应用程序可以被用于与原始CAL或AV/C的应用软件的接口。
在以上描述种,‘&#160;Server_home’提供包括A/V家用电器的主结构。详细展开了该结构的关于视频服务接收信宿(sink)和流目的地(例如DVCR)控制接口的具体示例的分支。典型的家庭网络中的控制接口可以包括‘&#160;xml_utility’提供支持诸如下载一个被更新的DTD文件、接口文件、程序文件等那样的实用网络功能的细节。
‘client’描述包括Web浏览器的客户机装置12的接口部分。例如,‘acknowledgrnent’指示被发出的消息和或命令的确认的控制器验收。
‘server_av’为所有可利用的音频和视频服务提供控制和负载接口,包括STB、DVCR、DTV、DVD、AUDIO等。
‘lighting’提供与家庭自动化照明控制器的接口,包括传感器、灯等。
‘comms’提供与通信装置的接口,一般是为了装置设置或参数的实用目的或远程管理,或者为了恢复配置。
‘hvac’为HVAC系统提供远程控制接口,可以用来从例如家庭之外的公共公司控制所述系统,以便在每天的最大负载时期内关闭家庭HVAC系统。此外,所述接口可以用来通过一种器具从家庭中控制HVAC系统,以使得基于装置的控制器提供比自动调温器控制更精确的控制机构。
‘utility’,例如提供用于读取家庭供给表(utility&#160;meter)的接口。
‘security’提供用于安全传感器和警报设置的接口。因而,使用该接口,运行在家庭网络装置上的应用程序可以接入位于家庭周围的传感器和检测装置,用于监视和控制那些装置。
‘appliances’提供用于厨房、公用或普通家庭用具的接口,例如包括提供远程控制或监视温度设置或其他来自控制器的控制和参数。在一种情况中,微波用具可以扫描食物包装袋上的条形码信息,并且接入制造商的数据库来获得适合已知类型的微波系统烹饪该食物的时间。使用装置对装置的命令和控制的用具的这种集成,提供很多用来提供诸如当在厨房或客厅接电话时,自动暂停洗碗机和让电视静音这样的服务的控制情况。
‘convenience’提供与用于提供方便服务的装置的接口,例如与窗帘、窗户、百叶窗、涡流控制器的接口。
在以上的描述中,‘server_av’是关于提供A/V流服务的A/V用具的控制接口结构的部分,并且被分成‘controls-gen’、‘source’以及‘sink’能力。
‘controls-gen’提供用于装置制造商属性和进行诸如查验(ping)测试装置的存在的普通实用程序的接口。此外,还可以包括造在其中的诸如软件和硬件标识和版本信息这样的属性。提供这种接口的装置返回提供所述软件的名称或标识的数据,而不会影响任何控制作用。还可以包括设置日历钟的时间的接口。
‘sink’提供用于介质流服务装置的接口。该结构根据所提供的服务(即视频流记录和播放)而不是根据诸如VCR这样的特定装置名称进行组织。例如,对于带有视频节目格式的网络来说,调谐器和DVD播放器都是视频节目流源,并且可以对诸如开始和结束进行控制。特定装置的控制中的差异由该定义结构的较低层寻址。
‘source’提供类似于‘sink’接口的接口。
参考以上的描述,‘service_id’或‘application_interface_id’包括一个或多个装置14的名称、地址或Web地址或URL位置。因为XCE数据库104包括全体约定接口,所以一般来说,动态主机配置协议(DHCP)软件代理给每一个装置分配一个地址和一个缺省名称,并且将该地址和名称增加到该服务或装置的接口。然后,软件代理110从本地地连接到该家庭网络的全部装置收集包括子集和或‘装置的部分XCE’定义的装置接口72,以产生‘网络的部分XCE’。附加的有关外部接口可以增加到关于外部控制的结构中。例如,按照连接到该网络的装置的装置接口,‘service_id’可以是接收到的结构或包括软件代理中的项目的网络接口库106中的名称/地址。这以后用户可以在该数据库中查找服务,并且可以使用所述名称/地址存取其接口包括该库的特定数据分支的应用程序。因而,该网络可以包括多个由所述名称/地址信息区分的相同服务。
‘media’提供关于介质类型的接口,这些介质例如包括来自调谐器的传输流、来自PC&#160;DRAM的RAM、用于CD和DVD的盘以及磁带。可以命名和识别这些介质,并且控制器可以查找XCE数据库来识别当前设置在网络中的介质。当在网上提供诸如DVD之类的新介质时,装置72中识别在盘上的节目材料的那部分因此变化。因而,不必传输整个装置接口72给XCE数据库,而仅仅传输有关的部分即可。在接收引起注意的信号时,库软件代理110可以获取新的更新,并且将其放在接口库106的适当位置。磁盘介质的增加类似于增加服务给网络,或者连接其它用具到网络。
‘rate’提供用于装置接口的数据流速率值,例如6M位/每秒或19.2位/每秒。
‘protocol’识别用于所述数据流的协议。如果提供一种以上的协议,例如61883/1394或UDP/IP,则选择所要求的协议。
‘stream_format’提供关于数字流音频和视频片断的打包格式和/或压缩标准。如果提供一种以上的格式,则经由接口消息选择所要求的格式。控制器应用程序82可以检查可用的格式,以判定是否存在兼容的。
‘controls_av’为A/V介质用具提供主控接口。
‘Flow&#160;control’提供诸如PLAY、STOP、GOTO、RECORD等之类的数据流控制作为用于特定装置的方法。这些方法除了例如PC软件之外,对嵌入式用具不发生变化。该控制可以包括用于延迟操作的时间参数。
‘Tuning’提供用于调谐控制的接口。控制器14可以发送请求给被控制的装置14的接口,而被控制的装置14送回如上所述的电子节目指南(EPG)数据结构。
‘UI&#160;control’提供与被控制的应用程序84的接口,以控制关于显示的调整,例如亮度和对比度,以及关于音频的调整,例如音量和低音。
‘Timer_record’提供用于控制器应用程序82的设置数据的接口,以实施延时记录。可以利用直接频道调谐信息和流控制(time_aparams)信息。
以上的描述可以均等地用于客户机装置12。可以利用关于CE空间的一种替换语法XCE定义或数据库。该替换语法XCE数据库包括,例如,含有家庭自动化、用具和汽车在内的全部服务描述。在服务对象提供用于控制的挠性(flexibility)和参数的情况下,利用控制方法按要求控制该对象。以下显示以AV/C和CAL命令语言写成的示例性命令,包括二进制和十六进制数据串。
<pre listing-type="program-listing"><![CDATA[consumer(document_file, doc)   +----document_file<server_home.dtd,server_auto.dtd>   +----doc(avc_comands, cal_commands, services_home, server_auto,server_samsung_web_site,server_anto_ford_explorer_98,,)   +----avc_commands<…command_string…>   +----cal_commands<…command_string…>   +----services_home(client,av,lighting,comms,bvac,utility,security,appliance,convenience,,)   +----xml_utility(download_DTD_file,,)   +----client(acknowledge, attention, error, post_message, sound,stop_schedule,stop_all,,)   +----sound(alarm,ring,buzz,,)   +----server_av(source,sink)   +----source(service_id, media, rate, protocol, stream_format,   controls_gen,controls_av,,)  +----sink  +----service_id(url,,)+----media(tpt_stream,ram,disk,tape,,)   +----disk(name,number,,)  +----rate<value>  +----protocol(61883/1394,UDP/IP/Ethemet,,)   +----61883/1394(isoch_ch_no)  +----stream_format(video,audio,,)   +----video(dv,mpeg2tpt,dsstpt,mpeg2pes,mpeg1080i-tpt,)   +----audio(mpeg3,ac-3,midi,,)  +----controls_gen(ping,process_info,setup,,)  +----controls_av(fiow_control,rune,timer_record,ui_control,,)   +----process_info(s/w_id,h/w_id)  +----h/w_id(ser_no,manuf,model,class,,)  +----s/w_id(ser_no,exe_name,version,,)   +----setup(clock,,)  +----clock(hours,minutes,seconds)   +----time_record(tune,flow_control)   +----flow_control(play,stop,goto,record,,)   +----play(time_params)   +----record(time_params)  +----tune(send_epg,channel,,)   +----channel(number,id,time_params,,)  +----time_params(now,start,duration, end,,)  +----ui_control(dispiay,acoustic)   +----display(brightness,contrast,color/tint, horiz_size,  vert_size,,)   +----acoustic(volumn,base,treble,balance,fade,)   +----lighting(screen,light,send_epg)   +----sensors(living_room,sky,,)   +----lights(rooms_up,rooms_down,yard,,)   +----rooms_up(bedl,bed2,bed3,bed4,,)   +----rooms_down(family,kitchen,living,dining,soho,garage,,)  +----yard(front,back)   +----bedl(lamp,dimmer,,)  +----dimmer<value>   +----comms(netmam,intercom,telco,)  +----netman(send_device_list, send_configuration,   send_snmp_mib,,)  +----intercom()  +----telco()   +----hvac(controls_gen,controls_havc,,)  +----controls_hvac(a/c,heat,temp,humidity,)   +----temp(low,high,hysteresis,,)   +----utility(meters,energy_mgmt,,)   +----meters(water,gas,electric,,)   +----water<value>,gas<value>,electric<value>   +----security(sensors,send_epg,alarm,,)   +----sensors(peripheral,motion,,)   +----peripheral(rooms_up,rooms_down,,)   +----motion(room_down,yard,,)   +----appliances(microwave,range,oven,fridge,freezer,   coffee,toaster,washer,dryer,water_heater,,)   +----microwave(send_epg,controls,,)   +----fridge(temp,,)   +----water_heater(temp)   +----convenience(window,curtain_open,door/gate,pool/spa,   bath,fountain,lift,,)   +----curtain_open<value>   +----server_auto(message,mileage,maintenance,,)   +----mileage<data>   +----maintenance<data>]]></pre>
另一方面,本发明使用对关于网络中的装置-装置命令和控制的现有的命令语言实施。装置包括内部对象和在运行时间根据现有的传送机构创建二进制串的API。在这种情况下,为了提供从该网中的一个装置14对网中的其它装置14的XML远程程序调用(XML&#160;RPC),要用对XML服务API的调用替代现有的应用程序接口实施。因而,原来的实施等效于XML服务API的包装(wrapper)。图18还显示了使用诸如虚线框中的CAL或AV/C之类的其它命令语言创建的应用程序,它们的接口实现用XCE/XML服务API中的包装替代。以下显示了用于将CAL命令语言变成XML&#160;RPC格式的示例。现有实施void&#160;DeviceCALCommand(int&#160;command){&#160;&#160;&#160;&#160;.
&#160;&#160;&#160;&#160;./*&#160;&#160;&#160;&#160;创建CAL格式化的字节串来表示这个对象/方法,并输出给线路&#160;&#160;&#160;&#160;*/&#160;&#160;&#160;&#160;CreatCALFormattedByteString(command);/*对每种协议都不同*/&#160;&#160;&#160;&#160;SendCALByteString();/*对每种协议都不同*/}包装的XML服务API调用void&#160;DeviceCALCommand(int&#160;command){&#160;&#160;&#160;&#160;/*&#160;&#160;&#160;&#160;用对XML服务API的调用替代CAL实施&#160;&#160;&#160;&#160;*/&#160;&#160;&#160;&#160;CreateXMLMessage(command);/*总是相同*/&#160;&#160;&#160;&#160;sendXMLMessage();/*总是相同*/}参考图23,另一方面,本发明提供用在网络的不同装置之间的装置间通信的标准命令协议和控制语言翻译。对于共享信息的不同装置,该信息必须采用请求的装置可以解释的格式。为了让装置120控制另一装置22,这两个装置都必须使用通用语言来解释相互之间的命令。本发明提供用于数据和命令协议的通用识别格式。
在一个实施例中,提供数据和命令协议的通用表达或打包方法,接收装置122由此可以判定被传输的数据本机格式。如果接收装置122能够解释本机格式,则可以直接接收该数据。否则,接收装置122可以请求翻译装置124或应用程序将该数据翻译成请求装置122可以解释的所需格式。翻译装置124或应用程序判定该原始数据的本机格式,将该数据翻译成所述的所需格式,并且将被翻译的数据发送到请求装置122。
因而,即使该数据本来是由发送装置120以请求装置的本机语言格式提供,请求装置122也处理那个数据。请求装置122还以请求装置的本机格式发回一个响应给发送装置120,或者通过用于翻译成发送装置120的本机格式的翻译装置124或应用程序、由代理发送一个响应。该翻译方法可以用于包括命令协议、数据文件和音频/视频流的信息。
对于不使用上述通用格式的装置,本发明提供将包括命令协议在内的数据翻译到这样的不一致的装置,以及从这样的不一致的装置将包括命令协议在内的数据翻译出来的服务。例如,当一个不一致的装置120发送数据到一致的装置122时,一致的装置122可以根据该数据的本机格式的判定来翻译该数据。例如,一致的装置122可以为该数据内的特定位模式而检查该数据。当一致的装置发送数据到已知的不一致的装置时,该一致的装置可以在传输之前、根据该不一致的装置的本机格式的判定翻译该数据。
一个示例性实现可以用于支持IP和HTTP协议的家庭网络。该家庭网络可以连接到互联网,来为所需功能获得各种应用程序和服务。因而,可以使得通用格式法与互联网协议和在互联网和家庭网络上操作的程序兼容。
提供通用数据格式一个示例是利用XML为在家庭能够网上传输的数据创建一个包。该数据可以包括命令协议、流式音频或视频、图形或应用程序。该数据用识别该包的数据和内容的本机格式的、写成XML语言的一个标准首标“包装”。该首标允许唯一标识该XML代码的数据部分的数据类型,因此,如果需要的话,可以翻译该数据,并且在接收后提供给适当的应用程序。
在Web标准下,该标识处理由浏览器使用识别文件传输的类型和内容的文件名扩展来执行。然后该浏览器运行适当的插件程序来处理该文件。在家庭网络中,XML用于识别数据传输,它用上述的通用标识方法提供基于IP的所有家庭网络传输。
另外,可以在家庭网络协议栈中提供软件层,以便唯一地识别该家庭网络上的所有数据传输的内容。该软件层可以替代XML使用。本发明的通用格式和标识原理均等地运用于作为标识方法的使用XML的实施例或者所述软件层。
在图23中,在接收到数据包传输后,接收装置122检查该数据包的XML识别首标以判定其中的数据格式。如果数据格式为可由装置122辨认,则放弃XML识别首标信息,而让该装置直接处理该数据。否则,装置122将接收到的XML包转换成XML翻译请求包,并发送该请求包和数据给翻译服务器124。
翻译服务器124翻译该数据,并将翻译过的数据转换成XML翻译响应包。然后翻译服务器124将该响应包转送回请求装置122。在翻译出错的情况下,翻译服务器124可以将翻译响应出错情况提供给请求装置122。在接收到被翻译过的数据后,请求装置122处理在该响应包中被翻译的数据。
XML数据包或分组的示例可以是&#160;&#160;&#160;&#160;&lt;IDENTITYtype=format=AV/c&gt;…包数据…&lt;\IDENTITY&gt;
翻译请求包或分组的示例可以是<pre listing-type="program-listing"><![CDATA[    <TRANSLATION REQUESTtype=Command format=CAL>    <IDENTITY type=Command format=AV/C>.packet data.  <\IDENTITY>    <\TRANSLATION REQUEST>]]></pre>翻译请求包或分组的示例可以是<pre listing-type="program-listing"><![CDATA[    <TRANSLATION RESPONSES type=Command format=CAL>...  packetdata…    <\TRANSLATION RESPONSES>]]></pre>翻译响应出错情况包或分组的示例可以是<pre listing-type="program-listing"><![CDATA[   <TRANSLATION RESPONSES type=Command format=CAL>...  packet data...  <ERROR condition=Unrecognized command>Translation could not beperformed<\ERROR>  <\TRANSLATION RESPONSES>]]></pre>此外,图24中的表3包括包或分组类型和格式的部分清单。
为了提供翻译服务,以类似于DHCP服务器的方式,在网络配置期间,在该网上识别翻译服务器124。在配置了网络之后的一段连续时间中,翻译服务器124向该网络中的所有装置广播其IP地址。当在网络启动期间,在网络上广播时,与该翻译服务兼容的所有装置120、122存储翻译服务器124的IP地址。
另外,请求装置122可以在家庭网络上广播翻译请求。在网中接收到该翻译请求的所有翻译服务器124通过发送一个翻译响应给请求装置122,来响应该翻译请求。然后请求装置122在响应的翻译服务器中间选择一个翻译服务器124。在一个示例中,请求装置122选择响应该翻译请求的第一翻译服务器124。在另一示例中,翻译服务器124可以在它们之间和/或与请求装置122达成协议,用于选择满足该翻译请求的翻译服务器124。
在本发明的一个实施例中,利用多个翻译服务器124来完成全部翻译请求。例如,单一翻译服务器124可能没有能力翻译所有请求。在这种情况下,需要识别每个翻译服务器124的地址以及每个翻译服务器124可以提供的翻译服务类型。每个装置120、122可以存储所有翻译服务器的IP地址的清单以及每个翻译服务器124提供的翻译服务的类型的相应清单,和任意相关的翻译应用程序。
出于效率的考虑,如果发送装置120希望发送数据到已经知道使用了不同于该发送装置120的格式的本机格式的接收装置122,则发送装置120可以通过翻译服务器124,由代理发送该数据到接收装置122。发送装置120传送一个类似于翻译请求命令的命令到翻译服务器124,并包括接收装置122的地址作为翻译过的数据的目的地。
在接收装置122需要翻译数据流的情况下,发送装置120可以直接发送该数据流到翻译服务器124,而翻译服务器124接下来传送翻译过的数据到如上所述的接收装置122。另外,发送装置120可以发送该数据流到接收装置122,然后接收装置122发送该数据流到翻译服务器124,以便翻译和返回被翻译过的数据到接收装置122。
在这里的描述中,控制机制是基于超文本传输协议(HTPP 1.1)的,该协议提供用于分布式协作超介质信息系统的应用程序级协议。在对于多任务的广泛应用中,HTTP充当普遍使用的、无国界的(stateless)、面性对象的协议。HTTP的一个特点是数据表示法的键入(typing)和协商,它允许在独立于被传输的数据的情况下建立系统。由家庭网络上的装置和应用程序使用的网络协议最好是IP(互联网协议)。但也可以使用其它协议。
虽然借助于其优选实施例将本发明进行了相当详细的描述,但还可能有其它的实施例。因此,附加的权利要求不应该被限制在含在这里的优选实施例的描述中。
权利要求
1.一种用于在具有多个连接在其上的家庭装置的家庭网络上进行服务的方法,该方法包括步骤(a)将客户机装置连接到家庭网络,该客户机装置能够显示用户接口;(b)在该客户机装置上执行软件代理,获得关于所述多个家庭装置的选择信息,以及将选择的信息显示在被显示在该客户机装置上的用户接口上;(c)从被显示在该客户机装置上的用户接口中选择连接到该网络的第一家庭装置;(d)读取第一家庭装置的第一能力数据,该第一能力数据包括用于识别该第一家庭装置的能力的结构化格式信息;(e)读取连接到该网络的第二家庭装置的第二能力数据,该第二能力数据包括用于识别第二家庭装置的能力的所述结构化格式的信息;(f)分别比较第一和第二家庭装置的第一和第二能力数据;(g)从被显示在该客户机装置上的用户接口中选择第二家庭装置;以及(h)将来自该客户机装置的控制和命令数据发送到第一和第二家庭装置,使得第一和第二家庭装置相互通信以进行服务。
2.如权利要求1所述的方法,其中步骤(f)还包括如果第一和第二能力的至少一部分匹配,则更新用户接口上的所述选择信息,以使得包括第二家庭装置的选择信息,从而使第一和第二家庭装置兼容。
3.如权利要求1所述的方法,其中步骤(e)还包括读取连接到该网络的多个家庭装置的能力数据,其中相应于一个家庭装置的每个能力数据包括用于识别连接到该网络的相应的家庭装置的能力的所述结构化格式的信息;步骤(f)还包括比较第一能力数据与所述的多个能力数据,并更新用户接口上的所述选择信息,以使得包括其能力数据匹配第一能力数据并且与第一家庭装置兼容的家庭装置的选择信息;步骤(g)还包括从所述用户接口中选择一个或多个家庭装置;以及步骤(h)还包括将来自该客户机装置的控制和命令数据发送到第一家庭装置和一个以上的其它被选择的家庭装置,使得第一和所述一个或以上的其它被选择的家庭装置相互通信以进行服务。
4.如权利要求1所述的方法,其中关于每个家庭装置的所述选择信息都包括该家庭装置的图标表示。
5.如权利要求1所述的方法,其中所述结构化格式包括XML格式。
6.如权利要求1所述的方法,其中只有客户机装置能够显示用户接口。
7.如权利要求1所述的方法,还包括步骤将第三家庭装置连接到家庭网络,该第三家庭装置以结构化格式存储应用程序接口描述数据,用于由该网上的一个或多个其它家庭装置对该第三装置的装置命令控制。
8.如权利要求7所述的方法,还包括步骤第一家庭装置利用所述应用程序接口描述数据、通过发送控制和命令信息到第三家庭装置,来控制该第三家庭装置。
9.如权利要求8所述的方法,还包括步骤将所述应用程序接口描述数据提供到第一家庭装置。
10.如权利要求7所述的方法,还包括步骤第二家庭装置利用所述接口描述数据、通过发送控制和命令信息到第三家庭装置,来控制该第三家庭装置。
11.如权利要求10所述的方法,还包括步骤将所述应用程序接口描述数据提供到第二家庭装置。
12.一种用于进行服务的网络系统,包括(a)物理层,其中物理层提供能够由相互通信的装置使用的通信介质;(b)第一家庭装置,存储包括结构化格式的信息的第一能力数据,用于识别第一家庭装置的能力;(c)第二家庭装置,存储包括所述结构化格式的信息的第二能力数据,用于识别第二家庭装置的能力;(d)客户机装置,包括用于显示用户接口,以提供关于至少第一家庭装置的选择信息给用户,并且接收用户输入,以至少选择第一家庭装置的用户接口控制器;该客户机装置还包括软件代理,使得当用户从被显示在该客户机装置上的用户接口选择第一家庭装置时,该软件代理读取和比较所述第一和第二能力数据,如果相容,则软件代理使得该控制器更新该用户接口上的所述选择信息,以包括关于第二家庭装置的选择信息,以及其中用户从用户接口选择第二家庭装置后,该客户机装置发送控制和命令数据到第一和第二家庭装置,使得第一和第二家庭装置相互通信,以实现由用户请求的服务。
13.如权利要求12所述的网络系统,其中该软件代理获得关于多个家庭装置的选择信息,并将该选择信息显示在被显示在该客户机装置上的用户接口上。
14.如权利要求12所述的网络系统,其中关于每个家庭装置的所述选择信息都包括该家庭装置的图标表示。
15.如权利要求12所述的网络系统,其中所述结构化格式包括XML格式。
16.如权利要求12所述的网络系统,其中只有客户机装置能够显示用户接口。
17.如权利要求12所述的网络系统,还包括第三家庭装置,用于存储结构化格式的应用程序接口描述数据,该数据用于由网络上的一个或多个其它家庭装置对第三装置的装置命令控制。
18.如权利要求17所述的网络系统,其中第一家庭装置包括控制应用部件,用于利用所述应用程序接口描述数据、通过发送控制和命令信息到第三家庭装置来控制该第三家庭装置。
19.如权利要求17所述的网络系统,其中第二家庭装置包括控制应用部件,用于利用所述应用程序接口描述数据、通过发送控制和命令信息到第三家庭装置来控制该第三家庭装置。
20.一种用于经由家庭网络进行服务的方法,该方法包括下列步骤(a)将客户机装置连接到家庭网络,其中该客户机装置能够显示用户接口数据;(b)将第一家庭装置连接到家庭网络,该第一家庭装置以选择的格式存储用户接口数据,该数据定义由用户经由该网络至少对第一家庭装置进行用户命令和控制的用户接口;(c)将第二家庭装置连接到家庭网络,该第二家庭装置以结构化格式存储应用程序接口描述数据,该数据用于由连接到该网络的一个或一个以上其他家庭装置对第二家庭装置的装置命令和控制;(d)在该客户机装置中,经由该家庭网络接收第一家庭装置的用户接口数据;(e)在客户机装置上显示由第一家庭装置的用户接口数据定义的用户接口;(f)响应于用户与显示在客户机装置上用户接口的交互,从用户处接受用户输入;(g)基于该用户输入,从该客户机装置将控制和命令数据发送到第一家庭装置,使得该第一和第二家庭装置利用所述应用程序接口描述数据相互通信以进行服务。
21.如权利要求20所述的方法,其中步骤(f)还包括从被显示在客户机装置上的用户接口接受用来选择第二家庭装置的用户输入。
22.如权利要求21所述的方法,还包括步骤第一家庭装置基于经由该客户机装置输入到该第一家庭装置的用户输入,利用所述应用程序接口描述数据,通过发送控制和命令信息到第二家庭装置,来控制该第二家庭装置。
23.如权利要求22所述的方法,还包括步骤经由该网络,将该应用程序接口描述数据提供到第一家庭装置。
24.如权利要求20所述的方法,其中所述应用程序接口描述数据包含关于第二家庭装置的能力数据,并且还包括步骤(ⅰ)在第二家庭装置的应用程序接口描述数据中查询能力数据,以及(ⅱ)利用该能力数据更新第一家庭装置中的所述用户接口数据,以允许用户经由显示在该客户机装置上的第一家庭装置的用户接口来命令和控制第二家庭装置。
25.如权利要求20所述的方法,还包括连接两个或多个家庭装置到该网络,每个家庭装置存储结构化格式应用程序接口描述数据,用于由连接在网上的一个或多个其它家庭装置命令和控制该家庭装置。
26.如权利要求25所述的方法,其中所述两个或多个家庭装置的每个中的应用程序接口描述数据包含关于各自家庭装置的能力数据,并且还包括步骤(ⅰ)在所述两个或多个家庭装置的应用程序接口数据中查询能力数据,以及(ⅱ)用所述能力数据更新第一家庭装置中的所述用户接口数据、以允许用户经由显示在该客户机装置上的第一家庭装置的用户接口来命令和控制所述两个或多个家庭装置。
27.如权利要求25所述的方法,还包括步骤经由该网络提供多个所述两个或多个家庭装置的应用程序接口描述到第一家庭装置。
28.如权利要求27所述的方法,还包括步骤经由该网络,利用相应于所述多个家庭装置的每一个的所述应用程序接口描述数据,从第一家庭装置发送控制和命令数据到所述多个家庭装置,以控制所述多个家庭装置的操作。
29.如权利要求27所述的方法,还包括步骤在该网络上定位所述应用程序接口描述,并经由该网络将所述应用程序接口描述提供到第一家庭装置。
30.如权利要求27所述的方法,还包括步骤提供所述多个家庭装置中的一个家庭装置的应用程序接口数据到所述多个家庭装置中的另一个家庭装置。
31.如权利要求30所述的方法,还包括经由该网络,利用相应于所述另一家庭装置的所述应用程序接口描述,从所述一个家庭装置发送控制和命令数据到所述另一家庭装置,以控制所述另一家庭装置的操作。
32.如权利要求20所述的方法,其中应用程序接口描述包括用于第一家庭装置的远程程序调用信息,以控制所述第二家庭装置的操作。
33.如权利要求32所述的方法,其中应用程序接口描述包括用于识别第二家庭装置的能力的能力数据。
34.如权利要求20所述的方法,其中被选择的格式包括HTML格式。
35.如权利要求20所述的方法,其中该结构化格式包括XML格式。
36.一种用于命令和控制装置的网络系统,包括(a)物理层,其中物理层提供能够由相互通信的装置使用的通信介质;(b)第一服务器,以结构化格式存储用户接口数据,应用定义用户对至少第一装置的用户命令和控制的用户接口;(c)第二服务器,以结构化格式存储应用程序接口描述数据,用于一个或多个装置对第二服务器的装置命令和控制;(d)客户机装置,能够显示用户接口数据,该客户机装置包括用户接口控制部件,该部件用于在该客户机装置上显示该第一服务器的所述用户接口,接受用户输入,以及基于该用户输入发送控制和命令数据到第一服务器,使得所述第一和第二家庭装置采用应用程序接口描述数据相互通信,以实现由用户请求的服务。
37.如权利要求36所述的网络系统,其中所述用户接口控制器接受用于从被显示在该客户机装置上的用户接口选择第二服务器的用户输入。
38.如权利要求37所述的网络系统,其中第一服务器包括应用程序控制部件,该应用程序控制部件利用所述应用程序接口描述数据,基于经由该客户机网络输入到第一服务器的用户输入,通过发送控制和命令信息到第二服务器来控制该第二服务器。
39.如权利要求38所述的网络系统,其中所述应用程序控制部件从该第一服务器获得该应用程序接口描述数据。
40.如权利要求37所述的网络系统,其中所述应用程序控制部件从一个数据库获得该应用程序接口描述数据。
41.如权利要求36所述的网络系统,其中所述应用程序接口描述数据包含关于第二服务器的能力数据,并且应用程序控制部件从该应用程序接口描述数据中获得该能力数据,并利用该能力数据更新第一家庭装置中的所述用户接口数据,以允许用户经由显示在该客户机装置上的第一服务器的用户接口来命令和控制第二服务器。
42.如权利要求36所述的网络系统,还包括两个或多个服务器,每个这种服务器都以所述结构化格式存储应用程序接口描述数据,用于由一个或多个装置对所述两个或多个服务器的命令和控制。
43.如权利要求42所述的网络系统,其中所述两个或多个服务器的每个中的应用程序接口数据包含关于各自服务装置的能力数据,并且应用程序控制部件从所述两个或多个服务器的应用程序接口描述数据中获得该能力数据,并利用所述能力数据更新第一服务器中的所述用户接口,以允许用户经由显示在该客户机装置上的第一服务器的用户接口来命令和控制所述两个或多个服务器。
44.如权利要求42所述的网络系统,其中应用程序控制部件利用相应于所述两个或多个服务器的每一个的所述应用程序接口描述数据,来发送控制和命令数据到所述两个或多个服务器,以控制所述两个或多个服务器的操作。
45.如权利要求36所述的网络系统,其中所述应用程序接口描述数据包括用于第一家庭装置的远程程序调用信息,以控制所述第二服务器的操作。
46.如权利要求36所述的网络系统,其中被选择的格式包括HTML格式。
47.如权利要求36所述的网络系统,其中该结构化格式包括XML格式。
全文摘要
用于通过以下方式在具有连接到自身的多个家庭装置的家庭网络上进行服务的方法和系统:将客户机装置连接到家庭网络,以显示用户接口;在客户机装置上执行软件代理,用于获得网络装置的选择信息,以及将选择信息显示在被显示在该客户机装置上的用户接口上;从被显示在该客户机装置上的用户接口中选择连接到该网络的第一家庭装置;读取第一家庭装置的能力数据,其中该第一能力数据包括用于识别第一家庭装置能力的结构化格式的信息;读取连接到该网络的第二家庭装置的第二能力数据,其中第二能力数据包括用于识别第二家庭装置能力的结构化格式的信息;分别比较第一和第二家庭装置的第一和第二能力数据;从被显示在该客户机装置上的用户接口中选择第二家庭装置;以及将来自该客户机装置的控制和命令发送到第一和第二家庭装置,使得第一和第二家庭装置相互通信以进行服务。
文档编号H04L12/28GK1311936SQ99808358
公开日2001年9月5日 申请日期1999年5月7日 优先权日1998年5月7日
发明者理查德·汉普尔曼, 王冬岩 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1