专利名称:用于模拟导航装置的行为的通信装置的制作方法
技术领域:
本发明涉及尤其是移动导航领域的信息技术。
背景技术:
对移动导航装置的不断增加的需求强加了若干关于例如以下内容的限制管理导航内容(如路线安排信息、交通信息、地图信息等导航项目)、向导航装置提供例如用户特定导航内容、操作导航装置或管理安装在例如导航装置上的可执行程序。
然而,导航装置的不断增长的复杂性和对信息的增长的需求意味着与有效管理信息和操作导航装置相关联的问题。
发明内容
本发明的目的是提供一种概念,用于响应于执行安装在导航装置上的装置固件程序而模拟导航装置的行为,即使(例如)装置固件的版本未知也是如此。
通过独立权利要求的特征实现此目的。
本发明是基于这样的发现只要另一程序模拟安装在导航装置上的装置固件,便可使用所述另一程序来模拟导航装置的行为。因此,所述另一程序可作为例如嵌入的模拟器安装在另一装置上,并被执行以模拟导航装置。然而,在模拟导航装置之前,须确保所述另一程序对应于装置固件,例如,所述另一程序的源代码对应于装置固件的源代码。因此,即使导航装置关闭,用户也可使用模拟程序与导航装置一起工作。
一实施例提供一种用于响应于执行安装在导航装置上的装置固件程序来模拟导航装置的行为的通信装置。优选地,所述通信装置包括提供器,其用于提供关于装置固件程序的信息;确定器,其用于确定安装在通信装置上的当前固件程序是否对应于安装在导航装置上的装置固件程序;以及处理器,其用于在当前固件程序对应于装置固件的情况下执行通信装置上的当前固件程序,以便模拟导航装置的行为。
根据进一步的实施例,处理器可经由通信网络建立与远程网络实体的网络连接,以便在当前固件程序不对应于装置固件程序的情况下获得当前固件程序的更新的版本。此外,处理器可执行当前固件程序的更新的版本,以便模拟导航装置的行为。
根据进一步的实施例,提供器可连接到导航装置,以便检索指示装置固件程序的信息。
根据进一步的实施例,确定器可确定安装在通信装置上的当前固件程序是否对应于装置固件,所述确定是基于包括指示装置固件程序的信息的内容文件表,或者是基于包括指示当前固件程序的信息的内容文件表。
根据进一步的实施例,处理器可基于导航装置的行为的模拟来控制导航装置。
另一实施例提供一种用于响应于执行安装在导航装置上的装置固件程序来模拟导航装置的行为的方法。所述方法包括提供关于来自导航装置的装置固件程序的信息;确定当前固件程序是否对应于安装在导航装置上的装置固件;以及在当前固件程序对应于装置固件的情况下执行通信装置上的当前固件程序,以便模拟导航装置的行为。
根据另一实施例,所述方法包括经由通信网络建立与远程网络实体的网络连接,以便在当前固件程序不对应于装置固件程序的情况下获得当前固件程序的更新的版本;以及执行当前固件程序的更新的版本,以便模拟导航装置的行为。
根据另一实施例,所述方法包括连接到导航装置,以便检索指示装置固件程序的信息。
根据另一实施例,所述方法包括确定当前固件程序是否对应于装置固件程序,所述确定是基于包括指示装置固件程序的信息的内容文件表,或者是基于包括指示当前固件程序的信息的内容文件表。
另一实施例提供一种用于响应于执行安装在导航装置上的装置固件程序来模拟导航装置的行为的可通过编程来设置的通信装置。所述可通过编程来设置的通信装置可执行用于提供关于装置固件程序的信息的第一计算机程序;执行用于确定可供可通过编程来设置的通信装置使用的当前固件程序是否对应于安装在导航装置上的装置固件程序的第二计算机程序;并在当前固件程序对应于装置固件程序的情况下执行通信装置上的当前固件程序,以便模拟导航装置的行为。
优选地,所述可通过编程来设置的通信装置经配置以执行上述方法的步骤。
根据另一方面,一种可通过编程来设置的实体可通过以下方式来控制进一步的实体向不存在的(即,虚设)网络地址传输特定命令或请求传输特定命令,以便控制所述进一步的可通过编程来设置的实体。可通过额外的可通过编程来设置的(例如,控制)实体来截取传输或传输请求,所述额外的可通过编程来设置的实体向进一步的可通过编程来设置的实体提供特定命令。因此,间接地分配命令,这会降低额外复杂性。在此方面,术语“可通过编程来设置的实体”可指代可通过编程来设置的构件或能够在计算机上运行的计算机程序。
一实施例提供一种通信装置,其具有可通过编程来设置的第一构件、可通过编程来设置的第二构件以及可通过编程来设置的第三构件。所述可通过编程来设置的第一构件可经配置以请求可通过编程来设置的第二构件向不存在的网络地址(例如,虚设地址)传输特定命令。可通过编程来设置的第二构件可经配置以通知可通过编程来设置的第三构件关于传输特定命令的请求。响应于指示所述请求的信息,可通过编程来设置的第三构件可执行所述特定命令。因此,即使可通过编程来设置的第一构件无法与可通过编程来设置的第三构件直接交互,可通过编程来设置的第一构件也可间接地控制可通过编程来设置的第三构件。
根据进一步的实施例,可通过编程来设置的第二构件可执行第二计算机程序,其提供虚拟机,虚拟机为另一程序提供例如主机或环境。因此,可通过编程来设置的第一构件可在虚拟机上执行第一计算机程序。因此,第一计算机程序在第二计算机程序提供的虚拟机上运行,使得第二计算机程序可监管第一计算机程序并(例如)捕获请求。
根据进一步的实施例,第一计算机程序包括不可执行的脚本。此外,第二计算机程序在被执行时可提供网络浏览功能性,例如网络浏览器。此外,第三计算机程序在被执行时可提供用户应用程序,例如用户环境(例如,本地应用程序)。
另一实施例提供一种可经配置以执行第一计算机程序、第二计算机程序和第三计算机程序的通信装置,所述第一计算机程序请求第二计算机程序向不存在的网络地址传输特定命令,第二计算机程序通知第三计算机程序关于传输特定命令的请求,第三计算机程序响应于指示所述请求的信息而执行所述特定命令。因此,即使例如第一计算机程序不包括用于直接与第三计算机程序交互的可执行例程,第一计算机程序当被执行时也可间接地控制第三计算机程序。
根据进一步的实施例,第二计算机程序在被执行时可提供虚拟机,其中第一计算机程序可在第二计算机程序提供的虚拟机上运行。因此,当被例如在计算机上执行时,第一计算机程序借助虚拟机提供一个环境,其实现监管第一计算机程序并捕获请求,且间接地捕获特定命令。
根据进一步的实施例,第一计算机程序可提供不可执行的脚本,第二计算机程序可提供网络浏览功能性,例如网络浏览器,且第三计算机程序可提供用户应用程序,例如用户环境。
举例来说,特定命令指示例如通过第三计算机程序经由通信网络建立到达远程网络实体的网络连接。
另一实施例提供一种通信方法,其包括通过第二计算机程序请求第一计算机程序向不存在的网络地址传输特定命令;向第三计算机程序提供指示请求的信息;以及通过第三计算机程序响应于指示传输特定命令的请求的信息来执行特定命令。
另一实施例提供一种计算机程序,其包括第一计算机程序、第二计算机程序和第三计算机程序,所述第一计算机程序当在计算机上运行时请求第二计算机程序向不存在的网络地址传输特定命令,第二计算机程序当在计算机上运行时通知第三计算机程序关于传输特定命令的请求,第三计算机程序当在计算机上运行时响应于关于所述请求的信息而执行所述特定命令。
根据另一方面,由多种程序或可通过编程来设置的实体提供的标准统一资源识别符字段(URI)可形成界面,用于例如间接地与计算机程序或与可通过编程来设置的实体交互。因此,有效地利用已经存在的资源。
一实施例提供一种用于在表示统一资源识别符的字符串中检测特定计算机命令的处理装置,所述特定命令包括预定义的命令标头,所述命令标头之后是来自多个预定义的命令名称的一命令名称。处理装置包括确定器,其用于确定所述字符串是否包括预定义的命令标头,其中在字符串包括预定义的命令标头的情况下,所述确定器可进一步确定命令标头之后的子字符串是否包括命令名称。处理装置进一步包括提供器,其用于在命令标头包括命令名称的情况下,提供预定义的命令标头和命令名称作为特定计算机命令。包括预定义的命令标头和命令标头之后的命令名称的命令结构允许以低复杂度在URI中识别特定命令。
根据进一步的实施例,在命令标头之后的子字符串包括命令名称的情况下,确定器可确定命令名称之后的进一步的子字符串是否包括至少一个命令自变量。此外,确定器可确定所述至少一个命令自变量是否对应于特定命令的预定参数。在所述至少一个命令自变量对应于预定参数的情况下,提供器可提供预定义的命令标头、命令名称和所述至少一个命令自变量作为特定计算机命令。因此,特定计算机命令是在URI中检测到的命令部分的基础上构成的,且可(例如)由例如处理器执行。
根据进一步的实施例中,处理装置可包括(例如)用于执行特定命令的可通过编程来设置的处理器。
另一实施例提供一种用于在表示统一资源识别符的字符串中检测特定计算机命令的方法,所述特定命令包括预定义的命令标头,所述命令标头之后是来自多个预定义的命令名称的一命令名称。所述方法包括确定所述字符串是否包括预定义的命令标头;在字符串包括预定义的命令标头的情况下,确定命令标头之后的子字符串是否包括命令名称;以及在命令标头包括命令名称的情况下,提供预定义的命令标头和命令名称作为特定计算机命令。
根据进一步的实施例,命令名称之后是一个或一个以上命令自变量,且所述方法包括在命令标头之后的子字符串包括命令名称的情况下,确定命令名称之后的进一步的子字符串是否包括至少一个命令自变量;以及在命令名称之后的进一步的子字符串包括所述至少一个命令自变量的情况下,提供预定义的命令标头、命令名称和所述至少一个命令自变量作为特定计算机命令。
根据进一步的实施例,所述方法包括在命令标头之后的子字符串包括命令名称的情况下,确定命令名称之后的进一步的子字符串是否包括至少一个命令自变量;确定所述至少一个命令自变量是否对应于特定命令的预定参数;以及在所述至少一个命令自变量对应于预定参数的情况下,提供预定义的命令标头、命令名称和所述至少一个命令自变量作为特定计算机命令。
根据进一步的实施例,预定参数将命令名称与进一步的命令自变量分开,且所述方法进一步包括提供预定义的命令标头、命令名称和所述至少一个命令自变量以及进一步的命令自变量作为特定计算机命令。
根据进一步的实施例,特定命令指示经由通信网络建立到达远程网络实体的网络连接,以便获得用户特定信息。
根据进一步的实施例,所述方法包括以可编程的方式执行特定计算机程序。
根据另一方面,在以下情况下可及时地提供特定信息响应于对远程服务器提供特定信息的请求,替代于传输特定信息,而是提供时间信息,所述时间信息指示再次连接到远程服务器以获得特定信息的时间瞬间。因此,避免了与例如用户进行的管理或评估过时信息相关联的问题。
一实施例提供一种用于从进一步的网络实体(例如,网络服务器)向网络实体(例如,通信装置)提供特定信息的方法。所述方法包括经由通信网络向进一步的网络实体传输对来自网络实体的特定信息的请求;以及经由通信网络向网络实体传输来自进一步的网络实体的时间信息,所述时间信息指示连接到进一步的网络实体以获得特定信息的特定时间瞬间。
根据进一步的实施例,所述方法包括在特定时间瞬间在网络实体与进一步的网络实体之间建立网络连接;以及经由通信网络将来自进一步的网络实体的特定信息传输到网络实体。
根据进一步的实施例,所述方法包括在特定时间瞬间在网络实体与进一步的网络实体之间建立连接;经由通信网络将来自进一步的第二网络实体的特定信息传输到网络实体;以及通过网络实体显示特定信息。
根据进一步的实施例,所述方法包括通过网络实体接收对特定信息的请求。
根据进一步的实施例,所述特定信息包括与用户特定的导航路线有关的交通信息。
根据进一步的实施例,所述方法包括将请求存储在进一步的网络实体中。
另一实施例提供一种用于经由通信网络从进一步的网络实体获得特定信息的网络实体。所述网络实体可经由通信网络将对特定信息的请求传输到进一步的网络实体,并经由通信网络从进一步的网络实体接收时间信息,所述时间信息指示连接到进一步的网络实体以获得特定信息的特定时间瞬间。
根据进一步的实施例,相应的网络实体可在特定时间瞬间连接到进一步的网络实体以获得特定信息。
另一实施例提供一种网络实体,其用于响应于对可由进一步的通信实体经由通信网络传输的特定信息的请求而经由通信网络向所述进一步的网络实体提供特定信息,所述网络实体经配置以经由通信网络传输时间信息,时间瞬间指示连接到网络实体以获得特定信息的时间瞬间。
根据进一步的实施例,在进一步的网络实体己建立到达网络实体的网络连接的情况下,网络实体可在特定时间瞬间向进一步的网络实体传输特定信息。
根据另一方面,可在可经由通信网络接入的远程服务器上有效地管理导航内容(其可以是用户特定的)。优选地,远程服务器依据例如当前安装在导航装置上的导航内容、用户或装置权利或其它参数来提供导航内容。因此,可以在远程服务器处定制更新的导航内容,这会减少导航装置或管理导航装置的计算机程序的复杂度。
一实施例提供一种用于更新存储在导航装置中的当前导航内容的通信装置。所述通信装置包括检索元件,其用于从导航装置中检索指示当前导航内容的信息;传输器,其用于经由通信网络向远程网络装置传输指示当前导航内容的信息;接收器,其用于从远程通信装置接收更新的导航内容;以及处理器,其用于显示与更新的导航内容有关的信息,或者用于将更新的导航内容安装在导航装置上。
根据进一步的实施例,检索元件可从导航装置中检索指示装置标识或用户标识的信息,其中传输器可将用户装置标识传输到远程通信装置。
根据进一步的实施例,传输器可将指示当前导航内容的信息作为元数据或作为内容文件表来传输。
根据进一步的实施例,检索元件可连接到导航装置,以用于从导航装置获得当前导航内容。举例来说,检索元件或通信装置可以无线方式连接到导航装置。根据另一实施例,导航装置或通信装置可能可经由电线连接到检索元件,使得检索元件可起始到达导航装置的有线连接(或反之亦然)。
另一实施例提供一种用于更新存储在导航装置中的当前导航内容的方法。优选地,所述方法包括从导航装置中检索指示当前导航内容的信息;经由通信网络向远程网络装置传输指示当前导航内容的信息;从远程通信装置接收更新的导航内容;以及显示与更新的导航内容有关的信息,或者将更新的导航内容安装在导航装置上。
根据另一实施例,所述方法包括从导航装置中检索指示装置标识或用户标识的信息,或者将用户装置标识传输到远程通信装置。
根据另一实施例,所述方法包括将指示当前导航内容的信息作为元数据或作为内容文件表来传输。
根据另一实施例,所述方法包括验证与导航装置相关联的用户的权利,或验证导航装置的权利,以便获得特定的更新的导航内容。
根据另一实施例,所述导航内容或更新的导航内容包括指示路线安排信息或更新的固件或地图信息的信息。
根据另一实施例,所述指示更新的导航内容的信息包括指示特定的导航内容具有高于另一导航内容的优先级的优先级信息。
根据另一方面,如果(例如,可执行的)计算机命令包括命令名称及一个或一个以上命令自变量(例如,命令自变量列表),那么当(例如)自动签署命令名称并使用(签署的)命令名称及其密码签名作为额外自变量来构成可验证的计算机命令时,可获得可用降低的额外开销来用密码验证的计算机命令。
一实施例提供一种用于提供密码签署的命令的方法,所述命令包括命令名称和至少一个命令自变量。所述方法包括产生命令名称的密码签名,以及使用命令名称、签名和所述至少一个命令自变量来构成密码签署的命令。
根据进一步的实施例,所述方法包括将命令名称、命令名称的密码签名和所述至少一个命令自变量串连在一起,以便构成密码签署的命令。
根据进一步的实施例,所述方法包括基于不对称密码算法,特别是RSA(Rivest-Shamir-Adleman)算法或基于数字签名算法来产生命令名称的密码签名。
根据进一步的实施例,命令名称指示确定通过所述至少一个命令自变量确定的到达目的地的导航路线,且/或指示提供由所述至少一个命令自变量指示的地址数据确定的导航地图,或者用所述至少一个命令自变量执行计算机程序。
另一实施例提供一种基于密码签署的命令来提供密码验证的命令的方法,所述密码签署的命令包括命令名称、命令名称的密码签名和至少一个命令自变量。所述方法包括将密码签名解密以获得第一密码值;处理命令名称以获得第二密码值;将第一密码值与第二密码值进行比较以获得比较结果;以及依据比较结果,将命令名称和所述至少一个命令自变量作为密码验证的命令来提供或执行。
根据进一步的实施例,第一密码值包括密码签名的散列值,且第二密码值包括命令名称的散列值。
根据进一步的实施例,所述方法包括在第一密码值和第二密码值相等的情况下提供或执行密码验证的命令。举例来说,所述方法进一步包括比较所述散列值。
另一实施例提供一种用于提供密码签署的命令的装置,所述命令包括命令名称和至少一个命令自变量。所述装置包括产生器,其用于产生命令名称的密码签名;以及构成器,其用于使用命令名称、签名和所述至少一个命令自变量来构成(例如,串连)密码签署的命令。
优选地,所述装置(或其元件)经配置以执行上述用于提供密码签署的命令的方法步骤。
另一实施例提供一种用于在密码签署的命令的基础上提供密码验证的命令的装置,所述密码签署的命令包括命令名称、命令名称的密码签名和至少一个命令自变量。所述装置包括解密器,其用于将密码签名解密以获得第一密码值;处理器,其用于处理命令名称以获得第二密码值;比较器,其用于将第一密码值与第二密码值进行比较以获得比较结果;以及提供器,其用于依据比较结果,将命令名称和所述至少一个命令自变量作为密码验证的命令来提供或执行。优选地,所述装置(或其元件)经配置以执行上述用于提供密码验证的命令的方法步骤。
另一实施例提供一种计算机程序,当所述计算机程序在计算机上运行时所述计算机程序用于执行发明性方法中的至少一者。
将参看下图描述本发明的进一步的实施例,下图中 图1展示通信装置的框图; 图2展示处理装置的框图; 图3展示通信装置的框图; 图4例示提供特定信息的方法; 图5例示提供密码签署的命令的方法; 图6展示用于更新导航内容的通信装置的框图;以及 图7展示通信情形的框图。
具体实施例方式 图1展示通信装置的框图,所述通信装置包括可通过编程来设置的第一构件101;连接到可通过编程来设置的第一构件101的可通过编程来设置的第二构件103;以及连接到可通过编程来设置的第一构件105的可通过编程来设置的第三构件105。
可通过编程来设置的第一构件101请求可通过编程来设置的第二构件向不存在的网络地址(即,向不存在的HTTP地址)传输特定命令。响应于此,可通过编程来设置的第二构件103通知可通过编程来设置的第三构件105关于传输特定命令的请求。响应于指示所述请求的信息,可通过编程来设置的第三构件105响应于指示所述请求的信息而执行特定命令。
可通过编程来设置的第一构件101可例如在第二计算机程序(例如网络浏览器)提供的环境内执行包括不可执行脚本(例如Java脚本)的第一程序,所述第二计算机程序可由可通过编程来设置的第二构件103执行。
可通过编程来设置的第三构件103优选地执行第三计算机程序,例如用户应用程序(本地应用程序),所述第三计算机程序接收命令,因为第一计算机程序询问其运行的环境(网络浏览器,且进而是用户应用程序)以代表其自身发送命令。提供网络浏览器(第二计算机程序),因为网页上存在Java脚本,且Java脚本无法直接与第三计算机程序通信。
举例来说,可采用以上概念管理导航内容(比如,例如路线安排信息或路线安排地图)。举例来说,第一计算机程序可起始例如远程服务器(包括例如活动页面)与第三计算机程序(提供本地客户端应用程序)之间的通信。举例来说,本地应用程序(或远程服务器)含有出售语音、地图等的在线(网络)商店。此网络商店优选地使用集成的网络浏览器来实施。本地应用程序指令嵌入式浏览器下载表示所述商店的网页。此外,网络商店页面可能含有Java脚本,因此,下载的页面可使用例如所谓的AJAX技术与远程服务器通信。然而,在特定点,页面上的Java脚本必须向本地应用程序客户端提供特定命令。一实例命令是在用户已购买网络商店中的语音后“下载此语音”。虽然Java脚本可实施信用卡处理,但其无法实际下载和安装到例如导航装置,因此其发送命令或请求发送命令。
通过以下方式向本地应用程序客户端发送命令首先(例如在商店中的网页上的Java脚本中)制作特殊请求,且接着向不存在的地址(例如http://ttds)发送请求。(例如,嵌入式)网络浏览器通知其主机——本地客户端应用程序——关于所述请求。本地客户端知道不存在http://tt.ds这样的地址,因此本地客户端(例如)提取命令[s]并执行所述命令。为了加速进一步的处理,接着可取消对http://tt.ds的虚设请求。
除了下载例如像地图和语音这样的导航内容之外,还可例如指示本地客户端(由第三计算机程序提供)打开更多网页(例如,第二商店页面)或关闭所述网页、显示弹出消息、切换到本地应用程序内的特定窗口(例如,在下载语音后有用的“安装到装置”面板)、检查新的本地应用程序版本、检查对装置固件的更新、检查对导航内容的更新、检查对模拟导航装置的模拟器的更新,或者询问和发送用户证书。
图2展示在表示统一资源识别符(URI)的字符串中检测特定计算机命令的处理装置的框图。特定命令可包括预定义的命令标头,其后面是来自多个预定义的命令名称的一命令名称,且其后面视情况有一个或一个以上命令自变量。处理装置包括确定器201,其用于确定字符串是否包括预定义的命令标头,所述确定器进一步经配置以在字符串包括预定义的命令标头的情况下确定命令标头之后的子字符串是否包括命令名称;以及提供器203,其连接到确定器201,所述提供器203在命令标头包括命令名称的情况下提供预定义的命令标头和命令名称作为特定计算机命令。
图2中描绘的概念也可例如使用(可执行的)计算机程序来实施。此外,与URI有关的描述也适用于URL(统一资源识别符)。
至于URI,同一URI也可用作网页上的或电子邮件中的超链接的“目标”。在所述情况下,可通过例如在此超链接上点击来激活URI。进一步可能使用来自嵌入于网页上的Java脚本程序的URI。然而,其它本地安装于例如计算机上的程序也可使用此URI。例如,电子邮件地址簿插件可使用此URI将来自电子邮件程序的地址发送到安装在例如PC上的本地应用程序。
举例来说,本地应用程序(例如,管理导航内容)提供其自身的UI。然而,进一步的内容可用于存储在本地应用程序外部的导航用途。例如,电子邮件程序含有地址簿,所述地址簿像万维网一样包括多个地址。在本地客户端可利用所述地址的情况下,地址簿将是有用的。其它方可能(例如)对在万维网上以允许通过本地应用程序来安装的格式提供导航内容感兴趣,本地应用程序可实施允许此接入的定制<header>:///URI方案。
通过RFC 3986定义的URI方案定义一框架,在所述框架内可实施多个协议。现代操作系统允许应用程序将其自身注册为用于具有给定协议的URI的指定句柄。例如由上文提到的第三计算机程序提供的本地应用程序(本地客户端)将其自身注册为用于以<header>:///开头的URI的句柄。
URI的其余部分用作本地客户端中的命令列表。使用此方法,像“Amsterdam,Rembrandtplein 35”之类的地址可例如编码为<header>:///Address?Amsterdam&Rembrandtplein&35。
在此方面,“?”和“&”字符是可选的,且可由其它预定义的字符或字符串替换。
除了支持URI的本地客户端之外的任何应用程序均可在遇到此URI时要求操作系统(OS)解析URI。OS又将通知本地客户端用户意图使用“Address?Amsterdam&Rembrandtplein&35”。本地客户端接着向用户提供对所述地址作何处理的选择的列表。然而,存在多个可使用地址的导航任务。
使用同一方法,且假设“http://shop.<web address>/voices/dutch/bram.toc“是一个荷兰语音,则可能创建以下URI <header>:///Install?http%3a%2f%2fshop.<web address>%2fvoices%2fdutch%2fbram.toc 如果此URI将出现在网页上,且用户点击所述URI,那么网络浏览器可要求OS转发此URI。OS将要求本地客户端采取Install?http%3a%2f%2fshop.<webaddress>%2fvoices%2fdutch%2fbram.toc所暗示的动作,在此情况下,其是从给定地址下载bram.toc(内容表)。
下文中将描述命令的格式规范。
参考通用URL格式(其可能顺应RFC 3986),命令可具有以下结构 <header>:///command-list 其中 command-list=command[′#′command]+ command =command-name′?′argument-list command-name=(所支持的命令的名称,见下文) argument-list =UrlEncode(argument)[′&′argument-list]+ argument=UTF8-string 参照传统URL格式,命令可具有以下结构 <header>://legacy-command-list 其中 legacy-command-list =legacy-command[′&′legacy-command]+ legacy-command=command-name′(′legacy-argument-list′)′ legacy-argument-list=UrlEncode(argument)[′,′legacy-argument-list]+ 传统URL无法含有字符“?”,而适当URL总是含有所述字符。这使得可能区分传统URL与适当URL。应注意,这些URL并不顺应RFC。许多URL处理实体将在处理期间改变所述URL。确切地说,许多Windows网络浏览器将加上额外的“/”,以便使URL符合。有些网络浏览器根本不支持所述URL。本地应用程序试图截取不当形成的URL,以便处理各种各样支持URL的应用程序,但使用传统URL格式会使所述方法更加复杂。
命令可具有以下结构和自变量 结构EMailContact?folder-ID&entry-ID 自变量电子邮件联系人ID。
本地应用程序将从电子邮件程序中检索联系人数据,并询问用户对其作何处理(在地图上显示、导航到所述数据、添加为偏好等)。
结构Address?city&street&number 自变量地址数据。
本地应用程序将询问用户对地址作何处理(在地图上显示、导航到所述地址、添加为偏好等)。
结构ShowOnMap?city&street&number 自变量地址数据。
至少有一个城市或街道必须不为空。
结构NavigateTo?city&street&number 自变量地址数据。
至少有一个城市或街道必须不为空。
结构AddFavourite?favourite-name&city&street&number 自变量偏好的名称和地址数据。
至少有一个城市或街道必须不为空。
Install?URL 自变量待下载的项目的TOC描述的HTTP URL,如果装置连接上则安装。
由URL指示的资源具有MIME类型“text/xml”。
TOC(内容表)格式可由例如文件“TOC format.xsd”中的XML大纲(schema)来指定。
以下类型的项目可由用户(例如第三方)安装POI(感兴趣的点)、数据组、语音、颜色方案。
结构Execute?URL 自变量含有实际命令列表的文本文件的HTTP URL。
由URL指示的资源具有MIME类型“text/plain”。
例如,如果将命令作为URL的一部分传递将产生过长的URL,那么可使用此命令。
当在传统命令中使用Execute()命令名称时,URL可响应于此而提供传统命令列表。
结构SwitchTab?Tabname 自变量服务器创建的标签(tab)的名称。
如果标签存在的话,本地应用程序将切换到此标签。如果标签不存在,那么本地应用程序将记住名称,且一旦服务器确实创建了标签,便切换到所述标签。本地应用程序将只记住一个名称;第二SwitchTab命令将取代第一个。
结构<user or host name>Page?Tabname&hostname&URL-path&anchor 自变量新创建的标签的标签名称、主机名称、路径(相对于主机名称)及URL锚(anchor)。
本地应用程序首先检查是否存在具有给定标签名称的标签,否则其创建一个标签。此标签接着将其URL设置成http://hostname.<web address>/URL-path#anchor 本地应用程序可拒绝带有非字母数字字符的主机名称,这会阻止名称注入。例如,主机名称“badguys.com/ignore”可能会被拒绝,因为“.”和“/”是无效的。
如下文将提及,命令可具备密码签名,从而允许验证命令。举例来说,可使用以下命令结构 结构<PublicKeyldentifier>?command-list&signature 自变量命令列表和签名。
此命令用于执行只可由用户执行的命令的列表。签名证实命令列表的真实性。
signature=Sign<PrivateKey>(command-list) 应注意,任何人均可验证签名(使用公共密钥)。
Sign<PrivateKey>(command-list)可如下实施 命令列表是UFT-8串,且因此可表达为字节序列。
命令列表当用作Sign<PrivateKey>的输入时不应是用URL编码的。
参照编码方案,计算此字节序列的SHA-256散列H(256个位)。此外,使用私用密钥(Q,M),计算签名值(QH模数M)。将签名存储为Base-64编码的小头(little-endian)字节序列(既不要求也不添加填补,目的是使URL保持较短)。与所有自变量一样,命令列表和签名自变量将是URL编码的。当在传统命令中使用<PublicKeyldentifier>()命令名称时,第一自变量应优选是传统命令列表。
解密是相反的过程本地应用程序持有公共密钥(P,M)。计算命令列表的SHA-256散列H(在URL解码之后)(256个位)。使用公共密钥(P,M),计算副署(PH模数M)。将签名进行Base-64解码以获得(QH模数M),其中计算乘积(PH·QH)模数M。如果签名与副署匹配则接受签名,这意味着(PH·QH)模数M等于1。
如果不存在命令自变量,则也可应用以上概念。此外,命令名称可包括若干向自变量指派语义的参数。举例来说,每个自变量可用两种可能的方式与参数匹配,所述两种方式在下文中称为定位法和命名法,这类似于编程语言中的函数调用语法。
参照定位语法,如果命令名称具有例如三个参数,且提供三个自变量,那么第一参数与第一自变量匹配等。举例来说,地址命令具有三个参数城市、街道和门牌号。那么实际URI将含有三个自变量,其中将第一自变量解译为城市名称等。
或者,可支持以下语法 Address?Street=RembrandtPlein&City=Amsterdam。
在此情况下,每个自变量包含参数名称。因此,这些称为“命名”自变量。
此外,可规定以上提到的参数为强制性参数。这意味着必须存在匹配的自变量。代替于使用例如“?”,可使用其它参数来指示命令名称与命令自变量之间的分隔。此外,也可采用其它机制,例如强加固定长度的命令名称(这暗示所述位置之后的第一字母开始第一命令自变量)。
<header>:///URI一般来说可含有一个或一个以上命令。因此,可使用字符“#”(或任何其它字符,例如“and”)来串连命令。
图3展示用于响应于执行安装在导航装置上的装置固件程序而模拟导航装置的行为的通信装置的框图。所述通信装置包括提供器301,其用于提供与装置固件程序有关的信息;确定器303,其连接到提供器301,用于确定安装在通信装置上的当前固件程序是否对应于安装在导航装置上的装置固件程序;以及处理器305,其连接到确定器303,用于执行通信装置上的当前固件程序,以便在当前固件程序对应于装置固件的情况下模拟导航装置的行为。
通信装置可以通过编程来设置和配置,以便执行可控制模拟过程的以上提到的本地应用程序。
模拟概念进一步支持导航装置的便携性和可用性。通常,(便携式)导航装置具有例如小型屏幕,所述小型屏幕也充当其输入。相反,例如(台式)计算机(例如,PC)具有大得多的屏幕和更加高级的输入方法。因此,如果导航装置由可例如连接到导航装置的计算机控制,那么可在导航装置上执行的许多任务更容易进行。此外,计算机的处理器(例如CPU)更快。
此外,模拟概念可以通过编程来实施,且例如嵌入到本地应用程序中,以便有效地使得例如计算机(代表通信装置的实施例)能够使用更有能力的计算机资源来控制导航装置。
当将导航装置连接到本地客户端(或连接到通信装置)时,确定安装在导航装置上的固件版本。如果本地客户端具有固件的计算机等效版本,那么开始所述固件。如果没有任何等效的版本可用,但有网络连接(例如,因特网连接)可用,那么本地客户端可询问本地服务器等效版本是哪个,以及可从何处下载所述版本。
图4例示从进一步的网络实体向网络实体提供特定信息的方法。所述方法包括经由通信网络从网络实体向进一步的网络实体传输401对特定信息的请求,并经由通信网络从进一步的网络实体向网络实体传输403时间信息,所述时间信息指示连接到进一步的网络实体以用于获得特定信息的特定时间瞬间。所述方法可例如在软件中实施(例如,作为本地应用程序),所述软件在被执行时执行所述方法步骤。
举例来说,用户可向本地应用程序要求关于特定道路的每日交通报告(特定和用户特定的信息)。本地应用程序将接着例如每日在请求的时间显示关于所请求的道路上的交通堵塞及交通事故的报告。当在本地客户端中进行交通报告请求时,客户端例如立刻将请求转发到服务器。针对给定用户将请求数据存储在服务器上。响应于所述请求,服务器发回本地客户端应轮询本地服务器的时间。此外,每当同一用户再次登录时,本地服务器均将告诉本地客户端轮询服务器的时间。服务器对轮询报告作出反应而发送实际交通报告。本地应用程序例如将交通报告格式化以用于显示用途。结果是将所有数据存储在服务器侧,但仍然由客户端起始连接。这允许本地客户端在被作为软件程序在计算机上执行时,突破防火墙或弹出拦截器而显示交通警告。
为了确定用户信息以便获得例如用户特定的信息,可利用用户手动输入的登录证书。或者,本地客户端可在早期已存储了登录证书。不论是哪种方式,如果本地客户端具有登录证书,那么每当执行软件程序提供的本地客户端时,本地客户端均可自动发送登录证书。如果本地客户端尚未具有证书,那么用户可手动起始登录。在所述情况下,本地客户端将提示输入证书,立刻将证书发送到远程服务器,且还存储证书以供将来使用。
图5例示用于提供密码签署的命令的方法,所述命令包括命令名称和至少一个命令自变量。所述方法包括产生501命令名称的密码签名,以及使用命令名称、签名和所述至少一个命令自变量构成503(例如,串联)密码签署的命令。
举例来说,可采用结合图2的实施例描述的加密和解密方案来提供和验证数字签名。
举例来说,经过鉴定的URI可包括具有两个自变量的命令;第一自变量是作为命令的字符串。第二自变量是第一自变量的“数字签名”。优选地,采用标准公共密钥密码术来使用私用密钥签署第一自变量,所述私用密钥提供数字签名。举例来说,具有匹配的公共密钥的本地客户端可副署第一自变量。在且仅在密钥相等的情况下,签名和副署才是互补的。如果是这种情况,那么本地客户端信任第一命令,且即使第一自变量中的命令将被认为是危险的,仍将执行第一命令。
也可使用以上鉴定的URI机制来更新导航装置上的固件。优选地,可允许复制或更新命令,然而不能更改命令。因此,例如用错误的固件更新导航装置可能会对导航装置造成无法修复的损害。
根据一实施例,签署的命令接着用作另一命令(密码签署的命令)中的第一自变量,其中所述签名用作例如第二自变量。密码签署的命令的结构可如下 verify_command(commandnamel(argument1,argument2,argument3),signature) 可通过向应被鉴定的命令应用例如私用(秘密)密钥来产生签名(针对外部命令的第二自变量),即 Commandnamel(argument1,argument2,argument3)+private_key=signature 为了产生副署,可使用类似算法 commandnamel(argument1,argument2,argument3)+public_key=countersignature。
如果签名和副署彼此对应,那么验证命令。优选地,可为了签名用途而采用像例如RSA或DSA算法之类的标准公共密钥密码术方法。
举例来说,考虑命令<header>:///<PublicKeyIdentifier>?Install%3fhttp%3a%2f%2fintranet%2fplus%2fdocuments%2ftemp%2fnavcore_6.522.7709.go510-go710.toc&JYrSIQ, 其中<PublicKeyIdentifier>是用于由用户鉴定的命令的实际命令名称。第一自变量是Install%3fhttp%3a%2f%2fintranet%2fplus%2fdocuments%2ftemp%2fnavcore_6.522.7709.go510-go710.toc 这是嵌入式命令。实际命令名称是安装,将“?”编码成%3f,且其余部分是安装命令的自变量。用户用其私用密钥签署安装命令,且出现的签名是JYrSIQ。为了验证命令,可产生副署。如果正确地签署命令,那么副署将匹配。
如果另一用户试图编辑命令,例如<header>:///<PublicKeyIdentifier>?Install%3fhttp%3a%2f%evil.com%2fnavcore_6.522.7709.go510-go710.toc&JYrSIQ,那么将计算不与签名匹配的不同副署。因此,将拒绝安装来自evil.com的内容。
图6展示用于更新存储在导航装置中的当前导航内容的通信装置。所述通信装置包括检索元件601,其用于从导航装置中检索指示当前导航内容的信息;传输器603,其连接到检索元件,用于经由通信网络向远程网络装置传输指示当前导航内容的信息;接收器605,其用于从远程通信装置接收更新的导航内容;以及处理器607,其用于显示与更新的导航内容有关的信息,或者用于在导航装置上安装更新的导航内容。
可将指示当前或更新的导航内容的信息作为内容文件表来传输,所述内容文件表指示例如内容类型、内容名称、内容大小或内容版本。此外,可传输与装置标识或用户标识有关的信息。
远程通信装置(例如,服务器)可包括存储例如可用的导航项目(例如,地图、路线安排信息、GPS定位等)的列表的数据库。此外,远程服务器可在传输更新的内容之前检查因例如预订状态而授予的用户的权利或因例如装置标识而授予的导航装置的权利。
如上文提到的,可在TOC文件(内容表)中概括内容信息。以下列出示范性TOC文件 <Program> <Id>13214</Id> <Version>1.2</Version> <Target>target</Target> <Name>NameOfItem</Name> <Preview>http://download.<download_address>/somepreview.exe</Preview> <Location>http://download.<web address>/someitem.cab</Location> <Size>546484</Size> </Program> <Map> <Id>8977</Id> <Version>1.2</Version> <Target>Thistarget</Target> <Name>Benelux</Name><Category>Category</Category> <Preview>http://download.<download_address>/mappreview.png</Preview> <Location>http://download.<download_address>/mapdownload.cab</Location> <Icon>http://download.<download_address>/mapicon.png</Icon> <Size>4646498/</Size> <Insta11Restrictions DeviceId=″35265252″/> </Map> <Voice language=″en″gender=″male″> <Id>4657</Id> <Version>1.1</Version> <Name>user_name</Name> <Preview>http://download.<download_address>/voicepreview.mp3</Preview> <Location>http://download.<download_address>/voicedownload.cab</Location> <Size>468797946231</Size> <Picture>http://<download_address>/voicepicture.png</Picture> <Icon>http://<download_address>/voiceicon.png</Icon> </Voice> <Colorscheme> <Id>98797</Id> <Version>1.1</Version> <Name>Bright Black</Name> <Location>http://download.<download_address>/colordownload.cab</Location> <Size>6464</Size> </Colorscheme> <Poi> <Id>65446</Id> <Version>1.3</Version> <Name>Wifi Hotspots</Name> <Category>Connectivity</Category> <Location>http://download.<download_address>/poidownload.cab</Location> <Size>54567</Size> </Poi> </Toc> 字段<InstallRestrictions DeviceId=″35265252″/>指定对于此项目(除了<Target>元素)的可安装性的限制。其没有任何内容。可选的属性为deviceId(串),其指示项目只可安装在具有此装置ID的装置上;以及minNavigatorVersion(串),其指示必须针对待安装的此项目而安装的导航仪程序的最低版本。
图7展示例如在计算机上运行可执行应用程序701(甜点应用程序(sweetapplication)、本地应用程序)的通信情形的框图,所述计算机经由通信网络703与远程服务器705通信,以便如图7中所描绘而互换信息。服务器707可提供消息,所述消息以气球消息707或例如应用程序701提供的浏览器组件的形式展现。
上述实施例中的元件和特征的特定组合仅是示范性的;还明确地涵盖这些教示与本发明及以引用的方式并入的专利/申请案中的其它教示的互换和替换。所属领域的技术人员将认识到,所属领域的一般技术人员在不偏离所主张的本发明的精神和范围的情况下可想到本文中描述的内容的变化、修改及其它实施方案。因此,以上描述仅举例而言,且不希望其是限制性的。本发明的范围在随附权利要求书及其等效物中定义。此外,描述内容和权利要求书中使用的参考符号并不限制所主张的本发明的范围。
权利要求
1.一种用于响应于执行安装在导航装置上的装置固件程序而模拟所述导航装置的行为的通信装置,所述通信装置包括
提供器(301),其用于提供与所述装置固件程序有关的信息;
确定器(303),其用于确定安装在所述通信装置上的当前固件程序是否对应于安装在所述导航装置上的所述装置固件程序;以及
处理器(305),其用于在所述当前固件程序对应于所述装置固件的情况下执行所述通信装置上的所述当前固件程序,以便模拟所述导航装置的所述行为。
2.根据权利要求1所述的通信装置,所述处理器(305)进一步经配置以经由通信网络建立到达远程网络实体的网络连接,以便在所述当前固件程序不对应于所述装置固件程序的情况下获得所述当前固件程序的更新的版本,所述处理器(305)进一步经配置以执行所述当前固件程序的所述更新的版本,以便模拟所述导航装置的所述行为。
3.根据权利要求1或2所述的通信装置,所述提供器(301)经配置以连接到所述导航装置,以便检索指示所述装置固件程序的信息。
4.根据权利要求1到3中任一权利要求所述的通信装置,所述确定器(305)经配置以确定安装在所述通信装置上的所述当前固件程序是否对应于所述装置固件,所述确定是基于包括指示所述装置固件程序的信息的内容文件表,或者是基于包括指示所述当前固件程序的信息的内容文件表。
5.根据权利要求1到4中任一权利要求所述的通信装置,所述处理器(305)进一步经配置以基于对所述导航装置的所述行为的所述模拟来控制所述导航装置。
6.一种用于响应于执行安装在导航装置上的装置固件程序来模拟所述导航装置的行为的方法,所述方法包括
提供关于来自所述导航装置的所述装置固件程序的信息;
确定当前固件程序是否对应于安装在所述导航装置上的所述装置固件;以及
在所述当前固件程序对应于所述装置固件的情况下执行通信装置上的所述当前固件程序,以便模拟所述导航装置的所述行为。
7.根据权利要求6所述的方法,其包括经由通信网络建立到达远程网络实体的网络连接,以便在所述当前固件程序不对应于所述装置固件程序的情况下获得所述当前固件程序的更新的版本;以及执行所述当前固件程序的所述更新的版本,以便模拟所述导航装置的所述行为。
8.根据权利要求6或7所述的方法,其包括连接到所述导航装置,以便检索指示所述装置固件程序的信息。
9.根据权利要求6到8中任一权利要求所述的方法,其包括确定所述当前固件程序是否对应于所述装置固件程序,所述确定是基于包括指示所述装置固件程序的信息的内容文件表,或者是基于包括指示所述当前固件程序的信息的内容文件表。
10.一种计算机程序,当所述计算机程序在计算机上运行时所述计算机程序用于执行根据权利要求6到9中任一权利要求所述的方法。
11.一种用于响应于执行安装在导航装置上的装置固件程序来模拟所述导航装置的行为的可通过编程来设置的通信装置,所述可通过编程来设置的通信装置经配置以执行用于提供关于所述装置固件程序的信息的第一计算机程序;执行用于确定可供所述可通过编程来设置的通信装置使用的当前固件程序是否对应于安装在所述导航装置上的所述装置固件程序的第二计算机程序;并在所述当前固件程序对应于所述装置固件程序的情况下执行所述通信装置上的所述当前固件程序,以便模拟所述导航装置的所述行为。
全文摘要
本发明提供一种用于响应于执行安装在导航装置上的装置固件程序而模拟导航装置的行为的通信装置。所述通信装置包括提供器301,其用于提供关于所述装置固件程序的信息;确定器303,其用于确定安装在所述通信装置上的当前固件程序是否对应于安装在所述导航装置上的所述装置固件程序;以及处理器305,其用于在所述当前固件程序对应于所述装置固件的情况下执行所述通信装置上的所述当前固件程序,以便模拟所述导航装置的行为。
文档编号G01C21/00GK101389925SQ200780006539
公开日2009年3月18日 申请日期2007年3月8日 优先权日2006年3月8日
发明者戴维·维斯曼斯, 米希尔·萨尔特斯, 詹姆斯·泰比特 申请人:通腾科技股份有限公司