Table of Contents

TVIP JavaScript API #2

Version API #2
Avaliable for firmwares version linux-qt 3.4.0 or higher.

Set-top-boxes TVIP display Web-content using WebKit engine.

JavaScript API in Set-top-boxes Tvip is based on the following main objects:

Objects do not require an explicit creation or any initialization and is accessible from any Web-page that is open in STB browser.

The main changes:

Description methods of objects JS API

TvipStb

bool addMountPoint(int id, bool temp, int type, String name, Object options);

Add or change mount point with indicated id. If temp equal false, then mount point will be saved after device reload, if true - then mount point will be deleted after reload or application restart.The possible mount points types (type): 1 - SMB, 2 - NFS. Point name at mount system (for example, at pop-up message): name. Parameter options set specific options as object:

SMB:

{
  "address": <address>,
  "folder": <folder>,
  "username": <username>,
  "password": <password>
}

Here, <address> - IP-adress, domain or NetBIOS-server name, <folder> - name of sharing content, <username> и <password> - optional authorization credentials.

NFS:

{
  "address": <address>,
  "folder": <folder>
}

Here, <address> - IP-adress or domain server name, <folder> - full path to sharing catalog.



int getApiVersion();

Returns API version.

String getCurrentLanguageCode();

Returns id of currently active interface language ('en', 'ru').

String getCurrentTimezone();

Returns currently time zone (for example, Europe/Moscow).

String getDisplayMode();

Returns current display mode (“1080i”, “1080p”, “720p”, “576i”, etc).

List getDirectoryDirs(String directory);

Returns directory list in a specified directory.

[ "Dir1", "Dir2", "Dir3" ]



List getDirectoryFiles(String directory);

Returns file objects list in a specified directory directory. Object contains file name and file size.

[
  {
    "name": "file1",
    "size": 1234567
  },
  
  {
    "name" : "file2",
    "size" : 44444
  }
]

name -file name, size - file size in bytes.



String getEnvValue(String name);

Gets variable from the browser store. If name not found, empty string returns.



String getMainMacAddress();

Returns main MAC address as string. Usually it's Ethernet interface MAC.



List getSmbWorkgroups();

Returns windows network workgroup list. Example:

['WORKGOUP', 'MYGROUP']



List getSmbServers(String group);

Performs servers search in specified group network group and returns NetBIOS server names
Example:

['MYPC', 'USER2']



List getSmbServerShares(String server);

Returns names of available network shares by NetBIOS or IP address defined by server parameter. Example:

['shared folder', 'Downloads']



List getStorageValues();

Returns all mounted devises (local and network)

[
 {
   "label": <label>,
   "path" : <ospath>,
   "fstype" : <file_system>,
   "writable": <writable>,
   "status": <status>,
   "size": <size>,
   "free" <free>
 },

]

