D0301
HTML Application SDK  A0.101
HTML App Supported Functionalities - SW Specs Overview

Table of Contents

Revision History

Date Owner Version Reason & Change
04 Aug 2016 Melek Uzun A0.1 Initial Format Change
18 Aug 2016 Tamer Temizer A0.2 Deleted obsolete information about CustomDownloadManager
01 Sep 2016 Mevlüt Mert Çil A0.3 Updated the explanation for registerDownloadURL function
30 Sep 2016 Elif Koca & Mücahit Arduç & Mevlüt Mert Çil & Tamer Temizer A0.4 Added code snippets to demonstrate the usage of the functions.
14 Oct 2016 Tamer Temizer A0.5 Moved Supported API Table to a separate page. Added ActivityMonitor, AsyncDataProvider, ChannelExtensions and TvKeyboardStatus to the documentation.
1 Nov 2016 Engin Yurek A0.6 Added exception messages of OIPF Plugins
24 Nov 2016 Günseli Çizmeli A0.7 Modified KeySet interface description in ApplicationManager
24 Nov 2016 Coşkun Deniz A0.8 Updated pvr related functions.
24 Nov 2016 Özgün Bal A0.9 Given wrong input parameter cases are mentioned for DatabaseManager, DateTimeSettings and SoundSettings. Information of enumeration is edited in StorageManager.
26 Nov 2016 Günseli Çizmeli A0.10 Added detailed information for KeySet interface in ApplicationManager
28 Nov 2016 Coşkun Deniz A0.11 Added isFormatRequired function that accepts path argument.
06 Dec 2016 Coşkun Deniz A0.12 Updated ActivityMonitor documentation.
22 Dec 2016 Engin Yürek A0.13 Updated ActivityMonitor documentation.
27 Dec 2016 Merve Albayrak A0.14 Updated StorageManager documentation.
09 Jan 2017 Coşkun Deniz A0.15 Removed unsupported plugins from documentation.
18 Jan 2017 Mücahit Arduç A0.16 Updated documentation of getListOfPlayableFiles function.
18 Feb 2017 Fatih Aslan A0.17 Updated documentation of InputManager externalSourceListUpdated
24 Feb 2017 Bahar Aksongur A0.18 Updated ApplicationManager, GeneralSettings, SoundSettings, DisplaySettings and PowerSettings documentations.
24 Feb 2017 Ece Oktay A0.19 Updated documentation of StorageManager getFileMd5.
27 Feb 2017 Fatih Okut A0.20 Updated documentation of DatabaseManager
7 Mar 2017 Coşkun Deniz A0.21 Updated code snippets of ChannelExtensions
9 Mar 2017 Fatih Aslan A0.22 Updated code snippets of SmartTvA_API
9 Mar 2017 Fatih Aslan A0.23 Updated code snippets of SmartTvA_API
13 Mar 2017 Bahar Aksongur A0.24 Updated code snippets of RemoteKeyGenerator, Rs232LanCommand, StandbyController.
20 Mar 2017 Fatih Okut A0.25 Updated code snippets for AsyncDataProvider, ChildLock and DatabaseManager.
20 Mar 2017 Günseli Çizmeli A0.26 Updated code snippets for SoftwareUpdateController.
20 Mar 2017 Merve Albayrak A0.27 Updated code snippets for PictureSettings, Screenshot, TVPreferences, TvKeyboardStatus.
23 Mar 2017 Merve Albayrak A0.28 Updated StorageManager documentation.
28 Mar 2017 Engin Yürek A0.29 Updated code snippets for ActivityMonitor, ChannellistHelper, DateTimeSettings.
05 Apr 2017 Merve Albayrak A0.30 Updated Screenshot documentation.
13 Apr 2017 Merve Albayrak A0.31 Updated StorageManager documentation for checkEmptySpace, checkTotalSize and isInternalUSB functions.
17 Apr 2017 Engin Yürek A0.32 Updated code snippets for InputManager.
18 Apr 2017 Merve Albayrak A0.33 Updated code snippets for MacId, NetworkManager and StorageManager.
26 Apr 2017 Engin Yürek A0.34 Updated DateTimeSettings documentation.
03 May 2017 Fatih Okut A0.35 Updated code snippets for CustomDownloadManager.
29 May 2017 Bahar Aksongur A0.36 Added new function to StorageManager.
13 Jun 2017 Ece Oktay A0.37 Added new functions to PictureSettings.
14 Jun 2017 Belgin Dönder A0.38 Added new functions to TvKeyboardStatus.
19 Jun 2017 Coşkun Deniz A0.39 Separated PowerSettings plugin documentation from GeneralSettings. Added new method to set sleep timer.
30 Jun 2017 Coşkun Deniz A0.40 Extended SoundSettings plugin.
05 Jul 2017 Coşkun Deniz A0.41 Extended SoundSettings plugin with balance, headphone volume, and headphone output methods. Existing get/setVolumeLevel methods will only operate on tv volume from now on.
05 Jul 2017 Engin Yürek A0.42 Extended DateTimeSettings plugin.
07 Jul 2017 Engin Yürek A0.43 Extended SoundSettings plugin.
10 Jul 2017 Fatih Okut A0.44 JSON events altered to functions.
10 Jul 2017 Coşkun Deniz A0.45 Extended SoundSettings plugin with bass gain, and hard of hearing methods.
11 Jul 2017 Coşkun Deniz A0.46 Added methods to get min/max volume levels to SoundSettings plugin. Updated documentation of setVolumeLevel.
11 Jul 2017 Fatih Aslan A0.47 Added new methods to PictureSettings plugin related to colour shift set/get and reset all picture settings to the default values.
12 Jul 2017 Coşkun Deniz A0.48 Extended PictureSettings plugin with picture mode, and contrast methods.
13 Jul 2017 Engin Yürek A0.49 Extended ChannellistHelper plugin. Added set channel list method.
14 Jul 2017 Fatih Okut A0.50 Extended PictureSettings plugin with dynamic contrast methods.
16 Jul 2017 Fatih Okut A0.51 Extended PictureSettings plugin with color temperature methods.
18 Jul 2017 Coşkun Deniz A0.52 Extended PictureSettings plugin with 3d left/right swap methods. Updated return values of 2d/3d related methods.
18 Jul 2017 Fatih Okut A0.53 Extended PictureSettings plugin with film mode and skin tone methods.
19 Jul 2017 Coşkun Deniz A0.54 Extended PictureSettings plugin with brightness, and sharpness methods.
20 Jul 2017 Coşkun Deniz A0.55 Extended PictureSettings plugin with colour, and backlight methods. Updated return of setContrastLevel, and setSkinToneLevel.
21 Jul 2017 Fatih Aslan A0.56 Extended GeneralSettings plugin with get room id method
28 Jul 2017 Fatih Okut A0.57 Extended PictureSettings plugin with white balance methods
30 Jul 2017 Fatih Aslan A0.58 Extended SoftwareUpdateController plugin with rf software update search start/stop methods
01 Aug 2017 Fatih Aslan A0.59 Updated SoftwareUpdateController plugin explanations and added new events regarding rf software update search
01 Aug 2017 Coşkun Deniz A0.60 Added code snippets for mheg functions.
10 Aug 2017 Ece Oktay A0.61 Removed documentation of StorageManager DVRFileStatusEvent.
22 Aug 2017 Mevlüt Mert Çil A0.62 Fixed the naming of the TV mode enumerations in General Settings.
29 Aug 2017 Coşkun Deniz A0.63 Added new plugin FileManager.
12 Sep 2017 Ece Oktay A0.64 Updated code snippets and enums of CustomDownloadManager.
13 Sep 2017 Coşkun Deniz A0.65 Updated documentation of MediaFile creationTime, and lastModifyTime attributes.
19 Sep 2017 Onur Göksel A0.66 Updated documentation of MediaFile TypeFile, TypeFolder and TypeInvalid attributes. MediaTypeRecord is removed
21 Sep 2017 Mücahit Arduç A0.67 added new plugin SystemInformation
22 Sep 2017 Onur Göksel A0.68 added getRamUsagePercentage and getCpuUsagePercentage functions to SystemInformation plugin
05 Oct 2017 Mücahit Arduç A0.69 added storage information for DatabaseManager plugin
30 Nov 2017 Mehmet Arif Cengiz A0.70 SORT_* tags are changed so that documentation can be sorted alphabetically
05 Dec 2017 Onur Göksel A0.71 added getPanelWidth and getPanelHeight functions to DisplaySettings plugin
06 Dec 2017 Onur Göksel A0.72 added sample codes for makeDir, getLastMountedUSBPath and format functions of StorageManager plugin
04 Jan 2018 Ece Oktay A0.73 Updated the documentation style for events and made spelling and punctuation changes in their descriptions
10 Jan 2018 Mehmet Arif Cengiz A0.74 Edited doxygen output scope operator
22 Feb 2018 Engin Yurek A0.75 Changed return type of GeneralSettings getRoomId function
2 March 2018 Belgin Dönder A0.76 Added new functions to Application Manager to handle scrollbar on start url.
29 March 2018 Bahar Aksongur A0.77 Edited CustomDownloadManager DOWNLOAD_FILE_WRITE_ERROR documentation
29 March 2018 Fatih Okut A0.78 Added Language Key to KeySet Plugin and made RemoteKeyGenerator refer to this page for keycodes.
28 May 2018 Bahar Aksongur A0.79 Extended StorageManager Plugin with getFileExistence and getFileSize methods.
11 June 2018 Bahar Aksongur A0.80 Extended getFileExistence method of StorageManager to check existence of directories in addition fo files.
11 July 2018 Mehmet Arif Cengiz A0.81 PDF documentation generation is arranged
11 July 2018 Onur Göksel A0.82 New key (VENDOR_VK_DEVICE_PREVIOUS:663) is added for keyset_others
28 September 2018 Mehmet Arif Cengiz A0.83 PDF document is rearranged. Footers and headers are added.
2 October 2018 Engin Yürek A0.84 ChannellistHelper plugin and CustomDownloadManager plugin documentations are updated
04 October 2018 Ece Oktay A0.85 List of keys in the KeySet Interface is extended.
08 October 2018 Engin Yürek A0.86 ChannellistHelper plugin documentation is updated.
10 October 2018 Ece Oktay A0.87 Modified the definition of the KeySet.setValue() method.
18 October 2018 Ece Oktay A0.88 Removed VK_CLEAR from list of keys.
22 October 2018 Fatih Aslan A0.89 Edited StorageManager mediaFileReadProgressEvent explanation.
22 October 2018 Ece Oktay A0.90 Modified documentation of KeySet Interface.
23 October 2018 Ece Oktay A0.91 Removed numeric representation of keycodes for KeySet Interface and added missing keycodes.
26 October 2018 Ece Oktay A0.92 Removed VENDOR_VK_DEVICE_MEDIA_GUIDE from KeySet Interface.
30 October 2018 Engin Yürek A0.93 ChannellistHelper plugin documentation is updated.
7 December 2018 Fatih Aslan A0.94 NetworkManager plugin joinWifiNetwork documentation is updated.
7 March 2019 Günseli Çizmeli A0.95 Supported API table is updated.
05 April 2019 Ece Oktay A0.96 Added definition for Screenshot.takeScreenshot() method screenshot_mode argument modes.
02 May 2019 Ece Oktay A0.97 Updated definition for Screenshot.takeScreenshot() method.
17 May 2019 Ece Oktay A0.98 Updated KeySet.setValue() method description.
27 May 2019 Ece Oktay A0.99 Added VENDOR_VK_DEVICE_CHANNELS for TV key on the remote controller.
25 June 2019 Özler Ergün A0.100 KeySet Interface is extended with VENDOR_VK_DEVICE_PAP and VENDOR_VK_DEVICE_MUSIC keys
18 September 2019 Vecihe Alataş A0.101 KeySet Interface is extended with VENDOR_VK_DEVICE_TEXTPATMIX and VENDOR_VK_DEVICE_MEDIABROWSER keys

