A COMMUNICATION TERMINAL

Abstract: A communication apparatus is disclosed. The apparatus has an input/output (I/O) controller and a processor hosting a number of applications. The I/O controller responds to messages encoded according to a defined markup language. The applications communicate using the structure of the defined markup language.

Description: A COMMUNICATION TERMINAL This invention relates to a multi-function mobile communication apparatus. It finds particular, but not exclusive, utility in in-vehicle communication equipment. Traditional mobile telephone devices are being supplemented with apparatus offering greater functionality than merely the ability to make and receive telephone calls. The field of in-vehicle units, in particular, offers great potential for the provision of new and improved services. Such units are called telematics units, and can offer the user, amongst other features, navigation services, traffic alerts and Internet access in addition to telephone services. Traditional telephone devices are limited in their functionality, and when a user wishes to add new features, often the only choice open to him is to purchase new equipment. With the speed of growth of services available, this can prove to be a costly and wasteful exercise. In-vehicle telematics units can be physically larger than the personal hand- held units which users are accustomed to carrying with them, and as such, greater functionality can be incorporated into them, including the possibility of adding new hardware through the use of expansion slots, or similar. A problem with adding new applications to such units is ensuring that new applications are capable of operating successfully with the existing applications. Communication between modules in prior art systems tends to follow rigid pre-defined protocols. The format is specified, and all communications with that module must ensure that the appropriate data appears at the correct position within the message. According to a first aspect of the present invention, there is provided a communication apparatus comprising: an input/output controller comprising at least one input means to receive instructions from a user, and at least one output means to convey information to a user, responsive to messages encoded using a predetermined markup language; and a processor hosting a plurality of applications, wherein the applications are arranged to communicate via messages having the structure of the predetermined markup language. According to a second aspect of the present invention, there is provided a method of operating a modular communication apparatus comprising a processor hosting a plurality of applications and an input/output controller, message transfers between the input/output controller and the processor are encoded using a predetermined markup language, wherein communications between the processor and an application use the structure of the predetermined markup language. Advantageously, embodiments of the invention provide modular communications devices to which new applications may be added easily. This is due to the use of an open standard for communication between the various modules of the apparatus. The communications unit of the invention comprises a number of modules having defined functions. The modules comprise an input/output controller, a central processor or task controller as well as the various application units, which perform specialised tasks. The open standard used for all communications between the modules is based on a Markup Language. Such textual encoding of information is routinely used to control the attributes of information to be displayed. From the earliest days of printing, markup language has enabled proofreaders to instruct printers how to set up the type so that certain formatting features may be realised. A markup language basically allows labels or tags to be added to text, which are interpreted to alter the appearance of the text. This process has been adopted to control the appearance of pages on the World Wide Web (WWW). Hyper Text Markup Language (HTML), which is a specific variant of Standard Generalised Markup Language (SGML), has been formally adopted as the method by which information is encoded on the WWW. HTML has spawned further variants, including Wireless Markup Language (WML), which is especially tailored for use with wireless communication devices. An advantage of using a message format that is based on one which is primarily intended for controlling the displayed appearance of information, is that messages which are intended for output to the user require little or no further processing once they have left the application which created them. Advantageously, applications according to embodiments of the invention do not have to have their own I/O controllers. All I/O is managed by the I/O controller under instruction from each application. An example of a very simple page of HTML is given below to illustrate the nature of markup languages. <HTML> Defines HTML Coding beginning <HEAD> Start of HEAD section <TITLE> Start of TITLE definition Sample Page Text of TITLE displayed with window </HEAD> End of HEAD section <BODY> Start of BODY section <P ALIGN="CENTER"> Start of new paragraph, centred <B><U>Samplθ Text</Ux/B> Text for display, bold, underlined </P> End of paragraph </BODY> End of BODY section </HTM > End of HTML code This example shows how a relatively large amount of textual tag information, i.e. the elements enclosed in angle brackets (<>), needs to be added in order to define the appearance of a very simple WWW page. In HTML and WML, the tags, which are part of the coded text, are present to control the appearance of the text, which is to be displayed. For instance, tags can be added to the text which can cause it to be in a bold typeface, in italics, underlined, centred, right justified or a host of other options. Tags can also be used to introduce graphic or sound files into the displayed text. Embodiments of the invention benefit from using the structure of a markup language for communications between their various modules. Tags can be used to clearly label information elements within messages. The tags in these messages may be used to identify particular items of information which may be for purely internal control purposes, and are never intended for display to the user. Use of such tags requires significantly more data to be sent between the various modules than in prior art systems, because the tag, which identifies the type of data, has to be transmitted along with the data itself. In prior art systems, such coding was implicit. For instance, prior art systems have rigidly defined communication protocols where certain data elements must appear in certain defined positions within the message, and no tag is transmitted along with the message. Using a system built using markup language structure, the relative position of data within the message, and the number of instructions contained within a message can become relatively unimportant. Although using such a system of communication results in a greater amount of data being transferred between modules, and in greater intelligence being required in the application modules to create and decode the encoded messages, it allows for greater flexibility in module design, and in greater scope for adding new applications. Using a markup language to format messages for output is the basis of known web browsers. The output driver of the I/O controller interprets the received marked up text, and controls a display, according to the coded instructions contained in it. Embodiments of the invention have an I/O controller, which is arranged to receive output messages from the central processor or task controller. A difference between prior art solutions and embodiments of the invention is that user inputs to the I/O controller are interpreted by the I/O controller and structured into a markup language encoded message which is then passed to the task controller. If the message is not destined for the task controller, but for another module of the unit, specifically an application, as indicated by the header of the message, then the task controller, using its routing function, routes the message, unaltered, to the appropriate application. The routing function provided by the central processor requires very little computational power, and may enable a lower specification processor to be used, than the case where the central processor has to actively process messages even when they are destined for another module. Using such a markup language for communication in a situation where such information is used only internally, and is not intended for display, is in contrast to prior art systems, where the tags which are added to the information have, up until now, only been used to control the appearance of the information. However, use of a markup language for all communication between modules offers the advantage new applications can be created having relatively simple interfaces. It also enables the telematics unit to be constructed either with a relatively simple central processor, or with a more complex processor having ample spare processing capacity for the support of new applications. It is often desirable to be able to enhance the operation of communications equipment in a manner similar to the ease with which personal computers may be upgraded. Embodiments of the invention allow new applications to be added in a straightforward procedure. In order to add new applications, the new application must be logged with the resource management module, which is a database containing details of all applications, of the unit so that the task controller is aware of certain characteristics of the new application. The logging process may be carried out when the new application is either physically installed, in the case of hardware applications, or, in the case of purely software applications, when it is downloaded. For a better understanding of the present invention, and to understand how the same may be brought into effect, the invention will now be described, by way of example only, with reference to the appended drawings in which: Figure 1 shows a block diagram of a telematics unit according to an embodiment of the invention; and Figure 2 shows an example of a series of message transfers between modules of the telematics unit of Figure 1. A block diagram of a communication device according to an embodiment of the invention is shown in Figure 1. This shows a telematics unit 200, which allows a user 100 to operate the unit in a number of operating modes to access a range of voice and data services. Within the unit 200, there are a number of functional parts. Input/output controller (I/O) 205 provides the user-interface to the unit 200, allowing the user to input data to the terminal, and to receive data from it. It is configured to support a variety of input and output types. As well as the standard key- presses, which would normally be used to control a radio telephone, it may be capable of interpreting the user's voice commands. This is useful when the terminal is installed in a vehicle, as the user must be able to operate the terminal while being distracted as little as possible from the task of controlling the vehicle. By the same token, the I/O controller can provide audio feedback to the user as well as, or instead of, the usual visual feedback, which is presented on a display of the terminal. The I/O controller is therefore connected to at least a loudspeaker 206, a microphone 207, a display device 208 and a keypad 209. Certain options for input and output may be made available depending on the exact model of telematics unit purchased. For instance, speech recognition may only be offered on more expensive models of the unit. The I/O controller 205 is connected to the task controller 210, and is arranged to interpret data received from it that is formatted according to a predetermined markup language. The markup language may be HTML, WML, or any similar variant of these languages. All messages received by the I/O controller 205 from the task controller 210 which are destined to be output to the user are encoded using the markup language. If the message is examined, then it's format is seen to closely resemble standard HTML code. For instance, if the display needs to show the user a list of telephone numbers stored in the telephone, then an appropriate message is created by the telephone management function 235, and this is routed via the task controller to the I/O controller which causes the unit's display to operate to show the data as instructed. When an instruction is received from the user, whether it is a key press, voice command or some other input, the I/O controller 205 receives the instruction, and creates an encoded message using markup language, and transmits the message to the appropriate application via the task controller 210. In this way, the I/O controller is able to communicate with any application module in the unit 200. The task controller (TC) 210 is the central processor for the telematics unit 200. Its prime function is the control of all application units, and also the routing of communications between them. Its functionality is described in more detail later. The task controller is provided with all the peripherals that would normally be associated with a processor, such as ROM, RAM and clocks. Such peripherals are not shown or described here. In order to manage the application units, the task controller 210 has access to the resource management module 215 which stores information relating to each of the application units attached to the task controller 210. The stored information may vary, but may relate to the physical address or location of the application, the type of information which is needed by each application unit to perform its task, and also what type of information it is capable of supplying to other application units. Functionally connected to the task controller 210, although some may be purely software implementations, are the various applications which provide the terminal with its functionality. Figure 1 shows the following units as examples, but other applications could be present: Navigation System 220; Traffic Information Application 225; Internet/WAP browser 230; Telephone management application 235; Global Positioning System (GPS) Receiver 240; and In-car entertainment system 245. Also shown is a future additional application, or applications, 250 for the system. Navigation System 220 is an application, which provides the user of the terminal 200 with real-time navigational information, enabling him to plan his journey, and to receive route instructions while driving to his destination. Such a navigational system may be of the type commonly known as Centrally Determined Route Guidance (CDRG), or a localised system relying on a local data store, such as a CD-ROM, to provide route information. In a CDRG system, which is preferred, the user inputs to the terminal his destination, and any route preferences. This data is transmitted to a remote computer 265 via a service gateway 255 and telephone unit 260. The remote computer 265 is supplied with up to date route information, and calculates an optimal route for the user's journey. This route is then transmitted to the telematics unit 200. Using data provided from the Global Positioning System (GPS) Receiver 240, the user is guided along the calculated route. As an alternative to using a GPS positioning system, a dead-reckoning system may be used which receives prime position data from a communications network, and re-calculates the current position using an electronic compass and a system which calculates distance travelled on the basis of the number of turns of the car wheels. The terminal may be configured to provide a visual display to the user of the appropriate route to follow to reach his destination. For example, an arrow pointing left and the characters '100 metres' may be displayed, indicating to the driver that he should turn left in 100 metres. Alternatively, or in addition, a voice prompt may be used to inform the driver of an upcoming manoeuvre. To further increase the utility of such a navigation application 220, a traffic information service 225 is available. This may be used as a stand-alone application to inform the user of delays, road works or accidents in his vicinity, or it may be used in conjunction with the navigation system, allowing the route to be re-calculated in real-time in response to any problems with the previously calculated route. The terminal will thus be able to divert the user down a different route in order to avoid roadworks on the originally planned route for instance. The traffic information may be supplied centrally by, for instance, a roadside assistance/break down company, public broadcast radio or the police. A browser application 230 is provided. This application allows the user to access pages of information from remote computers via the wireless link. The browser application may be configured to support pages in any number of possible formats including WWW pages coded in HTML and Wireless Application Protocol (WAP) pages coded in WML. Using the browser application 230, the user will have access to a wealth of information, comparable to that obtainable from a desktop computer connected to the Internet. Pages of information are requested by the user, and such requests, together with the received pages, are processed by the service gateway 255 and the telephone function 260 in a known manner. A telephone management application 235 is provided to enable the user to control certain features of the portable radio telephone function 260. This function encompasses tasks such as phone book management, performance customisation and ancillary services, as well as initiating or answering calls. Customisation functions include allowing the user to define individual ring tones, set up call management functions such as call-forwarding, and receive and monitor voice mail messages, for instance. Ancillary services may include features such as sending and receiving text messages such as GSM's Short Message Service (SMS). As mentioned previously, 240 is a positioning system. Preferably, it is a GPS (Global Positioning System) receiver which provides a highly accurate indication of the current position. However, GPS receivers are relatively expensive, and it may be possible to provide adequate positional accuracy via use of a dead-reckoning system as previously described. The GPS option may, therefore, be restricted to more expensive variants of the unit 200. Due to the integrated nature of the telematics unit 200, an in-car entertainment system 245 is provided. This may comprise any or all of the following well-known components: radio; cassette player; CD player; MiniDisc player; and MP3 player. It is possible to arrange for the entertainment system to be interrupted in the event that an incoming telephone call is received. Other events, such as incoming emails or travel announcements, for instance, may also interrupt the entertainment system. It can be seen that it is possible to provide a telematics unit, which offers a range of different services to the user. However, traditionally, such units have not offered a great scope for expansion and re-configuration, as they have not been configured to allow such expansion. As can be seen by the dotted box 250 on Figure 1 , one or more additional application unit(s) may be added. This may take the form of a new hardware module, which is added, via an expansion slot. An example of such a module is a CD-ROM drive for data storage for use by one or more of the other application units. Equally, the new application module could be a purely software solution which may be downloaded via the telephone 260 and service gateway 255. An example of such an application is a software package allowing the user to keep track of personal and business mileage, for instance. Service gateway 255 is the interface between the applications that require external data access, and the telephone function 260. The telephone function 260 of the unit may be considered to be a regular portable telephone, which has been incorporated into the telematics unit 200. It offers all the regular functions normally associated with such a telephone. It is preferable to arrange the telematics unit 200 such that application units from third-party suppliers can be easily incorporated. A problem with other expandable systems, such as personal computers, is that the interface between the various applications, or the applications and the operating system itself, can be very complicated. This can be due to the huge variety of functions which may need to be performed by any newly introduced peripheral, and the need to grant access to the PC's main data buses, for instance. As an example of how a new application may be added, consider a telematics unit 200, originally purchased without a GPS receiver module, and equipped instead with the dead-reckoning system described previously. The user decides to upgrade his unit, and purchases a GPS module to replace his earlier dead-reckoning system. He needs to physically install the new hardware, which may be accomplished through plugging the GPS module into a provided expansion slot. He may also need to download some new software, which can be accomplished via the wireless link from a suitable remote computer. As part of the installation process, the details of the new application are registered in the resource management module. An example of the kind of information which is recorded might be as follows: Slot: 6 Label: GPS Input: provide_posn(0,1 :n); requestor Output: posn(xy); requestor This tells the task controller that the application resides in logical slot 6, and is labelled GPS. It also tells it that the application expects a first input 'provide_posn' having two arguments. The '0,1' refers to switching the function off or on, and the 'n' refers to the frequency of position updates: position information is required every n seconds. The second input is the identity of the requesting application. The outputs produced from the application are position information in the form of an 'x,y' grid co-ordinate. The second output argument is the requestor so that the task controller 210 can route the message to the appropriate destination. The above example shows a relatively simple device having few I/O requirements, but it illustrates the process of registering a new application with the resource management module 215. Applications having more complex I/O requirements may be registered with the necessary extra information added. Alternatively, it may be possible to register new applications with only the information concerning their label and logical slot number. The information related to their I/O characteristics may not need to be explicitly defined in the resource management module. Once a new application has been added, the other pre-existing applications need to be made aware of its presence. This occurs at initialisation, which can occur at power-up of the apparatus, or after a system reset. Either of these will normally be necessary after installing a new application. The initialisation process may differ depending on the exact nature of the system. However, at initialisation, the central processor reviews all the physical hardware present, and all the software applications loaded. In this way, it is able to ensure that it is aware of all installed applications. If pre-installed applications need to interact with newly installed applications, then it may be necessary to upgrade the software of the pre-installed applications to update their I/O capabilities. For example, a pre-installed application could be configured to provide new services if it was able to accept a new kind of input, which could be processed with further changes to its existing software. Such upgrades or patches can be made available with the acquisition of the new applications. However, some new applications will only need to communicate with the I/O controller, and as such will not need to exchange messages with modules other than the central processor. Such a new application, therefore, must be able to create and receive messages encoded according to the same markup language structure as the other modules. The central processor, in its routing role, only has to pass any messages from such an application onto the I/O controller and vice-versa. The main function of the task controller 210, is to co-ordinate the activity of the various application units, and particularly to route communication between the applications using data stored in the resource management module 215. To understand the roles played by the various other modules of the unit 200, it is helpful to rank each type in order of intelligence. The true intelligence in the system lies with the application units: they are configured to perform specific tasks and may comprise specialist hardware and/or software. The task controller 210 has the main function of managing the applications, and as such, needs to interpret messages from the applications and the I/O controller 205 in order to route them to their defined destination. However, the task controller also needs to perform background system management tasks to ensure that the entire unit is operating effectively. As such, the task controller 210 is less intelligent than the applications, but more intelligent than the I/O controller 205. The I/O controller 205 is a passive module, in the sense that it never initiates any activity itself; it only acts in accordance with instructions originating from, or routed by the task controller 210 in order to produce an output, or in response to a user input such as a key press or a voice input. By using a common markup language for all inter-module communication, a given application can send a message to the I/O controller 205, for visual display, or audio output, to the user, with minimal or no processing required by the task controller 210. For instance, if the navigation system 220 needs to alert the user to an upcoming manoeuvre, it can send a message indicating that the destination is the I/O controller 205, and the task controller will receive the message, determine that it is destined for the I/O controller, and using its routing function, pass it straight on, with no further processing being required. In prior art systems, such a message, in a first format, would be received by a central processor, which would then re-format the message, into a second format suitable for the I/O controller, before re-transmitting it to the I/O controller. The task controller 210 receives all messages, and is able to ascertain their origin and destination by decoding the relevant information from the message, which is identified with tags which are defined for this purpose. The task controller, when operating in this routing capacity, is concerned only with decoding the tags which are necessary in order to re-transmit the message to its intended destination. It need have no further knowledge of other tags in the message, which will be understood and decoded by the destination module. In the case where the task controller is the intended recipient of a message, then certain tags within the message will need further decoding by the task controller so that the instructions or information to which they relate can be acted upon as necessary. The following example demonstrates how the task controller acts to merely route messages to their intended destinations. It can do this by examining the headers, which form part of each message. Conceptually, the message can be considered as resembling: <sourcexdestinationxbody of message> By decoding this, and cross-referencing with the information stored in the resource management module, the task controller is able to route each message to the correct application, or to act on the message itself, if that is required. An example of a message transfer that occurs between applications, with only occasional messages being sent to the I/O controller 205 is as follows. In order to guide the user to his chosen destination, the navigation system 220 needs access to data representing the current position of the vehicle. To achieve this, the navigation system 220 can initiate a process within the GPS application 240, which instructs the GPS application to provide periodic messages to the navigation system containing the current position of the vehicle. The message exchanges resulting from such a process can be seen in Figure 2. The large boxes represent system components, and have the same reference numerals as in Figure 1. The arrows represent individual messages. . The first message 400 is from the navigation system 220, and is destined for the GPS application 240. It is first received by the task controller 210, which decodes its header, realises it is meant for the GPS application 240, and routes it there directly without processing it any further. Thus, message 405 is the same message as 400, and is directed to the GPS application 240. The GPS application 240 receives message 405, and acts according to the instructions contained within it. In this case, the instructions are to provide the navigation system with updates on the vehicle position every n seconds. Figure 2 shows that the GPS application 240 transmits new messages 410 and 420, containing updated position information, to the task controller 210 which duly routes them to the navigation system 220, as messages 415 and 425 respectively, with no further processing. This process is repeated, as shown in Figure 2, until the position data reveals to the navigation system 220 that a change in course is now necessary in order to follow the calculated route. The navigation system 220 transmits message 430, which is destined for the I/O controller 205. Message 430 is received by the task controller 210, which decodes its headers, realises that it is destined for the I/O controller 205, and so routes it onwards as message 435, with no further processing. The I/O controller 205 receives message 435, which is coded according to the defined format for all messages in the system 200, and acts to carry out the instruction contained within it. In this case, the message instructs the I/O controller to alert the driver of the vehicle to an upcoming change in direction. This may be a visual indication and/or an audible signal to the user. As the GPS application 240 is still under instructions to provide regular updates on the vehicle position, it continues to transmit messages containing positional information. Message 440 is transmitted to the task controller 210, which routes it onwards to the navigation system 220 as message 445, in the normal fashion. This process is again repeated until such time as another change in direction is called for. At this time, message 450 is transmitted to the I/O controller 205, via the task controller 210, as message 455. This whole process continues until the navigation system 220 sends a message to the GPS application 240 to halt transmitting regular updates. This may happen once the destination is reached, or if the user manually decides to stop the navigation process. The markup language is not described here in any detail as variants of markup languages, such as WML and HTML, are well known in the art, and the skilled man will appreciate that any modifications necessary to any particular language will depend upon the particular syntax and structure of that language. It may be desirable to differentiate newly introduced tags from the existing tags used in HTML or WML. For instance, the new tag for indicating the source of a message, may be represented as : <_SOURCE>, where the underscore character serves to distinguish it from a regular HTML or WML tag. However, it is possible to distinguish such tags in any way chosen by the system designer, or indeed, it may not even be necessary to distinguish the new tags at all. However, in order to ensure the interoperability of any new applications with existing ones, the structure and syntax of the markup language should be known to third parties who may wish to produce applications for use with the telematics unit. Whilst the invention has been described in the particular context of an in- vehicle telematics unit, the skilled man will realise that it is by no means limited to use in such an environment. The present invention includes any novel feature or combination of features disclosed herein either explicitly or any generalisation thereof irrespective of whether or not it relates to the claimed invention or mitigates any or all of the problems addressed.

