This interface allows products describe themselves for the benefit
of development tools such as IDE's. For example, a tool
can read the information provided by a product that implements this
interface and generate an eclipse plugin that leverages the product's
"resources".
By expressing the product's information in this interface, a product
can be delivered into multiple development tools without explicit
knowledge of these tools. For example, an online "product repository"
can extract sufficient information from this interface to enable it
to provide a searchable catalog of interesting products.
struct IProduct.HelpToc |
 |
Help table of contents (TOC) element
metaonly struct HelpToc {
String label;
// Help element description
String filePath;
// Path to help doc
Bool tocFile;
// Indicates whether element is a TOC file
};
FIELDS
label
Summary description of help element which
is displayed in the global table of contents.
filePath
Relative path to help documentation file or a
secondary table of contents file or a URL. Relative
paths are relative to the directories specified in
docsLocArr; files are searched for, in
order, within each directory and the first file
found that matches the name is used.
tocFile
Flag indicates whether the element is a
table of contents (TOC) file. Tools may
process TOC files in a special way. For
example, a tool to generate eclipse plugins
must copy the TOC file to the plugin folder
for integrating with eclipse help.
DETAILS
A help TOC element defines a file, URL, or a secondary table of
contents that is referenced from a global table of contents.
struct IProduct.MacroDescriptor |
 |
Macro Descriptor structure
metaonly struct MacroDescriptor {
String name;
// Macro name
String desc;
// Macro description
};
struct IProduct.PluginDescriptor |
 |
Plugin Descriptor structure
metaonly struct PluginDescriptor {
String id;
// Plugin id
String version;
// Plugin version
String path;
// Plugin path
};
FIELDS
id
Plugin id
version
Plugin version
path
Path to plugin relative to IProduct implementation
struct IProduct.Target |
 |
Structure containing information on RTSC targets
metaonly struct Target {
String sourceFile;
// Name of a file with target mapping
};
FIELDS
sourceFile
The path to a file that defines the mapping
in a JSON file
DETAILS
Products specify the mapping between device names and/or device
family names and a RTSC target module in a JSON file located in the
product itself. The field sourceFile contains the file name including
the path relative to the top directory of the product.
The content of the file is read whenever a product is used in a project
and the information from the file is leveraged by tools to derive an
appropriate RTSC target when given a device name, device family,
endiness, and OMF selection (COFF verses ELF).
The JSON file contains objects, and each object is matched against the
device and build options selected for a particular project. If all
object attributes, except for the target specification, are matched by
supplied options, the target represented by the object is returned.
Objects are matched against the options in the order they are listed in
the JSON file. As soon as a match is found, the search stops.
Currently used object attributes that are matched against build options
are deviceFamilyPattern, deviceNamePattern, deviceVariant and
elf. Object attributes that specify a target are packageName and
baseTargetName, where packageName is the name of a package that
contains targets, while baseTargetName is a name of a target module
in that package.
In particular, if the device name and family name selected for a project
match deviceNamePattern and deviceFamilyPattern in an object, the
target name generated will be:
<packageName>[.elf].<baseTargetName>[_big_endian]
The strings ".elf" and "_big_endian" are added if the corresponding
project options are specified.
Suppose, for example, a product specifies the following target mapping:
{
deviceNamePattern: "MSP430F5.*",
deviceFamilyPattern: "MSP430.*",
packageName: "ti.targets.msp430",
baseTargetName: "MSP430X"
}
If the device specified is "MSP430F5529", the family is "MSP430",
and the OMF is COFF, the generated target will be:
ti.targets.msp430.MSP430X
On the other hand, if the OMF is ELF the target will be:
ti.targets.msp430.elf.MSP430X
struct IProduct.UrlDescriptor |
 |
URL Descriptor structure
metaonly struct UrlDescriptor {
String url;
// Uniform Resource Locator(URL)
String text;
// Summary text for the URL
String targetText;
// (optional) Summary for target portion
};
FIELDS
url
Uniform Resource Locator(URL)
text
Summary text for the URL
targetText
Optional summary text for any target content
portion
config IProduct.bundleName // module-wide |
 |
Product bundle name
config String bundleName;
DETAILS
Product bundle name is embedded in the top level folder name of
the product. Example: The top level folder for XDCtools version
3.16.02.31-eng is xdctools_3_16_02_31-eng. In this case the
bundle name is xdctools.
The bundle name is used by tools to discover the product
installed on a filesystem.
config IProduct.companyName // module-wide |
 |
Name of company releasing product
config String companyName;
DETAILS
Example : "Texas Instruments"
config IProduct.copyRightNotice // module-wide |
 |
