Maintenance Tasks

The following tasks are currently available:

Difference to IAdea players.

Software updates and reboots depending on operating system functions. As garlic-player is platform-independent, we decide to split the execution of the task from the player. The player sends this commands to an external application.

On Android, you can use the garlic-launcher. Garlic-player also supports the Digital Signage Display solutions from Philips.

IAdea has their own compatible solution.

The Task ID is important

The smil-player use it to register if a particular task has already been applied. The task will not apply if the ID is the same as in the last command. In other words: If you want to re-apply a task, change the ID.

The ID also enables to assign the entries of the task execution reports to the right maintenance task.

Maintenance Tasks Handler

To initiate a task, the player must issue a SMIL index, with a TaskSchedule subscription in the head section.

Maintenance Tasks add the same metadata to the head section of the SMIL index like in log-reports with TaskSchedule in type-tag. The tasks itself are described in the taskSchedule.xml file.

<head>
  <metadata>
    <x-server>
      <subscriptionList>
        <subscription>
          <type>TaskSchedule</type>
          <action>https://domain.tld/taskSchedule.xml</action>
          <method>get</method>
        </subscription>
      </subscriptionList>
    </x-server>
  </metadata>
</head>
Maintenance task handler for SMIL Header

Player Reboot

The taskSchedule.xml file for a reboot looks like the following:

<taskSchedule>
  <timedTaskList at="0" abortOnError="false">
    <shutdownPlayer id="set_here_an_unique_id">
      <type>reboot</type>
    </shutdownPlayer>
  </timedTaskList>
</taskSchedule>
The shutdownPlayer task schedule with reboot.

Firmware Update

The taskSchedule.xml file for a firmware update looks like the following:

<taskSchedule>
  <timedTaskList at="0" abortOnError="false">
    <firmwareUpdate id="123">
      <sourceURI>https://domain.tld/firmware.pkg|software.apk</sourceURI>
      <version applyIf="always|upgrade">1.0.3</version>
      <contentType>x-firmware-update/x-pkg</contentType>
      <contentLength>THE_FILE_LENGTH</contentLength>
      <contentChecksum>THE_FILE_MD5_CHECKSUM</contentChecksum>
      <checksumMethod>MD5</checksumMethod>
	</firmwareUpdate>
  </timedTaskList>
</taskSchedule>
The firmware update in the taskSchedule.xml

Different update styles

Player from IAdea needs a firmware.pkg. Their updates update the whole operating system.

If you specify an APK-file, the garlic player use it as software update. In this way, you can update the player or other software on your device.

Device Configuration

The taskSchedule.xml file for the device configurationlike the following:

<taskSchedule>
  <timedTaskList at="0" abortOnError="false">
    <firmwareUpdate id="123">
      <sourceURI>https://domain.tld/fig.xml</sourceURI>
      <contentType>x-configuration/xml</contentType>
      <contentLength>THE_CONFIG_FILE_LENGTH</contentLength>
      <contentChecksum>THE_CONFIG_FILE_MD5_CHECKSUM</contentChecksum>
      <checksumMethod>MD5</checksumMethod>
	</firmwareUpdate>
  </timedTaskList>
</taskSchedule>
The device configuration in the taskSchedule.xml

For the device configuration, we require a config.xml. This has the advantage that the config.xml can also be used on a USB-Stick with garlic-launcher.

The config.xml

The garlic player supports currently this configuration.

<configuration>
  <userPref>
    <prop name="net.wifi.enabled" value="true"/>
    <prop name="net.wifi.ssid" value="YOUR_SSID"/>
    <prop name="net.wifi.authentication" value="OPEN|WEP|WPAPSK|WPA2PSK"/>
    <prop name="net.wifi.password" value="YOUR_WIFI_PASSWORD"/>

    <prop name="hardware.audioOut.0.masterSoundLevel" value="0 until 100%"/>

    <prop name="content.bootFromServer" value="true"/>
    <prop name="content.serverUrl" value="server-uri"/>

  </userPref>
</configuration>