• Quick Start
  • Booting
  • Platform
  • Portals
  • References
    • API Reference TOI3
    • IIP Reference
  • Resources
ARRIS Enterprises, Inc. Confidential Information

Front Panel Service Configuration

At startup, the Front Panel Service will look for an XML file in /etc/frontpanel_config.xml containing the configuration on how the front panel automatically, without any application interaction, should react on changes in information objects and/or Front Panel Service specific variables, e.g. which LED shall be lit in which color in standby.

Since KreaTV 5.0, the LEDs can only be controlled through the XML file.

The default configuration XML file can be overridden by adding kreatv-option-frontpanel-config:config=<custom config file.xml> to the boot image config file. The configuration XML file should conform to the DTD below, which describes the structure of the front panel configuration.


<!ELEMENT FrontPanelConfig (Panel*)>
<!ATTLIST FrontPanelConfig
	  version CDATA #REQUIRED>
<!ELEMENT Panel (Expression*, RgbColorAlias*)>
<!ATTLIST Panel
          type CDATA #REQUIRED>
<!ELEMENT Expression (Result+)>
<!ATTLIST Expression
	  value CDATA #REQUIRED>
<!ELEMENT Result (Led*, SegmentDisplay?, RgbLed?)>
<!ATTLIST Result
          value CDATA #REQUIRED>
<!ELEMENT Led EMPTY>
<!ATTLIST Led
          id CDATA #IMPLIED
          label CDATA #IMPLIED
          color (off | red | green | orange | blue | yellow | cyan | magenta | white) #REQUIRED
          blinkfrequency CDATA #IMPLIED
          irblinkcolor (off | red | green | orange | blue | yellow | cyan | magenta | white) #IMPLIED>
<!ELEMENT SegmentDisplay EMPTY>
<!ATTLIST SegmentDisplay
          mode (text | clock) #REQUIRED
          text CDATA #IMPLIED
          colonstate (false | true) #IMPLIED
          intensity CDATA #IMPLIED>
<!ELEMENT RgbLed EMPTY>
<!ATTLIST RgbLed
          id CDATA #IMPLIED
          label CDATA #IMPLIED
          color1 CDATA "000000" #REQUIRED
          color2 CDATA "000000" #REQUIRED
          holdtime CDATA #REQUIRED
          transitiontime CDATA #REQUIRED>
<!ELEMENT RgbColorAlias EMPTY>
<!ATTLIST RgbColorAlias
          paneltype CDATA #REQUIRED
          name CDATA #REQUIRED
          color CDATA "000000" #REQUIRED>

The current version of FrontPanelConfig is "2.1". XML files written since version "2.0" will still be parsed, but it is recommended to write new configuration files in the format described here.

In order to allow for flexible control of when LEDs and segment display should change state the Expression and Result elements are used. The Expression element has a string attribute that consists of variables which are set from information objects and/or Front Panel Service specific variables. When a child Result element matches its expression parent element the child elements Led, RgbLed and SegmentDisplay will define the new LED and segment display states.

Variables in the Expression value attribute are defined in the following way:

  • $object is an Information Service object named "object". The string shall only contain alphanumeric characters and the dot and underscore characters.
  • #variable is one of the below listed Front Panel Service specific variables.
Front Panel Service specific variables
Variable name Comment Values
PowerProfile The power state of the STB. See Power Management for more information.
  • active
  • active_standby
  • passive
WiFiState The state of the WiFi connection.
  • connected
  • connecting
  • inactive

To allow for easier matches between expression and result strings the '*' character can be used in the result strings to match any substring in the expression. The extreme would be to have "*" as the full Result string which would match any value in the expression. The '*' character is also allowed in the Panel type string but for this attribute the '?' is also allowed to match any single character, e.g. "vip19?3" will match both vip1963 and vip1903.

When several Result elements are specified for an expression the first match in the order of the Result elements will be the one used. If for instance "*" is given as the first Result then no other Result elements will be considered.

The RgbLed and RgbColorAlias elements

The RgbLed element makes it possible to specify an animation between two RGB triplets. An example of the kind of animation that is possible to achieve is depicted below:

The available attributes for the RgbLed element are as follows:

