All information objects handled by the Information Service are arranged in a common storage structure. This structure defines how information objects get their initial values and how various parts of the system are allowed to manipulate these values.
The basis for the storage structure is the hierarchy of information sources. The source defines how an object gets its initial value, and also regulates how the value may be changed in various ways.
Source | Description | Initial value determined at | Allows changes | Allows removes |
---|---|---|---|---|
OS | The value is based on information from the operating system. | Boot | No | No |
Flash User Configuration | The value is stored in flash and may by changed during the boot process. | Production | Boot | No |
Flash Production Data | The value is defined in production and used during the boot process. | Production | No | No |
Volatile | Information objects may be introduced, changed, and removed in run-time. All objects are removed at the end of each session, i.e., when going to stand-by. | Run-time | Run-time | Run-time |
Flash File System | Information objects may be introduced, changed, and removed in run-time. The objects are stored permanently and survives stand-by and system reboot. | Run-time | Run-time | Run-time |
Infocast | Information objects and their values are controlled from the IP-STB Server. | Server controlled | Server controlled | Server controlled |
Derived | Information objects have values that are derived from other information objects. | Boot | No | No |
Build | Information objects about the build. | Build | No | No |
Default | The default source provide default values for some information objects. Since this source has the lowest priority it is truly default. | Build | No | No |
The same information object may in general be stored in more than one place (i.e., have multiple sources) at the same time. When the value of an information object is requested, the sources are searched in priority order, i.e., it starts looking in the OS source and continues searching down the hierarchy. When a source is found which defines the object, the search ends and the object gets the value as defined by that source. In effect objects defined by one source hides any definition of the same object in lower priority sources. If no valid source is found this is indicated with an error. When a new information object is introduced, changed, or removed, all subscribers to that particular information object are notified, given that there is no value for the object in a higher priority source.
A few general observations can be made by applying this search algorithm on the storage structure. First of all, new information objects are allowed to be introduced in run-time only for the flash file system, infocast, and volatile sources, but depending on the source used, objects will express different time to live properties. Secondly, the priority order implies that objects that are present in one of the three top sources (OS, flash user configuration, and flash production data) can never be changed in run-time. Even if any of these objects added to any other source, like for example the infocast source, these changes will not be visible and consequently they will never take effect.