3973
I.1 Overview
3974
The Packed Objects format provides for efficient encoding and access of user data. The 3975
Packed Objects format offers increased encoding efficiency compared to the No- 3976
Directory and Directory Access-Methods partly by utilizing sophisticated compaction 3977
methods, partly by defining an inherent directory structure at the front of each Packed 3978
Object (before any of its data is encoded) that supports random access while reducing the 3979
fixed overhead of some prior methods, and partly by utilizing data-system-specific 3980
information (such as the GS1 definitions of fixed-length Application Identifiers). 3981
I.2 Overview of Packed Objects Documentation
3982
The formal description of Packed Objects is presented in this Appendix and Appendices 3983
J, K, L, and M, as follows: 3984
• The overall structure of Packed Objects is described in Section I.3. 3985
• The individual sections of a Packed Object are described in Sections I.4 through I.9. 3986
• The structure and features of ID Tables (utilized by Packed Objects to represent 3987
various data system identifiers) are described in Appendix J. 3988
• The numerical bases and character sets used in Packed Objects are described in 3989
Appendix K. 3990
• An encoding algorithm and worked example are described in Appendix L. 3991
• The decoding algorithm for Packed Objects is described in Appendix M. 3992
In addition, note that all descriptions of specific ID Tables for use with Packed Objects 3993
are registered separately, under the procedures of ISO/IEC 15961-2 as is the complete 3994
formal description of the machine-readable format for registered ID Tables. 3995
I.3 High-Level Packed Objects Format Design
3996
I.3.1 Overview
3997
The Packed Objects memory format consists of a sequence in memory of one or more 3998
“Packed Objects” data structures. Each Packed Object may contain either encoded data 3999
or directory information, but not both. The first Packed Object in memory is preceded by 4000
a DSFID. The DSFID indicates use of Packed Objects as the memory’s Access Method, 4001
and indicates the registered Data Format that is the default format for every Packed 4002
Object in that memory. Every Packed Object may be optionally preceded or followed by 4003
padding patterns (if needed for alignment on word or block boundaries). In addition, at 4004
most one Packed Object in memory may optionally be preceded by a pointer to a 4005
Directory Packed Object (this pointer may itself be optionally followed by padding). 4006
This series of Packed Objects is terminated by optional padding followed by one or more 4007
zero-valued octets aligned on byte boundaries. See Figure I 3-1, which shows this 4008
sequence when appearing in an RFID tag. 4009
NOTE: Because the data structures within an encoded Packed Object are bit-aligned 4010
rather than byte-aligned, this Appendix use the term ‘octet’ instead of ‘byte’ except in 4011
case where an eight-bit quantity must be aligned on a byte boundary. 4012
Figure I 3-1: Overall Memory structure when using Packed Objects 4013 DSFID Optional Pointer* And/Or Padding First Packed Object Optional Pointer* And/Or Padding Optional Second Packed Object
…
Optional Packed Object Optional Pointer* And/Or Padding Zero Octet(s)*Note: the Optional Pointer to a Directory Packed Object may appear at most only once 4014
in memory 4015
Every Packed Object represents a sequence of one or more data system Identifiers, each 4016
specified by reference to an entry within a Base ID Table from a registered data format. 4017
The entry is referenced by its relative position within the Base Table; this relative 4018
position or Base Table index is referred to throughout this specification as an “ID Value.” 4019
There are two different Packed Objects methods available for representing a sequence of 4020
Identifiers by reference to their ID Values: 4021
• An ID List Packed Object (IDLPO) encodes a series of ID Values as a list, whose 4022
length depends on the number of data items being represented; 4023
• An ID Map Packed Object (IDMPO) instead encodes a fixed-length bit array, whose 4024
length depends on the total number of entries defined in the registered Base Table. 4025
Each bit in the array is ‘1’ if the corresponding table entry is represented by the 4026
Packed Object, and is ‘0’ otherwise. 4027
An ID List is the default Packed Objects format, because it uses fewer bits than an ID 4028
Map, if the list contains only a small percentage of the data system’s defined ID Values. 4029
However, if the Packed Object includes more than about one-quarter of the defined 4030
entries, then an ID Map requires fewer bits. For example, if a data system has sixteen 4031
entries, then each ID Value (table index) is a four bit quantity, and a list of four ID 4032
Values takes as many bits as would the complete ID Map. An ID Map’s fixed-length 4033
characteristic makes it especially suitable for use in a Directory Packed Object, which 4034
lists all of the Identifiers in all of the Packed Objects in memory (see section I.9). The 4035
overall structure of a Packed Object is the same, whether an IDLPO or an IDMPO, as 4036
shown in Figure I 3-2 and as described in the next subsection. 4037
Figure I 3-2 Packed Object Structure 4038
Optional Format Flags
Object Info Section (IDLPO or IDMPO) Secondary ID Section (if needed) Aux Format Section (if needed) Data Section (if needed) 4039
Packed Objects may be made “editable”, by adding an optional Addendum subsection to 4040
the end of the Object Info section, which includes a pointer to an “Addendum Packed 4041
Object” where additions and/or deletions have been made. One or more such “chains” of 4042
editable “parent” and “child” Packed Objects may be present within the overall sequence 4043
of Packed Objects in memory, but no more than one chain of Directory Packed Objects 4044
may be present. 4045
I.3.2 Descriptions of each section of a Packed Object’s
4046