Abbrevations

Opera Browser

Opera SDK V4.6.1 which has Chromium M44 in its core is the last stable version used in MB1XX TVs. Opera is upgrading itself continuously to support for working new features with the Opera Devices SDK.

Developers can use all the debug tools such as web inspector while they are developing HTML5, CSS3 applications. They can make a connection between their PC and TV browser then they can debug applications remotely. (Note: They need to be in same network. Also the Chrome/Chromium version on PC should be between 44-49. The connection cannot be established with later versions.)

Also, Opera has a TV emulator that allows web developers to test HTML5 application running the Opera Devices SDK. For more information: http://www.operasoftware.com/products/tv/tv-emulator

Platform Specifications

Opera browser that is mentioned above can work on all MB1XX products. Here is some details for MB120 platform;

Device has ~170 MB free disk capacity and ~690 MB heap size. This free storage area is using for various purposes. ~120 MB is separated for OAD operation. Opera browser is able to allocate maximum 110 MB from remaining area. Note that; if OAD starts, Opera cannot use its storages.

DatabaseManager plugin stores its data in persistent storage whose free size is about 20MB.

Opera has ~25 MB max disk cache size which is maximum limit of the HTTP data that will be cached on disk, but note that; the amount of cached data is not the same as the amount of disk space it will use.Opera sets local storage limit and persistent storage limit to ~10 MB. This memories is shared by all web apps running in the browser.Opera also sets temporary storage limit to ~65 MB. This memory is also shared by all web apps running in the browser, but it is important that each app can at most use up to 20% of this storage.