Copyright notice for product
config String copyRightNotice;
config IProduct.docsLocArr // module-wide |
 |
Directories containing documents in the product
config String docsLocArr[];
DETAILS
Directories are specified relative to the product installation
directory. These directories are searched when resolving URI links
to specific pages within the docs.
config IProduct.exclusive // module-wide |
 |
This product is a singleton
config Bool exclusive = false;
DETAILS
This flag indicates whether multiple versions of this product are
accessable within the IDE or whether only the latest version is
available.
When flag is set to true it indicates that only one
version of the product can be active in the system. Otherwise
the system can handle multiple versions of the same product.
config IProduct.externalPlugins // module-wide |
 |
External plugins delivered with the product
config IProduct.externalRequirements // module-wide |
 |
External plugins required by this product
config String externalRequirements[];
config IProduct.helpTocArr // module-wide |
 |
Array of table of contents elements in product
DETAILS
Tools generating table of contents are required
to preserve the order of elements specified in this array.
config IProduct.id // module-wide |
 |
A unique product id
DETAILS
For example, product developers may choose to follow namespace
conventions for Java packages or Eclipse plugins to specify a
unique id like org.eclipse.rtsc.xdctools.product.
config IProduct.licenseDescriptor // module-wide |
 |
License information for product
VALUES
url
field should contain the URL containing the
license text.
text
field should contain a summary description of the license
config IProduct.macro // module-wide |
 |
Macro associated with the product
DETAILS
Product macros are often used in IDEs for providing
portable build environments. A unique macro name should
be selected for the product.
config IProduct.name // module-wide |
 |
Product name
DETAILS
String containing product name eg. System BIOS
config IProduct.otherFiles // module-wide |
 |
Array of paths to files or directories to copy into the product
config String otherFiles[];
DETAILS
A product may need to contain "arbitrary" files important to its
operation. For example a product may provide text, images and video
files that provide templates or branding information for the product.
These files may then be consumed by tools like IDE's via
hooks defined in the IDE framework.
The source file path is defined relative to the directory containing
the implementation of IProduct. All files or directories are
copied to the base directory of the plugin; e.g.,
"../branding/about.ini" is copied to "about.ini" at the top of the
plugin.
Path names that begin with the prefix "tc:" are copied into "target
content" plugin whereas path names with any other prefix (such as
"ui:" or no prefix) are copied into the "IDE plugin".
config IProduct.productDescriptor // module-wide |
 |
Product description
VALUES
url
the url field should contain a product-specific "home"
page URL or, if there is none, the URL of organization
releasing the product.
text
the text field should contain summary description of
the target content portion of the product.
config IProduct.productViewModule // module-wide |
 |
Name of module implementing xdc.tools.product.IProductView
config String productViewModule;
DETAILS
Products must provide a module that implements the
xdc.tools.product.IProductView interface. This
module defines the "top-level" modules that are visible to the user
and must be delivered in the repositories defined in
repositoryArr.
config IProduct.projectSpecPath // module-wide |
 |
Directory containing project spec files
config String projectSpecPath = "resources";
DETAILS
This path is relative to the product install location.
config IProduct.repositoryArr // module-wide |
 |
Repositories contained in the product
config String repositoryArr[];
DETAILS
Repositories are specified relative to the product installation
directory.
config IProduct.targetFile // module-wide |
 |
File with available RTSC target modules
DETAILS
The RTSC target modules should be delivered
in the repositories defined in
repositoryArr
config IProduct.templateModule // module-wide |
 |
Name of module implementing xdc.tools.product.IProductTemplate
config String templateModule;
DETAILS
Products that deliver examples provide a module that implements the
xdc.tools.product.IProductTemplate interface. This module
must be delivered in one of the repositories defined in
repositoryArr.
config IProduct.tocIndexFile // module-wide |
 |
Top level help index file
config String tocIndexFile;
DETAILS
In eclipse help, for example, this file is displayed when the
product's top-level entry is selected in eclipse's help table of
contents. If this file is not provided a very basic list of links
to the entries listed in @{link #helpTocArr} is displayed.
config IProduct.updateSite // module-wide |
 |
Update site for product
VALUES
url
the url field should contain the URL containing
product upgrades.
text
the text field should contain summary description of
the update site
config IProduct.version // module-wide |
 |
Product version
DETAILS
The product version should follow the format
-major.minor.service.qualifier where
major,minor and service are integers and
qualifier is a string. Example - 3.16.02.31-eng.
Products may specify their own guidelines for
updating major,minor,service and qualifier portions of the
version number as long as they are unique for the product.
Products may also choose to follow popular versioning conventions
like those followed for versioning Eclipse plugins.