Provided by: plc-utils-extra_0.0.6+git20230504.1ba7d5a0-1_amd64 

NAME
xml2pib - Qualcomm Atheros XML driven PIB editor
SYNOPSIS
xml2pib [options] pib-file [pib-file] [...]
DESCRIPTION
The Atheros PIB XML Editor modifies an Atheros PIB file based on XML instructions defined in one or more
instruction files. Instruction files must be valid XML and conform to schema file piboffset.xsd or
errors will occur. Always validate XML files against this schema with a validating parser before
submitting them to this program. Firefox or Internet Explorer are suitable for validation purposes
purpose.
This program is part of the Qualcomm Atheros Powerline Toolkit. See the AMP man page for an overview and
installation instructions.
OPTIONS
-f filename
The XML instruction file. XML instruction files must conform to the Qualcomm Atheros scheme
designed for this purpose. If more that one .xml file is specified then edits are applied in
order of filename such that later edit instructions can over-write eariler instructions.
Instruction files usually have a .xml extension but this program makes no assumption based on
filename and does not enforce any filename conventions.
-o Print the appropriate XML schema on stdout. This schema should be used to validate XML
instructions using a validating parser such as Firefox or Microsoft Internet Explorer.
-q Suppresses printing of progress messages. This option has no effect at this time.
-v Print additional information. This option has no effect at this time.
-?,--help
Print program help summary on stdout. This option takes precedence over other options on the
command line.
-!,--version
Print program version information on stdout. This option takes precedence over other options on
the command line. Use this option when sending screen dumps to Atheros Technical Support so that
they know exactly which version of the Linux Toolkit you are using.
ARGUMENTS
pib-file
An Atheros parameter filename. Only one parameter file can be edited at a time and so care must
be taken to avoid the use of wildcard filenames. Parameter files usually have a .pib extension
but this program makes no assumption based on filename and does not enforce any filename
conventions.
SCHEMA
The official Atheros XML PIB Edit schema follows. It defines general instruction file structure and the
elements used to edit PIB files. This file should be a controlled document and instruction files should
always be validated against it before using them to edit a PIB file. An explanation of this file appears
below.
<?xml version='1.0' encoding='iso-8859-1'?>
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' elementFormDefault='qualified'>
<xs:element name='pib'>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs='unbounded' ref='object'/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name='object'>
<xs:complexType>
<xs:attribute name='name' use='required' type='xs:NCName'/>
<xs:sequence>
<xs:sequence>
<xs:element ref='offset'/>
<xs:element ref='length'/>
</xs:sequence>
<xs:choice>
<xs:element ref='array'/>
<xs:element ref='dataString'/>
<xs:element ref='dataHuge'/>
<xs:element ref='dataLong'/>
<xs:element ref='dataWord'/>
<xs:element ref='dataByte'/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name='length' type='xs:positiveInteger'/>
<xs:element name='offset' type='xs:hexBinary'/>
<xs:element name='array'>
<xs:complexType>
<xs:choice maxOccurs='unbounded'>
<xs:element ref='dataByte'/>
<xs:element ref='dataHex'/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name='dataString' type='xs:string'/>
<xs:element name='dataHuge' type='xs:unsignedLong'/>
<xs:element name='dataLong' type='xs:unsignedInt'/>
<xs:element name='dataWord' type='xs:unsignedShort'/>
<xs:element name='dataByte' type='xs:unsignedByte'/>
<xs:element name='dataHex' type='xs:hexBinary'/>
</xs:schema>
ELEMENTS
<pib> The Parameter Information Block subject to edit. There is exactly one pib defined in an
instruction file.
<object>
A data region withn a pib. There must be at least one object defined inside a pib. Each object
has an offset, a length and data where data is expressed as one dataString, a dataByte, a dataHex
or an array as described below. The name attribute optional but may be used for clarity or for
reporting purposes.
<offset>
The relative position of the object in bytes expressed in hexadecimal. The offset plus the length
of an object cannot exceed PIB length or an error will occur. The offset and length element can
appear in either order but both must appear before the data element. The offset element is
required.
<length>
The extent of the object expressed in decimal bytes. The offset plus length of an object cannot
exceed PIB length. The the offset and length elements can occur in either order but both must
precede the data element. The length element is required for elements array and dataString but
may be omitted for elements dataHuge, dataLong, dataWord and dataByte.
<array>
A sequence of dataByte and/or dataHex elements. The implied length is determined by array members
but must equal the object length attribute or an error will occur. A dataString is illegal inside
an array.
<dataString>
Any sequence of printable characters. The implied length is 1 byte longer than the number of
characters. The string will be truncated or padded with NUL bytes to match the object length
attribute. An object length attribute of 0 stores one NUL byte. A dataString element is illegal
within an array block.
<dataHuge>
A unsigned decimal integer string that represents any 64 bit binary value. The implied length is
8 bytes. The object length attribute is ignored and may be omitted.
<dataLong>
A unsigned decimal integer string that represents any 32 bit binary value. The implied length is
4 bytes. The object length attribute is ignored and may be omitted.
<dataWord>
A unsigned decimal integer string that represents any 16 bit binary value. The implied length is
2 bytes. The object length attribute is ignored and may be omitted.
<dataByte>
An unsigned decimal digit string that represents any 8 bit binary value. The implied length is 1
byte. The object length attribute is ignored and may be omitted.
<dataHex>
A hexadecimal digit string that represents one byte for each digit pair (octet) present. There
must be an even number of digits or an error will occur. The resulting length must equal the
object length unless the value appears inside an array. Inside an array, the resulting length
must not exceed the remaining array length.
PROCESS
The program reads one PIB file and replaces selected values with new ones, computes the new checksum and
re-writes the file. New values are defined by offset, length, format and value. The object name is
actually irrelevant. Critical values are the offset, length and data type/value. Obviously, care must
be taken when specifying offsets and lengths to avoid editing objects incorrectly.
INSTRUCTIONS
An example instruction file follows. It references the Qualcomm Atheros XML PIB Edit schema file,
piboffset.xsd, that is shown above so that a validating parser can find the schema and perform document
checks. The remainder of the file describes a series of object names, offsets, lengths and values that
describe the edits to be performed.
<pib xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="piboffset.xsd">
<object name="HFID_Manufacturer">
<offset>0024</offset>
<length>64</length>
<dataString>Atheros HomePlug AV Device</dataString>
</object>
<object name="HFID_User">
<length>64</length>
<offset>0074</offset>
<dataString>Atheros</dataString>
</object>
<object name="MDURole">
<offset>0101</offset>
<dataByte>0</dataByte>
</object>
<object name="PriorityTTl">
<offset>0210</offset>
<length>16</length>
<array>
<dataHex>80841E008084</dataHex>
<dataHex>1e</dataHex>
<dataByte>0</dataByte>
<dataHex></dataHex>
<dataHex></dataHex>
<dataHex></dataHex>
<dataHex></dataHex>
<dataHex>C0</dataHex>
<dataByte>198</dataByte>
<dataHex>2d</dataHex>
<dataHex>00</dataHex>
</array>
</object>
<object name="VLANPrioTOSPrecMatrix">
<length>4</length>
<offset>0224</offset>
<array>
<dataByte>65</dataByte>
<dataByte>250</dataByte>
<dataHex></dataHex>
<dataHex>Fa</dataHex>
</array>
</object>
<object name="EnableLEDThroughputIndicate">
<length>1</length>
<offset>1E94</offset>
<dataByte>0</dataByte>
</object>
<object name="HFID_AVLN">
<length>64</length>
<offset>00B4</offset>
<dataString>Atheros-Net</dataString>
</object>
</pib>
EXAMPLES
The following example reads PIB file abc.pib and edits it according to instructions found in XML file
local.xml. The PIB file is always specified first, followed by one or more XML instruction files.
# xml2pib abc.pib local.xml
The following example reads PIB file abc.pib and edits it according to three XML instruction files, in
the order specified. Order can be critical since later edits could over-write earlier edits.
# xml2pib abc.pib standard.xml custom.xml errata.xml
The following example does nothing because no instruction files are specified.
# xml2pib abc.pib
SEE ALSO
chkpib(7), chkpib2(7), getpib(7), modpib(1), pib2xml(1), pibcomp(1), pibdump(1), setpib(1)
CREDITS
Charles Maier
open-plc-utils-0.0.3 November 2013 xml2pib(1)