Opera browser “App Cache” uses %20 of temporary storage limit. Also, it can store maximum ~3000 cookie. To meet the limit, cookies are removed (oldest first). Cookies accessed in last 30 days are not removed regardless of max cookie value.

There are 3 ways for starting developed HTML5 based applications on MB1XX products.

After these operations, digital signage products will be opened with developed HTML/JS applications at startup.

SETURL Testtool Command

After connecting the TV to the PC using a serial cable or telnet, you can open the HTML tests using the terminal. You can type SETURL <load url="URL_PATH"> command or OPENURL "URL_PATH" command to open HTML page. URL_PATH can be both "http://" and "file://" protocols. OPENURL just starts the URL, but SETURL deselects the current channel and then opens the web page.

Note; This command will create a browser window that has 1920x1080 resolution for Signage products and 1280x720 resolution for other products.

Starturl.txt file

Developed applications can be opened by “starturl.txt” file. "starturl.txt" file should only contain a URL to the application. The URL should be on the first line of the text file. This file should be put into the root folder of a USB. Developer should do USBOPERATIONS for updating starturl correctly. In order to do that, one should enter the menu and then enter the numbers “4725” using the remote controller when the TV is opened. “Service Menu” screen will be seen. “USB Operations” which is the button at the bottom should be chosen. This will load the application link that was written in “starturl.txt” file into the TV. After closing the “Service Menu” screen, the application link will be opened when the Internet key button on the remote controller is pressed.