RgbLed element attributes
Attribute name Description
color1 An RGB triplet or RGB color alias name of the first active color.
color2 An RGB triplet or RGB color alias name of the second active color. If this color is specified to be the same as color1, the color will be kept static.
holdtime Specifies how long (in milliseconds) the current active color should stay stable before transitioning to the next color.
transitiontime Specifies how long (in milliseconds) the transition from the active color to the next color should take.

The available value of the RgbLed element for each STB model are as follows:

The available colors of the RgbLed element
Led Count Label Supported Color
VIP3500 1 RGB red,green,blue
VIP430x 1 RGB red,green,blue
VIP56x2 1 RGB red,green,blue

It is common that different set-top box models will produce different color nuances given the same RGB triplet. As an example, the RGB triplet used to produce a certain nuance of e.g. orange for set-top box model A might not be the same RGB triplet used to produce the very same nuance of orange on set-top box model B. To aid in this matter, there exists an element called RgbColorAlias. This element makes it possible to alias a certain RGB triplet with a textual name. An RgbColorAlias element must also specify which panel type it is valid for.

Here is a practical (fictitious) example of how the RgbColorAlias element can be used: The name "Red-Faint" could be specified as an alias for the RGB triplet #110000 for VIP4302 set-top box models. This particular example is expressed in XML as: <RgbColorAlias name="Red-Faint" color="#110000" paneltype="vip43?2" />. If another box model, e.g. VIP43xx achieves the same nuance but with a different triplet, #1F0000, another RgbColorAlias element can be added: <RgbColorAlias name="Red-Faint" color="#1F0000" paneltype="vip43XX" />. This comes in handy when having the same rule set-up for different set-top box models that are showing colors in slightly different ways.

IR/Input feedback for an RGB LED works by amplifying the current active color. E.g., if the current color is #110000, it will be amplified to #FF0000 when receiving input, and then gradually fade back to the original color. If more than one color is active at the time of receiving input, both of these colors will be amplified with their current ratio intact. E.g., if the LED shows the color #332211, the color will be amplified to #FFAA55 on input, and then gradually return to the original color. The concept is illustrated in the image below:

When setting up the configuration for an RGB LED, it is important to not set too high color intensities. Otherwise, there is no intensity left to indicate input feedback.

It might not be possible to configure certain colors for an RGB LED when entering passive standby. This has to do with power limitations of the hardware used to generate the electrical signals that controls the LED.

Example using Led and SegmentDisplay tags

Consider the following example of front panel configuration file showing usage of the Led and SegmentDisplay tags:


<?xml version="1.0"?>
<FrontPanelConfig version="2.1">
  <Panel type="vip19??">
    <Expression value="#PowerProfile">
      <Result value="active">
        <Led label="POWER" color="off"/>
        <Led label="POWER1" color="green" blinkfrequency="0.0"/>
        <SegmentDisplay mode="text" colonstate="false" text="KTV"
			intensity="100"/>
      </Result>
      <Result value="*">
        <Led label="POWER" color="red" blinkfrequency="0.5"/>
        <Led label="POWER1" color="off" />
        <SegmentDisplay mode="clock" colonstate="true" intensity="20"/>
      </Result>
    </Expression>
    <Expression value="$cfg.dlna.dms.enabled,$var.time.valid">
      <Result value="TRUE,TRUE">
        <Led label="GENERIC" color="green"/>
      </Result>
      <Result value="FALSE,*">
        <Led label="GENERIC" color="off"/>
      </Result>
      <Result value="*">
        <Led label="GENERIC" color="red"/>
      </Result>
    </Expression>
  </Panel>
</FrontPanelConfig>

This configuration will cause the Front Panel Service to act as follows:

  • At startup, the Front Panel Service will subscribe to the cfg.dlna.dms.enabled and var.time.valid information objects.
  • If the current power profile is any standby mode, power LED 1 will blink with a red light at 0.5 Hz and power LED 2 will be unlit. The segment display will show a clock and the intensity of the display will be at 20% of max.
  • If the power profile switches to active, power LED 1 will be unlit and power LED 2 will be lit with a solid green light. The segment display will be in text mode displaying the text KTV.
  • If the cfg.dlna.dms.enabled object is set to TRUE and var.time.valid is set to TRUE the generic LED will be set to green. If cfg.dlna.dms.enabled is set to FALSE the LED will be turned off. If the objects are set to something else the led will be set to red.

Example using the RgbLed and RgbColorAlias tags

Here follows an example of a front panel configuration file showing usage of the RgbLed and RgbColorAlias tags:


<?xml version="1.0"?>
<FrontPanelConfig version="2.1">

  <!-- Color aliases for VIP4302 (they will be ignored on VIP43xx) -->
  <RgbColorAlias paneltype="vip4302" name="red-low" color="#200000" />
  <RgbColorAlias paneltype="vip4302" name="red-medium" color="#300000" />
  <RgbColorAlias paneltype="vip4302" name="red-high" color="#FF0000" />
  <RgbColorAlias paneltype="vip4302" name="green-low" color="#002000" />
  <RgbColorAlias paneltype="vip4302" name="green-medium" color="#003000" />
  <RgbColorAlias paneltype="vip4302" name="blue-low" color="#000020" />
  <RgbColorAlias paneltype="vip4302" name="blue-medium" color="#000030" />

  <!-- Color aliases for VIP43xx (they will be ignored on VIP4302) -->
  <RgbColorAlias paneltype="vip43XX" name="red-low" color="#120000" />
  <RgbColorAlias paneltype="vip43XX" name="red-medium" color="#200000" />
  <RgbColorAlias paneltype="vip43XX" name="red-high" color="#FF0000" />
  <RgbColorAlias paneltype="vip43XX" name="green-low" color="#001200" />
  <RgbColorAlias paneltype="vip43XX" name="green-medium" color="#002000" />
  <RgbColorAlias paneltype="vip43XX" name="blue-low" color="#000012" />
  <RgbColorAlias paneltype="vip43XX" name="blue-medium" color="#000020" />

  <!-- State machine for both VIP4302 and VIP43xx (as the last two letters
       for the panel type are ??) -->
  <Panel type="vip43??">
    <Expression value="#PowerProfile,#WiFiState">
      <Result value="active,connected">
        <RgbLed id="1" color1="blue-low" color2="blue-medium"
		transitiontime="1000" holdtime="2000" />
      </Result>
      <Result value="active,connecting">
        <RgbLed id="1" color1="#000000" color2="blue-medium"
		transitiontime="400" holdtime="0" />
      </Result>
      <Result value="active,*">
        <RgbLed id="1" color1="green-low" color2="green-medium"
		transitiontime="1000" holdtime="2000" />
      </Result>
      <Result value="active_standby,*">
        <RgbLed id="1" color1="red-low" color2="red-medium"
		transitiontime="1000" holdtime="2000" />
      </Result>
      <Result value="*">
        <RgbLed id="1" color1="red-high" color2="red-high"
		transitiontime="1000" holdtime="2000" />
      </Result>
    </Expression>
  </Panel>
</FrontPanelConfig>

This configuration will cause the Front Panel Service to act as follows:

  • If the power profile is active and WiFi is connected, RGB LED 1 will start transitioning between the two colors "blue-low" and "blue-medium", where each color will be stable for 2000 ms before transitioning over to the next color, with the transition taking 1000 ms.
  • If the power profile is active and WiFi is connecting (i.e., the WiFi module is trying to establish or re-establish its connection), RGB LED 1 will start transitioning between the two colors "#000000" (no light) and "blue-medium", where each color will be stable for 0 ms before transitioning over to the next color, with the transition taking 400 ms. This color transition should be quite noticeable for an end-user.
  • If the power profile is active and the WiFi is in any other state (e.g. inactive), RGB LED 1 will start transitioning between the two colors "green-low" and "green-medium", where each color will be stable for 2000 ms before transitioning over to the next color, with the transition taking 1000 ms.
  • If the power profile switches to active_standby, RGB LED 1 will start transitioning between the two colors "red-low" and "red-medium", where each color will be stable for 2000 ms before transitioning over to the next color, with the transition taking 1000 ms.
  • If the power profile switches to any other standby mode, RGB LED 1 will be configured to emit the static color "red-high".

5.0.1

Copyright (c) 2016 ARRIS Enterprises, LLC. All Rights Reserved. ARRIS Enterprises, LLC. Confidential Information.