Claims: CLAIMS 1. A communication apparatus comprising: an input/output controller comprising at least one input means to receive instructions from a user, and at least one output means to convey information to a user, responsive to messages encoded using a predetermined markup language; and a processor hosting a plurality of applications, wherein the applications are arranged to communicate via messages having the structure of the predetermined markup language. 2. A communication apparatus as claimed in claim 1 wherein the processor provides a routing function. 3. A communication apparatus as claimed in claim 2 wherein the structure of the predetermined markup language comprises tags and the routing function is performed on the basis of the tags, and information stored in a database. 4. A communication apparatus as claimed in any one of the preceding claims wherein computational power is distributed amongst the applications. 5. A communication apparatus as claimed in any one of the preceding claims wherein the processor is adaptable to host additional applications. 6. A communication apparatus as claimed in claim 5 when dependent on claim 3, or claim 4 when dependent on claim 3, wherein the processor is arranged to store information about the additional application in the database. 7. A communications apparatus as claimed in any one of claims 5 or 6 wherein an electrical connector is provided for the addition of a new hardware application. 8. A communication apparatus as claimed in any one of the preceding claims wherein the markup language includes elements of HTML or WML. 9. A communication apparatus as claimed in any one of the preceding claims wherein the apparatus is an in-vehicle unit. 10. A method of operating a modular communication apparatus comprising a processor hosting a plurality of applications and an input/output controller, message transfers between the input/output controller and the processor are encoded using a predetermined markup language, wherein communications between the processor and an application use the structure of the predetermined markup language. 11. A communication apparatus as herein described with particular reference to Figure 1 of the appended drawings. 12. A method of operating a communication apparatus as herein described with particular reference to Figures 1 and 2 of the appended drawings.

Inventors: BUTH PETER, DRUKE THOMAS, DUFHUES FRANK, GORTZ UDO, IMAM AMIR, RATEITSCHECK KLAUS, SERAFAT REZA, STEINERT CHRISTIAN, THEIMER WOLFGANG, BUTH, PETER, DRUKE, THOMAS, DUFHUES, FRANK, GORTZ, UDO, IMAM, AMIR, RATEITSCHECK, KLAUS, SERAFAT, REZA, STEINERT, CHRISTIAN, THEIMER, WOLFGANG
Applicants: BUTH PETER, DRUKE THOMAS, DUFHUES FRANK, GORTZ UDO, IMAM AMIR, NOKIA MOBILE PHONES LTD, RATEITSCHECK KLAUS, SERAFAT REZA, STEINERT CHRISTIAN, THEIMER WOLFGANG, BUTH, PETER, DRUKE, THOMAS, DUFHUES, FRANK, GORTZ, UDO, IMAM, AMIR, NOKIA MOBILE PHONES LIMITED, RATEITSCHECK, KLAUS, SERAFAT, REZA, STEINERT, CHRISTIAN, THEIMER, WOLFGANG
Application year: 2000
Main classification: H04L29
IPC codes: G06F9, H04L29