Note; This command will create a browser window that has 1920x1080 resolution for Signage products and 1280x720 resolution for other products.

Supported TV Functionalities

MB1XX TV almost has full functionality for running HTML5 based UI applications. Developed applications are able to communicate with device.

Firstly, some mandatory features such as OIPF, HBBTV standards should be supported to establish this communication. MB1XX supports big part of OIPF R2-Volume-5 v2.3 and HBBTV 1.5 standards.

Also, in some cases, applications might need custom functionalities that OIPF or HBBTV does not have. For these situations, there are some custom plugins to manage device. You can find details in Supported API Table

For OIPF specifications:
http://www.oipf.tv/web-spec/volume5.html

For HBBTV specifications:
https://www.hbbtv.org/wp-content/uploads/2015/07/HbbTV-specification-1-5_Aug2012.pdf

Note: OIPF specifications cover HBBTV standards

Summary of Capabilities

Opera Window Management

ApplicationManager custom plugin can be used for creating new windows or can be managed existing windows with it.

Picture Settings

Energy saving mode and 3D information can be queried, other settings are not implemented yet.

Language Settings

UI, Audio and Subtitle settings can be managed.

Parental Settings

OIPF ParentalRating functionality can be used. Internet lock status can be retrieved with TVPreferences plugin. Child lock status can be retrieved from ChildLock Plugin

Timers

There is a custom plugin for Reminders, OIPF functionality can be used for Records.

Date Time Settings

There is a custom plugin object for DateTimeSettings.

Network Settings

There is custom plugin object for NetworkManager.

Software Update

There is custom plugin object for SoftwareUpdateController.

General Settings

Active standby, Auto TV Off, HbbTV, TV mode, Mheg features can be managed by custom plugins.

Channel List

It can be managed with OIPF Video Broadcast object

Channel Info

OIPF supports.

Disc Info

OIPF supports.

Download Content

OIPF Download Manager is not supported. But, browser’s (Opera) File System API can be used for downloading files small enough to fit in the device’s internal storage. Please see the "Platform Specifications" section for storage limitations. For larger files, e.g, video files, please use the CustomDownloadManager plugin which writes to a connected USB drive instead of the device's internal storage.

Playback

Records or videos can be played with video/mp4 objects.

Power Management

StandbyController custom plugin can be used. This plugin provides function to query whether TV is in active standby or not. Also, it can enter/quit active standby state.

Source Input Management

InputManager custom plugin can be used.

Volume Management

Volume settings can be managed via Video Broadcast object or SoundSettings Custom Plugin can be used.

Database Usage

DatabaseManager Custom plugin can be used to save key/value pairs.

Internal Server

The internal web server can be used to access data served from usb disks. /mnt/ path is served. (e.g http://localhost/mnt/hd0a/myapplication.html)

Extra Features

OIPF Exceptions

OIPF plugins throw DOM exceptions with three different messages for different cases. Message types are listed below