Abstract:
A system for permitting the flexible handling of large amounts of structured data in files on smart cards and similar data storage units. The present invention introduces a new type of command which extracts relevant portions of structured information that is stored in files on smart cards and similar data units, instead of reading the complete data set and parsing it in the terminal. The present invention can also be applied to other, non-card storage media.

Description:
FIELD OF THE INVENTION  
       [0001]     The present invention relates generally to universal integrated circuit cards (UICCs). More particularly, the present invention relates to the accessing and use of large files within UICCs.  
       BACKGROUND OF THE INVENTION  
       [0002]     This section is intended to provide a background or context to the invention that is recited in the claims. The description herein may include concepts that could be pursued, but are not necessarily ones that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, what is described in this section is not prior art to the description and claims in this application and is not admitted to be prior art by inclusion in this section.  
         [0003]     The European Telecommunications Standards Institute (ETSI) specification ETSI TS 102 221 describes the electrical and physical characteristics of UICCs, including their basic file structure and basic commands for file handling. The details of the files and specialized commands are described in specifications for individual applications on cards such as subscriber identity module (SIM), universal SIM (USIM), IP Multimedia SIM (ISIM) and removable user identity module (R-UIM) cards.  
         [0004]     Different types of files can exist on a card at issue. There are generally two primary types of files. Binary elementary files imply disordered data files, and linear fixed files (or record-based files), consist of a number of fixed-length records.  FIG. 1  shows the structure of a binary file, while  FIG. 2  shows the structure of a record based file. In binary files, data are addressed by byte-numbers. In record based files, data are addressed by record number. For technical reasons, binary files are limited in size to 32 kbytes, while record-based files are limited to a maximum of 254 records, with each record having a maximum of 255 bytes.  
         [0005]     In addition to the above, a new type of file, BER-TLV structure elementary files, was recently introduced. In BER-TLV structure elementary files, there is no upper limit on the size of these files. For this reason, they are sometimes also referred to as “large files”), and data is stored in tag-length-value (TLV) structures. The structure of a BER-TLV file is depicted in  FIG. 3 . Each tag is unique within the file.  
         [0006]     Specific commands have been defined for reading from and writing to BER-TLV files. The RETRIEVE DATA command is used to read the value of a TLV identified by its tag. The SET data command is used to write the value of a TLV (either writing a new TLV or updating an existing TLV) identified by its tag.  
         [0007]     To date, the only use of large files has been for multimedia message storage. However, this type of file is also suitable for generic data storage. For example, large files could be used for an improved USIM phonebook, where entries could be stored as electronic personal data cards, commonly known as vCards, encoded within TLVs. Other possibilities include the potential storage of generic XML data in large files.  
         [0008]     The existing USIM phonebook is based on a construction with many record-based files, each containing a different piece of information (one file with records containing name and number, one file with records containing e-mail, etc), which is quite complex and difficult to extend with new types of information.  
         [0009]     Despite such possibilities for improvements, however, there are currently a number of issues which prevent such possibilities from becoming realities. In the case of a USIM phonebook, for example, it is likely that an improved USIM phonebook would be stored in large files, for example in vCard format. During terminal start-up, it is important to read the phonebook from the UICC as quickly as possible. However, in order to start up the terminal, it is not necessary to read the entire content of the phonebook; it would be enough to simply read all of the names and primary telephone numbers. This information can be used to make a list of entries which can be shown to the user, and additional details can then be read from the card at a later time upon request of the user. Currently, however, such a process is not technically possible, as there are no commands that allow the terminal to read only a portion of a TLV from the card. Therefore, if an improved USIM phonebook was based on storage of vCards in a large file, in order to construct a list of content, the terminal would be forced to read the complete file from the card, resulting in delays in the start-up sequence.  
       SUMMARY OF THE INVENTION  
       [0010]     The present invention addresses the issues described above by defining a new command which allows a terminal to request a portion of a TLV, based on a well-defined sub-division of the individual TLVs. This command can also be used to request a list of sub-elements from all TLVs in a file. In the case of a phonebook, for example, such a command allows a terminal to request the “name” portion of a certain TLV, or to request a list of all names in the whole file.  
         [0011]     The present invention provides for a number of distinct advantages over conventional systems. With the present invention, a terminal is capable of reading relevant information from a large file, without having to read the entire file. This allows for a more efficient use of data on the card and reduces the load imposed on the interface between the terminal and UICC. This also increases the effective bandwidth and diminishes the load on the terminal&#39;s battery.  
         [0012]     Another advantage of the present invention is that it opens the door for further improvements in USIM phonebooks, and also opens the door for further improvements in potential data storage on UICCs.  
         [0013]     Although examples discussed herein focus specifically to the BER-TLV structure files on a UICC, the present invention can also be implemented with regard to other forms of mass storage, such as MMC cards or USB mass storage devices.  
         [0014]     These and other advantages and features of the invention, together with the organization and manner of operation thereof, will become apparent from the following detailed description when taken in conjunction with the accompanying drawings, wherein like elements have like numerals throughout the several drawings described below. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0015]      FIG. 1  is a representation of binary elementary file;  
         [0016]      FIG. 2  is a representation of a record based file;  
         [0017]      FIG. 3  is a representation of a BER-TLV structure file; and  
         [0018]      FIG. 4  is a schematic representation of circuitry that can appear in an electronic device involved in the implementation of the present invention 
     
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS  
       [0019]     The present invention addresses the issues described above by defining a new command which allows a terminal to request a portion of a TLV, based on a well-defined sub-division of the individual TLVs. This command can also be used to request a list of sub-elements from all TLVs in a file. In the case of a phonebook, for example, such a command allows a terminal to request the “name” portion of a certain TLV, or to request a list of all names in the whole file.  
         [0020]     For the implementation of the present invention, one issue deals with how to distinguish between the individual elements within a TLV. One option for addressing this issue is to define the commands in a flexible way which allows for different schemes to be used in different files. The particular form to use can be communicated via the command parameters. In addition, it is also possible to choose one single scheme which is always used, although this option is less flexible in nature.  
         [0021]     The format in schematic form for a command to be used is as follows: RETRIEVE DATA (scheme; entry, element, offset, length)  
         [0022]     An explanation of the various parameters is presented below. While all of these parameters may be useful in different situations, all of the parameters may not be needed in certain implementations. 
    Scheme: identifies the scheme which is used to identify individual elements within the entry. Examples are TLV, XML, vCard, etc.     Entry: identifies the file entry. Possible values include: &lt;tag&gt;; next; previous; first; last; &lt;number&gt;, all, where &lt;tag&gt; is the unique tag of the entry and &lt;number&gt; is the number of the entry.     Element: identifies the relevant element in the entry, e.g. “name” or “telephone number” if the entry is an entry in a telephone directory.     Offset: offset from the start of the content.     Length: number of characters to read.    
 
         [0028]     A response to the command comprises a list of the element content. The “tag” is the identifier for the TLV requested, and the “element” identifies which part of the TLV is requested. It should be noted that the element does not have to be unique within the TLV. If the terminal requests the phone-number element within a TLV, then the terminal will receive a list of all the phone numbers in the relevant TLV.  
         [0029]     An entry in a BER-TLV structure is a TLV, i.e., it has the form Tag, Length, Value, where Tag is a unique identifier, Length is the length of the value part, and Value is the data portion of the object.  
         [0030]     As an example of a phonebook entry, a vCard is depicted below: 
    BEGIN:vCard     VERSION:3.0     FN:Frank Lawson     ADR;TYPE=WORK,POSTAL,PARCEL:;;6544 Battleford Drive;Raleigh;N.C.;27613-3502;U.S.A.     TEL;TYPE=VOICE,MSG,WORK:+1-919-676-9515     END:vCard    
 
         [0037]     The following are three mechanisms that can be used in the implementation of the present invention. It should be noted that the following mechanisms are only exemplary in nature, and the present invention is not intended to be limited to these mechanisms.  
         [0038]     A first alternative for implementing the present invention involves having elements within TLVs being structured as TLVs. In the phonebook example discussed previously, a standardized set of tags can be used. Such tags can comprise, for example:  
                                                   Type   Tag                           VERSION   ‘80’           FN (Formatted Name)   ‘81’           ADR (Address)   ‘82’           TEL (Telephone)   ‘83’           . . .   . . .                      
 
         [0039]     Taking the tag value to be ‘BF 81 00’ as an example, the phonebook entry discussed above is: 
    BF 81 00     7E     80 03 ‘3.0’    81 0C ‘Frank Lawson’    82 4C ‘TYPE=WORK,POSTAL,PARCEL:;;6544 Battleford Drive;Raleigh;N.C.;27613-3502;U.S.A.’    83 23 ‘TYPE=VOICE,MSG,WORK:+1-919-676-9515’   
 
         [0046]     It should be noted that a binary encoding could also be used to compress, e.g., TYPE=WORK,POSTAL,PARCEL.  
         [0047]     If the approach described above is used, the command for obtaining the name is in the form RETRIEVE DATA (Tag=BF 81 00, “subtag” 81), and the response is ‘Frank Lawson’.  
         [0048]     In a second alternative, elements within TLVs are formatted as XML documents. XML document sub-parts are distinguished by the format: “begin-tag; value; end-tag”; for example &lt;FN&gt;Frank Lawson&lt;\FN&gt;. Using this type of format, the phonebook entry is as follows: 
    BF 81 00    
 
         [0050]     B0  
                                                   &lt;VERSION&gt;3.0&lt;\VERSION&gt;           &lt;FN&gt;Frank Lawson&lt;\FN&gt;           &lt;ADR&gt;TYPE=WORK,POSTAL,PARCEL:;;6544 Battleford           Drive;Raleigh;NC;27613-3502;U.S.A.&lt;\ADR&gt;           &lt;TEL&gt;TYPE=VOICE,MSG,WORK:+1-919-676-9515&lt;\TEL&gt;                      
 
         [0051]     As in the first option discussed previously, there are many possibilities for compression in this technique.  
         [0052]     Assuming XML format, RETRIEVE DATA command takes the form: RETRIEVE DATA (Tag−BF 81 00, xml-tag ‘FN’)  
         [0053]     The UICC then returns the value (or the values, if there are more than one) between &lt;FN&gt; and &lt;\FN&gt;.  
         [0054]     In a third alternative, the vCard format is used directly within the TLV&#39;s. In this system, the start of an individual element is defined by a keyword (e.g., FN), and the end of an individual element is defined by the start of the keyword for the next element. This system is somewhat less flexible than the other systems discussed herein, as it requires the UICC to have a complete list of possible keywords in order to be able to distinguish between elements; on the other hand, this system makes the implementation of a large-file phonebook very simple.  
         [0055]     The following is one example, where it is assumed that there is a phonebook entry stored in a file (this is not necessarily the actual format which is stored in the file, but only serves as an example to illustrate the working of these commands): 
    myTag     Length     BEGIN:vCard     VERSION:3.0     FN:Frank Lawson     ADR;TYPE=WORK,POSTAL,PARCEL:;;6544 Battleford Drive;Raleigh;N.C.;27613-3502;U.S.A.     TEL;TYPE=VOICE,MSG,WORK:+1-919-676-9515     END:vCard    
 
         [0064]     It should be noted that the Length is shown above as 81 A6. This is because when the length is between 127 and 255 bytes, it is coded on two bytes. The first byte has a constant hexadecimal value ‘81’, while the second byte is the actual length in hexadecimal.  
         [0065]     In this case, the command is RETRIEVE DATA (myTag, FN), and the response is the string “Frank Lawson”. The command RETRIEVE DATA (all tags, FN) gives back a list of all FN elements in the file: (tag1, name1, tag2, name2, . . . , myTag, “Frank Lawson”, . . . ). In one embodiment, this list has to be sent using more than one response message.  
         [0066]     The detailed implementation of the present invention on a UICC, although not described in detail herein, would be well understood by those skilled in the art. The implementation in the UICC may be performed, for example, using a lookup table with keywords, it can be performed by reading and parsing the data in the file when the data is requested, or a combination of these two methods could be used. In addition to the above, it should also be noted that similar commands to those discussed above can also be defined for writing parts of a TLV to the file.  
         [0067]      FIG. 4  shows the circuitry that can appear in one representative electronic device within which different aspects of the present invention may be implemented. It should be understood, however, that the present invention is not intended to be limited to one particular type of electronic device. The electronic device of  FIG. 4  includes a display  32 , a keypad  34 , a microphone  36 , an ear-piece  38 , an infrared port  42 , an antenna  44 , a smart card  46  in the form of a UICC according to one embodiment of the invention, a card reader  48 , radio interface circuitry  52 , codec circuitry  54 , a controller  56  and a memory  58 . Individual circuits and elements are all of a type well known in the art, for example in the Nokia range of mobile telephones. The present invention is also applicable to fixed devices such as personal computers.  
         [0068]     The present invention is described in the general context of method steps, which may be implemented in one embodiment by a program product including computer-executable instructions, such as program code, executed by computers in networked environments. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Computer-executable instructions, associated data structures, and program modules represent examples of program code for executing steps of the methods disclosed herein. The particular sequence of such executable instructions or associated data structures represents examples of corresponding acts for implementing the functions described in such steps.  
         [0069]     Software and web implementations of the present invention could be accomplished with standard programming techniques with rule based logic and other logic to accomplish the various database searching steps, correlation steps, comparison steps and decision steps. It should also be noted that the words “component” and “module,” as used herein and in the claims, is intended to encompass implementations using one or more lines of software code, and/or hardware implementations, and/or equipment for receiving manual inputs.  
         [0070]     The foregoing description of embodiments of the present invention have been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the present invention to the precise form disclosed, and modifications and variations are possible in light of the above teachings or may be acquired from practice of the present invention. The embodiments were chosen and described in order to explain the principles of the present invention and its practical application to enable one skilled in the art to utilize the present invention in various embodiments and with various modifications as are suited to the particular use contemplated.