Object fields:
label - Resource name(label) visible to user;
path - mount point
fstype - FS type (e.g. vfat, ntfs, ext2, ext3, nfs, cifs;
writable - write access (“1” - yes, “0” - no);
status - mount point status (“0” - need mount, “1” - mount in progress, “2” - mount successfully, “3” - mount error, “4” - umount in progress, “5” - unmounted, “6” - umount error),
size - FS size,
free - Available free space.



bool hasDirectory(String osPath);

Returns true, if directory osPath exists. Otherwise returns false.



bool hasFile(String osPath);

Returns true, if file (not directory) with defined name osPath exists, false otherwise.



void launchPreferences();

Launches system preferences Tvip.



void logDebug(String message);

Outputs debugging message to terminal(Linux) or logcat(Android).



void rebootSystem();

Reboots system.



void removeMountPoint(int id);

Removes mount point from mount manager. id - Mount point identifier



void setColorKey(int color);

Setups UI color that could be consider as transparent for video layer. color in RGB model.



void setCustomHeader(String header, String value);

Defines HTTP-header for browser. header - header name, value - header value. If value is empty, previously defined header will be purged.



void setEnvValue(String name, String value);

Saves variable in browsers persistent storage. All variables are available for all browser pages.



void setDirectoryListFilters(String filters);

Setups filename filter for getDirectoryFiles and getDirectoryDirs. | Will be count as delimiter.
? and * applicable as well.
e.g. *.avi|*.mp3



void setPassKeyKeyboard(bool enabled);

If enabled=true, Cursor key press(on remote) event will be pass to Java Script directly, instead of default virtual keyboard handler.



void setPassKeyMenu(bool enabled);

If enabled==true, Remote “Menu” button press event will be pass to JS, instead of Tvip menu call.



void setPassKeySysInfo(bool enabled);

If enabled==true, remote press “S.INFO” event will be passed to JS, instead of Tvip system info call.



void setPassKeySettings(bool enabled);

If enabled==true, remote press “Settings” will be passed to JS, instead of Tvip settings menu call.



void setStandBy(bool enabled);

Switches STB in sleep mode (enabled==true) or return it to operation mode (enabled==false).

void showVirtualKeyboard(bool show);

Virtual keyboard show (show=true) or hide (show=false).



void reset();

Resets settings:
transparent color;
HTTP-header;
file filter.

TvipPlayer

void reset();

Resets playback. If we don't need playback after page change this routine should be called.



void playUrl (String url, String mode);

Starts playback defined URL(local path also welcome).

Parameter mode can be:

vod - URL contains VOD-file (with final length specified);

live - URL contains live TV-stream (Timeshift and DVR are welcome);

Examples:

playUrl ("udp://239.1.1.1", "live"); // Start play multicast-stream;
playUrl ("http://domain.tv/movies/movie.mkv", ""); // Start play file via http;
playUrl ("http://domain.tv/hls/playlist.m3u8", ""); // Start play HLS-video;



void setVideoWindow(int x, int y, int w, int x, boolean onTop);

Sets up video window size. Position seting up according current video out mode.

If w = 0 и h = 0, Full screen mode used.

If onTop = true, video window drows above UI.



void stop();

Stops playback if any.



void pause();

sets playback on pause.



void unpause();

Continues playback.



void seek(int position);

Sets playback position in milliseconds. Keep in mind that beginning of playback is minPosition see below



int getCurrentPositionMsec();

Returns current playback position.



int getMinPositionMsec();

Returns minimal playback position (e.g. content beginning)



int getMaxPositionMsec();

Returns maximum playback position (e.g. content ends).



void setVolume();

Sets volume level from 0 to 100



int getVolume();

Returns current volume level from 0 to 100



void setMute(bool mute);

Turns off (mute=true) or turns on (mute=false) sound.



bool getMute();

Returns true, if muted, otherwise false;



String getContainerType();

Returns the type of container being played (e.g. mpegts, avi, matroska)



int getStreamsCount();

Returns content being played media streams count (audio, video, subtitles etc)



Object getStreamInfo(int index);

Returns an object with media stream info

{
  "type": <videotype>,
  "id": <id>,
  "codec": <codec>,
  "lang" : <lang>
}

Here:
videotype - media stream type;
“v” - video,
“a” - audio,
“s” - subtitles;
id - PID;
codec - codec name;
lang - Audio stream ISO 639 language code.



int getCurrentVideoStreamIndex();

Returns currently played video stream index.



int getCurrentAudioStreamIndex();

Returns currently played audio stream index.



void setCurrentAudioStreamIndex(int index);

Sets active audio stream (index).



void setAspectRatio (String ratio)

Sets aspect ratio.
Available values:
“box” - Original
“full” - Full screen
“zoom” - Zoomed.

TvipRecorder

String addRecord(String name, String url, String path, String start, String end);

Adds new record job.
Here:
name - record name,
url - stream URL (MPEGTS via UDP, RTP, HTTP are supported.)
path - Local path to record,
start и end - start/stop time in UNIX TIMESTAMP or “YYYYMMDDTHHmmss” format.
Returns unique record job id.

bool cancelRecord(String id, bool removeFile);

Removes record job by id. If removeFile=true, stream stored to storage also will be removed.
Returns true in success.

void updateStartEndTime(String id, String start, String end);

Updates start time or(and) end time of recording id. If we need to set only one parameter leave second one empty.
Fromat for start end see at addRecord



List getRecordIds();

Returns currently added jobs list.



Object getRecord(id);

Returns object (by id) with record parameters.

{
  "id": <id>,
  "name": <name>,
  "startTime": <start>,
  "endTime" : <end>,
  "url" : <url>,
  "status" : <status>
}

Here:
<id>, <name>, <start>, <end> - corresponds with addRecord routine parameter;
<status> - record status:
“waiting” - waiting for record,
“recording” - record in progress,
“finished” - record finished,
“error” - error occurred.



TvipEvent

TvipEvent consist of Callback functions, which may be overloaded for events capturing.

onPlayerStateChange(int oldState, int newState);

Calls on mediaplayer playback status change. oldState - previous player status, newState - new player status.

Player possible status:

onSystemEvent(String codename, Object args);

On system event.
Examples codename: