      1 /*!
      2  * ============================================================================
      3  *   Creative Innovation Center, LG ELECTRONICS INC., SEOUL, KOREA
      4  *   Copyright(c) 2018 by LG Electronics Inc.
      5  *
      6  *   Release Version : 1.24.6.5901
      7  * ============================================================================
      8  */
      9
     10 /**
     11  * Event for a binding ready.<br>
     12  * It is invoked whenever a binding is ready to control.<br>
     13  *
     14  * @name iot_binding_ready
     15  * @event
     16  * @since 1.22.2
     17  * @see
     18  * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
     19  * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
     20  * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
     21  * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
     22  * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
     23  * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
     24  * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
     25  * <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a><br>
     26  * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
     27  * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
     28  * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
     29  * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
     30  * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
     31  * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
     32  * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
     33  * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
     34  * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
     35  * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
     36  * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
     37  * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
     38  * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
     39  * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
     40  * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
     41  * @example
     42  * document.addEventListener(
     43  *      "iot_binding_ready",
     44  *      function (param) {
     45  *          // {String} param.bindingId - binding ID ready to conrol.
     46  *          console.log(
     47  *              "Event 'iot_binding_ready' is received.\n" +
     48  *              "bindingId = " + param.bindingId + "\n" +
     49  *          );
     50  *      },
     51  *      false
     52  * );
     53  */
     54
     55 /**
     56  * Event for the discovery of a thing.<br>
     57  * Its listener will be invoked whenever a thing is discovered in the bridge "scan" mode.<br>
     58  *
     59  * @name iot_thing_discovered
     60  * @event
     61  * @since 1.22.2
     62  * @see
     63  * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
     64  * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
     65  * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
     66  * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
     67  * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
     68  * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
     69  * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
     70  * <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a><br>
     71  * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
     72  * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
     73  * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
     74  * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
     75  * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
     76  * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
     77  * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
     78  * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
     79  * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
     80  * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
     81  * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
     82  * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
     83  * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
     84  * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
     85  * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
     86  * @example
     87  * document.addEventListener(
     88  *      "iot_thing_discovered",
     89  *      function (param) {
     90  *          // {String} param.bindingId - binding ID of the bridge a thing is discovered.
     91  *          // {String} param.thingUid - thing UID to be discovered.
     92  *          // {String} param.thingId - thing ID.
     93  *          // {String} param.label - thing label.
     94  *          console.log(
     95  *              "Event 'iot_thing_discovered' is received.\n" +
     96  *              "bindingId = " + param.bindingId + "\n" +
     97  *              "thingUid = " + param.thingUid + "\n" +
     98  *              "thingId = " + param.thingId + "\n" +
     99  *              "label = " + param.label
    100  *          );
    101  *      },
    102  *      false
    103  * );
    104  */
    105
    106 /**
    107  * Event for the status change of a bridge.<br>
    108  * Its listener will be invoked whenever a bridge status is changed.<br>
    109  *
    110  * @name iot_bridge_status_changed
    111  * @event
    112  * @since 1.22.2
    113  * @see
    114  * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    115  * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    116  * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
    117  * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
    118  * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
    119  * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
    120  * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
    121  * <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a><br>
    122  * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
    123  * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
    124  * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
    125  * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
    126  * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
    127  * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
    128  * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
    129  * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
    130  * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
    131  * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
    132  * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
    133  * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
    134  * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
    135  * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
    136  * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
    137  * @example
    138  * document.addEventListener(
    139  *      "iot_bridge_status_changed",
    140  *      function (param) {
    141  *          // {String} param.bridgeUid - bridge UID.
    142  *          // {String} param.status - the bridge status after the change. "scan" for scan status, "normal" for normal (non-scan) status.
    143  *          console.log("Event 'iot_bridge_status_changed' is received.\n" +
    144  *              "bridgeUid = " + param.bridgeUid + "\n" +
    145  *              "status = " + param.status
    146  *          );
    147  *      },
    148  *      false
    149  * );
    150  */
    151
    152 /**
    153  * Event for the registration of a new thing.<br>
    154  * Its listener will be invoked whenever a thing is registered in the bridge "scan" mode.<br>
    155  *
    156  * @name iot_thing_registered
    157  * @event
    158  * @since 1.22.2
    159  * @see
    160  * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    161  * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    162  * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
    163  * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
    164  * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
    165  * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
    166  * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
    167  * <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a><br>
    168  * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
    169  * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
    170  * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
    171  * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
    172  * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
    173  * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
    174  * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
    175  * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
    176  * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
    177  * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
    178  * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
    179  * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
    180  * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
    181  * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
    182  * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
    183  * @example
    184  * document.addEventListener(
    185  *      "iot_thing_registered",
    186  *      function (param) {
    187  *          // {String} param.thingUid : new thing UID
    188  *          console.log(
    189  *              "Event 'iot_thing_registered' is received.\n" +
    190  *              "thingUid = " + param.thingUid
    191  *          );
    192  *      },
    193  *      false
    194  * );
    195  */
    196
    197 /**
    198  * Event for the rejection to register a discovered thing.<br>
    199  * Its listener will be invoked whenever a discovered thing is rejected to register in the bridge "scan" mode.<br>
    200  *
    201  * @name iot_thing_rejected
    202  * @event
    203  * @since 1.22.2
    204  * @see
    205  * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    206  * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    207  * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
    208  * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
    209  * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
    210  * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
    211  * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
    212  * <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a><br>
    213  * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
    214  * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
    215  * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
    216  * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
    217  * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
    218  * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
    219  * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
    220  * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
    221  * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
    222  * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
    223  * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
    224  * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
    225  * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
    226  * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
    227  * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
    228  * @example
    229  * document.addEventListener(
    230  *      "iot_thing_rejected",
    231  *      function (param) {
    232  *          // {String} param.thingUid - thing UID.
    233  *          console.log(
    234  *              "Event 'iot_thing_rejected' is received.\n" +
    235  *              "thingUid = " + param.thingUid
    236  *          );
    237  *      },
    238  *      false
    239  * );
    240  */
    241
    242 /**
    243  * Event for the report of a component of a thing.<br>
    244  * Its listener will be invoked whenever a binding reports the component.<br>
    245  *
    246  * @name iot_component_reported
    247  * @event
    248  * @since 1.22.2
    249  * @see
    250  * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    251  * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    252  * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
    253  * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
    254  * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
    255  * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
    256  * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
    257  * <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a><br>
    258  * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
    259  * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
    260  * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
    261  * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
    262  * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
    263  * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
    264  * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
    265  * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
    266  * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
    267  * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
    268  * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
    269  * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
    270  * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
    271  * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
    272  * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
    273  * @example
    274  * document.addEventListener(
    275  *      "iot_component_reported",
    276  *      function (param) {
    277  *          // {String} param.thingUid - thing UID.
    278  *          // {String} param.componentId - component ID.
    279  *          // {Object} param.fromValue - |ComponentValue|, // previous component value of changed
    280  *          // {Object} param.toValue - |ComponentValue|, // later component value of changed
    281  *              // {Object} |ComponentValue| - json object of a component value
    282  *              //     {
    283  *              //       "valueType": |string|, // "Unknown", "String", "Boolean", "Variables", "Double", "Float", "Int8", "Int16", "Int32", "Int64", "UInt8", "UInt16", "UInt32", "UInt64"
    284  *              //       "value": |string|, // value
    285  *              //       "additionalValue": |string|, // custom additional value as a string
    286  *              //     }
    287  *          console.log(
    288  *              "Event 'iot_component_reported' is received.\n" +
    289  *              "thingUid = " + param.thingUid + "\n" +
    290  *              "componentId = " + param.componentId + "\n" +
    291  *              "fromValue = " + JSON.stringify(param.fromValue) + "\n" +
    292  *              "toValue = " + JSON.stringify(param.toValue)
    293  *          );
    294  *      },
    295  *      false
    296  * );
    297  */
    298
    299 /**
    300  * Event for the unregistration of a registered thing.<br>
    301  * Its listener will be invoked whenever a registered thing is unregistered.<br>
    302  *
    303  * @name iot_thing_unregistered
    304  * @event
    305  * @since 1.22.2
    306  * @see
    307  * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    308  * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    309  * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
    310  * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
    311  * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
    312  * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
    313  * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
    314  * <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a><br>
    315  * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
    316  * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
    317  * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
    318  * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
    319  * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
    320  * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
    321  * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
    322  * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
    323  * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
    324  * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
    325  * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
    326  * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
    327  * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
    328  * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
    329  * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
    330  * @example
    331  * document.addEventListener(
    332  *      "iot_thing_unregistered",
    333  *      function (param) {
    334  *          // {String} param.thingUid : thing UID.
    335  *          console.log(
    336  *              "Event 'iot_thing_unregistered' is received.\n" +
    337  *              "thingUid = " + param.thingUid
    338  *          );
    339  *      },
    340  *      false
    341  * );
    342  */
    343
    344 /**
    345  * Event for the change of a thing meta data.<br>
    346  * Its listener will be invoked whenever a meta data of a thing is changed.<br>
    347  *
    348  * @name iot_thing_meta_data_changed
    349  * @event
    350  * @since 1.22.2
    351  * @see
    352  * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    353  * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    354  * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
    355  * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
    356  * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
    357  * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
    358  * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
    359  * <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a><br>
    360  * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
    361  * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
    362  * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
    363  * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
    364  * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
    365  * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
    366  * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
    367  * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
    368  * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
    369  * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
    370  * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
    371  * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
    372  * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
    373  * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
    374  * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
    375  * @example
    376  * document.addEventListener(
    377  *      "iot_thing_meta_data_changed",
    378  *      function (param) {
    379  *          // {String} param.thingUid - UID of the changed thing
    380  *          // {Object} param.thingMetaData - |ThingMetaData|, // later meta data of changed
    381  *              // {Object} |ThingMetaData| - json object of the meta data of a thing
    382  *              //     {
    383  *              //       "hardwareVersion": |string|,  // thing hardware version
    384  *              //       "softwareVersion": |string|, // thing software version
    385  *              //       "registrationDate": |string|, // date the thing was registered
    386  *              //       "label": |string|, //thing label
    387  *              //       "modelName": |string|, //thing model name
    388  *              //       "manufacturer": |string|, //thing manufacturer
    389  *              //       "nickname": |string|, //thing nickname
    390  *              //     }
    391  *          console.log(
    392  *              "Event 'iot_thing_meta_data_changed' is received.\n" +
    393  *              "thingUid = " + param.thingUid
    394  *              "thingMetaData = " + JSON.stringify(param.thingMetaData)
    395  *          );
    396  *      },
    397  *      false
    398  * );
    399  */
    400
    401 /**
    402  * Event for the result of <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a>.<br>
    403  * Its listener will be invoked whenever the result of <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a> is received.<br>
    404  *
    405  * @name iot_set_component_result_received
    406  * @event
    407  * @since 1.22.2
    408  * @see
    409  * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    410  * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    411  * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
    412  * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
    413  * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
    414  * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
    415  * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
    416  * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
    417  * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
    418  * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
    419  * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
    420  * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
    421  * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
    422  * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
    423  * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
    424  * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
    425  * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
    426  * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
    427  * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
    428  * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
    429  * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
    430  * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
    431  * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
    432  * @example
    433  * document.addEventListener(
    434  *      "iot_set_component_result_received",
    435  *      function (param) {
    436  *          // {Boolean} param.result - true for the success, otherwise false.
    437  *          // {String} param.callId - callId of the callId in <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a>.
    438  *          console.log(
    439  *              "Event 'iot_set_component_result_received' is received.\n" +
    440  *              "result = " + param.result + "\n" +
    441  *              "callId = " + param.callId
    442  *          );
    443  *      },
    444  *      false
    445  * );
    446  */
    447
    448 /**
    449  * Event for the change of IoT framework status.<br>
    450  * Its listener will be invoked whenever the IoT framework status is changed.<br>
    451  *
    452  * @name iot_framework_status_changed
    453  * @event
    454  * @since 1.22.2
    455  * @see
    456  * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    457  * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    458  * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
    459  * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
    460  * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
    461  * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
    462  * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
    463  * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
    464  * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
    465  * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
    466  * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
    467  * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
    468  * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
    469  * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
    470  * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
    471  * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
    472  * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
    473  * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
    474  * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
    475  * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
    476  * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
    477  * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
    478  * @example
    479  * document.addEventListener(
    480  *      "iot_framework_status_changed",
    481  *      function (param) {
    482  *          // {String} param.status - "off" : framework is off, "initializing" : framework is initializing, "ready" : framework is ready.
    483  *          console.log(
    484  *              "Event 'iot_framework_status_changed' is received.\n" +
    485  *              "status = " + param.status
    486  *          );
    487  *      },
    488  *      false
    489  * );
    490  */
    491
    492 /**
    493  * Event for the action result of IoT framework status.<br>
    494  * Its listener will be invoked whenever the factory reset for core DB and binding DBs is requested.<br>
    495  *
    496  * @name iot_factory_reset_result_received
    497  * @event
    498  * @since 1.22.2
    499  * @see
    500  * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    501  * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    502  * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
    503  * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
    504  * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
    505  * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
    506  * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
    507  * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
    508  * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
    509  * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
    510  * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
    511  * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
    512  * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
    513  * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
    514  * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
    515  * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
    516  * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
    517  * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
    518  * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
    519  * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
    520  * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
    521  * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
    522  * @example
    523  * document.addEventListener(
    524  *      "iot_factory_reset_result_received",
    525  *      function (param) {
    526  *          // {Array} param.factoryResetResultList - |FactoryResetResult| // list of factory reset results.
    527  *              // {Object} |FactoryResetResult| - json object of a factory reset result.
    528  *              //     {
    529  *              //       "id": |string|,  // "Core" or binding ID
    530  *              //       "factoryResetResult": |boolean|, // facotry reset result
    531  *              //     }
    532  *          console.log(
    533  *              "Event 'iot_factory_reset_result_received' is received.\n" +
    534  *              "factory reset result list = " + JSON.stringify(param.factoryResetResultList)
    535  *          );
    536  *      },
    537  *      false
    538  * );
    539  */
    540
    541 /**
    542  * Event for the change of STT (Speech-To-Text) status.<br>
    543  * Its listener will be invoked whenever STT status is changed.<br>
    544  *
    545  * @name speech_to_text_status_changed
    546  * @event
    547  * @since 1.22.2
    548  * @see
    549  * <a href="hcap.speech.html#.setSpeechRecognition">hcap.speech.setSpeechRecognition()</a><br>
    550  * <a href="hcap.speech.html#.getSpeechRecognition">hcap.speech.getSpeechRecognition()</a><br>
    551  * <a href="hcap.speech.html#.decideHost">hcap.speech.decideHost()</a><br>
    552  * @example
    553  * document.addEventListener(
    554  *      "speech_to_text_status_changed",
    555  *      function (param) {
    556  *          // {String} param.status - "processing" : STT is processing. "ready" : STT is completed.
    557  *          // {String} param.actionData - STT intent parameter when STT status is changed from "processing" to "ready".
    558  *          // {String} param.serviceType - STT result category when STT status is changed from "processing" to "ready".
    559  *          // {String} param.actionType - STT result intent when STT status is changed from "processing" to "ready".
    560  *          // {String} param.userUtterance - STT result text when STT status is changed from "processing" to "ready".
    561  *          console.log(
    562  *              "Event 'speech_to_text_status_changed' is received.\n" +
    563  *              "status = " + param.status
    564  *              "action data = " + param.actionData
    565  *              "service type = " + param.serviceType
    566  *              "action type = " + param.actionType
    567  *              "user utterance = " + param.userUtterance
    568  *          );
    569  *      },
    570  *      false
    571  * );
    572  */
    573
    574 /**
    575  * Event for the channel change.<br>
    576  * Its listener will be invoked whenever the current channel is changed.
    577  *
    578  * @name channel_changed
    579  * @event
    580  * @since 1.3.1
    581  * @see
    582  * <a href="hcap.channel.html#.getCurrentChannel">hcap.channel.getCurrentChannel()</a><br>
    583  * <a href="hcap.channel.html#.requestChangeCurrentChannel">hcap.channel.requestChangeCurrentChannel()</a>
    584  * @example
    585  * document.addEventListener(
    586  *      "channel_changed",
    587  *      function (param) {
    588  *          // {Boolean} param.result - true if the current channel is changed successfully, else false.
    589  *          // {String} param.errorMessage - in case of failure, this message provides the details.
    590  *          console.log(
    591  *              "Event 'channel_changed' is received.\n" +
    592  *              "Result = " + param.result + "\n" +
    593  *              "Error message = " + param.errorMessage
    594  *          );
    595  *      },
    596  *      false
    597  * );
    598  */
    599
    600 /**
    601  * Event for the channel status change.<br>
    602  * Its listener will be invoked whenever the current channel status is changed.
    603  *
    604  * @name channel_status_changed
    605  * @event
    606  * @since 1.14.0
    607  * @see
    608  * <a href="hcap.channel.html#.getCurrentChannel">hcap.channel.getCurrentChannel()</a><br>
    609  * @example
    610  * document.addEventListener(
    611  *      "channel_status_changed",
    612  *      function yourEventListener() {
    613  *          console.log(
    614  *              "Event 'channel_status_changed' is received"
    615  *          );
    616  *      },
    617  *      false
    618  * );
    619  */
    620
    621 /**
    622  * Event for the carousel data cache.<br>
    623  * Its listener will be invoked whenever a carousel data is cached.<br>
    624  * This event is caused by <a href="hcap.carousel.html#.requestCacheCarouselData">hcap.carousel.requestCacheCarouselData()</a>.
    625  * @name carousel_data_cached
    626  * @event
    627  * @since 1.3.1
    628  * @see
    629  * <a href="hcap.carousel.html#.clearCarouselDataCache">hcap.carousel.clearCarouselDataCache()</a><br>
    630  * <a href="hcap.carousel.html#.isCarouselDataCached">hcap.carousel.isCarouselDataCached</a><br>
    631  * <a href="hcap.carousel.html#.requestCacheCarouselData">hcap.carousel.requestCacheCarouselData</a>
    632  * @example
    633  * document.addEventListener(
    634  *      "carousel_data_cached",
    635  *      function (param) {
    636  *          // {Boolean} param.result - true if a carousel data is cached successfully, else false.
    637  *          // {String} param.errorMessage - in case of failure, this message provides the details.
    638  *          // {String} param.url - url of the cached carousel data.
    639  *          // {String} param.cachePath - path where the carousel data is cached.
    640  *          console.log(
    641  *              "Event 'carousel_data_cached' is received.\n" +
    642  *              "Result = " + param.result + "\n" +
    643  *              "Error message = " + param.errorMessage + "\n" +
    644  *              "URL = " + param.url + "\n" +
    645  *              "Cache Path = " + param.cachePath
    646  *          );
    647  *      },
    648  *      false
    649  * );
    650  */
    651
    652 /**
    653  * Event for receiving UDP data from remote.<br>
    654  * Its listener will be invoked whenever UDP data is received.<br>
    655  *
    656  * @name udp_data_received
    657  * @event
    658  * @since 1.6.0
    659  * @see
    660  * <a href="hcap.socket.html#.openUdpDaemon">hcap.socket.openUdpDaemon()</a><br>
    661  * <a href="hcap.socket.html#.closeUdpDaemon">hcap.socket.closeUdpDaemon()</a><br>
    662  * @example
    663  * document.addEventListener(
    664  *      "udp_data_received",
    665  *      function (param) {
    666  *          // {Number} param.port - port number of UDP connection through which UDP data is received.
    667  *          // {String} param.data - received UDP data.
    668  *          console.log(
    669  *              "Event 'udp_data_received' is received.\n" +
    670  *              "port = " + param.port + "\n" +
    671  *              "data = " + param.data
    672  *          );
    673  *      },
    674  *      false
    675  * );
    676  */
    677
    678 /**
    679  * Event for receiving TCP data from remote.<br>
    680  * Its listener will be invoked whenever TCP data is received.<br>
    681  *
    682  * @name tcp_data_received
    683  * @event
    684  * @since 1.10.1
    685  * @see
    686  * <a href="hcap.socket.html#.openTcpDaemon">hcap.socket.openTcpDaemon()</a><br>
    687  * <a href="hcap.socket.html#.closeTcpDaemon">hcap.socket.closeTcpDaemon()</a><br>
    688  * @example
    689  * document.addEventListener(
    690  *      "tcp_data_received",
    691  *      function (param) {
    692  *          // {Number} param.port - port number of TCP connection through which TCP data is received.
    693  *          // {String} param.data - received TCP data.
    694  *          console.log(
    695  *              "Event 'tcp_data_received' is received.\n" +
    696  *              "port = " + param.port + "\n" +
    697  *              "data = " + param.data
    698  *          );
    699  *      },
    700  *      false
    701  * );
    702  */
    703
    704 /**
    705  * Event for receiving the MPI data.<br>
    706  * Its listener will be invoked whenever MPI data is received.<br>
    707  * This event is caused by <a href="hcap.mpi.html#sendMpiData">hcap.mpi.sendMpiData()</a>.
    708  *
    709  * @name mpi_data_received
    710  * @event
    711  * @since 1.3.1
    712  * @see
    713  * <a href="hcap.mpi.html#.sendAndReceiveMpiData">hcap.mpi.sendAndReceiveMpiData</a><br>
    714  * <a href="hcap.mpi.html#.sendMpiData">hcap.mpi.sendMpiData()</a>
    715  * @example
    716  * document.addEventListener(
    717  *      "mpi_data_received",
    718  *      function (param) {
    719  *          // {Boolean} param.result - true if MPI data is received successfully, else false.
    720  *          // {String} param.errorMessage - in case of failure, this message provides the details.
    721  *          // {Number} param.id - request ID that is defined between application and MPI headend. (0 ~ 255)
    722  *          // {Number} param.sequence - sequence number of packet. (0 ~ 255).
    723  *          // {String} param.packet - packet data that is transferred to the MPI card. (0 ~ 32)
    724  *          console.log(
    725  *              "Event 'mpi_data_received' is received.\n" +
    726  *              "Result = " + param.result + "\n" +
    727  *              "Error message = " + param.errorMessage + "\n" +
    728  *              "ID = " + param.id + "\n" +
    729  *              "Sequence = " + param.sequence + "\n" +
    730  *              "Packet = " + param.packet
    731  *          );
    732  *      },
    733  *      false
    734  * );
    735  */
    736
    737 /**
    738  * Event for receiving the CEC data.<br>
    739  * Its listener will be invoked whenever CEC data is received.<br>
    740  *
    741  * @name cec_data_received
    742  * @event
    743  * @since 1.24.0
    744  * @example
    745  * document.addEventListener(
    746  *      "cec_data_received",
    747  *      function (param) {
    748  *          // {String} param.data - data that is transferred from the CEC device
    749  *          console.log(
    750  *              "Event 'cec_data_received' is received.\n" +
    751  *              "Data = " + param.data
    752  *          );
    753  *      },
    754  *      false
    755  * );
    756  */
    757
    758 /**
    759  * Event for the property change.<br>
    760  * Its listener will be invoked whenever a property is changed.
    761  *
    762  * @name property_changed
    763  * @event
    764  * @since 1.3.1
    765  * @see
    766  * <a href="hcap.property.html#.getProperty">hcap.property.getProperty()</a><br>
    767  * <a href="hcap.property.html#.setProperty">hcap.property.setProperty()</a>
    768  * @example
    769  * document.addEventListener(
    770  *      "property_changed",
    771  *      function (param) {
    772  *          // {String} param.key - property that was changed.
    773  *          console.log(
    774  *              "Event 'property_changed' is received.\n" +
    775  *              "Changed Property = " + param.key
    776  *          );
    777  *      },
    778  *      false
    779  * );
    780  */
    781
    782 /**
    783  * Event for the volume level change.<br>
    784  * Its listener will be invoked whenever the volume level is changed.
    785  *
    786  * @name volume_level_changed
    787  * @event
    788  * @since 1.3.1
    789  * @see
    790  * <a href="hcap.volume.html#.getVolumeLevel">hcap.volume.getVolumeLevel()</a><br>
    791  * <a href="hcap.volume.html#.setVolumeLevel">hcap.volume.setVolumeLevel()</a>
    792  * @example
    793  * document.addEventListener(
    794  *      "volume_level_changed",
    795  *      function yourEventListener() {
    796  *          console.log(
    797  *              "Event 'volume_level_changed' is received"
    798  *          );
    799  *      },
    800  *      false
    801  * );
    802  */
    803
    804 /**
    805  * Event for the external input change.<br>
    806  * Its listener will be invoked whenever the external input is changed.
    807  *
    808  * @name external_input_changed
    809  * @event
    810  * @since 1.3.1
    811  * @see
    812  * <a href="hcap.externalinput.html#.getCurrentExternalInput">hcap.externalinput.getCurrentExternalInput()</a><br>
    813  * <a href="hcap.externalinput.html#.isExternalInputConnected">hcap.externalinput.isExternalInputConnected()</a><br>
    814  * <a href="hcap.externalinput.html#.setCurrentExternalInput">hcap.externalinput.setCurrentExternalInput()</a>
    815  * <a href="hcap.externalinput.html#.getExternalInputList">hcap.externalinput.getExternalInputList()</a><br>
    816  * @example
    817  * document.addEventListener(
    818  *      "external_input_changed",
    819  *      function() {
    820  *          console.log("Event 'external_input_changed' is received.");
    821  *      },
    822  *      false
    823  * );
    824  */
    825
    826 /**
    827  * Event for the audio language change of the current channel.<br>
    828  * Its listener will be invoked whenever the audio language of the current channel is changed.
    829  *
    830  * @name current_channel_audio_language_changed
    831  * @event
    832  * @since 1.3.1
    833  * @see
    834  * <a href="hcap.channel.html#.getCurrentChannelAudioLanguageIndex">hcap.channel.getCurrentChannelAudioLanguageIndex()</a><br>
    835  * <a href="hcap.channel.html#.setCurrentChannelAudioLanguageIndex">hcap.channel.setCurrentChannelAudioLanguageIndex()</a><br>
    836  * <a href="hcap.channel.html#.getCurrentChannelAudioLanguageList">hcap.channel.getCurrentChannelAudioLanguageList()</a>
    837  * @example
    838  * document.addEventListener(
    839  *      "current_channel_audio_language_changed",
    840  *      function() {
    841  *          console.log("Event 'current_channel_audio_language_changed' is received.");
    842  *      },
    843  *      false
    844  * );
    845  */
    846
    847 /**
    848  * Event for the subtitle change of the current channel.<br>
    849  * Its listener will be invoked whenever the subtitle of the current channel is changed.
    850  *
    851  * @name current_channel_subtitle_changed
    852  * @event
    853  * @since 1.3.1
    854  * @see
    855  * <a href="hcap.channel.html#.getCurrentChannelSubtitleIndex">hcap.channel.getCurrentChannelSubtitleIndex()</a><br>
    856  * <a href="hcap.channel.html#.setCurrentChannelSubtitleIndex">hcap.channel.setCurrentChannelSubtitleIndex()</a><br>
    857  * <a href="hcap.channel.html#.getCurrentChannelSubtitleList">hcap.channel.getCurrentChannelSubtitleList()</a>
    858  * @example
    859  * document.addEventListener(
    860  *      "current_channel_subtitle_changed",
    861  *      function() {
    862  *          console.log("Event 'current_channel_subtitle_changed' is received.");
    863  *      },
    864  *      false
    865  * );
    866  */
    867
    868 /**
    869  * Event for the power mode change.<br>
    870  * Its listener will be invoked whenever the power mode is changed.
    871  *
    872  * @name power_mode_changed
    873  * @event
    874  * @since 1.3.1
    875  * @see
    876  * <a href="hcap.power.html#.getPowerMode">hcap.power.getPowerMode()</a><br>
    877  * <a href="hcap.power.html#.setPowerMode">hcap.power.setPowerMode()</a>
    878  * <a href="hcap.power.html#.isWarmUpdate">hcap.power.isWarmUpdate()</a>
    879  * @example
    880  * document.addEventListener(
    881  *      "power_mode_changed",
    882  *      function() {
    883  *          console.log("Event 'power_mode_changed' is received");
    884  *      },
    885  *      false
    886  * );
    887  */
    888
    889 /**
    890  * Event for the start channel change.<br>
    891  * Its listener will be invoked whenever the start channel is changed.
    892  *
    893  * @name start_channel_changed
    894  * @event
    895  * @since 1.3.1
    896  * @see
    897  * <a href="hcap.channel.html#.getStartChannel">hcap.channel.getStartChannel()</a><br>
    898  * <a href="hcap.channel.html#.setStartChannel">hcap.channel.setStartChannel()</a>
    899  * @example
    900  * document.addEventListener(
    901  *      "start_channel_changed",
    902  *      function() {
    903  *          console.log("Event 'start_channel_changed' is received");
    904  *      },
    905  *      false
    906  * );
    907  */
    908
    909 /**
    910  * Event for media player's status change.<br>
    911  * Its listener will be invoked whenever media player's status is changed.
    912  * <div align=center>
    913  * <table class="hcap_spec" width=400>
    914  *   <thead>
    915  *     <tr><th>Media Event Type String</th></tr>
    916  *   </thead>
    917  *   <tbody>
    918  *     <tr class="odd"><td>"play_start"</td></tr>
    919  *     <tr>            <td>"play_end"</td></tr>
    920  *     <tr class="odd"><td>"error_in_playing"</td></tr>
    921  *     <tr>            <td>"buffer_full"</td></tr>
    922  *     <tr class="odd"><td>"file_not_found"</td></tr>
    923  *     <tr>            <td>"network_disconnected"</td></tr>
    924  *     <tr class="odd"><td>"network_busy"</td></tr>
    925  *     <tr>            <td>"network_cannot_process"</td></tr>
    926  *     <tr class="odd"><td>"seek_done"</td></tr>
    927  *   </tbody>
    928  *   <tfoot>
    929  *     <tr><td>Media Event Type</td></tr>
    930  *   </tfoot>
    931  * </table>
    932  * </div>
    933  * @name media_event_received
    934  * @event
    935  * @since 1.3.1
    936  * @example
    937  * document.addEventListener(
    938  *      "media_event_received",
    939  *      function (param) {
    940  *          // {String} param.eventType - changed event type
    941  *          console.log("event type = " + param.eventType);
    942  *      },
    943  *      false
    944  * );
    945  */
    946
    947 /**
    948  * Event for the RMS response.<br>
    949  * Its listener will be invoked whenever RMS response message is received.
    950  *
    951  * @name rms_response_received
    952  * @event
    953  * @since 1.6.0
    954  * @see
    955  * <a href="hcap.rms.html#.requestRms">hcap.rms.requestRms()</a><br>
    956  * @example
    957  * document.addEventListener(
    958  *      "rms_response_received",
    959  *      function (param) {
    960  *          // {String} param.response - RMS response message.
    961  *          console.log(
    962  *              "Event 'rms_response_received' is received.\n" +
    963  *              "response message = " + param.response
    964  *          );
    965  *      },
    966  *      false
    967  * );
    968  */
    969
    970 /**
    971  * Event for the network status change.<br>
    972  * Its listener will be invoked whenever the network status is changed.
    973  *
    974  * @name network_event_received
    975  * @event
    976  * @since 1.6.0
    977  * @see
    978  * <a href="hcap.network.html#.getNetworkInformation">hcap.network.getNetworkInformation()</a><br>
    979  * @example
    980  * document.addEventListener(
    981  *      "network_event_received",
    982  *      function (param) {
    983  *          // {Number} param.event - network event. (<a href="hcap.network.NetworkEventType.html">hcap.network.NetworkEventType</a>)
    984  *          console.log(
    985  *              "Event 'network_event_received' is received.\n" +
    986  *              "event = " + param.event
    987  *          );
    988  *      },
    989  *      false
    990  * );
    991  */
    992
    993 /**
    994  * Event for readiness of inband data service in the current channel.<br>
    995  * Its listener will be invoked whenever the availability of the inband data service application in the current channel is changed.
    996  *
    997  * @name inband_data_service_ready
    998  * @event
    999  * @since 1.6.0
    1000  * @see
    1001  * <a href="hcap.channel.html#.launchInbandDataService">hcap.channel.launchInbandDataService()</a><br>
    1002  * <a href="hcap.channel.InbandDataServiceType.html#.MHP">hcap.channel.InbandDataServiceType.MHP</a><br>
    1003  * <a href="hcap.channel.InbandDataServiceType.html#.MHEG">hcap.channel.InbandDataServiceType.MHEG</a><br>
    1004  * <a href="hcap.channel.InbandDataServiceType.html#.HBBTV">hcap.channel.InbandDataServiceType.HBBTV</a><br>
    1005  * <a href="hcap.channel.InbandDataServiceType.html#.NONE">hcap.channel.InbandDataServiceType.NONE</a><br>
    1006  * @example
    1007  * document.addEventListener(
    1008  *      "inband_data_service_ready",
    1009  *      function (param) {
    1010  *          // {Number} param.inband_data_service_type - inband data service type. (<a href="hcap.channel.InbandDataServiceType.html">hcap.channel.InbandDataServiceType</a>)
    1011  *          console.log(
    1012  *              "Event 'inband_data_service_ready' is received.\n" +
    1013  *              "inband_data_service_type = " + param.inband_data_service_type
    1014  *          );
    1015  *      },
    1016  *      false
    1017  * );
    1018  */
    1019
    1020 /**
    1021  * Event for Media Hub status change.<br>
    1022  * Its listener will be invoked whenever Media Hub event is received.
    1023  * <div align=center>
    1024  * <table class="hcap_spec" width=400>
    1025  *   <thead>
    1026  *     <tr><th>Media Hub Event Type String</th></tr>
    1027  *   </thead>
    1028  *   <tbody>
    1029  *     <tr class="odd"><td>"av_in"</td></tr>
    1030  *     <tr>            <td>"av_out"</td></tr>
    1031  *   </tbody>
    1032  *   <tfoot>
    1033  *     <tr><td>Media Hub Event Type</td></tr>
    1034  *   </tfoot>
    1035  * </table>
    1036  * </div>
    1037  *
    1038  * @name media_hub_event_received
    1039  * @event
    1040  * @since 1.11.0
    1041  * @example
    1042  * document.addEventListener(
    1043  *      "media_hub_event_received",
    1044  *      function (param) {
    1045  *          // {Number} param.eventType - Media Hub event type.
    1046  *          console.log("Media Hub event type = " + param.eventType);
    1047  *      },
    1048  *      false
    1049  * );
    1050  */
    1051
    1052 /**
    1053  * Event for the status change of the usb storage.<br>
    1054  * Its listener will be invoked whenever a usb storage is inserted to TV or ejected from TV.
    1055  * <div align=center>
    1056  * <table class="hcap_spec" width=400>
    1057  *   <thead>
    1058  *     <tr><th>USB Storage Event Type String</th></tr>
    1059  *   </thead>
    1060  *   <tbody>
    1061  *     <tr class="odd"><td>"inserted"</td></tr>
    1062  *     <tr>            <td>"ejected"</td></tr>
    1063  *   </tbody>
    1064  *   <tfoot>
    1065  *     <tr><td>USB Storage Event Type</td></tr>
    1066  *   </tfoot>
    1067  * </table>
    1068  * </div>
    1069  * @name usb_storage_status_changed
    1070  * @event
    1071  * @since 1.18.1
    1072  * @example
    1073  * document.addEventListener(
    1074  *      "usb_storage_status_changed",
    1075  *      function (param) {
    1076  *          // {String} param.eventType - usb storage event type
    1077  *          console.log("event type = " + param.eventType);
    1078  *      },
    1079  *      false
    1080  * );
    1081  */
    1082
    1083 /**
    1084  * Event for the focus change of HCAP application.<br>
    1085  * Its listener will be invoked whenever the focus is moved from HCAP application to preloaded application, or vice versa except when HCAP mode is 0 (hcap.mode.HCAP_MODE_0).
    1086  * <div align=center>
    1087  * <table class="hcap_spec" width=400>
    1088  *   <thead>
    1089  *     <tr><th>HCAP Application Focus Event Type String</th></tr>
    1090  *   </thead>
    1091  *   <tbody>
    1092  *     <tr class="odd"><td>"focused"</td></tr>
    1093  *     <tr>            <td>"unfocused"</td></tr>
    1094  *   </tbody>
    1095  *   <tfoot>
    1096  *     <tr><td>HCAP Application Focus Event Type</td></tr>
    1097  *   </tfoot>
    1098  * </table>
    1099  * </div>
    1100  * @name hcap_application_focus_changed
    1101  * @event
    1102  * @since 1.18.2
    1103  * @example
    1104  * document.addEventListener(
    1105  *      "hcap_application_focus_changed",
    1106  *      function (param) {
    1107  *          // {String} param.eventType - HCAP application focus event type
    1108  *          console.log("event type = " + param.eventType);
    1109  *      },
    1110  *      false
    1111  * );
    1112  */
    1113
    1114 /**
    1115  * Event for the result of USB file download.<br>
    1116  * Its listener will be invoked when the file requested by <a href="hcap.file.html#.downloadFileToUsb">hcap.file.downloadFileToUsb()</a> is downloaded to the path in the USB storage successfully or is failed to download.<br>
    1117  * @name usb_file_downloaded
    1118  * @event
    1119  * @since 1.18.3
    1120  * @see
    1121  * <a href="hcap.file.html#.getUsbStorageList">hcap.file.getUsbStorageList()</a><br>
    1122  * <a href="hcap.file.html#.getUsbStorageFileList">hcap.file.getUsbStorageFileList()</a><br>
    1123  * <a href="hcap.file.html#.downloadFileToUsb">hcap.file.downloadFileToUsb()</a><br>
    1124  * <a href="hcap.file.html#.deleteUsbFile">hcap.file.deleteUsbFile()</a><br>
    1125  * @example
    1126  * document.addEventListener(
    1127  *      "usb_file_downloaded",
    1128  *      function (param) {
    1129  *          // {Boolean} param.result - true if the file of uri is downloaded successfully, else false.
    1130  *          // {String} param.errorMessage - in case of failure, this message provides the details.
    1131  *          // {String} param.uri - URI for the file to download to the usb storage requested by <a href="hcap.file.html#.downloadFileToUsb">hcap.file.downloadFileToUsb()</a>.
    1132  *          // {String} param.downloadPath - file path to download the file of uri requested by <a href="hcap.file.html#.downloadFileToUsb">hcap.file.downloadFileToUsb()</a>.
    1133  *          console.log(
    1134  *              "Event 'usb_file_downloaded' is received.\n" +
    1135  *              "Result = " + param.result + "\n" +
    1136  *              "Error message = " + param.errorMessage + "\n" +
    1137  *              "uri = " + param.uri + "\n" +
    1138  *              "Download path = " + param.downloadPath
    1139  *          );
    1140  *      },
    1141  *      false
    1142  * );
    1143  */
    1144
    1145 /**
    1146  * Event for receiving the RS232C data.<br>
    1147  * Its listener will be invoked only when the property "rs232c" is "1" and rs232c data is received.<br>
    1148  * Because RS232C data is serial data, received data will be separated into 1 or multibytes and delivered to HCAP application.<br>
    1149  * Therefore HCAP application has to get, assemble, interpret and analyze the received rs232c data.<br>
    1150  *
    1151  * @name rs232c_data_received
    1152  * @event
    1153  * @since 1.18.4
    1154  * @see
    1155  * <a href="hcap.rs232c.html#.getConfiguration">hcap.rs232c.getConfiguration()</a><br>
    1156  * <a href="hcap.rs232c.html#.setConfiguration">hcap.rs232c.setConfiguration()</a><br>
    1157  * <a href="hcap.rs232c.html#.sendData">hcap.rs232c.sendData()</a><br>
    1158  * <a href="hcap.rs232c.html#.setStartupData">hcap.rs232c.setStartupData()</a><br>
    1159  * <a href="hcap.rs232c.html#.clearStartupData">hcap.rs232c.clearStartupData()</a><br>
    1160  * @example
    1161  * document.addEventListener(
    1162  *      "rs232c_data_received",
    1163  *      function (param) {
    1164  *          // {String} param.data - rs232c data string converted from binary data to ascii data such as ascii "3B1C42" for binary 0x3B1C42 with param.dataLength 3 (3 bytes) and ascii "00" for binary null data (0x00) with param.dataLength 1 (1 byte).
    1165  *          // {Number} param.dataLength - received rs232c data length in bytes. Max length of EU model is 255 (bytes) and US model is 32 (bytes).
    1166  *          console.log(
    1167  *              "Event 'rs232c_data_received' is received.\n" +
    1168  *              "data = " + param.data + "\n" +
    1169  *              "data length = " + param.dataLength
    1170  *          );
    1171  *      },
    1172  *      false
    1173  * );
    1174  */
    1175
    1176 /**
    1177  * Event for the cloning done.<br>
    1178  * Its listener will be invoked whenever the cloning is done.
    1179  *
    1180  * @name cloning_done_received
    1181  * @event
    1182  * @since 1.19.0
    1183  * @see
    1184  * <a href="hcap.system.html#.requestCloning">hcap.system.requestCloning()</a><br>
    1185  * @example
    1186  * document.addEventListener(
    1187  *      "cloning_done_received",
    1188  *      function (param) {
    1189  *          // {Boolean} param.result - true if the cloning is done successfully, else false.
    1190  *          console.log(
    1191  *              "Event 'cloning_done_received' is received.\n" +
    1192  *              "Result = " + param.result
    1193  *          );
    1194  *      },
    1195  *      false
    1196  * );
    1197  */
    1198
    1199 /**
    1200  * Event for the result of locale change.<br>
    1201  * Its listener will be invoked when to succeed or fail to change the locale.
    1202  *
    1203  * @name locale_changed
    1204  * @event
    1205  * @since 1.19.0
    1206  * @see
    1207  * <a href="hcap.system.html#.getLocaleList">hcap.system.getLocaleList()</a><br>
    1208  * <a href="hcap.system.html#.getLocale">hcap.system.getLocale()</a><br>
    1209  * <a href="hcap.system.html#.requestLocaleChange">hcap.system.requestLocaleChange()</a><br>
    1210  * @example
    1211  * document.addEventListener(
    1212  *      "locale_changed",
    1213  *      function (param) {
    1214  *          // {String} param.specifier - locale specifier for the locale change request.
    1215  *          // {Boolean} param.result - true if the locale is changed successfully, else false.
    1216  *          // {String} param.errorMessage - in case of failure, this message provides the details.
    1217  *          console.log(
    1218  *              "Event 'locale_changed' is received.\n" +
    1219  *              "specifier = " + param.specifier + "\n" +
    1220  *              "change result = " + param.result + "\n" +
    1221  *              "Error message = " + param.errorMessage
    1222  *          );
    1223  *      },
    1224  *      false
    1225  * );
    1226  */
    1227
    1228 /**
    1229  * Event for the MMR (Magic Motion RCU) low battery notification.<br>
    1230  *
    1231  * @name mmr_low_battery_event_received
    1232  * @event
    1233  * @since 1.19.0
    1234  * @example
    1235  * document.addEventListener(
    1236  *      "mmr_low_battery_event_received",
    1237  *      function (param) {
    1238  *          console.log("MMR low battery notification is received");
    1239  *      },
    1240  *      false
    1241  * );
    1242  */
    1243
    1244 /**
    1245  * Event for the bluetooth notification.<br>
    1246  *
    1247  * @name bluetooth_event_received
    1248  * @event
    1249  * @since 1.19.0
    1250  * @see
    1251  * <a href="hcap.bluetooth.html#.disconnect">hcap.bluetooth.disconnect()</a><br>
    1252  * <a href="hcap.bluetooth.html#.setScanState">hcap.bluetooth.setScanState()</a><br>
    1253  * @example
    1254  * document.addEventListener(
    1255  *      "bluetooth_event_received",
    1256  *      function (param) {
    1257  *          // {String} param.eventType - bluetooth event type ("bt_gap_find_devices_result" / "bt_service_status_changed")
    1258  *          // {Object} param.btGapFindDevicesResult - event data for the event type "bt_gap_find_devices_result"
    1259  *          //      {
    1260  *          //          {String} scanState - scan state ("found_devices" : devices are found / "done" : scanning is done with no device found)
    1261  *          //          {Array} list - device list
    1262  *          //                  {String} list[].name - device name
    1263  *          //                  {Number} list[].class - device class
    1264  *          //                  {String} list[].address - BD (Bluetooth Device) address
    1265  *          //                  {Number} list[].rssi - RSSI value of device
    1266  *          //      }
    1267  *          // {Object} param.btServiceStatusChanged - event data for the event type "bt_service_status_changed"
    1268  *          //      {
    1269  *          //          {String} listType - list type ("discovered"/"bonded"/"none")
    1270  *          //          {String} state - device connection state ("connected"/"disconnected"/"connecting"/"disconnecting"/"none")
    1271  *          //          {String} address - BD (Bluetooth Device) address
    1272  *          //          {String} service - service profile ("hid" : HID profile / "audio" : audio src(A2DP) profile / "opc" : OPC profile / "audio_sink" : audio sink(A2DP) profile)
    1273  *          //          {String} name - device name
    1274  *          //      }
    1275  *          console.log("Event 'bluetooth_event_received' is received.");
    1276  *          if (param.eventType === "bt_gap_find_devices_result") {
    1277  *              console.log("scan state = " + param.btGapFindDevicesResult.scanState);
    1278  *              for (var i = 0; i < param.btGapFindDevicesResult.list.length; i++) {
    1279  *                  console.log("found device[" + i + "] name = " + param.btGapFindDevicesResult.list[i].name + ", class = " + param.btGapFindDevicesResult.list[i].class + ", BD address = " + param.btGapFindDevicesResult.list[i].address + ", rssi = " + param.btGapFindDevicesResult.list[i].rssi);
    1280  *              }
    1281  *          } else if (param.eventType === "bt_service_status_changed") {
    1282  *              console.log("listType = " + param.btServiceStatusChanged.listType + ", state = " + param.btServiceStatusChanged.state + ", BD address = " + param.btServiceStatusChanged.address + ", service profile = " + param.btServiceStatusChanged.service + ", name = " + param.btServiceStatusChanged.name);
    1283  *          }
    1284  *      },
    1285  *      false
    1286  * );
    1287  */
    1288
    1289 /**
    1290  * Event for received WebRTC message.<br>
    1291  *
    1292  * @name webrtc_message_received
    1293  * @event
    1294  * @since 1.24 deprecated
    1295  * @see
    1296  * <a href="_global_.html#event:webrtc_event_received">{Event} webrtc_event_received</a><br>
    1297  * <a href="hcap.webrtc.html#.startPreviewVideo">hcap.webrtc.startPreviewVideo()</a><br>
    1298  * <a href="hcap.webrtc.html#.stopPreviewVideo">hcap.webrtc.stopPreviewVideo()</a><br>
    1299  * <a href="hcap.webrtc.html#.incomingCall">hcap.webrtc.incomingCall()</a><br>
    1300  * <a href="hcap.webrtc.html#.outgoingCall">hcap.webrtc.outgoingCall()</a><br>
    1301  * <a href="hcap.webrtc.html#.endCall">hcap.webrtc.endCall()</a><br>
    1302  * <a href="hcap.webrtc.html#.acceptMessage">hcap.webrtc.acceptMessage()</a><br>
    1303  * <a href="hcap.webrtc.html#.startCheckAudio">hcap.webrtc.startCheckAudio()</a><br>
    1304  * <a href="hcap.webrtc.html#.stopCheckAudio">hcap.webrtc.stopCheckAudio()</a><br>
    1305  * <a href="hcap.webrtc.html#.setConfiguration">hcap.webrtc.setConfiguration()</a><br>
    1306  * <a href="hcap.webrtc.html#.getConfiguration">hcap.webrtc.getConfiguration()</a><br>
    1307  * <a href="hcap.webrtc.html#.showDiagnostics">hcap.webrtc.showDiagnostics()</a><br>
    1308  * @example
    1309  * document.addEventListener(
    1310  *      "webrtc_message_received",
    1311  *      function (param) {
    1312  *          // {Number} param.remotePeerId - remote peer id
    1313  *          // {String} param.message - message
    1314  *          console.log("Event 'webrtc_message_received' is received.");
    1315  *          console.log("remotePeerId = " + param.remotePeerId + ", message = " + param.message);
    1316  *      },
    1317  *      false
    1318  * );
    1319  */
    1320
    1321 /**
    1322  * Event for WebRTC.<br>
    1323  * Its listener will be invoked whenever the state of WebRTC is changed.
    1324  * <div align=center>
    1325  * <table class="hcap_spec" width=400>
    1326  *   <thead>
    1327  *     <tr><th>WebRTC Event Type String</th></tr>
    1328  *   </thead>
    1329  *   <tbody>
    1330  *     <tr class="odd"><td>"click_end_call"</td></tr>
    1331  *     <tr>            <td>"click_mic_on"</td></tr>
    1332  *     <tr class="odd"><td>"click_mic_off"</td></tr>
    1333  *     <tr>            <td>"click_video_on"</td></tr>
    1334  *     <tr class="odd"><td>"click_video_off"</td></tr>
    1335  *     <tr>            <td>"p2p_av_connected"</td></tr>
    1336  *     <tr class="odd"><td>"p2p_av_disconnected"</td></tr>
    1337  *   </tbody>
    1338  *   <tfoot>
    1339  *     <tr><td>WebRTC Event Type</td></tr>
    1340  *   </tfoot>
    1341  * </table>
    1342  * </div>
    1343  * @name webrtc_event_received
    1344  * @event
    1345  * @since 1.24 deprecated
    1346  * @see
    1347  * <a href="_global_.html#event:webrtc_message_received">{Event} webrtc_message_received</a><br>
    1348  * <a href="hcap.webrtc.html#.startPreviewVideo">hcap.webrtc.startPreviewVideo()</a><br>
    1349  * <a href="hcap.webrtc.html#.stopPreviewVideo">hcap.webrtc.stopPreviewVideo()</a><br>
    1350  * <a href="hcap.webrtc.html#.incomingCall">hcap.webrtc.incomingCall()</a><br>
    1351  * <a href="hcap.webrtc.html#.outgoingCall">hcap.webrtc.outgoingCall()</a><br>
    1352  * <a href="hcap.webrtc.html#.endCall">hcap.webrtc.endCall()</a><br>
    1353  * <a href="hcap.webrtc.html#.acceptMessage">hcap.webrtc.acceptMessage()</a><br>
    1354  * <a href="hcap.webrtc.html#.startCheckAudio">hcap.webrtc.startCheckAudio()</a><br>
    1355  * <a href="hcap.webrtc.html#.stopCheckAudio">hcap.webrtc.stopCheckAudio()</a><br>
    1356  * <a href="hcap.webrtc.html#.setConfiguration">hcap.webrtc.setConfiguration()</a><br>
    1357  * <a href="hcap.webrtc.html#.getConfiguration">hcap.webrtc.getConfiguration()</a><br>
    1358  * <a href="hcap.webrtc.html#.showDiagnostics">hcap.webrtc.showDiagnostics()</a><br>
    1359  * @example
    1360  * document.addEventListener(
    1361  *      "webrtc_event_received",
    1362  *      function (param) {
    1363  *          // {String} param.eventString - WebRTC event string
    1364  *          console.log("Event 'webrtc_event_received' is received.");
    1365  *          console.log("eventString = " + param.eventString);
    1366  *      },
    1367  *      false
    1368  * );
    1369  */
    1370
    1371 /**
    1372  * Event for the result of HDMI connection change.<br>
    1373  * Its listener will be invoked whenever a HDMI is connected or disconnected.<br>
    1374  *
    1375  * @name hdmi_connection_changed
    1376  * @event
    1377  * @since 1.20.0
    1378  * @example
    1379  * document.addEventListener(
    1380  *      "hdmi_connection_changed",
    1381  *      function (param) {
    1382  *          // {Number} param.index - index of the HDMI which was connected or disconnected.
    1383  *          // {Boolean} param.connected - true if the HDMI is connected, else false.
    1384  *          console.log(
    1385  *              "Event 'hdmi_connection_changed' is received.\n" +
    1386  *              "HDMI-" + param.index + " : " + "connected = " + param.connected
    1387  *          );
    1388  *      },
    1389  *      false
    1390  * );
    1391  */
    1392
    1393 /**
    1394  * Event called when TV is turned off ("turn off" means TV moves on the power STANDBY).<br>
    1395  * Pro:Centric HTML application has a chance to clean up its resource in this event listener by calling hcap.system.beginDestroy.<br>
    1396  * TV will wait for hcap.system.beginDestroy up to 1 second. And once beginDestroy is called, endDestroy should be called. Or TV will be turned off after 10 minutes automatically.<br>
    1397  * <img src="./image/on_destroy.jpg"><br>
    1398  *
    1399  * @name on_destroy
    1400  * @event
    1401  * @since 1.20.0
    1402  * @see
    1403  * <a href="hcap.system.html#.beginDestroy">hcap.system.beginDestroy()</a><br>
    1404  * <a href="hcap.system.html#.endDestroy">hcap.system.endDestroy()</a>
    1405  * @example
    1406  * document.addEventListener(
    1407  *      "on_destroy",
    1408  *      function() {
    1409  *          console.log("Event 'on_destroy' is received");
    1410  *          hcap.system.beginDestroy({
    1411  *              "onSuccess" : function() {
    1412  *                  console.log("beginDestroy onSuccess");
    1413  *
    1414  *                  // clean up resources
    1415  *
    1416  *                  hcap.system.endDestroy({
    1417  *                      "onSuccess" : function() {
    1418  *                          console.log("endDestroy onSuccess");
    1419  *                      },
    1420  *                      "onFailure" : function(e) {
    1421  *                          console.log("endDestroy onFailure : errorMessage = " + e.errorMessage);
    1422  *                      }
    1423  *                  });
    1424  *              },
    1425  *              "onFailure" : function(f) {
    1426  *                  console.log("beginDestroy onFailure : errorMessage = " + f.errorMessage);
    1427  *              }
    1428  *          });
    1429  *      },
    1430  *      false
    1431  * );
    1432  */
    1433
    1434 /**
    1435  * Event for the screensaver.<br>
    1436  * Its listener will be invoked whenever screensaver event is received.
    1437  * <div align=center>
    1438  * <table class="hcap_spec" width=400>
    1439  *   <thead>
    1440  *     <tr><th>Screensaver Event Type String</th></tr>
    1441  *   </thead>
    1442  *   <tbody>
    1443  *     <tr class="odd"><td>"turnon_screensaver"</td></tr>
    1444  *     <tr>            <td>"turnoff_screensaver"</td></tr>
    1445  *   </tbody>
    1446  *   <tfoot>
    1447  *     <tr><td>Screensaver Event Type</td></tr>
    1448  *   </tfoot>
    1449  * </table>
    1450  * </div>
    1451  *
    1452  * @name screensaver_event_received
    1453  * @event
    1454  * @since 1.20.1
    1455  * @example
    1456  * document.addEventListener(
    1457  *      "screensaver_event_received",
    1458  *      function (param) {
    1459  *          // {Number} param.eventType - screensaver event type.
    1460  *          console.log("screensaver event type = " + param.eventType);
    1461  *      },
    1462  *      false
    1463  * );
    1464  */
    1465
    1466 /**
    1467  * Event for UI value change.<br>
    1468  * Its listener will be invoked whenever UI value is changed.
    1469  * <div align=center>
    1470  * <table class="hcap_spec" width=400>
    1471  *   <thead>
    1472  *     <tr><th>UI Value Event Type String</th></tr>
    1473  *   </thead>
    1474  *   <tbody>
    1475  *     <tr class="odd"><td>"bluetooth_sound_sync"</td></tr>
    1476  *     <tr>            <td>"audio_pts_offset"</td></tr>
    1477  *     <tr class="odd"><td>"video_pts_offset"</td></tr>
    1478  *     <tr>            <td>"beacon_mode"</td></tr>
    1479  *     <tr class="odd"><td>"healthcare_headphone_mode"</td></tr>
    1480  *     <tr>            <td>"vlan_id_mode"</td></tr>
    1481  *   </tbody>
    1482  *   <tfoot>
    1483  *     <tr><td>UI Value Event Type</td></tr>
    1484  *   </tfoot>
    1485  * </table>
    1486  * </div>
    1487  *
    1488  * @name ui_value_changed
    1489  * @event
    1490  * @since 1.20.1
    1491  * @see
    1492  * <a href="hcap.bluetooth.html#.setBluetoothSoundSync">hcap.bluetooth.setBluetoothSoundSync()</a><br>
    1493  * <a href="hcap.system.html#.setAudioPtsOffset">hcap.system.setAudioPtsOffset()</a><br>
    1494  * <a href="hcap.system.html#.setVideoPtsOffset">hcap.system.setVideoPtsOffset()</a><br>
    1495  * <a href="hcap.volume.html#.setHealthcareHeadphoneMode">hcap.volume.setHealthcareHeadphoneMode()</a><br>
    1496  * <a href="hcap.beacon.html#.setBeaconMode">hcap.beacon.setBeaconMode()</a><br>
    1497  * <a href="hcap.network.html#.setVlanIdMode">hcap.network.setVlanIdMode()</a>
    1498  * @example
    1499  * document.addEventListener(
    1500  *      "ui_value_changed",
    1501  *      function (param) {
    1502  *          // {String} param.key - UI Value event string
    1503  *          console.log("Event 'ui_value_changed' is received.");
    1504  *          console.log("eventString = " + param.key);
    1505  *      },
    1506  *      false
    1507  * );
    1508  */
    1509
    1510 /**
    1511  * Event for the result of asynchronous ping.<br>
    1512  * Its listener will be invoked when the asynchronous ping requested by <a href="hcap.network.html#.asyncPing">hcap.network.asyncPing()</a> is success or fail.<br>
    1513  * @name ping_result_received
    1514  * @event
    1515  * @since 1.22.0
    1516  * @see
    1517  * <a href="hcap.network.html#.asyncPing">hcap.network.asyncPing()</a><br>
    1518
    1519  * @example
    1520  * document.addEventListener(
    1521  *      "ping_result_received",
    1522  *      function (param) {
    1523  *          // {Boolean} param.result - true if the result of asynchronous ping is success, else false.
    1524  *          // {String} param.errorMessage - in case of failure, this message provides the details.
    1525  *          // {String} param.roundTripTimeInMs - round trip time to the target in milliseconds requested by <a href="hcap.network.html#.asyncPing">hcap.network.asyncPing()</a>.
    1526  *          console.log(
    1527  *              "Event 'ping_result_received' is received.\n" +
    1528  *              "Result = " + param.result + "\n" +
    1529  *              "Error message = " + param.errorMessage + "\n" +
    1530  *              "Round trip time = " + param.roundTripTimeInMs
    1531  *          );
    1532  *      },
    1533  *      false
    1534  * );
    1535  */
    1536
    1537 /**
    1538  * Event notifying the status of the TV (or monitor) connected for STB output. [Support STB Only]<br>
    1539  * Its listener will be invoked whenever the TV (or monitor) is connected or disconnected.<br>
    1540  *
    1541  * @name output_connection_changed
    1542  * @event
    1543  * @since 1.24.2
    1544  * @example
    1545  * document.addEventListener(
    1546  *      "output_connection_changed",
    1547  *      function (param) {
    1548  *          // {Boolean} param.connected - true if the TV (or monitor) is connected, else false.
    1549  *          console.log(
    1550  *              "Event 'output_connection_changed' is received.\n" +
    1551  *              "output connected = " + param.connected
    1552  *          );
    1553  *      },
    1554  *      false
    1555  * );
    1556  */
    1557
    1558 /**
    1559  * Event for the software update notification.<br>
    1560  *
    1561  * @name software_update_event_received
    1562  * @event
    1563  * @since 1.24.2
    1564  * @see
    1565  * <a href="hcap.system.html#.startManualUpdate">hcap.system.startManualUpdate()</a><br>
    1566  * <a href="hcap.system.html#.getUpdateProgress">hcap.system.getUpdateProgress()</a><br>
    1567  * <a href="hcap.system.html#.cancelUpdate">hcap.system.cancelUpdate()</a><br>
    1568  * @example
    1569  * document.addEventListener(
    1570  *      "software_update_event_received",
    1571  *      function (param) {
    1572  *          // {String} param.eventType - software update event type ("sw_new_version_checked" / "sw_update_status_changed")
    1573  *          // {Object} param.swNewVersionChecked - event data for the event type "sw_new_version_checked"
    1574  *          //      {
    1575  *          //          {Boolean} flagUpdate - Status of update request
    1576  *          //          {Number} version - Version to be updated
    1577  *          //      }
    1578  *          // {Object} param.swUpdateStatusChanged - event data for the event type "sw_update_status_changed"
    1579  *          //      {
    1580  *          //          {String} status - "idle" / "in progress" / "completed"
    1581  *          //      }
    1582  *          console.log("Event 'software_update_event_received' is received.");
    1583  *          if (param.eventType === "sw_new_version_checked") {
    1584  *              console.log("eventType = " + param.eventType + ", flagUpdate = " + param.swNewVersionChecked.flagUpdate + ", version = " + param.swNewVersionChecked.version);
    1585  *          }
    1586  *          else if (param.eventType === "sw_update_status_changed") {
    1587  *              console.log("eventType = " + param.eventType + ", status = " + param.swUpdateStatusChanged.status);
    1588  *          }
    1589  *      },
    1590  *      false
    1591  * );
    1592  */
    1593
    1594 /**
    1595  * Events for the result of <a href="hcap.beacon.html#.startScan">hcap.beacon.startScan()</a>.<br>
    1596  * Its listener will be invoked whenever data on the beacon device is discovered.<br>
    1597  *
    1598  * @name beacon_device_discovered
    1599  * @event
    1600  * @since 1.24.6
    1601  * @see
    1602  * <a href="hcap.beacon.html#.startScan">hcap.beacon.startScan()</a><br>
    1603  * <a href="hcap.beacon.html#.stopScan">hcap.beacon.stopScan()</a><br>
    1604  * @example
    1605  * document.addEventListener(
    1606  *      "beacon_device_discovered",
    1607  *      function (param) {
    1608  *          // {Array} param.devices- Beacon device list
    1609  *          // {Array} param.devices[].scanRecord[] - Beacon device scanned record.
    1610  *          // {String} param.devices[].address - Beacon device address.
    1611  *          // {Number} param.devices[].rssi - RSSI value of device.
    1612  *          console.log(
    1613  *              "Event 'beacon_device_discovered' is received.\n" +
    1614  *              "devices length = " + param.devices.length
    1615  *          );
    1616  *          for (var i = 0; i < param.devices.length; i++) {
    1617  *              console.log("discovered device[" + i + "] scanRecord = " + param.devices[i].scanRecord + ", address = " + param.devices[i].address + ", rssi = " + param.devices[i].rssi);
    1618  *          }
    1619  *      },
    1620  *      false
    1621  * );
    1622  */
    1623
    1624 //var navigator; // only for local jslint
    1625 //var document; // only for local jslint
    1626 //var WebSocket; // only for local jslint
    1627 //var window; // only for local jslint
    1628
    1629 var extHcapSecure; // true : wss
    1630 var extRegisterHcapCloseHandler; // "onbeforeunload" : register onbeforeunload handler to close hcap websocket, "onunload" : register onunload handler to close hcap websocket
    1631 var extDisableHcapConsoleLog; // true : disable hcap console log
    1632 var extWebWorker; // true : hcap.js is included in webworker
    1633
    1634 /**
    1635  * @constructor
    1636  */
    1637 var hcap;
    1638 if (hcap === undefined) {
    1639     (function () {
    1640         /**
    1641          * @namespace hcap
    1642          */
    1643         //"use strict"; // only for local jslint
    1644         hcap = {
    1645             API_VERSION: "1.24.6.5901"
    1646         };
    1647         var hcap_key_table = [],
    1648             callback_event_id = 0,
    1649             hcap_cmd_buffer = [{"command_id" : "0", "param_text" : "{\"command_id\" : \"0\", \"command\" : \"notify_sdk_version\", \"hcap_js_extension_version\" : \"1.24.6.5901\"}"}],
    1650             ws = null,
    1651             ws_is_opened = false,
    1652             is_connecting = false,
    1653             guard_call = false,
    1654             initialize_hcap_websocket = null,
    1655             start_cmd_loop = null,
    1656             hcap_command = null,
    1657             is_ws_off = false,
    1658             make_log = null,
    1659             media_object = null;
    1660         function hcapLog(s) {
    1661             if (extDisableHcapConsoleLog !== true) {
    1662                 var str;
    1663                 if (s.length > 1024) {
    1664                     str = s.substring(0, 1024);
    1665                 } else {
    1666                     str = s;
    1667                 }
    1668                 if (extWebWorker !== true) {
    1669                     console.log(str);
    1670                 }
    1671             }
    1672         }
    1673         if (extDisableHcapConsoleLog === true) {
    1674             if (extWebWorker !== true) {
    1675                 console.log("hcap console log is disabled");
    1676             }
    1677         } else {
    1678             if (extWebWorker !== true) {
    1679                 console.log("hcap console log is enabled");
    1680             }
    1681         }
    1682         hcapLog("check external value : extDisableHcapConsoleLog = " + extDisableHcapConsoleLog + ", extHcapSecure = " + extHcapSecure + ", extRegisterHcapCloseHandler = " + extRegisterHcapCloseHandler);
    1683         function ws_off() {
    1684             var user_agent = navigator.userAgent,
    1685                 windows = user_agent.match(/Windows/),
    1686                 macintosh = user_agent.match(/Macintosh/),
    1687                 mac = user_agent.match(/Mac OS X/);
    1688             hcapLog("UA = '" + user_agent + "'");
    1689             if (windows || macintosh || mac) {
    1690                 hcapLog("HCAP websocket off");
    1691                 return true;
    1692             }
    1693             return false;
    1694         }
    1695         is_ws_off = ws_off();
    1696         function make_log_element(idx, names, object, log_message) {
    1697             var value = "", type = "", ele = "";
    1698             ele = names[idx];
    1699             try {
    1700                 value = object[ele];
    1701                 type = typeof value;
    1702             } catch (e) {
    1703                 value = "<unknown value>";
    1704                 type = "unknown";
    1705             }
    1706             if (type === "function") {
    1707                 value = "{/*function*/}";
    1708             } else if (type === "object") {
    1709                 value = make_log("", value);
    1710             } else if (type === "string") {
    1711                 value = "\"" + value + "\"";
    1712             }
    1713             log_message += "\"" + ele + "\"" + " : " + value;
    1714             if (idx < names.length - 1) {
    1715                 log_message += ", ";
    1716             }
    1717             return log_message;
    1718         }
    1719         make_log = function (message, object) {
    1720             var i = 0, name = "", names = [], log_message = "";
    1721             for (name in object) {
    1722                 if (object.hasOwnProperty(name)) {
    1723                     names.push(name);
    1724                 }
    1725             }
    1726             names.sort();
    1727             for (i = 0; i < names.length; i += 1) {
    1728                 log_message = make_log_element(i, names, object, log_message);
    1729             }
    1730             return message + "{" + log_message + "}";
    1731         };
    1732         function on_event_received(command, param) {
    1733             if (extWebWorker !== true) {
    1734                 var key = "",
    1735                     eventType = command,
    1736                     evtObj = document.createEvent("HTMLEvents");
    1737                 hcapLog(make_log("event received, ", param));
    1738                 evtObj.initEvent(eventType, true, false);
    1739                 for (key in param) {
    1740                     if (param.hasOwnProperty(key)) {
    1741                         evtObj[key] = param[key];
    1742                     }
    1743                 }
    1744                 document.dispatchEvent(evtObj);
    1745             }
    1746         }
    1747         initialize_hcap_websocket = function () {
    1748             if (is_connecting) {
    1749                 hcapLog("websocket : connection is in progress");
    1750                 return;
    1751             }
    1752             is_connecting = true;
    1753             if (extHcapSecure !== true) {
    1754                 hcapLog("default hcap connection");
    1755                 ws = new WebSocket("ws://127.0.0.1:8053/hcap_command");
    1756             } else {
    1757                 hcapLog("secure hcap connection");
    1758                 ws = new WebSocket("wss://localhost:8054/hcap_command");
    1759             }
    1760             ws.onopen = function () {
    1761                 hcapLog("websocket : onopen");
    1762                 is_connecting = false;
    1763                 ws_is_opened = true;
    1764                 setTimeout(start_cmd_loop, 5);
    1765             };
    1766             ws.onmessage = function (evt) {
    1767                 var param = JSON.parse(evt.data),
    1768                     command_id = param.command_id,
    1769                     command = param.command,
    1770                     command_result = param.result;
    1771                 if (command_id === "event") {
    1772                     if (command === "debug_event_received") {
    1773                         if (param.enable_log) {
    1774                             if (extWebWorker !== true) {
    1775                                 console.log("hcap console log is enabled");
    1776                             }
    1777                         } else {
    1778                             if (extWebWorker !== true) {
    1779                                 console.log("hcap console log is disabled");
    1780                             }
    1781                         }
    1782                         extDisableHcapConsoleLog = !param.enable_log;
    1783                     } else {
    1784                         on_event_received(command, param);
    1785                     }
    1786                 } else if (hcap_cmd_buffer.length > 0 && hcap_cmd_buffer[0].command_id === command_id) {
    1787                     hcapLog(make_log("command_id = " + command_id + " received, ", param));
    1788                     if (command_result) {
    1789                         if (hcap_cmd_buffer[0].onSuccess) {
    1790                             try {
    1791                                 hcap_cmd_buffer[0].onSuccess(param);
    1792                             } catch(e) {
    1793                                 hcapLog(make_log("exception : onSuccess : " + e));
    1794                             }
    1795                         }
    1796                     } else {
    1797                         if (hcap_cmd_buffer[0].onFailure) {
    1798                             try {
    1799                                 hcap_cmd_buffer[0].onFailure(param);
    1800                             } catch(e) {
    1801                                 hcapLog(make_log("exception : onFailure : " + e));
    1802                             }
    1803                         }
    1804                     }
    1805                     hcap_cmd_buffer.splice(0, 1);
    1806                     guard_call = false;
    1807                     start_cmd_loop();
    1808                 } else {
    1809                     hcapLog(make_log("invalid response from server ", param));
    1810                     guard_call = false;
    1811                     start_cmd_loop();
    1812                 }
    1813             };
    1814             ws.onclose = function () {
    1815                 hcapLog("websocket : onclose");
    1816                 is_connecting = false;
    1817                 ws_is_opened = false;
    1818                 guard_call = false;
    1819                 setTimeout(start_cmd_loop, 50);
    1820             };
    1821             if (extRegisterHcapCloseHandler === "onbeforeunload") {
    1822                 window.onbeforeunload = function () {
    1823                     hcapLog("close hcap websocket in onbeforeunload handler");
    1824                     ws.onclose = function () {
    1825                         return undefined;
    1826                     };
    1827                     ws.close();
    1828                 };
    1829             } else if (extRegisterHcapCloseHandler === "onunload") {
    1830                 window.onunload = function () {
    1831                     hcapLog("close hcap websocket in onunload handler");
    1832                     ws.onclose = function () {
    1833                         return undefined;
    1834                     };
    1835                     ws.close();
    1836                 };
    1837             }
    1838         };
    1839         start_cmd_loop = function () {
    1840             if (guard_call) {
    1841                 return;
    1842             }
    1843             guard_call = true;
    1844             if (ws_is_opened) {
    1845                 if (hcap_cmd_buffer.length > 0) {
    1846                     hcapLog(make_log("command_id = " + hcap_cmd_buffer[0].command_id + " sent, ", JSON.parse(hcap_cmd_buffer[0].param_text)));
    1847                     ws.send(hcap_cmd_buffer[0].param_text);
    1848                     return;
    1849                 }
    1850             } else {
    1851                 initialize_hcap_websocket();
    1852             }
    1853             guard_call = false;
    1854         };
    1855         hcap_command = function (command, param) {
    1856             if (command === null || command === "" || command === undefined) {
    1857                 hcapLog("[ERROR] command should not null or empty string! command === null || command === \"\" || command === undefined");
    1858                 return;
    1859             }
    1860             if (Object.prototype.toString.call(param) === '[object Array]') {
    1861                 hcapLog("[ERROR] param should be Object type({})! param is Array. command = " + command);
    1862                 return;
    1863             }
    1864             if (param === null || param === undefined) {
    1865                 hcapLog("[ERROR] param should be Object type({})! param === null || param === undefined. command = " + command);
    1866                 return;
    1867             }
    1868
    1869             if (is_ws_off) {
    1870                 if (param.onFailure) {
    1871                     param.onFailure({"errorMessage" : "HCAP WebSocket is not available in this browser"});
    1872                 }
    1873                 return;
    1874             }
    1875             if (callback_event_id > 1024) {
    1876                 callback_event_id = 0;
    1877             } else {
    1878                 callback_event_id += 1;
    1879             }
    1880             var command_id = callback_event_id.toString(),
    1881                 param_text = "";
    1882             param.command_id = command_id;
    1883             param.command = command;
    1884             param_text = JSON.stringify(param, null);
    1885             hcap_cmd_buffer[hcap_cmd_buffer.length] = {"command_id" : command_id, "param_text" : param_text, "onSuccess" : param.onSuccess, "onFailure" : param.onFailure};
    1886             hcapLog(make_log("command_id = " + command_id + " added, ", hcap_cmd_buffer[hcap_cmd_buffer.length - 1]));
    1887             start_cmd_loop();
    1888         };
    1889         if (!is_ws_off) {
    1890             setTimeout(start_cmd_loop, 200);
    1891         }
    1892         /**
    1893          * @namespace hcap.preloadedApplication
    1894          */
    1895         hcap.preloadedApplication = { };
    1896         /**
    1897          * Gets the preloaded application list.<br>
    1898          *
    1899          * @param {Object} param
    1900          * <ul>
    1901          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    1902          *   <pre class="code prettyprint">
    1903          *   param.onSuccess = function (param)
    1904          *       // {Array} param.list - preloaded application list supported by TV.
    1905          *       //         {String} param.list[].id - preloaded application id (0 ~ 2^64 - 1)
    1906          *       //         {String} param.list[].title - preloaded application title
    1907          *       //         {String} param.list[].iconFilePath - file path of icon for the preloaded application
    1908          *       //                 param.list example -
    1909          *       //                     "list" :  [
    1910          *       //                     { "id" : "13324", "title" : "YouTube", "iconFilePath" : "/icon/youtube.png" },
    1911          *       //                     { "id" : "15265", "title" : "Facebook", "iconFilePath" : "/icon/facebook.png" }
    1912          *       //                     ]
    1913          *   }</pre>
    1914          *   </li>
    1915          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    1916          *   <pre class="code prettyprint">
    1917          *   param.onFailure = function (param) {
    1918          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    1919          *   }</pre>
    1920          *   </li>
    1921          * </ul>
    1922          *
    1923          * @since 1.5.0
    1924          *
    1925          * @see
    1926          * <a href="hcap.preloadedApplication.html#.launchPreloadedApplication">hcap.preloadedApplication.launchPreloadedApplication()</a><br>
    1927          * <a href="hcap.preloadedApplication.html#.destroyPreloadedApplication">hcap.preloadedApplication.destroyPreloadedApplication()</a><br>
    1928          *
    1929          * @example
    1930          * hcap.preloadedApplication.getPreloadedApplicationList({
    1931          *      "onSuccess" : function(s) {
    1932          *          console.log("onSuccess : list length = " + s.list.length);
    1933          *          for (var i = 0; i < s.list.length; i++) {
    1934          *              console.log(
    1935          *                  "list[" + i + "].id = " + s.list[i].id +
    1936          *                  "list[" + i + "].title = " + s.list[i].title +
    1937          *                  "list[" + i + "].iconFilePath = " + s.list[i].iconFilePath
    1938          *              );
    1939          *          }
    1940          *      },
    1941          *      "onFailure" : function(f) {
    1942          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    1943          *      }
    1944          * });
    1945          */
    1946         hcap.preloadedApplication.getPreloadedApplicationList = function (param) {
    1947             hcap_command("get_preloaded_application_list", param);
    1948         };
    1949         /**
    1950          * Launches a preloaded application.<br>
    1951          * Following table specifies preloaded applications, their ids and parameters. (Supported preloaded applications are different according to TV model, but App IDs of preloaded applications should be same)<br>
    1952          * <table border=1 style="border: 1px;">
    1953          *     <b><tr><th>Application</th><th>id</th><th>parameters</th></tr></b>
    1954          *     <tr><td>3 Cats</td><td>244115188075859005</td><td></td></tr>
    1955          *     <tr><td>AccuWeather</td><td>144115188075855876</td><td></td></tr>
    1956          *     <tr><td>Amazon</td><td>144115188075859015</td><td></td></tr>
    1957          *     <tr><td>Arirang TV</td><td>144115188075859001</td><td></td></tr>
    1958          *     <tr><td>AR-Browser</td><td>201604201053010001</td><td>"{'params':{<br>
    1959          *                                                            'target':string, // launch url ex) 'http://url.com/adc3f'<br>
    1960          *                                                            'noiframe':string // This parameter is required when using 'target'. For security reasons, hotel TV is not allowed to use iframe. 'true': disable iframe, 'false': enable iframe<br>
    1961          *                                                        }, 'appDesc':{<br>
    1962          *                                                            'resolution':string, // ex) 'resolution':'1920x1080' or 'resolution':'1280x720'<br>
    1963          *                                                            'disableBackHistoryAPI':string, // 'true': The BACK key will be passed to CP App, 'false': The BACK key will be handled by webOS system browser for History Back operation<br>
    1964          *                                                            'vendorExtension':{'enableKeyboard':string} // 'true': The screen keyboard will be shown up when the input or textarea tag get focus, 'false': disable screen keyboard <br>
    1965          *                                                        }}"</td></tr>
    1966          *     <tr><td>Balda</td><td>144115188075859004</td><td></td></tr>
    1967          *     <tr><td>BBC-iPlayer</td><td>201604021129030008</td><td></td></tr>
    1968          *     <tr><td>BBC-Sports</td><td>201609281937030001</td><td></td></tr>
    1969          *     <tr><td>BBC-News</td><td>201609281937030002</td><td></td></tr>
    1970          *     <tr><td>Bluetooth Sound Sync</td><td>244115188075859015</td><td></td></tr>
    1971          *     <tr><td>Browser</td><td>144115188075855877</td><td>"{'params':{<br>
    1972          *                                                            'target':string, // url string. default is empty. ex) 'www.lge.com'<br>
    1973          *                                                            'fullMode':string, // full mode. default is 'false'. 'true' : full page mode, 'false' : general web browser mode<br>
    1974          *                                                            'newtab':string // default is 'true'. 'true' : new page is loaded on the new tab, 'false' : new page is loaded on the current tab.<br>
    1975          *                                                        }}"</td></tr>
    1976          *     <tr><td>Color Bridge</td><td>244115188075859012</td><td></td></tr>
    1977          *     <tr><td>Crackle</td><td>144115188075859014</td><td></td></tr>
    1978          *     <tr><td>Cutter Pillars</td><td>244115188075859011</td><td></td></tr>
    1979          *     <tr><td>External Connector</td><td>244115188075859007</td><td></td></tr>
    1980          *     <tr><td>Facebook</td><td>144115188075855874</td><td></td></tr>
    1981          *     <tr><td>Google Maps</td><td>144115188075855875</td><td></td></tr>
    1982          *     <tr><td>Gravity Ball</td><td>244115188075859009</td><td></td></tr>
    1983          *     <tr><td>Hulu</td><td>144115188075859017</td><td></td></tr>
    1984          *     <tr><td>K-Browser</td><td>244115188075859021</td><td>"{'params':{<br>
    1985          *                                                            'target':string, // launch url ex) 'http://url.com/adc3f'<br>
    1986          *                                                            'noiframe':string // This parameter is required when using 'target'. For security reasons, hotel TV is not allowed to use iframe. 'true': disable iframe, 'false': enable iframe<br>
    1987          *                                                        }, 'appDesc':{<br>
    1988          *                                                            'resolution':string, // ex) 'resolution':'1920x1080' or 'resolution':'1280x720'<br>
    1989          *                                                            'disableBackHistoryAPI':string, // 'true': The BACK key will be passed to CP App, 'false': The BACK key will be handled by webOS system browser for History Back operation<br>
    1990          *                                                            'vendorExtension':{'enableKeyboard':string} // 'true': The screen keyboard will be shown up when the input or textarea tag get focus, 'false': disable screen keyboard <br>
    1991          *                                                        }}"</td></tr>
    1992          *     <tr><td>Mainstream</td><td>244115188075859010</td><td></td></tr>
    1993          *     <tr><td>Mobile Connector</td><td>244115188075859006</td><td></td></tr>
    1994          *     <tr><td>Netflix</td><td>244115188075859013</td><td></td></tr>
    1995          *     <tr><td>NK-Browser</td><td>244115188075859022</td><td>"{'params':{<br>
    1996          *                                                            'target':string, // launch url ex) 'http://url.com/adc3f'<br>
    1997          *                                                            'noiframe':string // This parameter is required when using 'target'. For security reasons, hotel TV is not allowed to use iframe. 'true': disable iframe, 'false': enable iframe<br>
    1998          *                                                        }, 'appDesc':{<br>
    1999          *                                                            'resolution':string, // ex) 'resolution':'1920x1080' or 'resolution':'1280x720'<br>
    2000          *                                                            'disableBackHistoryAPI':string, // 'true': The BACK key will be passed to CP App, 'false': The BACK key will be handled by webOS system browser for History Back operation<br>
    2001          *                                                            'vendorExtension':{'enableKeyboard':string} // 'true': The screen keyboard will be shown up when the input or textarea tag get focus, 'false': disable screen keyboard <br>
    2002          *                                                        }}"</td></tr>
    2003          *     <tr><td>PC Connector</td><td>244115188075859008</td><td></td></tr>
    2004          *     <tr><td>Picasa</td><td>144115188075859003</td><td></td></tr>
    2005          *     <tr><td>Rhapsody</td><td>144115188075859018</td><td></td></tr>
    2006          *     <tr><td>Screen Share</td><td>144115188075855880</td><td></td></tr>
    2007          *     <tr><td>Skype</td><td>144115188075855878</td><td></td></tr>
    2008          *     <tr><td>SmartShare</td><td>144115188075855882</td><td></td></tr>
    2009          *     <tr><td>Tanks</td><td>144115188075859005</td><td></td></tr>
    2010          *     <tr><td>The Associated Press</td><td>144115188075859011</td><td></td></tr>
    2011          *     <tr><td>TV Hockey</td><td>244115188075859004</td><td></td></tr>
    2012          *     <tr><td>Twitter</td><td>144115188075855873</td><td></td></tr>
    2013          *     <tr><td>Ustream</td><td>144115188075859012</td><td></td></tr>
    2014          *     <tr><td>vTuner</td><td>144115188075859000</td><td></td></tr>
    2015          *     <tr><td>Wasu(TV)</td><td>244115188075859014</td><td></td></tr>
    2016          *     <tr><td>Wasu(DRAMA)</td><td>244115188075859016</td><td></td></tr>
    2017          *     <tr><td>Wasu(ENTERTAINMENT)</td><td>244115188075859017</td><td></td></tr>
    2018          *     <tr><td>Wasu(HD)</td><td>244115188075859018</td><td></td></tr>
    2019          *     <tr><td>Wasu(MOVIE)</td><td>244115188075859019</td><td></td></tr>
    2020          *     <tr><td>Wasu(SPORTS)</td><td>244115188075859020</td><td></td></tr>
    2021          *     <tr><td>YouTube</td><td>144115188075859002</td><td></td></tr>
    2022          * </table>
    2023          *
    2024          * @param {Object} param
    2025          * <ul>
    2026          *   <li>{String} param.id - preloaded application id to launch (0 ~ 2^64 - 1).</li>
    2027          *   <li>{String} param.parameters [Optional] - parameters in JSON type string for the preloaded application to be launched.</li>
    2028          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    2029          *   <pre class="code prettyprint">
    2030          *   param.onSuccess = function()
    2031          *       // No Parameter.
    2032          *   }</pre>
    2033          *   </li>
    2034          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    2035          *   <pre class="code prettyprint">
    2036          *   param.onFailure = function (param) {
    2037          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    2038          *   }</pre>
    2039          *   </li>
    2040          * </ul>
    2041          *
    2042          * @since 1.5.0
    2043          *
    2044          * @see
    2045          * <a href="hcap.preloadedApplication.html#.getPreloadedApplicationList">hcap.preloadedApplication.getPreloadedApplicationList()</a><br>
    2046          * <a href="hcap.preloadedApplication.html#.destroyPreloadedApplication">hcap.preloadedApplication.destroyPreloadedApplication()</a><br>
    2047          *
    2048          * @example
    2049          * hcap.preloadedApplication.launchPreloadedApplication({
    2050          *      "id" : "244115188075859022", // NK-Browser
    2051          *      "parameters" : "{
    2052          *          'target':'http://www.lge.com'
    2053          *      }",
    2054          *      "onSuccess" : function() {
    2055          *          console.log("onSuccess");
    2056          *      },
    2057          *      "onFailure" : function(f) {
    2058          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    2059          *      }
    2060          * });
    2061          */
    2062         hcap.preloadedApplication.launchPreloadedApplication = function (param) {
    2063             hcap_command("launch_preloaded_application", param);
    2064         };
    2065         /**
    2066          * Terminates the preloaded application.<br>
    2067          *
    2068          * @param {Object} param
    2069          * <ul>
    2070          *   <li>{String} param.id - preloaded application id to destroy (0 ~ 2^64 - 1).</li>
    2071          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    2072          *   <pre class="code prettyprint">
    2073          *   param.onSuccess = function()
    2074          *       // No Parameter.
    2075          *   }</pre>
    2076          *   </li>
    2077          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    2078          *   <pre class="code prettyprint">
    2079          *   param.onFailure = function (param) {
    2080          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    2081          *   }</pre>
    2082          *   </li>
    2083          * </ul>
    2084          *
    2085          * @since 1.19.0
    2086          *
    2087          * @see
    2088          * <a href="hcap.preloadedApplication.html#.getPreloadedApplicationList">hcap.preloadedApplication.getPreloadedApplicationList()</a><br>
    2089          * <a href="hcap.preloadedApplication.html#.launchPreloadedApplication">hcap.preloadedApplication.launchPreloadedApplication()</a><br>
    2090          *
    2091          * @example
    2092          * hcap.preloadedApplication.destroyPreloadedApplication({
    2093          *      "id" : "15265",
    2094          *      "onSuccess" : function() {
    2095          *          console.log("onSuccess");
    2096          *      },
    2097          *      "onFailure" : function(f) {
    2098          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    2099          *      }
    2100          * });
    2101          */
    2102         hcap.preloadedApplication.destroyPreloadedApplication = function (param) {
    2103             hcap_command("destroy_preloaded_application", param);
    2104         };
    2105         /**
    2106          * @namespace hcap.application
    2107          */
    2108         hcap.application = { };
    2109         /**
    2110          * Gets the LG Service XML Contents.<br>
    2111          *
    2112          * @param {Object} param
    2113          * <ul>
    2114          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    2115          *   <pre class="code prettyprint">
    2116          *   param.onSuccess = function (param) {
    2117          *       // {String} param.contents - current LG Service XML Contents.
    2118          *   }</pre>
    2119          *   </li>
    2120          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    2121          *   <pre class="code prettyprint">
    2122          *   param.onFailure = function (param) {
    2123          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    2124          *   }</pre>
    2125          *   </li>
    2126          * </ul>
    2127          *
    2128          * @since 1.20.1
    2129          *
    2130          * @see
    2131          * <a href="hcap.application.html#.getDefaultServiceXml">hcap.application.getDefaultServiceXml()</a><br>
    2132          * <a href="hcap.application.html#.getApplicationList">hcap.application.getApplicationList()</a><br>
    2133          * <a href="hcap.application.html#.launchApplication">hcap.application.launchApplication()</a><br>
    2134          * <a href="hcap.application.html#.destroyApplication">hcap.application.destroyApplication()</a><br>
    2135          *
    2136          * @example
    2137          * hcap.application.getServiceXml({
    2138          *      "onSuccess" : function(s) {
    2139          *          console.log("onSuccess : service xml = " + s.contents);
    2140          *      },
    2141          *      "onFailure" : function(f) {
    2142          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    2143          *      }
    2144          * });
    2145          */
    2146         hcap.application.getServiceXml = function (param) {
    2147             hcap_command("get_service_xml", param);
    2148         };
    2149         /**
    2150          * Gets the Default LG Service XML Contents for restoring preloaded application list.<br>
    2151          * This is worked only when the property "asl_mode" is "1".
    2152          *
    2153          * @param {Object} param
    2154          * <ul>
    2155          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    2156          *   <pre class="code prettyprint">
    2157          *   param.onSuccess = function (param) {
    2158          *       // {String} param.contents - default LG Service XML Contents.
    2159          *   }</pre>
    2160          *   </li>
    2161          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    2162          *   <pre class="code prettyprint">
    2163          *   param.onFailure = function (param) {
    2164          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    2165          *   }</pre>
    2166          *   </li>
    2167          * </ul>
    2168          *
    2169          * @since 1.20.1
    2170          *
    2171          * @see
    2172          * <a href="hcap.application.html#.getServiceXml">hcap.application.getServiceXml()</a><br>
    2173          * <a href="hcap.application.html#.getApplicationList">hcap.application.getApplicationList()</a><br>
    2174          * <a href="hcap.application.html#.launchApplication">hcap.application.launchApplication()</a><br>
    2175          * <a href="hcap.application.html#.destroyApplication">hcap.application.destroyApplication()</a><br>
    2176          * <a href="hcap.property.html#.getProperty">hcap.property.getProperty()</a><br>
    2177          *
    2178          * @example
    2179          * hcap.application.getDefaultServiceXml({
    2180          *      "onSuccess" : function(s) {
    2181          *          console.log("onSuccess : service xml = " + s.contents);
    2182          *      },
    2183          *      "onFailure" : function(f) {
    2184          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    2185          *      }
    2186          * });
    2187          */
    2188         hcap.application.getDefaultServiceXml = function (param) {
    2189             hcap_command("get_default_service_xml", param);
    2190         };
    2191         /**
    2192          * Gets the application list.<br>
    2193          * This is worked only when the property "asl_mode" is "1".
    2194          *
    2195          * @param {Object} param
    2196          * <ul>
    2197          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    2198          *   <pre class="code prettyprint">
    2199          *   param.onSuccess = function (param)
    2200          *       // {Array} param.list - application list supported by TV.
    2201          *       //         {Boolean} param.list[].valid - true if the application was installed.
    2202          *       //         {String} param.list[].title - application title.
    2203          *       //         {String} param.list[].appId - application id.
    2204          *       //         {Boolean} param.list[].deleted - true if the application was deleted.
    2205          *       //         {Boolean} param.list[].visible - true if the application can be shown at the webOS launcher.
    2206          *       //         {String} param.list[].version - application version.
    2207          *       //         {String} param.list[].iconPath - file path of icon for the application
    2208          *       //         {String} param.list[].reason - reason that the application was not installed.
    2209          *       //                 param.list example -
    2210          *       //                     "list" :  [
    2211          *       //                     { "valid": true, "title": "Web Browser", "appId": "com.webos.app.browser", "deleted": false, "visible": false, "version": "2.0.0", "iconPath" : "/icon/browser.png", "reason" : "" },
    2212          *       //                     { "valid": true, "title": "YouTube", "appId": "youtube.leanback.v4", "deleted": false, "visible": false, "version": "1.0.17", "iconPath" : "/icon/youtube.png", "reason" : "" }
    2213          *       //                     ]
    2214          *   }</pre>
    2215          *   </li>
    2216          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    2217          *   <pre class="code prettyprint">
    2218          *   param.onFailure = function (param) {
    2219          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    2220          *   }</pre>
    2221          *   </li>
    2222          * </ul>
    2223          *
    2224          * @since 1.20.1
    2225          *
    2226          * @see
    2227          * <a href="hcap.application.html#.getServiceXml">hcap.application.getServiceXml()</a><br>
    2228          * <a href="hcap.application.html#.getDefaultServiceXml">hcap.application.getDefaultServiceXml()</a><br>
    2229          * <a href="hcap.application.html#.launchApplication">hcap.application.launchApplication()</a><br>
    2230          * <a href="hcap.application.html#.destroyApplication">hcap.application.destroyApplication()</a><br>
    2231          * <a href="hcap.property.html#.getProperty">hcap.property.getProperty()</a><br>
    2232          *
    2233          * @example
    2234          * hcap.application.getApplicationList({
    2235          *      "onSuccess" : function(s) {
    2236          *          console.log("onSuccess : list length = " + s.list.length);
    2237          *          for (var i = 0; i < s.list.length; i++) {
    2238          *              console.log(
    2239          *                  "list[" + i + "].valid = " + s.list[i].valid +
    2240          *                  "list[" + i + "].title = " + s.list[i].title +
    2241          *                  "list[" + i + "].appId = " + s.list[i].appId +
    2242          *                  "list[" + i + "].deleted = " + s.list[i].deleted +
    2243          *                  "list[" + i + "].visible = " + s.list[i].visible +
    2244          *                  "list[" + i + "].version = " + s.list[i].version +
    2245          *                  "list[" + i + "].iconPath = " + s.list[i].iconPath +
    2246          *                  "list[" + i + "].reason = " + s.list[i].reason
    2247          *              );
    2248          *          }
    2249          *      },
    2250          *      "onFailure" : function(f) {
    2251          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    2252          *      }
    2253          * });
    2254          */
    2255         hcap.application.getApplicationList = function (param) {
    2256             hcap_command("get_application_list", param);
    2257         };
    2258         /**
    2259          * Launches a application.<br>
    2260          * This is worked only when the property "asl_mode" is "1".<br>
    2261          * Following table specifies applications, their ids and parameters. (Supported applications are different according to TV model, but App IDs of applications should be same)<br>
    2262          * <table border=1 style="border: 1px;">
    2263          *     <b><tr><th>Application</th><th>id</th><th>parameters</th></tr></b>
    2264          *     <tr><td>AccuWeather</td><td>accuweather</td><td></td></tr>
    2265          *     <tr><td>Al Jazeera</td><td>aljazeera</td><td></td></tr>
    2266          *     <tr><td>Amazon</td><td>amazon.html</td><td></td></tr>
    2267          *     <tr><td>AR Browser</td><td>com.zenith.app.arbrowser</td><td>"{<br>
    2268          *                                                            'target':string // launch url ex) 'www.lge.com'<br>
    2269          *                                                        }"</td></tr>
    2270          *     <tr><td>Arirang TV</td><td>arirang.tv</td><td></td></tr>
    2271          *     <tr><td>BBC</td><td>bbc</td><td></td></tr>
    2272          *     <tr><td>Bluetooth Sound Sync</td><td>com.webos.app.btaudiostreaming</td><td></td></tr>
    2273          *     <tr><td>Browser</td><td>com.webos.app.browser</td><td>"{'params':{<br>
    2274          *                                                            'target':string, // url string. default is empty. ex) 'www.lge.com'<br>
    2275          *                                                            'fullMode':string, // full mode. default is 'false'. 'true' : full page mode, 'false' : general web browser mode<br>
    2276          *                                                            'newtab':string // default is 'true'. 'true' : new page is loaded on the new tab, 'false' : new page is loaded on the current tab.<br>
    2277          *                                                        }}"</td></tr>
    2278          *     <tr><td>Color Bridge</td><td>ru.lgerp.colorbridge</td><td></td></tr>
    2279          *     <tr><td>Crackle</td><td>crackle</td><td></td></tr>
    2280          *     <tr><td>Cutter Pillars</td><td>ru.lgerp.cutterpillars101</td><td></td></tr>
    2281          *     <tr><td>Deezer</td><td>deezer</td><td></td></tr>
    2282          *     <tr><td>Dek-d</td><td>dek.d</td><td></td></tr>
    2283          *     <tr><td>Demand 5</td><td>demand5</td><td></td></tr>
    2284          *     <tr><td>Doonung</td><td>doonung</td><td></td></tr>
    2285          *     <tr><td>Euronews</td><td>euronews</td><td></td></tr>
    2286          *     <tr><td>External Connector</td><td>com.webos.app.externalconnector</td><td></td></tr>
    2287          *     <tr><td>Filmbox</td><td>com.1596591.186066</td><td></td></tr>
    2288          *     <tr><td>Gaiam TV (Yoga TV)</td><td>com.4155984.174234</td><td></td></tr>
    2289          *     <tr><td>GMM TV</td><td>gmm.tv</td><td></td></tr>
    2290          *     <tr><td>Google Maps</td><td>googlemaps</td><td></td></tr>
    2291          *     <tr><td>Gravity Ball</td><td>ru.lgerp.gravityball</td><td></td></tr>
    2292          *     <tr><td>HBO Go</td><td>com.3298171.179786</td><td></td></tr>
    2293          *     <tr><td>Hulu</td><td>hulu</td><td></td></tr>
    2294          *     <tr><td>Icflix</td><td>com.4115297.175561</td><td></td></tr>
    2295          *     <tr><td>Iran Tourism</td><td>iran.tourism</td><td></td></tr>
    2296          *     <tr><td>K-Browser</td><td>com.zenith.app.hbrowser</td><td>"{<br>
    2297          *                                                            'target':string // launch url ex) 'http://url.com/adc3f'<br>
    2298          *                                                        }"</td></tr>
    2299          *     <tr><td>KrobKruakao3</td><td>kkk</td><td></td></tr>
    2300          *     <tr><td>M Channel</td><td>com.4217698.175917</td><td></td></tr>
    2301          *     <tr><td>M Thai Sport</td><td>mthai.sport</td><td></td></tr>
    2302          *     <tr><td>Mainstream</td><td>com.ru.lgerp.mainstream</td><td></td></tr>
    2303          *     <tr><td>MLB</td><td>mlb</td><td></td></tr>
    2304          *     <tr><td>Mobile Connector</td><td>com.webos.app.mobileconnector</td><td></td></tr>
    2305          *     <tr><td>Mthai</td><td>mthai</td><td></td></tr>
    2306          *     <tr><td>Music</td><td>com.webos.app.music</td><td></td></tr>
    2307          *     <tr><td>Nation</td><td>nation</td><td></td></tr>
    2308          *     <tr><td>Netflix</td><td>netflix</td><td></td></tr>
    2309          *     <tr><td>NK-Browser</td><td>com.zenith.app.gbrowser</td><td>"{<br>
    2310          *                                                            'target':string // launch url ex) 'www.lge.com'<br>
    2311          *                                                        }"</td></tr>
    2312          *     <tr><td>Now TV</td><td>now.tv</td><td></td></tr>
    2313          *     <tr><td>NPO</td><td>153996.npouitzendinggemist</td><td></td></tr>
    2314          *     <tr><td>Pandora</td><td>com.12465.12351</td><td></td></tr>
    2315          *     <tr><td>PC Connector</td><td>com.webos.app.pcconnector</td><td></td></tr>
    2316          *     <tr><td>Photo & Video</td><td>com.webos.app.photovideo</td><td></td></tr>
    2317          *     <tr><td>Rhapsody</td><td>rhapsody</td><td></td></tr>
    2318          *     <tr><td>RTL XL</td><td>rtl</td><td></td></tr>
    2319          *     <tr><td>Screen Share</td><td>com.webos.app.miracast</td><td></td></tr>
    2320          *     <tr><td>SmartShare</td><td>com.webos.app.smartshare</td><td></td></tr>
    2321          *     <tr><td>Spotify</td><td>com.4795741.189428</td><td></td></tr>
    2322          *     <tr><td>Tanks</td><td>lgerp.com.tanks</td><td></td></tr>
    2323          *     <tr><td>TV Hockey</td><td>lgerp.com.tvhockey</td><td></td></tr>
    2324          *     <tr><td>Videoland</td><td>videoland2014</td><td></td></tr>
    2325          *     <tr><td>Voice TV</td><td>voice.tv</td><td></td></tr>
    2326          *     <tr><td>WoW TV</td><td>wow.tv</td><td></td></tr>
    2327          *     <tr><td>YouTube</td><td>youtube.leanback.v4</td><td></td></tr>
    2328          *     <tr><td>Yupp TV</td><td>yupptv</td><td></td></tr>
    2329          * </table>
    2330          *
    2331          * @param {Object} param
    2332          * <ul>
    2333          *   <li>{String} param.id - application id to launch.</li>
    2334          *   <li>{String} param.parameters [Optional] - parameters in JSON type string for the application to be launched.</li>
    2335          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    2336          *   <pre class="code prettyprint">
    2337          *   param.onSuccess = function()
    2338          *       // No Parameter.
    2339          *   }</pre>
    2340          *   </li>
    2341          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    2342          *   <pre class="code prettyprint">
    2343          *   param.onFailure = function (param) {
    2344          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    2345          *   }</pre>
    2346          *   </li>
    2347          * </ul>
    2348          *
    2349          * @since 1.20.1
    2350          *
    2351          * @see
    2352          * <a href="hcap.application.html#.getServiceXml">hcap.application.getServiceXml()</a><br>
    2353          * <a href="hcap.application.html#.getDefaultServiceXml">hcap.application.getDefaultServiceXml()</a><br>
    2354          * <a href="hcap.application.html#.getApplicationList">hcap.application.getApplicationList()</a><br>
    2355          * <a href="hcap.application.html#.destroyApplication">hcap.application.destroyApplication()</a><br>
    2356          * <a href="hcap.property.html#.getProperty">hcap.property.getProperty()</a><br>
    2357          *
    2358          * @example
    2359          * hcap.application.launchApplication({
    2360          *      "id" : "com.zenith.app.gbrowser", // NK-Browser
    2361          *      "parameters" : "{
    2362          *          'target':'http://www.lge.com'
    2363          *      }",
    2364          *      "onSuccess" : function() {
    2365          *          console.log("onSuccess");
    2366          *      },
    2367          *      "onFailure" : function(f) {
    2368          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    2369          *      }
    2370          * });
    2371          */
    2372         hcap.application.launchApplication = function (param) {
    2373             hcap_command("launch_application", param);
    2374         };
    2375         /**
    2376          * Terminates the application.<br>
    2377          * This is worked only when the property "asl_mode" is "1".
    2378          *
    2379          * @param {Object} param
    2380          * <ul>
    2381          *   <li>{String} param.id - application id to destroy.</li>
    2382          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    2383          *   <pre class="code prettyprint">
    2384          *   param.onSuccess = function()
    2385          *       // No Parameter.
    2386          *   }</pre>
    2387          *   </li>
    2388          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    2389          *   <pre class="code prettyprint">
    2390          *   param.onFailure = function (param) {
    2391          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    2392          *   }</pre>
    2393          *   </li>
    2394          * </ul>
    2395          *
    2396          * @since 1.20.1
    2397          *
    2398          * @see
    2399          * <a href="hcap.application.html#.getServiceXml">hcap.application.getServiceXml()</a><br>
    2400          * <a href="hcap.application.html#.getDefaultServiceXml">hcap.application.getDefaultServiceXml()</a><br>
    2401          * <a href="hcap.application.html#.getApplicationList">hcap.application.getApplicationList()</a><br>
    2402          * <a href="hcap.application.html#.launchApplication">hcap.application.launchApplication()</a><br>
    2403          * <a href="hcap.property.html#.getProperty">hcap.property.getProperty()</a><br>
    2404          *
    2405          * @example
    2406          * hcap.application.destroyApplication({
    2407          *      "id" : "accuweather",
    2408          *      "onSuccess" : function() {
    2409          *          console.log("onSuccess");
    2410          *      },
    2411          *      "onFailure" : function(f) {
    2412          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    2413          *      }
    2414          * });
    2415          */
    2416         hcap.application.destroyApplication = function (param) {
    2417             hcap_command("destroy_application", param);
    2418         };
    2419 		/**
    2420          * Install the applications.<br>
    2421          *
    2422          * @param {Object} param
    2423          * <ul>
    2424          *   <li>{Array} param.AppList [Required] - {String} applications id to install.</li>
    2425          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    2426          *   <pre class="code prettyprint">
    2427          *   param.onSuccess = function()
    2428          *       // No Parameter.
    2429          *   }</pre>
    2430          *   </li>
    2431          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    2432          *   <pre class="code prettyprint">
    2433          *   param.onFailure = function (param) {
    2434          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    2435          *   }</pre>
    2436          *   </li>
    2437          * </ul>
    2438          *
    2439          * @since 1.24.6
    2440          *
    2441          * @see
    2442          * <a href="hcap.application.html#.getApplicationList">hcap.application.getApplicationList()</a><br>
    2443          * <a href="hcap.application.html#.removeApplications">hcap.application.removeApplications()</a><br>
    2444          * <a href="hcap.application.html#.launchApplication">hcap.application.launchApplication()</a><br>
    2445          * <a href="hcap.application.html#.destroyApplication">hcap.application.destroyApplication()</a><br>
    2446          *
    2447          * @example
    2448          * hcap.application.installApplications({
    2449          *      "AppList" : ["com.ru.lgerp.mainstream", "ru.lgerp.gravityball"],
    2450          *      "onSuccess" : function() {
    2451          *          console.log("onSuccess");
    2452          *      },
    2453          *      "onFailure" : function(f) {
    2454          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    2455          *      }
    2456          * });
    2457          */
    2458         hcap.application.installApplications = function (param) {
    2459             hcap_command("install_applications", param);
    2460         };
    2461 		/**
    2462          * Uninstall the applications.<br>
    2463          *
    2464          * @param {Object} param
    2465          * <ul>
    2466          *   <li>{Array} param.AppList [Required] - {String} applications id to uninstall.</li>
    2467          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    2468          *   <pre class="code prettyprint">
    2469          *   param.onSuccess = function()
    2470          *       // No Parameter.
    2471          *   }</pre>
    2472          *   </li>
    2473          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    2474          *   <pre class="code prettyprint">
    2475          *   param.onFailure = function (param) {
    2476          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    2477          *   }</pre>
    2478          *   </li>
    2479          * </ul>
    2480          *
    2481          * @since 1.24.6
    2482          *
    2483          * @see
    2484          * <a href="hcap.application.html#.getApplicationList">hcap.application.getApplicationList()</a><br>
    2485          * <a href="hcap.application.html#.installApplications">hcap.application.installApplications()</a><br>
    2486          * <a href="hcap.application.html#.launchApplication">hcap.application.launchApplication()</a><br>
    2487          * <a href="hcap.application.html#.destroyApplication">hcap.application.destroyApplication()</a><br>
    2488          *
    2489          * @example
    2490          * hcap.application.removeApplications({
    2491          *      "AppList" : ["com.ru.lgerp.mainstream", "ru.lgerp.gravityball"],
    2492          *      "onSuccess" : function() {
    2493          *          console.log("onSuccess");
    2494          *      },
    2495          *      "onFailure" : function(f) {
    2496          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    2497          *      }
    2498          * });
    2499          */
    2500         hcap.application.removeApplications = function (param) {
    2501             hcap_command("remove_applications", param);
    2502         };
    2503         hcap.application.RegisterSIApplicationList = function (param) {
    2504             hcap_command("register_si_app_list", param);
    2505         };
    2506         /**
    2507          * @namespace hcap.video
    2508          */
    2509         hcap.video = { };
    2510         /**
    2511          * Gets the current video size.<br>
    2512          * Position and size parameters are on the basis of the resolution of the property "display_resolution".<br>
    2513          *
    2514          * @param {Object} param
    2515          * <ul>
    2516          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    2517          *   <pre class="code prettyprint">
    2518          *   param.onSuccess = function (param) {
    2519          *       // {Number} param.x - x position of the video
    2520          *       // {Number} param.y - y position of the video
    2521          *       // {Number} param.width - width of the video
    2522          *       // {Number} param.height - height of the video
    2523          *   }</pre>
    2524          *   </li>
    2525          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    2526          *   <pre class="code prettyprint">
    2527          *   param.onFailure = function (param) {
    2528          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    2529          *   }</pre>
    2530          *   </li>
    2531          * </ul>
    2532          *
    2533          * @since 1.3.1
    2534          *
    2535          * @see
    2536          * <a href="hcap.video.html#.setVideoSize">hcap.video.setVideoSize()</a><br>
    2537          *
    2538          * @example
    2539          * hcap.video.getVideoSize({
    2540          *      "onSuccess" : function(s) {
    2541          *          console.log("onSuccess : " +
    2542          *              "\n x = " + s.x +
    2543          *              "\n y = " + s.y +
    2544          *              "\n width = " + s.width +
    2545          *              "\n height = " + s.height);
    2546          *      },
    2547          *      "onFailure" : function(f) {
    2548          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    2549          *      }
    2550          * });
    2551          */
    2552         hcap.video.getVideoSize = function (param) {
    2553             hcap_command("get_video_size", param);
    2554         };
    2555         /**
    2556          * Resizes the video size.<br>
    2557          * Position and size parameters are on the basis of the resolution of the property "display_resolution".<br>
    2558          * Supported size values are dependent on the platform or the model.<br>
    2559          *
    2560          * @param {Object} param
    2561          * <ul>
    2562          *   <li>{Number} param.x - x position of the video.</li>
    2563          *   <li>{Number} param.y - y position of the video.</li>
    2564          *   <li>{Number} param.width - width of the video.</li>
    2565          *   <li>{Number} param.height - height of the video.</li>
    2566          *   <li>{Function} param.onSuccess [Optional] - success callback function.<br>
    2567          *           Setting to the same x/y/width/height as before will invoke this callback function.
    2568          *   <pre class="code prettyprint">
    2569          *   param.onSuccess = function() {
    2570          *       // No Parameter.
    2571          *   }</pre>
    2572          *   </li>
    2573          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    2574          *   <pre class="code prettyprint">
    2575          *   param.onFailure = function (param) {
    2576          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    2577          *   }</pre>
    2578          *   </li>
    2579          * </ul>
    2580          *
    2581          * @since 1.3.1
    2582          *
    2583          * @see
    2584          * <a href="hcap.video.html#.getVideoSize">hcap.video.getVideoSize()</a><br>
    2585          *
    2586          * @example
    2587          * hcap.video.setVideoSize({
    2588          *      "x" : 10,
    2589          *      "y" : 10,
    2590          *      "width" : 400,
    2591          *      "height" : 300,
    2592          *      "onSuccess" : function() {
    2593          *          console.log("onSuccess");
    2594          *      },
    2595          *      "onFailure" : function(f) {
    2596          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    2597          *      }
    2598          * });
    2599          */
    2600         hcap.video.setVideoSize = function (param) {
    2601             hcap_command("set_video_size", param);
    2602         };
    2603         /**
    2604          * Gets the transparency level of the OSD.<br>
    2605          *
    2606          * @param {Object} param
    2607          * <ul>
    2608          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    2609          *   <pre class="code prettyprint">
    2610          *   param.onSuccess = function (param) {
    2611          *       // {Number} param.level - transparency level of the OSD (transparent 0 ~ 100 opaque)
    2612          *   }</pre>
    2613          *   </li>
    2614          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    2615          *   <pre class="code prettyprint">
    2616          *   param.onFailure = function (param) {
    2617          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    2618          *   }</pre>
    2619          *   </li>
    2620          * </ul>
    2621          *
    2622          * @since 1.3.1
    2623          *
    2624          * @see
    2625          * <a href="hcap.video.html#.setOsdTransparencyLevel">hcap.video.setOsdTransparencyLevel()</a><br>
    2626          *
    2627          * @example
    2628          * hcap.video.getOsdTransparencyLevel({
    2629          *      "onSuccess" : function(s) {
    2630          *          console.log("onSuccess : level = " + s.level);
    2631          *      },
    2632          *      "onFailure" : function(f) {
    2633          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    2634          *      }
    2635          * });
    2636          */
    2637         hcap.video.getOsdTransparencyLevel = function (param) {
    2638             hcap_command("get_osd_transparency_level", param);
    2639         };
    2640         /**
    2641          * Sets the transparency level of the OSD.<br>
    2642          *
    2643          * @param {Object} param
    2644          * <ul>
    2645          *   <li>{Number} param.level [Required] - transparency level to be set (transparent 0 ~ 100 opaque)</li>
    2646          *   <li>{Function} param.onSuccess [Optional] - success callback function.<br>
    2647          *           Setting to same transparency level as before will invoke this callback function.
    2648          *   <pre class="code prettyprint">
    2649          *   param.onSuccess = function() {
    2650          *       // No Parameter.
    2651          *   }</pre>
    2652          *   </li>
    2653          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    2654          *   <pre class="code prettyprint">
    2655          *   param.onFailure = function (param) {
    2656          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    2657          *   }</pre>
    2658          *   </li>
    2659          * </ul>
    2660          *
    2661          * @since 1.3.1
    2662          *
    2663          * @see
    2664          * <a href="hcap.video.html#.getOsdTransparencyLevel">hcap.video.getOsdTransparencyLevel()</a><br>
    2665          *
    2666          * @example
    2667          * hcap.video.setOsdTransparencyLevel({
    2668          *      "level" : 30,
    2669          *      "onSuccess" : function() {
    2670          *          console.log("onSuccess");
    2671          *      },
    2672          *      "onFailure" : function(f) {
    2673          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    2674          *      }
    2675          * });
    2676          */
    2677         hcap.video.setOsdTransparencyLevel = function (param) {
    2678             hcap_command("set_osd_transparency_level", param);
    2679         };
    2680         /**
    2681          * Gets whether video mute is on or off.<br>
    2682          *
    2683          * @param {Object} param
    2684          * <ul>
    2685          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    2686          *   <pre class="code prettyprint">
    2687          *   param.onSuccess = function (param) {
    2688          *       // {Boolean} param.videoMute - true if the video mute is on. false if the video mute is off.
    2689          *   }</pre>
    2690          *   </li>
    2691          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    2692          *   <pre class="code prettyprint">
    2693          *   param.onFailure = function (param) {
    2694          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    2695          *   }</pre>
    2696          *   </li>
    2697          * </ul>
    2698          *
    2699          * @since 1.3.1
    2700          *
    2701          * @see
    2702          * <a href="hcap.video.html#.setVideoMute">hcap.video.setVideoMute()</a><br>
    2703          *
    2704          * @example
    2705          * hcap.video.isVideoMute({
    2706          *      "onSuccess" : function(s) {
    2707          *          console.log("onSuccess : videoMute = " + s.videoMute);
    2708          *      },
    2709          *      "onFailure" : function(f) {
    2710          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    2711          *      }
    2712          * });
    2713          */
    2714         hcap.video.isVideoMute = function (param) {
    2715             hcap_command("get_video_mute", param);
    2716         };
    2717         /**
    2718          * Turns on or off the video mute. When the channel is changed, the video mute setting is reset to off.<br>
    2719          *
    2720          * @param {Object} param
    2721          * <ul>
    2722          *   <li>{Boolean} param.videoMute [Required] - true to turn on video mute, else false.</li>
    2723          *   <li>{Function} param.onSuccess [Optional] - success callback function.<br>
    2724          *            Setting to the same setting as before will invoke this callback function.
    2725          *   <pre class="code prettyprint">
    2726          *   param.onSuccess = function() {
    2727          *       // No Parameter.
    2728          *   }</pre>
    2729          *   </li>
    2730          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    2731          *   <pre class="code prettyprint">
    2732          *   param.onFailure = function (param) {
    2733          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    2734          *   }</pre>
    2735          *   </li>
    2736          * </ul>
    2737          *
    2738          * @since 1.3.1
    2739          *
    2740          * @see
    2741          * <a href="hcap.video.html#.isVideoMute">hcap.video.isVideoMute()</a><br>
    2742          *
    2743          * @example
    2744          * hcap.video.setVideoMute({
    2745          *      "videoMute" : true,
    2746          *      "onSuccess" : function() {
    2747          *          console.log("onSuccess");
    2748          *      },
    2749          *      "onFailure" : function(f) {
    2750          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    2751          *      }
    2752          * });
    2753          */
    2754         hcap.video.setVideoMute = function (param) {
    2755             hcap_command("set_video_mute", param);
    2756         };
    2757         /**
    2758          * @namespace hcap.volume
    2759          */
    2760         hcap.volume = { };
    2761         /**
    2762          * Gets the current volume level of the TV.<br>
    2763          *
    2764          * @param {Object} param
    2765          * <ul>
    2766          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    2767          *   <pre class="code prettyprint">
    2768          *   param.onSuccess = function (param) {
    2769          *       // {Number} param.level - volume level of TV (0~100). -1 if mute
    2770          *   }</pre>
    2771          *   </li>
    2772          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    2773          *   <pre class="code prettyprint">
    2774          *   param.onFailure = function (param) {
    2775          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    2776          *   }</pre>
    2777          *   </li>
    2778          * </ul>
    2779          *
    2780          * @since 1.3.1
    2781          *
    2782          * @see
    2783          * <a href="hcap.volume.html#.setVolumeLevel">hcap.volume.setVolumeLevel()</a><br>
    2784          *
    2785          * @example
    2786          * hcap.volume.getVolumeLevel({
    2787          *      "onSuccess" : function(s) {
    2788          *          console.log("onSuccess : level = " + s.level);
    2789          *      },
    2790          *      "onFailure" : function(f) {
    2791          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    2792          *      }
    2793          * });
    2794          */
    2795         hcap.volume.getVolumeLevel = function (param) {
    2796             hcap_command("get_volume_level", param);
    2797         };
    2798         /**
    2799          * Sets the TV volume level.<br>
    2800          *
    2801          * @param {Object} param
    2802          * <ul>
    2803          *   <li>{Number} param.level [Required] - range is 0~100 or -1 if mute.</li>
    2804          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    2805          *   <pre class="code prettyprint">
    2806          *   param.onSuccess = function() {
    2807          *       // No Parameter.
    2808          *   }</pre>
    2809          *   </li>
    2810          *   <li>{Function} param.onFailure [Optional] - failure callback function.<br>
    2811          *            Setting to the same volume level as before will invoke this callback function.<br>
    2812          *            Setting to a value larger than the property "maximum_volume_level" will also invoke this callback function.
    2813          *   <pre class="code prettyprint">
    2814          *   param.onFailure = function (param) {
    2815          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    2816          *   }</pre>
    2817          *   </li>
    2818          * </ul>
    2819          *
    2820          * @since 1.3.1
    2821          *
    2822          * @see
    2823          * <a href="hcap.volume.html#.getVolumeLevel">hcap.volume.getVolumeLevel()</a><br>
    2824          *
    2825          * @example
    2826          * hcap.volume.setVolumeLevel({
    2827          *      "level" : 50,
    2828          *      "onSuccess" : function() {
    2829          *          console.log("onSuccess");
    2830          *      },
    2831          *      "onFailure" : function(f) {
    2832          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    2833          *      }
    2834          * });
    2835          */
    2836         hcap.volume.setVolumeLevel = function (param) {
    2837             hcap_command("set_volume_level", param);
    2838         };
    2839         /**
    2840          * Gets the current volume level of the external speaker.<br>
    2841          *
    2842          * @param {Object} param
    2843          * <ul>
    2844          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    2845          *   <pre class="code prettyprint">
    2846          *   param.onSuccess = function (param) {
    2847          *       // {Number} param.level - volume level of external speaker (0~100).
    2848          *   }</pre>
    2849          *   </li>
    2850          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    2851          *   <pre class="code prettyprint">
    2852          *   param.onFailure = function (param) {
    2853          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    2854          *   }</pre>
    2855          *   </li>
    2856          * </ul>
    2857          *
    2858          * @since 1.23.0
    2859          *
    2860          * @see
    2861          * <a href="hcap.volume.html#.setExternalSpeakerVolumeLevel">hcap.volume.setExternalSpeakerVolumeLevel()</a><br>
    2862          *
    2863          * @example
    2864          * hcap.volume.getExternalSpeakerVolumeLevel({
    2865          *      "onSuccess" : function(s) {
    2866          *          console.log("onSuccess : level = " + s.level);
    2867          *      },
    2868          *      "onFailure" : function(f) {
    2869          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    2870          *      }
    2871          * });
    2872          */
    2873         hcap.volume.getExternalSpeakerVolumeLevel = function (param) {
    2874             hcap_command("get_external_speaker_volume_level", param);
    2875         };
    2876         /**
    2877          * Sets the external speaker volume level.<br>
    2878          *
    2879          * @param {Object} param
    2880          * <ul>
    2881          *   <li>{Number} param.level [Required] - range is 0~100.</li>
    2882          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    2883          *   <pre class="code prettyprint">
    2884          *   param.onSuccess = function() {
    2885          *       // No Parameter.
    2886          *   }</pre>
    2887          *   </li>
    2888          *   <li>{Function} param.onFailure [Optional] - failure callback function.<br>
    2889          *            Setting to the same volume level as before will invoke this callback function.<br>
    2890          *   <pre class="code prettyprint">
    2891          *   param.onFailure = function (param) {
    2892          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    2893          *   }</pre>
    2894          *   </li>
    2895          * </ul>
    2896          *
    2897          * @since 1.23.0
    2898          *
    2899          * @see
    2900          * <a href="hcap.volume.html#.getExternalSpeakerVolumeLevel">hcap.volume.getExternalSpeakerVolumeLevel()</a><br>
    2901          *
    2902          * @example
    2903          * hcap.volume.setExternalSpeakerVolumeLevel({
    2904          *      "level" : 50,
    2905          *      "onSuccess" : function() {
    2906          *          console.log("onSuccess");
    2907          *      },
    2908          *      "onFailure" : function(f) {
    2909          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    2910          *      }
    2911          * });
    2912          */
    2913         hcap.volume.setExternalSpeakerVolumeLevel = function (param) {
    2914             hcap_command("set_external_speaker_volume_level", param);
    2915         };
    2916         /**
    2917          * Gets the current volume level of the Headphone.<br>
    2918          *
    2919          * @param {Object} param
    2920          * <ul>
    2921          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    2922          *   <pre class="code prettyprint">
    2923          *   param.onSuccess = function (param) {
    2924          *       // {Number} param.level - volume level of Headphone (0~100).
    2925          *   }</pre>
    2926          *   </li>
    2927          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    2928          *   <pre class="code prettyprint">
    2929          *   param.onFailure = function (param) {
    2930          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    2931          *   }</pre>
    2932          *   </li>
    2933          * </ul>
    2934          *
    2935          * @since 1.22.0
    2936          *
    2937          * @see
    2938          * <a href="hcap.volume.html#.getHealthcareHeadphoneMode">hcap.volume.getHealthcareHeadphoneMode()</a><br>
    2939          * <a href="hcap.volume.html#.setHealthcareHeadphoneMode">hcap.volume.setHealthcareHeadphoneMode()</a><br>
    2940          * <a href="hcap.volume.html#.setHeadphoneVolumeLevel">hcap.volume.setHeadphoneVolumeLevel()</a><br>
    2941          *
    2942          * @example
    2943          * hcap.volume.getHeadphoneVolumeLevel({
    2944          *      "onSuccess" : function(s) {
    2945          *          console.log("onSuccess : level = " + s.level);
    2946          *      },
    2947          *      "onFailure" : function(f) {
    2948          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    2949          *      }
    2950          * });
    2951          */
    2952         hcap.volume.getHeadphoneVolumeLevel = function (param) {
    2953             hcap_command("get_headphone_volume_level", param);
    2954         };
    2955         /**
    2956          * Sets the Headphone volume level.<br>
    2957          * This is worked only when the healthcare headphone mode is enabled.<br>
    2958          *
    2959          * @param {Object} param
    2960          * <ul>
    2961          *   <li>{Number} param.level [Required] - range is 0~100.</li>
    2962          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    2963          *   <pre class="code prettyprint">
    2964          *   param.onSuccess = function() {
    2965          *       // No Parameter.
    2966          *   }</pre>
    2967          *   </li>
    2968          *   <li>{Function} param.onFailure [Optional] - failure callback function.<br>
    2969          *            Setting to the same volume level as before will invoke this callback function.<br>
    2970          *   <pre class="code prettyprint">
    2971          *   param.onFailure = function (param) {
    2972          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    2973          *   }</pre>
    2974          *   </li>
    2975          * </ul>
    2976          *
    2977          * @since 1.22.0
    2978          *
    2979          * @see
    2980          * <a href="hcap.volume.html#.getHealthcareHeadphoneMode">hcap.volume.getHealthcareHeadphoneMode()</a><br>
    2981          * <a href="hcap.volume.html#.setHealthcareHeadphoneMode">hcap.volume.setHealthcareHeadphoneMode()</a><br>
    2982          * <a href="hcap.volume.html#.getHeadphoneVolumeLevel">hcap.volume.getHeadphoneVolumeLevel()</a><br>
    2983          *
    2984          * @example
    2985          * hcap.volume.setHeadphoneVolumeLevel({
    2986          *      "level" : 50,
    2987          *      "onSuccess" : function() {
    2988          *          console.log("onSuccess");
    2989          *      },
    2990          *      "onFailure" : function(f) {
    2991          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    2992          *      }
    2993          * });
    2994          */
    2995         hcap.volume.setHeadphoneVolumeLevel = function (param) {
    2996             hcap_command("set_headphone_volume_level", param);
    2997         };
    2998         /**
    2999          * Sets the healthcare headphone mode is enabled or disabled.<br>
    3000          *
    3001          * @param {Object} param
    3002          * <ul>
    3003          *   <li>{Boolean} param.enable [Required] - true : enable to healthcare headphone mode, false : disable.</li>
    3004          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    3005          *   <pre class="code prettyprint">
    3006          *   param.onSuccess = function() {
    3007          *       // No Parameter.
    3008          *   }</pre>
    3009          *   </li>
    3010          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    3011          *   <pre class="code prettyprint">
    3012          *   param.onFailure = function (param) {
    3013          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    3014          *   }</pre>
    3015          *   </li>
    3016          * </ul>
    3017          *
    3018          * @since 1.22.0
    3019          *
    3020          * @see
    3021          * <a href="hcap.volume.html#.getHealthcareHeadphoneMode">hcap.volume.getHealthcareHeadphoneMode()</a><br>
    3022          * <a href="hcap.volume.html#.getHeadphoneVolumeLevel">hcap.volume.getHeadphoneVolumeLevel()</a><br>
    3023          * <a href="hcap.volume.html#.setHeadphoneVolumeLevel">hcap.volume.setHeadphoneVolumeLevel()</a><br>
    3024          * <a href="_global_.html#event:ui_value_changed">{Event} ui_value_changed</a><br>
    3025          *
    3026          * @example
    3027          * hcap.volume.setHealthcareHeadphoneMode({
    3028          *      "enable" : true,
    3029          *      "onSuccess" : function() {
    3030          *          console.log("onSuccess");
    3031          *      },
    3032          *      "onFailure" : function(f) {
    3033          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    3034          *      }
    3035          * });
    3036          */
    3037         hcap.volume.setHealthcareHeadphoneMode = function (param) {
    3038             hcap_command("set_healthcare_headphone_mode", param);
    3039         };
    3040         /**
    3041          * Gets whether healthcare headphone mode is enabled or disabled.<br>
    3042          *
    3043          * @param {Object} param
    3044          * <ul>
    3045          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    3046          *   <pre class="code prettyprint">
    3047          *   param.onSuccess = function (param) {
    3048          *       // {Boolean} param.enable - true if the healthcare headphone mode is enabled. false if the healthcare headphone mode is disabled.
    3049          *   }</pre>
    3050          *   </li>
    3051          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    3052          *   <pre class="code prettyprint">
    3053          *   param.onFailure = function (param) {
    3054          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    3055          *   }</pre>
    3056          *   </li>
    3057          * </ul>
    3058          *
    3059          * @since 1.22.0
    3060          *
    3061          * @see
    3062          * <a href="hcap.volume.html#.setHealthcareHeadphoneMode">hcap.volume.setHealthcareHeadphoneMode()</a><br>
    3063          * <a href="hcap.volume.html#.getHeadphoneVolumeLevel">hcap.volume.getHeadphoneVolumeLevel()</a><br>
    3064          * <a href="hcap.volume.html#.setHeadphoneVolumeLevel">hcap.volume.setHeadphoneVolumeLevel()</a><br>
    3065          *
    3066          * @example
    3067          * hcap.volume.getHealthcareHeadphoneMode({
    3068          *      "onSuccess" : function (param) {
    3069          *          console.log("onSuccess : healthcare headphone mode = " + param.enable);
    3070          *      },
    3071          *      "onFailure" : function(f) {
    3072          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    3073          *      }
    3074          * });
    3075          */
    3076         hcap.volume.getHealthcareHeadphoneMode = function (param) {
    3077             hcap_command("get_healthcare_headphone_mode", param);
    3078         };
    3079         /**
    3080          * @namespace hcap.channel
    3081          */
    3082         hcap.channel = {};
    3083         /**
    3084          * No stream PID.
    3085          * @since 1.3.1
    3086          * @constant
    3087          */
    3088         hcap.channel.NO_STREAM_PID = 0x1fff;
    3089         /**
    3090          * @namespace ChannelType
    3091          */
    3092         hcap.channel.ChannelType = {
    3093             /**
    3094              * Unknown channel type.
    3095              * @since 1.3.1
    3096              * @constant
    3097              */
    3098             UNKNOWN             : 0,
    3099             /**
    3100              * RF A/V channel type.
    3101              * @since 1.3.1
    3102              * @constant
    3103              */
    3104             RF                  : 1,
    3105             /**
    3106              * IP A/V channel type.
    3107              * @since 1.3.1
    3108              * @constant
    3109              */
    3110             IP                  : 2,
    3111             /**
    3112              * RF Data channel type.
    3113              * @since 1.3.1
    3114              * @constant
    3115              */
    3116             RF_DATA             : 3,
    3117             /**
    3118              * IP Data channel type.
    3119              * @since 1.3.1
    3120              * @constant
    3121              */
    3122             IP_DATA             : 4
    3123         };
    3124         /**
    3125          * @namespace hcap.channel.Polarization
    3126          */
    3127         hcap.channel.Polarization = {
    3128             /**
    3129              * Unknown Polarization.
    3130              * @since 1.12.0
    3131              * @constant
    3132              */
    3133             UNKNOWN : 0x00,
    3134             /**
    3135              * Vertical mode.
    3136              * @since 1.12.0
    3137              * @constant
    3138              */
    3139             VERTICAL : 0x01,
    3140             /**
    3141              * Horizontal mode.
    3142              * @since 1.12.0
    3143              * @constant
    3144              */
    3145             HORIZONTAL : 0x02,
    3146             /**
    3147              * Left hand circular mode.
    3148              * @since 1.12.0
    3149              * @constant
    3150              */
    3151             LEFT_HAND_CIRCULAR : 0x03,
    3152             /**
    3153              * Right hand circular mode.
    3154              * @since 1.12.0
    3155              * @constant
    3156              */
    3157             RIGHT_HAND_CIRCULAR : 0x04
    3158         };
    3159         /**
    3160          * @namespace hcap.channel.RfBroadcastType
    3161          */
    3162         hcap.channel.RfBroadcastType = {
    3163             /**
    3164              * Unknown RF broadcast type.
    3165              * @since 1.3.1
    3166              * @constant
    3167              */
    3168             UNKNOWN        : 0x00,
    3169             /**
    3170              * (North America) ATSC, (Europe) DVB-T , (Japan/South America) ISDB-T;
    3171              * @since 1.3.1
    3172              * @constant
    3173              */
    3174             TERRESTRIAL    : 0x10,
    3175             /**
    3176              * (Europe) DVB-T2;
    3177              * @since 1.18.4
    3178              * @constant
    3179              */
    3180             TERRESTRIAL_2  : 0x11,
    3181             /**
    3182              * (Europe) DVB-S , (Japan/South America) ISDB-S.
    3183              * @since 1.3.1
    3184              * @constant
    3185              */
    3186             SATELLITE      : 0x20,
    3187             /**
    3188              * (Europe) DVB-S2.
    3189              * @since 1.12.0
    3190              * @constant
    3191              */
    3192             SATELLITE_2      : 0x21,
    3193             /**
    3194              * (Japan) ISDB-CS1.
    3195              * @since 1.23.2
    3196              * @constant
    3197              */
    3198             SATELLITE_CS1      : 0x22,
    3199             /**
    3200              * (Japan) ISDB-CS2.
    3201              * @since 1.23.2
    3202              * @constant
    3203              */
    3204             SATELLITE_CS2      : 0x23,
    3205             /**
    3206              * (Japan) ISDB-S3 BS.
    3207              * @since 1.23.2
    3208              * @constant
    3209              */
    3210             SATELLITE_S3_BS      : 0x24,
    3211             /**
    3212              * (Japan) ISDB-S3 CS.
    3213              * @since 1.23.2
    3214              * @constant
    3215              */
    3216             SATELLITE_S3_CS      : 0x25,
    3217             /**
    3218              * (North America) ATSC, (Europe) DVB-C , (Japan/South America) ISDB-C.
    3219              * @since 1.3.1
    3220              * @constant
    3221              */
    3222             CABLE          : 0x30,
    3223             /**
    3224              * (North America) Cable - Standard.
    3225              * @since 1.3.1
    3226              * @constant
    3227              */
    3228             CABLE_STD      : 0x31,
    3229             /**
    3230              * (North America) Cable - Harmonic related carrier.
    3231              * @since 1.3.1
    3232              * @constant
    3233              */
    3234             CABLE_HRC      : 0x32,
    3235             /**
    3236              * (North America) Cable - Incremental related carrier.
    3237              * @since 1.3.1
    3238              * @constant
    3239              */
    3240             CABLE_IRC      : 0x33,
    3241             /**
    3242              * Analog - Phase Alternating Line BG.
    3243              * @since 1.6.0
    3244              * @constant
    3245              */
    3246             ANALOG_PAL_BG  : 0x40,
    3247             /**
    3248              * Analog - Phase Alternating Line DK.
    3249              * @since 1.6.0
    3250              * @constant
    3251              */
    3252             ANALOG_PAL_DK  : 0x41,
    3253             /**
    3254              * Analog - Phase Alternating Line I.
    3255              * @since 1.6.0
    3256              * @constant
    3257              */
    3258             ANALOG_PAL_I   : 0x42,
    3259             /**
    3260              * Analog - Phase Alternating Line M.
    3261              * @since 1.6.0
    3262              * @constant
    3263              */
    3264             ANALOG_PAL_M   : 0x43,
    3265             /**
    3266              * Analog - Phase Alternating Line N.
    3267              * @since 1.6.0
    3268              * @constant
    3269              */
    3270             ANALOG_PAL_N   : 0x44,
    3271             /**
    3272              * Analog - SECAM BG.
    3273              * @since 1.6.0
    3274              * @constant
    3275              */
    3276             ANALOG_SECAM_BG : 0x45,
    3277             /**
    3278              * Analog - SECAM DK.
    3279              * @since 1.6.0
    3280              * @constant
    3281              */
    3282             ANALOG_SECAM_DK : 0x46,
    3283             /**
    3284              * Analog - SECAM L.
    3285              * @since 1.6.0
    3286              * @constant
    3287              */
    3288             ANALOG_SECAM_L : 0x47,
    3289             /**
    3290              * (North America) Analog television system that is used in most of North America.
    3291              * @since 1.6.0
    3292              * @constant
    3293              */
    3294             ANALOG_NTSC    : 0x48,
    3295             /**
    3296              * AIR ATSC 3.0 channel
    3297              * @since 1.21.0
    3298              * @constant
    3299              */
    3300             TERRESTRIAL_ATSC3    : 0x50,
    3301             /**
    3302              * CABLE ATSC 3.0 channel
    3303              * @since 1.21.0
    3304              * @constant
    3305              */
    3306             CABLE_ATSC3    : 0x51
    3307         };
    3308         /**
    3309          * @namespace hcap.channel.IpBroadcastType
    3310          */
    3311         hcap.channel.IpBroadcastType = {
    3312             /**
    3313              * Unknown IP broadcast type.
    3314              * @since 1.3.1
    3315              * @constant
    3316              */
    3317             UNKNOWN        : 0x00,
    3318             /**
    3319              * UDP broadcast type in IP channel.
    3320              * @since 1.3.1
    3321              * @constant
    3322              */
    3323             UDP            : 0x10,
    3324             /**
    3325              * RTP broadcast type in IP channel.
    3326              * @since 1.3.1
    3327              * @constant
    3328              */
    3329             RTP            : 0x20
    3330         };
    3331         /**
    3332          * @namespace hcap.channel.VideoStreamType
    3333          */
    3334         hcap.channel.VideoStreamType = {
    3335             /**
    3336              * ISO/IEC 11172-2 MPEG-1 Part2: VIDEO.
    3337              * @since 1.3.1
    3338              * @constant
    3339              */
    3340             MPEG1          : 0x01,
    3341             /**
    3342              * ISO/IEC 13818-2 MPEG-2 Part2: VIDEO.
    3343              * @since 1.3.1
    3344              * @constant
    3345              */
    3346             MPEG2          : 0x02,
    3347             /**
    3348              * ISO/IEC 14496-2 MPEG-4 Part2: VISUAL.
    3349              * @since 1.3.1
    3350              * @constant
    3351              */
    3352             MPEG4_VISUAL   : 0x10,
    3353             /**
    3354              * ISO/IEC 14496-10 MPEG-4 Part10: AVC/ITU-T H.264.
    3355              * @since 1.3.1
    3356              * @constant
    3357              */
    3358             MPEG4_AVC_H264 : 0x1B,
    3359             /**
    3360              * ISO/IEC 23008-2: ITU-T H.265.
    3361              * @since 1.19.0
    3362              * @constant
    3363              */
    3364             HEVC           : 0x24,
    3365             /**
    3366              * AVS Video.
    3367              * @since 1.3.1
    3368              * @constant
    3369              */
    3370             AVS            : 0x42
    3371         };
    3372         /**
    3373          * @namespace hcap.channel.AudioStreamType
    3374          */
    3375         hcap.channel.AudioStreamType = {
    3376             /**
    3377              * ISO/IEC 11172-3 MPEG-1 Part3: AUDIO
    3378              * @since 1.3.1
    3379              * @constant
    3380              */
    3381             MPEG1          : 0x03,
    3382             /**
    3383              * ISO/IEC 13818-3 MPEG-2 Part3: AUDIO
    3384              * @since 1.3.1
    3385              * @constant
    3386              */
    3387             MPEG2          : 0x04,
    3388             /**
    3389              * ISO/IEC 13818-7 MPEG-2 Part7: AAC.
    3390              * @since 1.3.1
    3391              * @constant
    3392              */
    3393             MPEG2_AAC      : 0x0F,
    3394             /**
    3395              * ISO/IEC 14496-3 MPEG-4 Part3: AUDIO AAC/HEAAC.
    3396              * @since 1.3.1
    3397              * @constant
    3398              */
    3399             MPEG4_HEAAC    : 0x11,
    3400             /**
    3401              * DOLBY AC-3_AUDIO.
    3402              * @since 1.3.1
    3403              * @constant
    3404              */
    3405             AC3            : 0x81,
    3406             /**
    3407              * DOLBY AC-3+(E-AC3).
    3408              * @since 1.3.1
    3409              * @constant
    3410              */
    3411             EAC3           : 0x82,
    3412             /**
    3413              * deprecated since 1.6.0
    3414              * @constant
    3415              */
    3416             ANALOG_BG      : 0x100,
    3417             /**
    3418              * deprecated since 1.6.0
    3419              * @constant
    3420              */
    3421             ANALOG_I       : 0x101,
    3422             /**
    3423              * deprecated since 1.6.0
    3424              * @constant
    3425              */
    3426             ANALOG_DK      : 0x102,
    3427             /**
    3428              * deprecated since 1.6.0
    3429              * @constant
    3430              */
    3431             ANALOG_L       : 0x103,
    3432             /**
    3433              * deprecated since 1.6.0
    3434              * @constant
    3435              */
    3436             ANALOG_MN      : 0x104,
    3437             /**
    3438              * deprecated since 1.6.0
    3439              * @constant
    3440              */
    3441             ANALOG_LP      : 0x105,
    3442             /**
    3443              * deprecated since 1.6.0
    3444              * @constant
    3445              */
    3446             ANALOG_END     : 0x106
    3447         };
    3448         /**
    3449          * @namespace hcap.channel.InbandDataServiceType
    3450          */
    3451         hcap.channel.InbandDataServiceType = {
    3452             /**
    3453              * Unknown inband data service type.
    3454              * @since 1.6.0
    3455              * @constant
    3456              */
    3457             UNKNOWN : 0x00,
    3458             /**
    3459              * MHP.
    3460              * @since 1.6.0
    3461              * @constant
    3462              */
    3463             MHP : 0x01,
    3464             /**
    3465              * MHEG.
    3466              * @since 1.6.0
    3467              * @constant
    3468              */
    3469             MHEG : 0x02,
    3470             /**
    3471              * HBBTV.
    3472              * @since 1.6.0
    3473              * @constant
    3474              */
    3475             HBBTV : 0x03,
    3476             /**
    3477              * There is no data service.
    3478              * @since 1.8.0
    3479              * @constant
    3480              */
    3481             NONE : 0x04
    3482         };
    3483         /**
    3484          * @namespace hcap.channel.ChannelStatus
    3485          */
    3486         hcap.channel.ChannelStatus = {
    3487             /**
    3488              * Unknown channel status.
    3489              * @since 1.12.0
    3490              * @constant
    3491              */
    3492             UNKNOWN : 0x00,
    3493             /**
    3494              * Audio and video are not blocked.
    3495              * @since 1.14.0
    3496              * @constant
    3497              */
    3498             AUDIO_VIDEO_NOT_BLOCKED : 0x10,
    3499             AV_DISPLAYED : 0x10,
    3500             /**
    3501              * Audio and video are blocked.
    3502              * @since 1.14.0
    3503              * @constant
    3504              */
    3505             AUDIO_VIDEO_BLOCKED : 0x21,
    3506             NO_SIGNAL : 0x21,
    3507             /**
    3508              * Only audio is blocked.
    3509              * @since 1.14.0
    3510              * @constant
    3511              */
    3512             AUDIO_ONLY_BLOCKED : 0x22,
    3513             /**
    3514              * Only video is blocked.
    3515              * @since 1.14.0
    3516              * @constant
    3517              */
    3518             VIDEO_ONLY_BLOCKED : 0x23
    3519         };
    3520         /**
    3521          * Requests to change the current channel.<br>
    3522          * The result for the channel change operation can be obtained by registering the
    3523          * <a href="_global_.html#event:channel_changed">{Event} channel_changed</a><br><br>
    3524          *
    3525          * For channel parameters, TV will support only one channel class.<br><br>
    3526          *
    3527          * <div align=center>
    3528          * <table class="hcap_spec" width=850>
    3529          *   <thead>
    3530          *     <tr><th colspan="3">Channel Class & Parameters</th></tr>
    3531          *   </thead>
    3532          *   <tbody>
    3533          *     <tr class="odd"><th rowspan="8">AV Channel</th>
    3534          *                     <th class="left">RF channel class 1 (supported in only US model)</th><td class="left">logicalNumber</td></tr>
    3535          *     <tr            ><th class="left">RF channel class 2 (supported in only EU model)</th><td class="left">frequency + programNumber. (for analog channel, programNumber = 0)</td></tr>
    3536          *     <tr class="odd"><th class="left">RF channel class 3 (supported in only US model)</th><td class="left">majorNumber + minorNumber. (for analog channel, minorNumber = 0)</td></tr>
    3537          *     <tr            ><th class="left">RF channel class 4 (supported in only EU model)</th><td class="left">frequency + programNumber + satelliteId + polarization</td></tr>
    3538          *     <tr class="odd"><th class="left">RF channel class 5 (supported in only EU model)</th><td class="left">frequency + programNumber + plpId. (rfBroadcastType = hcap.channel.RfBroadcastType.TERRESTRIAL_2)</td></tr>
    3539          *     <tr            ><th class="left">RF channel class 6 (supported in only US model)</th><td class="left">majorNumber + minorNumber + plpId. (rfBroadcastType = hcap.channel.RfBroadcastType.TERRESTRIAL_ATSC3, hcap.channel.RfBroadcastType.CABLE_ATSC3)</td></tr>
    3540          *     <tr class="odd"><th class="left">IP channel class 1 (supported in only US model)</th><td class="left">logicalNumber</td></tr>
    3541          *     <tr            ><th class="left">IP channel class 2 (supported in both EU model and US model)</th><td class="left">ip + port</td></tr>
    3542          *
    3543          *     <tr class="odd"><th rowspan="4">Data Channel</th>
    3544          *                     <th class="left">RF channel class 1 (not supported)</th><td class="left"> </td></tr>
    3545          *     <tr            ><th class="left">RF channel class 2 (supported in both EU model and US model)</th><td class="left">frequency + programNumber (required)</td></tr>
    3546          *     <tr class="odd"><th class="left">IP channel class 1 (not supported)</th><td class="left"> </td></tr>
    3547          *     <tr            ><th class="left">IP channel class 2 (supported in both EU model and US model)</th><td class="left">ip + port (required)</td></tr>
    3548          *
    3549          *   </tbody>
    3550          * </table>
    3551          * </div>
    3552          * <br>
    3553          *
    3554          * If a channel with more than one Channel Class is requested to change, then next priority table will be applied.<br>
    3555          * RF channel class 1 is 'X' when logicalNumber is 0.<br>
    3556          * RF channel class 2 is 'X' when frequency is 0.<br>
    3557          * RF channel class 3 is 'X' when majorNumber is 0.<br>
    3558          * RF channel class 4 is 'X' when satelliteId is 0.<br>
    3559          * IP channel class 1 is 'X' when logicalNumber is 0.<br>
    3560          * IP channel class 2 is 'X' when ip is "0" and port is 0.<br>
    3561          * RF channel class 5 is only when the channel type is hcap.channel.RfBroadcastType.TERRESTRIAL_2 and only frequency + programNumber + plpId take affect.<br>
    3562          * RF channel class 6 is only when the channel type is hcap.channel.RfBroadcastType.TERRESTRIAL_ATSC3 or hcap.channel.RfBroadcastType.CABLE_ATSC3 and only majorNumber + minorNumber + plpId take affect.<br>
    3563          * Other cases than following table will be treated as invalid channel combinations.<br>
    3564          *
    3565          * <div align=center>
    3566          * <table class="hcap_spec" width=850>
    3567          *   <thead>
    3568          *     <tr>
    3569          *       <th>RF channel class 1<br> (logicalNumber)</th>
    3570          *       <th>RF channel class 2<br> (frequency + programNumber)</th>
    3571          *       <th>RF channel class 3<br> (majorNumber + minorNumber)</th>
    3572          *       <th>RF channel class 4<br> (frequency + programNumber + satelliteId + polarization)</th>
    3573          *       <th>Effective Channel Class</th>
    3574          *     </tr>
    3575          *   </thead>
    3576          *   <tbody>
    3577          *     <tr class="odd"><td>X</td><td>X</td><td>X</td><td>X</td><td>RF channel class 1</td></tr>
    3578          *     <tr            ><td>O</td><td>X</td><td>X</td><td>X</td><td>RF channel class 1</td></tr>
    3579          *     <tr class="odd"><td>X</td><td>O</td><td>X</td><td>X</td><td>RF channel class 2</td></tr>
    3580          *     <tr            ><td>X</td><td>X</td><td>O</td><td>X</td><td>RF channel class 3</td></tr>
    3581          *     <tr class="odd"><td>X</td><td>-</td><td>X</td><td>O</td><td>RF channel class 4</td></tr>
    3582          *     <tr            ><td>O</td><td>O</td><td>X</td><td>X</td><td>RF channel class 2</td></tr>
    3583          *     <tr class="odd"><td>O</td><td>X</td><td>O</td><td>X</td><td>RF channel class 3</td></tr>
    3584          *     <tr            ><td>O</td><td>-</td><td>X</td><td>O</td><td>RF channel class 4</td></tr>
    3585          *   </tbody>
    3586          *   <tfoot>
    3587          *     <tr><th colspan="5">RF Channel</th></tr>
    3588          *   </tfoot>
    3589          * </table>
    3590          * </div>
    3591          * <br>
    3592          *
    3593          * <div align=center>
    3594          * <table class="hcap_spec" width=850>
    3595          *   <thead>
    3596          *     <tr>
    3597          *       <th>IP channel class 1<br> (logicalNumber)</th>
    3598          *       <th>IP channel class 2<br> (ip + port)</th>
    3599          *       <th>Effective Channel Class</th>
    3600          *     </tr>
    3601          *   </thead>
    3602          *   <tbody>
    3603          *     <tr class="odd"><td>X</td><td>X</td><td>IP channel class 1</td></tr>
    3604          *     <tr            ><td>O</td><td>X</td><td>IP channel class 1</td></tr>
    3605          *     <tr class="odd"><td>X</td><td>O</td><td>IP channel class 2</td></tr>
    3606          *     <tr            ><td>O</td><td>O</td><td>IP channel class 2</td></tr>
    3607          *   </tbody>
    3608          *   <tfoot>
    3609          *     <tr><th colspan="3">IP Channel</th></tr>
    3610          *   </tfoot>
    3611          * </table>
    3612          * </div>
    3613          * <br>
    3614          *
    3615          * <a href="hcap.channel.html#.getCurrentChannel">hcap.channel.getCurrentChannel()</a> gets the AV (RF/IP) channel information which
    3616          * includes supported channel class information and optional parameters,
    3617          * but unsupported channel classes are filled with 0.<br>
    3618          * <br>
    3619          * <a href="hcap.channel.html#.getDataChannel">hcap.channel.getDataChannel()</a> gets the DATA (RF/IP) channel information which
    3620          * includes supported channel class information, but other channel classes
    3621          * and optional parameters are filled with 0.<br>
    3622          * <br>
    3623          * Result objects for <a href="hcap.channel.html#.getCurrentChannel">hcap.channel.getCurrentChannel()</a> and <a href="hcap.channel.html#.getDataChannel">hcap.channel.getDataChannel()</a>
    3624          * have following information.<br>
    3625          * <br>
    3626          * <div align=center id=".CHANNEL_TYPE">
    3627          * <table class="hcap_spec" width=850>
    3628          *   <thead>
    3629          *     <tr><th>Channel Type</th><th>Description</th></tr>
    3630          *   </thead>
    3631          *   <tbody>
    3632          *     <tr class="odd">
    3633          *        <th class="left"><a href="hcap.channel.ChannelType.html#.RF">hcap.channel.ChannelType.RF</a></th>
    3634          *        <td class="left">Defines AV channel via RF signal.</td>
    3635          *     </tr>
    3636          *     <tr>
    3637          *        <th class="left"><a href="hcap.channel.ChannelType.html#.IP">hcap.channel.ChannelType.IP</a></th>
    3638          *        <td class="left">Defines AV channel via IP network to support IPTV.</td>
    3639          *     </tr>
    3640          *     <tr class="odd">
    3641          *        <th class="left"><a href="hcap.channel.ChannelType.html#.RF_DATA">hcap.channel.ChannelType.RF_DATA</a></th>
    3642          *        <td class="left">Defines data channel via RF signal. Applications can download some carousel data.</td>
    3643          *     </tr>
    3644          *     <tr>
    3645          *       <th class="left"><a href="hcap.channel.ChannelType.html#.IP_DATA">hcap.channel.ChannelType.IP_DATA</a></th>
    3646          *       <td class="left">Defines data channel via IP network.
    3647          *       <table class="hcap_spec">
    3648          *         <thead>
    3649          *           <tr><th colspan=2>Data channel operation in IP address range</th></tr>
    3650          *         </thead>
    3651          *         <tbody>
    3652          *           <tr class="odd">
    3653          *             <th class="left">Unicast IP Address</th>
    3654          *             <td class="left">Applications can download some data from Pro:Centric server using HTTP protocol.</td>
    3655          *           </tr>
    3656          *           <tr>
    3657          *             <th class="left">Multicast IP Address<br>(224.0.0.0 ~<br> 239.255.255.255)</th>
    3658          *             <td class="left">RF broadcast data will be sent via IP multicast [TS(Transport Stream) over IP multicast].<br>
    3659          *               In this mode, carousel download operation is same as <a href="hcap.channel.ChannelType.html#.RF_DATA">hcap.channel.ChannelType.RF_DATA</a><br>
    3660          *               In this case, HCAP URL can use the special frequency# '1' for this virtual RF channel.<br>
    3661          *             </td>
    3662          *           </tr>
    3663          *         </tbody>
    3664          *       </table>
    3665          *       </td>
    3666          *     </tr>
    3667          *   </tbody>
    3668          *   <tfoot>
    3669          *     <tr><th colspan="2">Channel Type</td></tr>
    3670          *   </tfoot>
    3671          * </table>
    3672          * </div>
    3673          *
    3674          * hcap.channel.requestChangeCurrentChannel() for IP DATA channel returns false because it has no effect.<br>
    3675          * <br>
    3676          * If following option fields are filled correctly in the input object,
    3677          * AV channel change performance will be improved.
    3678          *
    3679          * <ul>
    3680          * <li>symbolRate</li>
    3681          * <li>pcrPid, videoPid</li>
    3682          * <li>videoStreamType</li>
    3683          * <li>audioPid</li>
    3684          * <li>audioStreamType</li>
    3685          * <ul>
    3686          * <br>
    3687          *
    3688          * <div align=center id=".CHANNEL_PROPERTY">
    3689          * <table class="hcap_spec" width=850>
    3690          *   <thead>
    3691          *     <tr>            <th>Property Name                </th><th>Type   </th><th>Req<br>uired</th><th>RF</th><th>IP</th><th>RF<br>DATA</th><th>IP<br>DATA</th><th>Value                                                                                    </th><th>Description</th></tr>
    3692          *   </thead>
    3693          *   <tbody>
    3694          *     <tr class="odd"><td>channelType                  </td><td>Number </td><td>O           </td><td>O </td><td>O </td><td>O         </td><td>O         </td><td class="left"><a href="hcap.channel.ChannelType.html">hcap.channel.ChannelType</a><br>    </td><td class="left">Channel type indicator</td></tr>
    3695          *     <tr            ><td>logicalNumber                </td><td>Number </td><td>O           </td><td>O </td><td>O </td><td>O         </td><td>X         </td><td class="left">0 ~ 2^16 - 1                                                                </td><td class="left">Logical channel number</td></tr>
    3696          *     <tr class="odd"><td>frequency                    </td><td>Number </td><td>O           </td><td>O </td><td>X </td><td>O         </td><td>X         </td><td class="left">0 ~ 2^32 - 1                                                                </td><td class="left">Frequency (Hz, and MHz for satellite)</td></tr>
    3697          *     <tr            ><td>programNumber                </td><td>Number </td><td>O           </td><td>O </td><td>X </td><td>O         </td><td>X         </td><td class="left">0 ~ 2^16 - 1                                                                </td><td class="left">Program number (0 for analog channel)</td></tr>
    3698          *     <tr class="odd"><td>programNumber                </td><td>Number </td><td>X           </td><td>X </td><td>O </td><td>X         </td><td>X         </td><td class="left">0 ~ 2^16 - 1                                                                </td><td class="left">Specific program number in IP Stream</td></tr>
    3699          *     <tr            ><td>majorNumber                  </td><td>Number </td><td>O           </td><td>O </td><td>X </td><td>O         </td><td>X         </td><td class="left">0 ~ 2^16 - 1                                                                </td><td class="left">Major channel number</td></tr>
    3700          *     <tr class="odd"><td>minorNumber                  </td><td>Number </td><td>O           </td><td>O </td><td>X </td><td>O         </td><td>X         </td><td class="left">0 ~ 2^16 - 1                                                                </td><td class="left">Minor channel number</td></tr>
    3701          *     <tr            ><td>satelliteId                  </td><td>Number </td><td>O           </td><td>O </td><td>X </td><td>X         </td><td>X         </td><td class="left">0 ~ 2^16 - 1                                                                </td><td class="left">Satellite setting ID</td></tr>
    3702          *     <tr class="odd"><td>polarization                 </td><td>Number </td><td>O           </td><td>O </td><td>X </td><td>X         </td><td>X         </td><td class="left"><a href="hcap.channel.Polarization.html">hcap.channel.Polarization</a>      </td><td class="left">Polarization mode</td></tr>
    3703          *     <tr            ><td>plpId                        </td><td>Number </td><td>O           </td><td>O </td><td>X </td><td>X         </td><td>X         </td><td class="left">0 ~ 0xFF                                                                    </td><td class="left">PLP (Physical Layer Pipe) ID</td></tr>
    3704          *     <tr class="odd"><td>rfBroadcastType              </td><td>Number </td><td>O           </td><td>O </td><td>X </td><td>O         </td><td>X         </td><td class="left"><a href="hcap.channel.RfBroadcastType.html">hcap.channel.RfBroadcastType</a></td><td class="left">RF broadcast type</td></tr>
    3705          *     <tr            ><td>ip                           </td><td>String </td><td>O           </td><td>X </td><td>O </td><td>X         </td><td>O         </td><td class="left">[0~255].[0~255].[0~255].[0~255]                                             </td><td class="left">IP address value</td></tr>
    3706          *     <tr class="odd"><td>port                         </td><td>Number </td><td>O           </td><td>X </td><td>O </td><td>X         </td><td>O         </td><td class="left">0 ~ 2^16 - 1                                                                </td><td class="left">Port number</td></tr>
    3707          *     <tr            ><td>ipBroadcastType              </td><td>Number </td><td>O           </td><td>X </td><td>O </td><td>X         </td><td>X         </td><td class="left"><a href="hcap.channel.IpBroadcastType.html">hcap.channel.IpBroadcastType</a></td><td class="left">IP broadcast type (default is UDP)</td></tr>
    3708          *     <tr class="odd"><td>symbolRate                   </td><td>Number </td><td>X           </td><td>O </td><td>X </td><td>X         </td><td>X         </td><td class="left">0 ~ 2^32 - 1                                                                </td><td class="left">Symbol rate (Bd)</td></tr>
    3709          *     <tr            ><td>pcrPid                       </td><td>Number </td><td>X           </td><td>O </td><td>O </td><td>X         </td><td>X         </td><td class="left">0 ~ 2^13 - 1                                                                </td><td class="left">PCR(Program Clock Reference)Packet ID</td></tr>
    3710          *     <tr class="odd"><td>videoPid                     </td><td>Number </td><td>X           </td><td>O </td><td>O </td><td>X         </td><td>X         </td><td class="left">0 ~ 2^13 - 1                                                                </td><td class="left">Video packet ID (<a href="hcap.channel.html">hcap.channel.NO_STREAM_PID</a> for audio only channel)</td></tr>
    3711          *     <tr            ><td>videoStreamType              </td><td>Number </td><td>X           </td><td>O </td><td>O </td><td>X         </td><td>X         </td><td class="left"><a href="hcap.channel.VideoStreamType.html">hcap.channel.VideoStreamType</a></td><td class="left">Video stream type</td></tr>
    3712          *     <tr class="odd"><td>audioPid                     </td><td>Number </td><td>X           </td><td>O </td><td>O </td><td>X         </td><td>X         </td><td class="left">0 ~ 2^13 - 1                                                                </td><td class="left">Audio packet ID</td></tr>
    3713          *     <tr            ><td>audioStreamType              </td><td>Number </td><td>X           </td><td>O </td><td>O </td><td>X         </td><td>X         </td><td class="left"><a href="hcap.channel.AudioStreamType.html">hcap.channel.AudioStreamType</a></td><td class="left">Audio stream type</td></tr>
    3714          *     <tr class="odd"><td>signalStrength<br>(read only)</td><td>Number </td><td>X           </td><td>O </td><td>X </td><td>O         </td><td>X         </td><td class="left">0 ~ 255                                                                     </td><td class="left">Channel signal strength</td></tr>
    3715          *     <tr            ><td>sourceAddress                </td><td>String </td><td>X           </td><td>X </td><td>O </td><td>X         </td><td>X         </td><td class="left">[0~255].[0~255].[0~255].[0~255]                                             </td><td class="left">Source IP address for IGMPv3</td></tr>
    3716          *   </tbody>
    3717          *   <tfoot>
    3718          *     <tr><th colspan="9">Channel Property</td></tr>
    3719          *   </tfoot>
    3720          * </table>
    3721          * </div>
    3722          *
    3723          * Below are a few examples for channel change request for different channel classes
    3724          * @example
    3725          * // RF channel class 1 change request
    3726          * hcap.channel.requestChangeCurrentChannel({
    3727          *      "channelType" : hcap.channel.ChannelType.RF,
    3728          *      "logicalNumber" : 7,
    3729          *      "rfBroadcastType" : hcap.channel.RfBroadcastType.TERRESTRIAL,
    3730          *      "onSuccess" : function() {
    3731          *          console.log("onSuccess");
    3732          *      },
    3733          *      "onFailure" : function(f) {
    3734          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    3735          *      }
    3736          * });
    3737          *
    3738          * @example
    3739          * // RF channel class 2 change request
    3740          * hcap.channel.requestChangeCurrentChannel({
    3741          *      "channelType" : hcap.channel.ChannelType.RF,
    3742          *      "frequency" : 63000000,
    3743          *      "programNumber" : 1,
    3744          *      "rfBroadcastType" : hcap.channel.RfBroadcastType.TERRESTRIAL,
    3745          *      "onSuccess" : function() {
    3746          *          console.log("onSuccess");
    3747          *      },
    3748          *      "onFailure" : function(f) {
    3749          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    3750          *      }
    3751          * });
    3752          *
    3753          * @example
    3754          * // RF channel class 3 change request
    3755          * hcap.channel.requestChangeCurrentChannel({
    3756          *      "channelType" : hcap.channel.ChannelType.RF,
    3757          *      "majorNumber" : 9,
    3758          *      "minorNumber" : 1,
    3759          *      "rfBroadcastType" : hcap.channel.RfBroadcastType.TERRESTRIAL,
    3760          *      "onSuccess" : function() {
    3761          *          console.log("onSuccess");
    3762          *      },
    3763          *      "onFailure" : function(f) {
    3764          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    3765          *      }
    3766          * });
    3767          *
    3768          * @example
    3769          * // RF channel class 4 change request
    3770          * hcap.channel.requestChangeCurrentChannel({
    3771          *      "channelType" : hcap.channel.ChannelType.RF,
    3772          *      "frequency" : 63000000,
    3773          *      "programNumber" : 1,
    3774          *      "satelliteId" : 1,
    3775          *      "polarization" : hcap.channel.Polarization.VERTICAL,
    3776          *      "rfBroadcastType" : hcap.channel.RfBroadcastType.SATELLITE_2,
    3777          *      "onSuccess" : function() {
    3778          *          console.log("onSuccess");
    3779          *      },
    3780          *      "onFailure" : function(f) {
    3781          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    3782          *      }
    3783          * });
    3784          *
    3785          * @example
    3786          * // RF channel class 5 change request
    3787          * hcap.channel.requestChangeCurrentChannel({
    3788          *      "channelType" : hcap.channel.ChannelType.RF,
    3789          *      "frequency" : 63000000,
    3790          *      "programNumber" : 1,
    3791          *      "plpId" : 3,
    3792          *      "rfBroadcastType" : hcap.channel.RfBroadcastType.TERRESTRIAL_2,
    3793          *      "onSuccess" : function() {
    3794          *          console.log("onSuccess");
    3795          *      },
    3796          *      "onFailure" : function(f) {
    3797          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    3798          *      }
    3799          * });
    3800          *
    3801          * @example
    3802          * // RF channel class 6 change request
    3803          * hcap.channel.requestChangeCurrentChannel({
    3804          *      "channelType" : hcap.channel.ChannelType.RF,
    3805          *      "majorNumber" : 9,
    3806          *      "minorNumber" : 1,
    3807          *      "plpId" : 3,
    3808          *      "rfBroadcastType" : hcap.channel.RfBroadcastType.TERRESTRIAL_ATSC3,
    3809          *      "onSuccess" : function() {
    3810          *          console.log("onSuccess");
    3811          *      },
    3812          *      "onFailure" : function(f) {
    3813          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    3814          *      }
    3815          * });
    3816          *
    3817          * @example
    3818          * // IP channel class 1 change request
    3819          * hcap.channel.requestChangeCurrentChannel({
    3820          *      "channelType" : hcap.channel.ChannelType.IP,
    3821          *      "logicalNumber" : 9,
    3822          *      "ipBroadcastType" : hcap.channel.IpBroadcastType.UDP,
    3823          *      "onSuccess" : function() {
    3824          *          console.log("onSuccess");
    3825          *      },
    3826          *      "onFailure" : function(f) {
    3827          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    3828          *      }
    3829          * });
    3830          *
    3831          * @example
    3832          * // IP channel class 2 change request
    3833          * hcap.channel.requestChangeCurrentChannel({
    3834          *      "channelType" : hcap.channel.ChannelType.IP,
    3835          *      "ip" : "1.2.3.4",
    3836          *      "port" : 3333,
    3837          *      "ipBroadcastType" : hcap.channel.IpBroadcastType.UDP,
    3838          *      "onSuccess" : function() {
    3839          *          console.log("onSuccess");
    3840          *      },
    3841          *      "onFailure" : function(f) {
    3842          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    3843          *      }
    3844          * });
    3845          *
    3846          * @example
    3847          * // IP channel class 2 change request with optional property
    3848          * hcap.channel.requestChangeCurrentChannel({
    3849          *      "channelType" : hcap.channel.ChannelType.IP,
    3850          *      "ip" : "1.2.3.4",
    3851          *      "port" : 3333,
    3852          *      "symbolRate" : 6758,
    3853          *      "prcPid" : 100,
    3854          *      "videoPid" : 200,
    3855          *      "videoStreamType" : hcap.channel.VideoStreamType.MPEG2,
    3856          *      "audioPid" : 400,
    3857          *      "audioStreamType" : hcap.channel.AudioStreamType.MPEG2,
    3858          *      "ipBroadcastType" : hcap.channel.IpBroadcastType.UDP,
    3859          *      "onSuccess" : function() {
    3860          *          console.log("onSuccess");
    3861          *      },
    3862          *      "onFailure" : function(f) {
    3863          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    3864          *      }
    3865          * });
    3866          *
    3867          * @param {Object} param
    3868          * <ul>
    3869          *   <li><a href="../symbols/hcap.channel.html#.CHANNEL_PROPERTY">{ Channel Properties } [Required] - Channel Information</a></li>
    3870          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    3871          *   <pre class="code prettyprint">
    3872          *   param.onSuccess = function() {
    3873          *       // No Parameter.
    3874          *   }</pre>
    3875          *   </li>
    3876          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    3877          *   <pre class="code prettyprint">
    3878          *   param.onFailure = function (param) {
    3879          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    3880          *   }</pre>
    3881          *   </li>
    3882          * </ul>
    3883          *
    3884          * @since 1.3.1
    3885          *
    3886          * @see
    3887          * <a href="hcap.channel.html#.requestChangeCurrentChannel">hcap.channel.requestChangeCurrentChannel()</a><br>
    3888          * <a href="hcap.channel.html#.getCurrentChannel">hcap.channel.getCurrentChannel()</a><br>
    3889          * <a href="hcap.channel.html#.replayCurrentChannel">hcap.channel.replayCurrentChannel()</a><br>
    3890          * <a href="hcap.channel.html#.stopCurrentChannel">hcap.channel.stopCurrentChannel()</a><br>
    3891          * <a href="hcap.channel.html#.getDataChannel">hcap.channel.getDataChannel()</a><br>
    3892          * <a href="hcap.channel.html#.getChannelMap">hcap.channel.getChannelMap()</a><br>
    3893          * <a href="hcap.channel.html#.getStartChannel">hcap.channel.getStartChannel()</a><br>
    3894          * <a href="hcap.channel.html#.setStartChannel">hcap.channel.setStartChannel()</a><br>
    3895          * <a href="_global_.html#event:channel_changed">{Event} channel_changed</a><br>
    3896          */
    3897         hcap.channel.requestChangeCurrentChannel = function (param) {
    3898             hcap_command("request_channel_change", param);
    3899         };
    3900         /**
    3901          * Gets the current channel information.<br>
    3902          * For detailed information, such as, example and related information,
    3903          * please refer to <a href="hcap.channel.html#.requestChangeCurrentChannel">hcap.channel.requestChangeCurrentChannel()</a><br>
    3904          *
    3905          * @example
    3906          * hcap.channel.getCurrentChannel({
    3907          *      "onSuccess" : function(s) {
    3908          *          console.log("onSuccess :" +
    3909          *              "\n channel status    : " + s.channelStatus   +
    3910          *              "\n channel type      : " + s.channelType     +
    3911          *              "\n logical number    : " + s.logicalNumber   +
    3912          *              "\n frequency         : " + s.frequency       +
    3913          *              "\n program number    : " + s.programNumber   +
    3914          *              "\n major number      : " + s.majorNumber     +
    3915          *              "\n minor number      : " + s.minorNumber     +
    3916          *              "\n satellite ID      : " + s.satelliteId     +
    3917          *              "\n polarization      : " + s.polarization    +
    3918          *              "\n rf broadcast type : " + s.rfBroadcastType +
    3919          *              "\n ip                : " + s.ip              +
    3920          *              "\n port              : " + s.port            +
    3921          *              "\n ip broadcast type : " + s.ipBroadcastType +
    3922          *              "\n symbol rate       : " + s.symbolRate      +
    3923          *              "\n pcr pid           : " + s.pcrPid          +
    3924          *              "\n video pid         : " + s.videoPid        +
    3925          *              "\n video stream type : " + s.videoStreamType +
    3926          *              "\n audio pid         : " + s.audioPid        +
    3927          *              "\n audio stream type : " + s.audioStreamType +
    3928          *              "\n signal strength   : " + s.signalStrength  +
    3929          *              "\n source address    : " + s.sourceAddress);
    3930          *      },
    3931          *      "onFailure" : function(f) {
    3932          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    3933          *      }
    3934          * });
    3935          *
    3936          * @param {Object} param
    3937          * <ul>
    3938          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    3939          *   <pre class="code prettyprint">
    3940          *   param.onSuccess = function (param) {
    3941          *       // {Number} [since 1.12.0] param.channelStatus - current channel status in <a href="hcap.channel.ChannelStatus.html">hcap.channel.ChannelStatus</a>.
    3942          *       // see the <a href="../symbols/hcap.channel.html#.CHANNEL_PROPERTY">{ Channel Properties }</a> in <a href="hcap.channel.html#.requestChangeCurrentChannel">hcap.channel.requestChangeCurrentChannel()</a>.
    3943          *   }</pre>
    3944          *   </li>
    3945          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    3946          *   <pre class="code prettyprint">
    3947          *   param.onFailure = function (param) {
    3948          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    3949          *   }</pre>
    3950          *   </li>
    3951          * </ul>
    3952          *
    3953          * @since 1.3.1
    3954          *
    3955          * @see
    3956          * <a href="hcap.channel.html#.requestChangeCurrentChannel">hcap.channel.requestChangeCurrentChannel()</a><br>
    3957          * <a href="hcap.channel.html#.getCurrentChannel">hcap.channel.getCurrentChannel()</a><br>
    3958          * <a href="hcap.channel.html#.replayCurrentChannel">hcap.channel.replayCurrentChannel()</a><br>
    3959          * <a href="hcap.channel.html#.stopCurrentChannel">hcap.channel.stopCurrentChannel()</a><br>
    3960          * <a href="hcap.channel.html#.getDataChannel">hcap.channel.getDataChannel()</a><br>
    3961          * <a href="hcap.channel.html#.getChannelMap">hcap.channel.getChannelMap()</a><br>
    3962          * <a href="hcap.channel.html#.getStartChannel">hcap.channel.getStartChannel()</a><br>
    3963          * <a href="hcap.channel.html#.setStartChannel">hcap.channel.setStartChannel()</a><br>
    3964          * <a href="_global_.html#event:channel_changed">{Event} channel_changed</a><br>
    3965          */
    3966         hcap.channel.getCurrentChannel = function (param) {
    3967             hcap_command("get_current_channel", param);
    3968         };
    3969         /**
    3970          * Replays the current stopped channel.
    3971          * <ul>
    3972          * <li>RF channel : restart channel tuning and replays AV.</li>
    3973          * <li>IP channel : join IP multicast group and replays AV.</li>
    3974          * </ul>
    3975          *
    3976          * @param {Object} param
    3977          * <ul>
    3978          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    3979          *   <pre class="code prettyprint">
    3980          *   param.onSuccess = function() {
    3981          *       // no parameter.
    3982          *   }</pre>
    3983          *   </li>
    3984          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    3985          *            Replaying already playing channel, or for operation failure
    3986          *   <pre class="code prettyprint">
    3987          *   param.onFailure = function (param) {
    3988          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    3989          *   }</pre>
    3990          *   </li>
    3991          * </ul>
    3992          *
    3993          * @since 1.3.1
    3994          *
    3995          * @see
    3996          * <a href="hcap.channel.html#.requestChangeCurrentChannel">hcap.channel.requestChangeCurrentChannel()</a><br>
    3997          * <a href="hcap.channel.html#.getCurrentChannel">hcap.channel.getCurrentChannel()</a><br>
    3998          * <a href="hcap.channel.html#.replayCurrentChannel">hcap.channel.replayCurrentChannel()</a><br>
    3999          * <a href="hcap.channel.html#.stopCurrentChannel">hcap.channel.stopCurrentChannel()</a><br>
    4000          * <a href="hcap.channel.html#.getDataChannel">hcap.channel.getDataChannel()</a><br>
    4001          * <a href="hcap.channel.html#.getChannelMap">hcap.channel.getChannelMap()</a><br>
    4002          * <a href="hcap.channel.html#.getStartChannel">hcap.channel.getStartChannel()</a><br>
    4003          * <a href="hcap.channel.html#.setStartChannel">hcap.channel.setStartChannel()</a><br>
    4004          * <a href="_global_.html#event:channel_changed">{Event} channel_changed</a><br>
    4005          *
    4006          * @example
    4007          * hcap.channel.replayCurrentChannel({
    4008          *      "onSuccess" : function() {
    4009          *          console.log("onSuccess");
    4010          *      },
    4011          *      "onFailure" : function(f) {
    4012          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    4013          *      }
    4014          * });
    4015          */
    4016         hcap.channel.replayCurrentChannel = function (param) {
    4017             hcap_command("replay_current_channel", param);
    4018         };
    4019         /**
    4020          * Stops AV play of the current channel.
    4021          * <ul>
    4022          * <li>RF channel : Stops RF tuning and stops playing AV.</li>
    4023          * <li>IP channel : Leaves IP multicast group and stops playing AV.</li>
    4024          * </ul>
    4025          * <br>
    4026          * This API has only an effect on the current channel.<br>
    4027          * When the channel is changed, new channel will be played.<br>
    4028          *
    4029          * To replay the current channel, use <a href="hcap.channel.html#.replayCurrentChannel">hcap.channel.replayCurrentChannel()</a>.
    4030          *
    4031          * @param {Object} param
    4032          * <ul>
    4033          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    4034          *   <pre class="code prettyprint">
    4035          *   param.onSuccess = function() {
    4036          *       // no parameter.
    4037          *   }</pre>
    4038          *   </li>
    4039          *   <li>{Function} param.onFailure [Optional] - failure callback function.<br>
    4040          *            Stopping already stopped channel will invoke this callback function.
    4041          *   <pre class="code prettyprint">
    4042          *   param.onFailure = function (param) {
    4043          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    4044          *   }</pre>
    4045          *   </li>
    4046          * </ul>
    4047          *
    4048          * @since 1.3.1
    4049          *
    4050          * @see
    4051          * <a href="hcap.channel.html#.requestChangeCurrentChannel">hcap.channel.requestChangeCurrentChannel()</a><br>
    4052          * <a href="hcap.channel.html#.getCurrentChannel">hcap.channel.getCurrentChannel()</a><br>
    4053          * <a href="hcap.channel.html#.replayCurrentChannel">hcap.channel.replayCurrentChannel()</a><br>
    4054          * <a href="hcap.channel.html#.stopCurrentChannel">hcap.channel.stopCurrentChannel()</a><br>
    4055          * <a href="hcap.channel.html#.getDataChannel">hcap.channel.getDataChannel()</a><br>
    4056          * <a href="hcap.channel.html#.getChannelMap">hcap.channel.getChannelMap()</a><br>
    4057          * <a href="hcap.channel.html#.getStartChannel">hcap.channel.getStartChannel()</a><br>
    4058          * <a href="hcap.channel.html#.setStartChannel">hcap.channel.setStartChannel()</a><br>
    4059          * <a href="_global_.html#event:channel_changed">{Event} channel_changed</a><br>
    4060          *
    4061          * @example
    4062          * hcap.channel.stopCurrentChannel({
    4063          *      "onSuccess" : function() {
    4064          *          console.log("onSuccess");
    4065          *      },
    4066          *      "onFailure" : function(f) {
    4067          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    4068          *      }
    4069          * });
    4070          */
    4071         hcap.channel.stopCurrentChannel = function (param) {
    4072             hcap_command("stop_current_channel", param);
    4073         };
    4074         /**
    4075          * Gets information about the Pro:Centric data channel(RF Channel or IP Channel),
    4076          * which is the channel used to download applications.
    4077          * In case of RF Data Channel, only frequency and program number are valid in channel information.
    4078          *
    4079          * @example
    4080          * hcap.channel.getDataChannel({
    4081          *      "onSuccess" : function(s) {
    4082          *          if (s.channelType === hcap.channel.ChannelType.RF_DATA) {
    4083          *              console.log("onSuccess :" +
    4084          *                  "\n frequency         " + s.frequency       +
    4085          *                  "\n program number    " + s.programNumber);
    4086          *          } else if (s.channelType === hcap.channel.ChannelType.IP_DATA) {
    4087          *              console.log("onSuccess :" +
    4088          *                  "\n ip                " + s.ip              +
    4089          *                  "\n port              " + s.port);
    4090          *          } else {
    4091          *              console.log("unknown channel type");
    4092          *          }
    4093          *      },
    4094          *      "onFailure" : function(f) {
    4095          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    4096          *      }
    4097          * });
    4098          *
    4099          * @param {Object} param
    4100          * <ul>
    4101          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    4102          *   <pre class="code prettyprint">
    4103          *   param.onSuccess = function (param) {
    4104          *       // see the <a href="../symbols/hcap.channel.html#.CHANNEL_PROPERTY">{ Channel Properties }</a> in <a href="hcap.channel.html#.requestChangeCurrentChannel">hcap.channel.requestChangeCurrentChannel()</a>.
    4105          *   }</pre>
    4106          *   </li>
    4107          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    4108          *   <pre class="code prettyprint">
    4109          *   param.onFailure = function (param) {
    4110          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    4111          *   }</pre>
    4112          *   </li>
    4113          * </ul>
    4114          *
    4115          * @since 1.3.1
    4116          *
    4117          * @see
    4118          * <a href="hcap.channel.html#.requestChangeCurrentChannel">hcap.channel.requestChangeCurrentChannel()</a><br>
    4119          * <a href="hcap.channel.html#.getCurrentChannel">hcap.channel.getCurrentChannel()</a><br>
    4120          * <a href="hcap.channel.html#.replayCurrentChannel">hcap.channel.replayCurrentChannel()</a><br>
    4121          * <a href="hcap.channel.html#.stopCurrentChannel">hcap.channel.stopCurrentChannel()</a><br>
    4122          * <a href="hcap.channel.html#.getDataChannel">hcap.channel.getDataChannel()</a><br>
    4123          * <a href="hcap.channel.html#.getChannelMap">hcap.channel.getChannelMap()</a><br>
    4124          * <a href="hcap.channel.html#.getStartChannel">hcap.channel.getStartChannel()</a><br>
    4125          * <a href="hcap.channel.html#.setStartChannel">hcap.channel.setStartChannel()</a><br>
    4126          * <a href="_global_.html#event:channel_changed">{Event} channel_changed</a><br>
    4127          */
    4128         hcap.channel.getDataChannel = function (param) {
    4129             hcap_command("get_data_channel", param);
    4130         };
    4131          /**
    4132          * Gets information of the channel
    4133          * which is registered in the shortcut.
    4134          *
    4135          * @example
    4136          * hcap.channel.getChannelMap({
    4137          *      "onSuccess" : function(s) {
    4138          *          console.log("onSuccess : list length = " + s.list.length);
    4139          *          for (var i = 0; i < s.list.length; i++) {
    4140          *              console.log(
    4141          *                  "[" + i + "].img_url2 = " + s.list[i].img_url2 +
    4142          *                  "[" + i + "].img_url = " + s.list[i].img_url +
    4143          *                  "[" + i + "].short_cut = " + s.list[i].short_cut +
    4144          *                  "[" + i + "].channel_type = " + s.list[i].channel_type +
    4145          *                  "[" + i + "].channel_mode_id = " + s.list[i].channel_mode_id +
    4146          *                  "[" + i + "].channel_number = " + s.list[i].channel_number +
    4147          *                  "[" + i + "].channel_name = " + s.list[i].channel_name
    4148          *              );
    4149          *          }
    4150          *      },
    4151          *      "onFailure" : function(f) {
    4152          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    4153          *      }
    4154          * });
    4155          *
    4156          * @param {Object} param
    4157          * <ul>
    4158          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    4159          *   <pre class="code prettyprint">
    4160          *   param.onSuccess = function (param) {
    4161          *       // {Array} param.list - list for the channel information registered in the shortcut.
    4162          *       //         {String} param.list[].img_url2 - logo image url2 of the channel
    4163          *       //         {String} param.list[].img_url - logo image url of the channel
    4164          *       //         {String} param.list[].short_cut - shortcut number (1~12)
    4165          *       //         {String} param.list[].channel_type - name of the channel type ex) atellite BS
    4166          *       //         {String} param.list[].channel_mode_id - channel mode id which is number 0~6
    4167          *       //         {String} param.list[].channel_number - number of the channel ex)101
    4168          *       //         {String} param.list[].channel_name - channel type and number ex) BS 101
    4169          *   }</pre>
    4170          *   </li>
    4171          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    4172          *   <pre class="code prettyprint">
    4173          *   param.onFailure = function (param) {
    4174          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    4175          *   }</pre>
    4176          *   </li>
    4177          * </ul>
    4178          *
    4179          * @since 1.23.2
    4180          *
    4181          * @see
    4182          * <a href="hcap.channel.html#.requestChangeCurrentChannel">hcap.channel.requestChangeCurrentChannel()</a><br>
    4183          * <a href="hcap.channel.html#.getCurrentChannel">hcap.channel.getCurrentChannel()</a><br>
    4184          * <a href="hcap.channel.html#.replayCurrentChannel">hcap.channel.replayCurrentChannel()</a><br>
    4185          * <a href="hcap.channel.html#.stopCurrentChannel">hcap.channel.stopCurrentChannel()</a><br>
    4186          * <a href="hcap.channel.html#.getDataChannel">hcap.channel.getDataChannel()</a><br>
    4187          * <a href="hcap.channel.html#.getChannelMap">hcap.channel.getChannelMap()</a><br>
    4188          * <a href="hcap.channel.html#.getStartChannel">hcap.channel.getStartChannel()</a><br>
    4189          * <a href="hcap.channel.html#.setStartChannel">hcap.channel.setStartChannel()</a><br>
    4190          * <a href="_global_.html#event:channel_changed">{Event} channel_changed</a><br>
    4191          */
    4192         hcap.channel.getChannelMap = function (param) {
    4193             hcap_command("get_channel_map", param);
    4194         };
    4195         /**
    4196          * Gets the start channel information which is the channel displayed
    4197          * at first when TV is turned on.<br>
    4198          * This API is very similar to <a href="hcap.channel.html#.getCurrentChannel">hcap.channel.getCurrentChannel()</a>.
    4199          * For detailed information, such as example and related information, please refer to
    4200          * <a href="hcap.channel.html#.requestChangeCurrentChannel">hcap.channel.requestChangeCurrentChannel()</a>.
    4201          *
    4202          * @example
    4203          * hcap.channel.getStartChannel({
    4204          *      "onSuccess" : function(s) {
    4205          *          console.log("onSuccess :" +
    4206          *              "\n channel type      : " + s.channelType     +
    4207          *              "\n logical number    : " + s.logicalNumber   +
    4208          *              "\n frequency         : " + s.frequency       +
    4209          *              "\n program number    : " + s.programNumber   +
    4210          *              "\n major number      : " + s.majorNumber     +
    4211          *              "\n minor number      : " + s.minorNumber     +
    4212          *              "\n satellite ID      : " + s.satelliteId     +
    4213          *              "\n polarization      : " + s.polarization    +
    4214          *              "\n rf broadcast type : " + s.rfBroadcastType +
    4215          *              "\n ip                : " + s.ip              +
    4216          *              "\n port              : " + s.port            +
    4217          *              "\n ip broadcast type : " + s.ipBroadcastType +
    4218          *              "\n symbol rate       : " + s.symbolRate      +
    4219          *              "\n pcr pid           : " + s.pcrPid          +
    4220          *              "\n video pid         : " + s.videoPid        +
    4221          *              "\n video stream type : " + s.videoStreamType +
    4222          *              "\n audio pid         : " + s.audioPid        +
    4223          *              "\n audio stream type : " + s.audioStreamType +
    4224          *              "\n signal strength   : " + s.signalStrength  +
    4225          *              "\n source address    : " + s.sourceAddress);
    4226          *      },
    4227          *      "onFailure" : function(f) {
    4228          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    4229          *      }
    4230          * });
    4231          *
    4232          * @param {Object} param
    4233          * <ul>
    4234          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    4235          *   <pre class="code prettyprint">
    4236          *   param.onSuccess = function (param) {
    4237          *       // see the <a href="../symbols/hcap.channel.html#.CHANNEL_PROPERTY">{ Channel Properties }</a> in <a href="hcap.channel.html#.requestChangeCurrentChannel">hcap.channel.requestChangeCurrentChannel()</a>.
    4238          *   }</pre>
    4239          *   </li>
    4240          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    4241          *   <pre class="code prettyprint">
    4242          *   param.onFailure = function (param) {
    4243          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    4244          *   }</pre>
    4245          *   </li>
    4246          * </ul>
    4247          *
    4248          * @since 1.3.1
    4249          *
    4250          * @see
    4251          * <a href="hcap.channel.html#.requestChangeCurrentChannel">hcap.channel.requestChangeCurrentChannel()</a><br>
    4252          * <a href="hcap.channel.html#.getCurrentChannel">hcap.channel.getCurrentChannel()</a><br>
    4253          * <a href="hcap.channel.html#.replayCurrentChannel">hcap.channel.replayCurrentChannel()</a><br>
    4254          * <a href="hcap.channel.html#.stopCurrentChannel">hcap.channel.stopCurrentChannel()</a><br>
    4255          * <a href="hcap.channel.html#.getDataChannel">hcap.channel.getDataChannel()</a><br>
    4256          * <a href="hcap.channel.html#.getChannelMap">hcap.channel.getChannelMap()</a><br>
    4257          * <a href="hcap.channel.html#.getStartChannel">hcap.channel.getStartChannel()</a><br>
    4258          * <a href="hcap.channel.html#.setStartChannel">hcap.channel.setStartChannel()</a><br>
    4259          * <a href="_global_.html#event:channel_changed">{Event} channel_changed</a><br>
    4260          */
    4261         hcap.channel.getStartChannel = function (param) {
    4262             hcap_command("get_start_channel", param);
    4263         };
    4264         /**
    4265          * Sets the start channel which is displayed at first when TV is turned on.
    4266          *
    4267          * This API is very
    4268          * similar to <a href="hcap.channel.html#.requestChangeCurrentChannel">hcap.channel.requestChangeCurrentChannel()</a>,
    4269          * but in this case, just update the start channel setting without channel change.
    4270          *
    4271          * For detailed information, such as example and related information, please refer to
    4272          * <a href="hcap.channel.html#.requestChangeCurrentChannel">hcap.channel.requestChangeCurrentChannel()</a>.
    4273          *
    4274          * @example
    4275          * // set start channel with RF channel class 2
    4276          * hcap.channel.setStartChannel({
    4277          *      "channelType" : hcap.channel.ChannelType.RF,
    4278          *      "frequency" : 63000000,
    4279          *      "programNumber" : 1,
    4280          *      "rfBroadcastType" : hcap.channel.RfBroadcastType.TERRESTRIAL,
    4281          *      "onSuccess" : function() {
    4282          *          console.log("onSuccess");
    4283          *      },
    4284          *      "onFailure" : function(f) {
    4285          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    4286          *      }
    4287          * });
    4288          *
    4289          * @param {Object} param
    4290          * <ul>
    4291          *   <li><a href="../symbols/hcap.channel.html#.CHANNEL_PROPERTY">{ Channel Properties } [Required] - Channel Information</a></li>
    4292          *   <br>If you want to set off start channel, set param.channelType to hcap.channel.ChannelType.UNKNOWN.
    4293          *   </li>
    4294          *   <li>{Function} param.onSuccess [Optional] - success callback function.<br>
    4295          *            Setting to the same channel as before will invoke this callback function.
    4296          *   <pre class="code prettyprint">
    4297          *   param.onSuccess = function() {
    4298          *       // No Parameter.
    4299          *   }</pre>
    4300          *   </li>
    4301          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    4302          *   <pre class="code prettyprint">
    4303          *   param.onFailure = function (param) {
    4304          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    4305          *   }</pre>
    4306          *   </li>
    4307          * </ul>
    4308          *
    4309          * @since 1.3.1
    4310          *
    4311          * @see
    4312          * <a href="hcap.channel.html#.requestChangeCurrentChannel">hcap.channel.requestChangeCurrentChannel()</a><br>
    4313          * <a href="hcap.channel.html#.getCurrentChannel">hcap.channel.getCurrentChannel()</a><br>
    4314          * <a href="hcap.channel.html#.replayCurrentChannel">hcap.channel.replayCurrentChannel()</a><br>
    4315          * <a href="hcap.channel.html#.stopCurrentChannel">hcap.channel.stopCurrentChannel()</a><br>
    4316          * <a href="hcap.channel.html#.getDataChannel">hcap.channel.getDataChannel()</a><br>
    4317          * <a href="hcap.channel.html#.getChannelMap">hcap.channel.getChannelMap()</a><br>
    4318          * <a href="hcap.channel.html#.getStartChannel">hcap.channel.getStartChannel()</a><br>
    4319          * <a href="hcap.channel.html#.setStartChannel">hcap.channel.setStartChannel()</a><br>
    4320          * <a href="_global_.html#event:channel_changed">{Event} channel_changed</a><br>
    4321          */
    4322         hcap.channel.setStartChannel = function (param) {
    4323             hcap_command("set_start_channel", param);
    4324         };
    4325         /**
    4326          * Gets the list of supported audio languages in the current channel.<br>
    4327          * Audio language list is composed of language codes and delimiter comma(',').<br>
    4328          * Application can get/set audio language of the current channel by index of the audio language list.<br><br>
    4329          * If there is no audio language list of the current channel, only "xx" is returned as the audio language list.<br>
    4330          * And "xx" could be returned as an audio language if the audio language is not mapped to an audio language code.<br>
    4331          * Since version 1.24.2, audio languages with "_AD" appended to the original value(ex: pt_AD) are provided for the visually impaired. [EU Only]<br>
    4332          *
    4333          * <div align=center>
    4334          * <table class="hcap_spec" width=400>
    4335          *   <thead>
    4336          *     <tr><th>Item</th><th>Value</th></tr>
    4337          *   </thead>
    4338          *   <tbody>
    4339          *     <tr class="odd"><th>audio language list</th><td>en,ko,fr,en,xx</td></tr>
    4340          *     <tr><th>index</th><td>0, 1, 2, 3, 4</td></tr>
    4341          *   </tbody>
    4342          *   <tfoot>
    4343          *     <tr><th colspan="2">Audio Language List & Index Example</th></tr>
    4344          *   </tfoot>
    4345          * </table>
    4346          * </div>
    4347          * If the application wants to set the audio language to French ('fr'), use the index '2'.<br>
    4348          *
    4349          * @param {Object} param
    4350          * <ul>
    4351          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    4352          *   <pre class="code prettyprint">
    4353          *   param.onSuccess = function (param) {
    4354          *       // {String} param.list - audio language list string
    4355          *       //     which is composed of language codes separated by delimiter comma(',').
    4356          *   }</pre>
    4357          *   </li>
    4358          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    4359          *   <pre class="code prettyprint">
    4360          *   param.onFailure = function (param) {
    4361          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    4362          *   }</pre>
    4363          *   </li>
    4364          * </ul>
    4365          *
    4366          * @since 1.3.1
    4367          *
    4368          * @see
    4369          * <a href="hcap.channel.html#.getCurrentChannelAudioLanguageIndex">hcap.channel.getCurrentChannelAudioLanguageIndex()</a><br>
    4370          * <a href="hcap.channel.html#.setCurrentChannelAudioLanguageIndex">hcap.channel.setCurrentChannelAudioLanguageIndex()</a><br>
    4371          *
    4372          * @example
    4373          * hcap.channel.getCurrentChannelAudioLanguageList({
    4374          *      "onSuccess" : function(s) {
    4375          *          console.log("onSuccess : list = " + s.list);
    4376          *      },
    4377          *      "onFailure" : function(f) {
    4378          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    4379          *      }
    4380          * });
    4381          */
    4382         hcap.channel.getCurrentChannelAudioLanguageList = function (param) {
    4383             hcap_command("get_current_channel_audio_language_list", param);
    4384         };
    4385         /**
    4386          * Gets the audio language index of the current channel.<br>
    4387          * If application wants to map the index to audio language code, then it can get the audio language list of the current channel by
    4388          * <a href="hcap.channel.html#.getCurrentChannelAudioLanguageList">hcap.channel.getCurrentChannelAudioLanguageList()</a>.
    4389          *
    4390          * <div align=center>
    4391          * <table class="hcap_spec" width=400>
    4392          *   <thead>
    4393          *     <tr><th>Item</th><th>Value</th></tr>
    4394          *   </thead>
    4395          *   <tbody>
    4396          *     <tr class="odd"><th>audio language list</th><td>en,ko,fr,en,xx</td></tr>
    4397          *     <tr><th>index</th><td>0, 1, 2, 3, 4</td></tr>
    4398          *   </tbody>
    4399          *   <tfoot>
    4400          *     <tr><th colspan="2">Audio Language List & Index Example</th></tr>
    4401          *   </tfoot>
    4402          * </table>
    4403          * </div>
    4404          *
    4405          * @param {Object} param
    4406          * <ul>
    4407          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    4408          *   <pre class="code prettyprint">
    4409          *   param.onSuccess = function (param) {
    4410          *       // {Number} param.index - audio language index of the current channel.
    4411          *   }</pre>
    4412          *   </li>
    4413          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    4414          *   <pre class="code prettyprint">
    4415          *   param.onFailure = function (param) {
    4416          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    4417          *   }</pre>
    4418          *   </li>
    4419          * </ul>
    4420          *
    4421          * @since 1.3.1
    4422          *
    4423          * @see
    4424          * <a href="hcap.channel.html#.getCurrentChannelAudioLanguageList">hcap.channel.getCurrentChannelAudioLanguageList()</a><br>
    4425          * <a href="hcap.channel.html#.setCurrentChannelAudioLanguageIndex">hcap.channel.setCurrentChannelAudioLanguageIndex()</a><br>
    4426          *
    4427          * @example
    4428          * hcap.channel.getCurrentChannelAudioLanguageIndex({
    4429          *      "onSuccess" : function(s) {
    4430          *          console.log("onSuccess : index = " + s.index);
    4431          *      },
    4432          *      "onFailure" : function(f) {
    4433          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    4434          *      }
    4435          * });
    4436          */
    4437         hcap.channel.getCurrentChannelAudioLanguageIndex = function (param) {
    4438             hcap_command("get_current_channel_audio_language_index", param);
    4439         };
    4440         /**
    4441          * Sets the audio language of the current channel.<br>
    4442          *
    4443          * <div align=center>
    4444          * <table class="hcap_spec" width=400>
    4445          *   <thead>
    4446          *     <tr><th>Item</th><th>Value</th></tr>
    4447          *   </thead>
    4448          *   <tbody>
    4449          *     <tr class="odd"><th>audio language list</th><td>en,ko,fr,en,xx</td></tr>
    4450          *     <tr><th>index</th><td>0, 1, 2, 3, 4</td></tr>
    4451          *   </tbody>
    4452          *   <tfoot>
    4453          *     <tr><th colspan="2">Audio Language List & Index Example</th></tr>
    4454          *   </tfoot>
    4455          * </table>
    4456          * </div>
    4457          *
    4458          * @param {Object} param
    4459          * <ul>
    4460          *   <li>{Number} param.index [Required] - audio language index to be set. Index starts with 0.</li>
    4461          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    4462          *   <pre class="code prettyprint">
    4463          *   param.onSuccess = function() {
    4464          *       // No Parameter.
    4465          *   }</pre>
    4466          *   </li>
    4467          *   <li>{Function} param.onFailure [Optional] - failure callback function.<br>
    4468          *            Setting to the same audio language index as before will invoke this callback function.
    4469          *   <pre class="code prettyprint">
    4470          *   param.onFailure = function (param) {
    4471          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    4472          *   }</pre>
    4473          *   </li>
    4474          * </ul>
    4475          *
    4476          * @since 1.3.1
    4477          *
    4478          * @see
    4479          * <a href="hcap.channel.html#.getCurrentChannelAudioLanguageList">hcap.channel.getCurrentChannelAudioLanguageList()</a><br>
    4480          * <a href="hcap.channel.html#.getCurrentChannelAudioLanguageIndex">hcap.channel.getCurrentChannelAudioLanguageIndex()</a><br>
    4481          *
    4482          * @example
    4483          * hcap.channel.setCurrentChannelAudioLanguageIndex({
    4484          *      "index" : 1,
    4485          *      "onSuccess" : function() {
    4486          *          console.log("onSuccess");
    4487          *      },
    4488          *      "onFailure" : function(f) {
    4489          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    4490          *      }
    4491          * });
    4492          */
    4493         hcap.channel.setCurrentChannelAudioLanguageIndex = function (param) {
    4494             hcap_command("set_current_channel_audio_language_index", param);
    4495         };
    4496         /**
    4497          * Gets supported subtitle list of the current channel. <br>
    4498          * Subtitle list is composed of subtitle setting values and delimiter comma(','). <br>
    4499          * Application can get/set subtitle setting of the current channel by index of the subtitle list.<br>
    4500          * "xx" for which no subtitle is displayed, can be returned as a subtitle setting if the subtitle is not mapped to an available system subtitle.<br>
    4501          * And "off" can be returned as a subtitle setting to turn off the subtitle.<br>
    4502          * If there is no subtitle list of the current channel, only "off" is returned as the subtitle list.<br>
    4503          * Since version 1.24.2, subtitles with "_HOH" appended to the original value(ex: sq_HOH) are provided for the hearing impaired. [EU Only]<br>
    4504          *
    4505          * <div align=center>
    4506          * <table class="hcap_spec" width=400>
    4507          *   <thead>
    4508          *     <tr><th>Item</th><th>Value</th></tr>
    4509          *   </thead>
    4510          *   <tbody>
    4511          *     <tr class="odd"><th>Subtitle List</th><td>off,en,ko,fr,en,xx,eng</td></tr>
    4512          *     <tr><th>index</th><td>0, 1, 2, 3, 4, 5, 6</td></tr>
    4513          *   </tbody>
    4514          *   <tfoot>
    4515          *     <tr><th colspan="2">Subtitle List & Index Example</td></tr>
    4516          *   </tfoot>
    4517          * </table>
    4518          * </div>
    4519          * If the application wants to set the subtitle to French ('fr'), use the index value '3'.</a>
    4520          *
    4521          * @param {Object} param
    4522          * <ul>
    4523          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    4524          *   <pre class="code prettyprint">
    4525          *   param.onSuccess = function (param) {
    4526          *       // {String} param.list - subtitle list string
    4527          *       //     which is composed of subtitle setting values and delimiter comma(',').
    4528          *   }</pre>
    4529          *   </li>
    4530          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    4531          *   <pre class="code prettyprint">
    4532          *   param.onFailure = function (param) {
    4533          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    4534          *   }</pre>
    4535          *   </li>
    4536          * </ul>
    4537          *
    4538          * @since 1.3.1
    4539          *
    4540          * @see
    4541          * <a href="hcap.channel.html#.getCurrentChannelSubtitleIndex">hcap.channel.getCurrentChannelSubtitleIndex()</a><br>
    4542          * <a href="hcap.channel.html#.setCurrentChannelSubtitleIndex">hcap.channel.setCurrentChannelSubtitleIndex()</a><br>
    4543          *
    4544          * @example
    4545          * hcap.channel.getCurrentChannelSubtitleList({
    4546          *      "onSuccess" : function(s) {
    4547          *          console.log("onSuccess : list = " + s.list);
    4548          *      },
    4549          *      "onFailure" : function(f) {
    4550          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    4551          *      }
    4552          * });
    4553          */
    4554         hcap.channel.getCurrentChannelSubtitleList = function (param) {
    4555             hcap_command("get_current_channel_subtitle_language_list", param);
    4556         };
    4557         /**
    4558          * Gets the subtitle index of the current channel.
    4559          * If application wants to map the index to subtitle setting value, get subtitle list of the current channel by
    4560          * <a href="hcap.channel.html#.getCurrentChannelSubtitleList">hcap.channel.getCurrentChannelSubtitleList()</a>.
    4561          *
    4562          * <div align=center>
    4563          * <table class="hcap_spec" width=400>
    4564          *   <thead>
    4565          *     <tr><th>Item</th><th>Value</th></tr>
    4566          *   </thead>
    4567          *   <tbody>
    4568          *     <tr class="odd"><th>Subtitle List</th><td>off,en,ko,fr,en,xx,eng</td></tr>
    4569          *     <tr><th>index</th><td>0, 1, 2, 3, 4, 5, 6</td></tr>
    4570          *   </tbody>
    4571          *   <tfoot>
    4572          *     <tr><th colspan="2">Subtitle List & Index Example</td></tr>
    4573          *   </tfoot>
    4574          * </table>
    4575          * </div>
    4576          *
    4577          * @param {Object} param
    4578          * <ul>
    4579          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    4580          *   <pre class="code prettyprint">
    4581          *   param.onSuccess = function (param) {
    4582          *       // {Number} param.index - subtitle setting index of the current channel.
    4583          *   }</pre>
    4584          *   </li>
    4585          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    4586          *   <pre class="code prettyprint">
    4587          *   param.onFailure = function (param) {
    4588          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    4589          *   }</pre>
    4590          *   </li>
    4591          * </ul>
    4592          *
    4593          * @since 1.3.1
    4594          *
    4595          * @see
    4596          * <a href="hcap.channel.html#.getCurrentChannelSubtitleList">hcap.channel.getCurrentChannelSubtitleList()</a><br>
    4597          * <a href="hcap.channel.html#.setCurrentChannelSubtitleIndex">hcap.channel.setCurrentChannelSubtitleIndex()</a><br>
    4598          *
    4599          * @example
    4600          * hcap.channel.getCurrentChannelSubtitleIndex({
    4601          *      "onSuccess" : function(s) {
    4602          *          console.log("onSuccess : index = " + s.index);
    4603          *      },
    4604          *      "onFailure" : function(f) {
    4605          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    4606          *      }
    4607          * });
    4608          */
    4609         hcap.channel.getCurrentChannelSubtitleIndex = function (param) {
    4610             hcap_command("get_current_channel_subtitle_language_index", param);
    4611         };
    4612         /**
    4613          * Sets the subtitle index of the current channel.<br>
    4614          *
    4615          * <div align=center>
    4616          * <table class="hcap_spec" width=400>
    4617          *   <thead>
    4618          *     <tr><th>Item</th><th>Value</th></tr>
    4619          *   </thead>
    4620          *   <tbody>
    4621          *     <tr class="odd"><th>Subtitle List</th><td>off,en,ko,fr,en,xx,eng</td></tr>
    4622          *     <tr><th>index</th><td>0, 1, 2, 3, 4, 5, 6</td></tr>
    4623          *   </tbody>
    4624          *   <tfoot>
    4625          *     <tr><th colspan="2">Subtitle List & Index Example</td></tr>
    4626          *   </tfoot>
    4627          * </table>
    4628          * </div>
    4629          *
    4630          * If the application wants to set the subtitle to French ('fr'), use the index value '3'</a>.
    4631          *
    4632          * @param {Object} param
    4633          * <ul>
    4634          *   <li>{Number} param.index [Required] - subtitle setting index to be set. Index starts with 0.</li>
    4635          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    4636          *   <pre class="code prettyprint">
    4637          *   param.onSuccess = function() {
    4638          *       // No Parameter.
    4639          *   }</pre>
    4640          *   </li>
    4641          *   <li>{Function} param.onFailure [Optional] - failure callback function.<br>
    4642          *            Setting to the same subtitle index as before will invoke this callback function.
    4643          *   <pre class="code prettyprint">
    4644          *   param.onFailure = function (param) {
    4645          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    4646          *   }</pre>
    4647          *   </li>
    4648          * </ul>
    4649          *
    4650          * @since 1.3.1
    4651          *
    4652          * @see
    4653          * <a href="hcap.channel.html#.getCurrentChannelSubtitleList">hcap.channel.getCurrentChannelSubtitleList()</a><br>
    4654          * <a href="hcap.channel.html#.getCurrentChannelSubtitleIndex">hcap.channel.getCurrentChannelSubtitleIndex()</a><br>
    4655          *
    4656          * @example
    4657          * hcap.channel.setCurrentChannelSubtitleIndex({
    4658          *      "index" : 1,
    4659          *      "onSuccess" : function() {
    4660          *          console.log("onSuccess");
    4661          *      },
    4662          *      "onFailure" : function(f) {
    4663          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    4664          *      }
    4665          * });
    4666          */
    4667         hcap.channel.setCurrentChannelSubtitleIndex = function (param) {
    4668             hcap_command("set_current_channel_subtitle_language_index", param);
    4669         };
    4670         /**
    4671          * Gets the information about the current program and the next program in the current channel.
    4672          *
    4673          * @param {Object} param
    4674          * <ul>
    4675          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    4676          *   <pre class="code prettyprint">
    4677          *   param.onSuccess = function (param) {
    4678          *       // {String} param.currentProgram.title - title of the current program.
    4679          *       // {Number} param.currentProgram.startTime.year - year of the start time of the current program.
    4680          *       // {Number} param.currentProgram.startTime.month - month of the start time of the current program.
    4681          *       // {Number} param.currentProgram.startTime.day - day of the start time of the current program.
    4682          *       // {Number} param.currentProgram.startTime.hour - hour of the start time of the current program.
    4683          *       // {Number} param.currentProgram.startTime.minute - minute of the start time of the current program.
    4684          *       // {Number} param.currentProgram.startTime.second - second of the start time of the current program.
    4685          *       // {String} param.currentProgram.lengthInSeconds - length of the current program in seconds. (0 ~ 2^32 - 1)
    4686          *       // {String} param.nextProgram.title - title of the next program.
    4687          *       // {Number} param.nextProgram.startTime.year - year of the start time of the next program.
    4688          *       // {Number} param.nextProgram.startTime.month - month of the start time of the next program.
    4689          *       // {Number} param.nextProgram.startTime.day - day of the start time of the next program.
    4690          *       // {Number} param.nextProgram.startTime.hour - hour of the start time of the next program.
    4691          *       // {Number} param.nextProgram.startTime.minute - minute of the start time of the next program.
    4692          *       // {Number} param.nextProgram.startTime.second - second of the start time of the next program.
    4693          *       // {String} param.nextProgram.lengthInSeconds - length of the next program in seconds. (0 ~ 2^32 - 1)
    4694          *   }</pre>
    4695          *   </li>
    4696          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    4697          *   <pre class="code prettyprint">
    4698          *   param.onFailure = function (param) {
    4699          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    4700          *   }</pre>
    4701          *   </li>
    4702          * </ul>
    4703          *
    4704          * @since 1.5.0
    4705          *
    4706          * @example
    4707          * hcap.channel.getProgramInfo({
    4708          *      "onSuccess" : function(s) {
    4709          *          console.log("onSuccess :" +
    4710          *              "\n currentProgram title = " + s.currentProgram.title +
    4711          *              "\n currentProgram startTime = " + s.currentProgram.startTime.year +
    4712          *                      "-" + s.currentProgram.startTime.month +
    4713          *                      "-" + s.currentProgram.startTime.day +
    4714          *                      " " + s.currentProgram.startTime.hour +
    4715          *                      " : " + s.currentProgram.startTime.minute +
    4716          *                      " : " + s.currentProgram.startTime.second +
    4717          *              "\n currentProgram length = " + s.currentProgram.lengthInSeconds + "second(s)" +
    4718          *              "\n nextProgram title = " + s.nextProgram.title +
    4719          *              "\n nextProgram startTime = " + s.nextProgram.startTime.year +
    4720          *                      "-" + s.nextProgram.startTime.month +
    4721          *                      "-" + s.nextProgram.startTime.day +
    4722          *                      " " + s.nextProgram.startTime.hour +
    4723          *                      " : " + s.nextProgram.startTime.minute +
    4724          *                      " : " + s.nextProgram.startTime.second +
    4725          *              "\n nextProgram length = " + s.nextProgram.lengthInSeconds + "second(s)");
    4726          *      },
    4727          *      "onFailure" : function(f) {
    4728          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    4729          *      }
    4730          * });
    4731          */
    4732         hcap.channel.getProgramInfo = function (param) {
    4733             hcap_command("get_program_info", param);
    4734         };
    4735         /**
    4736          * Launch the application of the inband data service type in the current channel.
    4737          *
    4738          * @param {Object} param
    4739          * <ul>
    4740          *   <li>{Number} param.inband_data_service_type [Required] - inband data service type to launch at the current channel.</li>
    4741          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    4742          *   <pre class="code prettyprint">
    4743          *   param.onSuccess = function() {
    4744          *       // No Parameter.
    4745          *   }</pre>
    4746          *   </li>
    4747          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    4748          *   <pre class="code prettyprint">
    4749          *   param.onFailure = function (param) {
    4750          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    4751          *   }</pre>
    4752          *   </li>
    4753          * </ul>
    4754          *
    4755          * @since 1.6.0
    4756          *
    4757          * @see
    4758          * <a href="_global_.html#event:inband_data_service_ready">{Event} inband_data_service_ready</a><br>
    4759          * <a href="hcap.channel.InbandDataServiceType.html#.MHP">hcap.channel.InbandDataServiceType.MHP</a><br>
    4760          * <a href="hcap.channel.InbandDataServiceType.html#.MHEG">hcap.channel.InbandDataServiceType.MHEG</a><br>
    4761          * <a href="hcap.channel.InbandDataServiceType.html#.HBBTV">hcap.channel.InbandDataServiceType.HBBTV</a><br>
    4762          *
    4763          * @example
    4764          * hcap.channel.launchInbandDataService({
    4765          *      "inband_data_service_type" : hcap.channel.InbandDataServiceType.HBBTV,
    4766          *      "onSuccess" : function() {
    4767          *          console.log("onSuccess");
    4768          *      },
    4769          *      "onFailure" : function(f) {
    4770          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    4771          *      }
    4772          * });
    4773          */
    4774         hcap.channel.launchInbandDataService = function (param) {
    4775             hcap_command("launch_inband_data_service", param);
    4776         };
    4777         /**
    4778          * Get the available inband data service in the current channel.
    4779          *
    4780          * @param {Object} param
    4781          * <ul>
    4782          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    4783          *   <pre class="code prettyprint">
    4784          *   param.onSuccess = function (param) {
    4785          *       // {Number} param.availableDataServiceType - available data service type in the current channel. If there is no available data service, hcap.channel.InbandDataServiceType.NONE will be returned.
    4786          *   }</pre>
    4787          *   </li>
    4788          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    4789          *   <pre class="code prettyprint">
    4790          *   param.onFailure = function (param) {
    4791          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    4792          *   }</pre>
    4793          *   </li>
    4794          * </ul>
    4795          *
    4796          * @since 1.8.0
    4797          *
    4798          * @see
    4799          * <a href="_global_.html#event:inband_data_service_ready">{Event} inband_data_service_ready</a><br>
    4800          * <a href="hcap.channel.InbandDataServiceType.html#.MHP">hcap.channel.InbandDataServiceType.MHP</a><br>
    4801          * <a href="hcap.channel.InbandDataServiceType.html#.MHEG">hcap.channel.InbandDataServiceType.MHEG</a><br>
    4802          * <a href="hcap.channel.InbandDataServiceType.html#.HBBTV">hcap.channel.InbandDataServiceType.HBBTV</a><br>
    4803          * <a href="hcap.channel.InbandDataServiceType.html#.NONE">hcap.channel.InbandDataServiceType.NONE</a><br>
    4804          *
    4805          * @example
    4806          * hcap.channel.getReadyInbandDataService({
    4807          *      "onSuccess" : function(s) {
    4808          *          var serviceType = "UNKNOWN";
    4809          *          switch(s.availableDataServiceType) {
    4810          *          case hcap.channel.InbandDataServiceType.MHP: serviceType = "MHP"; break;
    4811          *          case hcap.channel.InbandDataServiceType.MHEG: serviceType = "MHEG"; break;
    4812          *          case hcap.channel.InbandDataServiceType.HBBTV: serviceType = "HBBTV"; break;
    4813          *          case hcap.channel.InbandDataServiceType.NONE: serviceType = "NONE"; break;
    4814          *          default: serviceType = "UNKNOWN"; break;
    4815          *          }
    4816          *          console.log("onSuccess : available data service type = " + serviceType);
    4817          *      },
    4818          *      "onFailure" : function(f) {
    4819          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    4820          *      }
    4821          * });
    4822          */
    4823         hcap.channel.getReadyInbandDataService = function (param) {
    4824             hcap_command("get_ready_inband_data_service", param);
    4825         };
    4826         /**
    4827          * Gets the channel signal status.
    4828          *
    4829          * @example
    4830          * hcap.channel.getChannelSignalStatus({
    4831          *      "onSuccess" : function(s) {
    4832          *          console.log("onSuccess  :" +
    4833          *              "\n snr value       : " + s.snrValue       +
    4834          *              "\n frequency       : " + s.frequency      +
    4835          *              "\n signal level    : " + s.signalLevel    +
    4836          *              "\n modulation mode : " + s.modulationMode +
    4837          *              "\n lock status     : " + s.lockStatus);
    4838          *      },
    4839          *      "onFailure" : function(f) {
    4840          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    4841          *      }
    4842          * });
    4843          * @param {Object} param
    4844          * <ul>
    4845          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    4846          *   <pre class="code prettyprint">
    4847          *   param.onSuccess = function (param) {
    4848          *       // {Number} param.snrValue - snr value(dB).
    4849          *       // {Number} param.frequency - current frequency(KHz).
    4850          *       // {Number} param.signalLevel - signal level(%).
    4851          *       // {String} param.modulationMode - modulation mode.
    4852          *       // {Boolean} param.lockStatus - lock status.
    4853          *   }</pre>
    4854          *   </li>
    4855          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    4856          *   <pre class="code prettyprint">
    4857          *   param.onFailure = function (param) {
    4858          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    4859          *   }</pre>
    4860          *   </li>
    4861          * </ul>
    4862          *
    4863          * @since 1.19.2
    4864          */
    4865         hcap.channel.getChannelSignalStatus = function (param) {
    4866             hcap_command("get_channel_signal_status", param);
    4867         };
    4868         /**
    4869          * @namespace hcap.externalinput
    4870          */
    4871         hcap.externalinput = {};
    4872         /**
    4873          * @namespace hcap.externalinput.ExternalInputType
    4874          */
    4875         hcap.externalinput.ExternalInputType = {
    4876             /**
    4877              * External Input Type List TV
    4878              * @since 1.3.1
    4879              * @constant
    4880              */
    4881             TV                : 1,
    4882             /**
    4883              * External Input Type List Composite
    4884              * @since 1.3.1
    4885              * @constant
    4886              */
    4887             COMPOSITE         : 2,
    4888             /**
    4889              * External Input Type List S-Video
    4890              * @since 1.3.1
    4891              * @constant
    4892              */
    4893             SVIDEO            : 3,
    4894             /**
    4895              * External Input Type List Component
    4896              * @since 1.3.1
    4897              * @constant
    4898              */
    4899             COMPONENT         : 4,
    4900             /**
    4901              * External Input Type List RGB
    4902              * @since 1.3.1
    4903              * @constant
    4904              */
    4905             RGB               : 5,
    4906             /**
    4907              * External Input Type List HDMI
    4908              * @since 1.3.1
    4909              * @constant
    4910              */
    4911             HDMI              : 6,
    4912             /**
    4913              * External Input Type List SCART
    4914              * @since 1.3.1
    4915              * @constant
    4916              */
    4917             SCART             : 7,
    4918             USB               : 8,
    4919             /**
    4920              * External Input Type List Others
    4921              * @since 1.3.1
    4922              * @constant
    4923              */
    4924             OTHERS            : 9
    4925         };
    4926         /**
    4927          * Gets the current Audio/Video source type and index. Types and indexes of input sources depend on the H/W Spec.
    4928          * Following table specifies Audio & Video source type.<br>
    4929          *
    4930          * <div align=center id=".EXTERNAL_INPUT_TYPE_LIST">
    4931          * <table class="hcap_spec" width=600>
    4932          *   <thead>
    4933          *     <tr>
    4934          *     <th>Source Type</th>
    4935          *     <th>Value</th>
    4936          *     </tr>
    4937          *   </thead>
    4938          *   <tbody>
    4939          *     <tr class="odd"><td>TV       </td><td class="left"><a href="hcap.externalinput.ExternalInputType.html#.TV">hcap.externalinput.ExternalInputType.TV</a></td></tr>
    4940          *     <tr            ><td>Composite</td><td class="left"><a href="hcap.externalinput.ExternalInputType.html#.COMPOSITE">hcap.externalinput.ExternalInputType.COMPOSITE</a></td></tr>
    4941          *     <tr class="odd"><td>S-Video  </td><td class="left"><a href="hcap.externalinput.ExternalInputType.html#.SVIDEO">hcap.externalinput.ExternalInputType.SVIDEO</a></td></tr>
    4942          *     <tr            ><td>Component</td><td class="left"><a href="hcap.externalinput.ExternalInputType.html#.COMPONENT">hcap.externalinput.ExternalInputType.COMPONENT</a></td></tr>
    4943          *     <tr class="odd"><td>RGB      </td><td class="left"><a href="hcap.externalinput.ExternalInputType.html#.RGB">hcap.externalinput.ExternalInputType.RGB</a></td></tr>
    4944          *     <tr            ><td>HDMI     </td><td class="left"><a href="hcap.externalinput.ExternalInputType.html#.HDMI">hcap.externalinput.ExternalInputType.HDMI</a></td></tr>
    4945          *     <tr class="odd"><td>SCART    </td><td class="left"><a href="hcap.externalinput.ExternalInputType.html#.SCART">hcap.externalinput.ExternalInputType.SCART</a></td></tr>
    4946          *     <tr            ><td>OTHERS   </td><td class="left"><a href="hcap.externalinput.ExternalInputType.html#.OTHERS">hcap.externalinput.ExternalInputType.OTHERS</a></td></tr>
    4947          *   </tbody>
    4948          *   <tfoot>
    4949          *     <tr><th colspan="2">External Input Type List List</td></tr>
    4950          *   </tfoot>
    4951          * </table>
    4952          * </div>
    4953          *
    4954          * Following table shows the multiple index for the same type of Audio & Video source.<br>
    4955          * <div align=center>
    4956          * <table class="hcap_spec" width=600>
    4957          *   <thead>
    4958          *     <tr>
    4959          *     <th>Device Input</th>
    4960          *     <th>External Input Type List</th>
    4961          *     <th>Source Index</th>
    4962          *     </tr>
    4963          *   </thead>
    4964          *   <tbody>
    4965          *     <tr class="odd"><td>1st HDMI   </td><td><a href="hcap.externalinput.ExternalInputType.html#.HDMI">hcap.externalinput.ExternalInputType.HDMI</a></td><td>0</td></tr>
    4966          *     <tr>            <td>2nd HDMI   </td><td><a href="hcap.externalinput.ExternalInputType.html#.HDMI">hcap.externalinput.ExternalInputType.HDMI</a></td><td>1</td></tr>
    4967          *     <tr class="odd"><td>1st S-Video</td><td><a href="hcap.externalinput.ExternalInputType.html#.SVIDEO">hcap.externalinput.ExternalInputType.SVIDEO</a><td>0</td></tr>
    4968          *   </tbody>
    4969          *   <tfoot>
    4970          *     <tr><th colspan="3">Example of Multiple Index</td></tr>
    4971          *   </tfoot>
    4972          * </table>
    4973          * </div>
    4974          *
    4975          * @param {Object} param
    4976          * <ul>
    4977          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    4978          *   <pre class="code prettyprint">
    4979          *   param.onSuccess = function (param) {
    4980          *       // {Number} param.type - external Input Type List.
    4981          *       // {Number} param.index - index of source. Index value starts with 0.
    4982          *       //     Max value of source index depends on the H/W Spec
    4983          *   }</pre>
    4984          *   </li>
    4985          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    4986          *   <pre class="code prettyprint">
    4987          *   param.onFailure = function (param) {
    4988          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    4989          *   }</pre>
    4990          *   </li>
    4991          * </ul>
    4992          *
    4993          * @see
    4994          * <a href="_global_.html#event:external_input_changed">{Event} external_input_changed</a><br>
    4995          * <a href="hcap.externalinput.html#.setCurrentExternalInput">hcap.externalinput.setCurrentExternalInput()</a><br>
    4996          * <a href="hcap.externalinput.html#.isExternalInputConnected">hcap.externalinput.isExternalInputConnected()</a><br>
    4997          * <a href="hcap.externalinput.html#.getExternalInputList">hcap.externalinput.getExternalInputList()</a><br>
    4998          * <a href="hcap.externalinput.ExternalInputType.html#.TV">hcap.externalinput.ExternalInputType.TV</a><br>
    4999          * <a href="hcap.externalinput.ExternalInputType.html#.COMPOSITE">hcap.externalinput.ExternalInputType.COMPOSITE</a><br>
    5000          * <a href="hcap.externalinput.ExternalInputType.html#.SVIDEO">hcap.externalinput.ExternalInputType.SVIDEO</a><br>
    5001          * <a href="hcap.externalinput.ExternalInputType.html#.COMPONENT">hcap.externalinput.ExternalInputType.COMPONENT</a><br>
    5002          * <a href="hcap.externalinput.ExternalInputType.html#.RGB">hcap.externalinput.ExternalInputType.RGB</a><br>
    5003          * <a href="hcap.externalinput.ExternalInputType.html#.HDMI">hcap.externalinput.ExternalInputType.HDMI</a><br>
    5004          * <a href="hcap.externalinput.ExternalInputType.html#.SCART">hcap.externalinput.ExternalInputType.SCART</a><br>
    5005          * <a href="hcap.externalinput.ExternalInputType.html#.OTHERS">hcap.externalinput.ExternalInputType.OTHERS</a><br>
    5006          *
    5007          * @since 1.3.1
    5008          *
    5009          * @example
    5010          * hcap.externalinput.getCurrentExternalInput({
    5011          *      "onSuccess" : function(s) {
    5012          *          console.log("onSuccess :" +
    5013          *              "\n type = " + s.type +
    5014          *              "\n index = " + s.index);
    5015          *      },
    5016          *      "onFailure" : function(f) {
    5017          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5018          *      }
    5019          * });
    5020          */
    5021         hcap.externalinput.getCurrentExternalInput = function (param) {
    5022             hcap_command("get_external_input", param);
    5023         };
    5024         /**
    5025          * Changes the current Audio & Video source type and index.<br>
    5026          * For the external input type list, refer to <a href="../symbols/hcap.externalinput.html#.EXTERNAL_INPUT_TYPE_LIST">{ external input type list }</a>.<br>
    5027          *
    5028          * @param {Object} param
    5029          * <ul>
    5030          *   <li>{Number} param.type [Required] - audio/Video source type.</li>
    5031          *   <li>{Number} param.index [Required] - index of source type. Index value starts with 0.</li>
    5032          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    5033          *   <pre class="code prettyprint">
    5034          *   param.onSuccess = function() {
    5035          *       // No parameter.
    5036          *   }</pre>
    5037          *   </li>
    5038          *   <li>{Function} param.onFailure [Optional] - failure callback function.<br>
    5039          *           Setting to same audio/video source type and index will invoke this callback function.
    5040          *   <pre class="code prettyprint">
    5041          *   param.onFailure = function (param) {
    5042          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    5043          *   }</pre>
    5044          *   </li>
    5045          * </ul>
    5046          *
    5047          * @see
    5048          * <a href="_global_.html#event:external_input_changed">{Event} external_input_changed</a><br>
    5049          * <a href="hcap.externalinput.html#.getCurrentExternalInput">hcap.externalinput.getCurrentExternalInput()</a><br>
    5050          * <a href="hcap.externalinput.html#.isExternalInputConnected">hcap.externalinput.isExternalInputConnected()</a><br>
    5051          * <a href="hcap.externalinput.html#.getExternalInputList">hcap.externalinput.getExternalInputList()</a><br>
    5052          * <a href="hcap.externalinput.ExternalInputType.html#.TV">hcap.externalinput.ExternalInputType.TV</a><br>
    5053          * <a href="hcap.externalinput.ExternalInputType.html#.COMPOSITE">hcap.externalinput.ExternalInputType.COMPOSITE</a><br>
    5054          * <a href="hcap.externalinput.ExternalInputType.html#.SVIDEO">hcap.externalinput.ExternalInputType.SVIDEO</a><br>
    5055          * <a href="hcap.externalinput.ExternalInputType.html#.COMPONENT">hcap.externalinput.ExternalInputType.COMPONENT</a><br>
    5056          * <a href="hcap.externalinput.ExternalInputType.html#.RGB">hcap.externalinput.ExternalInputType.RGB</a><br>
    5057          * <a href="hcap.externalinput.ExternalInputType.html#.HDMI">hcap.externalinput.ExternalInputType.HDMI</a><br>
    5058          * <a href="hcap.externalinput.ExternalInputType.html#.SCART">hcap.externalinput.ExternalInputType.SCART</a><br>
    5059          * <a href="hcap.externalinput.ExternalInputType.html#.OTHERS">hcap.externalinput.ExternalInputType.OTHERS</a><br>
    5060          *
    5061          * @since 1.3.1
    5062          *
    5063          * @example
    5064          * hcap.externalinput.setCurrentExternalInput({
    5065          *      "type" : hcap.externalinput.ExternalInputType.HDMI,
    5066          *      "index" : 1,
    5067          *      "onSuccess" : function() {
    5068          *          console.log("onSuccess");
    5069          *      },
    5070          *      "onFailure" : function(f) {
    5071          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5072          *      }
    5073          * });
    5074          */
    5075         hcap.externalinput.setCurrentExternalInput = function (param) {
    5076             hcap_command("set_external_input", param);
    5077         };
    5078         /**
    5079          * Checks if the Audio/Video input signal is connected to RGB or HDMI, or if the cable is connected to other input sources.<br>
    5080          * Types and indexes of input sources depend on the H/W Spec.<br><br>
    5081          * For the external input type list, refer to <a href="../symbols/hcap.externalinput.html#.EXTERNAL_INPUT_TYPE_LIST">{ external input type list }</a>.<br>
    5082          *
    5083          * @param {Object} param
    5084          * <ul>
    5085          *   <li>{Number} param.type [Required] - external input type.</li>
    5086          *   <li>{Number} param.index [Required] - index of source type. Index value starts with 0.</li>
    5087          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    5088          *   <pre class="code prettyprint">
    5089          *   param.onSuccess = function (param) {
    5090          *       // {Boolean} param.isConnected -  true if the signal of RGB or HDMI was connected,
    5091          *       //     or the cable of other input sources was connected; otherwise false.
    5092          *   }</pre>
    5093          *   </li>
    5094          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    5095          *   <pre class="code prettyprint">
    5096          *   param.onFailure = function (param) {
    5097          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    5098          *   }</pre>
    5099          *   </li>
    5100          * </ul>
    5101          *
    5102          * @see
    5103          * <a href="_global_.html#event:external_input_changed">{Event} external_input_changed</a><br>
    5104          * <a href="hcap.externalinput.html#.getCurrentExternalInput">hcap.externalinput.getCurrentExternalInput()</a><br>
    5105          * <a href="hcap.externalinput.html#.setCurrentExternalInput">hcap.externalinput.setCurrentExternalInput()</a><br>
    5106          * <a href="hcap.externalinput.html#.getExternalInputList">hcap.externalinput.getExternalInputList()</a><br>
    5107          * <a href="hcap.externalinput.ExternalInputType.html#.TV">hcap.externalinput.ExternalInputType.TV</a><br>
    5108          * <a href="hcap.externalinput.ExternalInputType.html#.COMPOSITE">hcap.externalinput.ExternalInputType.COMPOSITE</a><br>
    5109          * <a href="hcap.externalinput.ExternalInputType.html#.SVIDEO">hcap.externalinput.ExternalInputType.SVIDEO</a><br>
    5110          * <a href="hcap.externalinput.ExternalInputType.html#.COMPONENT">hcap.externalinput.ExternalInputType.COMPONENT</a><br>
    5111          * <a href="hcap.externalinput.ExternalInputType.html#.RGB">hcap.externalinput.ExternalInputType.RGB</a><br>
    5112          * <a href="hcap.externalinput.ExternalInputType.html#.HDMI">hcap.externalinput.ExternalInputType.HDMI</a><br>
    5113          * <a href="hcap.externalinput.ExternalInputType.html#.SCART">hcap.externalinput.ExternalInputType.SCART</a><br>
    5114          * <a href="hcap.externalinput.ExternalInputType.html#.OTHERS">hcap.externalinput.ExternalInputType.OTHERS</a><br>
    5115          *
    5116          * @since 1.3.1
    5117          *
    5118          * @example
    5119          * // this examples shows how to check that the 1st RGB input is connected.
    5120          * hcap.externalinput.isExternalInputConnected({
    5121          *      "type" : hcap.externalinput.ExternalInputType.RGB,
    5122          *      "index" : 0,
    5123          *      "onSuccess" : function(s) {
    5124          *          console.log("onSuccess : isConnected = " + s.isConnected);
    5125          *      },
    5126          *      "onFailure" : function(f) {
    5127          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5128          *      }
    5129          * });
    5130          */
    5131         hcap.externalinput.isExternalInputConnected = function (param) {
    5132             hcap_command("check_external_input_connected", param);
    5133         };
    5134         /**
    5135          * Gets the physically supported external input list.<br>
    5136          *
    5137          * @param {Object} param
    5138          * <ul>
    5139          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    5140          *   <pre class="code prettyprint">
    5141          *   param.onSuccess = function (param) {
    5142          *       // {Array} param.list - external input list supported by TV
    5143          *       //         {Number} param.list[].type - external input type (refer to <a href="../symbols/hcap.externalinput.html#.EXTERNAL_INPUT_TYPE_LIST">external input type</a>)
    5144          *       //         {Number} param.list[].index - external input index in the external input type
    5145          *       //         {String} param.list[].name - OsdName of external input type (HDMI-CEC Only)
    5146          *   }</pre>
    5147          *   </li>
    5148          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    5149          *   <pre class="code prettyprint">
    5150          *   param.onFailure = function (param) {
    5151          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    5152          *   }</pre>
    5153          *   </li>
    5154          * </ul>
    5155          *
    5156          * @see
    5157          * <a href="_global_.html#event:external_input_changed">{Event} external_input_changed</a><br>
    5158          * <a href="hcap.externalinput.html#.getCurrentExternalInput">hcap.externalinput.getCurrentExternalInput()</a><br>
    5159          * <a href="hcap.externalinput.html#.setCurrentExternalInput">hcap.externalinput.setCurrentExternalInput()</a><br>
    5160          * <a href="hcap.externalinput.ExternalInputType.html#.TV">hcap.externalinput.ExternalInputType.TV</a><br>
    5161          * <a href="hcap.externalinput.ExternalInputType.html#.COMPOSITE">hcap.externalinput.ExternalInputType.COMPOSITE</a><br>
    5162          * <a href="hcap.externalinput.ExternalInputType.html#.SVIDEO">hcap.externalinput.ExternalInputType.SVIDEO</a><br>
    5163          * <a href="hcap.externalinput.ExternalInputType.html#.COMPONENT">hcap.externalinput.ExternalInputType.COMPONENT</a><br>
    5164          * <a href="hcap.externalinput.ExternalInputType.html#.RGB">hcap.externalinput.ExternalInputType.RGB</a><br>
    5165          * <a href="hcap.externalinput.ExternalInputType.html#.HDMI">hcap.externalinput.ExternalInputType.HDMI</a><br>
    5166          * <a href="hcap.externalinput.ExternalInputType.html#.SCART">hcap.externalinput.ExternalInputType.SCART</a><br>
    5167          * <a href="hcap.externalinput.ExternalInputType.html#.OTHERS">hcap.externalinput.ExternalInputType.OTHERS</a><br>
    5168          *
    5169          * @since 1.20
    5170          *
    5171          * @example
    5172          * hcap.externalinput.getExternalInputList({
    5173          *      "onSuccess" : function(s) {
    5174          *          console.log("onSuccess : list length = " + s.list.length);
    5175          *          for (var i = 0; i < s.list.length; i++) {
    5176          *              console.log("(" + s.list[i].type + "," + s.list[i].index + "," + s.list[i].name + ")");
    5177          *          }
    5178          *      },
    5179          *      "onFailure" : function(f) {
    5180          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5181          *      }
    5182          * });
    5183          */
    5184         hcap.externalinput.getExternalInputList = function (param) {
    5185             hcap_command("get_external_input_list", param);
    5186         };
    5187         /**
    5188          * @namespace hcap.carousel
    5189          */
    5190         hcap.carousel = {};
    5191         /**
    5192          * Requests to cache the carousel data file for the given url. The carousel data will be cached internally.<br>
    5193          * When the carousel data is cached, application will received the <a href="_global_.html#event:carousel_data_cached">{Event} carousel_data_cached</a>.
    5194          * <br><br>
    5195          * The carousel data can be broadcasted in two ways. <br>
    5196          * One is through RF channel and the other is through IP multicast channel.<br>
    5197          *
    5198          * @param {Object} param
    5199          * <ul>
    5200          *   <li>{String} param.url [Required] - carousel data url. <br>The format should be "hcap://[frequency (Hz, and MHz for satellite)].[program number].[component tag]/[path]/[content name]".<br>
    5201          *                                       frequency 1 means Pro:Centric server same as data channel of RF frequency or IP multicast address.</li>
    5202          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    5203          *   <pre class="code prettyprint">
    5204          *   param.onSuccess = function() {
    5205          *       // No Parameter.
    5206          *   }</pre>
    5207          *   </li>
    5208          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    5209          *   <pre class="code prettyprint">
    5210          *   param.onFailure = function (param) {
    5211          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    5212          *   }</pre>
    5213          *   </li>
    5214          * </ul>
    5215          *
    5216          * @see
    5217          * <a href="hcap.carousel.html#.isCarouselDataCached">hcap.carousel.isCarouselDataCached()</a><br>
    5218          * <a href="hcap.carousel.html#.clearCarouselDataCache">hcap.carousel.clearCarouselDataCache()</a><br>
    5219          * <a href="_global_.html#event:carousel_data_cached">{Event} carousel_data_cached</a>
    5220          *
    5221          * @since 1.3.1
    5222          *
    5223          * @example
    5224          * // Request to cache xait.xml from data channel (frequency : 1 for both RF and IP multicast) with program number 1 and component tag 1.
    5225          * hcap.carousel.requestCacheCarouselData({
    5226          *      "url" : "hcap://1.1.1/xait.xml",
    5227          *      "onSuccess" : function() {
    5228          *          console.log("onSuccess");
    5229          *      },
    5230          *      "onFailure" : function(f) {
    5231          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5232          *      }
    5233          * });
    5234          *
    5235          * @example
    5236          * // Request to cache xait.xml from the channel (frequency : 513MHz) with program number 1 and component tag 1.
    5237          * hcap.carousel.requestCacheCarouselData({
    5238          *      "url" : "hcap://513000000.1.1/xait.xml",
    5239          *      "onSuccess" : function() {
    5240          *          console.log("onSuccess");
    5241          *      },
    5242          *      "onFailure" : function(f) {
    5243          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5244          *      }
    5245          * });
    5246          */
    5247         hcap.carousel.requestCacheCarouselData = function (param) {
    5248             hcap_command("request_content", param);
    5249         };
    5250         /**
    5251          * Checks if the carousel data is cached or not.
    5252          *
    5253          * @param {Object} param
    5254          * <ul>
    5255          *   <li>{String} param.url [Required] - carousel data url to check.</li>
    5256          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    5257          *   <pre class="code prettyprint">
    5258          *   param.onSuccess = function (param) {
    5259          *       // {String} param.cachePath - cached url path if carousel data is cached. Empty string ("") if not.
    5260          *   }</pre>
    5261          *   </li>
    5262          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    5263          *   <pre class="code prettyprint">
    5264          *   param.onFailure = function (param) {
    5265          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    5266          *   }</pre>
    5267          *   </li>
    5268          * </ul>
    5269          *
    5270          * @see
    5271          * <a href="hcap.carousel.html#.requestCacheCarouselData">hcap.carousel.requestCacheCarouselData()</a><br>
    5272          * <a href="hcap.carousel.html#.clearCarouselDataCache">hcap.carousel.clearCarouselDataCache()</a><br>
    5273          * <a href="_global_.html#event:carousel_data_cached">{Event} carousel_data_cached</a>
    5274          *
    5275          * @since 1.3.1
    5276          *
    5277          * @example
    5278          * hcap.carousel.isCarouselDataCached({
    5279          *      "url" : "hcap://1.1.1/xait.xml",
    5280          *      "onSuccess" : function(s) {
    5281          *          console.log("onSuccess : cachePath = " + s.cachePath);
    5282          *      },
    5283          *      "onFailure" : function(f) {
    5284          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5285          *      }
    5286          * });
    5287          */
    5288         hcap.carousel.isCarouselDataCached = function (param) {
    5289             hcap_command("is_content_loaded", param);
    5290         };
    5291         /**
    5292          * Clear the cache storage for the carousel data. All carousel cache will be deleted.
    5293          *
    5294          * @param {Object} param
    5295          * <ul>
    5296          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    5297          *   <pre class="code prettyprint">
    5298          *   param.onSuccess = function() {
    5299          *       // No Parameter.
    5300          *   }</pre>
    5301          *   </li>
    5302          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    5303          *   <pre class="code prettyprint">
    5304          *   param.onFailure = function (param) {
    5305          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    5306          *   }</pre>
    5307          *   </li>
    5308          * </ul>
    5309          *
    5310          * @since 1.3.1
    5311          *
    5312          * @see
    5313          * <a href="hcap.carousel.html#.requestCacheCarouselData">hcap.carousel.requestCacheCarouselData()</a><br>
    5314          * <a href="hcap.carousel.html#.isCarouselDataCached">hcap.carousel.isCarouselDataCached()</a><br>
    5315          * <a href="_global_.html#event:carousel_data_cached">{Event} carousel_data_cached</a>
    5316          *
    5317          * @example
    5318          * hcap.carousel.clearCarouselDataCache({
    5319          *      "onSuccess" : function() {
    5320          *          console.log("onSuccess");
    5321          *      },
    5322          *      "onFailure" : function(f) {
    5323          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5324          *      }
    5325          * });
    5326          */
    5327         hcap.carousel.clearCarouselDataCache = function (param) {
    5328             hcap_command("clear_content_cache", param);
    5329         };
    5330         /**
    5331          * @namespace hcap.mpi
    5332          */
    5333         hcap.mpi = {};
    5334         /**
    5335          * Sends the vendor specific data using the MPI card and receives the reply data.
    5336          *
    5337          * @param {Object} param
    5338          * <ul>
    5339          *   <li>{Number} param.id [Required] - request ID that is defined between application and headend. (0 ~ 255)</li>
    5340          *   <li>{Number} param.sequence [Required] - sequence number of the packet. (0 ~ 255).</li>
    5341          *   <li>{String} param.packet [Required] - packet data to the MPI card. (0 ~ 32).
    5342          *   The packet format is character array. For example param.packet = "ABC0x123"; </li>
    5343          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    5344          *   <pre class="code prettyprint">
    5345          *   param.onSuccess = function (param) {
    5346          *       // {String} param.packet - received packet data (length < 32) from MPI card.
    5347          *       //     If failed to get the data, then the packet will be empty string "".
    5348          *   }</pre>
    5349          *   </li>
    5350          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    5351          *   <pre class="code prettyprint">
    5352          *   param.onFailure = function (param) {
    5353          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    5354          *   }</pre>
    5355          *   </li>
    5356          * </ul>
    5357          *
    5358          * @since 1.3.1
    5359          *
    5360          * @see
    5361          * <a href="hcap.mpi.html#.sendMpiData">hcap.mpi.sendMpiData()</a>
    5362          *
    5363          * @example
    5364          * hcap.mpi.sendAndReceiveMpiData({
    5365          *      "id" : 0,
    5366          *      "sequence" : 0,
    5367          *      "packet" : "ABC0x123",
    5368          *      "onSuccess" : function(s) {
    5369          *          console.log("onSuccess return packet " + s.packet);
    5370          *      },
    5371          *      "onFailure" : function(f) {
    5372          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5373          *      }
    5374          * });
    5375          */
    5376         hcap.mpi.sendAndReceiveMpiData = function (param) {
    5377             hcap_command("send_and_receive_mpi_data", param);
    5378         };
    5379         /**
    5380          * Sends the vendor specific data to the MPI card<br>
    5381          * The MPI data will be received by <a href="_global_.html#event:mpi_data_received">{Event} mpi_data_received</a>.
    5382          *
    5383          * @param {Object} param
    5384          * <ul>
    5385          *   <li>{Number} param.id [Required] - request ID that is defined between application and headend. (0 ~ 255)</li>
    5386          *   <li>{Number} param.sequence [Required] - sequence number of the packet. (0 ~ 255).</li>
    5387          *   <li>{String} param.packet [Required] - packet data to the MPI card. (0 ~ 32).
    5388          *   The packet format is character array. For example param.packet = "ABC0x123"; </li>
    5389          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    5390          *   <pre class="code prettyprint">
    5391          *   param.onSuccess = function() {
    5392          *       // No Parameter.
    5393          *   }</pre>
    5394          *   </li>
    5395          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    5396          *   <pre class="code prettyprint">
    5397          *   param.onFailure = function (param) {
    5398          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    5399          *   }</pre>
    5400          *   </li>
    5401          * </ul>
    5402          *
    5403          * @since 1.3.1
    5404          *
    5405          * @see
    5406          * <a href="hcap.mpi.html#.sendAndReceiveMpiData">hcap.mpi.sendAndReceiveMpiData()</a><br>
    5407          * <a href="_global_.html#event:mpi_data_received">{Event} mpi_data_received</a>
    5408          *
    5409          * @example
    5410          * hcap.mpi.sendMpiData({
    5411          *      "id" : 0,
    5412          *      "sequence" : 0,
    5413          *      "packet" : "ABC0x123",
    5414          *      "onSuccess" : function() {
    5415          *          console.log("onSuccess");
    5416          *      },
    5417          *      "onFailure" : function(f) {
    5418          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5419          *      }
    5420          * });
    5421          */
    5422         hcap.mpi.sendMpiData = function (param) {
    5423             hcap_command("send_mpi_data", param);
    5424         };
    5425         /**
    5426          * @namespace hcap.power
    5427          */
    5428         hcap.power = {};
    5429         /**
    5430          * @namespace hcap.power.PowerMode
    5431          */
    5432         hcap.power.PowerMode = {
    5433             /**
    5434              * TV seems to be turned off to user(panel is off), but both micom and chipset are on.
    5435              * @since 1.3.1
    5436              * @constant
    5437              */
    5438             WARM             : 2,
    5439             /**
    5440              * This is normal TV-on status to user(panel is on). Both micom and chipset are on.
    5441              * @since 1.3.1
    5442              * @constant
    5443              */
    5444             NORMAL           : 1
    5445         };
    5446         /**
    5447          * Gets the power mode of the TV.
    5448          *
    5449          * @param {Object} param
    5450          * <ul>
    5451          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    5452          *   <pre class="code prettyprint">
    5453          *   param.onSuccess = function (param) {
    5454          *       // {Number} param.mode - power mode of the TV.
    5455          *   }</pre>
    5456          *   </li>
    5457          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    5458          *   <pre class="code prettyprint">
    5459          *   param.onFailure = function (param) {
    5460          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    5461          *   }</pre>
    5462          *   </li>
    5463          * </ul>
    5464          *
    5465          * @since 1.3.1
    5466          *
    5467          * @see
    5468          * <a href="hcap.power.html#.setPowerMode">hcap.power.setPowerMode()</a><br>
    5469          * <a href="hcap.power.html#.isWarmUpdate">hcap.power.isWarmUpdate()</a><br>
    5470          * <a href="hcap.power.PowerMode.html#.WARM">hcap.power.PowerMode.WARM</a><br>
    5471          * <a href="hcap.power.PowerMode.html#.NORMAL">hcap.power.PowerMode.NORMAL</a>
    5472          *
    5473          * @example
    5474          * hcap.power.getPowerMode({
    5475          *      "onSuccess" : function(s) {
    5476          *          console.log("onSuccess power mode " + s.mode);
    5477          *      },
    5478          *      "onFailure" : function(f) {
    5479          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5480          *      }
    5481          * });
    5482          */
    5483         hcap.power.getPowerMode = function (param) {
    5484             hcap_command("get_power_mode", param);
    5485         };
    5486         /**
    5487          * Sets the power mode of the TV.
    5488          *
    5489          * @param {Object} param
    5490          * <ul>
    5491          *   <li>{Number} param.mode [Required] - power mode to be set for TV. Possible values are followings.
    5492          * <div align=center>
    5493          * <table class="hcap_spec" width=600>
    5494          *   <thead>
    5495          *     <tr><th>mode</th><th>value</th><th>description</th></tr>
    5496          *   </thead>
    5497          *   <tbody>
    5498          *     <tr class="odd"><th>Standby mode </th><td> - </td><td>TV is off</td></tr>
    5499          *     <tr><th>Normal mode</th><td><a href="hcap.power.PowerMode.html#.NORMAL">hcap.power.PowerMode.NORMAL</td><td class="left">the board and the panel is on</td></tr>
    5500          *     <tr><th>Warm mode</th><td><a href="hcap.power.PowerMode.html#.WARM">hcap.power.PowerMode.WARM</td><td class="left">the board is alive but the panel is off</td></tr>
    5501          *   </tbody>
    5502          *   <tfoot>
    5503          *     <tr><th colspan="3">Power mode of TV</td></tr>
    5504          *   </tfoot>
    5505          * </table>
    5506          * </div></li>
    5507          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    5508          *   <pre class="code prettyprint">
    5509          *   param.onSuccess = function() {
    5510          *       // No Parameter.
    5511          *   }</pre>
    5512          *   </li>
    5513          *   <li>{Function} param.onFailure [Optional] - failure callback function.<br>
    5514          *        Setting to the same power mode as before will invoke this callback function.
    5515          *   <pre class="code prettyprint">
    5516          *   param.onFailure = function (param) {
    5517          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    5518          *   }</pre>
    5519          *   </li>
    5520          * </ul>
    5521          *
    5522          * @since 1.3.1
    5523          *
    5524          * @see
    5525          * <a href="hcap.power.html#.getPowerMode">hcap.power.getPowerMode()</a><br>
    5526          * <a href="hcap.power.html#.isWarmUpdate">hcap.power.isWarmUpdate()</a><br>
    5527          * <a href="hcap.power.PowerMode.html#.WARM">hcap.power.PowerMode.WARM</a><br>
    5528          * <a href="hcap.power.PowerMode.html#.NORMAL">hcap.power.PowerMode.NORMAL</a>
    5529          *
    5530          * @example
    5531          * hcap.power.setPowerMode({
    5532          *      "mode" : hcap.power.PowerMode.WARM,
    5533          *      "onSuccess" : function() {
    5534          *          console.log("onSuccess");
    5535          *      },
    5536          *      "onFailure" : function(f) {
    5537          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5538          *      }
    5539          * });
    5540          */
    5541         hcap.power.setPowerMode = function (param) {
    5542             hcap_command("set_power_mode", param);
    5543         };
    5544         /**
    5545          * Gets whether TV power is in warm update or not.<br>
    5546          * "warm update" means the duration from starting HCAP application upgrade and EZ-I upgrade in the power WARM state to the power STANDBY.
    5547          *
    5548          * @param {Object} param
    5549          * <ul>
    5550          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    5551          *   <pre class="code prettyprint">
    5552          *   param.onSuccess = function(param) {
    5553          *       // {Boolean} param.isWarmUpdate - true : TV power is in warm update, otherwise false.
    5554          *   }</pre>
    5555          *   </li>
    5556          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    5557          *   <pre class="code prettyprint">
    5558          *   param.onFailure = function(param) {
    5559          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    5560          *   }</pre>
    5561          *   </li>
    5562          * </ul>
    5563          *
    5564          * @since 1.19.0
    5565          *
    5566          * @see
    5567          * <a href="hcap.power.html#.getPowerMode">hcap.power.getPowerMode()</a><br>
    5568          * <a href="hcap.power.html#.setPowerMode">hcap.power.setPowerMode()</a><br>
    5569          * <a href="hcap.power.PowerMode.html#.WARM">hcap.power.PowerMode.WARM</a><br>
    5570          * <a href="hcap.power.PowerMode.html#.NORMAL">hcap.power.PowerMode.NORMAL</a>
    5571          *
    5572          * @example
    5573          * hcap.power.isWarmUpdate({
    5574          *      "onSuccess":function(s) {
    5575          *          console.log("onSuccess : is warm update = " + s.isWarmUpdate);
    5576          *      },
    5577          *      "onFailure":function(f) {
    5578          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5579          *      }
    5580          * });
    5581          */
    5582         hcap.power.isWarmUpdate = function (param) {
    5583             hcap_command("is_power_warm_update", param);
    5584         };
    5585         /**
    5586          * Turns off the TV.
    5587          *
    5588          * @param {Object} param
    5589          * <ul>
    5590          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    5591          *   <pre class="code prettyprint">
    5592          *   param.onSuccess = function() {
    5593          *       // No Parameter.
    5594          *   }</pre>
    5595          *   </li>
    5596          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    5597          *   <pre class="code prettyprint">
    5598          *   param.onFailure = function (param) {
    5599          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    5600          *   }</pre>
    5601          *   </li>
    5602          * </ul>
    5603          *
    5604          * @since 1.3.1
    5605          *
    5606          * @see
    5607          * <a href="hcap.power.html#.reboot">hcap.power.reboot()</a>
    5608          *
    5609          * @example
    5610          * hcap.power.powerOff({
    5611          *      "onSuccess" : function() {
    5612          *          console.log("onSuccess");
    5613          *      },
    5614          *      "onFailure" : function(f) {
    5615          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5616          *      }
    5617          * });
    5618          */
    5619         hcap.power.powerOff = function (param) {
    5620             hcap_command("power_off", param);
    5621         };
    5622         /**
    5623          * power.reboots the TV.
    5624          *
    5625          * @param {Object} param
    5626          * <ul>
    5627          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    5628          *   <pre class="code prettyprint">
    5629          *   param.onSuccess = function() {
    5630          *       // No Parameter.
    5631          *   }</pre>
    5632          *   </li>
    5633          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    5634          *   <pre class="code prettyprint">
    5635          *   param.onFailure = function (param) {
    5636          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    5637          *   }</pre>
    5638          *   </li>
    5639          * </ul>
    5640          *
    5641          * @since 1.3.1
    5642          *
    5643          * @see
    5644          * <a href="hcap.power.html#.powerOff">power.powerOff()</a>
    5645          *
    5646          * @example
    5647          * hcap.power.reboot({
    5648          *      "onSuccess" : function() {
    5649          *          console.log("onSuccess");
    5650          *      },
    5651          *      "onFailure" : function(f) {
    5652          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5653          *      }
    5654          * });
    5655          */
    5656         hcap.power.reboot = function (param) {
    5657             hcap_command("reboot", param);
    5658         };
    5659         /**
    5660          * @namespace hcap.time
    5661          */
    5662         hcap.time = {};
    5663         /**
    5664          * Sets the TV time.<br>
    5665          * Input time is the local time which is the time after applying GMT offset for time zone and daylight saving time.<br>
    5666          * GMT offset for time zone and daylight saving time are required to set the TV localtime.<br>
    5667          * Current GMT offset and daylight saving time can be got from <a href="hcap.time.html#.getLocalTime">hcap.time.getLocalTime()</a>.
    5668          * GMT offset must be standard GMT offset of the city.<br>
    5669          * Some of the standard GMT offset values and illegal GMT offset like -110 could not be set to TV.<br>
    5670          * In this error case, failure callback function will be invoked.
    5671          *
    5672          * @param {Object} param
    5673          * <ul>
    5674          *   <li>{Number} param.year [REQUIRED] - year (2000 ~ 2029).</li>
    5675          *   <li>{Number} param.month [REQUIRED] - month (1 ~ 12).</li>
    5676          *   <li>{Number} param.day [REQUIRED] - day (1 ~ 31).</li>
    5677          *   <li>{Number} param.hour [REQUIRED] - hour (0 ~ 23).</li>
    5678          *   <li>{Number} param.minute [REQUIRED] - minute (0 ~ 59).</li>
    5679          *   <li>{Number} param.second [REQUIRED] - second (0 ~ 59).</li>
    5680          *   <li>{Number} param.gmtOffsetInMinute [REQUIRED] - GMT offset in minute for time zone (-660 ~ 720).</li>
    5681          *   <li>{Boolean} param.isDaylightSaving [REQUIRED] - false : not applying daylight saving time to local time, true : applying daylight saving time to local time.</li>
    5682          *   <li>{Function} param.onSuccess [Optional] - success callback function.<br>
    5683          *           Setting to the same year/month/day/hour/minute/second/gmt_offset_in_minute/daylight_saving as before will invoke this callback function.
    5684          *   <pre class="code prettyprint">
    5685          *   param.onSuccess = function() {
    5686          *       // No Parameter.
    5687          *   }</pre>
    5688          *   </li>
    5689          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    5690          *   <pre class="code prettyprint">
    5691          *   param.onFailure = function (param) {
    5692          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    5693          *   }</pre>
    5694          *   </li>
    5695          * </ul>
    5696          *
    5697          * @since 1.3.1
    5698          *
    5699          * @see
    5700          * <a href="hcap.time.html#.getLocalTime">hcap.time.getLocalTime()</a><br>
    5701          *
    5702          * @example
    5703          * hcap.time.setLocalTime({
    5704          *      "year" : 2010,
    5705          *      "month" : 8,
    5706          *      "day" : 31,
    5707          *      "hour" : 1,
    5708          *      "minute" : 0,
    5709          *      "second" : 0,
    5710          *      "gmtOffsetInMinute" : 180,
    5711          *      "isDaylightSaving" : false,
    5712          *      "onSuccess" : function() {
    5713          *          console.log("onSuccess");
    5714          *      },
    5715          *      "onFailure" : function(f) {
    5716          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5717          *      }
    5718          * });
    5719          */
    5720         hcap.time.setLocalTime = function (param) {
    5721             hcap_command("set_tv_localtime", param);
    5722         };
    5723         /**
    5724          * Gets the TV time.<br>
    5725          * TV time is the local time which is the time after applying GMT offset for time zone and daylight saving time.<br>
    5726          * In this error case, failure callback function will be invoked.
    5727          *
    5728          * @param {Object} param
    5729          * <ul>
    5730          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    5731          *   <pre class="code prettyprint">
    5732          *   param.onSuccess = function (param) {
    5733          *       // {Number} param.year - year (2000 ~ 2029).
    5734          *       // {Number} param.month - month (1 ~ 12).
    5735          *       // {Number} param.day - day (1 ~ 31).
    5736          *       // {Number} param.hour - hour (0 ~ 23).
    5737          *       // {Number} param.minute - minute (0 ~ 59).
    5738          *       // {Number} param.second - second (0 ~ 59).
    5739          *       // {Number} param.gmtOffsetInMinute - GMT offset in minute for time zone (-660 ~ 720).
    5740          *       // {Number} param.isDaylightSaving - false : not applying daylight saving time to local time, true : applying daylight saving time to local time.
    5741          *   }</pre>
    5742          *   </li>
    5743          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    5744          *   <pre class="code prettyprint">
    5745          *   param.onFailure = function (param) {
    5746          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    5747          *   }</pre>
    5748          *   </li>
    5749          * </ul>
    5750          *
    5751          * @since 1.6.0
    5752          *
    5753          * @see
    5754          * <a href="hcap.time.html#.setLocalTime">hcap.time.setLocalTime()</a><br>
    5755          *
    5756          * @example
    5757          * hcap.time.getLocalTime({
    5758          *      "onSuccess" : function(s) {
    5759          *          console.log("onSuccess : \n" +
    5760          *              "TV localtime = " + s.year + "-" + s.month + "-" + s.day + " " + s.hour + " : " + s.minute + " : " + s.second + "\n" +
    5761          *              "GMT offset = " + s.gmtOffsetInMinute + "\n" +
    5762          *              "daylight saving = " + s.isDaylightSaving);
    5763          *      },
    5764          *      "onFailure" : function(f) {
    5765          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5766          *      }
    5767          * });
    5768          */
    5769         hcap.time.getLocalTime = function (param) {
    5770             hcap_command("get_tv_localtime", param);
    5771         };
    5772         /**
    5773          * Gets the sleep time to power off.
    5774          *
    5775          * @param {Object} param
    5776          * <ul>
    5777          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    5778          *   <pre class="code prettyprint">
    5779          *   param.onSuccess = function (param) {
    5780          *       // {Number} param.minute - remaining time(minutes: 0 ~ 240, -1:off) of the sleep timer.
    5781          *   }</pre>
    5782          *   </li>
    5783          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    5784          *   <pre class="code prettyprint">
    5785          *   param.onFailure = function (param) {
    5786          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    5787          *   }</pre>
    5788          *   </li>
    5789          * </ul>
    5790          *
    5791          * @since 1.3.1
    5792          *
    5793          * @see
    5794          * <a href="hcap.time.html#.setPowerOffTimer">hcap.time.setPowerOffTimer()</a>
    5795          *
    5796          * @example
    5797          * hcap.time.getPowerOffTimer({
    5798          *      "onSuccess" : function(s) {
    5799          *          console.log("onSuccess : remaining time (min) = " + s.minute);
    5800          *      },
    5801          *      "onFailure" : function(f) {
    5802          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5803          *      }
    5804          * });
    5805          */
    5806         hcap.time.getPowerOffTimer = function (param) {
    5807             hcap_command("get_power_off_timer_in_min", param);
    5808         };
    5809         /**
    5810          * Sets the power-off timer of TV.
    5811          *
    5812          * @param {Object} param
    5813          * <ul>
    5814          *   <li>{Number} param.minute [Required] - preset time(in minutes) of power-off timer. The range is 0~240 minutes(4 hours) or -1(off).</li>
    5815          *   <li>{Function} param.onSuccess [Optional] - success callback function.<br>
    5816          *         Setting to the same minutes of sleep timer as before will invoke this callback function.
    5817          *   <pre class="code prettyprint">
    5818          *   param.onSuccess = function() {
    5819          *       // No parameter.
    5820          *   }</pre>
    5821          *   </li>
    5822          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    5823          *   <pre class="code prettyprint">
    5824          *   param.onFailure = function (param) {
    5825          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    5826          *   }</pre>
    5827          *   </li>
    5828          * </ul>
    5829          *
    5830          * @since 1.3.1
    5831          *
    5832          * @see
    5833          * <a href="hcap.time.html#.getPowerOffTimer">hcap.time.getPowerOffTimer()</a>
    5834          *
    5835          * @example
    5836          * hcap.time.setPowerOffTimer({
    5837          *      "minute" : 60,
    5838          *      "onSuccess" : function() {
    5839          *          console.log("onSuccess");
    5840          *      },
    5841          *      "onFailure" : function(f) {
    5842          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5843          *      }
    5844          * });
    5845          */
    5846         hcap.time.setPowerOffTimer = function (param) {
    5847             hcap_command("set_power_off_timer_in_min", param);
    5848         };
    5849         /**
    5850          * Gets the wake-up time of TV.  This setting is applied only once at the wake-up time and will be disabled.<br>
    5851          * If the setting is disabled, returns -1 for hour and -1 for minute.
    5852          *
    5853          * @param {Object} param
    5854          * <ul>
    5855          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    5856          *   <pre class="code prettyprint">
    5857          *   param.onSuccess = function (param) {
    5858          *       // {Number} param.hour - hour of wake-up time (0~23), -1 if the setting is disabled.
    5859          *       // {Number} param.minute - minute of wake-up time (0~59), -1 if the setting is disabled.
    5860          *   }</pre>
    5861          *   </li>
    5862          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    5863          *   <pre class="code prettyprint">
    5864          *   param.onFailure = function (param) {
    5865          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    5866          *   }</pre>
    5867          *   </li>
    5868          * </ul>
    5869          *
    5870          * @since 1.3.1
    5871          *
    5872          * @see
    5873          * <a href="hcap.time.html#.setPowerOnTime">hcap.time.setPowerOnTime()</a>
    5874          *
    5875          * @example
    5876          * hcap.time.getPowerOnTime({
    5877          *      "onSuccess" : function(s) {
    5878          *          console.log("onSuccess : wake-up time = " + s.hour + " : " + s.minute);
    5879          *      },
    5880          *      "onFailure" : function(f) {
    5881          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5882          *      }
    5883          * });
    5884          */
    5885         hcap.time.getPowerOnTime = function (param) {
    5886             hcap_command("get_power_on_time", param);
    5887         };
    5888         /**
    5889          * Sets the wake-up time of TV. This setting is applied only once at the wake-up time and will be disabled.<br>
    5890          * Set parm.hour -1 and param.minute -1 to disable the wake-up time.
    5891          *
    5892          * @param {Object} param
    5893          * <ul>
    5894          *   <li>{Number} param.hour [Required] - hour of wake-up time. The range is 0~23 or -1 if the setting is disabled.</li>
    5895          *   <li>{Number} param.minute [Required] - minute of wake-up time. The range is 0~59 or -1 if the setting is disabled.</li>
    5896          *   <li>{Function} param.onSuccess [Optional] - success callback function.<br>
    5897          *        Setting to the same hour/minute as before will invoke this callback function.
    5898          *   <pre class="code prettyprint">
    5899          *   param.onSuccess = function() {
    5900          *       // No parameter.
    5901          *   }</pre>
    5902          *   </li>
    5903          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    5904          *   <pre class="code prettyprint">
    5905          *   param.onFailure = function (param) {
    5906          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    5907          *   }</pre>
    5908          *   </li>
    5909          * </ul>
    5910          *
    5911          * @since 1.3.1
    5912          *
    5913          * @see
    5914          * <a href="hcap.time.html#.getPowerOnTime">hcap.time.getPowerOnTime()</a>
    5915          *
    5916          * @example
    5917          * hcap.time.setPowerOnTime({
    5918          *      "hour" : 9,
    5919          *      "minute" : 30,
    5920          *      "onSuccess" : function() {
    5921          *          console.log("onSuccess");
    5922          *      },
    5923          *      "onFailure" : function(f) {
    5924          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5925          *      }
    5926          * });
    5927          */
    5928         hcap.time.setPowerOnTime = function (param) {
    5929             hcap_command("set_power_on_time", param);
    5930         };
    5931         /**
    5932          * Gets the alarm time, alarm channel and alarm volume level of TV. These settings are applied only once at the alarm time and will be disabled.<br>
    5933          * At the alarm time, if TV is off, TV will be turned on automatically with the alarm volume level and tune to the alarm channel.
    5934          * And if TV is on at the alarm time, nothing will happen.
    5935          * If the alarm time is disabled, param.hour = -1 and param.minute = -1 will be returned.
    5936          * And if the alarm channel is disabled, param.channelType = <a href="../symbols/hcap.channel.ChannelType.html#constructor">hcap.channel.ChannelType.UNKNOWN</a> will be returned.
    5937          * If the alarm volume is disabled, param.volumeLevel = -1 will be returned.
    5938          *
    5939          * @param {Object} param
    5940          * <ul>
    5941          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    5942          *   <pre class="code prettyprint">
    5943          *   param.onSuccess = function (param) {
    5944          *       // {Number} param.hour - hour of alarm time (-1 ~ 23), -1 if the setting is disabled.
    5945          *       // {Number} param.minute - minute of alarm time (-1 ~ 59), -1 if the setting is disabled.
    5946          *       // {Number} param.volumeLevel - alarm volume level (-1 ~ 100) which is applied only once for the first alarm booting. -1 if setting is disabled.
    5947          *       // For the alarm channel, see the <a href="../symbols/hcap.channel.html#.CHANNEL_PROPERTY">{ Channel Properties }</a> in <a href="hcap.channel.html#.requestChangeCurrentChannel">hcap.channel.requestChangeCurrentChannel()</a>. The alarm channel is applied only once for the first alarm booting.
    5948          *   }</pre>
    5949          *   </li>
    5950          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    5951          *   <pre class="code prettyprint">
    5952          *   param.onFailure = function (param) {
    5953          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    5954          *   }</pre>
    5955          *   </li>
    5956          * </ul>
    5957          *
    5958          * @since 1.5.0
    5959          *
    5960          * @see
    5961          * <a href="hcap.time.html#.setAlarmInformation">hcap.time.setAlarmInformation()</a>
    5962          *
    5963          * @example
    5964          * hcap.time.getAlarmInformation({
    5965          *      "onSuccess" : function(s) {
    5966          *          console.log("onSuccess :" +
    5967          *              "\n alarm time = " + s.hour = " : " + s.minute +
    5968          *              "\n alarm volume level = " + s.volumeLevel +
    5969          *              "\n ========= alarm channel information =========" +
    5970          *              "\n channel type      : " + s.channelType     +
    5971          *              "\n logical number    : " + s.logicalNumber   +
    5972          *              "\n frequency         : " + s.frequency       +
    5973          *              "\n program number    : " + s.programNumber   +
    5974          *              "\n major number      : " + s.majorNumber     +
    5975          *              "\n minor number      : " + s.minorNumber     +
    5976          *              "\n satellite ID      : " + s.satelliteId     +
    5977          *              "\n polarization      : " + s.polarization    +
    5978          *              "\n rf broadcast type : " + s.rfBroadcastType +
    5979          *              "\n ip                : " + s.ip              +
    5980          *              "\n port              : " + s.port            +
    5981          *              "\n ip broadcast type : " + s.ipBroadcastType +
    5982          *              "\n symbol rate       : " + s.symbolRate      +
    5983          *              "\n pcr pid           : " + s.pcrPid          +
    5984          *              "\n video pid         : " + s.videoPid        +
    5985          *              "\n video stream type : " + s.videoStreamType +
    5986          *              "\n audio pid         : " + s.audioPid        +
    5987          *              "\n audio stream type : " + s.audioStreamType +
    5988          *              "\n signal strength   : " + s.signalStrength  +
    5989          *              "\n source address    : " + s.sourceAddress);
    5990          *      },
    5991          *      "onFailure" : function(f) {
    5992          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    5993          *      }
    5994          * });
    5995          */
    5996         hcap.time.getAlarmInformation = function (param) {
    5997             hcap_command("get_alarm_information", param);
    5998         };
    5999         /**
    6000          * Sets the alarm time, alarm channel and alarm volume level of TV. These settings are applied only once at the alarm time and will be disabled.<br>
    6001          * At the alarm time, if TV is off, TV will be turned on automatically with the alarm volume level and tune to the alarm channel.
    6002          * And if TV is on at the alarm time, nothing will happen.
    6003          * To disable the alarm time, param.hour = -1 and param.minute = -1 should be set.
    6004          * When the alarm time is disabled, the alarm channel and the alarm volume level will be disabled together.
    6005          *
    6006          * @param {Object} param
    6007          * <ul>
    6008          *   <li>{Number} param.hour [Required] - hour of alarm time. The range is -1 ~ 23.</li>
    6009          *   <li>{Number} param.minute [Required] - minute of alarm time. The range is -1 ~ 59.</li>
    6010          *   <li>{Number} param.volumeLevel [Required] - alarm volume level (-1 ~ 100). -1 to disable the alarm volume.</li>
    6011          *   <li><a href="../symbols/hcap.channel.html#.CHANNEL_PROPERTY">{ Channel Properties } [Required] - Alarm Channel Information.</a></li>
    6012          *   <br>The alarm channel is taken affect prior to the start channel. If you want to disable the alarm channel, set param.channelType to <a href="../symbols/hcap.channel.ChannelType.html#constructor">hcap.channel.ChannelType.UNKNOWN</a>.
    6013          *   </li>
    6014          *   <li>{Function} param.onSuccess [Optional] - success callback function.<br>
    6015          *        Setting to the same hour/minute/alarm channel/alarm volume level as before will invoke this callback function.
    6016          *   <pre class="code prettyprint">
    6017          *   param.onSuccess = function() {
    6018          *       // No parameter.
    6019          *   }</pre>
    6020          *   </li>
    6021          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    6022          *   <pre class="code prettyprint">
    6023          *   param.onFailure = function (param) {
    6024          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    6025          *   }</pre>
    6026          *   </li>
    6027          * </ul>
    6028          *
    6029          * @since 1.5.0
    6030          *
    6031          * @see
    6032          * <a href="hcap.time.html#.getAlarmInformation">hcap.time.getAlarmInformation()</a>
    6033          *
    6034          * @example
    6035          * hcap.time.setAlarmInformation({
    6036          *      "hour" : 9,
    6037          *      "minute" : 30,
    6038          *      "volumeLevel" : 30,
    6039          *      "channelType" : hcap.channel.ChannelType.RF,
    6040          *      "frequency" : 63000000,
    6041          *      "programNumber" : 1,
    6042          *      "rfBroadcastType" : hcap.channel.RfBroadcastType.TERRESTRIAL,
    6043          *      "onSuccess" : function() {
    6044          *          console.log("onSuccess");
    6045          *      },
    6046          *      "onFailure" : function(f) {
    6047          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    6048          *      }
    6049          * });
    6050          */
    6051         hcap.time.setAlarmInformation = function (param) {
    6052             hcap_command("set_alarm_information", param);
    6053         };
    6054         /**
    6055          * Gets the CPU time.
    6056          * It means that the monotonic time after TV is turned on.<br>
    6057          *
    6058          * @param {Object} param
    6059          * <ul>
    6060          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    6061          *   <pre class="code prettyprint">
    6062          *   param.onSuccess = function (param) {
    6063          *       // {Number} param.cpuTime - cpu time(milliseconds) of the platform.
    6064          *   }</pre>
    6065          *   </li>
    6066          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    6067          *   <pre class="code prettyprint">
    6068          *   param.onFailure = function (param) {
    6069          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    6070          *   }</pre>
    6071          *   </li>
    6072          * </ul>
    6073          *
    6074          * @since 1.21.0
    6075          *
    6076          * @example
    6077          * hcap.time.getCpuTime({
    6078          *      "onSuccess" : function (param) {
    6079          *          console.log("onSuccess : cpu time(milliseconds) = " + param.cpuTime);
    6080          *      },
    6081          *      "onFailure" : function(f) {
    6082          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    6083          *      }
    6084          * });
    6085          */
    6086         hcap.time.getCpuTime = function (param) {
    6087             hcap_command("get_cpu_time", param);
    6088         };
    6089         /**
    6090          * @namespace hcap.network
    6091          */
    6092         hcap.network = {};
    6093         /**
    6094          * Gets the number of network devices.
    6095          *
    6096          * @param {Object} param
    6097          * <ul>
    6098          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    6099          *   <pre class="code prettyprint">
    6100          *   param.onSuccess = function (param) {
    6101          *       // {Number} param.count - number of network devices connected to TV.
    6102          *   }</pre>
    6103          *   </li>
    6104          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    6105          *   <pre class="code prettyprint">
    6106          *   param.onFailure = function (param) {
    6107          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    6108          *   }</pre>
    6109          *   </li>
    6110          * </ul>
    6111          *
    6112          * @since 1.3.1
    6113          *
    6114          * @see
    6115          * <a href="hcap.network.html#.getNetworkDevice">hcap.network.getNetworkDevice()</a><br>
    6116          * <a href="hcap.network.html#.setNetworkDevice">hcap.network.setNetworkDevice()</a><br>
    6117          *
    6118          * @example
    6119          * hcap.network.getNumberOfNetworkDevices({
    6120          *      "onSuccess" : function(s) {
    6121          *          console.log("onSuccess : the number of network devices = " + s.count);
    6122          *      },
    6123          *      "onFailure" : function(f) {
    6124          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    6125          *      }
    6126          * });
    6127          */
    6128         hcap.network.getNumberOfNetworkDevices = function (param) {
    6129             hcap_command("get_number_of_network_devices", param);
    6130         };
    6131         /**
    6132          * Gets the details of network device connected to TV.
    6133          *
    6134          * @param {Object} param
    6135          * <ul>
    6136          *   <li>{Number} param.index [Required] - index of device connected. Starts from 0.</li>
    6137          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    6138          *   <pre class="code prettyprint">
    6139          *   param.onSuccess = function (param) {
    6140          *       // {Number} param.networkMode - network mode (wire or wireless) of the network device. (<a href="hcap.network.NetworkMode.html">hcap.network.NetworkMode</a>)
    6141          *       // {String} param.name - name of network device. ex) "eth0"
    6142          *       // {String} param.mac - MAC address of network device. ex) "ff:ee:dd:cc:bb:aa"
    6143          *       // {Boolean} param.dhcp - DHCP (true : DHCP, false : not DHCP)
    6144          *       // {String} param.ip - IP of network device. ex) "192.168.100.2"
    6145          *       // {String} param.gateway - gateway of network device. ex) "192.168.100.1"
    6146          *       // {String} param.netmask - netmask address of network device. ex) "255.255.255.0"
    6147          *       // {String} param.primaryDns - DNS (Domain Name Server) address. ex) "8.8.8.8"
    6148          *       // {String} param.secondaryDns - secondary DNS address. ex) "8.8.8.8"
    6149          *   }</pre>
    6150          *   </li>
    6151          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    6152          *   <pre class="code prettyprint">
    6153          *   param.onFailure = function (param) {
    6154          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    6155          *   }</pre>
    6156          *   </li>
    6157          * </ul>
    6158          *
    6159          * @since 1.3.1
    6160          *
    6161          * @see
    6162          * <a href="hcap.network.html#.getNumberOfNetworkDevices">hcap.network.getNumberOfNetworkDevices()</a><br>
    6163          * <a href="hcap.network.NetworkMode.html#.WIRE">hcap.network.NetworkMode.WIRE</a><br>
    6164          * <a href="hcap.network.NetworkMode.html#.WIRELESS">hcap.network.NetworkMode.WIRELESS</a><br>
    6165          * <a href="hcap.network.html#.setNetworkDevice">hcap.network.setNetworkDevice()</a><br>
    6166          *
    6167          * @example
    6168          * function print_current_mac(ip) {
    6169          *     hcap.network.getNumberOfNetworkDevices({
    6170          *          "onSuccess" : function(s) {
    6171          *              console.log("onSuccess : the number of network devices = " + s.count);
    6172          *              for (var i = 0; i < s.count; i++) {
    6173          *                  (function(k) {
    6174          *                      hcap.network.getNetworkDevice({
    6175          *                          "index" : k,
    6176          *                          "onSuccess" : function(r) {
    6177          *                              console.log("onSuccess : networkMode = " + r.networkMode +
    6178          *                                  "\n name = " + r.name +
    6179          *                                  "\n mac = " + r.mac +
    6180          *                                  "\n dhcp = " + r.dhcp +
    6181          *                                  "\n ip = " + r.ip +
    6182          *                                  "\n gateway = " + r.gateway +
    6183          *                                  "\n netmask = " + r.netmask +
    6184          *                                  "\n primary dns = " + r.primaryDns +
    6185          *                                  "\n secondary dns = " + r.secondaryDns);
    6186          *                              if (ip === r.ip) {
    6187          *                                  console.log("CURRENT MAC : " + r.mac);
    6188          *                              }
    6189          *                          },
    6190          *                          "onFailure" : function(r) {
    6191          *                              console.log("onFailure : errorMessage = " + r.errorMessage);
    6192          *                          }
    6193          *                      });
    6194          *                  })(i);
    6195          *              }
    6196          *          },
    6197          *          "onFailure" : function(f) {
    6198          *              console.log("onFailure : errorMessage = " + f.errorMessage);
    6199          *          }
    6200          *     });
    6201          * }
    6202          *
    6203          * hcap.network.getNetworkInformation({
    6204          *      "onSuccess" : function(s) {
    6205          *          console.log("onSuccess : network_mode = " + s.network_mode +
    6206          *              "\n ssid = " + s.ssid +
    6207          *              "\n eth_speed = " + s.eth_speed +
    6208          *              "\n eth_duplex = " + s.eth_duplex +
    6209          *              "\n local_network_available = " + s.local_network_available +
    6210          *              "\n internet_available = " + s.internet_available +
    6211          *              "\n wifi_mode = " + s.wifi_mode +
    6212          *              "\n wireless_security_type = " + s.wireless_security_type +
    6213          *              "\n wifi_pass_key = " + s.wifi_pass_key +
    6214          *              "\n using_dhcp = " + s.using_dhcp +
    6215          *              "\n ip_address = " + s.ip_address +
    6216          *              "\n subnet_mask = " + s.subnet_mask +
    6217          *              "\n gateway = " + s.gateway +
    6218          *              "\n dns1_address = " + s.dns1_address +
    6219          *              "\n dns2_address = " + s.dns2_address +
    6220          *              "\n dns_dhcp = " + s.dns_dhcp +
    6221          *              "\n ethernet_plugged = " + s.ethernet_plugged +
    6222          *              "\n wifi_plugged = " + s.wifi_plugged +
    6223          *              "\n dhcp_state = " + s.dhcp_state);
    6224          *          print_current_mac(s.ip_address);
    6225          *      },
    6226          *      "onFailure" : function(f) {
    6227          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    6228          *      }
    6229          * });
    6230          */
    6231         hcap.network.getNetworkDevice = function (param) {
    6232             hcap_command("get_network_device", param);
    6233         };
    6234         /**
    6235          * Sets the network configuration of the index-th (starting with 0) network device<br>
    6236          *
    6237          * @param {Object} param
    6238          * <ul>
    6239          *   <li>{Number} param.index [Required] - the index of the network device (starting with 0)</li>
    6240          *   <li>{Boolean} param.dhcp [Required] - DHCP (true : DHCP, false : not DHCP)</li>
    6241          *   <li>{String} param.ip [Optional] - IP of network device. When param.dhcp is false, it is required. ex) "192.168.100.2"</li>
    6242          *   <li>{String} param.gateway [Optional] - gateway of network device. When param.dhcp is false, it is required. ex) "192.168.100.1"</li>
    6243          *   <li>{String} param.netmask [Optional] - netmask address of network device. When param.dhcp is false, it is required. ex) "255.255.255.0"</li>
    6244          *   <li>{String} param.primaryDns [Optional] - primary DNS (Domain Name Server) address. When param.dhcp is false, it is required. ex) "8.8.8.8"</li>
    6245          *   <li>{String} param.secondaryDns [Optional] - secondary DNS (Domain Name Server) address. When param.dhcp is false, it is required. ex) "8.8.8.8"</li>
    6246          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    6247          *   <pre class="code prettyprint">
    6248          *   param.onSuccess = function() {
    6249          *       // No parameter.
    6250          *   }</pre>
    6251          *   </li>
    6252          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    6253          *   <pre class="code prettyprint">
    6254          *   param.onFailure = function (param) {
    6255          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    6256          *   }</pre>
    6257          *   </li>
    6258          * </ul>
    6259          *
    6260          * @since 1.19.0
    6261          *
    6262          * @see
    6263          * <a href="hcap.network.html#.getNumberOfNetworkDevices">hcap.network.getNumberOfNetworkDevices()</a><br>
    6264          * <a href="hcap.network.html#.getNetworkDevice">hcap.network.getNetworkDevice()</a><br>
    6265          *
    6266          * @example
    6267          * hcap.network.setNetworkDevice({
    6268          *      "index" : 0,
    6269          *      "dhcp" : true,
    6270          *      "onSuccess" : function() {
    6271          *          console.log("onSuccess");
    6272          *      },
    6273          *      "onFailure" : function(f) {
    6274          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    6275          *      }
    6276          * });
    6277          * hcap.network.setNetworkDevice({
    6278          *      "index" : 0,
    6279          *      "dhcp" : false,
    6280          *      "ip" : "192.168.100.2",
    6281          *      "gateway" : "192.168.100.1",
    6282          *      "netmask" : "255.255.255.0",
    6283          *      "primaryDns" : "192.168.100.1",
    6284          *      "secondaryDns" : "8.8.8.8",
    6285          *      "onSuccess" : function() {
    6286          *          console.log("onSuccess");
    6287          *      },
    6288          *      "onFailure" : function(f) {
    6289          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    6290          *      }
    6291          * });
    6292          */
    6293         hcap.network.setNetworkDevice = function (param) {
    6294             hcap_command("set_network_device", param);
    6295         };
    6296         /**
    6297          * Sends a ping command to the specified IP.
    6298          *
    6299          * @param {Object} param
    6300          * <ul>
    6301          *   <li>{String} param.ip [Required] - IP address of the ping target.</li>
    6302          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    6303          *   <pre class="code prettyprint">
    6304          *   param.onSuccess = function (param) {
    6305          *       // {Number} param.roundTripTimeInMs - round trip time to the target in milliseconds.
    6306          *   }</pre>
    6307          *   </li>
    6308          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    6309          *   <pre class="code prettyprint">
    6310          *   param.onFailure = function (param) {
    6311          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    6312          *   }</pre>
    6313          *   </li>
    6314          * </ul>
    6315          *
    6316          * @since 1.3.1
    6317          *
    6318          * @example
    6319          * hcap.network.ping({
    6320          *      "ip" : "192.168.100.1",
    6321          *      "onSuccess" : function(s) {
    6322          *          console.log("onSuccess : round trip time = " + s.roundTripTimeInMs);
    6323          *      },
    6324          *      "onFailure" : function(f) {
    6325          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    6326          *      }
    6327          * });
    6328          */
    6329         hcap.network.ping = function (param) {
    6330             hcap_command("ping", param);
    6331         };
    6332         /**
    6333          * @namespace hcap.network.NetworkEventType
    6334          */
    6335         hcap.network.NetworkEventType = {
    6336             /**
    6337              * Unknown network event type.
    6338              * @since 1.6.0
    6339              * @constant
    6340              */
    6341             UNKNOWN : 0x00,
    6342             /**
    6343              * Ethernet is plugged.
    6344              * @since 1.6.0
    6345              * @constant
    6346              */
    6347             ETHERNET_PLUGGED : 0x01,
    6348             /**
    6349              * Ethernet is unplugged.
    6350              * @since 1.6.0
    6351              * @constant
    6352              */
    6353             ETHERNET_UNPLUGGED : 0x02,
    6354             /**
    6355              * Wi-Fi dongle is plugged.
    6356              * @since 1.6.0
    6357              * @constant
    6358              */
    6359             WIFI_DONGLE_PLUGGED : 0x03,
    6360             /**
    6361              * Wi-Fi dongle is unplugged.
    6362              * @since 1.6.0
    6363              * @constant
    6364              */
    6365             WIFI_DONGLE_UNPLUGGED : 0x04,
    6366             /**
    6367              * IP address conflicts.
    6368              * @since 1.6.0
    6369              * @constant
    6370              */
    6371             IP_CONFLICT : 0x05,
    6372             /**
    6373              * IP address does not conflict.
    6374              * @since 1.6.0
    6375              * @constant
    6376              */
    6377             IP_NOT_CONFLICT : 0x06,
    6378             /**
    6379              * DHCP is succeeded.
    6380              * @since 1.6.0
    6381              * @constant
    6382              */
    6383             DHCP_SUCCESS : 0x07,
    6384             /**
    6385              * DHCP fails.
    6386              * @since 1.6.0
    6387              * @constant
    6388              */
    6389             DHCP_FAIL : 0x08,
    6390             /**
    6391              * Unable to reach gateway.
    6392              * @since 1.6.0
    6393              * @constant
    6394              */
    6395             UNABLE_REACH_GATEWAY : 0x09,
    6396             /**
    6397              * Able to reach gateway.
    6398              * @since 1.6.0
    6399              * @constant
    6400              */
    6401             ABLE_REACH_GATEWAY : 0x0A,
    6402             /**
    6403              * Unable to reach DNS.
    6404              * @since 1.6.0
    6405              * @constant
    6406              */
    6407             UNABLE_REACH_DNS : 0x0B,
    6408             /**
    6409              * Able to reach DNS.
    6410              * @since 1.6.0
    6411              * @constant
    6412              */
    6413             ABLE_REACH_DNS : 0x0C,
    6414             /**
    6415              * Unable to reach internet.
    6416              * @since 1.6.0
    6417              * @constant
    6418              */
    6419             UNABLE_REACH_INTERNET : 0x0D,
    6420             /**
    6421              * Able to reach internet.
    6422              * @since 1.6.0
    6423              * @constant
    6424              */
    6425             ABLE_REACH_INTERNET : 0x0E,
    6426             /**
    6427              * Searching Wi-Fi access point is completed.
    6428              * @since 1.6.0
    6429              * @constant
    6430              */
    6431             WIFI_AP_SEARCH_COMPLETE : 0x0F,
    6432             /**
    6433              * Wi-Fi is connected.
    6434              * @since 1.6.0
    6435              * @constant
    6436              */
    6437             WIFI_CONNECTED : 0x10,
    6438             /**
    6439              * fail to connect Wi-Fi.
    6440              * @since 1.6.0
    6441              * @constant
    6442              */
    6443             WIFI_CONNECT_FAIL : 0x11,
    6444             /**
    6445              * Wi-Fi link is dropped.
    6446              * @since 1.6.0
    6447              * @constant
    6448              */
    6449             WIFI_LINK_DROPPED : 0x12
    6450         };
    6451         /**
    6452          * @namespace hcap.network.NetworkMode
    6453          */
    6454         hcap.network.NetworkMode = {
    6455             /**
    6456              * Unknown network mode.
    6457              * @since 1.6.0
    6458              * @constant
    6459              */
    6460             UNKNOWN : 0x00,
    6461             /**
    6462              * Wired network mode.
    6463              * @since 1.6.0
    6464              * @constant
    6465              */
    6466             WIRE : 0x01,
    6467             /**
    6468              * Wireless network mode.
    6469              * @since 1.6.0
    6470              * @constant
    6471              */
    6472             WIRELESS : 0x02,
    6473             /**
    6474              * Network is not reachable.
    6475              * @since 1.6.0
    6476              * @constant
    6477              */
    6478             NOT_REACHABLE : 0x03
    6479         };
    6480         /**
    6481          * @namespace hcap.network.WirelessMode
    6482          */
    6483         hcap.network.WirelessMode = {
    6484             /**
    6485              * Unknown wireless mode.
    6486              * @since 1.6.0
    6487              * @constant
    6488              */
    6489             UNKNOWN : 0x00,
    6490             /**
    6491              * Infra wireless mode.
    6492              * @since 1.6.0
    6493              * @constant
    6494              */
    6495             INFRA : 0x01,
    6496             /**
    6497              * Ad-hoc wireless mode.
    6498              * @since 1.6.0
    6499              * @constant
    6500              */
    6501             ADHOC : 0x02
    6502         };
    6503         /**
    6504          * @namespace hcap.network.WifiSecurityType
    6505          */
    6506         hcap.network.WifiSecurityType = {
    6507             /**
    6508              * Unknown security type.
    6509              * @since 1.6.0
    6510              * @constant
    6511              */
    6512             UNKNOWN : 0x00,
    6513             /**
    6514              * Open.
    6515              * @since 1.6.0
    6516              * @constant
    6517              */
    6518             OPEN : 0x01,
    6519             /**
    6520              * WEP.
    6521              * @since 1.6.0
    6522              * @constant
    6523              */
    6524             WEP : 0x02,
    6525             /**
    6526              * WPA_PSK_TKIP.
    6527              * @since 1.6.0
    6528              * @constant
    6529              */
    6530             WPA_PSK_TKIP : 0x03,
    6531             /**
    6532              * WPA_PSK_AES.
    6533              * @since 1.6.0
    6534              * @constant
    6535              */
    6536             WPA_PSK_AES : 0x04,
    6537             /**
    6538              * WPA2_PSK_TKIP.
    6539              * @since 1.6.0
    6540              * @constant
    6541              */
    6542             WPA2_PSK_TKIP : 0x05,
    6543             /**
    6544              * WPA2_PSK_AES.
    6545              * @since 1.6.0
    6546              * @constant
    6547              */
    6548             WPA2_PSK_AES : 0x06,
    6549             /**
    6550              * WPA12_PSK_AES_TKIPAES.
    6551              * @since 1.6.0
    6552              * @constant
    6553              */
    6554             WPA12_PSK_AES_TKIPAES : 0x07
    6555         };
    6556         /**
    6557          * @namespace hcap.network.DhcpState
    6558          */
    6559         hcap.network.DhcpState = {
    6560             /**
    6561              * Unknown DHCP state.
    6562              * @since 1.6.0
    6563              * @constant
    6564              */
    6565             UNKNOWN : 0x00,
    6566             /**
    6567              * Init.
    6568              * @since 1.6.0
    6569              * @constant
    6570              */
    6571             INIT : 0x01,
    6572             /**
    6573              * Selecting.
    6574              * @since 1.6.0
    6575              * @constant
    6576              */
    6577             SELECTING : 0x02,
    6578             /**
    6579              * Requesting.
    6580              * @since 1.6.0
    6581              * @constant
    6582              */
    6583             REQUESTING : 0x03,
    6584             /**
    6585              * Bound.
    6586              * @since 1.6.0
    6587              * @constant
    6588              */
    6589             BOUND : 0x04,
    6590             /**
    6591              * Renewing.
    6592              * @since 1.6.0
    6593              * @constant
    6594              */
    6595             RENEWING : 0x05,
    6596             /**
    6597              * Rebinding.
    6598              * @since 1.6.0
    6599              * @constant
    6600              */
    6601             REBINDING : 0x06,
    6602             /**
    6603              * Init Reboot.
    6604              * @since 1.6.0
    6605              * @constant
    6606              */
    6607             INIT_REBOOT : 0x07,
    6608             /**
    6609              * Rebooting.
    6610              * @since 1.6.0
    6611              * @constant
    6612              */
    6613             REBOOTING : 0x08
    6614         };
    6615         /**
    6616          * Gets the network information.
    6617          *
    6618          * @param {Object} param
    6619          * <ul>
    6620          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    6621          *   <pre class="code prettyprint">
    6622          *   param.onSuccess = function (param) {
    6623          *       // {Number} param.network_mode - wire or wireless (<a href="hcap.network.NetworkMode.html">hcap.network.NetworkMode</a>)
    6624          *       // {String} param.ssid - ssid for wireless AP
    6625          *       // {Number} param.eth_speed - network speed (Mbps), auto-negotiation data
    6626          *       // {Number} param.eth_duplex - network duplex(half : 0, full : 1, fail : -1), auto-negotiation data
    6627          *       // {Boolean} param.local_network_available - if connected to gateway of AP
    6628          *       // {Boolean} param.internet_available - if connected to Internet
    6629          *       // {Number} param.wifi_mode - INFRA or Ad-hoc (<a href="hcap.network.WirelessMode.html">hcap.network.WirelessMode</a>)
    6630          *       // {Number} param.wireless_security_type - security types (<a href="hcap.network.WifiSecurityType.html">hcap.network.WifiSecurityType</a>)
    6631          *       // {String} param.wifi_pass_key - security key string. This value is not delivered to HCAP application by LG security policy since 1.18.4.
    6632          *       // {Boolean} param.using_dhcp - if using dhcp
    6633          *       // {String} param.ip_address - ip address
    6634          *       // {String} param.subnet_mask - subnet mask
    6635          *       // {String} param.gateway - gateway adress
    6636          *       // {String} param.dns1_address - main DNS address
    6637          *       // {String} param.dns2_address - secondary DNS address
    6638          *       // {Boolean} param.dns_dhcp - DNS dhcp flag
    6639          *       // {Boolean} param.ethernet_plugged - if ethernet cable is plugged
    6640          *       // {Boolean} param.wifi_plugged - if Wi-Fi dongle is plugged
    6641          *       // {Number} param.dhcp_state - dhcp status (<a href="hcap.network.DhcpState.html">hcap.network.DhcpState</a>)
    6642          *   }</pre>
    6643          *   </li>
    6644          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    6645          *   <pre class="code prettyprint">
    6646          *   param.onFailure = function (param) {
    6647          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    6648          *   }</pre>
    6649          *   </li>
    6650          * </ul>
    6651          *
    6652          * @since 1.6.0
    6653          *
    6654          * @see
    6655          * <a href="_global_.html#event:network_event_received">{Event} network_event_received</a><br>
    6656          *
    6657          * @example
    6658          * hcap.network.getNetworkInformation({
    6659          *      "onSuccess" : function(s) {
    6660          *          console.log("onSuccess : network_mode = " + s.network_mode +
    6661          *              "\n ssid = " + s.ssid +
    6662          *              "\n eth_speed = " + s.eth_speed +
    6663          *              "\n eth_duplex = " + s.eth_duplex +
    6664          *              "\n local_network_available = " + s.local_network_available +
    6665          *              "\n internet_available = " + s.internet_available +
    6666          *              "\n wifi_mode = " + s.wifi_mode +
    6667          *              "\n wireless_security_type = " + s.wireless_security_type +
    6668          *              "\n wifi_pass_key = " + s.wifi_pass_key +
    6669          *              "\n using_dhcp = " + s.using_dhcp +
    6670          *              "\n ip_address = " + s.ip_address +
    6671          *              "\n subnet_mask = " + s.subnet_mask +
    6672          *              "\n gateway = " + s.gateway +
    6673          *              "\n dns1_address = " + s.dns1_address +
    6674          *              "\n dns2_address = " + s.dns2_address +
    6675          *              "\n dns_dhcp = " + s.dns_dhcp +
    6676          *              "\n ethernet_plugged = " + s.ethernet_plugged +
    6677          *              "\n wifi_plugged = " + s.wifi_plugged +
    6678          *              "\n dhcp_state = " + s.dhcp_state);
    6679          *      },
    6680          *      "onFailure" : function(f) {
    6681          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    6682          *      }
    6683          * });
    6684          */
    6685         hcap.network.getNetworkInformation = function (param) {
    6686             hcap_command("get_network_information", param);
    6687         };
    6688         /**
    6689          * Gets the configuration of soft AP (Access Point).<br>
    6690          *
    6691          * @param {Object} param
    6692          * <ul>
    6693          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    6694          *   <pre class="code prettyprint">
    6695          *   param.onSuccess = function (param) {
    6696          *       // {String} param.ip - IP address of soft AP ("xxx.xxx.xxx.xxx"). available only when property "soft_ap" is "1".
    6697          *       // {String} param.mac - MAC address of soft AP ("XX:XX:XX:XX:XX:XX"). available only when property "soft_ap" is "1".
    6698          *       // {Number} param.connectedDeviceNumber - the number of connected devices to soft AP. available only when property "soft_ap" is "1".
    6699          *       // {Number} param.channel - wireless channel (0 : random default. 1 ~ 165. Supported values is dependent on TV model.)
    6700          *       // {Number} param.signalStrength - 1 ~ 5 (1 : min Tx power, 5 : max Tx power). 0 : [default] follow country setting.
    6701          *       // {Number} param.vlanId - 1 ~ 4094. 0 : vlan off.
    6702          *       // {String} param.vlanIp - VLAN IP address ("xxx.xxx.xxx.xxx")
    6703          *       // {String} param.vlanSubnet - VLAN subnet mask ("xxx.xxx.xxx.xxx")
    6704          *       // {String} param.vlanGateway - VLAN gateway ("xxx.xxx.xxx.xxx")
    6705          *       // {String} param.mode - mode ("xxxx")
    6706          *       // {String} param.securityType - security type ("xxxxx")
    6707          *       // {String} param.radiusServerIp - radius server IP address ("xxx.xxx.xxx.xxx")
    6708          *       // {String} param.radiusServerPort - radius server port ("xxxx")
    6709          *       // {String} param.radiusServerKey - radius server key ("xxxxxxx")
    6710          *   }</pre>
    6711          *   </li>
    6712          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    6713          *   <pre class="code prettyprint">
    6714          *   param.onFailure = function (param) {
    6715          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    6716          *   }</pre>
    6717          *   </li>
    6718          * </ul>
    6719          *
    6720          * @since 1.19.0
    6721          *
    6722          * @see
    6723          * <a href="hcap.network.html#.setSoftAP">hcap.network.setSoftAP()</a><br>
    6724          * <a href="hcap.property.html#.getProperty">hcap.property.getProperty()</a><br>
    6725          *
    6726          * @example
    6727          * hcap.network.getSoftAP({
    6728          *      "onSuccess" : function(s) {
    6729          *          console.log("onSuccess : ip = " + s.ip + ", mac = " + s.mac + ", connected device = " + s.connectedDeviceNumber + ", channel = " + s.channel + ", signal strength = " + s.signalStrength + ", vland id = " + s.vlanId + ", vlan subnet = " + s.vlanSubnet + ", vlan gateway = " + s.vlanGateway);
    6730          *      },
    6731          *      "onFailure" : function(f) {
    6732          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    6733          *      }
    6734          * });
    6735          */
    6736         hcap.network.getSoftAP = function (param) {
    6737             hcap_command("get_soft_ap", param);
    6738         };
    6739         /**
    6740          * Sets the configuration of soft AP (Access Point).<br>
    6741          * Setting is possible only when the property "soft_ap" is "0".<br>
    6742          * New configuration will be activated in the next change of the property "soft_ap" from "0" to "1" or reboot.<br>
    6743          *
    6744          * @param {Object} param
    6745          * <ul>
    6746          *   // default
    6747          *   <li>{Number} param.channel [Required] - wireless channel (0 : random default. 1 ~ 165. Supported values is dependent on TV model.)</li>
    6748          *   <li>{Number} param.signalStrength [Required] - 1 ~ 5 (1 : min Tx power, 5 : max Tx power). 0 : [default] follow country setting.</li>
    6749          *   <li>{Number} param.vlanId [Required] - 1 ~ 4094. 0 : vlan off.</li>
    6750          *   <li>{String} param.vlanIp [Required] - VLAN IP address ("xxx.xxx.xxx.xxx")</li>
    6751          *   <li>{String} param.vlanSubnet [Required] - VLAN subnet mask ("xxx.xxx.xxx.xxx")</li>
    6752          *   <li>{String} param.vlanGateway [Required] - VLAN gateway ("xxx.xxx.xxx.xxx")</li>
    6753          *
    6754          *   // mode : nat, securityType : psk
    6755          *   <li>{Number} param.channel [Required] - wireless channel (0 : random default. 1 ~ 165. Supported values is dependent on TV model.)</li>
    6756          *   <li>{Number} param.signalStrength [Required] - 1 ~ 5 (1 : min Tx power, 5 : max Tx power). 0 : [default] follow country setting.</li>
    6757          *   <li>{Number} param.vlanId [Required] - 1 ~ 4094. 0 : vlan off.</li>
    6758          *   <li>{String} param.vlanIp [Required] - VLAN IP address ("xxx.xxx.xxx.xxx")</li>
    6759          *   <li>{String} param.vlanSubnet [Required] - VLAN subnet mask ("xxx.xxx.xxx.xxx")</li>
    6760          *   <li>{String} param.vlanGateway [Required] - VLAN gateway ("xxx.xxx.xxx.xxx")</li>
    6761          *   <li>{String} param.mode [Required] - mode ("xxxx")</li>
    6762          *   <li>{String} param.securityType [Required] - security type ("xxxxx")</li>
    6763          *
    6764          *   // mode : bridge, securityType : psk
    6765          *   <li>{Number} param.channel [Required] - wireless channel (0 : random default. 1 ~ 165. Supported values is dependent on TV model.)</li>
    6766          *   <li>{Number} param.signalStrength [Required] - 1 ~ 5 (1 : min Tx power, 5 : max Tx power). 0 : [default] follow country setting.</li>
    6767          *   <li>{String} param.mode [Required] - mode ("xxxx")</li>
    6768          *   <li>{String} param.securityType [Required] - security type ("xxxxx")</li>
    6769          *
    6770          *   // mode : bridge, securityType : open
    6771          *   <li>{Number} param.channel [Required] - wireless channel (0 : random default. 1 ~ 165. Supported values is dependent on TV model.)</li>
    6772          *   <li>{Number} param.signalStrength [Required] - 1 ~ 5 (1 : min Tx power, 5 : max Tx power). 0 : [default] follow country setting.</li>
    6773          *   <li>{String} param.mode [Required] - mode ("xxxx")</li>
    6774          *   <li>{String} param.securityType [Required] - security type ("xxxxx")</li>
    6775          *
    6776          *    // mode : bridge, securityType : eap
    6777          *   <li>{Number} param.channel [Required] - wireless channel (0 : random default. 1 ~ 165. Supported values is dependent on TV model.)</li>
    6778          *   <li>{Number} param.signalStrength [Required] - 1 ~ 5 (1 : min Tx power, 5 : max Tx power). 0 : [default] follow country setting.</li>
    6779          *   <li>{String} param.mode [Required] - mode ("xxxx")</li>
    6780          *   <li>{String} param.securityType [Required] - security type ("xxxxx")</li>
    6781          *   <li>{String} param.radiusServerIp [Required] - radius server IP address ("xxx.xxx.xxx.xxx")</li>
    6782          *   <li>{String} param.radiusServerPort [Required] - radius server port ("xxxx")</li>
    6783          *   <li>{String} param.radiusServerKey [Required] - radius server key ("xxxxxxx")</li>
    6784          *
    6785          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    6786          *   <pre class="code prettyprint">
    6787          *   param.onSuccess = function() {
    6788          *       // No Parameter.
    6789          *   }</pre>
    6790          *   </li>
    6791          *   <li>{Function} param.onFailure [Optional]  - failure callback function. If the property "soft_ap" is "1", failure callback will be called.
    6792          *   <pre class="code prettyprint">
    6793          *   param.onFailure = function (param) {
    6794          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    6795          *   }</pre>
    6796          *   </li>
    6797          * </ul>
    6798          *
    6799          * @since 1.19.0
    6800          *
    6801          * @see
    6802          * <a href="hcap.network.html#.getSoftAP">hcap.network.getSoftAP()</a><br>
    6803          * <a href="hcap.property.html#.getProperty">hcap.property.getProperty()</a><br>
    6804          *
    6805          * @example
    6806          * // default
    6807          * hcap.network.setSoftAP({
    6808          *      "channel" : 0,
    6809          *      "signalStrength" : 1,
    6810          *      "vlanId" : 0,
    6811          *      "vlanIp" : "192.168.11.3",
    6812          *      "vlanSubnet" : "255.255.255.0",
    6813          *      "vlanGateway" : "192.168.11.1",
    6814          *      "onSuccess" : function(s) {
    6815          *          console.log("onSuccess");
    6816          *      },
    6817          *      "onFailure" : function(f) {
    6818          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    6819          *      }
    6820          * });
    6821          *
    6822          * @example
    6823          * // mode : nat, securityType : psk
    6824          * hcap.network.setSoftAP({
    6825          *      "channel" : 3,
    6826          *      "signalStrength" : 4,
    6827          *      "vlanId" : 0,
    6828          *      "vlanIp" : "192.168.11.3",
    6829          *      "vlanSubnet" : "255.255.255.0",
    6830          *      "vlanGateway" : "192.168.11.1",
    6831          *      "mode" : "nat",
    6832          *      "securityType" : "psk",
    6833          *      "onSuccess" : function(s) {
    6834          *          console.log("onSuccess");
    6835          *      },
    6836          *      "onFailure" : function(f) {
    6837          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    6838          *      }
    6839          * });
    6840          *
    6841          * @example
    6842          * // mode : bridge, securityType : psk
    6843          * hcap.network.setSoftAP({
    6844          *      "channel" : 2,
    6845          *      "signalStrength" : 0,
    6846          *      "mode" : "bridge",
    6847          *      "securityType" : "psk",
    6848          *      "onSuccess" : function(s) {
    6849          *          console.log("onSuccess");
    6850          *      },
    6851          *      "onFailure" : function(f) {
    6852          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    6853          *      }
    6854          * });
    6855          *
    6856          * @example
    6857          * // mode : bridge, securityType : open
    6858          * hcap.network.setSoftAP({
    6859          *      "channel" : 2,
    6860          *      "signalStrength" : 0,
    6861          *      "mode" : "bridge",
    6862          *      "securityType" : "open",
    6863          *      "onSuccess" : function(s) {
    6864          *          console.log("onSuccess");
    6865          *      },
    6866          *      "onFailure" : function(f) {
    6867          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    6868          *      }
    6869          * });
    6870          *
    6871          * @example
    6872          * // mode : bridge, securityType : eap
    6873          * hcap.network.setSoftAP({
    6874          *      "channel" : 2,
    6875          *      "signalStrength" : 0,
    6876          *      "radiusServerIp" : "192.168.0.50",
    6877          *      "radiusServerPort" : "1010",
    6878          *      "radiusServerPort" : "abcdefg",
    6879          *      "mode" : "bridge",
    6880          *      "securityType" : "eap",
    6881          *      "onSuccess" : function(s) {
    6882          *          console.log("onSuccess");
    6883          *      },
    6884          *      "onFailure" : function(f) {
    6885          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    6886          *      }
    6887          * });
    6888          */
    6889         hcap.network.setSoftAP = function (param) {
    6890             hcap_command("set_soft_ap", param);
    6891         };
    6892         /**
    6893          * Gets the wifi diagnostic information.
    6894          *
    6895          * @example
    6896          * hcap.network.getWifiDiagnostics({
    6897          *      "onSuccess" : function(s) {
    6898          *          console.log("onSuccess  :" +
    6899          *              "\n version                 : " + s.version +
    6900          *              "\n country code revision   : " + s.countryCodeRevision +
    6901          *              "\n country code            : " + s.countryCode +
    6902          *              "\n channel                 : " + s.channel +
    6903          *              "\n mcs                     : " + s.mcs +
    6904          *              "\n mimo                    : " + s.mimo +
    6905          *              "\n rate                    : " + s.rate +
    6906          *              "\n rssi                    : " + s.rssi +
    6907          *              "\n noise                   : " + s.noise +
    6908          *              "\n transimission power     : " + s.transimissionPower +
    6909          *              "\n band width              : " + s.bandWidth);
    6910          *      },
    6911          *      "onFailure" : function(f) {
    6912          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    6913          *      }
    6914          * });
    6915          * @param {Object} param
    6916          * <ul>
    6917          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    6918          *   <pre class="code prettyprint">
    6919          *   param.onSuccess = function (param) {
    6920          *       // {String} param.version - version.
    6921          *       // {Number} param.countryCodeRevision - country code revision.
    6922          *       // {String} param.countryCode - country code.
    6923          *       // {Number} param.channel - channel.
    6924          *       // {Number} param.mcs - mcs.
    6925          *       // {String} param.mimo - mimo.
    6926          *       // {String} param.rate - rate.
    6927          *       // {String} param.rssi - rssi.
    6928          *       // {String} param.noise - noise.
    6929          *       // {String} param.transimissionPower - transimission power.
    6930          *       // {String} param.bandWidth - band width.
    6931          *   }</pre>
    6932          *   </li>
    6933          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    6934          *   <pre class="code prettyprint">
    6935          *   param.onFailure = function (param) {
    6936          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    6937          *   }</pre>
    6938          *   </li>
    6939          * </ul>
    6940          *
    6941          * @since 1.19.2
    6942          */
    6943         hcap.network.getWifiDiagnostics = function (param) {
    6944             hcap_command("get_wifi_diagnostics", param);
    6945         };
    6946         /**
    6947          * Sends a asynchronous ping command to the specified IP.
    6948          *
    6949          * @param {Object} param
    6950          * <ul>
    6951          *   <li>{String} param.ip [Required] - IP address of the ping target.</li>
    6952          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    6953          *   <pre class="code prettyprint">
    6954          *   param.onSuccess = function (param) {
    6955          *       // No Parameter
    6956          *   }</pre>
    6957          *   </li>
    6958          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    6959          *   <pre class="code prettyprint">
    6960          *   param.onFailure = function (param) {
    6961          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    6962          *   }</pre>
    6963          *   </li>
    6964          * </ul>
    6965          *
    6966          * @since 1.22.0
    6967          *
    6968          * @see
    6969          * <a href="_global_.html#event:ping_result_received">{Event} ping_result_received</a><br>
    6970          *
    6971          * @example
    6972          * hcap.network.asyncPing({
    6973          *      "ip" : "192.168.100.1",
    6974          *      "onSuccess" : function(s) {
    6975          *          console.log("onSuccess");
    6976          *      },
    6977          *      "onFailure" : function(f) {
    6978          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    6979          *      }
    6980          * });
    6981          */
    6982         hcap.network.asyncPing = function (param) {
    6983             hcap_command("async_ping", param);
    6984         };
    6985         /**
    6986          * Sets the vlan id mode is enabled or disabled.<br>
    6987          *
    6988          * @param {Object} param
    6989          * <ul>
    6990          *   <li>{Boolean} param.enable [Required] - true : enable to vlan id mode, false : disable.</li>
    6991          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    6992          *   <pre class="code prettyprint">
    6993          *   param.onSuccess = function() {
    6994          *       // No Parameter.
    6995          *   }</pre>
    6996          *   </li>
    6997          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    6998          *   <pre class="code prettyprint">
    6999          *   param.onFailure = function (param) {
    7000          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    7001          *   }</pre>
    7002          *   </li>
    7003          * </ul>
    7004          *
    7005          * @since 1.22.0
    7006          *
    7007          * @see
    7008          * <a href="hcap.network.html#.getVlanIdMode">hcap.network.getVlanIdMode()</a><br>
    7009          * <a href="hcap.network.html#.setLanId">hcap.network.setLanId()</a><br>
    7010          * <a href="hcap.network.html#.getLanId">hcap.network.getLanId()</a><br>
    7011          * <a href="hcap.network.html#.setAuxLanId">hcap.network.setAuxLanId()</a><br>
    7012          * <a href="hcap.network.html#.getAuxLanId">hcap.network.getAuxLanId()</a><br>
    7013          * <a href="_global_.html#event:ui_value_changed">{Event} ui_value_changed</a><br>
    7014          *
    7015          * @example
    7016          * hcap.network.setVlanIdMode({
    7017          *      "enable" : true,
    7018          *      "onSuccess" : function() {
    7019          *          console.log("onSuccess");
    7020          *      },
    7021          *      "onFailure" : function(f) {
    7022          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    7023          *      }
    7024          * });
    7025          */
    7026         hcap.network.setVlanIdMode = function (param) {
    7027             hcap_command("set_vlan_id_mode", param);
    7028         };
    7029         /**
    7030          * Gets whether vlan id mode is enabled or disabled.<br>
    7031          *
    7032          * @param {Object} param
    7033          * <ul>
    7034          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    7035          *   <pre class="code prettyprint">
    7036          *   param.onSuccess = function (param) {
    7037          *       // {Boolean} param.enable - true if the vlan id mode is enabled. false if the vlan id mode is disabled.
    7038          *   }</pre>
    7039          *   </li>
    7040          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    7041          *   <pre class="code prettyprint">
    7042          *   param.onFailure = function (param) {
    7043          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    7044          *   }</pre>
    7045          *   </li>
    7046          * </ul>
    7047          *
    7048          * @since 1.22.0
    7049          *
    7050          * @see
    7051          * <a href="hcap.network.html#.setVlanIdMode">hcap.network.setVlanIdMode()</a><br>
    7052          * <a href="hcap.network.html#.setLanId">hcap.network.setLanId()</a><br>
    7053          * <a href="hcap.network.html#.getLanId">hcap.network.getLanId()</a><br>
    7054          * <a href="hcap.network.html#.setAuxLanId">hcap.network.setAuxLanId()</a><br>
    7055          * <a href="hcap.network.html#.getAuxLanId">hcap.network.getAuxLanId()</a><br>
    7056          *
    7057          * @example
    7058          * hcap.network.getVlanIdMode({
    7059          *      "onSuccess" : function (param) {
    7060          *          console.log("onSuccess : vlan id mode= " + param.enable);
    7061          *      },
    7062          *      "onFailure" : function(f) {
    7063          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    7064          *      }
    7065          * });
    7066          */
    7067         hcap.network.getVlanIdMode = function (param) {
    7068             hcap_command("get_vlan_id_mode", param);
    7069         };
    7070         /**
    7071          * Gets the current value of the lan id.<br>
    7072          *
    7073          * @param {Object} param
    7074          * <ul>
    7075          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    7076          *   <pre class="code prettyprint">
    7077          *   param.onSuccess = function (param) {
    7078          *       // {Number} param.lanId - current value of the lan id (1~4094).
    7079          *   }</pre>
    7080          *   </li>
    7081          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    7082          *   <pre class="code prettyprint">
    7083          *   param.onFailure = function (param) {
    7084          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    7085          *   }</pre>
    7086          *   </li>
    7087          * </ul>
    7088          *
    7089          * @since 1.22.0
    7090          *
    7091          * @see
    7092          * <a href="hcap.network.html#.setVlanIdMode">hcap.network.setVlanIdMode()</a><br>
    7093          * <a href="hcap.network.html#.getVlanIdMode">hcap.network.getVlanIdMode()</a><br>
    7094          * <a href="hcap.network.html#.setLanId">hcap.network.setLanId()</a><br>
    7095          * <a href="hcap.network.html#.setAuxLanId">hcap.network.setAuxLanId()</a><br>
    7096          * <a href="hcap.network.html#.getAuxLanId">hcap.network.getAuxLanId()</a><br>
    7097          *
    7098          * @example
    7099          * hcap.network.getLanId({
    7100          *      "onSuccess" : function(s) {
    7101          *          console.log("onSuccess : lan id = " + s.lanId);
    7102          *      },
    7103          *      "onFailure" : function(f) {
    7104          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    7105          *      }
    7106          * });
    7107          */
    7108         hcap.network.getLanId = function (param) {
    7109             hcap_command("get_lan_id", param);
    7110         };
    7111         /**
    7112          * Sets the lan id.<br>
    7113          * This is worked only when the vlan id mode is enabled.<br>
    7114          *
    7115          * @param {Object} param
    7116          * <ul>
    7117          *   <li>{Number} param.lanId [Required] - range is 1~4094.</li>
    7118          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    7119          *   <pre class="code prettyprint">
    7120          *   param.onSuccess = function() {
    7121          *       // No Parameter.
    7122          *   }</pre>
    7123          *   </li>
    7124          *   <li>{Function} param.onFailure [Optional] - failure callback function.<br>
    7125          *   <pre class="code prettyprint">
    7126          *   param.onFailure = function (param) {
    7127          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    7128          *   }</pre>
    7129          *   </li>
    7130          * </ul>
    7131          *
    7132          * @since 1.22.0
    7133          *
    7134          * @see
    7135          * <a href="hcap.network.html#.setVlanIdMode">hcap.network.setVlanIdMode()</a><br>
    7136          * <a href="hcap.network.html#.getVlanIdMode">hcap.network.getVlanIdMode()</a><br>
    7137          * <a href="hcap.network.html#.getLanId">hcap.network.getLanId()</a><br>
    7138          * <a href="hcap.network.html#.setAuxLanId">hcap.network.setAuxLanId()</a><br>
    7139          * <a href="hcap.network.html#.getAuxLanId">hcap.network.getAuxLanId()</a><br>
    7140          *
    7141          * @example
    7142          * hcap.network.setLanId({
    7143          *      "lanId" : 50,
    7144          *      "onSuccess" : function() {
    7145          *          console.log("onSuccess");
    7146          *      },
    7147          *      "onFailure" : function(f) {
    7148          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    7149          *      }
    7150          * });
    7151          */
    7152         hcap.network.setLanId = function (param) {
    7153             hcap_command("set_lan_id", param);
    7154         };
    7155         /**
    7156          * Gets the current value of the aux lan id.<br>
    7157          *
    7158          * @param {Object} param
    7159          * <ul>
    7160          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    7161          *   <pre class="code prettyprint">
    7162          *   param.onSuccess = function (param) {
    7163          *       // {Number} param.auxLanId - current value of the aux lan id (1~4094).
    7164          *   }</pre>
    7165          *   </li>
    7166          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    7167          *   <pre class="code prettyprint">
    7168          *   param.onFailure = function (param) {
    7169          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    7170          *   }</pre>
    7171          *   </li>
    7172          * </ul>
    7173          *
    7174          * @since 1.22.0
    7175          *
    7176          * @see
    7177          * <a href="hcap.network.html#.setVlanIdMode">hcap.network.setVlanIdMode()</a><br>
    7178          * <a href="hcap.network.html#.getVlanIdMode">hcap.network.getVlanIdMode()</a><br>
    7179          * <a href="hcap.network.html#.setLanId">hcap.network.setLanId()</a><br>
    7180          * <a href="hcap.network.html#.getLanId">hcap.network.getLanId()</a><br>
    7181          * <a href="hcap.network.html#.setAuxLanId">hcap.network.setAuxLanId()</a><br>
    7182          *
    7183          * @example
    7184          * hcap.network.getAuxLanId({
    7185          *      "onSuccess" : function(s) {
    7186          *          console.log("onSuccess : aux lan id = " + s.auxLanId);
    7187          *      },
    7188          *      "onFailure" : function(f) {
    7189          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    7190          *      }
    7191          * });
    7192          */
    7193         hcap.network.getAuxLanId = function (param) {
    7194             hcap_command("get_aux_lan_id", param);
    7195         };
    7196         /**
    7197          * Sets the aux lan id.<br>
    7198          * This is worked only when the vlan id mode is enabled.<br>
    7199          *
    7200          * @param {Object} param
    7201          * <ul>
    7202          *   <li>{Number} param.auxLanId [Required] - range is 1~4094.</li>
    7203          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    7204          *   <pre class="code prettyprint">
    7205          *   param.onSuccess = function() {
    7206          *       // No Parameter.
    7207          *   }</pre>
    7208          *   </li>
    7209          *   <li>{Function} param.onFailure [Optional] - failure callback function.<br>
    7210          *   <pre class="code prettyprint">
    7211          *   param.onFailure = function (param) {
    7212          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    7213          *   }</pre>
    7214          *   </li>
    7215          * </ul>
    7216          *
    7217          * @since 1.22.0
    7218          *
    7219          * @see
    7220          * <a href="hcap.network.html#.setVlanIdMode">hcap.network.setVlanIdMode()</a><br>
    7221          * <a href="hcap.network.html#.getVlanIdMode">hcap.network.getVlanIdMode()</a><br>
    7222          * <a href="hcap.network.html#.setLanId">hcap.network.setLanId()</a><br>
    7223          * <a href="hcap.network.html#.getLanId">hcap.network.getLanId()</a><br>
    7224          * <a href="hcap.network.html#.getAuxLanId">hcap.network.getAuxLanId()</a><br>
    7225          *
    7226          * @example
    7227          * hcap.network.setAuxLanId({
    7228          *      "auxLanId" : 50,
    7229          *      "onSuccess" : function() {
    7230          *          console.log("onSuccess");
    7231          *      },
    7232          *      "onFailure" : function(f) {
    7233          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    7234          *      }
    7235          * });
    7236          */
    7237         hcap.network.setAuxLanId = function (param) {
    7238             hcap_command("set_aux_lan_id", param);
    7239         };
    7240         /**
    7241 		 * Gets the blocked port list.<br>
    7242 		 *
    7243 		 * @param {Object} param
    7244 		 * <ul>
    7245 		 *   <li>{Function} param.onSuccess [Optional] - success callback function.
    7246 		 *   <pre class="code prettyprint">
    7247 		 *   param.onSuccess = function (param) {
    7248 		 *       // {Array} param.blockedPortList - list of blocked port.
    7249 		 *       // {String} param.blockedPortList[].blockedPort - blocked port number
    7250 		 *       // {String} param.blockedPortList[].protocol - protocol
    7251 		 *       // {String} param.blockedPortList[].direction - blocking direction
    7252 		 *   }</pre>
    7253 		 *   </li>
    7254 		 *   <li>{Function} param.onFailure [Optional] - failure callback function.
    7255 		 *   <pre class="code prettyprint">
    7256 		 *   param.onFailure = function (param) {
    7257 		 *       // {String} param.errorMessage - in case of failure, this message provides the details.
    7258 		 *   }</pre>
    7259 		 *   </li>
    7260 		 * </ul>
    7261 		 *
    7262 		 * @since 1.24.0
    7263 		 *
    7264 		 * @see
    7265 		 * <a href="hcap.network.html#.setBlockedPortList">hcap.network.setBlockedPortList()</a><br>
    7266 		 *
    7267 		 * @example
    7268 		 * hcap.network.getBlockedPortList({
    7269          *      "onSuccess" : function(s) {
    7270          *          console.log("onSuccess : blockedPortList length = " + s.blockedPortList.length);
    7271          *          for (var i = 0; i < s.blockedPortList.length; i++) {
    7272          *              console.log(
    7273          *                  "list[" + i + "].blockedPort = " + s.list[i].blockedPort +
    7274          *                  "list[" + i + "].protocol = " + s.list[i].protocol +
    7275          *                  "list[" + i + "].direction = " + s.list[i].direction
    7276          *              );
    7277          *          }
    7278          *      },
    7279 		 *      "onFailure" : function(f) {
    7280 		 *          console.log("onFailure : errorMessage = " + f.errorMessage);
    7281 		 *      }
    7282 		 * });
    7283 		 */
    7284 		hcap.network.getBlockedPortList = function (param) {
    7285 			hcap_command("get_blocked_port_list", param);
    7286 		};
    7287 		/**
    7288 		 * Sets the blocked port list.<br>
    7289 		 *
    7290 		 * @param {Object} param
    7291 		 * <ul>
    7292 		 *   <li>{Array} param.blockedPortList [Required] - blocked port list</li>
    7293 		 *   <li>{String} param.blockedPortList[].blockedPort [Required] - blocked port number( 0~65535 )</li>
    7294 		 *   <li>{String} param.blockedPortList[].protocol [Required] - protocol ( tcp/udp )</li>
    7295 		 *   <li>{String} param.blockedPortList[].direction [Required] - blocking direction( all/in/out )</li>
    7296 		 *   <li>{Function} param.onSuccess [Optional] - success callback function.
    7297 		 *   <pre class="code prettyprint">
    7298 		 *   param.onSuccess = function() {
    7299 		 *       // No Parameter.
    7300 		 *   }</pre>
    7301 		 *   </li>
    7302 		 *   <li>{Function} param.onFailure [Optional] - failure callback function.<br>
    7303 		 *   <pre class="code prettyprint">
    7304 		 *   param.onFailure = function (param) {
    7305 		 *       // {String} param.errorMessage - in case of failure, this message provides the details.
    7306 		 *   }</pre>
    7307 		 *   </li>
    7308 		 * </ul>
    7309 		 *
    7310 		 * @since 1.24.0
    7311 		 *
    7312 		 * @see
    7313 		 * <a href="hcap.network.html#.getBlockedPortList">hcap.network.getBlockedPortList()</a><br>
    7314 		 *
    7315 		 * @example
    7316 		 * hcap.network.setBlockedPortList({
    7317 		 *      "blockedPortList" : [{"blockedPort":"33252", "protocol":"tcp", "direction":"all"},{"blockedPort":"33322", "protocol":"tcp", "direction":"in"},{"blockedPort":"53422", "protocol":"udp", "direction":"out"}],
    7318 		 *      "onSuccess" : function() {
    7319 		 *          console.log("onSuccess");
    7320 		 *      },
    7321 		 *      "onFailure" : function(f) {
    7322 		 *          console.log("onFailure : errorMessage = " + f.errorMessage);
    7323 		 *      }
    7324 		 * });
    7325 		 */
    7326 		hcap.network.setBlockedPortList = function (param) {
    7327 			hcap_command("set_blocked_port_list", param);
    7328 		};
    7329         /**
    7330          * @namespace hcap.mode
    7331          */
    7332         hcap.mode = {};
    7333         /**
    7334              * HCAP mode 0
    7335              * @since 1.3.1
    7336              * @constant
    7337              */
    7338         hcap.mode.HCAP_MODE_0                      = 0x101;
    7339             /**
    7340              * HCAP mode 1
    7341              * @since 1.3.1
    7342              * @constant
    7343              */
    7344         hcap.mode.HCAP_MODE_1                      = 0x102;
    7345             /**
    7346              * HCAP mode 2
    7347              * @since 1.3.1
    7348              * @constant
    7349              */
    7350         hcap.mode.HCAP_MODE_2                      = 0x103;
    7351             /**
    7352              * HCAP mode 3
    7353              * @since 1.3.1
    7354              * @constant
    7355              */
    7356         hcap.mode.HCAP_MODE_3                      = 0x104;
    7357             /**
    7358              * HCAP mode 4
    7359              * @since 1.3.1
    7360              * @constant
    7361              */
    7362         hcap.mode.HCAP_MODE_4                      = 0x105;
    7363         /**
    7364          * Gets the current HCAP mode.<br><br>
    7365          * Hcap mode is related to the application visibility and the key control.<br><br>
    7366          * Following table specifies application visibility for each HCAP mode.<br>
    7367          *
    7368          * <div align=center>
    7369          * <table class="hcap_spec" width=600>
    7370          *   <thead>
    7371          *     <tr>
    7372          *     <th></th>
    7373          *     <th><a href="hcap.mode.html#.HCAP_MODE_0">HCAP_MODE_0</a></th>
    7374          *     <th><a href="hcap.mode.html#.HCAP_MODE_1">HCAP_MODE_1</a></th>
    7375          *     <th><a href="hcap.mode.html#.HCAP_MODE_2">HCAP_MODE_2</a></th>
    7376          *     <th><a href="hcap.mode.html#.HCAP_MODE_3">HCAP_MODE_3</a></th>
    7377          *     <th><a href="hcap.mode.html#.HCAP_MODE_4">HCAP_MODE_4</a></th>
    7378          *     </tr>
    7379          *   </thead>
    7380          *   <tbody>
    7381          *     <tr class="odd">
    7382          *       <td>Application Visibility</td>
    7383          *       <td>X</td>
    7384          *       <td>O</td>
    7385          *       <td>O</td>
    7386          *       <td>O</td>
    7387          *       <td>O</td>
    7388          *     </tr>
    7389          *   </tbody>
    7390          *   <tfoot>
    7391          *     <tr><th colspan="6">HCAP Mode & Application Visibility (O : visible, X : invisible)</td></tr>
    7392          *   </tfoot>
    7393          * </table>
    7394          * </div>
    7395          * <br>
    7396          * Following table specifies whether key is delivered to application or not for each HCAP mode.<br>
    7397          * (O : key is delivered to application, X : key is not delivered to application)
    7398          * <div align=center>
    7399          * <table class="hcap_spec" width=600>
    7400          *   <thead>
    7401          *     <tr>
    7402          *     <th>Key</th>
    7403          *     <th><a href="hcap.mode.html#.HCAP_MODE_0">HCAP_MODE_0</a></th>
    7404          *     <th><a href="hcap.mode.html#.HCAP_MODE_1">HCAP_MODE_1</a></th>
    7405          *     <th><a href="hcap.mode.html#.HCAP_MODE_2">HCAP_MODE_2</a></th>
    7406          *     <th><a href="hcap.mode.html#.HCAP_MODE_3">HCAP_MODE_3</a></th>
    7407          *     <th><a href="hcap.mode.html#.HCAP_MODE_4">HCAP_MODE_4</a></th>
    7408          *     </tr>
    7409          *   </thead>
    7410          *   <tbody>
    7411          *     <tr class="odd"><td><a href="hcap.key.Code.html#.NUM_0">       NUM_0~NUM_9     </a></td><td>X</td><td>O</td><td>X</td><td>O</td><td>X</td></tr>
    7412          *     <tr>            <td><a href="hcap.key.Code.html#.MINUS">       MINUS           </a></td><td>X</td><td>O</td><td>X</td><td>O</td><td>X</td></tr>
    7413          *     <tr class="odd"><td><a href="hcap.key.Code.html#.CH_UP">       CH_UP           </a></td><td>X</td><td>O</td><td>X</td><td>X</td><td>O</td></tr>
    7414          *     <tr>            <td><a href="hcap.key.Code.html#.CH_DOWN">     CH_DOWN         </a></td><td>X</td><td>O</td><td>X</td><td>X</td><td>O</td></tr>
    7415          *     <tr class="odd"><td><a href="hcap.key.Code.html#.GUIDE">       GUIDE           </a></td><td>O</td><td>O</td><td>O</td><td>O</td><td>O</td></tr>
    7416          *     <tr>            <td><a href="hcap.key.Code.html#.INFO">        INFO            </a></td><td>O</td><td>O</td><td>O</td><td>O</td><td>O</td></tr>
    7417          *     <tr class="odd"><td><a href="hcap.key.Code.html#.LEFT">        LEFT            </a></td><td>X</td><td>O</td><td>O</td><td>O</td><td>O</td></tr>
    7418          *     <tr>            <td><a href="hcap.key.Code.html#.UP">          UP              </a></td><td>X</td><td>O</td><td>O</td><td>O</td><td>O</td></tr>
    7419          *     <tr class="odd"><td><a href="hcap.key.Code.html#.RIGHT">       RIGHT           </a></td><td>X</td><td>O</td><td>O</td><td>O</td><td>O</td></tr>
    7420          *     <tr>            <td><a href="hcap.key.Code.html#.DOWN">        DOWN            </a></td><td>X</td><td>O</td><td>O</td><td>O</td><td>O</td></tr>
    7421          *     <tr class="odd"><td><a href="hcap.key.Code.html#.ENTER">       ENTER           </a></td><td>X</td><td>O</td><td>O</td><td>O</td><td>O</td></tr>
    7422          *     <tr>            <td><a href="hcap.key.Code.html#.BACK">        BACK            </a></td><td>X</td><td>O</td><td>O</td><td>O</td><td>O</td></tr>
    7423          *     <tr class="odd"><td><a href="hcap.key.Code.html#.EXIT">        EXIT            </a></td><td>X</td><td>O</td><td>O</td><td>O</td><td>O</td></tr>
    7424          *     <tr>            <td><a href="hcap.key.Code.html#.RED">         RED             </a></td><td>X</td><td>O</td><td>O</td><td>O</td><td>O</td></tr>
    7425          *     <tr class="odd"><td><a href="hcap.key.Code.html#.GREEN">       GREEN           </a></td><td>X</td><td>O</td><td>O</td><td>O</td><td>O</td></tr>
    7426          *     <tr>            <td><a href="hcap.key.Code.html#.YELLOW">      YELLOW          </a></td><td>X</td><td>O</td><td>O</td><td>O</td><td>O</td></tr>
    7427          *     <tr class="odd"><td><a href="hcap.key.Code.html#.BLUE">        BLUE            </a></td><td>X</td><td>O</td><td>O</td><td>O</td><td>O</td></tr>
    7428          *     <tr>            <td><a href="hcap.key.Code.html#.STOP">        STOP            </a></td><td>X</td><td>O</td><td>O</td><td>O</td><td>O</td></tr>
    7429          *     <tr class="odd"><td><a href="hcap.key.Code.html#.PLAY">        PLAY            </a></td><td>X</td><td>O</td><td>O</td><td>O</td><td>O</td></tr>
    7430          *     <tr>            <td><a href="hcap.key.Code.html#.PAUSE">       PAUSE           </a></td><td>X</td><td>O</td><td>O</td><td>O</td><td>O</td></tr>
    7431          *     <tr class="odd"><td><a href="hcap.key.Code.html#.REWIND">      REWIND          </a></td><td>X</td><td>O</td><td>O</td><td>O</td><td>O</td></tr>
    7432          *     <tr>            <td><a href="hcap.key.Code.html#.FAST_FORWARD">FAST_FORWARD    </a></td><td>X</td><td>O</td><td>O</td><td>O</td><td>O</td></tr>
    7433          *     <tr class="odd"><td><a href="hcap.key.Code.html#.LAST_CH">     LAST_CH         </a></td><td>X</td><td>O</td><td>X</td><td>X</td><td>O</td></tr>
    7434          *     <tr>            <td><a href="hcap.key.Code.html#.PORTAL">      PORTAL          </a></td><td>O</td><td>O</td><td>O</td><td>O</td><td>O</td></tr>
    7435          *     <tr class="odd"><td><a href="hcap.key.Code.html#.ORDER">       ORDER           </a></td><td>X</td><td>O</td><td>O</td><td>O</td><td>O</td></tr>
    7436          *     <tr>            <td><a href="hcap.key.Code.html#.NETFLIX">     NETFLIX         </a></td><td>O</td><td>O</td><td>O</td><td>O</td><td>O</td></tr>
    7437          *     <tr class="odd"><td><a href="hcap.key.Code.html">              Keys not in list</a></td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td></tr>
    7438          *   </tbody>
    7439          *   <tfoot>
    7440          *     <tr><th colspan="6">HCAP Mode & Key Delivery</td></tr>
    7441          *   </tfoot>
    7442          * </table>
    7443          * </div>
    7444          *
    7445          * @param {Object} param
    7446          * <ul>
    7447          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    7448          *   <pre class="code prettyprint">
    7449          *   param.onSuccess = function (param) {
    7450          *       // {Number} param.mode - HCAP mode.
    7451          *   }</pre>
    7452          *   </li>
    7453          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    7454          *   <pre class="code prettyprint">
    7455          *   param.onFailure = function (param) {
    7456          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    7457          *   }</pre>
    7458          *   </li>
    7459          * </ul>
    7460          *
    7461          * @see
    7462          * <a href="hcap.mode.html#.setHcapMode">hcap.mode.setHcapMode()</a><br>
    7463          * <a href="hcap.mode.html#.HCAP_MODE_0">HCAP_MODE_0</a><br>
    7464          * <a href="hcap.mode.html#.HCAP_MODE_1">HCAP_MODE_1</a><br>
    7465          * <a href="hcap.mode.html#.HCAP_MODE_2">HCAP_MODE_2</a><br>
    7466          * <a href="hcap.mode.html#.HCAP_MODE_3">HCAP_MODE_3</a><br>
    7467          * <a href="hcap.mode.html#.HCAP_MODE_4">HCAP_MODE_4</a>
    7468          *
    7469          * @since 1.3.1
    7470          *
    7471          * @example
    7472          * hcap.mode.getHcapMode({
    7473          *      "onSuccess" : function(s) {
    7474          *          console.log("onSuccess : current hcap mode = " + s.mode);
    7475          *      },
    7476          *      "onFailure" : function(f) {
    7477          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    7478          *      }
    7479          * });
    7480          */
    7481         hcap.mode.getHcapMode = function (param) {
    7482             hcap_command("get_mw_mode", param);
    7483         };
    7484         /**
    7485          * Sets the HCAP mode.<br>
    7486          * Please refer to <a href="hcap.mode.html#.getHcapMode">hcap.mode.getHcapMode()</a> for the detailed information regarding the HCAP mode.
    7487          *
    7488          * @param {Object} param
    7489          * <ul>
    7490          *   <li>{Number} param.mode [Required] - HCAP mode.</li>
    7491          *   <li>{Function} param.onSuccess [Optional] - success callback function.<br>
    7492          *         Setting to the same HCAP mode as before will invoke this callback function.
    7493          *   <pre class="code prettyprint">
    7494          *   param.onSuccess = function() {
    7495          *       // No parameter.
    7496          *   }</pre>
    7497          *   </li>
    7498          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    7499          *   <pre class="code prettyprint">
    7500          *   param.onFailure = function (param) {
    7501          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    7502          *   }</pre>
    7503          *   </li>
    7504          * </ul>
    7505          *
    7506          * @since 1.3.1
    7507          *
    7508          * @see
    7509          * <a href="hcap.mode.html#.getHcapMode">hcap.mode.getHcapMode()</a><br>
    7510          * <a href="hcap.mode.html#.HCAP_MODE_0">HCAP_MODE_0</a><br>
    7511          * <a href="hcap.mode.html#.HCAP_MODE_1">HCAP_MODE_1</a><br>
    7512          * <a href="hcap.mode.html#.HCAP_MODE_2">HCAP_MODE_2</a><br>
    7513          * <a href="hcap.mode.html#.HCAP_MODE_3">HCAP_MODE_3</a><br>
    7514          * <a href="hcap.mode.html#.HCAP_MODE_4">HCAP_MODE_4</a>
    7515          *
    7516          * @example
    7517          * hcap.mode.setHcapMode({
    7518          *      "mode" : hcap.mode.HCAP_MODE_2,
    7519          *      "onSuccess" : function() {
    7520          *          console.log("onSuccess");
    7521          *      },
    7522          *      "onFailure" : function(f) {
    7523          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    7524          *      }
    7525          * });
    7526          */
    7527         hcap.mode.setHcapMode = function (param) {
    7528             hcap_command("set_mw_mode", param);
    7529         };
    7530         /**
    7531          * @namespace hcap.key
    7532          */
    7533         hcap.key = {};
    7534         /**
    7535          * @namespace hcap.key.Code
    7536          */
    7537         hcap.key.Code = {
    7538             /**
    7539              * Number 0 key.
    7540              * @since 1.3.1
    7541              * @constant
    7542              */
    7543             NUM_0 : 0x0030,
    7544             /**
    7545              * Number 1 key.
    7546              * @since 1.3.1
    7547              * @constant
    7548              */
    7549             NUM_1 : 0x0031,
    7550             /**
    7551              * Number 2 key.
    7552              * @since 1.3.1
    7553              * @constant
    7554              */
    7555             NUM_2 : 0x0032,
    7556             /**
    7557              * Number 3 key.
    7558              * @since 1.3.1
    7559              * @constant
    7560              */
    7561             NUM_3 : 0x0033,
    7562             /**
    7563              * Number 4 key.
    7564              * @since 1.3.1
    7565              * @constant
    7566              */
    7567             NUM_4 : 0x0034,
    7568             /**
    7569              * Number 5 key.
    7570              * @since 1.3.1
    7571              * @constant
    7572              */
    7573             NUM_5 : 0x0035,
    7574             /**
    7575              * Number 6 key.
    7576              * @since 1.3.1
    7577              * @constant
    7578              */
    7579             NUM_6 : 0x0036,
    7580             /**
    7581              * Number 7 key.
    7582              * @since 1.3.1
    7583              * @constant
    7584              */
    7585             NUM_7 : 0x0037,
    7586             /**
    7587              * Number 8 key.
    7588              * @since 1.3.1
    7589              * @constant
    7590              */
    7591             NUM_8 : 0x0038,
    7592             /**
    7593              * Number 9 key.
    7594              * @since 1.3.1
    7595              * @constant
    7596              */
    7597             NUM_9 : 0x0039,
    7598             /**
    7599              * Channel up key.
    7600              * @since 1.3.1
    7601              * @constant
    7602              */
    7603             CH_UP : 0x01AB,
    7604             /**
    7605              * Channel down key.
    7606              * @since 1.3.1
    7607              * @constant
    7608              */
    7609             CH_DOWN : 0x01AC,
    7610             /**
    7611              * Guide key.
    7612              * @since 1.3.1
    7613              * @constant
    7614              */
    7615             GUIDE : 0x01CA,
    7616             /**
    7617              * Info key.
    7618              * @since 1.3.1
    7619              * @constant
    7620              */
    7621             INFO : 0x01C9,
    7622             /**
    7623              * Left arrow key.
    7624              * @since 1.3.1
    7625              * @constant
    7626              */
    7627             LEFT : 0x0025,
    7628             /**
    7629              * Up arrow key.
    7630              * @since 1.3.1
    7631              * @constant
    7632              */
    7633             UP : 0x0026,
    7634             /**
    7635              * Right arrow key.
    7636              * @since 1.3.1
    7637              * @constant
    7638              */
    7639             RIGHT : 0x0027,
    7640             /**
    7641              * Down arrow key.
    7642              * @since 1.3.1
    7643              * @constant
    7644              */
    7645             DOWN : 0x0028,
    7646             /**
    7647              * Enter key.
    7648              * @since 1.3.1
    7649              * @constant
    7650              */
    7651             ENTER : 0x000D,
    7652             /**
    7653              * Backspace key.
    7654              * @since 1.3.1
    7655              * @constant
    7656              */
    7657             BACK : 0x01CD,
    7658             /**
    7659              * Exit key.
    7660              * @since 1.3.1
    7661              * @constant
    7662              */
    7663             EXIT : 0x03E9,
    7664             /**
    7665              * Red color key.
    7666              * @since 1.3.1
    7667              * @constant
    7668              */
    7669             RED : 0x0193,
    7670             /**
    7671              * Green color key.
    7672              * @since 1.3.1
    7673              * @constant
    7674              */
    7675             GREEN : 0x0194,
    7676             /**
    7677              * Yellow color key.
    7678              * @since 1.3.1
    7679              * @constant
    7680              */
    7681             YELLOW : 0x0195,
    7682             /**
    7683              * Blue color key.
    7684              * @since 1.3.1
    7685              * @constant
    7686              */
    7687             BLUE : 0x0196,
    7688             /**
    7689              * Stop key.
    7690              * @since 1.3.1
    7691              * @constant
    7692              */
    7693             STOP : 0x019D,
    7694             /**
    7695              * Play key.
    7696              * @since 1.3.1
    7697              * @constant
    7698              */
    7699             PLAY : 0x019F,
    7700             /**
    7701              * Pause key.
    7702              * @since 1.3.1
    7703              * @constant
    7704              */
    7705             PAUSE : 0x0013,
    7706             /**
    7707              * Rewind key.
    7708              * @since 1.3.1
    7709              * @constant
    7710              */
    7711             REWIND : 0x019C,
    7712             /**
    7713              * Fast forward key.
    7714              * @since 1.3.1
    7715              * @constant
    7716              */
    7717             FAST_FORWARD : 0x01A1,
    7718             /**
    7719              * Last channel key.
    7720              * @since 1.3.1
    7721              * @constant
    7722              */
    7723             LAST_CH : 0x02C7,
    7724             /**
    7725              * Portal key.
    7726              * @since 1.3.1
    7727              * @constant
    7728              */
    7729             PORTAL : 0x025A,
    7730             /**
    7731              * Order key.
    7732              * @since 1.3.1
    7733              * @constant
    7734              */
    7735             ORDER : 0x026F,
    7736             /**
    7737              * Minus key or dash key.
    7738              * @since 1.3.1
    7739              * @constant
    7740              */
    7741             MINUS : 0x02C0,
    7742             /**
    7743              * Power key.
    7744              * @since 1.3.1
    7745              * @constant
    7746              */
    7747             POWER : 0x0199,
    7748             /**
    7749              * Volume up key.
    7750              * @since 1.3.1
    7751              * @constant
    7752              */
    7753             VOL_UP : 0x01BF,
    7754             /**
    7755              * Volume down key.
    7756              * @since 1.3.1
    7757              * @constant
    7758              */
    7759             VOL_DOWN : 0x01C0,
    7760             /**
    7761              * Mute key.
    7762              * @since 1.3.1
    7763              * @constant
    7764              */
    7765             MUTE : 0x01C1,
    7766             /**
    7767              * Record key.
    7768              * @since 1.3.1
    7769              * @constant
    7770              */
    7771             RECORD : 0x01A0,
    7772             /**
    7773              * Page up key.
    7774              * @since 1.3.1
    7775              * @constant
    7776              */
    7777             PAGE_UP : 0x0021,
    7778             /**
    7779              * Page down key.
    7780              * @since 1.3.1
    7781              * @constant
    7782              */
    7783             PAGE_DOWN : 0x0022,
    7784             /**
    7785              * RF bypass key.
    7786              * @since 1.3.1
    7787              * @constant
    7788              */
    7789             RF_BYPASS : 0x001D,
    7790             /**
    7791              * Next day key.
    7792              * @since 1.3.1
    7793              * @constant
    7794              */
    7795             NEXT_DAY : 0x01A9,
    7796             /**
    7797              * Previous day key.
    7798              * @since 1.3.1
    7799              * @constant
    7800              */
    7801             PREV_DAY : 0x01A8,
    7802             /**
    7803              * Applications key.
    7804              * @since 1.3.1
    7805              * @constant
    7806              */
    7807             APPS : 0x005D,
    7808             /**
    7809              * Link key.
    7810              * @since 1.3.1
    7811              * @constant
    7812              */
    7813             LINK : 0x025E,
    7814             /**
    7815              * Forward key.
    7816              * @since 1.3.1
    7817              * @constant
    7818              */
    7819             FORWARD : 0x00A7,
    7820             /**
    7821              * Zoom key.
    7822              * @since 1.3.1
    7823              * @constant
    7824              */
    7825             ZOOM : 0x00FB,
    7826             /**
    7827              * Settings key.
    7828              * @since 1.3.1
    7829              * @constant
    7830              */
    7831             SETTINGS : 0x0263,
    7832             /**
    7833              * Next favorite channel key.
    7834              * @since 1.3.1
    7835              * @constant
    7836              */
    7837             NEXT_FAV_CH : 0x00B0,
    7838             /**
    7839              * F1 (Reserved 1) key.
    7840              * @since 1.3.1
    7841              * @constant
    7842              */
    7843             RES_1 : 0x0070,
    7844             /**
    7845              * F2 (Reserved 2) key.
    7846              * @since 1.3.1
    7847              * @constant
    7848              */
    7849             RES_2 : 0x0071,
    7850             /**
    7851              * F3 (Reserved 3) key.
    7852              * @since 1.3.1
    7853              * @constant
    7854              */
    7855             RES_3 : 0x0072,
    7856             /**
    7857              * F4 (Reserved 4) key.
    7858              * @since 1.3.1
    7859              * @constant
    7860              */
    7861             RES_4 : 0x0073,
    7862             /**
    7863              * F5 (Reserved 5) key.
    7864              * @since 1.3.1
    7865              * @constant
    7866              */
    7867             RES_5 : 0x0074,
    7868             /**
    7869              * F6 (Reserved 6) key.
    7870              * @since 1.3.1
    7871              * @constant
    7872              */
    7873             RES_6 : 0x0075,
    7874             /**
    7875              * Lock key.
    7876              * @since 1.3.1
    7877              * @constant
    7878              */
    7879             LOCK : 0x026B,
    7880             /**
    7881              * Skip key.
    7882              * @since 1.3.1
    7883              * @constant
    7884              */
    7885             SKIP : 0x026C,
    7886             /**
    7887              * List key.
    7888              * @since 1.3.1
    7889              * @constant
    7890              */
    7891             LIST : 0x03EE,
    7892             /**
    7893              * Live key.
    7894              * @since 1.3.1
    7895              * @constant
    7896              */
    7897             LIVE : 0x026E,
    7898             /**
    7899              * On demand key.
    7900              * @since 1.3.1
    7901              * @constant
    7902              */
    7903             ON_DEMAND : 0x026F,
    7904             /**
    7905              * PINP move key.
    7906              * @since 1.3.1
    7907              * @constant
    7908              */
    7909             PINP_MOVE : 0x0270,
    7910             /**
    7911              * PINP up key.
    7912              * @since 1.3.1
    7913              * @constant
    7914              */
    7915             PINP_UP : 0x0271,
    7916             /**
    7917              * PINP down key.
    7918              * @since 1.3.1
    7919              * @constant
    7920              */
    7921             PINP_DOWN : 0x0272,
    7922             /**
    7923              * Menu key or home key.
    7924              * @since 1.3.1
    7925              * @constant
    7926              */
    7927             MENU : 0x0012,
    7928             /**
    7929              * Audio description key.
    7930              * @since 1.3.1
    7931              * @constant
    7932              */
    7933             AD : 0x02BC,
    7934             /**
    7935              * Alarm key.
    7936              * @since 1.3.1
    7937              * @constant
    7938              */
    7939             ALARM : 0x02BD,
    7940             /**
    7941              * AV mode key.
    7942              * @since 1.3.1
    7943              * @constant
    7944              */
    7945             AV_MODE : 0x001F,
    7946             /**
    7947              * Subtitle key. (EU subtitle)
    7948              * @since 1.3.1
    7949              * @constant
    7950              */
    7951             SUBTITLE : 0x01CC,
    7952             /**
    7953              * CC key. (US subtitle)
    7954              * @since 1.7.1
    7955              * @constant
    7956              */
    7957             CC : 0x03F0,
    7958             /**
    7959              * Discrete power off key.
    7960              * @since 1.3.1
    7961              * @constant
    7962              */
    7963             DISC_POWER_OFF : 0x02C1,
    7964             /**
    7965              * Discrete power on key.
    7966              * @since 1.3.1
    7967              * @constant
    7968              */
    7969             DISC_POWER_ON : 0x02C2,
    7970             /**
    7971              * DVD key.
    7972              * @since 1.3.1
    7973              * @constant
    7974              */
    7975             DVD : 0x02C3,
    7976             /**
    7977              * Eject key.
    7978              * @since 1.3.1
    7979              * @constant
    7980              */
    7981             EJECT : 0x019E,
    7982             /**
    7983              * Energy saving key.
    7984              * @since 1.3.1
    7985              * @constant
    7986              */
    7987             ENERGY_SAVING : 0x02C5,
    7988             /**
    7989              * Favorite key.
    7990              * @since 1.3.1
    7991              * @constant
    7992              */
    7993             FAV : 0x02C6,
    7994             /**
    7995              * Flashback key or last key.
    7996              * @since 1.3.1
    7997              * @constant
    7998              */
    7999             FLASHBK : 0x02C7,
    8000             /**
    8001              * Input key.
    8002              * @since 1.3.1
    8003              * @constant
    8004              */
    8005             INPUT : 0x02C8,
    8006             /**
    8007              * Mark key.
    8008              * @since 1.3.1
    8009              * @constant
    8010              */
    8011             MARK : 0x02C9,
    8012             /**
    8013              * Netcast key.
    8014              * @since 1.3.1
    8015              * @constant
    8016              */
    8017             NETCAST : 0x03E8,
    8018             /**
    8019              * PIP key.
    8020              * @since 1.3.1
    8021              * @constant
    8022              */
    8023             PIP : 0x02CB,
    8024             /**
    8025              * PIP channel down key.
    8026              * @since 1.3.1
    8027              * @constant
    8028              */
    8029             PIP_CH_DOWN : 0x02CC,
    8030             /**
    8031              * PIP channel up key.
    8032              * @since 1.3.1
    8033              * @constant
    8034              */
    8035             PIP_CH_UP : 0x02CD,
    8036             /**
    8037              * PIP input key.
    8038              * @since 1.3.1
    8039              * @constant
    8040              */
    8041             PIP_INPUT : 0x02CE,
    8042             /**
    8043              * PIP swap key.
    8044              * @since 1.3.1
    8045              * @constant
    8046              */
    8047             PIP_SWAP : 0x02CF,
    8048             /**
    8049              * Qmenu key.
    8050              * @since 1.3.1
    8051              * @constant
    8052              */
    8053             Q_MENU : 0x03EA,
    8054             /**
    8055              * Qview key.
    8056              * @since 1.3.1
    8057              * @constant
    8058              */
    8059             Q_VIEW : 0x03EF,
    8060             /**
    8061              * Aspect ratio key.
    8062              * @since 1.3.1
    8063              * @constant
    8064              */
    8065             RATIO : 0x003ED,
    8066             /**
    8067              * SAP key.
    8068              * @since 1.3.1
    8069              * @constant
    8070              */
    8071             SAP : 0x02D3,
    8072             /**
    8073              * Simplink key.
    8074              * @since 1.3.1
    8075              * @constant
    8076              */
    8077             SIMPLINK : 0x02D4,
    8078             /**
    8079              * STB key.
    8080              * @since 1.3.1
    8081              * @constant
    8082              */
    8083             STB : 0x02D5,
    8084             /**
    8085              * Text option key.
    8086              * @since 1.3.1
    8087              * @constant
    8088              */
    8089             T_OPT : 0x03EC,
    8090             /**
    8091              * Teletext key.
    8092              * @since 1.3.1
    8093              * @constant
    8094              */
    8095             TEXT : 0x01CB,
    8096             /**
    8097              * Sleep timer key.
    8098              * @since 1.3.1
    8099              * @constant
    8100              */
    8101             SLEEP_TIMER : 0x02D9,
    8102             /**
    8103              * TV key.
    8104              * @since 1.3.1
    8105              * @constant
    8106              */
    8107             TV : 0x02DA,
    8108             /**
    8109              * TV radio key.
    8110              * @since 1.3.1
    8111              * @constant
    8112              */
    8113             TV_RAD : 0x02DB,
    8114             /**
    8115              * VCR key.
    8116              * @since 1.3.1
    8117              * @constant
    8118              */
    8119             VCR : 0x02DC,
    8120             /**
    8121              * Power low battery key.
    8122              * @since 1.3.1
    8123              * @constant
    8124              */
    8125             POWER_LOWBATTERY : 0x02DD,
    8126             /**
    8127              * Smart home key.
    8128              * @since 1.18.0
    8129              * @constant
    8130              */
    8131             SMART_HOME : 0x02DE,
    8132             /**
    8133              * Screen remote key.
    8134              * @since 1.18.0
    8135              * @constant
    8136              */
    8137             SCREEN_REMOTE : 0x02DF,
    8138             /**
    8139              * Pointer On/Off key.
    8140              * @since 1.18.0
    8141              * @constant
    8142              */
    8143             POINTER : 0x02E0,
    8144             /**
    8145              * 3D key.
    8146              * @since 1.18.0
    8147              * @constant
    8148              */
    8149             LG_3D : 0x02E1,
    8150             /**
    8151              * DATA key.
    8152              * @since 1.18.4
    8153              * @constant
    8154              */
    8155             DATA : 0x02E2,
    8156             /**
    8157 		    * Assistive Menu key.
    8158 		    * @since 1.21.5
    8159 		    * @constant
    8160             */
    8161             ASSISTIVE_MENU : 0x02E3,
    8162             /**
    8163             * 3Digit Input key.
    8164             * @since 1.23.2
    8165             * @constant
    8166             */
    8167             THREE_DIGIT_INPUT : 0x02E4,
    8168             /**
    8169             * LIVETV key.
    8170             * @since 1.23.2
    8171             * @constant
    8172             */
    8173             LIVETV : 0x02E5,
    8174             /**
    8175             * Go to Prev key.
    8176             * @since 1.23.2
    8177             * @constant
    8178             */
    8179             GOTOPREV : 0x02E6,
    8180             /**
    8181             * Go to Next key.
    8182             * @since 1.23.2
    8183             * @constant
    8184             */
    8185             GOTONEXT : 0x02E7,
    8186             /**
    8187             * Terrestrial channel type change key.
    8188             * @since 1.23.2
    8189             * @constant
    8190             */
    8191             TER : 0x02E8,
    8192             /**
    8193             * BS channel type change key.
    8194             * @since 1.23.2
    8195             * @constant
    8196             */
    8197             BS : 0x02E9,
    8198             /**
    8199             * CS1 channel type change key.
    8200             * @since 1.23.2
    8201             * @constant
    8202             */
    8203             CS1 : 0x02EA,
    8204             /**
    8205             * CS2 channel type change key.
    8206             * @since 1.23.2
    8207             * @constant
    8208             */
    8209             CS2 : 0x02EB,
    8210             /**
    8211             * CS4K channel type change key.
    8212             * @since 1.23.2
    8213             * @constant
    8214             */
    8215             CS4K : 0x02EC,
    8216             /**
    8217             * BS4K channel type change key.
    8218             * @since 1.23.2
    8219             * @constant
    8220             */
    8221             BS4K : 0x02ED,
    8222             /**
    8223             * Number 11 key.
    8224             * @since 1.23.2
    8225             * @constant
    8226             */
    8227             NUM_11 : 0x02EE,
    8228             /**
    8229             * Number 12 key.
    8230             * @since 1.23.2
    8231             * @constant
    8232             */
    8233 			NUM_12 : 0x02EF,
    8234 			/**
    8235             * Netflix key.
    8236             * @since 1.24.3
    8237             * @constant
    8238             */
    8239             NETFLIX : 0x040D
    8240         };
    8241         hcap_key_table[hcap.key.Code.NUM_0]             = hcap.key.Code.NUM_0;                // 0x0030(48) => 0x0030(48)
    8242         hcap_key_table[hcap.key.Code.NUM_1]             = hcap.key.Code.NUM_1;                // 0x0031(49) => 0x0031(49)
    8243         hcap_key_table[hcap.key.Code.NUM_2]             = hcap.key.Code.NUM_2;                // 0x0032(50) => 0x0032(50)
    8244         hcap_key_table[hcap.key.Code.NUM_3]             = hcap.key.Code.NUM_3;                // 0x0033(51) => 0x0033(51)
    8245         hcap_key_table[hcap.key.Code.NUM_4]             = hcap.key.Code.NUM_4;                // 0x0034(52) => 0x0034(52)
    8246         hcap_key_table[hcap.key.Code.NUM_5]             = hcap.key.Code.NUM_5;                // 0x0035(53) => 0x0035(53)
    8247         hcap_key_table[hcap.key.Code.NUM_6]             = hcap.key.Code.NUM_6;                // 0x0036(54) => 0x0036(54)
    8248         hcap_key_table[hcap.key.Code.NUM_7]             = hcap.key.Code.NUM_7;                // 0x0037(55) => 0x0037(55)
    8249         hcap_key_table[hcap.key.Code.NUM_8]             = hcap.key.Code.NUM_8;                // 0x0038(56) => 0x0038(56)
    8250         hcap_key_table[hcap.key.Code.NUM_9]             = hcap.key.Code.NUM_9;                // 0x0039(57) => 0x0039(57)
    8251         hcap_key_table[hcap.key.Code.CH_UP]             = hcap.key.Code.CH_UP;                // 0x01AB(427) => 0x01AB(427)
    8252         hcap_key_table[hcap.key.Code.CH_DOWN]           = hcap.key.Code.CH_DOWN;              // 0x01AC(428) => 0x01AC(428)
    8253         hcap_key_table[hcap.key.Code.GUIDE]             = hcap.key.Code.GUIDE;                // 0x01CA(458) => 0x01CA(458)
    8254         hcap_key_table[hcap.key.Code.INFO]              = hcap.key.Code.INFO;                 // 0x01C9(457) => 0x01C9(457)
    8255         hcap_key_table[hcap.key.Code.LEFT]              = hcap.key.Code.LEFT;                 // 0x0025(37) => 0x0025(37)
    8256         hcap_key_table[hcap.key.Code.UP]                = hcap.key.Code.UP;                   // 0x0026(38) => 0x0026(38)
    8257         hcap_key_table[hcap.key.Code.RIGHT]             = hcap.key.Code.RIGHT;                // 0x0027(39) => 0x0027(39)
    8258         hcap_key_table[hcap.key.Code.DOWN]              = hcap.key.Code.DOWN;                 // 0x0028(40) => 0x0028(40)
    8259         hcap_key_table[hcap.key.Code.ENTER]             = 10;                                 // *0x000D(13) => 0x000A(10)
    8260         hcap_key_table[hcap.key.Code.BACK]              = 608;                                // *0x01CD(461) => 0x260(608)
    8261         hcap_key_table[hcap.key.Code.EXIT]              = 601;                                // *0x03E9(1001) => 0x0259(601)
    8262         hcap_key_table[hcap.key.Code.RED]               = hcap.key.Code.RED;                  // 0x0193(403) => 0x0193(403)
    8263         hcap_key_table[hcap.key.Code.GREEN]             = hcap.key.Code.GREEN;                // 0x0194(404) => 0x0194(404)
    8264         hcap_key_table[hcap.key.Code.YELLOW]            = hcap.key.Code.YELLOW;               // 0x0195(405) => 0x0195(405)
    8265         hcap_key_table[hcap.key.Code.BLUE]              = hcap.key.Code.BLUE;                 // 0x0196(406) => 0x0196(406)
    8266         hcap_key_table[hcap.key.Code.STOP]              = hcap.key.Code.STOP;                 // 0x019D(413) => 0x019D(413)
    8267         hcap_key_table[hcap.key.Code.PLAY]              = hcap.key.Code.PLAY;                 // 0x019F(415) => 0x019F(415)
    8268         hcap_key_table[hcap.key.Code.PAUSE]             = hcap.key.Code.PAUSE;                // 0x0013(19) => 0x0013(19)
    8269         hcap_key_table[hcap.key.Code.REWIND]            = hcap.key.Code.REWIND;               // 0x019C(412) => 0x019C(412)
    8270         hcap_key_table[hcap.key.Code.FAST_FORWARD]      = hcap.key.Code.FAST_FORWARD;         // 0x01A1(417) => 0x01A1(417)
    8271         hcap_key_table[hcap.key.Code.LAST_CH]           = 607;                                // *0x02C7(711) => 0x025F(607)
    8272         hcap_key_table[hcap.key.Code.PORTAL]            = hcap.key.Code.PORTAL;               // 0x025A(602) => 0x025A(602)
    8273         hcap_key_table[hcap.key.Code.ORDER]             = hcap.key.Code.ORDER;                // 0x026F(623) => 0x026F(623)
    8274         hcap_key_table[hcap.key.Code.MINUS]             = 45;                                 // *0x02C0(704) => 0x002D(45)
    8275         hcap_key_table[hcap.key.Code.POWER]             = hcap.key.Code.POWER;                // 0x0199(409) => 0x0199(409)
    8276         hcap_key_table[hcap.key.Code.VOL_UP]            = hcap.key.Code.VOL_UP;               // 0x01BF(447) => 0x01BF(447)
    8277         hcap_key_table[hcap.key.Code.VOL_DOWN]          = hcap.key.Code.VOL_DOWN;             // 0x01C0(448) => 0x01C0(448)
    8278         hcap_key_table[hcap.key.Code.MUTE]              = hcap.key.Code.MUTE;                 // 0x01C1(449) => 0x01C1(449)
    8279         hcap_key_table[hcap.key.Code.RECORD]            = hcap.key.Code.RECORD;               // 0x01A0(416) => 0x01A0(416)
    8280         hcap_key_table[hcap.key.Code.PAGE_UP]           = hcap.key.Code.PAGE_UP;              // 0x0021(33) => 0x0021(33)
    8281         hcap_key_table[hcap.key.Code.PAGE_DOWN]         = hcap.key.Code.PAGE_DOWN;            // 0x0022(34) => 0x0022(34)
    8282         hcap_key_table[hcap.key.Code.RF_BYPASS]         = 600;                                // *0x001D(29) => 0x0258(600)
    8283         hcap_key_table[hcap.key.Code.NEXT_DAY]          = 603;                                // *0x01A9(425) => 0x025B(603)
    8284         hcap_key_table[hcap.key.Code.PREV_DAY]          = 604;                                // *0x01A8(424) => 0x025C(604)
    8285         hcap_key_table[hcap.key.Code.APPS]              = 605;                                // *0x005D(93) => 0x025D(605)
    8286         hcap_key_table[hcap.key.Code.LINK]              = hcap.key.Code.LINK;                 // 0x025E(606) => 0x025E(606)
    8287         hcap_key_table[hcap.key.Code.FORWARD]           = 609;                                // *0x00A7(167) => 0x0261(609)
    8288         hcap_key_table[hcap.key.Code.ZOOM]              = 610;                                // *0x00FB(251) => 0x0262(610)
    8289         hcap_key_table[hcap.key.Code.SETTINGS]          = hcap.key.Code.SETTINGS;             // 0x0263(611) => 0x0263(611)
    8290         hcap_key_table[hcap.key.Code.NEXT_FAV_CH]       = 612;                                // *0x00B0(176) => 0x0264(612)
    8291         hcap_key_table[hcap.key.Code.RES_1]             = 613;                                // *0x0070(112) => 0x0265(613)
    8292         hcap_key_table[hcap.key.Code.RES_2]             = 614;                                // *0x0071(113) => 0x0266(614)
    8293         hcap_key_table[hcap.key.Code.RES_3]             = 615;                                // *0x0072(114) => 0x0267(615)
    8294         hcap_key_table[hcap.key.Code.RES_4]             = 616;                                // *0x0073(115) => 0x0268(616)
    8295         hcap_key_table[hcap.key.Code.RES_5]             = 617;                                // *0x0074(116) => 0x0269(617)
    8296         hcap_key_table[hcap.key.Code.RES_6]             = 618;                                // *0x0075(117) => 0x026A(618)
    8297         hcap_key_table[hcap.key.Code.LOCK]              = hcap.key.Code.LOCK;                 // 0x026B(619) => 0x026B(619)
    8298         hcap_key_table[hcap.key.Code.SKIP]              = hcap.key.Code.SKIP;                 // 0x026C(620) => 0x026C(620)
    8299         hcap_key_table[hcap.key.Code.LIST]              = 621;                                // *0x03EE(1006) => 0x026D(621)
    8300         hcap_key_table[hcap.key.Code.LIVE]              = hcap.key.Code.LIVE;                 // 0x026E(622) => 0x026E(622)
    8301         hcap_key_table[hcap.key.Code.ON_DEMAND]         = hcap.key.Code.ON_DEMAND;            // 0x026F(623) => 0x026F(623)
    8302         hcap_key_table[hcap.key.Code.PINP_MOVE]         = hcap.key.Code.PINP_MOVE;            // 0x0270(624) => 0x0270(624)
    8303         hcap_key_table[hcap.key.Code.PINP_UP]           = hcap.key.Code.PINP_UP;              // 0x0271(625) => 0x0271(625)
    8304         hcap_key_table[hcap.key.Code.PINP_DOWN]         = hcap.key.Code.PINP_DOWN;            // 0x0272(626) => 0x0272(626)
    8305         hcap_key_table[hcap.key.Code.MENU]              = 627;                                // *0x0012(18) => 0x0273(627)
    8306         hcap_key_table[hcap.key.Code.AD]                = hcap.key.Code.AD;                   // 0x02BC(700) => 0x02BC(700)
    8307         hcap_key_table[hcap.key.Code.ALARM]             = hcap.key.Code.ALARM;                // 0x02BD(701) => 0x02BD(701)
    8308         hcap_key_table[hcap.key.Code.AV_MODE]           = 702;                                // *0x001F(31) => 0x02BE(702)
    8309         hcap_key_table[hcap.key.Code.SUBTITLE]          = 726;                                // *0x01CC(460) => 0x02D6(726)
    8310         hcap_key_table[hcap.key.Code.CC]                = 726;                                // *0x03F0(1008) => 0x02BF(703) // since 1.19.0, this will be ignored
    8311         hcap_key_table[hcap.key.Code.DISC_POWER_OFF]    = hcap.key.Code.DISC_POWER_OFF;       // 0x02C1(705) => 0x02C1(705)
    8312         hcap_key_table[hcap.key.Code.DISC_POWER_ON]     = hcap.key.Code.DISC_POWER_ON;        // 0x02C2(706) => 0x02C2(706)
    8313         hcap_key_table[hcap.key.Code.DVD]               = hcap.key.Code.DVD;                  // 0x02C3(707) => 0x02C3(707)
    8314         hcap_key_table[hcap.key.Code.EJECT]             = 708;                                // 0x019E(414) => 0x02C4(708)
    8315         hcap_key_table[hcap.key.Code.ENERGY_SAVING]     = hcap.key.Code.ENERGY_SAVING;        // 0x02C5(709) => 0x02C5(709)
    8316         hcap_key_table[hcap.key.Code.FAV]               = hcap.key.Code.FAV;                  // 0x02C6(710) => 0x02C6(710)
    8317         hcap_key_table[hcap.key.Code.FLASHBK]           = hcap.key.Code.FLASHBK;              // 0x02C7(711) => 0x02C7(711)
    8318         hcap_key_table[hcap.key.Code.INPUT]             = hcap.key.Code.INPUT;                // 0x02C8(712) => 0x02C8(712)
    8319         hcap_key_table[hcap.key.Code.MARK]              = hcap.key.Code.MARK;                 // 0x02C9(713) => 0x02C9(713)
    8320         hcap_key_table[hcap.key.Code.NETCAST]           = 714;                                // 0x03E8(1000) => 0x02CA(714)
    8321         hcap_key_table[hcap.key.Code.PIP]               = hcap.key.Code.PIP;                  // 0x02CB(715) => 0x02CB(715)
    8322         hcap_key_table[hcap.key.Code.PIP_CH_DOWN]       = hcap.key.Code.PIP_CH_DOWN;          // 0x02CC(716) => 0x02CC(716)
    8323         hcap_key_table[hcap.key.Code.PIP_CH_UP]         = hcap.key.Code.PIP_CH_UP;            // 0x02CD(717) => 0x02CD(717)
    8324         hcap_key_table[hcap.key.Code.PIP_INPUT]         = hcap.key.Code.PIP_INPUT;            // 0x02CE(718) => 0x02CE(718)
    8325         hcap_key_table[hcap.key.Code.PIP_SWAP]          = hcap.key.Code.PIP_SWAP;             // 0x02CF(719) => 0x02CF(719)
    8326         hcap_key_table[hcap.key.Code.Q_MENU]            = 720;                                // *0x03EA(1002) => 0x02D0(720)
    8327         hcap_key_table[hcap.key.Code.Q_VIEW]            = 721;                                // *0x03EF(1007) => 0x02D1(721)
    8328         hcap_key_table[hcap.key.Code.RATIO]             = 722;                                // *0x03ED(1005) => 0x02D2(722)
    8329         hcap_key_table[hcap.key.Code.SAP]               = hcap.key.Code.SAP;                  // 0x02D3(723) => 0x02D3(723)
    8330         hcap_key_table[hcap.key.Code.SIMPLINK]          = hcap.key.Code.SIMPLINK;             // 0x02D4(724) => 0x02D4(724)
    8331         hcap_key_table[hcap.key.Code.STB]               = hcap.key.Code.STB;                  // 0x02D5(725) => 0x02D5(725)
    8332         hcap_key_table[hcap.key.Code.T_OPT]             = 727;                                // *0x03EC(1004) => 0x02D7(727)
    8333         hcap_key_table[hcap.key.Code.TEXT]              = 728;                                // *0x01CB(459) => 0x02D8(728)
    8334         hcap_key_table[hcap.key.Code.SLEEP_TIMER]       = hcap.key.Code.SLEEP_TIMER;          // 0x02D9(729) => 0x02D9(729)
    8335         hcap_key_table[hcap.key.Code.TV]                = hcap.key.Code.TV;                   // 0x02DA(730) => 0x02DA(730)
    8336         hcap_key_table[hcap.key.Code.TV_RAD]            = hcap.key.Code.TV_RAD;               // 0x02DB(731) => 0x02DB(731)
    8337         hcap_key_table[hcap.key.Code.VCR]               = hcap.key.Code.VCR;                  // 0x02DC(732) => 0x02DC(732)
    8338         hcap_key_table[hcap.key.Code.POWER_LOWBATTERY]  = hcap.key.Code.POWER_LOWBATTERY;     // 0x02DD(733) => 0x02DD(733)
    8339         hcap_key_table[hcap.key.Code.SMART_HOME]        = hcap.key.Code.SMART_HOME;           // 0x02DE(734) => 0x02DE(734)
    8340         hcap_key_table[hcap.key.Code.SCREEN_REMOTE]     = hcap.key.Code.SCREEN_REMOTE;        // 0x02DF(735) => 0x02DF(735)
    8341         hcap_key_table[hcap.key.Code.POINTER]           = hcap.key.Code.POINTER;              // 0x02E0(736) => 0x02E0(736)
    8342         hcap_key_table[hcap.key.Code.LG_3D]             = hcap.key.Code.LG_3D;                // 0x02E1(737) => 0x02E1(737)
    8343         hcap_key_table[hcap.key.Code.DATA]              = hcap.key.Code.DATA;                 // 0x02E2(738) => 0x02E2(738)
    8344         hcap_key_table[hcap.key.Code.ASSISTIVE_MENU]    = hcap.key.Code.ASSISTIVE_MENU;       // 0x02E3(739) => 0x02E3(739)
    8345         hcap_key_table[hcap.key.Code.THREE_DIGIT_INPUT] = hcap.key.Code.THREE_DIGIT_INPUT;    // 0x02E4(740) => 0x02E4(740)
    8346         hcap_key_table[hcap.key.Code.LIVETV]            = hcap.key.Code.LIVETV;               // 0x02E5(741) => 0x02E5(741)
    8347         hcap_key_table[hcap.key.Code.GOTOPREV]          = hcap.key.Code.GOTOPREV;             // 0x02E6(742) => 0x02E6(742)
    8348         hcap_key_table[hcap.key.Code.GOTONEXT]          = hcap.key.Code.GOTONEXT;             // 0x02E7(743) => 0x02E7(743)
    8349         hcap_key_table[hcap.key.Code.TER]               = hcap.key.Code.TER;                  // 0x02E8(744) => 0x02E8(744)
    8350         hcap_key_table[hcap.key.Code.BS]                = hcap.key.Code.BS;                   // 0x02E9(745) => 0x02E9(745)
    8351         hcap_key_table[hcap.key.Code.CS1]               = hcap.key.Code.CS1;                  // 0x02EA(746) => 0x02EA(746)
    8352         hcap_key_table[hcap.key.Code.CS2]               = hcap.key.Code.CS2;                  // 0x02EB(747) => 0x02EB(747)
    8353         hcap_key_table[hcap.key.Code.CS4K]              = hcap.key.Code.CS4K;                 // 0x02EC(748) => 0x02EC(748)
    8354         hcap_key_table[hcap.key.Code.BS4K]              = hcap.key.Code.BS4K;                 // 0x02ED(749) => 0x02ED(749)
    8355         hcap_key_table[hcap.key.Code.NUM_11]            = hcap.key.Code.NUM_11;               // 0x02EE(750) => 0x02EE(750)
    8356         hcap_key_table[hcap.key.Code.NUM_12]            = hcap.key.Code.NUM_12;               // 0x02EF(751) => 0x02EF(751)
    8357 		hcap_key_table[hcap.key.Code.NETFLIX]           = 752;              				  // *0x040D(1037) => 0x02F0(752)
    8358
    8359         /**
    8360          * Add/Modify a key item in the key table.<br>
    8361          * <ul>
    8362          *   <li>Add : If keycode is not in the key table, the key item will be added to the key table.</li>
    8363          *   <li>Modify : If keycode is in the key table, but its virtual_keycode or attribute is different, the key item in the key table will be modified.</li>
    8364          * </ul>
    8365          * Keycode with attribute 2 or 3 in the key table is delivered to application as its virtual_keycode, not keycode.<br>
    8366          * Keycode not in the key table is delivered to application as the keycode itself.
    8367          *
    8368          * @param {Object} param
    8369          * <ul>
    8370          *   <li>{Number} param.keycode [Required] - custom RCU raw data (4 bytes). 0x00000000 for all LG RCU reserved keycode.</li>
    8371          *   <li>{Number} param.virtualKeycode [Required] - virtual keycode defined by LG in <a href="hcap.key.Code.html">hcap.key.Code</a>.</li>
    8372          *   <li>{Number} param.attribute [Required] - attribute of the key item.<br>
    8373          *   <div align=center>
    8374          *     <table class="hcap_spec" width=600>
    8375          *       <thead>
    8376          *         <tr>
    8377          *           <th>Attribute</th>
    8378          *           <th>Action</th>
    8379          *         </tr>
    8380          *       </thead>
    8381          *       <tbody>
    8382          *         <tr class="odd"><td>0</td><td class="left">Processed by TV (LG firmware). For Portal key (hcap.key.Code.PORTAL) when its attribute is 0, TV will launch the initial HCAP page.</td></tr>
    8383          *         <tr>            <td>1</td><td class="left">Processed according to HCAP Mode defined in <a href="hcap.mode.html#.getHcapMode">hcap.mode.getHcapMode()</a>.</td></tr>
    8384          *         <tr class="odd"><td>2</td><td class="left">Processed by application.</td></tr>
    8385          *         <tr>            <td>3</td><td class="left">Processed by browser and application on browser while browser is running. Otherwise, processed by TV (LG firmware).</td></tr>
    8386          *       </tbody>
    8387          *       <tfoot>
    8388          *         <tr><th colspan="6">HCAP Key Attribute & Action</td></tr>
    8389          *       </tfoot>
    8390          *     </table>
    8391          *   </div>
    8392          *   </li>
    8393          *   <li>{Function} param.onSuccess [Optional] - success callback function.<br>
    8394          *       Setting to the same setting as before will invoke this callback function.
    8395          *   <pre class="code prettyprint">
    8396          *   param.onSuccess = function() {
    8397          *       // No parameter.
    8398          *   }</pre>
    8399          *   </li>
    8400          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    8401          *   <pre class="code prettyprint">
    8402          *   param.onFailure = function (param) {
    8403          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    8404          *   }</pre>
    8405          *   </li>
    8406          * </ul>
    8407          *
    8408          * @since 1.3.1
    8409          *
    8410          * @see
    8411          * <a href="hcap.key.html#.clearKeyTable">hcap.key.clearKeyTable()</a><br>
    8412          * <a href="hcap.key.html#.removeKeyItem">hcap.key.removeKeyItem()</a><br>
    8413          * <a href="hcap.key.html#.sendKey">hcap.key.sendKey()</a>
    8414          *
    8415          * @example
    8416          * // add custom keycode as MENU with attribue 2 and change the attribute of LG GUIDE key to attribute 0
    8417          * hcap.key.addKeyItem({
    8418          *      "keycode" : 0x12345678,
    8419          *      "virtualKeycode" : hcap.key.Code.MENU,
    8420          *      "attribute" : 2,
    8421          *      "onSuccess" : function() {
    8422          *          console.log("onSuccess");
    8423          *          hcap.key.addKeyItem({
    8424          *               "keycode" : 0,
    8425          *               "virtualKeycode" : hcap.key.Code.GUIDE,
    8426          *               "attribute" : 0,
    8427          *               "onSuccess" : function() {
    8428          *                   console.log("onSuccess");
    8429          *               },
    8430          *               "onFailure" : function(f) {
    8431          *                   console.log("onFailure : errorMessage = " + f.errorMessage);
    8432          *               }
    8433          *          });
    8434          *      },
    8435          *      "onFailure" : function(f) {
    8436          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    8437          *      }
    8438          * });
    8439          */
    8440         hcap.key.addKeyItem = function (param) {
    8441             param.virtualKeycode = hcap_key_table[param.virtualKeycode];
    8442             hcap_command("add_key_item", param);
    8443         };
    8444         /**
    8445          * Remove a key item in the key table.
    8446          *
    8447          * @param {Object} param
    8448          * <ul>
    8449          *   <li>{Number} param.keycode [Required] - custom RCU raw data (4 bytes) to remove. If the keycode is 0x00000000 (reserved keycode for LG RCU), param.onFailure is invoked.</li>
    8450          *   <li>{Function} param.onSuccess [Optional] - success callback function.<br>
    8451          *       Remove for the keycode not in the key table will invoke this callback function.
    8452          *   <pre class="code prettyprint">
    8453          *   param.onSuccess = function() {
    8454          *       // No parameter.
    8455          *   }</pre>
    8456          *   </li>
    8457          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    8458          *   <pre class="code prettyprint">
    8459          *   param.onFailure = function (param) {
    8460          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    8461          *   }</pre>
    8462          *   </li>
    8463          * </ul>
    8464          *
    8465          * @since 1.3.1
    8466          *
    8467          * @see
    8468          * <a href="hcap.key.html#.addKeyItem">hcap.key.addKeyItem()</a><br>
    8469          * <a href="hcap.key.html#.clearKeyTable">hcap.key.clearKeyTable()</a><br>
    8470          * <a href="hcap.key.html#.sendKey">hcap.key.sendKey()</a>
    8471          *
    8472          * @example
    8473          * hcap.key.removeKeyItem({
    8474          *      "keycode" : 0x12345678,
    8475          *      "onSuccess" : function() {
    8476          *          console.log("onSuccess");
    8477          *      },
    8478          *      "onFailure" : function(f) {
    8479          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    8480          *      }
    8481          * });
    8482          */
    8483         hcap.key.removeKeyItem = function (param) {
    8484             hcap_command("remove_key_item", param);
    8485         };
    8486         /**
    8487          * Clear the key table and restore it to the factory default.
    8488          *
    8489          * @param {Object} param
    8490          * <ul>
    8491          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    8492          *   <pre class="code prettyprint">
    8493          *   param.onSuccess = function() {
    8494          *       // No parameter.
    8495          *   }</pre>
    8496          *   </li>
    8497          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    8498          *   <pre class="code prettyprint">
    8499          *   param.onFailure = function (param) {
    8500          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    8501          *   }</pre>
    8502          *   </li>
    8503          * </ul>
    8504          *
    8505          * @since 1.3.1
    8506          *
    8507          * @see
    8508          * <a href="hcap.key.html#.addKeyItem">hcap.key.addKeyItem()</a><br>
    8509          * <a href="hcap.key.html#.removeKeyItem">hcap.key.removeKeyItem()</a><br>
    8510          * <a href="hcap.key.html#.sendKey">hcap.key.sendKey()</a>
    8511          *
    8512          * @example
    8513          * hcap.key.clearKeyTable({
    8514          *      "onSuccess" : function() {
    8515          *          console.log("onSuccess");
    8516          *      },
    8517          *      "onFailure" : function(f) {
    8518          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    8519          *      }
    8520          * });
    8521          */
    8522         hcap.key.clearKeyTable = function (param) {
    8523             hcap_command("clear_key_table", param);
    8524         };
    8525         /**
    8526          * Deliver a virtual keycode from application to TV.<br>
    8527          * virtual_keycode is defined by LG and is processed like a key from LG RCU.<br>
    8528          * Therefore the delivered virtual_keycode is mapped to a key item [keycode = 0x00000000, virtual_keycode] in the key table.<br>
    8529          * Application should be cautious not to come into the infinite loop because the sent key to TV can come back to the application again according to the key table setting.<br>
    8530          * Also using modifers can combine keys
    8531          *
    8532          *
    8533          * @param {Object} param
    8534          * <ul>
    8535          *   <li>{Number} param.virtualKeycode [Required] - virtual keycode defined in <a href="hcap.key.Code.html">hcap.key.Code</a>.</li>
    8536          *   <li>{Number} param.modifier [Required] - modifier key / virtual keycode defined in <a href="hcap.key.Code.html">hcap.key.Code</a>.</li>
    8537          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    8538          *   <pre class="code prettyprint">
    8539          *   param.onSuccess = function() {
    8540          *       // No parameter.
    8541          *   }</pre>
    8542          *   </li>
    8543          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    8544          *   <pre class="code prettyprint">
    8545          *   param.onFailure = function (param) {
    8546          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    8547          *   }</pre>
    8548          *   </li>
    8549          * </ul>
    8550          *
    8551          * @since 1.3.1
    8552          *
    8553          * @see
    8554          * <a href="hcap.key.html#.addKeyItem">hcap.key.addKeyItem()</a><br>
    8555          * <a href="hcap.key.html#.clearKeyTable">hcap.key.clearKeyTable()</a><br>
    8556          * <a href="hcap.key.html#.removeKeyItem">hcap.key.removeKeyItem()</a>
    8557          *
    8558          * @example
    8559          * hcap.key.sendKey({
    8560          *      "virtualKeycode" : hcap.key.Code.MENU,
    8561          *      "onSuccess" : function() {
    8562          *          console.log("onSuccess");
    8563          *      },
    8564          *      "onFailure" : function(f) {
    8565          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    8566          *      }
    8567          * });
    8568          *
    8569          * hcap.key.sendKey({
    8570          *      "virtualKeycode" : hcap.key.Code.NUM_1,
    8571          *      "modifier" : hcap.key.Code.CS1,
    8572          *      "onSuccess" : function() {
    8573          *          console.log("onSuccess");
    8574          *      },
    8575          *      "onFailure" : function(f) {
    8576          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    8577          *      }
    8578          * });
    8579          */
    8580         hcap.key.sendKey = function (param) {
    8581             param.virtualKeycode = hcap_key_table[param.virtualKeycode];
    8582             hcap_command("send_key", param);
    8583         };
    8584         /**
    8585          * @namespace hcap.mouse
    8586          */
    8587         hcap.mouse = {};
    8588         /**
    8589          * Checks whether the mouse pointer is visible or not.
    8590          *
    8591          * @param {Object} param
    8592          * <ul>
    8593          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    8594          *   <pre class="code prettyprint">
    8595          *   param.onSuccess = function (param) {
    8596          *       // {Boolean} param.isVisible - true if the mouse pointer is visible, else false.
    8597          *   }</pre>
    8598          *   </li>
    8599          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    8600          *   <pre class="code prettyprint">
    8601          *   param.onFailure = function (param) {
    8602          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    8603          *   }</pre>
    8604          *   </li>
    8605          * </ul>
    8606          *
    8607          * @since 1.3.1
    8608          *
    8609          * @see
    8610          * <a href="hcap.mouse.html#.setMouseVisible">hcap.mouse.setMouseVisible()</a>
    8611          *
    8612          * @example
    8613          * hcap.mouse.isMouseVisible({
    8614          *      "onSuccess" : function(s) {
    8615          *          console.log("onSuccess : mouse visible = " + s.isVisible);
    8616          *      },
    8617          *      "onFailure" : function(f) {
    8618          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    8619          *      }
    8620          * });
    8621          */
    8622         hcap.mouse.isMouseVisible = function (param) {
    8623             hcap_command("get_mouse_visible", param);
    8624         };
    8625         /**
    8626          * Sets the mouse visibility.
    8627          *
    8628          * @param {Object} param
    8629          * <ul>
    8630          *   <li>{Boolean} param.isVisible [Required] - true for mouse to be visible, else false.</li>
    8631          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    8632          *   <pre class="code prettyprint">
    8633          *   param.onSuccess = function() {
    8634          *       // No Parameter.
    8635          *   }</pre>
    8636          *   </li>
    8637          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    8638          *   <pre class="code prettyprint">
    8639          *   param.onFailure = function (param) {
    8640          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    8641          *   }</pre>
    8642          *   </li>
    8643          * </ul>
    8644          *
    8645          * @since 1.3.1
    8646          *
    8647          * @see
    8648          * <a href="hcap.mouse.html#.isMouseVisible">hcap.mouse.isMouseVisible()</a>
    8649          *
    8650          * @example
    8651          * hcap.mouse.setMouseVisible({
    8652          *     "isVisible" : true,
    8653          *      "onSuccess" : function() {
    8654          *          console.log("onSuccess");
    8655          *      },
    8656          *      "onFailure" : function(f) {
    8657          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    8658          *      }
    8659          * });
    8660          */
    8661         hcap.mouse.setMouseVisible = function (param) {
    8662             hcap_command("set_mouse_visible", param);
    8663         };
    8664         /**
    8665          * Checks whether the pointer of pointing devices (MMR) is on or off.<br>
    8666          * Mouse visibility APIs (hcap.mouse.isMouseVisible, hcap.mouse.setMouseVisible) are for virtual arrow cursor of HCAP browser handled by RCU in the environment physical pointing devices are not support.<br>
    8667          * But pointer APIs (hcap.mouse.isPointerOn, hcap.mouse.setPointerOn) are for real mouse pointer of physical pointing devices.<br>
    8668          *
    8669          * @param {Object} param
    8670          * <ul>
    8671          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    8672          *   <pre class="code prettyprint">
    8673          *   param.onSuccess = function (param) {
    8674          *       // {Boolean} param.isOn - true if the pointer is on, else false.
    8675          *   }</pre>
    8676          *   </li>
    8677          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    8678          *   <pre class="code prettyprint">
    8679          *   param.onFailure = function (param) {
    8680          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    8681          *   }</pre>
    8682          *   </li>
    8683          * </ul>
    8684          *
    8685          * @since 1.19.0
    8686          *
    8687          * @see
    8688          * <a href="hcap.mouse.html#.setPointerOn">hcap.mouse.setPointerOn()</a>
    8689          * <a href="hcap.mouse.html#.getPointerPosition">hcap.mouse.getPointerPosition()</a>
    8690          * <a href="hcap.mouse.html#.setPointerPosition">hcap.mouse.setPointerPosition()</a>
    8691          * <a href="hcap.mouse.html#.clickPointer">hcap.mouse.clickPointer()</a>
    8692          *
    8693          * @example
    8694          * hcap.mouse.isPointerOn({
    8695          *      "onSuccess" : function(s) {
    8696          *          console.log("onSuccess : pointer on = " + s.isOn);
    8697          *      },
    8698          *      "onFailure" : function(f) {
    8699          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    8700          *      }
    8701          * });
    8702          */
    8703         hcap.mouse.isPointerOn = function (param) {
    8704             hcap_command("is_pointer_on", param);
    8705         };
    8706         /**
    8707          * Switches on the pointer of pointing devices (MMR) or off.
    8708          *
    8709          * @param {Object} param
    8710          * <ul>
    8711          *   <li>{Boolean} param.isOn [Required] - true for the pointer to be on, else false.</li>
    8712          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    8713          *   <pre class="code prettyprint">
    8714          *   param.onSuccess = function() {
    8715          *       // No Parameter.
    8716          *   }</pre>
    8717          *   </li>
    8718          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    8719          *   <pre class="code prettyprint">
    8720          *   param.onFailure = function (param) {
    8721          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    8722          *   }</pre>
    8723          *   </li>
    8724          * </ul>
    8725          *
    8726          * @since 1.19.0
    8727          *
    8728          * @see
    8729          * <a href="hcap.mouse.html#.isPointerOn">hcap.mouse.isPointerOn()</a>
    8730          * <a href="hcap.mouse.html#.getPointerPosition">hcap.mouse.getPointerPosition()</a>
    8731          * <a href="hcap.mouse.html#.setPointerPosition">hcap.mouse.setPointerPosition()</a>
    8732          * <a href="hcap.mouse.html#.clickPointer">hcap.mouse.clickPointer()</a>
    8733          *
    8734          * @example
    8735          * hcap.mouse.setPointerOn({
    8736          *     "isOn" : true,
    8737          *      "onSuccess" : function() {
    8738          *          console.log("onSuccess");
    8739          *      },
    8740          *      "onFailure" : function(f) {
    8741          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    8742          *      }
    8743          * });
    8744          */
    8745         hcap.mouse.setPointerOn = function (param) {
    8746             hcap_command("set_pointer_on", param);
    8747         };
    8748         /**
    8749          * Gets the pointer position of pointing devices (MMR).<br>
    8750          * The position is the coordinate in the HCAP OSD resolution (Property "display_resolution").
    8751          *
    8752          * @param {Object} param
    8753          * <ul>
    8754          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    8755          *   <pre class="code prettyprint">
    8756          *   param.onSuccess = function (param) {
    8757          *       // {Number} param.x - X coordiate of the pointer.
    8758          *       // {Number} param.y - Y coordiate of the pointer.
    8759          *   }</pre>
    8760          *   </li>
    8761          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    8762          *   <pre class="code prettyprint">
    8763          *   param.onFailure = function (param) {
    8764          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    8765          *   }</pre>
    8766          *   </li>
    8767          * </ul>
    8768          *
    8769          * @since 1.20.0
    8770          *
    8771          * @see
    8772          * <a href="hcap.mouse.html#.isPointerOn">hcap.mouse.isPointerOn()</a>
    8773          * <a href="hcap.mouse.html#.setPointerOn">hcap.mouse.setPointerOn()</a>
    8774          * <a href="hcap.mouse.html#.setPointerPosition">hcap.mouse.setPointerPosition()</a>
    8775          * <a href="hcap.mouse.html#.clickPointer">hcap.mouse.clickPointer()</a>
    8776          *
    8777          * @example
    8778          * hcap.mouse.getPointerPosition({
    8779          *      "onSuccess" : function(s) {
    8780          *          console.log("onSuccess : pointer position (" + s.x + "," + s.y + ")");
    8781          *      },
    8782          *      "onFailure" : function(f) {
    8783          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    8784          *      }
    8785          * });
    8786          */
    8787         hcap.mouse.getPointerPosition = function (param) {
    8788             hcap_command("get_pointer_position", param);
    8789         };
    8790         /**
    8791          * Sets the pointer position of pointing devices (MMR).<br>
    8792          * The position is the coordinate in the HCAP OSD resolution (Property "display_resolution").
    8793          *
    8794          * @param {Object} param
    8795          * <ul>
    8796          *   <li>{Number} param.x [Required] - X coordiate of the pointer.</li>
    8797          *   <li>{Number} param.y [Required] - Y coordiate of the pointer.</li>
    8798          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    8799          *   <pre class="code prettyprint">
    8800          *   param.onSuccess = function() {
    8801          *       // No Parameter.
    8802          *   }</pre>
    8803          *   </li>
    8804          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    8805          *   <pre class="code prettyprint">
    8806          *   param.onFailure = function (param) {
    8807          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    8808          *   }</pre>
    8809          *   </li>
    8810          * </ul>
    8811          *
    8812          * @since 1.20.0
    8813          *
    8814          * @see
    8815          * <a href="hcap.mouse.html#.isPointerOn">hcap.mouse.isPointerOn()</a>
    8816          * <a href="hcap.mouse.html#.setPointerOn">hcap.mouse.setPointerOn()</a>
    8817          * <a href="hcap.mouse.html#.getPointerPosition">hcap.mouse.getPointerPosition()</a>
    8818          * <a href="hcap.mouse.html#.clickPointer">hcap.mouse.clickPointer()</a>
    8819          *
    8820          * @example
    8821          * hcap.mouse.setPointerPosition({
    8822          *      "x" : 200,
    8823          *      "y" : 100,
    8824          *      "onSuccess" : function() {
    8825          *          console.log("onSuccess");
    8826          *      },
    8827          *      "onFailure" : function(f) {
    8828          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    8829          *      }
    8830          * });
    8831          */
    8832         hcap.mouse.setPointerPosition = function (param) {
    8833             hcap_command("set_pointer_position", param);
    8834         };
    8835         /**
    8836          * Clicks the pointer of pointing devices (MMR) in the current position.
    8837          *
    8838          * @param {Object} param
    8839          * <ul>
    8840          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    8841          *   <pre class="code prettyprint">
    8842          *   param.onSuccess = function() {
    8843          *       // No Parameter.
    8844          *   }</pre>
    8845          *   </li>
    8846          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    8847          *   <pre class="code prettyprint">
    8848          *   param.onFailure = function (param) {
    8849          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    8850          *   }</pre>
    8851          *   </li>
    8852          * </ul>
    8853          *
    8854          * @since 1.20.0
    8855          *
    8856          * @see
    8857          * <a href="hcap.mouse.html#.isPointerOn">hcap.mouse.isPointerOn()</a>
    8858          * <a href="hcap.mouse.html#.setPointerOn">hcap.mouse.setPointerOn()</a>
    8859          * <a href="hcap.mouse.html#.getPointerPosition">hcap.mouse.getPointerPosition()</a>
    8860          * <a href="hcap.mouse.html#.setPointerPosition">hcap.mouse.setPointerPosition()</a>
    8861          *
    8862          * @example
    8863          * hcap.mouse.clickPointer({
    8864          *      "onSuccess" : function() {
    8865          *          console.log("onSuccess");
    8866          *      },
    8867          *      "onFailure" : function(f) {
    8868          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    8869          *      }
    8870          * });
    8871          */
    8872         hcap.mouse.clickPointer = function (param) {
    8873             hcap_command("click_pointer", param);
    8874         };
    8875         /**
    8876          * Sets the pointer size of pointing devices (MMR).
    8877          *
    8878          * @param {Object} param
    8879          * <ul>
    8880          *   <li>{Number} param.size [Required] - 1 for small size, 2 for middle size and 3 for large size.</li>
    8881          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    8882          *   <pre class="code prettyprint">
    8883          *   param.onSuccess = function() {
    8884          *       // No Parameter.
    8885          *   }</pre>
    8886          *   </li>
    8887          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    8888          *   <pre class="code prettyprint">
    8889          *   param.onFailure = function (param) {
    8890          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    8891          *   }</pre>
    8892          *   </li>
    8893          * </ul>
    8894          *
    8895          * @since 1.19.0
    8896          *
    8897          * @example
    8898          * hcap.mouse.setPointerSize({
    8899          *     "size" : 2,
    8900          *      "onSuccess" : function() {
    8901          *          console.log("onSuccess");
    8902          *      },
    8903          *      "onFailure" : function(f) {
    8904          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    8905          *      }
    8906          * });
    8907          */
    8908         hcap.mouse.setPointerSize = function (param) {
    8909             hcap_command("set_pointer_size", param);
    8910         };
    8911         /**
    8912          * @namespace hcap.property
    8913          */
    8914         hcap.property = {};
    8915         /**
    8916          * Gets the current hotel mode settings.
    8917          *
    8918          * @param {Object} param
    8919          * <ul>
    8920          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    8921          *   <pre class="code prettyprint">
    8922          *   param.onSuccess = function (param) {
    8923          *       // {String} param.hotelMode - current hotel mode settings in JSON type.
    8924          *       // '{
    8925          *       //     "enable":{String}, // Whether to enable LG Hotel Mode operation or not. Default is "off" or not.
    8926          *       //                        // If "enable" is "on",
    8927          *       //                        // 1) Menu - General - "Reset to Initial Settings" and "Home/Store Mode"
    8928          *       //                        //    cannot be changed.
    8929          *       //                        // 2) Scheduled recording is disabled. Guide menu - "Information",
    8930          *       //                        //    "Manual Timer" and "Play Key" are disappeared and are not worked.
    8931          *       //                        //    DVR-related progress bar, REC key and Play key are not worked.
    8932          *       //                        // 3) External devices connected to TV (ex. Simplink) are worked according
    8933          *       //                        //    to the settings of "Hotel Mode Operation" - "Aux Source Settings" and
    8934          *       //                        //    "Input Source Change".
    8935          *       //                        // 4) Web browser is started in privacy mode. (Web history is not stored)
    8936          *       //                        // 5) The functionality of LG Connect Apps is terminated.
    8937          *       //                        // 6) Voice Recognition (Speak to TV) and Motion Gesture are not worked.
    8938          *       //                        // 7) ECO (Energy Saving), 15 Min Auto Off and 2 Hour Off (On Timer) are
    8939          *       //                        //    deactivated.
    8940          *       //                        // 8) When Hote Mode is On in DC On, the settings of ECO, 15 Min Auto Off
    8941          *       //                        //    and 2 Hour Off (On Timer) are restored. Then if Hotel Mode is Off
    8942          *       //                        //    after DC Off and DC On, previous settings are removed and default
    8943          *       //                        //    values are restored.
    8944          *       //                        // 9) User Guide key is not worked.
    8945          *       //         "on" // enable hotel mode.
    8946          *       //         "off" // disable hotel mode.
    8947          *       //     "settings":{Object} { // Setting values to be applied when "enable" is "on".
    8948          *       //         "powerOnStatus":{String}, // Determine the TV status when main power (AC) is on. Default is
    8949          *       //                                   // "std".
    8950          *       //             "pwr" // make TV power-on status when AC is on. To make sure TV is able to be turned on,
    8951          *       //                   // if both "irOperation" and "localKeyOperation" are "blockAll",
    8952          *       //                   // settings.powerOnStatus will be changed to "pwr" automatically.
    8953          *       //             "std" // make TV stand-by status when AC is on. If "enable" is changed to "on",
    8954          *       //                   // settings.powerOnStatus will be changed to "std" automatically.
    8955          *       //             "lst" // make TV last power status when AC is on. AC is off in power-on status, AC is on,
    8956          *       //                   // and then TV will go back to power-on status. AC is off in stand-by status, AC
    8957          *       //                   // is on, and then TV will be in stand-by status.
    8958          *       //         "volume":{Object}, { // Volume settings.
    8959          *       //             "enable":{String}, // Whether to enable volume settings such as "Start Volume",
    8960          *       //                                // "Maximum Volume" and "Minimum Volume" or not. Default is "off".
    8961          *       //                 "on" // enable volume settings.
    8962          *       //                 "off" // disable volume settings.
    8963          *       //             "settings":{Object}, { // Setting values to be applied when settings.volume.enable is "on".
    8964          *       //                 "startVolume":{Object}, { // Start volume when TV is turned on.
    8965          *       //                     "enable":{String}, // Whether to enable start volume or not. Default is "off".
    8966          *       //                         "on" // enable start volume.
    8967          *       //                         "off" // disable start volume.
    8968          *       //                     "level":{Number} // start volume level (0 <= Min <= Start <= Max <= 100).
    8969          *       //                                      // Default is 0. This is worked when
    8970          *       //                                      // settings.volume.settings.startVolume.enable is "on". If "level"
    8971          *       //                                      // is smaller than "minimumVolume", "minimumVolume" will be the
    8972          *       //                                      // start volume level. If "level" is bigger than "maximumVolume",
    8973          *       //                                      // "maximumVolume" will be the start volume level.
    8974          *       //                                      // 'On Timer'-related volume level is fixed with "level" when
    8975          *       //                                      // 'Public Display Mode'/'Hotel Mode Operation' are enabled.
    8976          *       //                 }
    8977          *       //                 "minimumVolume":{Number}, // Minimum volume level (0 <= Min <= Start <= Max <= 100).
    8978          *       //                                           // Default is 0. Setting a volume level smaller than
    8979          *       //                                           // "minimumVolume" will be ignored. If "minimumVolume" is
    8980          *       //                                           // set to bigger than the current volume level in the mute
    8981          *       //                                           // state, mute will be disabled.
    8982          *       //                 "maximumVolume":{Number} // Maximum volume level (0 <= Min <= Start <= Max <= 100).
    8983          *       //                                          // Default is 100. Setting a volume level bigger than
    8984          *       //                                          // "maximumVolume" will be ignored. If "maximumVolume" is
    8985          *       //                                          // set to smaller than the current volume level in the mute
    8986          *       //                                          // state, mute will be disabled.
    8987          *       //             }
    8988          *       //         }
    8989          *       //         "keyManagement":{Object}, { // Settings for the management of Local/Front key and Remote
    8990          *       //                                     // Control key.
    8991          *       //             "enable":{String}, // Whether to enable IR Operation and Local Key Operation, or not.
    8992          *       //                                // Default is "off".
    8993          *       //                 "on" // enable the key management.
    8994          *       //                 "off" // disable the key management.
    8995          *       //             "settings":{Object} { // Setting values to be applied when settings.keyManagement.enable
    8996          *       //                                   // is "on".
    8997          *       //                 "irOperation":{String}, // IR (Remote Control) key management. Default is "normal".
    8998          *       //                     "normal" // block no IR key.
    8999          *       //                     "usePwrOnly" // block all IR keys except the power key and service mode keys
    9000          *       //                                  // (In-Start, In-Stop, Power-Only, ADJ, Hotel-Mode, Hotel-Mode-Ready,
    9001          *       //                                  // p-Check, S-Check, In-Time, FMode-Init, FMode-Start, FMode-AV,
    9002          *       //                                  // FMode-F1). And IR key combinations to enter Installation Menu and
    9003          *       //                                  // Special Menu (In-Start, EZ-Adjust, etc) are possible in
    9004          *       //                                  // "usePwrOnly" status.
    9005          *       //                     "blockAll" // block all IR keys except service mode keys (In-Start, In-Stop,
    9006          *       //                                // Power-Only, ADJ, Hotel-Mode, Hotel-Mode-Ready, p-Check, S-Check,
    9007          *       //                                // In-Time, FMode-Init, FMode-Start, FMode-AV, FMode-F1). And IR key
    9008          *       //                                // combinations to enter Installation Menu and Special Menu (In-Start,
    9009          *       //                                // EZ-Adjust, etc) are possible in "blockAll" status.
    9010          *       //                 "localKeyOperation":{String} // Local/Front key management. Default is "normal".
    9011          *       //                     "normal" // block no Local/Front key.
    9012          *       //                     "usePwrOnly" // block all Local/Front keys except the power key. Long press (3 secs)
    9013          *       //                                  // of the Local/Front cross key is worked as the power key.
    9014          *       //                     "blockAll" // block all Local/Front keys.
    9015          *       //             }
    9016          *       //         }
    9017          *       //         "limitedMode":{Object}, { // Settings to limit TV functionalities.
    9018          *       //             "enable":{String}, // Whether to enable settings.limitedMode.settings items or not. Default
    9019          *       //                                // is "off". If settings.limitedMode.enable is "on", Screen Remote App
    9020          *       //                                // (123/Input key in MRCU) is not worked.
    9021          *       //                 "on" // enable "limitedMode"
    9022          *       //                 "off" // disable "limitedMode"
    9023          *       //             "settings":{Object} { // Setting values to be applied when settings.limitedMode.enable is
    9024          *       //                                   // "on".
    9025          *       //                 "setupMenu":{String}, // Whether to permit to enter Setup (Channel) Menu or not.
    9026          *       //                                       // Default is "on".
    9027          *       //                     "on" // permit to enter Setup Menu.
    9028          *       //                     "off" // prohibit from entering Setup Menu. Auto Tuning is not displayed in the
    9029          *       //                           // channel change when the channel map is empty.
    9030          *       //                 "programmeChange":{String}, // Whether to permit to change the channel or not. Default
    9031          *       //                                             // is "on".
    9032          *       //                     "on" // permit to change the channel and enter the channel menu.
    9033          *       //                     "off" // prohibit from changing the channel. Channel-related keys (channel up/down,
    9034          *       //                           // number, guide, etc) channel menus (Setup Menu, etc) are disabled.
    9035          *       //                           // Setting values in the menu 'On Time'-'Programme' are fixed.
    9036          *       //                 "menuDisplay":{String}, // Whether to permit to enter the menu or not. Default is "on".
    9037          *       //                     "on" // permit to enter the menu.
    9038          *       //                     "off" // prohibit from entering the menu. But it is possible to enter Installation
    9039          *       //                           // Menu with press-and-hold of Menu key longer than 5 seconds. It is not
    9040          *       //                           // permitted MRCU (Magic Remote Control Unit) via Bluetooth to control TV.
    9041          *       //                 "osdDisplay":{String}, // Whether to display OSDs or not. Default is "on".
    9042          *       //                     "on" // display OSDs.
    9043          *       //                     "off" // All OSDs except Installation Menu, In Start Menu, Adjust and Power Only OSD
    9044          *       //                           // are not displayed. Although Volume OSD is not displayed in "osdDisplay"
    9045          *       //                           // "off", Volume OSD can be displayed with the property "volume_ui"-"1" by HCAP.
    9046          *       //                           // MRCU cannot control TV. OSD is not displayed and settings cannot be changed
    9047          *       //                           // for Ratio and Energysaving Hotkey.
    9048          *       //                 "systemProviderMode":{String} // Whether to enable System Provider Mode or not. Default
    9049          *       //                                               // is "off".
    9050          *       //                     "on" // enable System Provider Mode in which Sound (Smart Sound Mode, Sound Mode,
    9051          *       //                          // Sound Effect, Volume Mode, Sound Out, DTV Audio Setting, AV Sync Adjustment,
    9052          *       //                          // Sound Optimizer, Sound Test), Picture (Smart Picture Mode, Picture Mode
    9053          *       //                          // Settings, Energy Saving, Picture Test, 3D Picture Test, HDMI Ultra HD Deep
    9054          *       //                          // Color), Accessibility (Pointer Options, Video Description, Audio Description,
    9055          *       //                          // Audio Description Volume, Audio Guidance, Enlarge Focused Image, Hard of
    9056          *       //                          // Hearing, Teletext), General (Language, Location, Time & Date, Timers/Auto
    9057          *       //                          // Power Off, Alarm/Timer Power On/Off, Standby Light, Home/Store Mode, Set ID,
    9058          *       //                          // SIMPLINK, Reset to Initial Settings), Programmes (Programme Tuning,
    9059          *       //                          // Programme Manager, Copy Programmes, Channel Plus, My Channels) are blocked.
    9060          *       //                     "off" // disable System Provider Mode.
    9061          *       //             }
    9062          *       //         }
    9063          *       //         "dtvProgrammeUpdate":{String}, { // Whether to update DTV channels automatically or not. Default
    9064          *       //                                          // is "manual".
    9065          *       //             "auto" // update the channel map according to the DTV channel stream.
    9066          *       //             "manual" // maintain the channel map even though DTV channel information in the channel
    9067          *       //                      // stream is changed.
    9068          *       //         }
    9069          *       //         "powerOnDefault":{Object}, { // Settings for power-on.
    9070          *       //             "enable":{String}, // Whether to enable settings for the input, programme and AV settings
    9071          *       //                                // when TV is turned on (DC On) from AC On or stand-by, or not. Default
    9072          *       //                                // is "off". If HCAP start channel is set, settings.powerOnDefault.enable
    9073          *       //                                // will be "off" automatically, and then even though
    9074          *       //                                // settings.powerOnDefault.enable is set to "on" again, HCAP start
    9075          *       //                                // channel has higher priority than "powerOnDefault" settings.
    9076          *       //                 "on" // enable power-on settings.
    9077          *       //                 "off" // disable power-on settings.
    9078          *       //             "settings":{Object} { // Setting values to be applied when settings.powerOnDefault.enable
    9079          *       //                                   // is "on".
    9080          *       //                 "input":{String}, // Change to the specified input source in the power-on. Default
    9081          *       //                                   // is "off".
    9082          *       //                     "off" // "input" is disabled.
    9083          *       //                     "dtv" // Digital TV
    9084          *       //                     "atv" // Analog TV
    9085          *       //                     "catv" // Cable TV
    9086          *       //                     "cadtv" // Cable DTV
    9087          *       //                     "ca-radio" // Cable Radio
    9088          *       //                     "sdtv" // Satellite DTV
    9089          *       //                     "s-radio" // Satellite Radio
    9090          *       //                     "scart" // SCART
    9091          *       //                     "av1" // AV 1
    9092          *       //                     "av2" // AV 2
    9093          *       //                     "av3" // AV 3
    9094          *       //                     "rgb" // RGB
    9095          *       //                     "comp1" // Component 1
    9096          *       //                     "comp2" // Component 2
    9097          *       //                     "comp3" // Component 3
    9098          *       //                     "hdmi1" // HDMI 1
    9099          *       //                     "hdmi2" // HDMI 2
    9100          *       //                     "hdmi3" // HDMI 3
    9101          *       //                     "hdmi4" // HDMI 4
    9102          *       //                 "programme":{String}, // If the external input in the power-on is TV, specify the
    9103          *       //                                       // programme in the power-on.
    9104          *       //                 "avSetting":{String}, // Audio/Video setting. Default is "off".
    9105          *       //                     "on" // restore internal Audio/Video setting values. The internal setting
    9106          *       //                          // values are not exposed.
    9107          *       //                     "off" // disable internal Audio/Video settings in the power-on.
    9108          *       //                 "aspectRatio":{String} // Aspect Ratio setting. Default is "disable".
    9109          *       //                     "disable" // The last aspect ratio setting.
    9110          *       //                     "original" // Automatic aspect ratio.
    9111          *       //                     "4:3" // 4:3 aspect ratio.
    9112          *       //                     "16:9" // 16:9 aspect ratio.
    9113          *       //             }
    9114          *       //         }
    9115          *       //         "auxSourceSetting":{Object}, { // Auxiliary source settings
    9116          *       //             "enable":{String}, Whether to enable aux source settings or not. Default is "off".
    9117          *       //                 "on" // enable aux source settings. Only selected aux sources are enabled.
    9118          *       //                 "off" // disable aux source setting. All available aux sources are enabled.
    9119          *       //             "settings":{Array} [ // Setting values to be applied when settings.auxSourceSetting.enable
    9120          *       //                                  // is "on".
    9121          *       //                 "av1" // AV 1
    9122          *       //                 "av2" // AV 2
    9123          *       //                 "av3" // AV 3
    9124          *       //                 "rgb" // RGB
    9125          *       //                 "comp1" // Component 1
    9126          *       //                 "comp2" // Component 2
    9127          *       //                 "comp3" // Component 3
    9128          *       //                 "hdmi1" // HDMI 1
    9129          *       //                 "hdmi2" // HDMI 2
    9130          *       //                 "hdmi3" // HDMI 3
    9131          *       //                 "hdmi4" // HDMI 4
    9132          *       //             ]
    9133          *       //         }
    9134          *       //         "powerManagement":{String}, // TV is turned off if there is no key input from the local,
    9135          *       //                                     // front or remote for the designated time since the last key
    9136          *       //                                     // input. Default is "off".
    9137          *       //             "off" // disable "powerManagement".
    9138          *       //             "1hour" // TV is turned off after 1 hour.
    9139          *       //             "2hours" // TV is turned off after 2 hours.
    9140          *       //             "3hours" // TV is turned off after 3 hours.
    9141          *       //             "4hours" // TV is turned off after 4 hours.
    9142          *       //             "5hours" // TV is turned off after 5 hours.
    9143          *       //             "6hours" // TV is turned off after 6 hours.
    9144          *       //             "7hours" // TV is turned off after 7 hours.
    9145          *       //         "radioVideoBlank":{Object} // Settings for the video of DVB analog radio channels.
    9146          *       //             "enable":{String}, // Whether to enable settings for the mute of the radio programme video.
    9147          *       //                                // Default is "off".
    9148          *       //                 "on" // enable the radio video mute setting.
    9149          *       //                 "off" // disable the radio video mute setting.
    9150          *       //             "settings":{Object} { // Setting values to be applied when settings.radioVideoBlank.enable
    9151          *       //                                   // is "on".
    9152          *       //                 "startOfRadioProgramme":{Number}, // 1 ~ 199. Default is 1. Make the
    9153          *       //                                                   // "countOfRadioProgramme" radio videos blank from
    9154          *       //                                                   // the channel of "startOfProgramme".
    9155          *       //                 "countOfRadioProgramme":{Number} // 0 ~ 10. Default is 1. "startOfRadioProgramme" +
    9156          *       //                                                  // "countOfRadioProgramme" <= Max of the programme
    9157          *       //                                                  // number + 1. 0 means that none of radio programmes
    9158          *       //                                                  // will not be video-mute.
    9159          *       //     }
    9160          *       // }'
    9161          *   }</pre>
    9162          *   </li>
    9163          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    9164          *   <pre class="code prettyprint">
    9165          *   param.onFailure = function (param) {
    9166          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    9167          *   }</pre>
    9168          *   </li>
    9169          * </ul>
    9170          *
    9171          * @see
    9172          * <a href="hcap.property.html#.setHotelMode">hcap.property.setHotelMode()</a><br>
    9173          *
    9174          * @since 1.20.0
    9175          *
    9176          * @example
    9177          * hcap.property.getHotelMode({
    9178          *      "onSuccess" : function(s) {
    9179          *          console.log("onSuccess : hotel mode settings = " + s.hotelMode);
    9180          *      },
    9181          *      "onFailure" : function(f) {
    9182          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    9183          *      }
    9184          * });
    9185          */
    9186         hcap.property.getHotelMode = function (param) {
    9187             hcap_command("get_hotel_mode", param);
    9188         };
    9189         /**
    9190          * Sets the hotel mode.<br>
    9191          * If this is called while Installation Menu is being shown, Installation Menu will be destroyed automatically.<br>
    9192          * Reboot is strongly recommended after this call is succeeded because some changes in hotel mode requires reboot to be applied.
    9193          *
    9194          * @param {Object} param
    9195          * <ul>
    9196          *   <li>{Number} param.hotelMode [Required] - hotel mode settings to set. Now that hotelMode must have all items in the success callback parameter hotelMode of <a href="hcap.property.html#.getHotelMode">hcap.property.getHotelMode()</a>, we're strongly recommend to change the setting values based on the result of <a href="hcap.property.html#.getHotelMode">hcap.property.getHotelMode()</a>. If it misses some items, it'll be failed to set the hotel mode.</li>
    9197          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    9198          *   <pre class="code prettyprint">
    9199          *   param.onSuccess = function() {
    9200          *       // No Parameter.
    9201          *   }</pre>
    9202          *   </li>
    9203          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    9204          *   <pre class="code prettyprint">
    9205          *   param.onFailure = function (param) {
    9206          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    9207          *   }</pre>
    9208          *   </li>
    9209          * </ul>
    9210          *
    9211          * @see
    9212          * <a href="hcap.property.html#.getHotelMode">hcap.property.getHotelMode()</a><br>
    9213          *
    9214          * @since 1.20.0
    9215          *
    9216          * @example
    9217          * hcap.property.setHotelMode({
    9218          *      "hotelMode" : "{ \
    9219          *          'enable':'off', \
    9220          *          'settings':{ \
    9221          *              'powerOnStatus':'std', \
    9222          *              'volume':{ \
    9223          *                  'enable':'off', \
    9224          *                  'settings':{ \
    9225          *                      'startVolume':{ \
    9226          *                          'enable':'off', \
    9227          *                          'level':0 \
    9228          *                      }, \
    9229          *                      'minimumVolume':0, \
    9230          *                      'maximumVolume':100 \
    9231          *                  } \
    9232          *              }, \
    9233          *              'keyManagement':{ \
    9234          *                  'enable':'off', \
    9235          *                  'settings':{ \
    9236          *                      'irOperation':'normal', \
    9237          *                      'localKeyOperation':'normal' \
    9238          *                  } \
    9239          *              }, \
    9240          *              'limitedMode':{ \
    9241          *                  'enable':'off', \
    9242          *                  'settings':{ \
    9243          *                      'setupMenu':'on', \
    9244          *                      'programmeChange':'on', \
    9245          *                      'menuDisplay':'on', \
    9246          *                      'osdDisplay':'on', \
    9247          *                      'systemProviderMode':'off' \
    9248          *                  } \
    9249          *              }, \
    9250          *              'dtvProgrammeUpdate':'manual', \
    9251          *              'powerOnDefault': { \
    9252          *                  'enable':'off', \
    9253          *                  'settings':{ \
    9254          *                      'input':'off', \
    9255          *                      'programme':'2', \
    9256          *                      'avSetting':'off', \
    9257          *                      'aspectRatio':'disable' \
    9258          *                  } \
    9259          *              }, \
    9260          *              'auxSourceSetting':{ \
    9261          *                  'enable':'off', \
    9262          *                  'settings':[ \
    9263          *                      'av1', \
    9264          *                      'comp1', \
    9265          *                      'hdmi1', \
    9266          *                      'hdmi2' \
    9267          *                  ] \
    9268          *              }, \
    9269          *              'powerManagement':'off', \
    9270          *              'radioVideoBlank':{ \
    9271          *                  'enable':'off', \
    9272          *                  'startOfRadioProgramme':1, \
    9273          *                  'countOfRadioProgramme':1 \
    9274          *              } \
    9275          *          } \
    9276          *      }",
    9277          *      "onSuccess" : function() {
    9278          *          console.log("onSuccess");
    9279          *      },
    9280          *      "onFailure" : function(f) {
    9281          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    9282          *      }
    9283          * });
    9284          */
    9285         hcap.property.setHotelMode = function (param) {
    9286             hcap_command("set_hotel_mode", param);
    9287         };
    9288         /**
    9289          * @namespace hcap.property.PicturePropertyKey
    9290          */
    9291         hcap.property.PicturePropertyKey = {
    9292             /**
    9293              * Backlight (0 ~ 100)
    9294              * @since 1.6.0
    9295              * @constant
    9296              */
    9297             BACKLIGHT : 1,
    9298             /**
    9299              * Contrast (0 ~ 100)
    9300              * @since 1.6.0
    9301              * @constant
    9302              */
    9303             CONTRAST : 2,
    9304             /**
    9305              * Brightness (0 ~ 100)
    9306              * @since 1.6.0
    9307              * @constant
    9308              */
    9309             BRIGHTNESS : 3,
    9310             /**
    9311              * Sharpness (0 ~ 100)
    9312              * @since 1.6.0
    9313              * @constant
    9314              */
    9315             SHARPNESS : 4,
    9316             /**
    9317              * Color (0 ~ 100), 0 : Black
    9318              * @since 1.6.0
    9319              * @constant
    9320              */
    9321             COLOR : 5,
    9322             /**
    9323              * Tint (0 ~ 100), 0 : Red, 100 : Green
    9324              * @since 1.6.0
    9325              * @constant
    9326              */
    9327             TINT : 6,
    9328             /**
    9329              * Color Temperature (0 ~ 100), 0 : Warm, 100 : Cold
    9330              * @since 1.6.0
    9331              * @constant
    9332              */
    9333             COLOR_TEMPERATURE : 7,
    9334             /**
    9335              * Aspect Ratio. Supported values depend on TV model.<br>
    9336              * <ul>
    9337              *   <li>1 : Normal Screen (4:3), Resizes images to the previous standard 4:3.</li>
    9338              *   <li>2 : Wide (16:9), Resizes images to fit the screen width.</li>
    9339              *   <li>3 : Horizon (Spectacle), Full Wide,  When TV receives the wide screen signal, it will let you adjust the picture horizontally or vertically, in a linear proportion, to fill the entire screen fully. 4:3 and 14:9 video are supported in full screen without any video distortion through DTV input. In Analog/DTV/AV/Scart mode, Full Wide is available.</li>
    9340              *   <li>4 : Zoom, Resizes the image to fit the screen width. The top and bottom parts of the image may be cut off.</li>
    9341              *   <li>6 : Original, Auto (Set by program), When your TV receives a wide screen signal, it will automatically change to the broadcasted picture format.</li>
    9342              *   <li>7 : 14:9, You can see the picture format of 14:9 or the general TV program in the 14:9 mode. The 14:9 screen is displayed in the same way as in 4:3, but is moved up or down.</li>
    9343              *   <li>9 : Just Scan, Displays video images in the original size without removing parts of the edge of the image.</li>
    9344              *   <li>10 : Cinema Zoom1, Choose Cinema Zoom when you want to enlarge the picture incorrect proportion.</li>
    9345              * </ul>
    9346              *
    9347              * @since 1.6.0
    9348              * @constant
    9349              */
    9350             ASPECT_RATIO : 8
    9351         };
    9352         /**
    9353          * Gets the picture property value for the current media input source.
    9354          *
    9355          * @param {Object} param
    9356          * <ul>
    9357          *   <li>{Number} param.key [Required] - picture property key type. Please refer to <a href="hcap.property.PicturePropertyKey.html">hcap.property.PicturePropertyKey</a>.</li>
    9358          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    9359          *   <pre class="code prettyprint">
    9360          *   param.onSuccess = function (param) {
    9361          *       // {Number} param.value - picture property value of the requested property key. Please refer to <a href="hcap.property.PicturePropertyKey.html">hcap.property.PicturePropertyKey</a>.
    9362          *   }</pre>
    9363          *   </li>
    9364          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    9365          *   <pre class="code prettyprint">
    9366          *   param.onFailure = function (param) {
    9367          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    9368          *   }</pre>
    9369          *   </li>
    9370          * </ul>
    9371          *
    9372          * @see
    9373          * <a href="hcap.property.PicturePropertyKey.html#.BACKLIGHT">hcap.property.PicturePropertyKey.BACKLIGHT</a><br>
    9374          * <a href="hcap.property.PicturePropertyKey.html#.CONTRAST">hcap.property.PicturePropertyKey.CONTRAST</a><br>
    9375          * <a href="hcap.property.PicturePropertyKey.html#.BRIGHTNESS">hcap.property.PicturePropertyKey.BRIGHTNESS</a><br>
    9376          * <a href="hcap.property.PicturePropertyKey.html#.SHARPNESS">hcap.property.PicturePropertyKey.SHARPNESS</a><br>
    9377          * <a href="hcap.property.PicturePropertyKey.html#.COLOR">hcap.property.PicturePropertyKey.COLOR</a><br>
    9378          * <a href="hcap.property.PicturePropertyKey.html#.TINT">hcap.property.PicturePropertyKey.TINT</a><br>
    9379          * <a href="hcap.property.PicturePropertyKey.html#.COLOR_TEMPERATURE">hcap.property.PicturePropertyKey.COLOR_TEMPERATURE</a><br>
    9380          * <a href="hcap.property.PicturePropertyKey.html#.ASPECT_RATIO">hcap.property.PicturePropertyKey.ASPECT_RATIO</a><br>
    9381          * <a href="hcap.property.html#.setPictureProperty">hcap.property.setPictureProperty()</a><br>
    9382          *
    9383          * @since 1.6.0
    9384          *
    9385          * @example
    9386          * hcap.property.getPictureProperty({
    9387          *      "key" : hcap.property.PicturePropertyKey.COLOR_TEMPERATURE,
    9388          *      "onSuccess" : function(s) {
    9389          *          console.log("onSuccess : property value = " + s.value);
    9390          *      },
    9391          *      "onFailure" : function(f) {
    9392          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    9393          *      }
    9394          * });
    9395          */
    9396         hcap.property.getPictureProperty = function (param) {
    9397             hcap_command("get_picture_property", param);
    9398         };
    9399         /**
    9400          * Sets the picture property value for the current media input source.
    9401          *
    9402          * @param {Object} param
    9403          * <ul>
    9404          *   <li>{Number} param.key [Required] - picture property key type. Please refer to <a href="hcap.property.PicturePropertyKey.html">hcap.property.PicturePropertyKey</a>.</li>
    9405          *   <li>{Number} param.value [Required] - picture property value of the requested property key. Please refer to <a href="hcap.property.PicturePropertyKey.html">hcap.property.PicturePropertyKey</a>.</li>
    9406          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    9407          *   <pre class="code prettyprint">
    9408          *   param.onSuccess = function() {
    9409          *       // No Parameter.
    9410          *   }</pre>
    9411          *   </li>
    9412          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    9413          *   <pre class="code prettyprint">
    9414          *   param.onFailure = function (param) {
    9415          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    9416          *   }</pre>
    9417          *   </li>
    9418          * </ul>
    9419          *
    9420          * @see
    9421          * <a href="hcap.property.PicturePropertyKey.html#.BACKLIGHT">hcap.property.PicturePropertyKey.BACKLIGHT</a><br>
    9422          * <a href="hcap.property.PicturePropertyKey.html#.CONTRAST">hcap.property.PicturePropertyKey.CONTRAST</a><br>
    9423          * <a href="hcap.property.PicturePropertyKey.html#.BRIGHTNESS">hcap.property.PicturePropertyKey.BRIGHTNESS</a><br>
    9424          * <a href="hcap.property.PicturePropertyKey.html#.SHARPNESS">hcap.property.PicturePropertyKey.SHARPNESS</a><br>
    9425          * <a href="hcap.property.PicturePropertyKey.html#.COLOR">hcap.property.PicturePropertyKey.COLOR</a><br>
    9426          * <a href="hcap.property.PicturePropertyKey.html#.TINT">hcap.property.PicturePropertyKey.TINT</a><br>
    9427          * <a href="hcap.property.PicturePropertyKey.html#.COLOR_TEMPERATURE">hcap.property.PicturePropertyKey.COLOR_TEMPERATURE</a><br>
    9428          * <a href="hcap.property.PicturePropertyKey.html#.ASPECT_RATIO">hcap.property.PicturePropertyKey.ASPECT_RATIO</a><br>
    9429          * <a href="hcap.property.html#.getPictureProperty">hcap.property.getPictureProperty()</a><br>
    9430          *
    9431          * @since 1.6.0
    9432          *
    9433          * @example
    9434          * hcap.property.setPictureProperty({
    9435          *      "key" : hcap.property.PicturePropertyKey.COLOR_TEMPERATURE,
    9436          *      "value" : 10,
    9437          *      "onSuccess" : function() {
    9438          *          console.log("onSuccess");
    9439          *      },
    9440          *      "onFailure" : function(f) {
    9441          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    9442          *      }
    9443          * });
    9444          */
    9445         hcap.property.setPictureProperty = function (param) {
    9446             hcap_command("set_picture_property", param);
    9447         };
    9448         /**
    9449          * @namespace hcap.property.PictureMode
    9450          */
    9451         hcap.property.PictureMode = {
    9452             /**
    9453              * Picture Mode : Vivid
    9454              * @since 1.20.0
    9455              * @constant
    9456              */
    9457             VIVID : 1,
    9458             /**
    9459              * Picture Mode : Standard
    9460              * @since 1.20.0
    9461              * @constant
    9462              */
    9463             STANDARD : 2,
    9464             /**
    9465              * Picture Mode : Eco
    9466              * @since 1.20.0
    9467              * @constant
    9468              */
    9469             ECO : 3,
    9470             /**
    9471              * Picture Mode : Cinema
    9472              * @since 1.20.0
    9473              * @constant
    9474              */
    9475             CINEMA : 4,
    9476             /**
    9477              * Picture Mode : Sports
    9478              * @since 1.20.0
    9479              * @constant
    9480              */
    9481             SPORTS : 5,
    9482             /**
    9483              * Picture Mode : Game
    9484              * @since 1.20.0
    9485              * @constant
    9486              */
    9487             GAME : 6,
    9488             /**
    9489              * Picture Mode : Photo
    9490              * @since 1.20.0
    9491              * @constant
    9492              */
    9493             PHOTO : 7,
    9494             /**
    9495              * Picture Mode : Expert (Bright Room)
    9496              * @since 1.20.0
    9497              * @constant
    9498              */
    9499             EXPERT_BRIGHT_ROOM : 8,
    9500             /**
    9501              * Picture Mode : Expert (Dark Room)
    9502              * @since 1.20.0
    9503              * @constant
    9504              */
    9505             EXPERT_DARK_ROOM : 9
    9506         };
    9507         /**
    9508          * Gets the current picture mode.
    9509          *
    9510          * @param {Object} param
    9511          * <ul>
    9512          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    9513          *   <pre class="code prettyprint">
    9514          *   param.onSuccess = function (param) {
    9515          *       // {Number} param.mode - picture mode. Please refer to <a href="hcap.property.PictureMode.html">hcap.property.PictureMode</a>.
    9516          *       // {Boolean} param.isUser - false when all picture property values are default in the picture mode, otherwise true.
    9517          *   }</pre>
    9518          *   </li>
    9519          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    9520          *   <pre class="code prettyprint">
    9521          *   param.onFailure = function (param) {
    9522          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    9523          *   }</pre>
    9524          *   </li>
    9525          * </ul>
    9526          *
    9527          * @see
    9528          * <a href="hcap.property.PictureMode.html#.VIVID">hcap.property.PictureMode.VIVID</a><br>
    9529          * <a href="hcap.property.PictureMode.html#.STANDARD">hcap.property.PictureMode.STANDARD</a><br>
    9530          * <a href="hcap.property.PictureMode.html#.ECO">hcap.property.PictureMode.ECO</a><br>
    9531          * <a href="hcap.property.PictureMode.html#.CINEMA">hcap.property.PictureMode.CINEMA</a><br>
    9532          * <a href="hcap.property.PictureMode.html#.SPORTS">hcap.property.PictureMode.SPORTS</a><br>
    9533          * <a href="hcap.property.PictureMode.html#.GAME">hcap.property.PictureMode.GAME</a><br>
    9534          * <a href="hcap.property.PictureMode.html#.PHOTO">hcap.property.PictureMode.PHOTO</a><br>
    9535          * <a href="hcap.property.PictureMode.html#.EXPERT_BRIGHT_ROOM">hcap.property.PictureMode.EXPERT_BRIGHT_ROOM</a><br>
    9536          * <a href="hcap.property.PictureMode.html#.EXPERT_DARK_ROOM">hcap.property.PictureMode.EXPERT_DARK_ROOM</a><br>
    9537          * <a href="hcap.property.html#.setPictureMode">hcap.property.setPictureMode()</a><br>
    9538          *
    9539          * @since 1.20.0
    9540          *
    9541          * @example
    9542          * hcap.property.getPictureMode({
    9543          *      "onSuccess" : function(s) {
    9544          *          console.log("onSuccess : picture mode = " + s.mode + ", is user = " + s.isUser);
    9545          *      },
    9546          *      "onFailure" : function(f) {
    9547          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    9548          *      }
    9549          * });
    9550          */
    9551         hcap.property.getPictureMode = function (param) {
    9552             hcap_command("get_picture_mode", param);
    9553         };
    9554         /**
    9555          * Sets the picture mode.
    9556          *
    9557          * @param {Object} param
    9558          * <ul>
    9559          *   <li>{Number} param.mode [Required] - picture mode. Please refer to <a href="hcap.property.PictureMode.html">hcap.property.PictureMode</a>.</li>
    9560          *   <li>{Boolean} param.reset [Required] - true to reset all picture property values to default in the picture mode, otherwise false.</li>
    9561          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    9562          *   <pre class="code prettyprint">
    9563          *   param.onSuccess = function() {
    9564          *       // No Parameter.
    9565          *   }</pre>
    9566          *   </li>
    9567          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    9568          *   <pre class="code prettyprint">
    9569          *   param.onFailure = function (param) {
    9570          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    9571          *   }</pre>
    9572          *   </li>
    9573          * </ul>
    9574          *
    9575          * @see
    9576          * <a href="hcap.property.PictureMode.html#.VIVID">hcap.property.PictureMode.VIVID</a><br>
    9577          * <a href="hcap.property.PictureMode.html#.STANDARD">hcap.property.PictureMode.STANDARD</a><br>
    9578          * <a href="hcap.property.PictureMode.html#.ECO">hcap.property.PictureMode.ECO</a><br>
    9579          * <a href="hcap.property.PictureMode.html#.CINEMA">hcap.property.PictureMode.CINEMA</a><br>
    9580          * <a href="hcap.property.PictureMode.html#.SPORTS">hcap.property.PictureMode.SPORTS</a><br>
    9581          * <a href="hcap.property.PictureMode.html#.GAME">hcap.property.PictureMode.GAME</a><br>
    9582          * <a href="hcap.property.PictureMode.html#.PHOTO">hcap.property.PictureMode.PHOTO</a><br>
    9583          * <a href="hcap.property.PictureMode.html#.EXPERT_BRIGHT_ROOM">hcap.property.PictureMode.EXPERT_BRIGHT_ROOM</a><br>
    9584          * <a href="hcap.property.PictureMode.html#.EXPERT_DARK_ROOM">hcap.property.PictureMode.EXPERT_DARK_ROOM</a><br>
    9585          * <a href="hcap.property.html#.getPictureMode">hcap.property.getPictureMode()</a><br>
    9586          *
    9587          * @since 1.20.0
    9588          *
    9589          * @example
    9590          * hcap.property.setPictureMode({
    9591          *      "mode" : hcap.property.PictureMode.VIVID,
    9592          *      "reset" : true,
    9593          *      "onSuccess" : function() {
    9594          *          console.log("onSuccess");
    9595          *      },
    9596          *      "onFailure" : function(f) {
    9597          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    9598          *      }
    9599          * });
    9600          */
    9601         hcap.property.setPictureMode = function (param) {
    9602             hcap_command("set_picture_mode", param);
    9603         };
    9604         /**
    9605          * Gets the value of platform property. The property can be the TV specification values or user setting values.
    9606          *
    9607          * @param {Object} param
    9608          * <ul>
    9609          *   <li>{String} param.key [Required] - property key string.<br>
    9610          *   <div>
    9611          *     <table class="hcap_spec">
    9612          *       <thead>
    9613          *         <tr>
    9614          *           <th>Key</th>
    9615          *           <th>Description</th>
    9616          *           <th>Read/Write</th>
    9617          *           <th>Value Format</th>
    9618          *           <th>Value example (default value for the predefined value set)</th>
    9619          *         </tr>
    9620          *       </thead>
    9621          *       <tbody>
    9622          *         <tr class="odd">
    9623          *           <td>hcap_js_extension_version</td>
    9624          *           <td class="left">Hcap js extension version of middleware</td>
    9625          *           <td>Read</td>
    9626          *           <td class="left">[version string]<br>free format string</td>
    9627          *           <td>1.2.4.5</td>
    9628          *         </tr>
    9629          *         <tr>
    9630          *           <td>hcap_middleware_version</td>
    9631          *           <td class="left">Version of middleware</td>
    9632          *           <td>Read</td>
    9633          *           <td class="left">[version string]<br>free format string</td>
    9634          *           <td>1.2.4.5.4417</td>
    9635          *         </tr>
    9636          *         <tr class="odd">
    9637          *           <td>model_name</td>
    9638          *           <td class="left">Product model name<br>(IN START:Model Name)</td>
    9639          *           <td>Read</td>
    9640          *           <td class="left">[model name] <br>free format string</td>
    9641          *           <td>GLOBAL-PLAT2</td>
    9642          *         </tr>
    9643          *         <tr>
    9644          *           <td>platform_version</td>
    9645          *           <td class="left">Platform management version<br>(IN START:S/W Version)</td>
    9646          *           <td>Read</td>
    9647          *           <td class="left">[version string] <br>free format string</td>
    9648          *           <td>03.00.06.01</td>
    9649          *         </tr>
    9650          *         <tr class="odd">
    9651          *           <td>micom_version</td>
    9652          *           <td class="left">Platform micom management version<br>(IN START:MICOM Version)</td>
    9653          *           <td>Read</td>
    9654          *           <td class="left">[version string] <br>free format string</td>
    9655          *           <td>2.12</td>
    9656          *         </tr>
    9657          *         <tr>
    9658          *           <td>boot_version</td>
    9659          *           <td class="left">Bootloader management version<br>(IN START:BOOT Version)</td>
    9660          *           <td>Read</td>
    9661          *           <td class="left">[version string] <br>free format string</td>
    9662          *           <td>2.00.02</td>
    9663          *         </tr>
    9664          *         <tr class="odd">
    9665          *           <td>platform_src_revision</td>
    9666          *           <td class="left">Platform source revision<br>(IN START:APP History Ver)</td>
    9667          *           <td>Read</td>
    9668          *           <td class="left">[version string] <br>free format string</td>
    9669          *           <td>APP History Ver.: 3018</td>
    9670          *         </tr>
    9671          *         <tr>
    9672          *           <td>ptc_version</td>
    9673          *           <td class="left">(UA Model Only) PTC management version</td>
    9674          *           <td>Read</td>
    9675          *           <td class="left">[version string] <br>free format string</td>
    9676          *           <td>1.1.8</td>
    9677          *         </tr>
    9678          *         <tr class="odd">
    9679          *           <td>serial_number</td>
    9680          *           <td class="left">Product serial number<br>(IN START:Serial Number)</td>
    9681          *           <td>Read</td>
    9682          *           <td class="left">[serial number] <br>free format string</td>
    9683          *           <td>SKJY1107</td>
    9684          *         </tr>
    9685          *         <tr>
    9686          *           <td>display_resolution</td>
    9687          *           <td class="left">Graphics display resolution. Only 1280x720 and 1920x1080 are supported (since HCAP HTML 1.20.0). Just after changing the resolution, reboot is needed.</td>
    9688          *           <td>Read/Write</td>
    9689          *           <td class="left">[width]x[height]</td>
    9690          *           <td>1280x720</td>
    9691          *         </tr>
    9692          *         <tr class="odd">
    9693          *           <td>ip_support</td>
    9694          *           <td class="left">Whether IP network is supported, or not</td>
    9695          *           <td>Read</td>
    9696          *           <td class="left">[0|1] <br>0 : IP feature is disabled<br>1 : IP feature is enabled</td>
    9697          *           <td>1</td>
    9698          *         </tr>
    9699          *         <tr>
    9700          *           <td>number_of_tuner</td>
    9701          *           <td class="left">The number of tuner</td>
    9702          *           <td>Read</td>
    9703          *           <td class="left">[0|1|2|3|4|5|6|7|8|9]</td>
    9704          *           <td>1</td>
    9705          *         </tr>
    9706          *         <tr class="odd">
    9707          *           <td>support_language_list</td>
    9708          *           <td class="left">Language list supported by platform</td>
    9709          *           <td>Read</td>
    9710          *           <td class="left">[language_code][,[language_code]]<br>[language_code] : ISO 639-1, alpha-2 language code</td>
    9711          *           <td>bs,cs,da,de,et,en,es</td>
    9712          *         </tr>
    9713          *         <tr>
    9714          *           <td>default_audio_language_list</td>
    9715          *           <td class="left">Available audio languages to set as default</td>
    9716          *           <td>Read</td>
    9717          *           <td class="left">[language_code][,[language_code]]<br>[language_code] : ISO 639-1, alpha-2 language code</td>
    9718          *           <td>bs,cs,da,de,et,en,es</td>
    9719          *         </tr>
    9720          *         <tr class="odd">
    9721          *           <td>language</td>
    9722          *           <td class="left">Platform menu language setting</td>
    9723          *           <td>Read</td>
    9724          *           <td class="left">[language_code] <br>ISO 639-1, alpha-2 language code</td>
    9725          *           <td>en</td>
    9726          *         </tr>
    9727          *         <tr>
    9728          *           <td>default_audio_language</td>
    9729          *           <td class="left">Default audio language for current channel</td>
    9730          *           <td>Read/Write</td>
    9731          *           <td class="left">[language_code] <br>ISO 639-1, alpha-2 language code</td>
    9732          *           <td>en</td>
    9733          *         </tr>
    9734          *         <tr class="odd">
    9735          *           <td>country</td>
    9736          *           <td class="left">Platform country setting</td>
    9737          *           <td>Read</td>
    9738          *           <td class="left">[country_code] <br>ISO 3166-1, alpha-2 country code</td>
    9739          *           <td>gb</td>
    9740          *         </tr>
    9741          *         <tr>
    9742          *           <td>default_subtitle_language_list</td>
    9743          *           <td class="left">Subtitle list which can be set as the default subtitle in TV</td>
    9744          *           <td>Read</td>
    9745          *           <td class="left">[subtitle setting][,[subtitle setting]]*</td>
    9746          *           <td>off,bs,cs,da,de,et,en,es</td>
    9747          *         </tr>
    9748          *         <tr class="odd">
    9749          *           <td>default_subtitle_language</td>
    9750          *           <td class="left">the default subtitle.<br>In "off" case, default_subtitle_language_us_analog will be set to off also.<br>In "xx" case when there is no mapped system subtitle, no subtitle is displayed</td>
    9751          *           <td>Read/Write</td>
    9752          *           <td class="left">[subtitle setting]</td>
    9753          *           <td>en</td>
    9754          *         </tr>
    9755          *         <tr>
    9756          *           <td>default_subtitle_language_list_us_analog</td>
    9757          *           <td class="left">Subtitle list which can be set as the default subtitle in TV for US analog channel</td>
    9758          *           <td>Read</td>
    9759          *           <td class="left">[subtitle setting][,[subtitle setting]]*</td>
    9760          *           <td>off,cc1,tx2</td>
    9761          *         </tr>
    9762          *         <tr class="odd">
    9763          *           <td>default_subtitle_language_us_analog</td>
    9764          *           <td class="left">The default subtitle for US analog channel</td>
    9765          *           <td>Read/Write</td>
    9766          *           <td class="left">[subtitle setting]</td>
    9767          *           <td>cc1</td>
    9768          *         </tr>
    9769          *         <tr>
    9770          *           <td>gmt_offset_in_minute</td>
    9771          *           <td class="left">deprecated since 1.6.0</td>
    9772          *           <td></td>
    9773          *           <td class="left"></td>
    9774          *           <td></td>
    9775          *         </tr>
    9776          *         <tr class="odd">
    9777          *           <td>daylight_saving</td>
    9778          *           <td class="left">deprecated since 1.6.0</td>
    9779          *           <td></td>
    9780          *           <td class="left"></td>
    9781          *           <td></td>
    9782          *         </tr>
    9783          *         <tr>
    9784          *           <td>boot_sequence_option</td>
    9785          *           <td class="left">Pro:Centric Boot Sequence Option</td>
    9786          *           <td>Read/Write</td>
    9787          *           <td class="left">[0|1] <br>0 : AV Show + P:C App Show<br>1 : Pro:Centric App Show Only</td>
    9788          *           <td>0</td>
    9789          *         </tr>
    9790          *         <tr class="odd">
    9791          *           <td>tv_channel_control</td>
    9792          *           <td class="left">deprecated since 1.19.0.</td>
    9793          *           <td></td>
    9794          *           <td class="left"></td>
    9795          *           <td></td>
    9796          *         </tr>
    9797          *         <tr>
    9798          *           <td>application_channel_control</td>
    9799          *           <td class="left">Whether TV can control channel, or not.</td>
    9800          *           <td>Read/Write</td>
    9801          *           <td class="left">[0|1] <br>
    9802          *               0 : Both TV and HCAP Application can change the channel.
    9803          *               TV changes the channel for channel-related keys (Channel Up/Down, Numeric, TV/RAD, etc).
    9804          *               HCAP Application changes the channel by channel.requestChangeCurrentChannel().<br>
    9805          *               1 : TV channel can be changed only by channel.requestChangeCurrentChannel().<br>
    9806          *           </td>
    9807          *           <td>0</td>
    9808          *         </tr>
    9809          *         <tr class="odd">
    9810          *           <td>tv_channel_ui</td>
    9811          *           <td class="left">Whether the TV channel UI is displayed, or not</td>
    9812          *           <td>Read/Write</td>
    9813          *           <td class="left">[0|1] <br>0 : TV Channel UI is disabled<br>1 : TV Channel UI is enabled (TV channel UI is not displayed when the channel is changed by channel.requestChangeCurrentChannel().)</td>
    9814          *           <td>1</td>
    9815          *         </tr>
    9816          *         <tr>
    9817          *           <td>tv_volume_ui</td>
    9818          *           <td class="left">Whether the TV volume UI is displayed, or not</td>
    9819          *           <td>Read/Write</td>
    9820          *           <td class="left">[0|1] <br>0 : TV Volume UI is disabled<br>1 : TV Volume UI is enabled</td>
    9821          *           <td>1</td>
    9822          *         </tr>
    9823          *         <tr class="odd">
    9824          *           <td>tv_caption_ui</td>
    9825          *           <td class="left">Whether the TV caption is displayed, or not</td>
    9826          *           <td>Read/Write</td>
    9827          *           <td class="left">[0|1] <br>0 : TV Caption is disabled<br>1 : TV Caption is enabled</td>
    9828          *           <td>1</td>
    9829          *         </tr>
    9830          *         <tr>
    9831          *           <td>tv_mheg_ui</td>
    9832          *           <td class="left">deprecated since 1.6.0</td>
    9833          *           <td></td>
    9834          *           <td class="left"></td>
    9835          *           <td></td>
    9836          *         </tr>
    9837          *         <tr class="odd">
    9838          *           <td>tv_channel_attribute_floating_ui</td>
    9839          *           <td class="left">Whether the floating UI like no signal, parental lock, audio only and etc, is displayed, or not</td>
    9840          *           <td>Read/Write</td>
    9841          *           <td class="left">[0|1] <br>0 : TV Channel Status UI is disabled<br>1 : TV Channel Status UI is enabled</td>
    9842          *           <td>1</td>
    9843          *         </tr>
    9844          *         <tr>
    9845          *           <td>channel_lock</td>
    9846          *           <td class="left">(UA Model Only) Whether the channel change is locked, or not. Channel lock is used to prohibit the channel change in public area.</td>
    9847          *           <td>Read/Write</td>
    9848          *           <td class="left">[0|1] <br>0 : Channel change is unlocked(can be changed)<br>1 : Channel change is locked</td>
    9849          *           <td>0</td>
    9850          *         </tr>
    9851          *         <tr class="odd">
    9852          *           <td>application_update_on_startup</td>
    9853          *           <td class="left">Whether application will be updated or not when the middleware starts up</td>
    9854          *           <td>Read</td>
    9855          *           <td class="left">[0|1] <br>0 : application will not be updated<br>1 : application will be updated</td>
    9856          *           <td>0</td>
    9857          *         </tr>
    9858          *         <tr>
    9859          *           <td>application_update_in_shutdown</td>
    9860          *           <td class="left">Whether application will be updated or not when the middleware shutdowns</td>
    9861          *           <td>Read</td>
    9862          *           <td class="left">[0|1] <br>0 : application will not be updated<br>1 : application will be updated</td>
    9863          *           <td>0</td>
    9864          *         </tr>
    9865          *         <tr class="odd">
    9866          *           <td>pcr_offset_in_ms</td>
    9867          *           <td class="left">deprecated since 1.22.0</td>
    9868          *           <td></td>
    9869          *           <td class="left"></td>
    9870          *           <td></td>
    9871          *         </tr>
    9872          *         <tr>
    9873          *           <td>platform_manufacturer</td>
    9874          *           <td class="left">Platform Manufacturer Name</td>
    9875          *           <td>Read</td>
    9876          *           <td class="left">[name string] <br>free format string</td>
    9877          *           <td>LGE</td>
    9878          *         </tr>
    9879          *         <tr class="odd">
    9880          *           <td>hardware_version</td>
    9881          *           <td class="left">Hardware Version</td>
    9882          *           <td>Read</td>
    9883          *           <td class="left">[version string] <br>free format string</td>
    9884          *           <td>1.0.0</td>
    9885          *         </tr>
    9886          *         <tr>
    9887          *           <td>max_application_size</td>
    9888          *           <td class="left">specifies the max storage size in byte for Pro:Centric applications.
    9889          *           </td>
    9890          *           <td>Read</td>
    9891          *           <td class="left">[max application storage size] Byte(s)</td>
    9892          *           <td>10485760</td>
    9893          *         </tr>
    9894          *         <tr class="odd">
    9895          *           <td>max_content_cache_size</td>
    9896          *           <td class="left">specifies the max cache storage size in byte for carousel content.
    9897          *           </td>
    9898          *           <td>Read</td>
    9899          *           <td class="left">[max content cache storage size] Byte(s)</td>
    9900          *           <td>10485760</td>
    9901          *         </tr>
    9902          *         <tr>
    9903          *           <td>osd_layer_id</td>
    9904          *           <td class="left">ID of HCAP OSD layer</td>
    9905          *           <td>Read</td>
    9906          *           <td class="left">[number string]</td>
    9907          *           <td>4</td>
    9908          *         </tr>
    9909          *         <tr class="odd">
    9910          *           <td>key_delivery_to_simplink</td>
    9911          *           <td class="left">determine whether key input is delivered to Simplink or key input is processed accroding to HCAP key attribute. This property is effective only when Simplink device is connected to TV.
    9912          *           </td>
    9913          *           <td>Read/Write</td>
    9914          *           <td class="left">[0|1] <br>0 : key input is processed according to HCAP key attribute.<br>1 : key input is delivered to Simplink. Therefore HCAP application gets no key input.</td>
    9915          *           <td>0</td>
    9916          *         </tr>
    9917          *         <tr>
    9918          *           <td>room_number</td>
    9919          *           <td class="left">[since 1.5.0] room number which TV is located in. When room number is changed, property 'tv_name' will be changed to the same value as 'room_number'.</td>
    9920          *           <td>Read/Write</td>
    9921          *           <td class="left">[string] free format string. Max length is 21. (Factory initial value is '[TV]serial_number'.)</td>
    9922          *           <td>[TV]204</td>
    9923          *         </tr>
    9924          *         <tr class="odd">
    9925          *           <td>instant_power</td>
    9926          *           <td class="left">[since 1.6.0] specify the mode of instant power on.</td>
    9927          *           <td>Read/Write</td>
    9928          *           <td class="left">[0|10|1|2] <br>0 : disable TV instant power on.
    9929          *                                    <br>    At power off by <a href="hcap.power.html#.powerOff">hcap.power.powerOff()</a> and power key in RCU[Remote Control Unit] : NORMAL -> WARM(UPDATE) -> STANDBY.
    9930          *                                    <br>    At power on by power key in RCU : STANDBY -> NORMAL.
    9931          *                                    <br>    At reboot by <a href="hcap.power.html#.reboot">hcap.power.reboot()</a> : NORMAL -> WARM(UPDATE) -> STANDBY -> NORMAL.
    9932          *                                    <br>    Power mode change NORMAL->WARM(WAIT) by <a href="hcap.power.html#.setPowerMode">hcap.power.setPowerMode()</a> is not supported.
    9933          *                                    <br>    Power mode change WARM(WAIT)->NORMAL by <a href="hcap.power.html#.setPowerMode">hcap.power.setPowerMode()</a> is supported.
    9934          *                                    <br>[since 1.19.0] 10 : keep TV turned on while AC power is applied.
    9935          *                                    <br>    At power off by <a href="hcap.power.html#.powerOff">hcap.power.powerOff()</a> : NORMAL -> WARM(UPDATE) -> STANDBY -> NORMAL.
    9936          *                                    <br>    At power off by power key in RCU : No effect.
    9937          *                                    <br>    At power on by power key in RCU : No effect.
    9938          *                                    <br>    [since 1.18.4] At reboot by <a href="hcap.power.html#.reboot">hcap.power.reboot()</a> : NORMAL -> WARM(UPDATE) -> STANDBY -> NORMAL.
    9939          *                                    <br>    Power mode change NORMAL<->WARM(WAIT) by <a href="hcap.power.html#.setPowerMode">hcap.power.setPowerMode()</a> is not supported.
    9940          *                                    <br>1 : enable TV instant power on.
    9941          *                                    <br>    At power off by <a href="hcap.power.html#.powerOff">hcap.power.powerOff()</a> and power key in RCU : [NORMAL|WARM(WAIT)] -> WARM(UPDATE) -> STANDBY -> WARM(WAIT).
    9942          *                                    <br>    At power on by power key in RCU : WARM(WAIT) -> NORMAL.
    9943          *                                    <br>    [since 1.18.4] At reboot by <a href="hcap.power.html#.reboot">hcap.power.reboot()</a> : NORMAL -> WARM(UPDATE) -> STANDBY -> NORMAL. WARM(WAIT) -> WARM(UPDATE) -> STANDBY -> WARM(WAIT).
    9944          *                                    <br>    Power mode change NORMAL<->WARM(WAIT) by <a href="hcap.power.html#.setPowerMode">hcap.power.setPowerMode()</a> is supported.
    9945          *                                    <br>[since 1.9.0] 2 : enable TV instant power on.
    9946          *                                    <br>    At power off by <a href="hcap.power.html#.powerOff">hcap.power.powerOff()</a> : [NORMAL|WARM(WAIT)] -> WARM(UPDATE) -> STANDBY -> WARM(WAIT).
    9947          *                                    <br>    At power off by power key in RCU : NORMAL -> WARM(WAIT).
    9948          *                                    <br>    At power on by power key in RCU : WARM(WAIT) -> NORMAL.
    9949          *                                    <br>    [since 1.18.4] At reboot by <a href="hcap.power.html#.reboot">hcap.power.reboot()</a> : NORMAL -> WARM(UPDATE) -> STANDBY -> NORMAL. WARM(WAIT) -> WARM(UPDATE) -> STANDBY -> WARM(WAIT).
    9950          *                                    <br>    Power mode change NORMAL<->WARM(WAIT) by <a href="hcap.power.html#.setPowerMode">hcap.power.setPowerMode()</a> is supported.
    9951          *           </td>
    9952          *           <td>0</td>
    9953          *         </tr>
    9954          *         <tr>
    9955          *           <td>wol_w</td>
    9956          *           <td class="left">[since 1.5.1] specifies TV power status when turning TV on from standby state by Wakeup Frame. Whether to support "wol_w" or not depends on TV models.</td>
    9957          *           <td>Read/Write</td>
    9958          *           <td class="left">[normal|warm|off]</td>
    9959          *           <td>off</td>
    9960          *         </tr>
    9961          *         <tr class="odd">
    9962          *           <td>wol_m</td>
    9963          *           <td class="left">[since 1.5.1] specifies TV power status when turning TV on from standby state by Magic Packet. Whether to support "wol_m" or not depends on TV models.</td>
    9964          *           <td>Read/Write</td>
    9965          *           <td class="left">[normal|warm|off]</td>
    9966          *           <td>off</td>
    9967          *         </tr>
    9968          *         <tr>
    9969          *           <td>inband_data_service_mhp</td>
    9970          *           <td class="left">[since 1.6.0] determine whether to enable MHP service.</td>
    9971          *           <td>Read/Write</td>
    9972          *           <td class="left">[0|1] <br>0 : disable MHP service.<br>1 : enable MHP service.</td>
    9973          *           <td>0</td>
    9974          *         </tr>
    9975          *         <tr class="odd">
    9976          *           <td>inband_data_service_mheg</td>
    9977          *           <td class="left">[since 1.6.0] determine whether to enable MHEG service.</td>
    9978          *           <td>Read/Write</td>
    9979          *           <td class="left">[0|1] <br>0 : disable MHEG service.<br>1 : enable MHEG service.</td>
    9980          *           <td>0</td>
    9981          *         </tr>
    9982          *         <tr>
    9983          *           <td>inband_data_service_hbbtv</td>
    9984          *           <td class="left">[since 1.6.0] determine whether to enable HBBTV service.</td>
    9985          *           <td>Read/Write</td>
    9986          *           <td class="left">[0|1] <br>0 : disable HBBTV service.<br>1 : enable HBBTV service.</td>
    9987          *           <td>0</td>
    9988          *         </tr>
    9989          *         <tr class="odd">
    9990          *           <td>security_level</td>
    9991          *           <td class="left">[since 1.7.0] set security level for whether deleting personal information in TV or not.</td>
    9992          *           <td>Read/Write</td>
    9993          *           <td class="left">[1|2] <br>1 : security level 1. delete personal information in TV when turning TV off.<br>2 : security level 2. maintain personal information in TV when turning TV off.</td>
    9994          *           <td>1</td>
    9995          *         </tr>
    9996          *         <tr>
    9997          *           <td>tv_name</td>
    9998          *           <td class="left">[since 1.8.0] TV name to be displayed at the remote (SSID of TV). When 'tv_name' is changed, property 'room_number' is not changed. 'tv_name' is also the SSID of soft AP, which will be valid after rebooting TV.</td>
    9999          *           <td>Read/Write</td>
    10000          *           <td class="left">[string] free format string. Max length is 30. (Factory initial value is '[TV]serial_number'.)</td>
    10001          *           <td>[TV]xxx</td>
    10002          *         </tr>
    10003          *         <tr class="odd">
    10004          *           <td>wifi_screen_share</td>
    10005          *           <td class="left">[since 1.10.0] determine whether to enable WiDi and Wi-Fi Direct, or not.</td>
    10006          *           <td>Read/Write</td>
    10007          *           <td class="left">[0|1] <br>0 : disable WiDi and Wi-Fi Direct.<br>1 : enable WiDi and Wi-Fi Direct.</td>
    10008          *           <td>0</td>
    10009          *         </tr>
    10010          *         <tr>
    10011          *           <td>smart_share</td>
    10012          *           <td class="left">[since 1.10.0] determine whether to enable DLNA, or not.</td>
    10013          *           <td>Read/Write</td>
    10014          *           <td class="left">[0|1] <br>0 : disable DLNA.<br>1 : enable DLNA.</td>
    10015          *           <td>0</td>
    10016          *         </tr>
    10017          *         <tr class="odd">
    10018          *           <td>smart_pairing</td>
    10019          *           <td class="left">[since 1.10.0] determine whether to enable QR code and broadcast SSID, or not.</td>
    10020          *           <td>Read/Write</td>
    10021          *           <td class="left">[0|1] <br>0 : disable QR code and hide SSID.<br>1 : enable QR code and broadcast SSID.</td>
    10022          *           <td>0</td>
    10023          *         </tr>
    10024          *         <tr>
    10025          *           <td>dmr</td>
    10026          *           <td class="left">[since 1.10.0] determine whether to enable DMR (Digital Media Renderer), or not.</td>
    10027          *           <td>Read/Write</td>
    10028          *           <td class="left">[0|1] <br>0 : disable DMR.<br>1 : enable DMR.</td>
    10029          *           <td>0</td>
    10030          *         </tr>
    10031          *         <tr class="odd">
    10032          *           <td>single_decoding</td>
    10033          *           <td class="left">[since 1.13.0] determine whether the system is able to decode MPEG streams simultaneously, or not.</td>
    10034          *           <td>Read</td>
    10035          *           <td class="left">[0|1] <br>0 : decode MPEG streams simultaneously.<br>1 : decode only one MPEG stream at a time.</td>
    10036          *           <td>0</td>
    10037          *         </tr>
    10038          *         <tr>
    10039          *           <td>browser_network_error_handling</td>
    10040          *           <td class="left">[since 1.19.0] deprecate the behavior of "1". TV doesn't support "1" anymore.<br>[since 1.14.0] determine whether the browser handles network error, or not.</td>
    10041          *           <td>Read/Write</td>
    10042          *           <td class="left">[0|1] <br>0 : when network error is occurred, notify network status change to the application and the browser has no action.<br>1 : when network error is occurred, the browser loads an error page for a while and tries to load the previous page. If the previous page can be loaded in off-line, the page will be loaded, or the browser will be destroyed. When pressing PORTAL key in the browser termination, TV tries to load initial page designated in xait.xml.</td>
    10043          *           <td>1</td>
    10044          *         </tr>
    10045          *         <tr class="odd">
    10046          *           <td>browser_https_security_level</td>
    10047          *           <td class="left">[since 1.14.0] determine the https security level in browser.</td>
    10048          *           <td>Read/Write</td>
    10049          *           <td class="left">[0|1] <br>0 : use server authentication and session data encryption.<br>1 : only use session data encryption.</td>
    10050          *           <td>1</td>
    10051          *         </tr>
    10052          *         <tr>
    10053          *           <td>full_browser_start_page_url</td>
    10054          *           <td class="left">[since 1.15.0] set the start page for the full browser.</td>
    10055          *           <td>Read/Write</td>
    10056          *           <td class="left">[url string] <br>page url.</td>
    10057          *           <td>http://lge.com/index.html</td>
    10058          *         </tr>
    10059          *         <tr class="odd">
    10060          *           <td>maximum_volume_level</td>
    10061          *           <td class="left">[since 1.15.0] set the maximum volume level. EU model only.</td>
    10062          *           <td>Read/Write</td>
    10063          *           <td class="left">[number string] <br>0 ~ 100.</td>
    10064          *           <td>100</td>
    10065          *         </tr>
    10066          *         <tr>
    10067          *           <td>pcr_recovery</td>
    10068          *           <td class="left">[since 1.15.0] determine whether to enable PCR recovery or not.</td>
    10069          *           <td>Read/Write</td>
    10070          *           <td class="left">[0|1] <br>0 : disable PCR recovery.<br>1 : enable PCR recovery.</td>
    10071          *           <td>1</td>
    10072          *         </tr>
    10073          *         <tr class="odd">
    10074          *           <td>mute_on_tv_input</td>
    10075          *           <td class="left">[since 1.15.0] determine whether TV AV is mute or not, when selecting TV from another external input source.</td>
    10076          *           <td>Read/Write</td>
    10077          *           <td class="left">[0|1] <br>0 : TV AV is played.<br>1 : TV AV is mute.</td>
    10078          *           <td>0</td>
    10079          *         </tr>
    10080          *         <tr>
    10081          *           <td>soft_ap_ui</td>
    10082          *           <td class="left">[since 1.16.0] determine whether to enable soft access point or not. "soft_ap" is working only when "soft_ap_ui" is enabled. "soft_ap" is reset to "0" whenever TV is rebooted or the power mode is changed from non-normal mode to normal mode if instant_power is enabled (1 or 2).</td>
    10083          *           <td>Read/Write</td>
    10084          *           <td class="left">[0|1] <br>0 : disable soft AP UI.<br>1 : enable soft AP UI.</td>
    10085          *           <td>0</td>
    10086          *         </tr>
    10087          *         <tr class="odd">
    10088          *           <td>soft_ap</td>
    10089          *           <td class="left">[since 1.16.0] determine whether to enable soft access point or not. "soft_ap" is working only when "soft_ap_ui" is enabled. "soft_ap" is reset to "0" in the power off sequence (NORMAL -> WARM -> OFF). Soft AP configuration is stored even for "soft_ap" "0", and when "soft_ap" is "1", soft AP and VLAN is initialized with the stored configuration.</td>
    10090          *           <td>Read/Write</td>
    10091          *           <td class="left">[0|1] <br>0 : disable soft AP.<br>1 : enable soft AP.</td>
    10092          *           <td>0</td>
    10093          *         </tr>
    10094          *         <tr>
    10095          *           <td>soft_ap_password</td>
    10096          *           <td class="left">[since 1.16.0] set the password of soft access point. Max length is 64.</td>
    10097          *           <td>Write</td>
    10098          *           <td class="left">[password string]<br>password.</td>
    10099          *           <td>lge12345</td>
    10100          *         </tr>
    10101          *         <tr class="odd">
    10102          *           <td>rs232c</td>
    10103          *           <td class="left">[since 1.18.4] determine whether to enable RS232C (serial) communication by HCAP or not. Only when "rs232c" is "1", hcap.rs232c commands will be worked.</td>
    10104          *           <td>Read/Write</td>
    10105          *           <td class="left">[0|1] <br>0 : disable RS232C by HCAP.<br>1 : enable RS232C by HCAP.</td>
    10106          *           <td>0</td>
    10107          *         </tr>
    10108          *         <tr>
    10109          *           <td>https_xait_xml</td>
    10110          *           <td class="left">[since 1.19.0] determine whether to get remote xait.xml and remote zone.conf via http or https.</td>
    10111          *           <td>Read/Write</td>
    10112          *           <td class="left">[0|1] <br>0 : access to http://[P:C Server IP]:[P:C Server Port]/procentric/application/xait.xml<br>1 : access to https://[P:C Server IP]:[P:C Server Port]/procentric/application/xait.xml</td>
    10113          *           <td>0</td>
    10114          *         </tr>
    10115          *         <tr class="odd">
    10116          *           <td>alternative_lg_service_xml</td>
    10117          *           <td class="left">[since 1.19.0] specify LGService.xml dynamically in EZ Installation.<br>
    10118          *              If "alternative_lg_service_xml" doesn't exist or is empty string, download http://[Pro:Centric Server IP]:[Pro:Centric Server Port]/procentric/system/LGService.xml as it was.<br>
    10119          *              If "alternative_lg_service_xml" exists and it starts with "http://" or "https://", download the value of "alternative_lg_service_xml".<br>
    10120          *              If "alternative_lg_service_xml" exists and it doesn't start with "http://" and "https://", download http://[Pro:Centric Server IP]:[Pro:Centric Server Port]/procentric/system/["alternative_lg_service_xml" value].</td>
    10121          *           <td>Read/Write</td>
    10122          *           <td class="left">[string]<br>file name or URL.</td>
    10123          *           <td>""(empty string)</td>
    10124          *         </tr>
    10125          *         <tr>
    10126          *           <td>alternative_url</td>
    10127          *           <td class="left">[since 1.19.0] specify an alternative url for HCAP HTML application.<br>
    10128          *              If "alternative_url" doesn't exist or is empty string, HCAP HTML application designated in XAIT.xml will be launched.<br>
    10129          *              Otherwise, HCAP HTML application specified in "alternative_url" will be launched.</td>
    10130          *           <td>Read/Write</td>
    10131          *           <td class="left">[url string]<br>URL for HCAP HTML application.</td>
    10132          *           <td>""(empty string)</td>
    10133          *         </tr>
    10134          *         <tr class="odd">
    10135          *           <td>block_external_input</td>
    10136          *           <td class="left">[since 1.19.0] determine whether to block the external input port or not.</td>
    10137          *           <td>Read/Write</td>
    10138          *           <td class="left">[0|1]<br>0 : allow all external input port.<br>1 : block all external input port.</td>
    10139          *           <td>0</td>
    10140          *         </tr>
    10141          *         <tr>
    10142          *           <td>block_ir</td>
    10143          *           <td class="left">[since 1.19.0] determine whether to block the IR key (except exclusive factory RCU keys) input or not. If "block_local_key" is "2", setting "block_ir" to "2" will be failed. That is, at least one of IR power key or local power key should be worked.</td>
    10144          *           <td>Read/Write</td>
    10145          *           <td class="left">[0|1|2]<br>0 : allow all IR input.<br>1 : block all IR input except Power key.<br>2 : block all IR input.</td>
    10146          *           <td>0</td>
    10147          *         </tr>
    10148          *         <tr class="odd">
    10149          *           <td>block_local_key</td>
    10150          *           <td class="left">[since 1.19.0] determine whether to block the local key or not. If "block_ir" is "2", setting "block_local_key" to "2" will be failed. That is, at least one of IR power key or local power key should be worked.</td>
    10151          *           <td>Read/Write</td>
    10152          *           <td class="left">[0|1|2]<br>0 : allow all local keys.<br>1 : block all local keys except power key.<br>2 : block all local keys.</td>
    10153          *           <td>0</td>
    10154          *         </tr>
    10155          *         <tr>
    10156          *           <td>block_usb</td>
    10157          *           <td class="left">[since 1.19.0] determine whether to block the USB port or not. Changed setting will take affect after a reboot.</td>
    10158          *           <td>Read/Write</td>
    10159          *           <td class="left">[0|1]<br>0 : allow all USB port.<br>1 : block all USB port.</td>
    10160          *           <td>0</td>
    10161          *         </tr>
    10162          *         <tr class="odd">
    10163          *           <td>installation_menu_password</td>
    10164          *           <td class="left">[since 1.19.0] password to enter the installation menu.</td>
    10165          *           <td>Write</td>
    10166          *           <td class="left">[password string]<br>4 digits string</td>
    10167          *           <td>1234</td>
    10168          *         </tr>
    10169          *         <tr>
    10170          *           <td>block_hidden_menu</td>
    10171          *           <td class="left">[since 1.19.0] determine whether to block hidden menus to be able to enter with guest remote RCU like installation menu and PTC menu, or not.</td>
    10172          *           <td>Read/Write</td>
    10173          *           <td class="left">[0|1]<br>0 : allow to enter hidden menus.<br>1 : block to enter hidden menus.</td>
    10174          *           <td>0</td>
    10175          *         </tr>
    10176          *         <tr class="odd">
    10177          *           <td>block_launcher</td>
    10178          *           <td class="left">[since 1.19.0] determine whether to block the webOS launcher or not.</td>
    10179          *           <td>Read/Write</td>
    10180          *           <td class="left">[0|1]<br>0 : allow the launcher.<br>1 : block the launcher.</td>
    10181          *           <td>0</td>
    10182          *         </tr>
    10183          *         <tr>
    10184          *           <td>block_hotkey</td>
    10185          *           <td class="left">[since 1.19.0] determine whether to make PORTAL/GUIDE/INFO keys hot keys in webOS TV or not. If they are hot keys, HCAP application will always get focused automatically by TV and hot keys will be delivered to HCAP application. If they are not hot keys, focus will not be changed and the keys will be delivered to HCAP application.</td>
    10186          *           <td>Read/Write</td>
    10187          *           <td class="left">[0|1]<br>0 : PORTAL/GUIDE/INFO keys are hot keys.<br>1 : PORTAL/GUIDE/INFO keys are not hot keys.</td>
    10188          *           <td>0</td>
    10189          *         </tr>
    10190          *         <tr class="odd">
    10191          *           <td>clock_display</td>
    10192          *           <td class="left">[since 1.19.0] determine whether to display the external clock or not.</td>
    10193          *           <td>Read/Write</td>
    10194          *           <td class="left">[0|1]<br>0 : the external clock is not displayed.<br>1 : the external clock is displayed.</td>
    10195          *           <td>1</td>
    10196          *         </tr>
    10197          *         <tr>
    10198          *           <td>teletext</td>
    10199          *           <td class="left">[since 1.19.0] determine whether to enable the teletext or not.</td>
    10200          *           <td>Read/Write</td>
    10201          *           <td class="left">[0|1]<br>0 : disable the teletext.<br>1 : enable the teletext.</td>
    10202          *           <td>1</td>
    10203          *         </tr>
    10204          *         <tr class="odd">
    10205          *           <td>secure_mmr_pairing</td>
    10206          *           <td class="left">[since 1.19.0] determine whether TV to permit pairing with MMR (Magic Motion RCU).</td>
    10207          *           <td>Read/Write</td>
    10208          *           <td class="left">[0|1]<br>0 : TV permits pairing with MMR anytime as before.<br>1 : TV permits pairing with MMR only when installation menu is focused.</td>
    10209          *           <td>0</td>
    10210          *         </tr>
    10211          *         <tr>
    10212          *           <td>dial</td>
    10213          *           <td class="left">[since 1.19.0] determine whether to enable DIAL or not.</td>
    10214          *           <td>Read/Write</td>
    10215          *           <td class="left">[0|1]<br>0 : disable DIAL.<br>1 : enable DIAL.</td>
    10216          *           <td>0</td>
    10217          *         </tr>
    10218          *         <tr class="odd">
    10219          *           <td>alljoyn</td>
    10220          *           <td class="left">[since 1.19.0] determine whether to enable AllJoyn or not.</td>
    10221          *           <td>Read/Write</td>
    10222          *           <td class="left">[0|1]<br>0 : disable AllJoyn.<br>1 : enable AllJoyn.</td>
    10223          *           <td>0</td>
    10224          *         </tr>
    10225          *         <tr>
    10226          *           <td>clock_source</td>
    10227          *           <td class="left">[since 1.19.0] set the clock source.</td>
    10228          *           <td>Read/Write</td>
    10229          *           <td class="left">[off|pro:centric|tv|ntp|admin]<br>off : update the clock time for all clock sources.
    10230          *                                                          <br>pro:centric : update the clock time only for the Pro:Centric data channel time.
    10231          *                                                          <br>tv : update the clock time only for the TV channel time.
    10232          *                                                          <br>ntp : update the clock time only for the NTP (Network Time Protocol) server time.
    10233          *                                                          <br>admin : update the clock time only for the time requested by <a href="hcap.time.html#.setLocalTime">hcap.time.setLocalTime()</a>. If <a href="hcap.time.html#.setLocalTime">hcap.time.setLocalTime()</a> is called in the other clock source than "admin", "clock_source" will be changed to "admin" automatically.</td>
    10234          *           <td>off : when Pro:Centric is OFF.<br>
    10235          *               pro:centric : when Pro:Centric is enabled.</td>
    10236          *         </tr>
    10237          *         <tr class="odd">
    10238          *           <td>xait_version</td>
    10239          *           <td class="left">[since 1.20.0] xait version in the local xait.xml</td>
    10240          *           <td>Read</td>
    10241          *           <td class="left">[number string] <br>number format string</td>
    10242          *           <td></td>
    10243          *         </tr>
    10244          *         <tr>
    10245          *           <td>asl_mode</td>
    10246          *           <td class="left">[since 1.20.1] Whether ASL(Application Side Loading) mode is supported, or not.</td>
    10247          *           <td>Read</td>
    10248          *           <td class="left">[0|1]<br>0 : ASL mode is disabled.<br>1 : ASL mode is enabled.</td>
    10249          *           <td>0</td>
    10250          *         </tr>
    10251          *         <tr class="odd">
    10252          *           <td>screensaver_control</td>
    10253          *           <td class="left">[since 1.20.1] Indicates who is in charge of handling the screensaver.</td>
    10254          *           <td>Read/Write</td>
    10255          *           <td class="left">[0|1]<br>0 : The Pro:Centric platform is in charge of starting and ending a screensaver.<br>1 : HCAP Application is in charge of starting and ending a screensaver. <a href="_global_.html#event:screensaver_event_received">screensaver_event_received()</a> is provided for implementing screensaver by HCAP Application.</td>
    10256          *           <td>0</td>
    10257          *         </tr>
    10258          *         <tr>
    10259          *           <td>rms_trusted_ip</td>
    10260          *           <td class="left">[since 1.20.3] Set the ip address that can execute all commands of RMS(Remote Manager Service) include Security APIs</td>
    10261          *           <td>Read/Write</td>
    10262          *           <td class="left">[string]<br>ip address</td>
    10263          *           <td>10.186.122.21</td>
    10264          *         </tr>
    10265          *         <tr class="odd">
    10266          *           <td>lg_service_xml_version</td>
    10267          *           <td class="left">[since 1.21.0] lg service xml version in the local lgservice.xml</td>
    10268          *           <td>Read</td>
    10269          *           <td class="left">[number string] <br>number format string</td>
    10270          *           <td></td>
    10271          *         </tr>
    10272          *         <tr>
    10273          *           <td>input_splash_image</td>
    10274          *           <td class="left">[since 1.23.0] determine whether to enable splash image or not.</td>
    10275          *           <td>Read/Write</td>
    10276          *           <td class="left">[0|1]<br>0 : disable splash image.<br>1 : enable splash image.</td>
    10277          *           <td>1</td>
    10278          *         </tr>
    10279          *         <tr class="odd">
    10280          *           <td>tv_zone / stb_zone</td>
    10281          *           <td class="left">[since 1.20.8][UA Only] Set the tv_zone / stb_zone that used for cloning</td>
    10282          *           <td>Read/Write</td>
    10283          *           <td class="left">[0-8] <br>number format string</td>
    10284          *           <td>"1"</td>
    10285          *         </tr>
    10286          *         <tr>
    10287          *           <td>wifi_zone</td>
    10288          *           <td class="left">[since 1.20.8][UA Only] Set the wifi_zone that used for cloning</td>
    10289          *           <td>Read/Write</td>
    10290          *           <td class="left">[0-99] <br>number format string</td>
    10291          *           <td>"5"</td>
    10292          *         </tr>
    10293          *         <tr class="odd">
    10294          *           <td>cec_device_control</td>
    10295          *           <td class="left">[since 1.24.0] determine whether to control CEC device or not</td>
    10296          *           <td>Read/Write</td>
    10297          *           <td class="left">[0|1]<br>0 : disable cec_device control (default)<br>1 : enable cec_device control (handle in SI app)</td>
    10298          *           <td>"0"</td>
    10299          *         </tr>
    10300          *         <tr>
    10301          *           <td>automatic_update</td>
    10302          *           <td class="left">[since 1.24.2] determine whether to enable automatic software update.</td>
    10303          *           <td>Read/Write</td>
    10304          *           <td class="left">[off|on|once]<br>off : disable automatic software updates.
    10305          *                                         <br>on : enable automatic software updates.
    10306          *                                         <br>once : Use automatic software updates once and change to "off".
    10307          *           <td>"off"</td>
    10308          *         </tr>
    10309          *       </tbody>
    10310          *       <tfoot>
    10311          *         <tr><th colspan="5">HCAP Property</td></tr>
    10312          *       </tfoot>
    10313          *     </table>
    10314          *   </div>
    10315          *   </li>
    10316          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    10317          *   <pre class="code prettyprint">
    10318          *   param.onSuccess = function (param) {
    10319          *       // {String} param.value - property value.
    10320          *   }</pre>
    10321          *   </li>
    10322          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    10323          *   <pre class="code prettyprint">
    10324          *   param.onFailure = function (param) {
    10325          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    10326          *   }</pre>
    10327          *   </li>
    10328          * </ul>
    10329          *
    10330          * @since 1.3.1
    10331          *
    10332          * @see
    10333          * <a href="hcap.property.html#.setProperty">hcap.property.setProperty()</a><br>
    10334          * <a href="_global_.html#event:property_changed">{Event} property_changed</a>
    10335          *
    10336          * @example
    10337          * hcap.property.getProperty({
    10338          *      "key" : "model_name",
    10339          *      "onSuccess" : function(s) {
    10340          *          console.log("onSuccess : property value = " + s.value);
    10341          *      },
    10342          *      "onFailure" : function(f) {
    10343          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    10344          *      }
    10345          * });
    10346          */
    10347         hcap.property.getProperty = function (param) {
    10348             hcap_command("get_property", param);
    10349         };
    10350         /**
    10351          * Sets a platform property.
    10352          * Please refer to writable property key and value in <a href="hcap.property.html#.getProperty">hcap.property.getProperty()</a>.
    10353          *
    10354          * @param {Object} param
    10355          * <ul>
    10356          *   <li>{String} param.key [Required] - property key to be set.</li>
    10357          *   <li>{String} param.value [Required] - property value to be set.</li>
    10358          *   <li>{Function} param.onSuccess [Optional] - success callback function.<br>
    10359          *       Setting to the same value for the key as before will invoke this callback function.
    10360          *   <pre class="code prettyprint">
    10361          *   param.onSuccess = function() {
    10362          *       // No parameter.
    10363          *   }</pre>
    10364          *   </li>
    10365          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    10366          *   <pre class="code prettyprint">
    10367          *   param.onFailure = function (param) {
    10368          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    10369          *   }</pre>
    10370          *   </li>
    10371          * </ul>
    10372          *
    10373          * @since 1.3.1
    10374          *
    10375          * @see
    10376          * <a href="hcap.property.html#.getProperty">hcap.property.getProperty()</a><br>
    10377          * <a href="_global_.html#event:property_changed">{Event} property_changed</a>
    10378          *
    10379          * @example
    10380          * hcap.property.setProperty({
    10381          *      "key" : "tv_volume_ui",
    10382          *      "value" : "0",
    10383          *      "onSuccess" : function() {
    10384          *          console.log("onSuccess");
    10385          *      },
    10386          *      "onFailure" : function(f) {
    10387          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    10388          *      }
    10389          * });
    10390          */
    10391         hcap.property.setProperty = function (param) {
    10392             hcap_command("set_property", param);
    10393         };
    10394         /**
    10395          * @namespace hcap.property.InstallerMenuItem
    10396          */
    10397         hcap.property.InstallerMenuItem = {
    10398             /**
    10399              * Password type of installer menu enterance. (0 ~ 3)
    10400              * @since 1.22.0
    10401              * @constant
    10402              */
    10403             INSTALLER_SEQ : 0,
    10404             /**
    10405              * Sets number of hours of no activity before automatic shut off. (0 ~ 7)
    10406              * @since 1.22.0
    10407              * @constant
    10408              */
    10409             POWER_MANAGE : 1,
    10410             /**
    10411              * Set to 1 to enable Auto Turn ON when AC power is applied. (0 ~ 3)
    10412              * @since 1.22.0
    10413              * @constant
    10414              */
    10415             AC_ON : 2,
    10416             /**
    10417              * Selects Tuning Band: 0=Broadcast, 1=CATV, 2=HRC, 3=IRC. (0 ~ 3)
    10418              * @since 1.22.0
    10419              * @constant
    10420              */
    10421             BAND : 3,
    10422             /**
    10423              * Channel tuned when TV is turned ON. (Set to 255 to tune to channel tuned before TV turned OFF.) (0 ~ 127, 253, 255)
    10424              * @since 1.22.0
    10425              * @constant
    10426              */
    10427             STRT_CHANNEL : 4,
    10428             /**
    10429              * If set to 1, cannot tune from current channel. (0 / 1)
    10430              * @since 1.22.0
    10431              * @constant
    10432              */
    10433             CHAN_LOCK : 5,
    10434             /**
    10435              * Volume level when TV is turned ON. (Set to 255 to use volume level before TV turned OFF.) (0 ~ 63, 255)
    10436              * @since 1.22.0
    10437              * @constant
    10438              */
    10439             STRT_VOLUME : 7,
    10440             /**
    10441              * Sets minimum allowable volume setting. (0 ~ 63)
    10442              * @since 1.22.0
    10443              * @constant
    10444              */
    10445             MIN_VOLUME : 8,
    10446             /**
    10447              * Sets maximum allowable volume setting. (0 ~ 63)
    10448              * @since 1.22.0
    10449              * @constant
    10450              */
    10451             MAX_VOLUME : 9,
    10452             /**
    10453              * Set to 1 to disable Mute Function. (0 / 1)
    10454              * @since 1.22.0
    10455              * @constant
    10456              */
    10457             MUTE_DISABLE : 10,
    10458             /**
    10459              * Set to 1 to disable menu navigation keys on display panel. (0 / 1)
    10460              * @since 1.22.0
    10461              * @constant
    10462              */
    10463             KEY_DEFEAT : 11,
    10464             /**
    10465              * Set to 1 to enable bank descrete IR dode. (0 / 1)
    10466              * @since 1.22.0
    10467              * @constant
    10468              */
    10469             IR_BANKS_ENABLE : 12,
    10470             /**
    10471              * Set to 1 to enable TV ON when channel up/down key is pressed. (0 / 1)
    10472              * @since 1.22.0
    10473              * @constant
    10474              */
    10475             SCAN_MODE : 13,
    10476             /**
    10477              * Set to 1 to use start channel for channnel map pivot point at Scan Mode. (0 / 1)
    10478              * @since 1.22.0
    10479              * @constant
    10480              */
    10481             STRT_CH_IN_SM : 14,
    10482             /**
    10483              * Set to 1 to enable Sleep Timer. (0 / 1)
    10484              * @since 1.22.0
    10485              * @constant
    10486              */
    10487             SLEEP_TIMER : 15,
    10488             /**
    10489              * Set to 1 to enable On/Off Timers. (0 / 1)
    10490              * @since 1.22.0
    10491              * @constant
    10492              */
    10493             EN_TIMER : 16,
    10494             /**
    10495              * Set to 1 to enable Alarm. (0 / 1)
    10496              * @since 1.22.0
    10497              * @constant
    10498              */
    10499             ALARM : 17,
    10500             /**
    10501              * Determines an additional IR code scheme to which the TV will respond. (0, 16 ~ 24, 64 ~ 65)
    10502              * @since 1.22.0
    10503              * @constant
    10504              */
    10505             FEATURE_LEVEL : 20,
    10506             /**
    10507              * Set to 1 to enable V-Chip (Parental Control) functions. (0 / 1)
    10508              * @since 1.22.0
    10509              * @constant
    10510              */
    10511             V_CHIP : 21,
    10512             /**
    10513              * Sets number of V-Chip blocking hours. (0 ~ 99)
    10514              * @since 1.22.0
    10515              * @constant
    10516              */
    10517             MAX_BLK_HRS : 22,
    10518             /**
    10519              * Set to 1 to retain caption setting set before TV turned OFF. (0 / 1)
    10520              * @since 1.22.0
    10521              * @constant
    10522              */
    10523             CAPTION_LOCK : 23,
    10524             /**
    10525              * Set to 1 to enter Channel Preview/Banks Setup Menu when channel preview key is pressed. (0 / 1)
    10526              * @since 1.22.0
    10527              * @constant
    10528              */
    10529             FUNCTION_PRE : 25,
    10530             /**
    10531              * Pillow speaker selection menu. (0 ~162, 254)
    10532              * @since 1.22.0
    10533              * @constant
    10534              */
    10535             HOSPITAL_MODE : 27,
    10536             /**
    10537              * If set to 0, limits direct access to favorite channels. (0 / 1)
    10538              * @since 1.22.0
    10539              * @constant
    10540              */
    10541             CH_OVERIDE : 28,
    10542             /**
    10543              * Set to 1 to remap the PTC's direct tune channels for Aux inputs from 13xto 9x. (0 / 1)
    10544              * @since 1.22.0
    10545              * @constant
    10546              */
    10547             REMAP_AUX_INPS : 29,
    10548             /**
    10549              * If set to 1, enables ACK feature of MPI. (0 / 1)
    10550              * @since 1.22.0
    10551              * @constant
    10552              */
    10553             ACK_MASK : 30,
    10554             /**
    10555              * Selects poll rate for MPI. (20 ~ 169)
    10556              * @since 1.22.0
    10557              * @constant
    10558              */
    10559             POLL_RATE : 31,
    10560             /**
    10561              * Sets baud rate for MPI. (186 ~ 227)
    10562              * @since 1.22.0
    10563              * @constant
    10564              */
    10565             TIMING_PULSE : 32,
    10566             /**
    10567              *
    10568              * @since 1.22.0
    10569              * @constant
    10570              */
    10571             COMPORT_EN : 34,
    10572             /**
    10573              * Set to 0 to disable HDMI 1. Set to 1 enable HDMI 1. Set to 5 to enable HDMI 1 but disable Hot Plug Detect (HPD) circuit. (0 ~2)
    10574              * @since 1.22.0
    10575              * @constant
    10576              */
    10577             HDMI1_ENABLE : 35,
    10578             /**
    10579              * Set to 1 to enable display panel Video 1 input jack. (0 / 1)
    10580              * @since 1.22.0
    10581              * @constant
    10582              */
    10583             REAR_AUX_EN : 39,
    10584             /**
    10585              * Determines the status of the SIMPLINK feature. (0 / 1)
    10586              * @since 1.22.0
    10587              * @constant
    10588              */
    10589             SIMPLINK_EN : 41,
    10590             /**
    10591              * Sets aux input for Auto sensing. (0 ~ 255)
    10592              * @since 1.22.0
    10593              * @constant
    10594              */
    10595             AUTO_INPUTS : 42,
    10596             /**
    10597              * Sets the starting Aux source (if item 004 STRT CHANNEL is set to 0). (1, 3, 5, 255)
    10598              * @since 1.22.0
    10599              * @constant
    10600              */
    10601             STRT_AUX_SRCE : 46,
    10602             /**
    10603              * Set to 1 for MPI Aux source to be reported as a channel number instead of Channel 0. (0 / 1)
    10604              * @since 1.22.0
    10605              * @constant
    10606              */
    10607             AUX_STATUS : 47,
    10608             /**
    10609              * Sets the menu configuration. (TV Menu -> Sound -> Sound out) (0 ~ 7)
    10610              * @since 1.22.0
    10611              * @constant
    10612              */
    10613             DIS_AUDIO_M : 49,
    10614             /**
    10615              * Set to 1 to disable Channel-Time display. (0 / 1)
    10616              * @since 1.22.0
    10617              * @constant
    10618              */
    10619             DIS_CH_TIME : 53,
    10620             /**
    10621              * Set to 1 to enable custom color for the Channel-Time display. (0 / 1)
    10622              * @since 1.22.0
    10623              * @constant
    10624              */
    10625             EN_CH_T_COL : 69,
    10626             /**
    10627              * Chooses custom foreground color for the Channel-Time display. (0 ~ 7)
    10628              * @since 1.22.0
    10629              * @constant
    10630              */
    10631             FOR_CH_TIME : 70,
    10632             /**
    10633              * Chooses custom background color for the Channel-Time display. (0 ~ 7)
    10634              * @since 1.22.0
    10635              * @constant
    10636              */
    10637             BCK_CH_TIME : 71,
    10638             /**
    10639              * If set to 1 and item 028 CH. OVERIDE is set to 0, �쏯OT AVAILABLE�� (0 / 1)
    10640              * @since 1.22.0
    10641              * @constant
    10642              */
    10643             CH_NOT_AVBLE : 73,
    10644             /**
    10645              * If set to 1 and loss of MPI communication occurs, TV tunes to Start Channel. (0 / 1)
    10646              * @since 1.22.0
    10647              * @constant
    10648              */
    10649             REVERT_CH : 75,
    10650             /**
    10651              * Quick shutoff. (0 ~ 17)
    10652              * @since 1.22.0
    10653              * @constant
    10654              */
    10655             QUICK_SHUTOFF : 77,
    10656             /**
    10657              * User programmable number, most significant byte. (0 ~ 255)
    10658              * @since 1.22.0
    10659              * @constant
    10660              */
    10661             UPN_MSB : 78,
    10662             /**
    10663              * User programmable number, most significant byte - 1. (0 ~ 255)
    10664              * @since 1.22.0
    10665              * @constant
    10666              */
    10667             UPN_MSB_1 : 79,
    10668             /**
    10669              * User programmable number, most significant byte - 2. (0 ~ 255)
    10670              * @since 1.22.0
    10671              * @constant
    10672              */
    10673             UPN_MSB_2 : 80,
    10674             /**
    10675              * User programmable number, least significant byte. (0 ~ 255)
    10676              * @since 1.22.0
    10677              * @constant
    10678              */
    10679             UPN_LSB : 81,
    10680             /**
    10681              * Enforces rigid MPI checksum. (0 / 1)
    10682              * @since 1.22.0
    10683              * @constant
    10684              */
    10685             CHKSUM_ERROR : 82,
    10686             /**
    10687              * Relaxes MPI timing to be compatible with PC-based Windows-controlled systems. (0 ~ 5)
    10688              * @since 1.22.0
    10689              * @constant
    10690              */
    10691             HANDSHK_TIME : 83,
    10692             /**
    10693              * Removes block hours setting for Parental Control and makes block permanent. (0 / 1)
    10694              * @since 1.22.0
    10695              * @constant
    10696              */
    10697             PERMANENT_BLK : 84,
    10698             /**
    10699              * Adjusts video mute time when channel is changed. (0 ~ 50)
    10700              * @since 1.22.0
    10701              * @constant
    10702              */
    10703             V_MUTE_TIME : 86,
    10704             /**
    10705              * Set to 1 to enable RGB Aux input. (0 / 1)
    10706              * @since 1.22.0
    10707              * @constant
    10708              */
    10709             REAR_RGB_EN : 87,
    10710             /**
    10711              * If set to 1, audio is muted if no signal is present. (0 / 1)
    10712              * @since 1.22.0
    10713              * @constant
    10714              */
    10715             EN_NOISE_MUTE : 88,
    10716             /**
    10717              * If set to 1, keyboard is locked out, IR is still functional. (0 / 1)
    10718              * @since 1.22.0
    10719              * @constant
    10720              */
    10721             KEY_LOCK : 90,
    10722             /**
    10723              * Set to 0 to disable HDMI 2. Set to 1 to enable HDMI 2. (0 ~ 2)
    10724              * @since 1.22.0
    10725              * @constant
    10726              */
    10727             HDMI2_ENABLE : 91,
    10728             /**
    10729              * Set to 0 to disable HDMI 3. Set to 1 to enable HDMI 3. (0 ~ 2)
    10730              * @since 1.22.0
    10731              * @constant
    10732              */
    10733             HDMI3_ENABLE : 92,
    10734             /**
    10735              * Set to 1 to enable the LG proprieatary Remote Jack Pack feature interface. (0 / 1)
    10736              * @since 1.22.0
    10737              * @constant
    10738              */
    10739             RJP_AVAILABLE : 93,
    10740             /**
    10741              * Set to 0 to disable feature on Function Menu. Set to 1 to enable feature on Function Menu. (0 / 1)
    10742              * @since 1.22.0
    10743              * @constant
    10744              */
    10745             SAP_MENU_EN : 94,
    10746             /**
    10747              * Sets default aspect ratio at power up. See detailed descriptions and item 106. (0 ~ 4)
    10748              * @since 1.22.0
    10749              * @constant
    10750              */
    10751             DEF_ASP_RATIO : 96,
    10752             /**
    10753              * Sets external audio output. (0 ~ 9)
    10754              * @since 1.22.0
    10755              * @constant
    10756              */
    10757             AUDIO_OUTPUT : 97,
    10758             /**
    10759              * Set to 0 to disable Pro:Centric operation. Set to 1 for Flash Mode. Set to 2 for GEM (Java Application) Mode. Set to 3 for HTML Mode. (0 ~ 3)
    10760              * @since 1.22.0
    10761              * @constant
    10762              */
    10763             PROCENTRIC : 98,
    10764             /**
    10765              * Sets the level of the TV picture back lighting. (1 ~ 202, 255)
    10766              * @since 1.22.0
    10767              * @constant
    10768              */
    10769             BACK_LIGHTING : 99,
    10770             /**
    10771              * Selects HDMI connection for display panel: 3=HDMI1, 4=HDMI2, 5=HDMI3. (3 ~5)
    10772              * @since 1.22.0
    10773              * @constant
    10774              */
    10775             VIDEO_INTERFACE : 100,
    10776             /**
    10777              * Set to 2 to disalbe the STB's MMR feature. (0 / 2)
    10778              * @since 1.22.0
    10779              * @constant
    10780              */
    10781             IR_FEEDBACK : 101,
    10782             /**
    10783              * Selects ATSC band. (0 ~ 4)
    10784              * @since 1.22.0
    10785              * @constant
    10786              */
    10787             ATSC_BAND : 102,
    10788             /**
    10789              * Set to 1 (default) for Physical Channel scan. Set to 0 for Virtual Channel scan. (0 / 1)
    10790              * @since 1.22.0
    10791              * @constant
    10792              */
    10793             ATSC_TUNE_MODE : 103,
    10794             /**
    10795              * Selects Minor Start Channel. Set to 0 for NTSC. (0 ~ 255)
    10796              * @since 1.22.0
    10797              * @constant
    10798              */
    10799             START_MINOR_CH : 104,
    10800             /**
    10801              * Sets format for video output: 1=720p, 4=1080p, 5=1366x768, 6=2160p. (1, 4, 5, 6)
    10802              * @since 1.22.0
    10803              * @constant
    10804              */
    10805             VID_OUT_FORMAT : 105,
    10806             /**
    10807              * To retain set aspect ratio on power cycle, set to 1. Set to 0 for default ratio on power cycle. (0 / 1)
    10808              * @since 1.22.0
    10809              * @constant
    10810              */
    10811             ASP_RATIO_LOCK : 106,
    10812             /**
    10813              * Selects the type of banner to display during channel change. (0 / 1)
    10814              * @since 1.22.0
    10815              * @constant
    10816              */
    10817             BANNER_SELECT : 107,
    10818             /**
    10819              * Sets display panel baud rate: 0=1200, 1=2400, 2=9600, 3=115200. (0 ~ 3)
    10820              * @since 1.22.0
    10821              * @constant
    10822              */
    10823             PANEL_COM : 108,
    10824             /**
    10825              * Set to 1 to enable handshaking. (0 / 1)
    10826              * @since 1.22.0
    10827              * @constant
    10828              */
    10829             PANEL_HNDSHAKE : 109,
    10830             /**
    10831              * Sets the display panel communication delay time. (0 ~ 15)
    10832              * @since 1.22.0
    10833              * @constant
    10834              */
    10835             PANEL_DELAY : 110,
    10836             /**
    10837              * Determines a preset fixed volume level to set in the display panel.(0 ~ 15)
    10838              * @since 1.22.0
    10839              * @constant
    10840              */
    10841             PANEL_VOL_PRE : 111,
    10842             /**
    10843              * Sets the volume in the panel for start volume. (0 ~ 63)
    10844              * @since 1.22.0
    10845              * @constant
    10846              */
    10847             PANEL_STRT_VOL : 112,
    10848             /**
    10849              * Sets display panel communication command set. (0 ~ 4)
    10850              * @since 1.22.0
    10851              * @constant
    10852              */
    10853             PANEL_TYPE : 113,
    10854             /**
    10855              * Keeps volume level of panel in range. (0 ~ 63)
    10856              * @since 1.22.0
    10857              * @constant
    10858              */
    10859             PANEL_MIN_VOL : 114,
    10860             /**
    10861              * Keeps volume level of panel in range. (0 ~ 63)
    10862              * @since 1.22.0
    10863              * @constant
    10864              */
    10865             PANEL_MAX_VOL : 115,
    10866             /**
    10867              * Set to 0 for Normal. Set to 1 for Blank. (0 / 1)
    10868              * @since 1.22.0
    10869              * @constant
    10870              */
    10871             VIDEO_MUTE_EN : 116,
    10872             /**
    10873              * Set to 0 for Normal. Set to 1 to load presets for all Installer Menu settings. (0 / 1)
    10874              * @since 1.22.0
    10875              * @constant
    10876              */
    10877             FACT_DEFAULT : 117,
    10878             /**
    10879              * Determines the powered status of the embedded b-LAN module and the GAME CONTROL/MPI port. (1, 3, 7)
    10880              * @since 1.22.0
    10881              * @constant
    10882              */
    10883             POWER_SAVINGS : 118,
    10884             /**
    10885              * Set to 0 to disable. Set to the RF channel number for the Data Channel of the Pro:Centric server. (0 ~ 135, 253, 255)
    10886              * @since 1.22.0
    10887              * @constant
    10888              */
    10889             DATA_CHANNEL : 119,
    10890             /**
    10891              * Sets the hour for Wake On RF. The value ��128�� is displayed as �쏰FF.�� Directly entering 128 turns the Wake On RF feature OFF. (0 ~ 23, 128)
    10892              * @since 1.22.0
    10893              * @constant
    10894              */
    10895             UPDATE_TIME_HR : 121,
    10896             /**
    10897              * Sets the minute for Wake On RF. (0 ~ 59, 255)
    10898              * @since 1.22.0
    10899              * @constant
    10900              */
    10901             UPDATE_TIME_MN : 122
    10902         };
    10903         /**
    10904          * Gets the current value of installer menu item.
    10905          *
    10906          * @param {Object} param
    10907          * <ul>
    10908          *   <li>{Number} param.key [Required] - installer menu item type. Please refer to <a href="hcap.property.InstallerMenuItem.html">hcap.property.InstallerMenuItem</a>.</li>
    10909          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    10910          *   <pre class="code prettyprint">
    10911          *   param.onSuccess = function (param) {
    10912          *       // {Number} param.value - installer menu item value of the requested type. Please refer to <a href="hcap.property.InstallerMenuItem.html">hcap.property.InstallerMenuItem</a>.
    10913          *   }</pre>
    10914          *   </li>
    10915          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    10916          *   <pre class="code prettyprint">
    10917          *   param.onFailure = function (param) {
    10918          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    10919          *   }</pre>
    10920          *   </li>
    10921          * </ul>
    10922          *
    10923          * @see
    10924          * <a href="hcap.property.InstallerMenuItem.html">hcap.property.InstallerMenuItem</a><br>
    10925          * <a href="hcap.property.html#.setInstallerMenuItem">hcap.property.setInstallerMenuItem()</a><br>
    10926          *
    10927          * @since 1.22.0
    10928          *
    10929          * @example
    10930          * hcap.property.getInstallerMenuItem({
    10931          *      "key" : hcap.property.InstallerMenuItem.INSTALLER_SEQ,
    10932          *      "onSuccess" : function(s) {
    10933          *          console.log("onSuccess : property value = " + s.value);
    10934          *      },
    10935          *      "onFailure" : function(f) {
    10936          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    10937          *      }
    10938          * });
    10939          */
    10940         hcap.property.getInstallerMenuItem = function (param) {
    10941             hcap_command("get_installer_menu_item", param);
    10942         };
    10943         /**
    10944          * Sets the installer menu item value.
    10945          *
    10946          * @param {Object} param
    10947          * <ul>
    10948          *   <li>{Number} param.key [Required] - installer menu item type. Please refer to <a href="hcap.property.InstallerMenuItem.html">hcap.property.InstallerMenuItem</a>.</li>
    10949          *   <li>{Number} param.value [Required] - picture property value of the requested type. Please refer to <a href="hcap.property.InstallerMenuItem.html">hcap.property.InstallerMenuItem</a>.</li>
    10950          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    10951          *   <pre class="code prettyprint">
    10952          *   param.onSuccess = function() {
    10953          *       // No Parameter.
    10954          *   }</pre>
    10955          *   </li>
    10956          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    10957          *   <pre class="code prettyprint">
    10958          *   param.onFailure = function (param) {
    10959          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    10960          *   }</pre>
    10961          *   </li>
    10962          * </ul>
    10963          *
    10964          * @see
    10965          * <a href="hcap.property.InstallerMenuItem.html">hcap.property.InstallerMenuItem</a><br>
    10966          * <a href="hcap.property.html#.getInstallerMenuItem">hcap.property.getInstallerMenuItem()</a><br>
    10967          *
    10968          * @since 1.22.0
    10969          *
    10970          * @example
    10971          * hcap.property.setInstallerMenuItem({
    10972          *      "key" : hcap.property.InstallerMenuItem.INSTALLER_SEQ,
    10973          *      "value" : 1,
    10974          *      "onSuccess" : function() {
    10975          *          console.log("onSuccess");
    10976          *      },
    10977          *      "onFailure" : function(f) {
    10978          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    10979          *      }
    10980          * });
    10981          */
    10982         hcap.property.setInstallerMenuItem = function (param) {
    10983             hcap_command("set_installer_menu_item", param);
    10984         };
    10985         /**
    10986          * @namespace hcap.Media
    10987          */
    10988         /**
    10989          * Interface for displaying and controlling the playback of media on the TV.
    10990          * This class is not to be constructed directly (by user code).
    10991          * hcap.Media has a change of status as follows.
    10992          * <br><image src="./image/media_status.jpg">
    10993          * @class
    10994          * @see
    10995          * <a href="hcap.html#.createMedia">hcap.Media.createMedia()</a><br>
    10996          */
    10997         hcap.Media = function () {};
    10998         /**
    10999          * Starts up media channel which is one of input source on TV. So you should call this method before making hcap.Media object.
    11000          * And you should call hcap.Media.shutDown() after invoking hcap.Media.destroy() for finalizing media channel.
    11001          *
    11002          * @param {Object} param
    11003          * <ul>
    11004          *   <li>{Function} param.onSuccess [Optional] - success callback function. <br>
    11005          *   If a media channel starts up, this callback function will be invoked.
    11006          *   <pre class="code prettyprint">
    11007          *   param.onSuccess = function() {
    11008          *       // No parameter.
    11009          *   }</pre>
    11010          *   </li>
    11011          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    11012          *   <pre class="code prettyprint">
    11013          *   param.onFailure = function (param) {
    11014          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    11015          *   }</pre>
    11016          *   </li>
    11017          * </ul>
    11018          *
    11019          *
    11020          *
    11021          * @since 1.8
    11022          *
    11023          * @see
    11024          *  <a href="hcap.Media.html#.shutDown">hcap.Media.shutDown()</a><br>
    11025          *
    11026          * @example
    11027          * hcap.Media.startUp({
    11028          *      "onSuccess" : function() {
    11029          *          console.log("onSuccess");
    11030          *      },
    11031          *      "onFailure" : function(f) {
    11032          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    11033          *      }
    11034          * });
    11035          */
    11036         hcap.Media.startUp = function (param) {
    11037             hcap_command("media_startup", param);
    11038         };
    11039         /**
    11040          * Shuts down media channel.
    11041          * You should call hcap.Media.shutDown() after invoking hcap.Media.destroy() if there is no more need to use media player.
    11042          * After this method is invoked, TV input will be changed to last configuration without any notification.
    11043          *
    11044          * @param {Object} param
    11045          * <ul>
    11046          *   <li>{Function} param.onSuccess [Optional] - success callback function. <br>
    11047          *   If a media channel shuts down, this callback function will be invoked.
    11048          *   <pre class="code prettyprint">
    11049          *   param.onSuccess = function() {
    11050          *       // No parameter.
    11051          *   }</pre>
    11052          *   </li>
    11053          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    11054          *   <pre class="code prettyprint">
    11055          *   param.onFailure = function (param) {
    11056          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    11057          *   }</pre>
    11058          *   </li>
    11059          * </ul>
    11060          *
    11061          *
    11062          * @since 1.8
    11063          *
    11064          * @see
    11065          *  <a href="hcap.Media.html#.startUp">hcap.Media.startUp()</a><br>
    11066          *
    11067          * @example
    11068          * hcap.Media.startUp({
    11069          *      "onSuccess" : function() {
    11070          *          console.log("onSuccess");
    11071          *          var media = hcap.Media.createMedia({
    11072          *              "url" : "http://media_server_url/media_file.avi",
    11073          *              "mimeType" : "video/mp4"
    11074          *          });
    11075          *          media.play({
    11076          *              "onSuccess" : function() {
    11077          *                  console.log("onSuccess");
    11078          *                  media.stop({
    11079          *                      "onSuccess" : function() {
    11080          *                          console.log("onSuccess");
    11081          *                          media.destroy({
    11082          *                              "onSuccess" : function() {
    11083          *                                  console.log("onSuccess");
    11084          *                                  hcap.Media.shutDown({
    11085          *                                      "onSuccess" : function() {
    11086          *                                          console.log("onSuccess");
    11087          *                                      },
    11088          *                                      "onFailure" : function(f) {
    11089          *                                          console.log("onFailure : errorMessage = " + f.errorMessage);
    11090          *                                      }
    11091          *                                  });
    11092          *                              },
    11093          *                              "onFailure" : function(f) {
    11094          *                                  console.log("onFailure : errorMessage = " + f.errorMessage);
    11095          *                              }
    11096          *                          });
    11097          *                      },
    11098          *                      "onFailure" : function(f) {
    11099          *                          console.log("onFailure : errorMessage = " + f.errorMessage);
    11100          *                      }
    11101          *                  });
    11102          *              },
    11103          *              "onFailure" : function(f) {
    11104          *                  console.log("onFailure : errorMessage = " + f.errorMessage);
    11105          *              }
    11106          *          });
    11107          *      },
    11108          *      "onFailure" : function(f) {
    11109          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    11110          *      }
    11111          * });
    11112          */
    11113         hcap.Media.shutDown = function (param) {
    11114             hcap_command("media_shutdown", param);
    11115         };
    11116         /**
    11117          * Create Media object.
    11118          * The Media object provides the ability to play back video files and stream on a device.
    11119          * <br/>
    11120          * If an object is passed to the settings parameter, the function should try to initialize the internal
    11121          * media player with the provided settings. If successful, the function should return an instance of
    11122          * hcap.Media with a standardized interface for the internal media player. If the functions fails
    11123          * to instantiate the internal media player to a playable state for any reason (such as media not found
    11124          * or supported, or only one media player supported at a time), then the function should return null.<br/>
    11125          * <br/>
    11126          * If no object is passed to the settings parameter, then the function should return the last
    11127          * non-destroyed hcap.Media instance, or null if there are no active media players.<br/>
    11128          *
    11129          * @param {Object} param
    11130          * <ul>
    11131          *   <li>{String} param.url [Required] - media url. As of API, the following protocols should be accepted.</li>
    11132          * <div align=center>
    11133          * <table class="hcap_spec" width=400>
    11134          *   <thead><tr><th>url</th></tr></thead>
    11135          *   <tbody>
    11136          *     <tr class="odd"><th class="odd">RTSP - (rtsp://1.2.3.4:554/video.mp4)</th></tr>
    11137          *     <tr><th>HTTP - (http://lge.com/movie.mp4)</th></tr>
    11138          *     <tr class="odd"><th class="odd">FILE - (file:///tmp/usb/usb1/example.mp4)</th></tr>
    11139          *   </tbody>
    11140          * </table>
    11141          * </div>
    11142          *   <li>{String} param.mimeType [Required] - video mime type. please refer to table below.</li>
    11143          * <div align=center>
    11144          * <table class="hcap_spec" width=400>
    11145          *   <thead><tr><th>mimeType</th></tr></thead>
    11146          *   <tbody>
    11147          *       <tr class="odd"><th>'audio/x-ms-wma'</th></tr>
    11148          *       <tr><th>'audio/mpeg'</th></tr>
    11149          *       <tr class="odd"><th>'audio/mp3'</th></tr>
    11150          *       <tr><th>'video/mp4'</th></tr>
    11151          *       <tr class="odd"><th>'video/mpeg4'</th></tr>
    11152          *       <tr><th>'video/x-m4v'</th></tr>
    11153          *       <tr class="odd"><th>'video/mpeg'</th></tr>
    11154          *       <tr><th>'video/x-ms-wmv'</th></tr>
    11155          *       <tr class="odd"><th>'video/x-ms-asf'</th></tr>
    11156          *       <tr><th>'video/x-msvideo'</th></tr>
    11157          *       <tr class="odd"><th>'video/x-flv'</th></tr>
    11158          *       <tr><th>'application/x-mpegURL' (HTTP supports only)</th></tr>
    11159          *   </tbody>
    11160          * </table>
    11161          * </div>
    11162          * <li>{String} param.subtitleUrl [Optional] - subtitle url. As of API, the following protocols should be accepted.</li>
    11163          * <div align=center>
    11164          * <table class="hcap_spec" width=400>
    11165          *   <thead><tr><th>subtitleUrl</th></tr></thead>
    11166          *   <tbody>
    11167          *     <tr class="odd"><th class="odd">HTTP - (http://lge.com/movie.smi)</th></tr>
    11168          *   </tbody>
    11169          * </table>
    11170          * </div>
    11171          * </ul>
    11172          *
    11173          * @return {Object} hcap.Media
    11174          *
    11175          * @since 1.3.1
    11176          *
    11177          * @see
    11178          *  <a href="hcap.Media.html#play">hcap.Media.play()</a><br>
    11179          *
    11180          * @example
    11181          * hcap.Media.startUp({
    11182          *      "onSuccess" : function() {
    11183          *          console.log("onSuccess");
    11184          *          var media = hcap.Media.createMedia({
    11185          *              "url" : "http://media_server_url/media_file.avi",
    11186          *              "mimeType" : "video/mp4",
    11187          *              "subtitleUrl" : "http://media_server_url/media_file.smi"
    11188          *          });
    11189          *      },
    11190          *      "onFailure" : function(f) {
    11191          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    11192          *      }
    11193          * });
    11194          */
    11195         hcap.Media.createMedia = function (param) {
    11196             if (param === null) {
    11197                 return media_object;
    11198             }
    11199             if (media_object === null && param.url !== null && param.mimeType !== null) {
    11200                 media_object = new hcap.Media();
    11201                 hcap_command("media_create_media", param);
    11202                 return media_object;
    11203             }
    11204             return null;
    11205         };
    11206         /**
    11207          * Starts playing a media file or stream.
    11208          * If the media file starts to play, then 'play_start' event will be invoked.
    11209          * @param {Object} param
    11210          * <ul>
    11211          *   <li>{Number} param.repeatCount [Optional] - repeat count. Default setting value is 1. If you want to play a media stream in infinite loop, set 0. </li>
    11212          *   <li>{Function} param.onSuccess [Optional] - success callback function. <br>
    11213          *   If a media is played already, this callback function will be invoked.
    11214          *   <pre class="code prettyprint">
    11215          *   param.onSuccess = function() {
    11216          *       // No parameter.
    11217          *   }</pre>
    11218          *   </li>
    11219          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    11220          *   <pre class="code prettyprint">
    11221          *   param.onFailure = function (param) {
    11222          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    11223          *   }</pre>
    11224          *   </li>
    11225          * </ul>
    11226          *
    11227          * @since 1.3.1
    11228          * @since 1.8 repeatCount
    11229          *
    11230          * @see
    11231          *  <a href="hcap.Media.html#stop">hcap.Media.stop()</a><br>
    11232          *  <a href="hcap.Media.html#pause">hcap.Media.pause()</a><br>
    11233          *  <a href="hcap.Media.html#resume">hcap.Media.resume()</a><br>
    11234          *  <a href="hcap.Media.html#destroy">hcap.Media.destroy()</a><br>
    11235          *  <a href="_global_.html#event:media_event_received">media_event_received</a><br>
    11236          * @example
    11237          * hcap.Media.startUp({
    11238          *      "onSuccess" : function() {
    11239          *          console.log("onSuccess");
    11240          *          var media = hcap.Media.createMedia({
    11241          *              "url" : "http://media_server_url/media_file.avi",
    11242          *              "mimeType" : "video/mp4",
    11243          *              "subtitleUrl" : "http://media_server_url/media_file.smi"
    11244          *          });
    11245          *          media.play({
    11246          *              "repeatCount" : 2,
    11247          *              "onSuccess" : function() {
    11248          *                  console.log("onSuccess");
    11249          *              },
    11250          *              "onFailure" : function(f) {
    11251          *                  console.log("onFailure : errorMessage = " + f.errorMessage);
    11252          *              }
    11253          *          });
    11254          *      },
    11255          *      "onFailure" : function(f) {
    11256          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    11257          *      }
    11258          * });
    11259          */
    11260         hcap.Media.prototype.play = function (param) {
    11261             if (media_object === null) {
    11262                 param.onFailure({"errorMessage" : "already destroyed."});
    11263                 return;
    11264             }
    11265             hcap_command("media_play", param);
    11266         };
    11267         /**
    11268          * Pause the media playback.
    11269          *
    11270          * @param {Object} param
    11271          * <ul>
    11272          *   <li>{Function} param.onSuccess [Optional] - success callback function. <br>
    11273          *   If a media is paused already, this callback function will be invoked.
    11274          *   <pre class="code prettyprint">
    11275          *   param.onSuccess = function() {
    11276          *       // No parameter.
    11277          *   }</pre>
    11278          *   </li>
    11279          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    11280          *   <pre class="code prettyprint">
    11281          *   param.onFailure = function (param) {
    11282          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    11283          *   }</pre>
    11284          *   </li>
    11285          * </ul>
    11286          *
    11287          * @since 1.3.1
    11288          *
    11289          * @see
    11290          *  <a href="hcap.Media.html#play">hcap.Media.play()</a><br>
    11291          *  <a href="hcap.Media.html#resume">hcap.Media.resume()</a><br>
    11292          *  <a href="hcap.Media.html#stop">hcap.Media.stop()</a><br>
    11293          *  <a href="hcap.Media.html#destroy">hcap.Media.destroy()</a><br>
    11294          *
    11295          * @example
    11296          * hcap.Media.startUp({
    11297          *      "onSuccess" : function() {
    11298          *          console.log("onSuccess");
    11299          *          var media = hcap.Media.createMedia({
    11300          *              "url" : "http://media_server_url/media_file.avi",
    11301          *              "mimeType" : "video/mp4",
    11302          *              "subtitleUrl" : "http://media_server_url/media_file.smi"
    11303          *          });
    11304          *          media.play({
    11305          *              "repeatCount" : 2,
    11306          *              "onSuccess" : function() {
    11307          *                  console.log("onSuccess");
    11308          *                  media.pause({
    11309          *                      "onSuccess" : function() {
    11310          *                          console.log("onSuccess");
    11311          *                      },
    11312          *                      "onFailure" : function(f) {
    11313          *                          console.log("onFailure : errorMessage = " + f.errorMessage);
    11314          *                      }
    11315          *                  });
    11316          *              },
    11317          *              "onFailure" : function(f) {
    11318          *                  console.log("onFailure : errorMessage = " + f.errorMessage);
    11319          *              }
    11320          *          });
    11321          *      },
    11322          *      "onFailure" : function(f) {
    11323          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    11324          *      }
    11325          * });
    11326          */
    11327         hcap.Media.prototype.pause = function (param) {
    11328             if (media_object === null) {
    11329                 param.onFailure({"errorMessage" : "already destroyed."});
    11330                 return;
    11331             }
    11332             hcap_command("media_pause", param);
    11333         };
    11334         /**
    11335          * Resume the media playback.
    11336          *
    11337          * @param {Object} param
    11338          * <ul>
    11339          *   <li>{Function} param.onSuccess [Optional] - success callback function. <br>
    11340          *   If a media is resumed already, this callback function will be invoked.
    11341          *   <pre class="code prettyprint">
    11342          *   param.onSuccess = function() {
    11343          *       // No parameter.
    11344          *   }</pre>
    11345          *   </li>
    11346          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    11347          *   <pre class="code prettyprint">
    11348          *   param.onFailure = function (param) {
    11349          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    11350          *   }</pre>
    11351          *   </li>
    11352          * </ul>
    11353          *
    11354          * @since 1.3.1
    11355          *
    11356          * @see
    11357          *  <a href="hcap.Media.html#play">hcap.Media.play()</a><br>
    11358          *  <a href="hcap.Media.html#stop">hcap.Media.stop()</a><br>
    11359          *  <a href="hcap.Media.html#pause">hcap.Media.pause()</a><br>
    11360          *  <a href="hcap.Media.html#destroy">hcap.Media.destroy()</a><br>
    11361          *
    11362          * @example
    11363          * hcap.Media.startUp({
    11364          *      "onSuccess" : function() {
    11365          *          console.log("onSuccess");
    11366          *          var media = hcap.Media.createMedia({
    11367          *              "url" : "http://media_server_url/media_file.avi",
    11368          *              "mimeType" : "video/mp4",
    11369          *              "subtitleUrl" : "http://media_server_url/media_file.smi"
    11370          *          });
    11371          *          media.play({
    11372          *              "repeatCount" : 2,
    11373          *              "onSuccess" : function() {
    11374          *                  console.log("onSuccess");
    11375          *                  media.pause({
    11376          *                      "onSuccess" : function() {
    11377          *                          console.log("onSuccess");
    11378          *                          media.resume({
    11379          *                              "onSuccess" : function() {
    11380          *                                  console.log("onSuccess");
    11381          *                              },
    11382          *                              "onFailure" : function(f) {
    11383          *                                  console.log("onFailure : errorMessage = " + f.errorMessage);
    11384          *                              }
    11385          *                          });
    11386          *                      },
    11387          *                      "onFailure" : function(f) {
    11388          *                          console.log("onFailure : errorMessage = " + f.errorMessage);
    11389          *                      }
    11390          *                  });
    11391          *              },
    11392          *              "onFailure" : function(f) {
    11393          *                  console.log("onFailure : errorMessage = " + f.errorMessage);
    11394          *              }
    11395          *          });
    11396          *      },
    11397          *      "onFailure" : function(f) {
    11398          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    11399          *      }
    11400          * });
    11401          */
    11402         hcap.Media.prototype.resume = function (param) {
    11403             if (media_object === null) {
    11404                 param.onFailure({"errorMessage" : "already destroyed."});
    11405                 return;
    11406             }
    11407             hcap_command("media_resume", param);
    11408         };
    11409         /**
    11410          * Stops the media playback.
    11411          *
    11412          * @param {Object} param
    11413          * <ul>
    11414          *   <li>{Function} param.onSuccess [Optional] - success callback function. <br>
    11415          *   If a media is stopped already, this callback function will be invoked.
    11416          *   <pre class="code prettyprint">
    11417          *   param.onSuccess = function() {
    11418          *       // No parameter.
    11419          *   }</pre>
    11420          *   </li>
    11421          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    11422          *   <pre class="code prettyprint">
    11423          *   param.onFailure = function (param) {
    11424          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    11425          *   }</pre>
    11426          *   </li>
    11427          * </ul>
    11428          *
    11429          * @since 1.3.1
    11430          *
    11431          * @see
    11432          *  <a href="hcap.Media.html#play">hcap.Media.play()</a><br>
    11433          *  <a href="hcap.Media.html#pause">hcap.Media.pause()</a><br>
    11434          *  <a href="hcap.Media.html#resume">hcap.Media.resume()</a><br>
    11435          *  <a href="hcap.Media.html#destroy">hcap.Media.destroy()</a><br>
    11436          *
    11437          * @example
    11438          * hcap.Media.startUp({
    11439          *      "onSuccess" : function() {
    11440          *          console.log("onSuccess");
    11441          *          var media = hcap.Media.createMedia({
    11442          *              "url" : "http://media_server_url/media_file.avi",
    11443          *              "mimeType" : "video/mp4",
    11444          *              "subtitleUrl" : "http://media_server_url/media_file.smi"
    11445          *          });
    11446          *          media.play({
    11447          *              "onSuccess" : function() {
    11448          *                  console.log("onSuccess");
    11449          *                  media.stop({
    11450          *                      "onSuccess" : function() {
    11451          *                          console.log("onSuccess");
    11452          *                      },
    11453          *                      "onFailure" : function(f) {
    11454          *                          console.log("onFailure : errorMessage = " + f.errorMessage);
    11455          *                      }
    11456          *                  });
    11457          *              },
    11458          *              "onFailure" : function(f) {
    11459          *                  console.log("onFailure : errorMessage = " + f.errorMessage);
    11460          *              }
    11461          *          });
    11462          *      },
    11463          *      "onFailure" : function(f) {
    11464          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    11465          *      }
    11466          * });
    11467          */
    11468         hcap.Media.prototype.stop = function (param) {
    11469             if (media_object === null) {
    11470                 param.onFailure({"errorMessage" : "already destroyed."});
    11471                 return;
    11472             }
    11473             hcap_command("media_stop", param);
    11474         };
    11475         /**
    11476          * Destroy the media playback. If you want to request channel change during playback then you should destroy media object.
    11477          * Before destorying the media, please check the current media status is the stop.
    11478          * If the media status is not the stop, please call hcap.Media.stop() and then call hcap.Media.destroy().
    11479          *
    11480          * @param {Object} param
    11481          * <ul>
    11482          *   <li>{Function} param.onSuccess [Optional] - success callback function. <br>
    11483          *   If a media is destroyed already, this callback function will be invoked.
    11484          *   <pre class="code prettyprint">
    11485          *   param.onSuccess = function() {
    11486          *       // No parameter.
    11487          *   }</pre>
    11488          *   </li>
    11489          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    11490          *   <pre class="code prettyprint">
    11491          *   param.onFailure = function (param) {
    11492          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    11493          *   }</pre>
    11494          *   </li>
    11495          * </ul>
    11496          *
    11497          * @since 1.3.1
    11498          *
    11499          * @see
    11500          *  <a href="hcap.Media.html#play">hcap.Media.play()</a><br>
    11501          *  <a href="hcap.Media.html#pause">hcap.Media.pause()</a><br>
    11502          *  <a href="hcap.Media.html#resume">hcap.Media.resume()</a><br>
    11503          *  <a href="hcap.Media.html#stop">hcap.Media.stop()</a><br>
    11504          *
    11505          * @example
    11506          * hcap.Media.startUp({
    11507          *      "onSuccess" : function() {
    11508          *          console.log("onSuccess");
    11509          *          var media = hcap.Media.createMedia({
    11510          *              "url" : "http://media_server_url/media_file.avi",
    11511          *              "mimeType" : "video/mp4"
    11512          *          });
    11513          *          media.play({
    11514          *              "onSuccess" : function() {
    11515          *                  console.log("onSuccess");
    11516          *                  media.stop({
    11517          *                      "onSuccess" : function() {
    11518          *                          console.log("onSuccess");
    11519          *                          media.destroy({
    11520          *                              "onSuccess" : function() {
    11521          *                                  console.log("onSuccess");
    11522          *                                  hcap.Media.shutDown({
    11523          *                                      "onSuccess" : function() {
    11524          *                                          console.log("onSuccess");
    11525          *                                      },
    11526          *                                      "onFailure" : function(f) {
    11527          *                                          console.log("onFailure : errorMessage = " + f.errorMessage);
    11528          *                                      }
    11529          *                                  });
    11530          *                              },
    11531          *                              "onFailure" : function(f) {
    11532          *                                  console.log("onFailure : errorMessage = " + f.errorMessage);
    11533          *                              }
    11534          *                          });
    11535          *                      },
    11536          *                      "onFailure" : function(f) {
    11537          *                          console.log("onFailure : errorMessage = " + f.errorMessage);
    11538          *                      }
    11539          *                  });
    11540          *              },
    11541          *              "onFailure" : function(f) {
    11542          *                  console.log("onFailure : errorMessage = " + f.errorMessage);
    11543          *              }
    11544          *          });
    11545          *      },
    11546          *      "onFailure" : function(f) {
    11547          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    11548          *      }
    11549          * });
    11550          */
    11551         hcap.Media.prototype.destroy = function (param) {
    11552             if (media_object === null) {
    11553                 param.onFailure({"errorMessage" : "already destroyed."});
    11554                 return;
    11555             }
    11556             hcap_command("media_destroy", param);
    11557             media_object = null;
    11558         };
    11559         /**
    11560          * Gets information of media. For example, the title of the currently loaded media.
    11561          *
    11562          * @param {Object} param
    11563          * <ul>
    11564          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    11565          *   <pre class="code prettyprint">
    11566          *   param.onSuccess = function (param) {
    11567          *       // {Boolean} param.videoAvailable - whether the video is available.
    11568          *       // {String} param.title - a human readable title of the current media.
    11569          *       //     If the title is undetermined, this method returns null.
    11570          *       // {Number} param.contentLengthInMs - length (in milliseconds) of the media.
    11571          *       //     If the length is infinite/indeterminable, then this method returns null.
    11572          *   }</pre>
    11573          *   </li>
    11574          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    11575          *   <pre class="code prettyprint">
    11576          *   param.onFailure = function (param) {
    11577          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    11578          *   }</pre>
    11579          *   </li>
    11580          * </ul>
    11581          *
    11582          * @since 1.3.1
    11583          *
    11584          *
    11585          * @example
    11586          * hcap.Media.startUp({
    11587          *      "onSuccess" : function() {
    11588          *          console.log("onSuccess");
    11589          *          var media = hcap.Media.createMedia({
    11590          *              "url" : "http://media_server_url/media_file.avi",
    11591          *              "mimeType" : "video/mp4",
    11592          *              "subtitleUrl" : "http://media_server_url/media_file.smi"
    11593          *          });
    11594          *          media.play({
    11595          *              "onSuccess" : function() {
    11596          *                  console.log("onSuccess");
    11597          *                  media.getInformation({
    11598          *                      "onSuccess" : function(s) {
    11599          *                          console.log("onSuccess" +
    11600          *                              "\nvideoAvailable = " + s.videoAvailable +
    11601          *                              "\ntitle = " + s.title +
    11602          *                              "\ncontentLengthInMs = " + s.contentLengthInMs);
    11603          *                      },
    11604          *                      "onFailure" : function(f) {
    11605          *                          console.log("onFailure : errorMessage = " + f.errorMessage);
    11606          *                      }
    11607          *                  });
    11608          *              },
    11609          *              "onFailure" : function(f) {
    11610          *                  console.log("onFailure : errorMessage = " + f.errorMessage);
    11611          *              }
    11612          *          });
    11613          *      },
    11614          *      "onFailure" : function(f) {
    11615          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    11616          *      }
    11617          * });
    11618          */
    11619         hcap.Media.prototype.getInformation = function (param) {
    11620             if (media_object === null) {
    11621                 param.onFailure({"errorMessage" : "already destroyed."});
    11622                 return;
    11623             }
    11624             hcap_command("media_get_information", param);
    11625         };
    11626         /**
    11627          * Gets the position (in milliseconds) in the media that the player is currently at.
    11628          * If th length of the media is infinite/indeterminable, this function returns the number of milliseconds the player has been playing the media. The default position, before the video has been played, is 0 (unless override by the position setting).
    11629          *
    11630          * @param {Object} param
    11631          * <ul>
    11632          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    11633          *   <pre class="code prettyprint">
    11634          *   param.onSuccess = function (param) {
    11635          *       // {Number} param.positionInMs - number of milliseconds the player is into the media
    11636          *   }</pre>
    11637          *   </li>
    11638          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    11639          *   <pre class="code prettyprint">
    11640          *   param.onFailure = function (param) {
    11641          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    11642          *   }</pre>
    11643          *   </li>
    11644          * </ul>
    11645          *
    11646          * @since 1.3.1
    11647          *
    11648          * @see
    11649          *  <a href="hcap.Media.html#setPlayPosition">hcap.Media.setPlayPosition()</a><br>
    11650          *
    11651          * @example
    11652          * hcap.Media.startUp({
    11653          *      "onSuccess" : function() {
    11654          *          console.log("onSuccess");
    11655          *          var media = hcap.Media.createMedia({
    11656          *              "url" : "http://media_server_url/media_file.avi",
    11657          *              "mimeType" : "video/mp4",
    11658          *              "subtitleUrl" : "http://media_server_url/media_file.smi"
    11659          *          });
    11660          *          media.play({
    11661          *              "onSuccess" : function() {
    11662          *                  console.log("onSuccess");
    11663          *                  media.getPlayPosition({
    11664          *                      "onSuccess" : function(s) {
    11665          *                          console.log("onSuccess position : " + s.positionInMs);
    11666          *                      },
    11667          *                      "onFailure" : function(f) {
    11668          *                          console.log("onFailure : errorMessage = " + f.errorMessage);
    11669          *                      }
    11670          *                  });
    11671          *              },
    11672          *              "onFailure" : function(f) {
    11673          *                  console.log("onFailure : errorMessage = " + f.errorMessage);
    11674          *              }
    11675          *          });
    11676          *      },
    11677          *      "onFailure" : function(f) {
    11678          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    11679          *      }
    11680          * });
    11681          */
    11682         hcap.Media.prototype.getPlayPosition = function (param) {
    11683             if (media_object === null) {
    11684                 param.onFailure({"errorMessage" : "already destroyed."});
    11685                 return;
    11686             }
    11687             hcap_command("media_get_play_position", param);
    11688         };
    11689         /**
    11690          * Sets the position of the player at which to continue playing the media at.
    11691          * The 'seek_done' event will notify the result of this call.
    11692          * If you want to use this method continuously, you should check to receive the "seek_done" event before the next invocation.
    11693          *
    11694          * @param {Object} param
    11695          * <ul>
    11696          *   <li>{Number} param.positionInMs [Required] - number of milliseconds from the start of the media the player should play from </li>
    11697          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    11698          *   <pre class="code prettyprint">
    11699          *   param.onSuccess = function() {
    11700          *       // No parameter.
    11701          *   }</pre>
    11702          *   </li>
    11703          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    11704          *   <pre class="code prettyprint">
    11705          *   param.onFailure = function (param) {
    11706          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    11707          *   }</pre>
    11708          *   </li>
    11709          * </ul>
    11710          *
    11711          * @since 1.3.1
    11712          *
    11713          * @see
    11714          *  <a href="hcap.Media.html#getPlayPosition">hcap.Media.getPlayPosition()</a><br>
    11715          *  <a href="hcap.Media.html#play">hcap.Media.play()</a><br>
    11716          *
    11717          * @example
    11718          *
    11719          * var media = null;
    11720          * document.addEventListener(
    11721          *      "media_event_received",
    11722          *      function (param) {
    11723          *          // {String} param.eventType - changed event type
    11724          *          console.log("event type = " + param.eventType);
    11725          *          if (param.eventType === 'seek_done') {
    11726          *              console.log("success about media.setPlayPosition ");
    11727          *          } else if (param.eventType === 'play_start') {
    11728          *              media.setPlayPosition({
    11729          *                 "positionInMs" : 1000,
    11730          *                 "onSuccess" : function() {
    11731          *                     console.log("onSuccess");
    11732          *                  },
    11733          *                  "onFailure" : function(f) {
    11734          *                     console.log("onFailure : errorMessage = " + f.errorMessage);
    11735          *                  }
    11736          *              });
    11737          *          }
    11738          *      }, false
    11739          * );
    11740          *
    11741          * hcap.Media.startUp({
    11742          *      "onSuccess" : function() {
    11743          *          console.log("onSuccess");
    11744          *          media = hcap.Media.createMedia({
    11745          *              "url" : "http://media_server_url/media_file.avi",
    11746          *              "mimeType" : "video/mp4",
    11747          *              "subtitleUrl" : "http://media_server_url/media_file.smi"
    11748          *          });
    11749          *          media.play({
    11750          *              "onSuccess" : function() {
    11751          *                  console.log("onSuccess");
    11752          *              },
    11753          *              "onFailure" : function(f) {
    11754          *                  console.log("onFailure : errorMessage = " + f.errorMessage);
    11755          *              }
    11756          *          });
    11757          *      },
    11758          *      "onFailure" : function(f) {
    11759          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    11760          *      }
    11761          * });
    11762          *
    11763          *
    11764          *
    11765          */
    11766         hcap.Media.prototype.setPlayPosition = function (param) {
    11767             if (media_object === null) {
    11768                 param.onFailure({"errorMessage" : "already destroyed."});
    11769                 return;
    11770             }
    11771             hcap_command("media_set_play_position", param);
    11772         };
    11773         /**
    11774          * [RTSP Only] Gets the speed (rate) of the current media.
    11775          * The speed (rate) at which the media is currently playing. If the media has not yet started playing or is stopped, this method returns 0.
    11776          *
    11777          * @param {Object} param
    11778          * <ul>
    11779          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    11780          *   <pre class="code prettyprint">
    11781          *   param.onSuccess = function (param) {
    11782          *       // {Number} param.speed - rate at which the media runs currently.
    11783          *   }</pre>
    11784          *   </li>
    11785          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    11786          *   <pre class="code prettyprint">
    11787          *   param.onFailure = function (param) {
    11788          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    11789          *   }</pre>
    11790          *   </li>
    11791          * </ul>
    11792          *
    11793          * @since 1.3.1
    11794          *
    11795          * @see
    11796          *  <a href="hcap.Media.html#setPlaySpeed">hcap.Media.setPlaySpeed()</a><br>
    11797          *
    11798          * @example
    11799          * hcap.Media.startUp({
    11800          *      "onSuccess" : function() {
    11801          *          console.log("onSuccess");
    11802          *          var media = hcap.Media.createMedia({
    11803          *              "url" : "http://media_server_url/media_file.avi",
    11804          *              "mimeType" : "video/mp4",
    11805          *              "subtitleUrl" : "http://media_server_url/media_file.smi"
    11806          *          });
    11807          *          media.play({
    11808          *              "onSuccess" : function() {
    11809          *                  console.log("onSuccess");
    11810          *                  media.getPlaySpeed({
    11811          *                      "onSuccess" : function(s) {
    11812          *                          console.log("onSuccess speed : " + s.speed);
    11813          *                          switch(s.speed) {
    11814          *                            case 0 :
    11815          *                               console.log("Playback has stopped");
    11816          *                               break;
    11817          *                            case 1 :
    11818          *                               console.log("Media is playing");
    11819          *                               break;
    11820          *                            case 0.5 :
    11821          *                               console.log("Media is playing at half speed");
    11822          *                               break;
    11823          *                            case 2 :
    11824          *                               console.log("Media is fast-forwarding at 2x");
    11825          *                               break;
    11826          *                            case -2 :
    11827          *                               console.log("Media is rewinding at 2x");
    11828          *                               break;
    11829          *                          }
    11830          *                      },
    11831          *                      "onFailure" : function(f) {
    11832          *                          console.log("onFailure : errorMessage = " + f.errorMessage);
    11833          *                      }
    11834          *                  });
    11835          *              },
    11836          *              "onFailure" : function(f) {
    11837          *                  console.log("onFailure : errorMessage = " + f.errorMessage);
    11838          *              }
    11839          *          });
    11840          *      },
    11841          *      "onFailure" : function(f) {
    11842          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    11843          *      }
    11844          * });
    11845          */
    11846         hcap.Media.prototype.getPlaySpeed = function (param) {
    11847             if (media_object === null) {
    11848                 param.onFailure({"errorMessage" : "already destroyed."});
    11849                 return;
    11850             }
    11851             hcap_command("media_get_play_speed", param);
    11852         };
    11853         /**
    11854          * [RTSP Only] Sets the speed (rate) of the current media.
    11855          * If the media has not been started yet, calling this function (with any rate other then 0) will start the media at the specified rate.
    11856          * When the current media passed through http protocol, this API supports only fast forward.
    11857          * In mms and rtsp streaming, the speed parameter is transparently transmitted to the server without any conversion.
    11858          * Therefore, developers are responsible for matching the speed parameter between the application and the server.
    11859          *
    11860          * @param {Object} param
    11861          * <ul>
    11862          *   <li>{Number} param.speed [Required] - rate at which the media should run</li>
    11863          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    11864          *   <pre class="code prettyprint">
    11865          *   param.onSuccess = function() {
    11866          *       // No parameter.
    11867          *   }</pre>
    11868          *   </li>
    11869          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    11870          *   <pre class="code prettyprint">
    11871          *   param.onFailure = function (param) {
    11872          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    11873          *   }</pre>
    11874          *   </li>
    11875          * </ul>
    11876          *
    11877          * @since 1.3.1
    11878          *
    11879          * @see
    11880          *  <a href="hcap.Media.html#getPlaySpeed">hcap.Media.getPlaySpeed()</a><br>
    11881          *
    11882          * @example
    11883          * hcap.Media.startUp({
    11884          *      "onSuccess" : function() {
    11885          *          console.log("onSuccess");
    11886          *          var media = hcap.Media.createMedia({
    11887          *              "url" : "http://media_server_url/media_file.avi",
    11888          *              "mimeType" : "video/mp4",
    11889          *              "subtitleUrl" : "http://media_server_url/media_file.smi"
    11890          *          });
    11891          *          media.play({
    11892          *              "onSuccess" : function() {
    11893          *                  console.log("onSuccess");
    11894          *                  media.setPlaySpeed({
    11895          *                      "speed" : 2,
    11896          *                      "onSuccess" : function() {
    11897          *                          console.log("onSuccess");
    11898          *                      },
    11899          *                      "onFailure" : function(f) {
    11900          *                          console.log("onFailure : errorMessage = " + f.errorMessage);
    11901          *                      }
    11902          *                  });
    11903          *              },
    11904          *              "onFailure" : function(f) {
    11905          *                  console.log("onFailure : errorMessage = " + f.errorMessage);
    11906          *              }
    11907          *          });
    11908          *      },
    11909          *      "onFailure" : function(f) {
    11910          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    11911          *      }
    11912          * });
    11913          */
    11914         hcap.Media.prototype.setPlaySpeed = function (param) {
    11915             if (media_object === null) {
    11916                 param.onFailure({"errorMessage" : "already destroyed."});
    11917                 return;
    11918             }
    11919             hcap_command("media_set_play_speed", param);
    11920         };
    11921         /**
    11922          * Sets the subtitle of the current media on or off.
    11923          * If the subtitle url is not ready, there is no effect on screen. It will work after setting subtitle url using createMedia or setSubtitleUrl.
    11924          *
    11925          *
    11926          * @param {Object} param
    11927          * <ul>
    11928          *   <li>{Boolean} param.subtitleOn [Required] - true if the media subtitle is on. false if it is off.</li>
    11929          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    11930          *   <pre class="code prettyprint">
    11931          *   param.onSuccess = function() {
    11932          *       // No parameter.
    11933          *   }</pre>
    11934          *   </li>
    11935          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    11936          *   <pre class="code prettyprint">
    11937          *   param.onFailure = function (param) {
    11938          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    11939          *   }</pre>
    11940          *   </li>
    11941          * </ul>
    11942          *
    11943          * @since 1.7
    11944          *
    11945          * @see
    11946          *  <a href="hcap.Media.html#getSubtitleOn">hcap.Media.getSubtitleOn()</a><br>
    11947          *
    11948          * @example
    11949          * hcap.Media.startUp({
    11950          *      "onSuccess" : function() {
    11951          *          console.log("onSuccess");
    11952          *          var media = hcap.Media.createMedia({
    11953          *              "url" : "http://media_server_url/media_file.avi",
    11954          *              "mimeType" : "video/mp4",
    11955          *              "subtitleUrl" : "http://media_server_url/media_file.smi"
    11956          *          });
    11957          *          media.play({
    11958          *              "onSuccess" : function() {
    11959          *                  console.log("onSuccess");
    11960          *                  media.setSubtitleOn({
    11961          *                      "subtitleOn" : true,
    11962          *                      "onSuccess" : function() {
    11963          *                          console.log("onSuccess");
    11964          *                      },
    11965          *                      "onFailure" : function(f) {
    11966          *                          console.log("onFailure : errorMessage = " + f.errorMessage);
    11967          *                      }
    11968          *                  });
    11969          *              },
    11970          *              "onFailure" : function(f) {
    11971          *                  console.log("onFailure : errorMessage = " + f.errorMessage);
    11972          *              }
    11973          *          });
    11974          *      },
    11975          *      "onFailure" : function(f) {
    11976          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    11977          *      }
    11978          * });
    11979          */
    11980         hcap.Media.prototype.setSubtitleOn = function (param) {
    11981             if (media_object === null) {
    11982                 param.onFailure({"errorMessage" : "already destroyed."});
    11983                 return;
    11984             }
    11985             hcap_command("media_set_subtitle_on", param);
    11986         };
    11987         /**
    11988          * Gets the subtitle status of the current media.
    11989          *
    11990          * @param {Object} param
    11991          * <ul>
    11992          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    11993          *   <pre class="code prettyprint">
    11994          *   param.onSuccess = function() {
    11995          *       // {Boolean} param.subtitleOn - true if the media subtitle is on. false if it is off.
    11996          *   }</pre>
    11997          *   </li>
    11998          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    11999          *   <pre class="code prettyprint">
    12000          *   param.onFailure = function (param) {
    12001          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    12002          *   }</pre>
    12003          *   </li>
    12004          * </ul>
    12005          *
    12006          * @since 1.7
    12007          *
    12008          * @see
    12009          *  <a href="hcap.Media.html#setSubtitleOn">hcap.Media.setSubtitleOn()</a><br>
    12010          *
    12011          * @example
    12012          * hcap.Media.startUp({
    12013          *      "onSuccess" : function() {
    12014          *          console.log("onSuccess");
    12015          *          var media = hcap.Media.createMedia({
    12016          *              "url" : "http://media_server_url/media_file.avi",
    12017          *              "mimeType" : "video/mp4",
    12018          *              "subtitleUrl" : "http://media_server_url/media_file.smi"
    12019          *          });
    12020          *          media.play({
    12021          *              "onSuccess" : function() {
    12022          *                  console.log("onSuccess");
    12023          *                  media.getSubtitleOn({
    12024          *                      "onSuccess" : function(s) {
    12025          *                          console.log("onSuccess : subtitleOn = " + s.subtitleOn);
    12026          *                      },
    12027          *                      "onFailure" : function(f) {
    12028          *                          console.log("onFailure : errorMessage = " + f.errorMessage);
    12029          *                      }
    12030          *                  });
    12031          *              },
    12032          *              "onFailure" : function(f) {
    12033          *                  console.log("onFailure : errorMessage = " + f.errorMessage);
    12034          *              }
    12035          *          });
    12036          *      },
    12037          *      "onFailure" : function(f) {
    12038          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    12039          *      }
    12040          * });
    12041          */
    12042         hcap.Media.prototype.getSubtitleOn = function (param) {
    12043             if (media_object === null) {
    12044                 param.onFailure({"errorMessage" : "already destroyed."});
    12045                 return;
    12046             }
    12047             hcap_command("media_get_subtitle_on", param);
    12048         };
    12049         /**
    12050          * Sets the subtitle url of the current media. It will replace the subtitle url which is registered by createMedia().
    12051          *
    12052          * @param {Object} param
    12053          * <ul>
    12054          *   <li>{String} param.subtitleUrl [Required] - subtitle url.</li>
    12055          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    12056          *   <pre class="code prettyprint">
    12057          *   param.onSuccess = function() {
    12058          *   }</pre>
    12059          *   </li>
    12060          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    12061          *   <pre class="code prettyprint">
    12062          *   param.onFailure = function (param) {
    12063          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    12064          *   }</pre>
    12065          *   </li>
    12066          * </ul>
    12067          *
    12068          * @since 1.7
    12069          *
    12070          * @see
    12071          *  <a href="hcap.Media.html#setSubtitleOn">hcap.Media.setSubtitleOn()</a><br>
    12072          *
    12073          * @example
    12074          * hcap.Media.startUp({
    12075          *      "onSuccess" : function() {
    12076          *          console.log("onSuccess");
    12077          *          var media = hcap.Media.createMedia({
    12078          *              "url" : "http://media_server_url/media_file.avi",
    12079          *              "mimeType" : "video/mp4",
    12080          *              "subtitleUrl" : "http://media_server_url/media_file.smi"
    12081          *          });
    12082          *          media.play({
    12083          *              "onSuccess" : function() {
    12084          *                  console.log("onSuccess");
    12085          *                  media.setSubtitleUrl({
    12086          *                      "subtitleUrl" : "http://lge.com/subtitle.srt",
    12087          *                      "onSuccess" : function() {
    12088          *                          console.log("onSuccess");
    12089          *                      },
    12090          *                      "onFailure" : function(f) {
    12091          *                          console.log("onFailure : errorMessage = " + f.errorMessage);
    12092          *                      }
    12093          *                  });
    12094          *              },
    12095          *              "onFailure" : function(f) {
    12096          *                  console.log("onFailure : errorMessage = " + f.errorMessage);
    12097          *              }
    12098          *          });
    12099          *      },
    12100          *      "onFailure" : function(f) {
    12101          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    12102          *      }
    12103          * });
    12104          */
    12105         hcap.Media.prototype.setSubtitleUrl = function (param) {
    12106             if (media_object === null) {
    12107                 param.onFailure({"errorMessage" : "already destroyed."});
    12108                 return;
    12109             }
    12110             hcap_command("media_set_subtitle_url", param);
    12111         };
    12112         /**
    12113          * Gets player status. Status can be 'play', 'pause' or 'stop'.
    12114          *
    12115          * @param {Object} param
    12116          * <ul>
    12117          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    12118          *   <pre class="code prettyprint">
    12119          *   param.onSuccess = function (param) {
    12120          *       // {String} param.state - a human readable status of the current media.
    12121          *       //     It can be 'play', 'pause' or 'stop'.
    12122          *   }</pre>
    12123          *   </li>
    12124          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    12125          *   <pre class="code prettyprint">
    12126          *   param.onFailure = function (param) {
    12127          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    12128          *   }</pre>
    12129          *   </li>
    12130          * </ul>
    12131          *
    12132          * @since 1.3.1
    12133          *
    12134          * @example
    12135          * hcap.Media.startUp({
    12136          *      "onSuccess" : function() {
    12137          *          console.log("onSuccess");
    12138          *          var media = hcap.Media.createMedia({
    12139          *              "url" : "http://media_server_url/media_file.avi",
    12140          *              "mimeType" : "video/mp4",
    12141          *              "subtitleUrl" : "http://media_server_url/media_file.smi"
    12142          *          });
    12143          *          media.play({
    12144          *              "onSuccess" : function() {
    12145          *                  console.log("onSuccess");
    12146          *                  media.getState({
    12147          *                      "onSuccess" : function(s) {
    12148          *                          console.log("onSuccess state : " + s.state);
    12149          *                      },
    12150          *                      "onFailure" : function(f) {
    12151          *                          console.log("onFailure : errorMessage = " + f.errorMessage);
    12152          *                      }
    12153          *                  });
    12154          *              },
    12155          *              "onFailure" : function(f) {
    12156          *                  console.log("onFailure : errorMessage = " + f.errorMessage);
    12157          *              }
    12158          *          });
    12159          *      },
    12160          *      "onFailure" : function(f) {
    12161          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    12162          *      }
    12163          * });
    12164          */
    12165         hcap.Media.prototype.getState = function (param) {
    12166             if (media_object === null) {
    12167                 param.onFailure({"errorMessage" : "already destroyed."});
    12168                 return;
    12169             }
    12170             hcap_command("media_get_state", param);
    12171         };
    12172         /**
    12173          * Gets the list of supported audio languages and the index of list in the current media.<br>
    12174          * Audio language list is composed of language codes and delimiter comma(',').<br>
    12175          * Application can get/set audio language of the current media by index of the audio language list.<br><br>
    12176          * If there is no audio language list of the current channel, only "xx" is returned as the audio language list.<br>
    12177          * And "xx" could be returned as an audio language if the audio language is not mapped to an audio language code.<br>
    12178          * The maximum number of audio language lists is supported up to 16. If the video has more than 16 languages, only 16 are displayed.<br>
    12179          *
    12180          * <div align=center>
    12181          * <table class="hcap_spec" width=400>
    12182          *   <thead>
    12183          *     <tr><th>Item</th><th>Value</th></tr>
    12184          *   </thead>
    12185          *   <tbody>
    12186          *     <tr class="odd"><th>audio language list</th><td>en,ko,fr,en,xx</td></tr>
    12187          *     <tr><th>index</th><td>0, 1, 2, 3, 4</td></tr>
    12188          *   </tbody>
    12189          *   <tfoot>
    12190          *     <tr><th colspan="2">Audio Language List & Index Example</th></tr>
    12191          *   </tfoot>
    12192          * </table>
    12193          * </div>
    12194          * If the application wants to set the audio language to French ('fr'), use the index '2'.<br>
    12195          *
    12196          * @param {Object} param
    12197          * <ul>
    12198          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    12199          *   <pre class="code prettyprint">
    12200          *   param.onSuccess = function (param) {
    12201          *       // {String} param.list - audio language list string
    12202          *       //     which is composed of language codes separated by delimiter comma(',').
    12203          *       // {Number} param.index - audio language index of the current media.
    12204          *   }</pre>
    12205          *   </li>
    12206          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    12207          *   <pre class="code prettyprint">
    12208          *   param.onFailure = function (param) {
    12209          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    12210          *   }</pre>
    12211          *   </li>
    12212          * </ul>
    12213          *
    12214          * @since 1.12
    12215          *
    12216          * @see
    12217          * <a href="hcap.Media.html#setAudioLanguage">hcap.Media.setAudioLanguage()</a><br>
    12218          *
    12219          * @example
    12220          * hcap.Media.startUp({
    12221          *      "onSuccess" : function() {
    12222          *          console.log("onSuccess");
    12223          *          var media = hcap.Media.createMedia({
    12224          *              "url" : "http://media_server_url/media_file.avi",
    12225          *              "mimeType" : "video/mp4",
    12226          *              "subtitleUrl" : "http://media_server_url/media_file.smi"
    12227          *          });
    12228          *          media.play({
    12229          *              "onSuccess" : function() {
    12230          *                  console.log("onSuccess");
    12231          *                  media.getAudioLanguage({
    12232          *                      "onSuccess" : function(s) {
    12233          *                          console.log("onSuccess audio language list : " + s.list + " index : " + s.index);
    12234          *                      },
    12235          *                      "onFailure" : function(f) {
    12236          *                          console.log("onFailure : errorMessage = " + f.errorMessage);
    12237          *                      }
    12238          *                  });
    12239          *              },
    12240          *              "onFailure" : function(f) {
    12241          *                  console.log("onFailure : errorMessage = " + f.errorMessage);
    12242          *              }
    12243          *          });
    12244          *      },
    12245          *      "onFailure" : function(f) {
    12246          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    12247          *      }
    12248          * });
    12249          */
    12250         hcap.Media.prototype.getAudioLanguage = function (param) {
    12251             hcap_command("media_get_audio_language", param);
    12252         };
    12253         /**
    12254          * Sets the audio language of the current media.<br>
    12255          *
    12256          * <div align=center>
    12257          * <table class="hcap_spec" width=400>
    12258          *   <thead>
    12259          *     <tr><th>Item</th><th>Value</th></tr>
    12260          *   </thead>
    12261          *   <tbody>
    12262          *     <tr class="odd"><th>audio language list</th><td>en,ko,fr,en,xx</td></tr>
    12263          *     <tr><th>index</th><td>0, 1, 2, 3, 4</td></tr>
    12264          *   </tbody>
    12265          *   <tfoot>
    12266          *     <tr><th colspan="2">Audio Language List & Index Example</th></tr>
    12267          *   </tfoot>
    12268          * </table>
    12269          * </div>
    12270          *
    12271          * @param {Object} param
    12272          * <ul>
    12273          *   <li>{Number} param.index [Required] - audio language index to be set. Index starts with 0.</li>
    12274          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    12275          *   <pre class="code prettyprint">
    12276          *   param.onSuccess = function() {
    12277          *       // No Parameter.
    12278          *   }</pre>
    12279          *   </li>
    12280          *   <li>{Function} param.onFailure [Optional] - failure callback function.<br>
    12281          *            Setting to the same audio language index as before will invoke this callback function.
    12282          *   <pre class="code prettyprint">
    12283          *   param.onFailure = function (param) {
    12284          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    12285          *   }</pre>
    12286          *   </li>
    12287          * </ul>
    12288          *
    12289          * @since 1.12
    12290          *
    12291          * @see
    12292          * <a href="hcap.Media.html#getAudioLanguage">hcap.Media.getAudioLanguage()</a><br>
    12293          *
    12294          * @example
    12295          * hcap.Media.startUp({
    12296          *      "onSuccess" : function() {
    12297          *          console.log("onSuccess");
    12298          *          var media = hcap.Media.createMedia({
    12299          *              "url" : "http://media_server_url/media_file.avi",
    12300          *              "mimeType" : "video/mp4",
    12301          *              "subtitleUrl" : "http://media_server_url/media_file.smi"
    12302          *          });
    12303          *          media.play({
    12304          *              "onSuccess" : function() {
    12305          *                  console.log("onSuccess");
    12306          *                  media.setAudioLanguage({
    12307          *                      "index" : 1,
    12308          *                      "onSuccess" : function() {
    12309          *                          console.log("onSuccess");
    12310          *                      },
    12311          *                      "onFailure" : function(f) {
    12312          *                          console.log("onFailure : errorMessage = " + f.errorMessage);
    12313          *                      }
    12314          *                  });
    12315          *              },
    12316          *              "onFailure" : function(f) {
    12317          *                  console.log("onFailure : errorMessage = " + f.errorMessage);
    12318          *              }
    12319          *          });
    12320          *      },
    12321          *      "onFailure" : function(f) {
    12322          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    12323          *      }
    12324          * });
    12325          */
    12326         hcap.Media.prototype.setAudioLanguage = function (param) {
    12327             hcap_command("media_set_audio_language", param);
    12328         };
    12329         /**
    12330          * Gets the subtitle type and track number and ISO639-1 launguage code if available.
    12331          *
    12332          * @param {Object} param
    12333          * <ul>
    12334          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    12335          *   <pre class="code prettyprint">
    12336          *   param.onSuccess = function() {
    12337          *       // {Number} param.type - Current played subtitle type.
    12338          *       // {Number} param.index - Current played subtitle track number, On the case of external subtitle, don't care this value.
    12339          *       // {String} param.list - Language code of 'xx' if no available.
    12340          *   }</pre>
    12341          *   </li>
    12342          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    12343          *   <pre class="code prettyprint">
    12344          *   param.onFailure = function (param) {
    12345          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    12346          *   }</pre>
    12347          *   </li>
    12348          * </ul>
    12349          *
    12350          * @since 1.22.0
    12351          *
    12352          * @see
    12353          *  <a href="hcap.Media.html#setSubtitle">hcap.Media.setSubtitle()</a><br>
    12354          *  <a href="hcap.Media.SubtitleType.html#.NONE">hcap.Media.SubtitleType.NONE</a><br>
    12355          *  <a href="hcap.Media.SubtitleType.html#.INTERNAL_SUBTITLE">hcap.Media.SubtitleType.INTERNAL_SUBTITLE</a><br>
    12356          *  <a href="hcap.Media.SubtitleType.html#.EXTERNAL_SUBTITLE">hcap.Media.SubtitleType.EXTERNAL_SUBTITLE</a><br>
    12357          *  <a href="hcap.Media.SubtitleType.html#.CLOSED_CAPTION">hcap.Media.SubtitleType.CLOSED_CAPTION</a>
    12358          *
    12359          * @example
    12360          * hcap.Media.startUp({
    12361          *      "onSuccess" : function() {
    12362          *          console.log("onSuccess");
    12363          *          var media = hcap.Media.createMedia({
    12364          *              "url" : "http://media_server_url/media_file.avi",
    12365          *              "mimeType" : "video/mp4",
    12366          *              "subtitleUrl" : "http://media_server_url/media_file.smi"
    12367          *          });
    12368          *          media.play({
    12369          *              "onSuccess" : function() {
    12370          *                  console.log("onSuccess");
    12371          *                  media.getSubtitle({
    12372          *                      "onSuccess" : function(s) {
    12373          *                          console.log("onSuccess : subtitle type = " + s.type + "index = " + s.index + "language = " + s.list);
    12374          *                      },
    12375          *                      "onFailure" : function(f) {
    12376          *                          console.log("onFailure : errorMessage = " + f.errorMessage);
    12377          *                      }
    12378          *                  });
    12379          *              },
    12380          *              "onFailure" : function(f) {
    12381          *                  console.log("onFailure : errorMessage = " + f.errorMessage);
    12382          *              }
    12383          *          });
    12384          *      },
    12385          *      "onFailure" : function(f) {
    12386          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    12387          *      }
    12388          * });
    12389          */
    12390         hcap.Media.prototype.getSubtitle = function (param) {
    12391             if (media_object === null) {
    12392                 param.onFailure({"errorMessage" : "already destroyed."});
    12393                 return;
    12394             }
    12395             hcap_command("media_get_subtitle", param);
    12396         };
    12397         /**
    12398          * Sets the subtitle type and track number
    12399          *
    12400          *
    12401          * @param {Object} param
    12402          * <ul>
    12403          *   <li>{Number} param.type [Required] - Support 3 type of subtitle following as none, internal subtitle, external subtitle, closed caption.</li>
    12404          *   <li>{Number} param.index [Required] - Subtitle index to be set. Index starts with 0. onthe case of external subtitle, don't care this value.</li>
    12405          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    12406          *   <pre class="code prettyprint">
    12407          *   param.onSuccess = function() {
    12408          *       // No parameter.
    12409          *   }</pre>
    12410          *   </li>
    12411          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    12412          *   <pre class="code prettyprint">
    12413          *   param.onFailure = function (param) {
    12414          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    12415          *   }</pre>
    12416          *   </li>
    12417          * </ul>
    12418          *
    12419          * @since 1.22.0
    12420          *
    12421          * @see
    12422          *  <a href="hcap.Media.html#getSubtitle">hcap.Media.getSubtitle()</a><br>
    12423          *  <a href="hcap.Media.SubtitleType.html#.NONE">hcap.Media.SubtitleType.NONE</a><br>
    12424          *  <a href="hcap.Media.SubtitleType.html#.INTERNAL_SUBTITLE">hcap.Media.SubtitleType.INTERNAL_SUBTITLE</a><br>
    12425          *  <a href="hcap.Media.SubtitleType.html#.EXTERNAL_SUBTITLE">hcap.Media.SubtitleType.EXTERNAL_SUBTITLE</a><br>
    12426          *  <a href="hcap.Media.SubtitleType.html#.CLOSED_CAPTION">hcap.Media.SubtitleType.CLOSED_CAPTION</a>
    12427          *
    12428          * @example
    12429          * hcap.Media.startUp({
    12430          *      "onSuccess" : function() {
    12431          *          console.log("onSuccess");
    12432          *          var media = hcap.Media.createMedia({
    12433          *              "url" : "http://media_server_url/media_file.avi",
    12434          *              "mimeType" : "video/mp4",
    12435          *              "subtitleUrl" : "http://media_server_url/media_file.smi"
    12436          *          });
    12437          *          media.play({
    12438          *              "onSuccess" : function() {
    12439          *                  console.log("onSuccess");
    12440          *                  media.setSubtitle({
    12441          *                      "type" :  hcap.Media.SubtitleType.INTERNAL_SUBTITLE,
    12442          *                      "index" : 0,
    12443          *                      "onSuccess" : function() {
    12444          *                          console.log("onSuccess");
    12445          *                      },
    12446          *                      "onFailure" : function(f) {
    12447          *                          console.log("onFailure : errorMessage = " + f.errorMessage);
    12448          *                      }
    12449          *                  });
    12450          *              },
    12451          *              "onFailure" : function(f) {
    12452          *                  console.log("onFailure : errorMessage = " + f.errorMessage);
    12453          *              }
    12454          *          });
    12455          *      },
    12456          *      "onFailure" : function(f) {
    12457          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    12458          *      }
    12459          * });
    12460          */
    12461         hcap.Media.prototype.setSubtitle = function (param) {
    12462             if (media_object === null) {
    12463                 param.onFailure({"errorMessage" : "already destroyed."});
    12464                 return;
    12465             }
    12466             hcap_command("media_set_subtitle", param);
    12467         };
    12468         /**
    12469          * @namespace hcap.Media.SubtitleType
    12470          */
    12471         hcap.Media.SubtitleType = {
    12472             /**
    12473              * None
    12474              * @since 1.22.0
    12475              * @constant
    12476              */
    12477         	NONE : 0,
    12478             /**
    12479              * Internal Subtitle
    12480              * @since 1.22.0
    12481              * @constant
    12482              */
    12483             INTERNAL_SUBTITLE : 1,
    12484             /**
    12485              * External Subtitle
    12486              * @since 1.22.0
    12487              * @constant
    12488              */
    12489             EXTERNAL_SUBTITLE : 2,
    12490             /**
    12491              * Closed Caption
    12492              * @since 1.22.0
    12493              * @constant
    12494              */
    12495             CLOSED_CAPTION : 3
    12496         };
    12497         /**
    12498          * @namespace hcap.rms
    12499          */
    12500         hcap.rms = {};
    12501         /**
    12502          * Request RMS (Remote Management System) command in XML format to RMS.<br>
    12503          * RMS XML protocol will be provided separately.<br>
    12504          * Response for this request will be received by the result of this API or by registering the <a href="_global_.html#event:rms_response_received">{Event} rms_response_received</a>. How to receive the response is different command by command.
    12505          *
    12506          * @param {Object} param
    12507          * <ul>
    12508          *   <li>{String} param.message [Required] - RMS request message in XML.</li>
    12509          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    12510          *   <pre class="code prettyprint">
    12511          *   param.onSuccess = function (param) {
    12512          *       // {String} param.response - response result for the request.
    12513          *   }</pre>
    12514          *   </li>
    12515          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    12516          *   <pre class="code prettyprint">
    12517          *   param.onFailure = function (param) {
    12518          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    12519          *   }</pre>
    12520          *   </li>
    12521          * </ul>
    12522          *
    12523          * @since 1.6.0
    12524          *
    12525          * @see
    12526          * <a href="_global_.html#event:rms_response_received">{Event} rms_response_received</a><br>
    12527          *
    12528          * @example
    12529          * hcap.rms.requestRms({
    12530          *      "message" : "xxxxxxx",
    12531          *      "onSuccess" : function(s) {
    12532          *          console.log("onSuccess : response message = " + s.response);
    12533          *      },
    12534          *      "onFailure" : function(f) {
    12535          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    12536          *      }
    12537          * });
    12538          */
    12539         hcap.rms.requestRms = function (param) {
    12540             hcap_command("request_rms", param);
    12541         };
    12542         /**
    12543          * @namespace hcap.socket
    12544          */
    12545         hcap.socket = { };
    12546         /**
    12547          * Open UDP socket daemon.<br>
    12548          * To try opening UDP socket daemon with a port that has already been opened will be failed. In this case, please close the previous daemon and try it again.<br>
    12549          * And if the application is unloaded, all opened UDP socket daemons will be destroyed.<br>
    12550          *
    12551          * @param {Object} param
    12552          * <ul>
    12553          *   <li>{Number} param.port [Required] - socket port number to open its UDP socket daemon.</li>
    12554          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    12555          *   <pre class="code prettyprint">
    12556          *   param.onSuccess = function() {
    12557          *       // No Parameter.
    12558          *   }</pre>
    12559          *   </li>
    12560          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    12561          *   <pre class="code prettyprint">
    12562          *   param.onFailure = function (param) {
    12563          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    12564          *   }</pre>
    12565          *   </li>
    12566          * </ul>
    12567          *
    12568          * @since 1.6.0
    12569          *
    12570          * @see
    12571          * <a href="hcap.socket.html#.closeUdpDaemon">hcap.socket.closeUdpDaemon()</a><br>
    12572          * <a href="_global_.html#event:udp_data_received">{Event} udp_data_received</a><br>
    12573          * <a href="hcap.socket.html#.sendUdpData">hcap.socket.sendUdpData()</a><br>
    12574          *
    12575          * @example
    12576          * hcap.socket.openUdpDaemon({
    12577          *      "port" : 9311,
    12578          *      "onSuccess" : function() {
    12579          *          console.log("onSuccess");
    12580          *      },
    12581          *      "onFailure" : function(f) {
    12582          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    12583          *      }
    12584          * });
    12585          */
    12586         hcap.socket.openUdpDaemon = function (param) {
    12587             hcap_command("open_udp_daemon", param);
    12588         };
    12589         /**
    12590          * Close UDP socket daemon.<br>
    12591          *
    12592          * @param {Object} param
    12593          * <ul>
    12594          *   <li>{Number} param.port [Required] - port number of UDP connection to close.</li>
    12595          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    12596          *   <pre class="code prettyprint">
    12597          *   param.onSuccess = function() {
    12598          *       // No Parameter.
    12599          *   }</pre>
    12600          *   </li>
    12601          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    12602          *   <pre class="code prettyprint">
    12603          *   param.onFailure = function (param) {
    12604          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    12605          *   }</pre>
    12606          *   </li>
    12607          * </ul>
    12608          *
    12609          * @since 1.6.0
    12610          *
    12611          * @see
    12612          * <a href="hcap.socket.html#.openUdpDaemon">hcap.socket.openUdpDaemon()</a><br>
    12613          * <a href="_global_.html#event:udp_data_received">{Event} udp_data_received</a><br>
    12614          * <a href="hcap.socket.html#.sendUdpData">hcap.socket.sendUdpData()</a><br>
    12615          *
    12616          * @example
    12617          * hcap.socket.closeUdpDaemon({
    12618          *      "port" : 9311,
    12619          *      "onSuccess" : function() {
    12620          *          console.log("onSuccess");
    12621          *      },
    12622          *      "onFailure" : function(f) {
    12623          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    12624          *      }
    12625          * });
    12626          */
    12627         hcap.socket.closeUdpDaemon = function (param) {
    12628             hcap_command("close_udp_daemon", param);
    12629         };
    12630         /**
    12631          * Open TCP socket daemon.<br>
    12632          * To try opening TCP socket daemon with a port that has already been opened will be failed. In this case, please close the previous daemon and try it again.<br>
    12633          * And if the application is unloaded, all opened TCP socket daemons will be destroyed.<br>
    12634          *
    12635          * @param {Object} param
    12636          * <ul>
    12637          *   <li>{Number} param.port [Required] - socket port number to open its TCP socket daemon.</li>
    12638          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    12639          *   <pre class="code prettyprint">
    12640          *   param.onSuccess = function() {
    12641          *       // No Parameter.
    12642          *   }</pre>
    12643          *   </li>
    12644          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    12645          *   <pre class="code prettyprint">
    12646          *   param.onFailure = function (param) {
    12647          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    12648          *   }</pre>
    12649          *   </li>
    12650          * </ul>
    12651          *
    12652          * @since 1.10.1
    12653          *
    12654          * @see
    12655          * <a href="hcap.socket.html#.closeTcpDaemon">hcap.socket.closeTcpDaemon()</a><br>
    12656          * <a href="_global_.html#event:tcp_data_received">{Event} tcp_data_received</a><br>
    12657          *
    12658          * @example
    12659          * hcap.socket.openTcpDaemon({
    12660          *      "port" : 9312,
    12661          *      "onSuccess" : function() {
    12662          *          console.log("onSuccess");
    12663          *      },
    12664          *      "onFailure" : function(f) {
    12665          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    12666          *      }
    12667          * });
    12668          */
    12669         hcap.socket.openTcpDaemon = function (param) {
    12670             hcap_command("open_tcp_daemon", param);
    12671         };
    12672         /**
    12673          * Close TCP socket daemon.<br>
    12674          *
    12675          * @param {Object} param
    12676          * <ul>
    12677          *   <li>{Number} param.port [Required] - port number of TCP connection to close.</li>
    12678          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    12679          *   <pre class="code prettyprint">
    12680          *   param.onSuccess = function() {
    12681          *       // No Parameter.
    12682          *   }</pre>
    12683          *   </li>
    12684          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    12685          *   <pre class="code prettyprint">
    12686          *   param.onFailure = function (param) {
    12687          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    12688          *   }</pre>
    12689          *   </li>
    12690          * </ul>
    12691          *
    12692          * @since 1.10.1
    12693          *
    12694          * @see
    12695          * <a href="hcap.socket.html#.openTcpDaemon">hcap.socket.openTcpDaemon()</a><br>
    12696          * <a href="_global_.html#event:tcp_data_received">{Event} tcp_data_received</a><br>
    12697          *
    12698          * @example
    12699          * hcap.socket.closeTcpDaemon({
    12700          *      "port" : 9312,
    12701          *      "onSuccess" : function() {
    12702          *          console.log("onSuccess");
    12703          *      },
    12704          *      "onFailure" : function(f) {
    12705          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    12706          *      }
    12707          * });
    12708          */
    12709         hcap.socket.closeTcpDaemon = function (param) {
    12710             hcap_command("close_tcp_daemon", param);
    12711         };
    12712         /**
    12713          * Send UDP packet data to remote UDP server.<br>
    12714          *
    12715          * @param {Object} param
    12716          * <ul>
    12717          *   <li>{String} param.ip [Required] - IP address of remote UDP server to send UDP packet data.</li>
    12718          *   <li>{Number} param.port [Required] - port number of remote UDP server.</li>
    12719          *   <li>{String} param.udpData [Required] - UDP packet data.</li>
    12720          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    12721          *   <pre class="code prettyprint">
    12722          *   param.onSuccess = function() {
    12723          *       // No Parameter.
    12724          *   }</pre>
    12725          *   </li>
    12726          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    12727          *   <pre class="code prettyprint">
    12728          *   param.onFailure = function (param) {
    12729          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    12730          *   }</pre>
    12731          *   </li>
    12732          * </ul>
    12733          *
    12734          * @since 1.10.1
    12735          *
    12736          * @see
    12737          * <a href="hcap.socket.html#.openUdpDaemon">hcap.socket.openUdpDaemon()</a><br>
    12738          * <a href="hcap.socket.html#.closeUdpDaemon">hcap.socket.closeUdpDaemon()</a><br>
    12739          * <a href="_global_.html#event:udp_data_received">{Event} udp_data_received</a><br>
    12740          *
    12741          * @example
    12742          * hcap.socket.sendUdpData({
    12743          *      "ip" : "192.168.123.56",
    12744          *      "port" : 7222,
    12745          *      "udpData" : "UDP packet data to send",
    12746          *      "onSuccess" : function() {
    12747          *          console.log("onSuccess");
    12748          *      },
    12749          *      "onFailure" : function(f) {
    12750          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    12751          *      }
    12752          * });
    12753          */
    12754         hcap.socket.sendUdpData = function (param) {
    12755             hcap_command("send_udp_data", param);
    12756         };
    12757         hcap.drm = {};
    12758         /*
    12759          * @namespace hcap.drm.securemedia
    12760          */
    12761         hcap.drm.securemedia = {};
    12762         /**
    12763          * initialize secure media agent.<br>
    12764          *
    12765          * @param {Object} param
    12766          * <ul>
    12767          *   <li>{String} param.companyName [Required] - This is used to separate service providers using SecureMedia.</li>
    12768          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    12769          *   <pre class="code prettyprint">
    12770          *   param.onSuccess = function() {
    12771          *       // No Parameter.
    12772          *   }</pre>
    12773          *   </li>
    12774          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    12775          *   <pre class="code prettyprint">
    12776          *   param.onFailure = function (param) {
    12777          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    12778          *   }</pre>
    12779          *   </li>
    12780          * </ul>
    12781          *
    12782          * @since 1.7.0
    12783          *
    12784          * @see
    12785          * @example
    12786          * hcap.drm.securemedia.initialize({
    12787          *      "companyName" : "LGE",
    12788          *      "onSuccess" : function() {
    12789          *          console.log("onSuccess");
    12790          *      },
    12791          *      "onFailure" : function(f) {
    12792          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    12793          *      }
    12794          * });
    12795          *
    12796          * If you want to use secure media DRM, you should add information to url on hcap.Media.createMedia method.
    12797          * That url has device id, password, user data for right manager and register url. And each parameter should have be seperated with "|" character.
    12798          * For example of url is "http://71.170.161.24/sm/Airplane-Encrypted/hls_CE_DEVICES.m3u8?|DRM_INFO={DEVICE_ID=E8:5B:5B:B8:7F:CF|AINFO1=<user><id>vzec81yq</id><domain>DNET</domain></user>|AINFO2=KLCISIPCTEMJAE3LuKoRLzjLkg//8yQxsSSRFj4wWRjQ6Rs5x3SAH8fc|REGISTER_URL=https://gwott30.verizon.net/esam/esamservice}|COMPONENT=HLS"
    12799          *
    12800          * var media = hcap.Media.createMedia({
    12801          *      "url" : "http://71.170.161.24/sm/Airplane-Encrypted/hls_CE_DEVICES.m3u8?|DRM_INFO={DEVICE_ID=E8:5B:5B:B8:7F:CF|AINFO1=<user><id>vzec81yq</id><domain>DNET</domain></user>|AINFO2=KLCISIPCTEMJAE3LuKoRLzjLkg//8yQxsSSRFj4wWRjQ6Rs5x3SAH8fc|REGISTER_URL=https://gwott30.verizon.net/esam/esamservice}|COMPONENT=HLS",
    12802          *      "mimeType" : "video/mpeg",
    12803          *      "drmType" : "SECUREMEDIA",
    12804          *      "subtitleUrl" : "http://media_server_url/media_file.smi",
    12805          * });
    12806          */
    12807         hcap.drm.securemedia.initialize = function (param) {
    12808             hcap_command("secure_media_drm_initialize", param);
    12809         };
    12810         /**
    12811          * unregister secure media agent.<br>
    12812          *
    12813          * @param {Object} param
    12814          * <ul>
    12815          *   <li>{String} param.companyName [Required] - This is used to separate service providers using SecureMedia.</li>
    12816          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    12817          *   <pre class="code prettyprint">
    12818          *   param.onSuccess = function() {
    12819          *       // No Parameter.
    12820          *   }</pre>
    12821          *   </li>
    12822          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    12823          *   <pre class="code prettyprint">
    12824          *   param.onFailure = function (param) {
    12825          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    12826          *   }</pre>
    12827          *   </li>
    12828          * </ul>
    12829          *
    12830          * @since 1.7.0
    12831          *
    12832          * @see
    12833          * @example
    12834          * hcap.drm.securemedia.unregister({
    12835          *      "companyName" : "LGE",
    12836          *      "onSuccess" : function() {
    12837          *          console.log("onSuccess");
    12838          *      },
    12839          *      "onFailure" : function(f) {
    12840          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    12841          *      }
    12842          * });
    12843          */
    12844         hcap.drm.securemedia.unregister = function (param) {
    12845             hcap_command("secure_media_drm_unregister", param);
    12846         };
    12847         /**
    12848          * check whether secure media agent register.<br>
    12849          *
    12850          * @param {Object} param
    12851          * <ul>
    12852          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    12853          *   <pre class="code prettyprint">
    12854          *   param.onSuccess = function (param) {
    12855          *       // {Boolean} param.isRegisteration - true if the secure media agent is registered successfully, else false.
    12856          *   }</pre>
    12857          *   </li>
    12858          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    12859          *   <pre class="code prettyprint">
    12860          *   param.onFailure = function (param) {
    12861          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    12862          *   }</pre>
    12863          *   </li>
    12864          * </ul>
    12865          *
    12866          * @since 1.7.0
    12867          *
    12868          * @see
    12869          * @example
    12870          * hcap.drm.securemedia.isRegistration({
    12871          *      "onSuccess" : function(s) {
    12872          *          console.log("onSuccess" + s.isRegisteration);
    12873          *      },
    12874          *      "onFailure" : function(f) {
    12875          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    12876          *      }
    12877          * });
    12878          */
    12879         hcap.drm.securemedia.isRegistration = function (param) {
    12880             hcap_command("secure_media_drm_is_registration", param);
    12881         };
    12882         /**
    12883          * register secure media agent.<br>
    12884          *
    12885          * @param {Object} param
    12886          * <ul>
    12887          *   <li>{String} param.deviceInfo [Required] - device info, It becomes ID for SecureMedia (ex> E8:5B:5B:B8:7F:CF).</li>
    12888          *   <li>{String} param.appInfo [Required] - It becomes password.</li>
    12889          *   <li>{String} param.esamUrl [Required] - It is the url of ESAM server.</li>
    12890          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    12891          *   <pre class="code prettyprint">
    12892          *   param.onSuccess = function() {
    12893          *       // No Parameter.
    12894          *   }</pre>
    12895          *   </li>
    12896          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    12897          *   <pre class="code prettyprint">
    12898          *   param.onFailure = function (param) {
    12899          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    12900          *   }</pre>
    12901          *   </li>
    12902          * </ul>
    12903          *
    12904          * @since 1.7.0
    12905          *
    12906          * @see
    12907          * @example
    12908          * hcap.drm.securemedia.register({
    12909          *      "deviceInfo" : "E8:5B:5B:B8:7F:CF",
    12910          *      "appInfo" : "<user><id>vzec81yq</id><domain>DNET</domain></user>",
    12911          *      "esamUrl" : "http://71.170.161.24/sm/Airplane-Encrypted/hls_CE_DEVICES.m3u8?|DRM_INFO={DEVICE_ID=E8:5B:5B:B8:7F:CF|AINFO1=<user><id>vzec81yq</id><domain>DNET</domain></user>|AINFO2=KLCISIPCTEMJAE3LuKoRLzjLkg//8yQxsSSRFj4wWRjQ6Rs5x3SAH8fc|REGISTER_URL=https://gwott30.verizon.net/esam/esamservice}|COMPONENT=HLS",
    12912          *      "onSuccess" : function() {
    12913          *          console.log("onSuccess");
    12914          *      },
    12915          *      "onFailure" : function(f) {
    12916          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    12917          *      }
    12918          * });
    12919          */
    12920         hcap.drm.securemedia.register = function (param) {
    12921             hcap_command("secure_media_drm_register", param);
    12922         };
    12923         /**
    12924          * finalize secure media agent.<br>
    12925          *
    12926          * @param {Object} param
    12927          * <ul>
    12928          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    12929          *   <pre class="code prettyprint">
    12930          *   param.onSuccess = function() {
    12931          *       // No Parameter.
    12932          *   }</pre>
    12933          *   </li>
    12934          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    12935          *   <pre class="code prettyprint">
    12936          *   param.onFailure = function (param) {
    12937          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    12938          *   }</pre>
    12939          *   </li>
    12940          * </ul>
    12941          *
    12942          * @since 1.7.0
    12943          *
    12944          * @see
    12945          * @example
    12946          * hcap.drm.securemedia.finalize({
    12947          *      "onSuccess" : function() {
    12948          *          console.log("onSuccess");
    12949          *      },
    12950          *      "onFailure" : function(f) {
    12951          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    12952          *      }
    12953          * });
    12954          */
    12955         hcap.drm.securemedia.finalize = function (param) {
    12956             hcap_command("secure_media_drm_finalize", param);
    12957         };
    12958         /**
    12959          * @namespace hcap.file
    12960          */
    12961         hcap.file = { };
    12962         /**
    12963          * Gets the USB storage list.<br>
    12964          *
    12965          * @param {Object} param
    12966          * <ul>
    12967          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    12968          *   <pre class="code prettyprint">
    12969          *   param.onSuccess = function (param) {
    12970          *       // {Array} param.list - list for the USB storage devices connected to TV.
    12971          *       //         {String} param.list[].name - unique device name within the system
    12972          *       //         {String} param.list[].displayName - display name
    12973          *       //         {String} param.list[].mountPoint - mount point path
    12974          *       //         {String} param.list[].status - status among "INIT"(device is initializing), "AVAILABLE"(device is available), "BUSY"(device is unavailable for a while because device is busy in the other work) and "OFFLINE"(device is physically connected but is unavailable)
    12975          *       //         {String} param.list[].filesystemStatus - filesystem status among "READ_ONLY" and "READ_WRITE"
    12976          *       //         {String} param.list[].totalSize - total size in bytes
    12977          *       //         {String} param.list[].freeSize - free size in bytes
    12978          *   }</pre>
    12979          *   </li>
    12980          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    12981          *   <pre class="code prettyprint">
    12982          *   param.onFailure = function (param) {
    12983          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    12984          *   }</pre>
    12985          *   </li>
    12986          * </ul>
    12987          *
    12988          * @since 1.18.1
    12989          *
    12990          * @see
    12991          * <a href="hcap.file.html#.getUsbStorageFileList">hcap.file.getUsbStorageFileList()</a><br>
    12992          * <a href="hcap.file.html#.downloadFileToUsb">hcap.file.downloadFileToUsb()</a><br>
    12993          * <a href="hcap.file.html#.deleteUsbFile">hcap.file.deleteUsbFile()</a><br>
    12994          * <a href="_global_.html#event:usb_file_downloaded">{Event} usb_file_downloaded</a><br>
    12995          *
    12996          * @example
    12997          * hcap.file.getUsbStorageList({
    12998          *      "onSuccess" : function(s) {
    12999          *          console.log("onSuccess : list length = " + s.list.length);
    13000          *          for (var i = 0; i < s.list.length; i++) {
    13001          *              console.log(
    13002          *                  "[" + i + "].name = " + s.list[i].name +
    13003          *                  "[" + i + "].displayName = " + s.list[i].displayName +
    13004          *                  "[" + i + "].mountPoint = " + s.list[i].mountPoint +
    13005          *                  "[" + i + "].status = " + s.list[i].status +
    13006          *                  "[" + i + "].filesystemStatus = " + s.list[i].filesystemStatus +
    13007          *                  "[" + i + "].totalSize = " + s.list[i].totalSize +
    13008          *                  "[" + i + "].freeSize = " + s.list[i].freeSize
    13009          *              );
    13010          *          }
    13011          *      },
    13012          *      "onFailure" : function(f) {
    13013          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    13014          *      }
    13015          * });
    13016          */
    13017         hcap.file.getUsbStorageList = function (param) {
    13018             hcap_command("get_usb_storage_list", param);
    13019         };
    13020         /**
    13021          * Gets the file list for the given path in a USB storage.<br>
    13022          *
    13023          * @param {Object} param
    13024          * <ul>
    13025          *   <li>{String} param.path [Required] - directory path to get file list. Only the directory equal to or lower than a USB mount point path is allowed.</li>
    13026          *   <li>{Number} param.position [Optional] - start position (starts with 0) where starts to make file list in the directory. Default <em>position</em> is 0.</li>
    13027          *   <li>{Number} param.length [Optional] - at most the <em>length</em> number of files from the <em>position</em> will be listed up. Default <em>length</em> is 100.</li>
    13028          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    13029          *   <pre class="code prettyprint">
    13030          *   param.onSuccess = function (param) {
    13031          *       // {Array} param.list - file list
    13032          *       //         {String} param.list[].name - file name
    13033          *       //         {String} param.list[].type - file type among "BLK"(block device), "CHR"(character device), "DIR"(directory), "FIFO"(named pipe), "LNK"(symbolic link), "REG"(regular file), "SOCK"(UNIX domain socket) and "UNKNOWN"(unknown)
    13034          *       //         {String} param.list[].length - file length
    13035          *   }</pre>
    13036          *   </li>
    13037          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    13038          *   <pre class="code prettyprint">
    13039          *   param.onFailure = function (param) {
    13040          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    13041          *   }</pre>
    13042          *   </li>
    13043          * </ul>
    13044          *
    13045          * @since 1.18.1
    13046          *
    13047          * @see
    13048          * <a href="hcap.file.html#.getUsbStorageList">hcap.file.getUsbStorageList()</a><br>
    13049          * <a href="hcap.file.html#.downloadFileToUsb">hcap.file.downloadFileToUsb()</a><br>
    13050          * <a href="hcap.file.html#.deleteUsbFile">hcap.file.deleteUsbFile()</a><br>
    13051          * <a href="_global_.html#event:usb_file_downloaded">{Event} usb_file_downloaded</a><br>
    13052          *
    13053          * @example
    13054          * hcap.file.getUsbStorageList({
    13055          *      "onSuccess" : function(s) {
    13056          *          hcap.file.getUsbStorageFileList({
    13057          *              "path" : s[0].mountPoint,
    13058          *              "onSuccess" : function (param) {
    13059          *                  console.log("file list length = " + param.list.length);
    13060          *                  for (var i = 0; i < param.list.length; i++) {
    13061          *                      console.log(
    13062          *                          "[" + i + "].name = " + param.list[i].name +
    13063          *                          "[" + i + "].type = " + param.list[i].type +
    13064          *                          "[" + i + "].length = " + param.list[i].length
    13065          *                      );
    13066          *                  }
    13067          *              },
    13068          *              "onFailure" : function(ff) {
    13069          *                  console.log("onFailure : errorMessage = " + ff.errorMessage);
    13070          *              }
    13071          *          });
    13072          *      },
    13073          *      "onFailure" : function(f) {
    13074          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    13075          *      }
    13076          * });
    13077          */
    13078         hcap.file.getUsbStorageFileList = function (param) {
    13079             hcap_command("get_usb_storage_file_list", param);
    13080         };
    13081         /**
    13082          * Downloads the file given by uri to the path in the USB storage.<br>
    13083          *
    13084          * The result for the download can be obtained by registering the
    13085          * <a href="_global_.html#event:usb_file_downloaded">{Event} usb_file_downloaded</a><br><br>
    13086          *
    13087          * @param {Object} param
    13088          * <ul>
    13089          *   <li>{String} param.uri [Required] - URI for the file to download to the USB storage. Only "http" and "https" are allowed.</li>
    13090          *   <li>{String} param.path [Required] - file path to download the file of uri. The file path should be equal to or lower than a USB mount point path. And if the directory doesn't exist, it will be created automatically.</li>
    13091          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    13092          *   <pre class="code prettyprint">
    13093          *   param.onSuccess = function (param) {
    13094          *       // No Parameter.
    13095          *   }</pre>
    13096          *   </li>
    13097          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    13098          *   <pre class="code prettyprint">
    13099          *   param.onFailure = function (param) {
    13100          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    13101          *   }</pre>
    13102          *   </li>
    13103          * </ul>
    13104          *
    13105          * @since 1.18.3
    13106          *
    13107          * @see
    13108          * <a href="hcap.file.html#.getUsbStorageList">hcap.file.getUsbStorageList()</a><br>
    13109          * <a href="hcap.file.html#.getUsbStorageFileList">hcap.file.getUsbStorageFileList()</a><br>
    13110          * <a href="hcap.file.html#.deleteUsbFile">hcap.file.deleteUsbFile()</a><br>
    13111          * <a href="_global_.html#event:usb_file_downloaded">{Event} usb_file_downloaded</a><br>
    13112          *
    13113          * @example
    13114          * hcap.file.downloadFileToUsb({
    13115          *      "uri" : "http://mycompany.com/resource/a.mp3",
    13116          *      "path" : "/tmp/usb/sda/sda1/download/b.mp3",
    13117          *      "onSuccess" : function() {
    13118          *          console.log("onSuccess");
    13119          *      },
    13120          *      "onFailure" : function(f) {
    13121          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    13122          *      }
    13123          * });
    13124          */
    13125         hcap.file.downloadFileToUsb = function (param) {
    13126             hcap_command("download_file_to_usb", param);
    13127         };
    13128         /**
    13129          * Deletes the file or directory given by the path in the USB storage.<br>
    13130          *
    13131          * @param {Object} param
    13132          * <ul>
    13133          *   <li>{String} param.path [Required] - file path or directory path to delete in the USB storage. Only the file path or the directory path under a USB mount point path (except the root directory of a USB mount point path as a directory path) are allowed. The designated path will be deleted without any warning. (It is same as "rm -rf") And if the path doesn't exist, the success callback will be returned.</li>
    13134          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    13135          *   <pre class="code prettyprint">
    13136          *   param.onSuccess = function (param) {
    13137          *       // No Parameter.
    13138          *   }</pre>
    13139          *   </li>
    13140          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    13141          *   <pre class="code prettyprint">
    13142          *   param.onFailure = function (param) {
    13143          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    13144          *   }</pre>
    13145          *   </li>
    13146          * </ul>
    13147          *
    13148          * @since 1.18.3
    13149          *
    13150          * @see
    13151          * <a href="hcap.file.html#.getUsbStorageList">hcap.file.getUsbStorageList()</a><br>
    13152          * <a href="hcap.file.html#.getUsbStorageFileList">hcap.file.getUsbStorageFileList()</a><br>
    13153          * <a href="hcap.file.html#.downloadFileToUsb">hcap.file.downloadFileToUsb()</a><br>
    13154          * <a href="_global_.html#event:usb_file_downloaded">{Event} usb_file_downloaded</a><br>
    13155          *
    13156          * @example
    13157          * hcap.file.deleteUsbFile({
    13158          *      "path" : "/tmp/usb/sda/sda1/download/a.mp4", // or a directory "/tmp/usb/sda/sda1/download"
    13159          *      "onSuccess" : function() {
    13160          *          console.log("onSuccess");
    13161          *      },
    13162          *      "onFailure" : function(f) {
    13163          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    13164          *      }
    13165          * });
    13166          */
    13167         hcap.file.deleteUsbFile = function (param) {
    13168             hcap_command("delete_usb_file", param);
    13169         };
    13170         /**
    13171          * @namespace hcap.rs232c
    13172          */
    13173         hcap.rs232c = {};
    13174         /**
    13175          * @namespace hcap.rs232c.BaudRate
    13176          */
    13177         hcap.rs232c.BaudRate = {
    13178             /**
    13179              * unknown value.
    13180              * @since 1.18.4
    13181              * @constant
    13182              */
    13183             BR_UNKNOWN : 0,
    13184             /**
    13185              * baud rate 110.
    13186              * @since 1.18.4
    13187              * @constant
    13188              */
    13189             BR_110 : 110,
    13190             /**
    13191              * baud rate 300.
    13192              * @since 1.18.4
    13193              * @constant
    13194              */
    13195             BR_300 : 300,
    13196             /**
    13197              * baud rate 600.
    13198              * @since 1.18.4
    13199              * @constant
    13200              */
    13201             BR_600 : 600,
    13202             /**
    13203              * baud rate 1200.
    13204              * @since 1.18.4
    13205              * @constant
    13206              */
    13207             BR_1200 : 1200,
    13208             /**
    13209              * baud rate 2400.
    13210              * @since 1.18.4
    13211              * @constant
    13212              */
    13213             BR_2400 : 2400,
    13214             /**
    13215              * baud rate 4800.
    13216              * @since 1.18.4
    13217              * @constant
    13218              */
    13219             BR_4800 : 4800,
    13220             /**
    13221              * baud rate 9600.
    13222              * @since 1.18.4
    13223              * @constant
    13224              */
    13225             BR_9600 : 9600,
    13226             /**
    13227              * baud rate 14400.
    13228              * @since 1.18.4
    13229              * @constant
    13230              */
    13231             BR_14400 : 14400,
    13232             /**
    13233              * baud rate 19200.
    13234              * @since 1.18.4
    13235              * @constant
    13236              */
    13237             BR_19200 : 19200,
    13238             /**
    13239              * baud rate 38400.
    13240              * @since 1.18.4
    13241              * @constant
    13242              */
    13243             BR_38400 : 38400,
    13244             /**
    13245              * baud rate 57600.
    13246              * @since 1.18.4
    13247              * @constant
    13248              */
    13249             BR_57600 : 57600,
    13250             /**
    13251              * baud rate 115200.
    13252              * @since 1.18.4
    13253              * @constant
    13254              */
    13255             BR_115200 : 115200,
    13256             /**
    13257              * baud rate 128000.
    13258              * @since 1.18.4
    13259              * @constant
    13260              */
    13261             BR_128000 : 128000,
    13262             /**
    13263              * baud rate 230400.
    13264              * @since 1.18.4
    13265              * @constant
    13266              */
    13267             BR_230400 : 230400,
    13268             /**
    13269              * baud rate 256000.
    13270              * @since 1.18.4
    13271              * @constant
    13272              */
    13273             BR_256000 : 256000,
    13274             /**
    13275              * baud rate 512000.
    13276              * @since 1.18.4
    13277              * @constant
    13278              */
    13279             BR_512000 : 512000,
    13280             /**
    13281              * baud rate 768000.
    13282              * @since 1.18.4
    13283              * @constant
    13284              */
    13285             BR_768000 : 768000,
    13286             /**
    13287              * baud rate 921600.
    13288              * @since 1.18.4
    13289              * @constant
    13290              */
    13291             BR_921600 : 921600,
    13292             /**
    13293              * baud rate 1024000.
    13294              * @since 1.18.4
    13295              * @constant
    13296              */
    13297             BR_1024000 : 1024000
    13298         };
    13299         /**
    13300          * @namespace hcap.rs232c.DataBit
    13301          */
    13302         hcap.rs232c.DataBit = {
    13303             /**
    13304              * unknown value.
    13305              * @since 1.18.4
    13306              * @constant
    13307              */
    13308             BIT_UNKNOWN : 0,
    13309             /**
    13310              * data bit 7 bit.
    13311              * @since 1.18.4
    13312              * @constant
    13313              */
    13314             BIT_7 : 7,
    13315             /**
    13316              * data bit 8 bit.
    13317              * @since 1.18.4
    13318              * @constant
    13319              */
    13320             BIT_8 : 8
    13321         };
    13322         /**
    13323          * @namespace hcap.rs232c.Parity
    13324          */
    13325         hcap.rs232c.Parity = {
    13326             /**
    13327              * unknown value.
    13328              * @since 1.18.4
    13329              * @constant
    13330              */
    13331             UNKNOWN : 0,
    13332             /**
    13333              * parity none.
    13334              * @since 1.18.4
    13335              * @constant
    13336              */
    13337             NONE : 1,
    13338             /**
    13339              * parity even.
    13340              * @since 1.18.4
    13341              * @constant
    13342              */
    13343             EVEN : 2,
    13344             /**
    13345              * parity odd.
    13346              * @since 1.18.4
    13347              * @constant
    13348              */
    13349             ODD : 3
    13350         };
    13351         /**
    13352          * @namespace hcap.rs232c.StopBit
    13353          */
    13354         hcap.rs232c.StopBit = {
    13355             /**
    13356              * unknown value.
    13357              * @since 1.18.4
    13358              * @constant
    13359              */
    13360             UNKNOWN : 0,
    13361             /**
    13362              * stop bit 1 bit.
    13363              * @since 1.18.4
    13364              * @constant
    13365              */
    13366             BIT_1 : 1,
    13367             /**
    13368              * stop bit 2 bit.
    13369              * @since 1.18.4
    13370              * @constant
    13371              */
    13372             BIT_2 : 2
    13373         };
    13374         /**
    13375          * @namespace hcap.rs232c.FlowControl
    13376          */
    13377         hcap.rs232c.FlowControl = {
    13378             /**
    13379              * unknown value.
    13380              * @since 1.18.4
    13381              * @constant
    13382              */
    13383             UNKNOWN : 0,
    13384             /**
    13385              * flow control none.
    13386              * @since 1.18.4
    13387              * @constant
    13388              */
    13389             NONE : 1,
    13390             /**
    13391              * flow control Xon/Xoff.
    13392              * @since 1.18.4
    13393              * @constant
    13394              */
    13395             XON_XOFF : 2,
    13396             /**
    13397              * flow control hardware.
    13398              * @since 1.18.4
    13399              * @constant
    13400              */
    13401             HARDWARE : 3
    13402         };
    13403         /**
    13404          * Returns the current RS232C configuration.<br>
    13405          * This is worked only when the property "rs232c" is "1".<br>
    13406          *
    13407          * @param {Object} param
    13408          * <ul>
    13409          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    13410          *   <pre class="code prettyprint">
    13411          *   param.onSuccess = function (param) {
    13412          *       // {Number} param.port - COM port such as 1 for COM1 and 13 for COM13.
    13413          *       // {Number} param.baudRate - baud rate (hcap.rs232c.BaudRate)
    13414          *       // {Number} param.dataBit - data bit (hcap.rs232c.DataBit)
    13415          *       // {Number} param.parity - parity (hcap.rs232c.Parity)
    13416          *       // {Number} param.stopBit - stop bit (hcap.rs232c.StopBit)
    13417          *       // {Number} param.flowControl - flow control (hcap.rs232c.FlowControl)
    13418          *       // {Number} param.rxTimeoutInMs - Rx data timeout in ms which could be set from 0 to 1000(ms) by 10(ms). Max buffer size for Rx data is 80 bytes. For the Rx data bigger than 80 bytes, 80 bytes will be delivered to HCAP application first regardless of the timeout and the rest of the data will be sent in the next timeout.
    13419          *   }</pre>
    13420          *   </li>
    13421          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    13422          *   <pre class="code prettyprint">
    13423          *   param.onFailure = function (param) {
    13424          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    13425          *   }</pre>
    13426          *   </li>
    13427          * </ul>
    13428          *
    13429          * @since 1.18.4
    13430          *
    13431          * @see
    13432          * <a href="hcap.rs232c.html#.setConfiguration">hcap.rs232c.setConfiguration()</a><br>
    13433          * <a href="hcap.rs232c.html#.sendData">hcap.rs232c.sendData()</a><br>
    13434          * <a href="hcap.rs232c.html#.setStartupData">hcap.rs232c.setStartupData()</a><br>
    13435          * <a href="hcap.rs232c.html#.clearStartupData">hcap.rs232c.clearStartupData()</a><br>
    13436          * <a href="_global_.html#event:rs232c_data_received">{Event} rs232c_data_received</a><br>
    13437          *
    13438          * @example
    13439          * hcap.rs232c.getConfiguration({
    13440          *      "onSuccess" : function(p) {
    13441          *          console.log("onSuccess : port = " + p.port + ", baud rate = " + p.baudRate + ", data bit = " + p.dataBit + ", parity = " + p.parity + ", stop bit = " + p.stopBit + ", flow control = " + p.flowControl + ", Rx timeout (ms) = " + p.rxTimeoutInMs);
    13442          *      },
    13443          *      "onFailure" : function(f) {
    13444          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    13445          *      }
    13446          * });
    13447          */
    13448         hcap.rs232c.getConfiguration = function (param) {
    13449             hcap_command("rs232c_get_configuration", param);
    13450         };
    13451         /**
    13452          * Sets the RS232C configuration.<br>
    13453          * This is worked only when the property "rs232c" is "1".<br>
    13454          * Once RS232C is configured, it maintains its configuration unless the property "rs232c" is changed, TV is reset or other setting values are configured.<br>
    13455          * If given setting value is not supported in the platform, it will be failed.<br>
    13456          * Supported setting values are dependent on the platform or the model.<br>
    13457          * To set rs232c configuration, we recommend to get the current configuration, modify it for values you want to change and set.<br>
    13458          *
    13459          * @param {Object} param
    13460          * <ul>
    13461          *   <li>{Number} param.port [Required] - COM port such as 1 for COM1 and 13 for COM13.</li>
    13462          *   <li>{Number} param.baudRate [Required] - baud rate (hcap.rs232c.BaudRate)</li>
    13463          *   <li>{Number} param.dataBit [Required] - data bit (hcap.rs232c.DataBit)</li>
    13464          *   <li>{Number} param.parity [Required] - parity (hcap.rs232c.Parity)</li>
    13465          *   <li>{Number} param.stopBit [Required] - stop bit (hcap.rs232c.StopBit)</li>
    13466          *   <li>{Number} param.flowControl [Required] - flow control (hcap.rs232c.FlowControl)</li>
    13467          *   <li>{Number} param.rxTimeoutInMs [Required] - Rx data timeout in ms which could be set from 0 to 1000(ms) by 10(ms). Max buffer size for Rx data is 80 bytes. For the Rx data bigger than 80 bytes, 80 bytes will be delivered to HCAP application first regardless of the timeout and the rest of the data will be sent in the next timeout.</li>
    13468          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    13469          *   <pre class="code prettyprint">
    13470          *   param.onSuccess = function (param) {
    13471          *       // No Parameter.
    13472          *   }</pre>
    13473          *   </li>
    13474          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    13475          *   <pre class="code prettyprint">
    13476          *   param.onFailure = function (param) {
    13477          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    13478          *   }</pre>
    13479          *   </li>
    13480          * </ul>
    13481          *
    13482          * @since 1.18.4
    13483          *
    13484          * @see
    13485          * <a href="hcap.rs232c.html#.getConfiguration">hcap.rs232c.getConfiguration()</a><br>
    13486          * <a href="hcap.rs232c.html#.sendData">hcap.rs232c.sendData()</a><br>
    13487          * <a href="hcap.rs232c.html#.setStartupData">hcap.rs232c.setStartupData()</a><br>
    13488          * <a href="hcap.rs232c.html#.clearStartupData">hcap.rs232c.clearStartupData()</a><br>
    13489          * <a href="_global_.html#event:rs232c_data_received">{Event} rs232c_data_received</a><br>
    13490          *
    13491          * @example
    13492          * hcap.rs232c.setConfiguration({
    13493          *      "port" : 3,
    13494          *      "baudRate" : hcap.rs232c.BaudRate.BR_115200,
    13495          *      "dataBit" : hcap.rs232c.DataBit.BIT_7,
    13496          *      "parity" : hcap.rs232c.Parity.NONE,
    13497          *      "stopBit" : hcap.rs232c.StopBit.BIT_1,
    13498          *      "flowControl" : hcap.rs232c.FlowControl.NONE,
    13499          *      "rxTimeoutInMs" : 10,
    13500          *      "onSuccess" : function() {
    13501          *          console.log("onSuccess");
    13502          *      },
    13503          *      "onFailure" : function(f) {
    13504          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    13505          *      }
    13506          * });
    13507          */
    13508         hcap.rs232c.setConfiguration = function (param) {
    13509             hcap_command("rs232c_set_configuration", param);
    13510         };
    13511         /**
    13512          * Sends RS232C data.<br>
    13513          * This is worked only when the property "rs232c" is "1".<br>
    13514          *
    13515          * @param {Object} param
    13516          * <ul>
    13517          *   <li>{String} param.data - rs232c data string converted from binary data to ascii data such as ascii "3B1C42" for binary 0x3B1C42 with param.dataLength 3 (3 bytes) and ascii "00" for binary null data (0x00) with param.dataLength 1 (1 byte).</li>
    13518          *   <li>{Number} param.dataLength - received rs232c data length in bytes. Max length of EU model is 255 (bytes) and US model is 32 (bytes).</li>
    13519          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    13520          *   <pre class="code prettyprint">
    13521          *   param.onSuccess = function (param) {
    13522          *       // No Parameter.
    13523          *   }</pre>
    13524          *   </li>
    13525          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    13526          *   <pre class="code prettyprint">
    13527          *   param.onFailure = function (param) {
    13528          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    13529          *   }</pre>
    13530          *   </li>
    13531          * </ul>
    13532          *
    13533          * @since 1.18.4
    13534          *
    13535          * @see
    13536          * <a href="hcap.rs232c.html#.getConfiguration">hcap.rs232c.getConfiguration()</a><br>
    13537          * <a href="hcap.rs232c.html#.setConfiguration">hcap.rs232c.setConfiguration()</a><br>
    13538          * <a href="hcap.rs232c.html#.setStartupData">hcap.rs232c.setStartupData()</a><br>
    13539          * <a href="hcap.rs232c.html#.clearStartupData">hcap.rs232c.clearStartupData()</a><br>
    13540          * <a href="_global_.html#event:rs232c_data_received">{Event} rs232c_data_received</a><br>
    13541          *
    13542          * @example
    13543          * hcap.rs232c.sendData({
    13544          *      "data" : "3B1C42",
    13545          *      "dataLength" : 3,
    13546          *      "onSuccess" : function() {
    13547          *          console.log("onSuccess");
    13548          *      },
    13549          *      "onFailure" : function(f) {
    13550          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    13551          *      }
    13552          * });
    13553          */
    13554         hcap.rs232c.sendData = function (param) {
    13555             hcap_command("rs232c_send_data", param);
    13556         };
    13557         /**
    13558          * Sets startup command which is fired to RS232C when TV is turned on. [since 1.24.0] EU model only.<br>
    13559          * This is worked only when the property "rs232c" is "1".<br>
    13560          *
    13561          * @param {Object} param
    13562          * <ul>
    13563          *   <li>{String} param.data - rs232c data string converted from binary data to ascii data such as ascii "3B1C42" for binary 0x3B1C42 with param.dataLength 3 (3 bytes) and ascii "00" for binary null data (0x00) with param.dataLength 1 (1 byte).</li>
    13564          *   <li>{Number} param.dataLength - received rs232c data length in bytes. Max length of EU model is 255 (bytes) and US model is 32 (bytes).</li>
    13565          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    13566          *   <pre class="code prettyprint">
    13567          *   param.onSuccess = function (param) {
    13568          *       // No Parameter.
    13569          *   }</pre>
    13570          *   </li>
    13571          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    13572          *   <pre class="code prettyprint">
    13573          *   param.onFailure = function (param) {
    13574          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    13575          *   }</pre>
    13576          *   </li>
    13577          * </ul>
    13578          *
    13579          * @since 1.18.4
    13580          *
    13581          * @see
    13582          * <a href="hcap.rs232c.html#.getConfiguration">hcap.rs232c.getConfiguration()</a><br>
    13583          * <a href="hcap.rs232c.html#.setConfiguration">hcap.rs232c.setConfiguration()</a><br>
    13584          * <a href="hcap.rs232c.html#.sendData">hcap.rs232c.sendData()</a><br>
    13585          * <a href="hcap.rs232c.html#.clearStartupData">hcap.rs232c.clearStartupData()</a><br>
    13586          * <a href="_global_.html#event:rs232c_data_received">{Event} rs232c_data_received</a><br>
    13587          *
    13588          * @example
    13589          * hcap.rs232c.setStartupData({
    13590          *      "data" : "3B1C42",
    13591          *      "dataLength" : 3,
    13592          *      "onSuccess" : function() {
    13593          *          console.log("onSuccess");
    13594          *      },
    13595          *      "onFailure" : function(f) {
    13596          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    13597          *      }
    13598          * });
    13599          */
    13600         hcap.rs232c.setStartupData = function (param) {
    13601             hcap_command("rs232c_set_teaching_data", param);
    13602         };
    13603         /**
    13604          * Clears startup command which is fired to RS232C when TV is turned on. [since 1.24.0] EU model only.<br>
    13605          * This is worked only when the property "rs232c" is "1".<br>
    13606          *
    13607          * @param {Object} param
    13608          * <ul>
    13609          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    13610          *   <pre class="code prettyprint">
    13611          *   param.onSuccess = function (param) {
    13612          *       // No Parameter.
    13613          *   }</pre>
    13614          *   </li>
    13615          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    13616          *   <pre class="code prettyprint">
    13617          *   param.onFailure = function (param) {
    13618          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    13619          *   }</pre>
    13620          *   </li>
    13621          * </ul>
    13622          *
    13623          * @since 1.18.4
    13624          *
    13625          * @see
    13626          * <a href="hcap.rs232c.html#.getConfiguration">hcap.rs232c.getConfiguration()</a><br>
    13627          * <a href="hcap.rs232c.html#.setConfiguration">hcap.rs232c.setConfiguration()</a><br>
    13628          * <a href="hcap.rs232c.html#.sendData">hcap.rs232c.sendData()</a><br>
    13629          * <a href="hcap.rs232c.html#.setStartupData">hcap.rs232c.setStartupData()</a><br>
    13630          * <a href="_global_.html#event:rs232c_data_received">{Event} rs232c_data_received</a><br>
    13631          *
    13632          * @example
    13633          * hcap.rs232c.clearStartupData({
    13634          *      "onSuccess" : function() {
    13635          *          console.log("onSuccess");
    13636          *      },
    13637          *      "onFailure" : function(f) {
    13638          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    13639          *      }
    13640          * });
    13641          */
    13642         hcap.rs232c.clearStartupData = function (param) {
    13643             hcap_command("rs232c_clear_teaching_data", param);
    13644         };
    13645         /**
    13646          * @namespace hcap.system
    13647          */
    13648         hcap.system = { };
    13649         /**
    13650          * Requests screen capture.<br>
    13651          *
    13652          * @param {Object} param
    13653          * <ul>
    13654          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    13655          *   <pre class="code prettyprint">
    13656          *   param.onSuccess = function() {
    13657          *       // No Parameter.
    13658          *   }</pre>
    13659          *   </li>
    13660          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    13661          *   <pre class="code prettyprint">
    13662          *   param.onFailure = function (param) {
    13663          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    13664          *   }</pre>
    13665          *   </li>
    13666          * </ul>
    13667          *
    13668          * @since 1.23.0
    13669          *
    13670          * @see
    13671          * <a href="hcap.system.html#.getScreenCaptureImage">hcap.system.getScreenCaptureImage()</a><br>
    13672          *
    13673          * @example
    13674          * hcap.system.requestScreenCaptureImage({
    13675          *      "onSuccess" : function() {
    13676          *          console.log("onSuccess");
    13677          *      },
    13678          *      "onFailure" : function(f) {
    13679          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    13680          *      }
    13681          * });
    13682          */
    13683         hcap.system.requestScreenCaptureImage = function (param) {
    13684             hcap_command("request_screen_capture_image", param);
    13685         };
    13686         /**
    13687          * Gets the screen capture image.<br>
    13688          *
    13689          * @param {Object} param
    13690          * <ul>
    13691          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    13692          *   <pre class="code prettyprint">
    13693          *   param.onSuccess = function(param) {
    13694          *       // {String} param.uri - URI for the screen capture image.
    13695          *   }</pre>
    13696          *   </li>
    13697          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    13698          *   <pre class="code prettyprint">
    13699          *   param.onFailure = function (param) {
    13700          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    13701          *   }</pre>
    13702          *   </li>
    13703          * </ul>
    13704          *
    13705          * @since 1.23.0
    13706          *
    13707          * @see
    13708          * <a href="hcap.system.html#.requestScreenCaptureImage">hcap.system.requestScreenCaptureImage()</a><br>
    13709          *
    13710          * @example
    13711          * hcap.system.getScreenCaptureImage({
    13712          *      "onSuccess" : function(s) {
    13713          *          console.log("onSuccess : uri = " + s.uri);
    13714          *      },
    13715          *      "onFailure" : function(f) {
    13716          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    13717          *      }
    13718          * });
    13719          */
    13720         hcap.system.getScreenCaptureImage = function (param) {
    13721             hcap_command("get_screen_capture_image", param);
    13722         };
    13723         /**
    13724          * Loads HCAP HTML application.<br>
    13725          * When a HCAP HTML application has already been loaded, the HCAP HTML application is reloaded according to the "alternative_url" policy.<br>
    13726          * That is, if the property "alternative_url" exists and it is not empty string, load "alternative_url". Otherwise, the application specified in XAIT.xml is loaded.<br>
    13727          *
    13728          * @param {Object} param
    13729          * <ul>
    13730          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    13731          *   <pre class="code prettyprint">
    13732          *   param.onSuccess = function() {
    13733          *       // No Parameter.
    13734          *   }</pre>
    13735          *   </li>
    13736          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    13737          *   <pre class="code prettyprint">
    13738          *   param.onFailure = function (param) {
    13739          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    13740          *   }</pre>
    13741          *   </li>
    13742          * </ul>
    13743          *
    13744          * @since 1.19.0
    13745          *
    13746          * @see
    13747          * <a href="hcap.property.html#.getProperty">hcap.property.getProperty()</a>
    13748          *
    13749          * @example
    13750          * hcap.system.launchHcapHtmlApplication({
    13751          *      "onSuccess" : function() {
    13752          *          console.log("onSuccess");
    13753          *      },
    13754          *      "onFailure" : function(f) {
    13755          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    13756          *      }
    13757          * });
    13758          */
    13759         hcap.system.launchHcapHtmlApplication = function (param) {
    13760             hcap_command("launch_hcap_html_application", param);
    13761         };
    13762         /**
    13763          * Gets the percentage of the used memory.<br>
    13764          *
    13765          * @param {Object} param
    13766          * <ul>
    13767          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    13768          *   <pre class="code prettyprint">
    13769          *   param.onSuccess = function (param) {
    13770          *       // {Number} param.percentage - percentage of used memory.
    13771          *       // {Number} param.totalmemory - percentage of used memory.
    13772          *       // {Number} param.freememory - percentage of used memory.
    13773          *   }</pre>
    13774          *   </li>
    13775          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    13776          *   <pre class="code prettyprint">
    13777          *   param.onFailure = function (param) {
    13778          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    13779          *   }</pre>
    13780          *   </li>
    13781          * </ul>
    13782          *
    13783          * @since 1.19.0
    13784          *
    13785          * @see
    13786          * <a href="hcap.system.html#.getCpuUsage">hcap.system.getCpuUsage()</a>
    13787          *
    13788          * @example
    13789          * hcap.system.getMemoryUsage({
    13790          *      "onSuccess" : function (param) {
    13791          *          console.log("onSuccess : percentage of used memory = " + param.percentage + "free memory = " + param.freememory + "total memory = " + param.totalmemory  );
    13792          *      },
    13793          *      "onFailure" : function(f) {
    13794          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    13795          *      }
    13796          * });
    13797          */
    13798         hcap.system.getMemoryUsage = function (param) {
    13799             hcap_command("get_memory_usage", param);
    13800         };
    13801         /**
    13802          * Gets the percentage of the used CPU resource.<br>
    13803          *
    13804          * @param {Object} param
    13805          * <ul>
    13806          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    13807          *   <pre class="code prettyprint">
    13808          *   param.onSuccess = function (param) {
    13809          *       // {Number} param.percentage - percentage of used CPU resource.
    13810          *   }</pre>
    13811          *   </li>
    13812          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    13813          *   <pre class="code prettyprint">
    13814          *   param.onFailure = function (param) {
    13815          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    13816          *   }</pre>
    13817          *   </li>
    13818          * </ul>
    13819          *
    13820          * @since 1.19.0
    13821          *
    13822          * @see
    13823          * <a href="hcap.system.html#.getMemoryUsage">hcap.system.getMemoryUsage()</a>
    13824          *
    13825          * @example
    13826          * hcap.system.getCpuUsage({
    13827          *      "onSuccess" : function (param) {
    13828          *          console.log("onSuccess : percentage of used CPU resource = " + param.percentage);
    13829          *      },
    13830          *      "onFailure" : function(f) {
    13831          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    13832          *      }
    13833          * });
    13834          */
    13835         hcap.system.getCpuUsage = function (param) {
    13836             hcap_command("get_cpu_usage", param);
    13837         };
    13838         /**
    13839          * Requests to make HCAP application get focused.<br>
    13840          * If this request is successful and the focus is changed from a Preloaded Application to HCAP Application,
    13841          * HCAP Application will get the notification <a href="_global_.html#event:hcap_application_focus_changed">{Event} hcap_application_focus_changed</a><br><br>.
    13842          * If HCAP Application gets focused already, there will be no notification regarding focus change.
    13843          * This is worked only when the property "block_hotkey" is "1".
    13844          *
    13845          * @param {Object} param
    13846          * <ul>
    13847          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    13848          *   <pre class="code prettyprint">
    13849          *   param.onSuccess = function() {
    13850          *       // No Parameter.
    13851          *   }</pre>
    13852          *   </li>
    13853          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    13854          *   <pre class="code prettyprint">
    13855          *   param.onFailure = function (param) {
    13856          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    13857          *   }</pre>
    13858          *   </li>
    13859          * </ul>
    13860          *
    13861          * @since 1.19.0
    13862          *
    13863          * @see
    13864          * <a href="hcap.property.html#.getProperty">hcap.property.getProperty()</a><br>
    13865          *
    13866          * @example
    13867          * hcap.system.requestFocus({
    13868          *      "onSuccess" : function() {
    13869          *          console.log("onSuccess");
    13870          *      },
    13871          *      "onFailure" : function(f) {
    13872          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    13873          *      }
    13874          * });
    13875          */
    13876         hcap.system.requestFocus = function (param) {
    13877             hcap_command("request_focus", param);
    13878         };
    13879         /**
    13880          * Gets whether HCAP application gets focused or not.<br>
    13881          * This is worked only when the property "block_hotkey" is "1".
    13882          *
    13883          * @param {Object} param
    13884          * <ul>
    13885          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    13886          *   <pre class="code prettyprint">
    13887          *   param.onSuccess = function (param) {
    13888          *       // {Boolean} param.focused - true if the HCAP application gets focused, else false.
    13889          *   }</pre>
    13890          *   </li>
    13891          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    13892          *   <pre class="code prettyprint">
    13893          *   param.onFailure = function (param) {
    13894          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    13895          *   }</pre>
    13896          *   </li>
    13897          * </ul>
    13898          *
    13899          * @since 1.19.0
    13900          *
    13901          * @see
    13902          * <a href="hcap.property.html#.getProperty">hcap.property.getProperty()</a><br>
    13903          *
    13904          * @example
    13905          * hcap.system.getFocused({
    13906          *      "onSuccess" : function (param) {
    13907          *          console.log("onSuccess : focused = " + param.focused);
    13908          *      },
    13909          *      "onFailure" : function(f) {
    13910          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    13911          *      }
    13912          * });
    13913          */
    13914         hcap.system.getFocused = function (param) {
    13915             hcap_command("get_focused", param);
    13916         };
    13917         /**
    13918          * Requests XML cloning to TV.<br>
    13919          * This acts exactly same as USB cloning.<br>
    13920          * When the cloning is done, HCAP Application will get the notification <a href="_global_.html#event:cloning_done_received">{Event} cloning_done_received</a>.<br>
    13921          * <strong>We strongly recommend reboot after xml cloning.</strong><br>
    13922          *
    13923          * @param {Object} param
    13924          * <ul>
    13925          *   <li>{String} param.xml - XML string for cloning.</li>
    13926          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    13927          *   <pre class="code prettyprint">
    13928          *   param.onSuccess = function()
    13929          *       // No Parameter.
    13930          *   }</pre>
    13931          *   </li>
    13932          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    13933          *   <pre class="code prettyprint">
    13934          *   param.onFailure = function (param) {
    13935          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    13936          *   }</pre>
    13937          *   </li>
    13938          * </ul>
    13939          *
    13940          * @since 1.19.0
    13941          *
    13942          * @see
    13943          * <a href="_global_.html#event:cloning_done_received">{Event} cloning_done_received</a><br>
    13944          *
    13945          * @example
    13946          * hcap.system.requestCloning({
    13947          *      "xml" : "<xml>....</xml>",
    13948          *      "onSuccess" : function() {
    13949          *          console.log("onSuccess");
    13950          *      },
    13951          *      "onFailure" : function(f) {
    13952          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    13953          *      }
    13954          * });
    13955          */
    13956         hcap.system.requestCloning = function (param) {
    13957             hcap_command("request_cloning", param);
    13958         };
    13959         /**
    13960          * Gets the supported locale item list with an item (specifier, language name, country name).<br>
    13961          * Locale specifier is composed of {language code}-{country code} and it is worked as the identifier when setting system locale.<br>
    13962          *
    13963          * @param {Object} param
    13964          * <ul>
    13965          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    13966          *   <pre class="code prettyprint">
    13967          *   param.onSuccess = function (param) {
    13968          *       // {Array} param.list - locale list supported by TV.
    13969          *       //         {String} param.list[].specifier - locale specifier ({language code}-{country code} such as "en-GB" and "ko-KR")
    13970          *       //         {String} param.list[].language - language name
    13971          *       //         {String} param.list[].country - country name
    13972          *       //                 param.list example -
    13973          *       //                     "list" :  [
    13974          *       //                     { "specifier" : "en-GB", "language" : "English", "country" : "United Kingdom" },
    13975          *       //                     { "specifier" : "ko-KR", "language" : "�븳援��뼱", "country" : "�븳援�" },
    13976          *       //                     ]
    13977          *   }</pre>
    13978          *   </li>
    13979          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    13980          *   <pre class="code prettyprint">
    13981          *   param.onFailure = function (param) {
    13982          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    13983          *   }</pre>
    13984          *   </li>
    13985          * </ul>
    13986          *
    13987          * @since 1.19.0
    13988          *
    13989          * @see
    13990          * <a href="_global_.html#event:locale_changed">{Event} locale_changed</a><br>
    13991          * <a href="hcap.system.html#.getLocaleList">hcap.system.getLocaleList()</a><br>
    13992          * <a href="hcap.system.html#.requestLocaleChange">hcap.system.requestLocaleChange()</a><br>
    13993          *
    13994          * @example
    13995          * hcap.system.getLocaleList({
    13996          *      "onSuccess" : function(s) {
    13997          *          console.log("onSuccess : list length = " + s.list.length);
    13998          *          for (var i = 0; i < s.list.length; i++) {
    13999          *              console.log(
    14000          *                  "list[" + i + "].specifier = " + s.list[i].specifier +
    14001          *                  "list[" + i + "].language = " + s.list[i].language +
    14002          *                  "list[" + i + "].country = " + s.list[i].country
    14003          *              );
    14004          *          }
    14005          *      },
    14006          *      "onFailure" : function(f) {
    14007          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    14008          *      }
    14009          * });
    14010          */
    14011         hcap.system.getLocaleList = function (param) {
    14012             hcap_command("get_locale_list", param);
    14013         };
    14014         /**
    14015          * Gets the locale specifier of the current locale.<br>
    14016          *
    14017          * @param {Object} param
    14018          * <ul>
    14019          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14020          *   <pre class="code prettyprint">
    14021          *   param.onSuccess = function (param) {
    14022          *       // {String} param.specifier - locale specifier of the current locale.
    14023          *       // {String} param.language - language name of the current locale.
    14024          *       // {String} param.country - country name of the current locale.
    14025          *   }</pre>
    14026          *   </li>
    14027          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14028          *   <pre class="code prettyprint">
    14029          *   param.onFailure = function (param) {
    14030          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14031          *   }</pre>
    14032          *   </li>
    14033          * </ul>
    14034          *
    14035          * @since 1.19.0
    14036          *
    14037          * @see
    14038          * <a href="_global_.html#event:locale_changed">{Event} locale_changed</a><br>
    14039          * <a href="hcap.system.html#.getLocaleList">hcap.system.getLocaleList()</a><br>
    14040          * <a href="hcap.system.html#.requestLocaleChange">hcap.system.requestLocaleChange()</a><br>
    14041          *
    14042          * @example
    14043          * hcap.system.getLocale({
    14044          *      "onSuccess" : function (param) {
    14045          *          console.log("onSuccess : specifier = " + param.specifier + ", language = " + param.language + ", country = " + param.country);
    14046          *      },
    14047          *      "onFailure" : function(f) {
    14048          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    14049          *      }
    14050          * });
    14051          */
    14052         hcap.system.getLocale = function (param) {
    14053             hcap_command("get_locale", param);
    14054         };
    14055         /**
    14056          * Requests the system locale change to TV.<br>
    14057          * It will return soon after the request is done.<br>
    14058          * If the request is successful, the menu language will be changed and the locale change result will be notified through <a href="_global_.html#event:locale_changed">{Event} locale_changed</a>.<br>
    14059          *
    14060          * @param {Object} param
    14061          * <ul>
    14062          *   <li>{String} param.specifier - locale specifier to set.</li>
    14063          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14064          *   <pre class="code prettyprint">
    14065          *   param.onSuccess = function()
    14066          *       // No Parameter.
    14067          *   }</pre>
    14068          *   </li>
    14069          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14070          *   <pre class="code prettyprint">
    14071          *   param.onFailure = function (param) {
    14072          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14073          *   }</pre>
    14074          *   </li>
    14075          * </ul>
    14076          *
    14077          * @since 1.19.0
    14078          *
    14079          * @see
    14080          * <a href="_global_.html#event:locale_changed">{Event} locale_changed</a><br>
    14081          * <a href="hcap.system.html#.getLocaleList">hcap.system.getLocaleList()</a><br>
    14082          * <a href="hcap.system.html#.getLocale">hcap.system.getLocale()</a><br>
    14083          *
    14084          * @example
    14085          * hcap.system.requestLocaleChange({
    14086          *      "specifier" : "ko-KR",
    14087          *      "onSuccess" : function() {
    14088          *          console.log("onSuccess");
    14089          *      },
    14090          *      "onFailure" : function(f) {
    14091          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    14092          *      }
    14093          * });
    14094          */
    14095         hcap.system.requestLocaleChange = function (param) {
    14096             hcap_command("request_locale_change", param);
    14097         };
    14098         /**
    14099          * Gets the current configuration of Pro:Centric server.<br>
    14100          *
    14101          * @param {Object} param
    14102          * <ul>
    14103          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14104          *   <pre class="code prettyprint">
    14105          *   param.onSuccess = function (param) {
    14106          *       // {String} param.mode - Pro:Centric mode. ([US] "configuration_only"/"gem"/"flash"/"html", [EU] "off"/"configuration_only"/"gem"/"flash"/"html")
    14107          *       // {String} param.media - media type ("rf"/"ip")
    14108          *       // {Object} param.rfServer - data for param.media = "rf"
    14109          *       //      {
    14110          *       //          {String} type - RF data channel type ([US] "auto"/ "manual", [EU] "dvb-t"/"dvb-c")
    14111          *       //          {Number} dataChannelNumber - [US] data channel number of RF server
    14112          *       //          {Number} frequency - [EU] frequency of RF server (Hz, and MHz for satellite)
    14113          *       //      }
    14114          *       // {Object} param.ipServer - data for param.media = "ip"
    14115          *       //      {
    14116          *       //          {String} type - [US/EU] IP address type ("ip" : IPv4 or IPv6 type / "domain_name" : domain name)
    14117          *       //          {String} ip - [US/EU] IPv4 or IPv6 address taken affect only when type is "ip"
    14118          *       //          {String} domainName - [US/EU] domain name taken affect only when type is "domain_name"
    14119          *       //          {Number} port - [US/EU] IP port number
    14120          *       //      }
    14121          *   }</pre>
    14122          *   </li>
    14123          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14124          *   <pre class="code prettyprint">
    14125          *   param.onFailure = function (param) {
    14126          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14127          *   }</pre>
    14128          *   </li>
    14129          * </ul>
    14130          *
    14131          * @since 1.19.0
    14132          *
    14133          * @see
    14134          * <a href="hcap.system.html#.setProcentricServer">hcap.system.setProcentricServer()</a><br>
    14135          *
    14136          * @example
    14137          * hcap.system.getProcentricServer({
    14138          *      "onSuccess" : function(p) {
    14139          *          console.log("onSuccess : Pro:Centric server mode = " + p.mode + ", media = " + p.media);
    14140          *          if (p.media === "rf") {
    14141          *              console.log("RF server type = " + p.rfServer.type + ", data channel number = " + p.rfServer.dataChannelNumber); // US
    14142          *              console.log("RF server type = " + p.rfServer.type + ", frequency = " + p.rfServer.freqeuncy); // EU
    14143          *          } else if (p.media === "ip") {
    14144          *              if (p.ipServer.type === "ip") {
    14145          *                  console.log("IP server : type = ip, ip address = " + p.ipServer.ip + ", port = " + p.ipServer.port);
    14146          *              } else if (p.ipServer.type === "domain_name") {
    14147          *                  console.log("IP server : type = domain_name, domain name = " + p.ipServer.domainName + ", port = " + p.ipServer.port);
    14148          *              }
    14149          *          }
    14150          *      },
    14151          *      "onFailure" : function(f) {
    14152          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    14153          *      }
    14154          * });
    14155          */
    14156         hcap.system.getProcentricServer = function (param) {
    14157             hcap_command("get_procentric_server", param);
    14158         };
    14159         /**
    14160          * Sets the configuration of Pro:Centric server.<br>
    14161          *
    14162          * @param {Object} param
    14163          * <ul>
    14164          *   <li>{String} param.mode [Required] - Pro:Centric mode. ([US] "configuration_only"/"gem"/"flash"/"html", [EU] "off"/"configuration_only"/"gem"/"flash"/"html")</li>
    14165          *   <li>{String} param.media [Required] - media type ("rf"/"ip")</li>
    14166          *   <li>{Object} param.rfServer [Required] - data for param.media = "rf"<br>
    14167          *         {<br>
    14168          *             {String} type - RF data channel type ([US] "auto"/ "manual", [EU] "dvb-t"/"dvb-c")<br>
    14169          *             {Number} dataChannelNumber - [US] data channel number of RF server<br>
    14170          *             {Number} frequency - [EU] frequency of RF server (Hz, and MHz for satellite)<br>
    14171          *         }
    14172          *   </li>
    14173          *   <li>{Object} param.ipServer [Required] - data for param.media = "ip"<br>
    14174          *         {<br>
    14175          *             {String} type - [US/EU] IP address type ("ip" : IPv4 or IPv6 type / "domain_name" : domain name)<br>
    14176          *             {String} ip - [US/EU] IPv4 or IPv6 address taken affect only when type is "ip"<br>
    14177          *             {String} domainName - [US/EU] domain name taken affect only when type is "domain_name"<br>
    14178          *             {Number} port - IP port number<br>
    14179          *         }
    14180          *   </li>
    14181          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14182          *   <pre class="code prettyprint">
    14183          *   param.onSuccess = function()
    14184          *       // No Parameter.
    14185          *   }</pre>
    14186          *   </li>
    14187          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14188          *   <pre class="code prettyprint">
    14189          *   param.onFailure = function (param) {
    14190          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14191          *   }</pre>
    14192          *   </li>
    14193          * </ul>
    14194          *
    14195          * @since 1.19.0
    14196          *
    14197          * @see
    14198          * <a href="hcap.system.html#.getProcentricServer">hcap.system.getProcentricServer()</a><br>
    14199          *
    14200          * @example
    14201          * hcap.system.setProcentricServer({
    14202          *      "mode" : "gem",
    14203          *      "media" : "ip",
    14204          *      "ipServer" :  {
    14205          *          "type" : "domain_name",
    14206          *          "domainName" : "lge.com",
    14207          *          "port" : 3876
    14208          *      },
    14209          *      "onSuccess" : function() {
    14210          *          console.log("onSuccess");
    14211          *      },
    14212          *      "onFailure" : function(f) {
    14213          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    14214          *      }
    14215          * });
    14216          */
    14217         hcap.system.setProcentricServer = function (param) {
    14218             hcap_command("set_procentric_server", param);
    14219         };
    14220         /**
    14221          * @namespace hcap.system.SoundOutputType
    14222          */
    14223         hcap.system.SoundOutputType = {
    14224             /**
    14225              * Unknown
    14226              * @since 1.20.0
    14227              * @constant
    14228              */
    14229             UNKNOWN : 0,
    14230             /**
    14231              * Internal TV Speaker
    14232              * @since 1.20.0
    14233              * @constant
    14234              */
    14235             INTERNAL_TV_SPEAKER : 1,
    14236             /**
    14237              * Wired Headphones
    14238              * @since 1.20.0
    14239              * @constant
    14240              */
    14241             WIRED_HEADPHONES : 2,
    14242             /**
    14243              * Off
    14244              * @since 1.23.0
    14245              * @constant
    14246              */
    14247             OFF : 3,
    14248             /**
    14249              * Optical
    14250              * @since 1.23.0
    14251              * @constant
    14252              */
    14253             OPTICAL : 4,
    14254             /**
    14255              * Optical LG Sound Sync
    14256              * @since 1.23.0
    14257              * @constant
    14258              */
    14259             OPTICAL_LGSOUNDSYNC : 5,
    14260             /**
    14261              * External ARC
    14262              * @since 1.23.0
    14263              * @constant
    14264              */
    14265             EXTERNAL_ARC : 6
    14266         };
    14267         /**
    14268          * Gets the current sound output.<br>
    14269          *
    14270          * @param {Object} param
    14271          * <ul>
    14272          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14273          *   <pre class="code prettyprint">
    14274          *   param.onSuccess = function (param) {
    14275          *       // {Number} param.soundOutput - sound output. Please refer to <a href="hcap.system.SoundOutputType.html">hcap.system.SoundOutputType</a>.
    14276          *   }</pre>
    14277          *   </li>
    14278          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14279          *   <pre class="code prettyprint">
    14280          *   param.onFailure = function (param) {
    14281          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14282          *   }</pre>
    14283          *   </li>
    14284          * </ul>
    14285          *
    14286          * @since 1.20.0
    14287          *
    14288          * @see
    14289          * <a href="hcap.system.html#.setSoundOutput">hcap.system.setSoundOutput()</a><br>
    14290          *
    14291          * @example
    14292          * hcap.system.getSoundOutput({
    14293          *      "onSuccess" : function(p) {
    14294          *          console.log("onSuccess : sound output = " + p.soundOutput);
    14295          *      },
    14296          *      "onFailure" : function(f) {
    14297          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    14298          *      }
    14299          * });
    14300          */
    14301         hcap.system.getSoundOutput = function (param) {
    14302             hcap_command("get_sound_output", param);
    14303         };
    14304         /**
    14305 		 * Gets the default sound output.<br>
    14306 		 *
    14307 		 * @param {Object} param
    14308 		 * <ul>
    14309 		 *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14310 		 *   <pre class="code prettyprint">
    14311 		 *   param.onSuccess = function (param) {
    14312 		 *       // {Number} param.defaultSoundOutput - default sound output. Please refer to <a href="hcap.system.SoundOutputType.html">hcap.system.SoundOutputType</a>.
    14313 		 *   }</pre>
    14314 		 *   </li>
    14315 		 *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14316 		 *   <pre class="code prettyprint">
    14317 		 *   param.onFailure = function (param) {
    14318 		 *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14319 		 *   }</pre>
    14320 		 *   </li>
    14321 		 * </ul>
    14322 		 *
    14323 		 * @since 1.23.0
    14324 		 *
    14325 		 * @see
    14326 		 * <a href="hcap.system.html#.setDefaultSoundOutput">hcap.system.setDefaultSoundOutput()</a><br>
    14327 		 *
    14328 		 * @example
    14329 		 * hcap.system.getDefaultSoundOutput({
    14330 		 *      "onSuccess" : function(p) {
    14331 		 *          console.log("onSuccess : sound output = " + p.defaultSoundOutput);
    14332 		 *      },
    14333 		 *      "onFailure" : function(f) {
    14334 		 *          console.log("onFailure : errorMessage = " + f.errorMessage);
    14335 		 *      }
    14336 		 * });
    14337 		 */
    14338 		hcap.system.getDefaultSoundOutput = function (param) {
    14339 			hcap_command("get_default_sound_output", param);
    14340 		};
    14341         /**
    14342          * Sets the sound output.<br>
    14343          *
    14344          * @param {Object} param
    14345          * <ul>
    14346          *   <li>{Number} param.soundOutput [Required] - sound output. Please refer to <a href="hcap.system.SoundOutputType.html">hcap.system.SoundOutputType</a>.</li>
    14347          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14348          *   <pre class="code prettyprint">
    14349          *   param.onSuccess = function (param) {
    14350          *       // No Parameter.
    14351          *   }</pre>
    14352          *   </li>
    14353          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14354          *   <pre class="code prettyprint">
    14355          *   param.onFailure = function (param) {
    14356          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14357          *   }</pre>
    14358          *   </li>
    14359          * </ul>
    14360          *
    14361          * @since 1.20.0
    14362          *
    14363          * @see
    14364          * <a href="hcap.system.html#.getSoundOutput">hcap.system.getSoundOutput()</a><br>
    14365          *
    14366          * @example
    14367          * hcap.system.setSoundOutput({
    14368          *      "soundOutput" : hcap.system.SoundOutputType.WIRED_HEADPHONES,
    14369          *      "onSuccess" : function(p) {
    14370          *          console.log("onSuccess : sound output = " + p.soundOutput);
    14371          *      },
    14372          *      "onFailure" : function(f) {
    14373          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    14374          *      }
    14375          * });
    14376          */
    14377         hcap.system.setSoundOutput = function (param) {
    14378             hcap_command("set_sound_output", param);
    14379         };
    14380         /**
    14381 		 * Sets the default sound output.<br>
    14382 		 *
    14383 		 * @param {Object} param
    14384 		 * <ul>
    14385 		 *   <li>{Number} param.defaultSoundOutput [Required] - default sound output. Please refer to <a href="hcap.system.SoundOutputType.html">hcap.system.SoundOutputType</a>.</li>
    14386 		 *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14387 		 *   <pre class="code prettyprint">
    14388 		 *   param.onSuccess = function (param) {
    14389 		 *       // No Parameter.
    14390 		 *   }</pre>
    14391 		 *   </li>
    14392 		 *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14393 		 *   <pre class="code prettyprint">
    14394 		 *   param.onFailure = function (param) {
    14395 		 *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14396 		 *   }</pre>
    14397 		 *   </li>
    14398 		 * </ul>
    14399 		 *
    14400 		 * @since 1.23.0
    14401 		 *
    14402 		 * @see
    14403 		 * <a href="hcap.system.html#.getDefaultSoundOutput">hcap.system.getDefaultSoundOutput()</a><br>
    14404 		 *
    14405 		 * @example
    14406 		 * hcap.system.setDefaultSoundOutput({
    14407 		 *      "defaultSoundOutput" : hcap.system.SoundOutputType.OPTICAL,
    14408 		 *      "onSuccess" : function(p) {
    14409 		 *          console.log("onSuccess : sound output = " + p.soundOutput);
    14410 		 *      },
    14411 		 *      "onFailure" : function(f) {
    14412 		 *          console.log("onFailure : errorMessage = " + f.errorMessage);
    14413 		 *      }
    14414 		 * });
    14415 		 */
    14416 		hcap.system.setDefaultSoundOutput = function (param) {
    14417 			hcap_command("set_default_sound_output", param);
    14418 		};
    14419         /**
    14420          * Informs TV of that the application will start cleaning up its resource.<br>
    14421          * This should be called within 1 second in the event "on_destroy" listener, or it will be failed.<br>
    14422          * If this is not called or is called after 1 second, TV will not wait for hcap.system.endDestroy and go turn off.<br>
    14423          *
    14424          * @param {Object} param
    14425          * <ul>
    14426          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14427          *   <pre class="code prettyprint">
    14428          *   param.onSuccess = function (param) {
    14429          *       // No Parameter.
    14430          *   }</pre>
    14431          *   </li>
    14432          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14433          *   <pre class="code prettyprint">
    14434          *   param.onFailure = function (param) {
    14435          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14436          *   }</pre>
    14437          *   </li>
    14438          * </ul>
    14439          *
    14440          * @since 1.20.0
    14441          *
    14442          * @see
    14443          * <a href="_global_.html#event:on_destroy">{Event} on_destroy</a><br>
    14444          * <a href="hcap.system.html#.endDestroy">hcap.system.endDestroy()</a><br>
    14445          *
    14446          * @example
    14447          * document.addEventListener(
    14448          *      "on_destroy",
    14449          *      function() {
    14450          *          console.log("Event 'on_destroy' is received");
    14451          *          hcap.system.beginDestroy({
    14452          *              "onSuccess" : function() {
    14453          *                  console.log("beginDestroy onSuccess");
    14454          *
    14455          *                  // clean up resources
    14456          *
    14457          *                  hcap.system.endDestroy({
    14458          *                      "onSuccess" : function() {
    14459          *                          console.log("endDestroy onSuccess");
    14460          *                      },
    14461          *                      "onFailure" : function(e) {
    14462          *                          console.log("endDestroy onFailure : errorMessage = " + e.errorMessage);
    14463          *                      }
    14464          *                  });
    14465          *              },
    14466          *              "onFailure" : function(f) {
    14467          *                  console.log("beginDestroy onFailure : errorMessage = " + f.errorMessage);
    14468          *              }
    14469          *          });
    14470          *      },
    14471          *      false
    14472          * );
    14473          */
    14474         hcap.system.beginDestroy = function (param) {
    14475             hcap_command("begin_destroy", param);
    14476         };
    14477         /**
    14478          * Informs TV of that the application finishes its cleanup job.<br>
    14479          * TV waits for hcap.system.endDestroy up to 10 minutes after hcap.system.beginDestroy is called.<br>
    14480          *
    14481          * @param {Object} param
    14482          * <ul>
    14483          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14484          *   <pre class="code prettyprint">
    14485          *   param.onSuccess = function (param) {
    14486          *       // No Parameter.
    14487          *   }</pre>
    14488          *   </li>
    14489          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14490          *   <pre class="code prettyprint">
    14491          *   param.onFailure = function (param) {
    14492          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14493          *   }</pre>
    14494          *   </li>
    14495          * </ul>
    14496          *
    14497          * @since 1.20.0
    14498          *
    14499          * @see
    14500          * <a href="_global_.html#event:on_destroy">{Event} on_destroy</a><br>
    14501          * <a href="hcap.system.html#.beginDestroy">hcap.system.beginDestroy()</a><br>
    14502          *
    14503          * @example
    14504          * document.addEventListener(
    14505          *      "on_destroy",
    14506          *      function() {
    14507          *          console.log("Event 'on_destroy' is received");
    14508          *          hcap.system.beginDestroy({
    14509          *              "onSuccess" : function() {
    14510          *                  console.log("beginDestroy onSuccess");
    14511          *
    14512          *                  // clean up resources
    14513          *
    14514          *                  hcap.system.endDestroy({
    14515          *                      "onSuccess" : function() {
    14516          *                          console.log("endDestroy onSuccess");
    14517          *                      },
    14518          *                      "onFailure" : function(e) {
    14519          *                          console.log("endDestroy onFailure : errorMessage = " + e.errorMessage);
    14520          *                      }
    14521          *                  });
    14522          *              },
    14523          *              "onFailure" : function(f) {
    14524          *                  console.log("beginDestroy onFailure : errorMessage = " + f.errorMessage);
    14525          *              }
    14526          *          });
    14527          *      },
    14528          *      false
    14529          * );
    14530          */
    14531         hcap.system.endDestroy = function (param) {
    14532             hcap_command("end_destroy", param);
    14533         };
    14534         /**
    14535          * Gets the current audio pts offset.<br>
    14536          *
    14537          * @param {Object} param
    14538          * <ul>
    14539          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14540          *   <pre class="code prettyprint">
    14541          *   param.onSuccess = function (param) {
    14542          *       // {Number} param.audioPtsOffset - audio pts offset.
    14543          *   }</pre>
    14544          *   </li>
    14545          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14546          *   <pre class="code prettyprint">
    14547          *   param.onFailure = function (param) {
    14548          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14549          *   }</pre>
    14550          *   </li>
    14551          * </ul>
    14552          *
    14553          * @since 1.21.0
    14554          *
    14555          * @see
    14556          * <a href="hcap.system.html#.setAudioPtsOffset">hcap.system.setAudioPtsOffset()</a><br>
    14557          * <a href="hcap.system.html#.getVideoPtsOffset">hcap.system.getVideoPtsOffset()</a><br>
    14558          * <a href="hcap.system.html#.setVideoPtsOffset">hcap.system.setVideoPtsOffset()</a><br>
    14559          *
    14560          * @example
    14561          * hcap.system.getAudioPtsOffset({
    14562          *      "onSuccess" : function(p) {
    14563          *          console.log("onSuccess : audio pts offset = " + p.audioPtsOffset);
    14564          *      },
    14565          *      "onFailure" : function(f) {
    14566          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    14567          *      }
    14568          * });
    14569          */
    14570         hcap.system.getAudioPtsOffset = function (param) {
    14571             hcap_command("get_audio_pts_offset", param);
    14572         };
    14573         /**
    14574          * sets the audio pts offset.<br>
    14575          *
    14576          * @param {Object} param
    14577          * <ul>
    14578          *   <li>{Number} param.audioPtsOffset [Required] - audio pts offset. The value must be multiples of 10 (-500 ~ 500).</li>
    14579          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14580          *   <pre class="code prettyprint">
    14581          *   param.onSuccess = function (param) {
    14582          *       // No Parameter.
    14583          *   }</pre>
    14584          *   </li>
    14585          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14586          *   <pre class="code prettyprint">
    14587          *   param.onFailure = function (param) {
    14588          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14589          *   }</pre>
    14590          *   </li>
    14591          * </ul>
    14592          *
    14593          * @since 1.21.0
    14594          *
    14595          * @see
    14596          * <a href="hcap.system.html#.getAudioPtsOffset">hcap.system.getAudioPtsOffset()</a><br>
    14597          * <a href="hcap.system.html#.getVideoPtsOffset">hcap.system.getVideoPtsOffset()</a><br>
    14598          * <a href="hcap.system.html#.setVideoPtsOffset">hcap.system.setVideoPtsOffset()</a><br>
    14599          * <a href="_global_.html#event:ui_value_changed">{Event} ui_value_changed</a><br>
    14600          *
    14601          * @example
    14602          * hcap.system.setAudioPtsOffset({
    14603          *      "audioPtsOffset" : 10,
    14604          *      "onSuccess" : function(p) {
    14605          *          console.log("onSuccess : audio pts offset = " + p.audioPtsOffset);
    14606          *      },
    14607          *      "onFailure" : function(f) {
    14608          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    14609          *      }
    14610          * });
    14611          */
    14612         hcap.system.setAudioPtsOffset = function (param) {
    14613             hcap_command("set_audio_pts_offset", param);
    14614         };
    14615         /**
    14616          * Gets the current video pts offset.<br>
    14617          *
    14618          * @param {Object} param
    14619          * <ul>
    14620          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14621          *   <pre class="code prettyprint">
    14622          *   param.onSuccess = function (param) {
    14623          *       // {Number} param.videoPtsOffset - video pts offset.
    14624          *   }</pre>
    14625          *   </li>
    14626          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14627          *   <pre class="code prettyprint">
    14628          *   param.onFailure = function (param) {
    14629          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14630          *   }</pre>
    14631          *   </li>
    14632          * </ul>
    14633          *
    14634          * @since 1.21.0
    14635          *
    14636          * @see
    14637          * <a href="hcap.system.html#.setVideoPtsOffset">hcap.system.setVideoPtsOffset()</a><br>
    14638          * <a href="hcap.system.html#.getAudioPtsOffset">hcap.system.getAudioPtsOffset()</a><br>
    14639          * <a href="hcap.system.html#.setAudioPtsOffset">hcap.system.setAudioPtsOffset()</a><br>
    14640          *
    14641          * @example
    14642          * hcap.system.getVideoPtsOffset({
    14643          *      "onSuccess" : function(p) {
    14644          *          console.log("onSuccess : video pts offset = " + p.videoPtsOffset);
    14645          *      },
    14646          *      "onFailure" : function(f) {
    14647          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    14648          *      }
    14649          * });
    14650          */
    14651         hcap.system.getVideoPtsOffset = function (param) {
    14652             hcap_command("get_video_pts_offset", param);
    14653         };
    14654         /**
    14655          * sets the video pts offset.<br>
    14656          *
    14657          * @param {Object} param
    14658          * <ul>
    14659          *   <li>{Number} param.videoPtsOffset [Required] - video pts offset. The value must be multiples of 10 (-500 ~ 500).</li>
    14660          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14661          *   <pre class="code prettyprint">
    14662          *   param.onSuccess = function (param) {
    14663          *       // No Parameter.
    14664          *   }</pre>
    14665          *   </li>
    14666          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14667          *   <pre class="code prettyprint">
    14668          *   param.onFailure = function (param) {
    14669          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14670          *   }</pre>
    14671          *   </li>
    14672          * </ul>
    14673          *
    14674          * @since 1.21.0
    14675          *
    14676          * @see
    14677          * <a href="hcap.system.html#.getVideoPtsOffset">hcap.system.getVideoPtsOffset()</a><br>
    14678          * <a href="hcap.system.html#.getAudioPtsOffset">hcap.system.getAudioPtsOffset()</a><br>
    14679          * <a href="hcap.system.html#.setAudioPtsOffset">hcap.system.setAudioPtsOffset()</a><br>
    14680          * <a href="_global_.html#event:ui_value_changed">{Event} ui_value_changed</a><br>
    14681          *
    14682          * @example
    14683          * hcap.system.setVideoPtsOffset({
    14684          *      "videoPtsOffset" : 10,
    14685          *      "onSuccess" : function(p) {
    14686          *          console.log("onSuccess : video pts offset = " + p.videoPtsOffset);
    14687          *      },
    14688          *      "onFailure" : function(f) {
    14689          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    14690          *      }
    14691          * });
    14692          */
    14693         hcap.system.setVideoPtsOffset = function (param) {
    14694             hcap_command("set_video_pts_offset", param);
    14695         };
    14696         /**
    14697          * Gets the current configuration of proxy server.<br>
    14698          *
    14699          * @param {Object} param
    14700          * <ul>
    14701          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14702          *   <pre class="code prettyprint">
    14703          *   param.onSuccess = function (param) {
    14704          *       // {String} param.ip - IPv4 or IPv6 address
    14705          *       // {Number} param.port - IP port number
    14706          *   }</pre>
    14707          *   </li>
    14708          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14709          *   <pre class="code prettyprint">
    14710          *   param.onFailure = function (param) {
    14711          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14712          *   }</pre>
    14713          *   </li>
    14714          * </ul>
    14715          *
    14716          * @since 1.21.0
    14717          *
    14718          * @see
    14719          * <a href="hcap.system.html#.setProxyServer">hcap.system.setProxyServer()</a><br>
    14720          * <a href="hcap.system.html#.expireProxyServer">hcap.system.expireProxyServer()</a><br>
    14721          *
    14722          * @example
    14723          * hcap.system.getProxyServer({
    14724          *      "onSuccess" : function(p) {
    14725          *          console.log("onSuccess : proxy server ip address= " + p.ip + ", port = " + p.port);
    14726          *      },
    14727          *      "onFailure" : function(f) {
    14728          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    14729          *      }
    14730          * });
    14731          */
    14732         hcap.system.getProxyServer = function (param) {
    14733             hcap_command("get_proxy_server", param);
    14734         };
    14735         /**
    14736          * Sets the configuration of proxy server.<br>
    14737          *
    14738          * @param {Object} param
    14739          * <ul>
    14740          *   <li>{String} param.ip [Required] - ip - IPv4 or IPv6 address</li>
    14741          *   <li>{Number} param.port [Required] - port - IP port number</li>
    14742          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14743          *   <pre class="code prettyprint">
    14744          *   param.onSuccess = function()
    14745          *       // No Parameter.
    14746          *   }</pre>
    14747          *   </li>
    14748          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14749          *   <pre class="code prettyprint">
    14750          *   param.onFailure = function (param) {
    14751          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14752          *   }</pre>
    14753          *   </li>
    14754          * </ul>
    14755          *
    14756          * @since 1.21.0
    14757          *
    14758          * @see
    14759          * <a href="hcap.system.html#.getProxyServer">hcap.system.getProxyServer()</a><br>
    14760          * <a href="hcap.system.html#.expireProxyServer">hcap.system.expireProxyServer()</a><br>
    14761          *
    14762          * @example
    14763          * hcap.system.setProxyServer({
    14764          *      "ip" : "1.2.3.4",
    14765          *      "port" : 3876,
    14766          *      "onSuccess" : function() {
    14767          *          console.log("onSuccess");
    14768          *      },
    14769          *      "onFailure" : function(f) {
    14770          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    14771          *      }
    14772          * });
    14773          */
    14774         hcap.system.setProxyServer = function (param) {
    14775             hcap_command("set_proxy_server", param);
    14776         };
    14777         /**
    14778          * Expires the current configuration of proxy server.<br>
    14779          *
    14780          * @param {Object} param
    14781          * <ul>
    14782          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14783          *   <pre class="code prettyprint">
    14784          *   param.onSuccess = function()
    14785          *       // No Parameter.
    14786          *   }</pre>
    14787          *   </li>
    14788          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14789          *   <pre class="code prettyprint">
    14790          *   param.onFailure = function (param) {
    14791          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14792          *   }</pre>
    14793          *   </li>
    14794          * </ul>
    14795          *
    14796          * @since 1.21.0
    14797          *
    14798          * @see
    14799          * <a href="hcap.system.html#.getProxyServer">hcap.system.getProxyServer()</a><br>
    14800          * <a href="hcap.system.html#.getProxyServer">hcap.system.setProxyServer()</a><br>
    14801          *
    14802          * @example
    14803          * hcap.system.expireProxyServer({
    14804          *      "onSuccess" : function() {
    14805          *          console.log("onSuccess");
    14806          *      },
    14807          *      "onFailure" : function(f) {
    14808          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    14809          *      }
    14810          * });
    14811          */
    14812         hcap.system.expireProxyServer = function (param) {
    14813             hcap_command("expire_proxy_server", param);
    14814         };
    14815         /**
    14816          * Gets the current remote object inspector mode of the HCAP browser.<br>
    14817          *
    14818          * @param {Object} param
    14819          * <ul>
    14820          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14821          *   <pre class="code prettyprint">
    14822          *   param.onSuccess = function (param) {
    14823          *       // {Boolean} param.debugMode - true if the debug mode of HCAP browser is on. false if the debug mode of HCAP browser is off.
    14824          *   }</pre>
    14825          *   </li>
    14826          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14827          *   <pre class="code prettyprint">
    14828          *   param.onFailure = function (param) {
    14829          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14830          *   }</pre>
    14831          *   </li>
    14832          * </ul>
    14833          *
    14834          * @since 1.21.0
    14835          *
    14836          * @see
    14837          * <a href="hcap.system.html#.setBrowserDebugMode">hcap.system.setBrowserDebugMode()</a><br>
    14838          *
    14839          * @example
    14840          * hcap.system.getBrowserDebugMode({
    14841          *      "onSuccess" : function(p) {
    14842          *          console.log("onSuccess : debugMode = " + p.debugMode);
    14843          *      },
    14844          *      "onFailure" : function(f) {
    14845          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    14846          *      }
    14847          * });
    14848          */
    14849         hcap.system.getBrowserDebugMode = function (param) {
    14850             hcap_command("get_browser_debug_mode", param);
    14851         };
    14852         /**
    14853          * Turns on or off the remote object inspector of the HCAP browser.<br>
    14854          * Changed setting will take affect after a reboot.<br>
    14855          * After a reboot, open the http://TV_IP:2345 on TV remote client (Chrome on PC).<br>
    14856          *
    14857          * @param {Object} param
    14858          * <ul>
    14859          *   <li>{Boolean} param.debugMode [Required] - true to turn on debug mode, else false.</li>
    14860          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14861          *   <pre class="code prettyprint">
    14862          *   param.onSuccess = function()
    14863          *       // No Parameter.
    14864          *   }</pre>
    14865          *   </li>
    14866          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14867          *   <pre class="code prettyprint">
    14868          *   param.onFailure = function (param) {
    14869          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14870          *   }</pre>
    14871          *   </li>
    14872          * </ul>
    14873          *
    14874          * @since 1.21.0
    14875          *
    14876          * @see
    14877          * <a href="hcap.system.html#.getBrowserDebugMode">hcap.system.getBrowserDebugMode()</a><br>
    14878          *
    14879          * @example
    14880          * hcap.system.setBrowserDebugMode({
    14881          *      "debugMode" : true,
    14882          *      "onSuccess" : function() {
    14883          *          console.log("onSuccess");
    14884          *      },
    14885          *      "onFailure" : function(f) {
    14886          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    14887          *      }
    14888          * });
    14889          */
    14890         hcap.system.setBrowserDebugMode = function (param) {
    14891             hcap_command("set_browser_debug_mode", param);
    14892         };
    14893         /**
    14894          * Gets the current configuration of no signal image.<br>
    14895          *
    14896          * @param {Object} param
    14897          * <ul>
    14898          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14899          *   <pre class="code prettyprint">
    14900          *   param.onSuccess = function (param) {
    14901          *       // {Boolean} param.noSignalImage - true if no signal image is on. false if no signal image is off.
    14902          *   }</pre>
    14903          *   </li>
    14904          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14905          *   <pre class="code prettyprint">
    14906          *   param.onFailure = function (param) {
    14907          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14908          *   }</pre>
    14909          *   </li>
    14910          * </ul>
    14911          *
    14912          * @since 1.21.0
    14913          *
    14914          * @see
    14915          * <a href="hcap.system.html#.setNoSignalImage">hcap.system.setNoSignalImage()</a><br>
    14916          *
    14917          * @example
    14918          * hcap.system.getNoSignalImage({
    14919          *      "onSuccess" : function(p) {
    14920          *          console.log("onSuccess : noSignalImage = " + p.noSignalImage);
    14921          *      },
    14922          *      "onFailure" : function(f) {
    14923          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    14924          *      }
    14925          * });
    14926          */
    14927         hcap.system.getNoSignalImage = function (param) {
    14928             hcap_command("get_no_signal_image", param);
    14929         };
    14930         /**
    14931          * Turns on or off no signal image.<br>
    14932          *
    14933          * @param {Object} param
    14934          * <ul>
    14935          *   <li>{Boolean} param.noSignalImage [Required] - true to turn on no signal image, else false.</li>
    14936          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14937          *   <pre class="code prettyprint">
    14938          *   param.onSuccess = function()
    14939          *       // No Parameter.
    14940          *   }</pre>
    14941          *   </li>
    14942          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14943          *   <pre class="code prettyprint">
    14944          *   param.onFailure = function (param) {
    14945          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14946          *   }</pre>
    14947          *   </li>
    14948          * </ul>
    14949          *
    14950          * @since 1.21.0
    14951          *
    14952          * @see
    14953          * <a href="hcap.system.html#.getNoSignalImage">hcap.system.getNoSignalImage()</a><br>
    14954          *
    14955          * @example
    14956          * hcap.system.setNoSignalImage({
    14957          *      "noSignalImage" : true,
    14958          *      "onSuccess" : function() {
    14959          *          console.log("onSuccess");
    14960          *      },
    14961          *      "onFailure" : function(f) {
    14962          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    14963          *      }
    14964          * });
    14965          */
    14966         hcap.system.setNoSignalImage = function (param) {
    14967             hcap_command("set_no_signal_image", param);
    14968         };
    14969         /**
    14970          * Gets the list of supported screen keyboard languages.<br>
    14971          * Screen keyboard language list is composed of language codes and delimiter comma(',').<br>
    14972          *
    14973          * @param {Object} param
    14974          * <ul>
    14975          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    14976          *   <pre class="code prettyprint">
    14977          *   param.onSuccess = function (param) {
    14978          *       // {String} param.list - screen keyboard language list string.
    14979          *       //     which is composed of language codes separated by delimiter comma(',').
    14980          *   }</pre>
    14981          *   </li>
    14982          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    14983          *   <pre class="code prettyprint">
    14984          *   param.onFailure = function (param) {
    14985          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    14986          *   }</pre>
    14987          *   </li>
    14988          * </ul>
    14989          *
    14990          * @since 1.22.0
    14991          *
    14992          * @see
    14993          * <a href="hcap.system.html#.setScreenKeyboardLanguage">hcap.system.setScreenKeyboardLanguage()</a><br>
    14994          *
    14995          * @example
    14996          * hcap.system.getScreenKeyboardLanguageList({
    14997          *      "onSuccess" : function(s) {
    14998          *          console.log("onSuccess : list = " + s.list);
    14999          *      },
    15000          *      "onFailure" : function(f) {
    15001          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15002          *      }
    15003          * });
    15004          */
    15005         hcap.system.getScreenKeyboardLanguageList = function (param) {
    15006             hcap_command("get_screen_keyboard_language_list", param);
    15007         };
    15008         /**
    15009          * Sets the screen keyboard language.<br>
    15010          *
    15011          * @param {Object} param
    15012          * <ul>
    15013          *   <li>{String} param.keyboardLanguage [Required] - screen keyboard language to be set.</li>
    15014          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15015          *   <pre class="code prettyprint">
    15016          *   param.onSuccess = function() {
    15017          *       // No Parameter.
    15018          *   }</pre>
    15019          *   </li>
    15020          *   <li>{Function} param.onFailure [Optional] - failure callback function.<br>
    15021          *   <pre class="code prettyprint">
    15022          *   param.onFailure = function (param) {
    15023          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15024          *   }</pre>
    15025          *   </li>
    15026          * </ul>
    15027          *
    15028          * @since 1.22.0
    15029          *
    15030          * @see
    15031          * <a href="hcap.system.html#.getScreenKeyboardLanguageList">hcap.system.getScreenKeyboardLanguageList()</a><br>
    15032          *
    15033          * @example
    15034          * hcap.system.setScreenKeyboardLanguage({
    15035          *      "keyboardLanguage" : "en",
    15036          *      "onSuccess" : function() {
    15037          *          console.log("onSuccess");
    15038          *      },
    15039          *      "onFailure" : function(f) {
    15040          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15041          *      }
    15042          * });
    15043          */
    15044         hcap.system.setScreenKeyboardLanguage = function (param) {
    15045             hcap_command("set_screen_keyboard_language", param);
    15046         };
    15047         /**
    15048          * Gets the status of usb power control.<br>
    15049          *
    15050          * @param {Object} param
    15051          * <ul>
    15052          *   <li>{Number} param.portNumber [Required] - port number to be get the status of usb power control.</li>
    15053          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15054          *   <pre class="code prettyprint">
    15055          *   param.onSuccess = function (param) {
    15056          *       // {Boolean} param.status - the status of usb power control.
    15057          *   }</pre>
    15058          *   </li>
    15059          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    15060          *   <pre class="code prettyprint">
    15061          *   param.onFailure = function (param) {
    15062          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15063          *   }</pre>
    15064          *   </li>
    15065          * </ul>
    15066          *
    15067          * @since 1.23.0
    15068          *
    15069          * @see
    15070          * <a href="hcap.system.html#.setUsbPowerControl">hcap.system.setUsbPowerControl()</a><br>
    15071          *
    15072          * @example
    15073          * hcap.system.getUsbPowerControl({
    15074          *      "portNumber" : 2,
    15075          *      "onSuccess" : function(s) {
    15076          *          console.log("onSuccess : status = " + s.status);
    15077          *      },
    15078          *      "onFailure" : function(f) {
    15079          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15080          *      }
    15081          * });
    15082          */
    15083         hcap.system.getUsbPowerControl = function (param) {
    15084             hcap_command("get_usb_power_control", param);
    15085         };
    15086         /**
    15087          * Sets the status of usb power control.<br>
    15088          *
    15089          * @param {Object} param
    15090          * <ul>
    15091          *   <li>{Number} param.portNumber [Required] - port number to be set the status of usb power control.</li>
    15092          *   <li>{Boolean} param.status [Required] - the status of usb power control.</li>
    15093          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15094          *   <pre class="code prettyprint">
    15095          *   param.onSuccess = function() {
    15096          *       // No Parameter.
    15097          *   }</pre>
    15098          *   </li>
    15099          *   <li>{Function} param.onFailure [Optional] - failure callback function.<br>
    15100          *   <pre class="code prettyprint">
    15101          *   param.onFailure = function (param) {
    15102          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15103          *   }</pre>
    15104          *   </li>
    15105          * </ul>
    15106          *
    15107          * @since 1.23.0
    15108          *
    15109          * @see
    15110          * <a href="hcap.system.html#.getUsbPowerControl">hcap.system.getUsbPowerControl()</a><br>
    15111          *
    15112          * @example
    15113          * hcap.system.setUsbPowerControl({
    15114          *      "portNumber" : 2,
    15115          *      "status" : true,
    15116          *      "onSuccess" : function() {
    15117          *          console.log("onSuccess");
    15118          *      },
    15119          *      "onFailure" : function(f) {
    15120          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15121          *      }
    15122          * });
    15123          */
    15124         hcap.system.setUsbPowerControl = function (param) {
    15125             hcap_command("set_usb_power_control", param);
    15126         };
    15127         /**
    15128 		 * show toast message on the TV screen. The message will be displayed on the upper right corner for a short time. The message can not be exceed 162 bytes.<br>
    15129 		 *
    15130 		 * @param {Object} param
    15131 		 * <ul>
    15132 		 *   <li>{String} param.message [Required] - the message body</li>
    15133 		 *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15134 		 *   <pre class="code prettyprint">
    15135 		 *   param.onSuccess = function() {
    15136 		 *       // No Parameter.
    15137 		 *   }</pre>
    15138 		 *   </li>
    15139 		 *   <li>{Function} param.onFailure [Optional] - failure callback function.<br>
    15140 		 *   <pre class="code prettyprint">
    15141 		 *   param.onFailure = function (param) {
    15142 		 *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15143 		 *   }</pre>
    15144 		 *   </li>
    15145 		 * </ul>
    15146 		 *
    15147 		 * @since 1.23.2
    15148 		 *
    15149 		 * @example
    15150 		 * hcap.system.showToastMessage({
    15151 		 *      "message" : "hello world",
    15152 		 *      "onSuccess" : function() {
    15153 		 *          console.log("onSuccess");
    15154 		 *      },
    15155 		 *      "onFailure" : function(f) {
    15156 		 *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15157 		 *      }
    15158 		 * });
    15159 		 */
    15160 		hcap.system.showToastMessage = function (param) {
    15161 			hcap_command("show_toast_message", param);
    15162 		};
    15163         /**
    15164 		 * manually start the software update.<br>
    15165 		 *
    15166 		 * @param {Object} param
    15167 		 * <ul>
    15168 		 *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15169 		 *   <pre class="code prettyprint">
    15170 		 *   param.onSuccess = function() {
    15171 		 *       // No Parameter.
    15172 		 *   }</pre>
    15173 		 *   </li>
    15174 		 *   <li>{Function} param.onFailure [Optional] - failure callback function.<br>
    15175 		 *   <pre class="code prettyprint">
    15176 		 *   param.onFailure = function (param) {
    15177 		 *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15178 		 *   }</pre>
    15179 		 *   </li>
    15180 		 * </ul>
    15181 		 *
    15182 		 * @since 1.24.2
    15183 		 *
    15184          * @see
    15185          * <a href="_global_.html#event:software_update_event_received">{Event} software_update_event_received</a><br>
    15186          * <a href="hcap.system.html#.cancelUpdate">hcap.system.cancelUpdate()</a><br>
    15187          * <a href="hcap.system.html#.getUpdateProgress">hcap.system.getUpdateProgress()</a><br>
    15188 	     *
    15189 		 * @example
    15190 		 * hcap.system.startManualUpdate({
    15191 		 *      "onSuccess" : function() {
    15192 		 *          console.log("onSuccess");
    15193 		 *      },
    15194 		 *      "onFailure" : function(f) {
    15195 		 *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15196 		 *      }
    15197 		 * });
    15198 		 */
    15199 		hcap.system.startManualUpdate = function (param) {
    15200 			hcap_command("start_manual_update", param);
    15201 		};
    15202         /**
    15203 		 * Update can be canceled in case of manual download.<br>
    15204 		 *
    15205 		 * @param {Object} param
    15206 		 * <ul>
    15207 		 *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15208 		 *   <pre class="code prettyprint">
    15209 		 *   param.onSuccess = function() {
    15210 		 *       // No Parameter.
    15211 		 *   }</pre>
    15212 		 *   </li>
    15213 		 *   <li>{Function} param.onFailure [Optional] - failure callback function.<br>
    15214 		 *   <pre class="code prettyprint">
    15215 		 *   param.onFailure = function (param) {
    15216 		 *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15217 		 *   }</pre>
    15218 		 *   </li>
    15219 		 * </ul>
    15220 		 *
    15221 		 * @since 1.24.2
    15222 		 *
    15223 	     * @see
    15224          * <a href="_global_.html#event:software_update_event_received">{Event} software_update_event_received</a><br>
    15225          * <a href="hcap.system.html#.startManualUpdate">hcap.system.startManualUpdate()</a><br>
    15226          * <a href="hcap.system.html#.getUpdateProgress">hcap.system.getUpdateProgress()</a><br>
    15227 	     *
    15228 		 * @example
    15229 		 * hcap.system.cancelUpdate({
    15230 		 *      "onSuccess" : function() {
    15231 		 *          console.log("onSuccess");
    15232 		 *      },
    15233 		 *      "onFailure" : function(f) {
    15234 		 *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15235 		 *      }
    15236 		 * });
    15237 		 */
    15238 		hcap.system.cancelUpdate = function (param) {
    15239 			hcap_command("cancel_update", param);
    15240 		};
    15241         /**
    15242 		 * It informs you of the progress of the software update.<br>
    15243 		 *
    15244 		 * @param {Object} param
    15245 		 * <ul>
    15246 		 *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15247 		 *   <pre class="code prettyprint">
    15248 		 *   param.onSuccess = function() {
    15249 		 *       // {Number} param.progress - software update progress
    15250 		 *       // {Number} param.totalPackage - total package capacity
    15251 		 *       // {Number} param.installedPackage - installed package capacity
    15252 		 *   }</pre>
    15253 		 *   </li>
    15254 		 *   <li>{Function} param.onFailure [Optional] - failure callback function.<br>
    15255 		 *   <pre class="code prettyprint">
    15256 		 *   param.onFailure = function (param) {
    15257 		 *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15258 		 *   }</pre>
    15259 		 *   </li>
    15260 		 * </ul>
    15261 		 *
    15262 		 * @since 1.24.2
    15263 		 *
    15264 	     * @see
    15265          * <a href="_global_.html#event:software_update_event_received">{Event} software_update_event_received</a><br>
    15266          * <a href="hcap.system.html#.startManualUpdate">hcap.system.startManualUpdate()</a><br>
    15267          * <a href="hcap.system.html#.cancelUpdate">hcap.system.cancelUpdate()</a><br>
    15268 	     *
    15269 		 * @example
    15270 		 * hcap.system.getUpdateProgress({
    15271 		 *      "onSuccess" : function() {
    15272 		 *          console.log("onSuccess : progress = " + s.progress + ", totalPackage = " + s.totalPackage + ", installedPackage = " + s.installedPackage);
    15273 		 *      },
    15274 		 *      "onFailure" : function(f) {
    15275 		 *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15276 		 *      }
    15277 		 * });
    15278 		 */
    15279 		hcap.system.getUpdateProgress = function (param) {
    15280 			hcap_command("get_update_progress", param);
    15281 		};
    15282         /**
    15283          * @namespace hcap.checkout
    15284          */
    15285         hcap.checkout = { };
    15286         /**
    15287          * Restores checkout snapshot items and clear system-dependent cache and history.<br>
    15288          * Rebooting system is strongly recommended after checking out is done.<br>
    15289          *
    15290          * @param {Object} param
    15291          * <ul>
    15292          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15293          *   <pre class="code prettyprint">
    15294          *   param.onSuccess = function() {
    15295          *       // No Parameter.
    15296          *   }</pre>
    15297          *   </li>
    15298          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    15299          *   <pre class="code prettyprint">
    15300          *   param.onFailure = function (param) {
    15301          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15302          *   }</pre>
    15303          *   </li>
    15304          * </ul>
    15305          *
    15306          * @since 1.19.0
    15307          *
    15308          * @see
    15309          * <a href="hcap.checkout.html#.takeCheckoutSnapshot">hcap.checkout.takeCheckoutSnapshot()</a><br>
    15310          *
    15311          * @example
    15312          * hcap.checkout.requestCheckout({
    15313          *      "onSuccess" : function() {
    15314          *          console.log("onSuccess");
    15315          *      },
    15316          *      "onFailure" : function(f) {
    15317          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15318          *      }
    15319          * });
    15320          */
    15321         hcap.checkout.requestCheckout = function (param) {
    15322             hcap_command("request_checkout", param);
    15323         };
    15324         /**
    15325          * Stores checkout snapshot items. The checkout snapshot items are system(or TV model)-dependent.<br>
    15326          *
    15327          * @param {Object} param
    15328          * <ul>
    15329          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15330          *   <pre class="code prettyprint">
    15331          *   param.onSuccess = function() {
    15332          *       // No Parameter.
    15333          *   }</pre>
    15334          *   </li>
    15335          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    15336          *   <pre class="code prettyprint">
    15337          *   param.onFailure = function (param) {
    15338          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15339          *   }</pre>
    15340          *   </li>
    15341          * </ul>
    15342          *
    15343          * @since 1.19.0
    15344          *
    15345          * @see
    15346          * <a href="hcap.checkout.html#.requestCheckout">hcap.checkout.requestCheckout()</a><br>
    15347          *
    15348          * @example
    15349          * hcap.checkout.takeCheckoutSnapshot({
    15350          *      "onSuccess" : function() {
    15351          *          console.log("onSuccess");
    15352          *      },
    15353          *      "onFailure" : function(f) {
    15354          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15355          *      }
    15356          * });
    15357          */
    15358         hcap.checkout.takeCheckoutSnapshot = function (param) {
    15359             hcap_command("take_checkout_snapshot", param);
    15360         };
    15361         /**
    15362          * @namespace hcap.beacon
    15363          */
    15364         hcap.beacon = {};
    15365         /**
    15366          * Sets the beacon mode is enabled or disabled.<br>
    15367          *
    15368          * @param {Object} param
    15369          * <ul>
    15370          *   <li>{Boolean} param.enable [Required] - true : enable to beacon mode, false : disable.</li>
    15371          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15372          *   <pre class="code prettyprint">
    15373          *   param.onSuccess = function() {
    15374          *       // No Parameter.
    15375          *   }</pre>
    15376          *   </li>
    15377          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    15378          *   <pre class="code prettyprint">
    15379          *   param.onFailure = function (param) {
    15380          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15381          *   }</pre>
    15382          *   </li>
    15383          * </ul>
    15384          *
    15385          * @since 1.22.0
    15386          *
    15387          * @see
    15388          * <a href="hcap.beacon.html#.requestiBeacon">hcap.beacon.requestiBeacon()</a><br>
    15389          * <a href="hcap.beacon.html#.requestEddystoneUid">hcap.beacon.requestEddystoneUid()</a><br>
    15390          * <a href="hcap.beacon.html#.requestEddystoneUrl">hcap.beacon.requestEddystoneUrl()</a><br>
    15391          * <a href="hcap.beacon.html#.getBeaconInformation">hcap.beacon.getBeaconInformation()</a><br>
    15392          * <a href="_global_.html#event:ui_value_changed">{Event} ui_value_changed</a><br>
    15393          *
    15394          * @example
    15395          * hcap.beacon.setBeaconMode({
    15396          *      "enable" : true,
    15397          *      "onSuccess" : function() {
    15398          *          console.log("onSuccess");
    15399          *      },
    15400          *      "onFailure" : function(f) {
    15401          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15402          *      }
    15403          * });
    15404          */
    15405         hcap.beacon.setBeaconMode = function (param) {
    15406             hcap_command("set_beacon_mode", param);
    15407         };
    15408         /**
    15409          * Request the iBeacon.<br>
    15410          * This is worked only when the beacon mode is enabled.<br>
    15411          *
    15412          * @param {Object} param
    15413          * <ul>
    15414          *   <li>{String} param.uuid [Required] - uuid. the range is 0~F(field1: 8 digits string, field2: 4 digits string, field3: 4 digits string, field4: 4 digits string, field5: 8 digits string)</li>
    15415          *   <li>{Number} param.major [Required] - the value of major (0 ~ 65535)</li>
    15416          *   <li>{Number} param.minor [Required] - the value of minor (0 ~ 65535)</li>
    15417          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15418          *   <pre class="code prettyprint">
    15419          *   param.onSuccess = function() {
    15420          *       // No Parameter.
    15421          *   }</pre>
    15422          *   </li>
    15423          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    15424          *   <pre class="code prettyprint">
    15425          *   param.onFailure = function (param) {
    15426          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15427          *   }</pre>
    15428          *   </li>
    15429          * </ul>
    15430          *
    15431          * @since 1.22.0
    15432          *
    15433          * @see
    15434          * <a href="hcap.beacon.html#.setBeaconMode">hcap.beacon.setBeaconMode()</a><br>
    15435          * <a href="hcap.beacon.html#.requestEddystoneUid">hcap.beacon.requestEddystoneUid()</a><br>
    15436          * <a href="hcap.beacon.html#.requestEddystoneUrl">hcap.beacon.requestEddystoneUrl()</a><br>
    15437          * <a href="hcap.beacon.html#.getBeaconInformation">hcap.beacon.getBeaconInformation()</a><br>
    15438          *
    15439          * @example
    15440          * hcap.beacon.requestiBeacon({
    15441          *      "uuid" : "AAAAAAAABBBBCCCCDDDDEEEEEEEE",
    15442          *      "major" : 65535,
    15443          *      "minor" : 65535,
    15444          *      "onSuccess" : function() {
    15445          *          console.log("onSuccess");
    15446          *      },
    15447          *      "onFailure" : function(f) {
    15448          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15449          *      }
    15450          * });
    15451          */
    15452         hcap.beacon.requestiBeacon = function (param) {
    15453             hcap_command("request_iBeacon", param);
    15454         };
    15455         /**
    15456          * Request the Eddystone Uid.<br>
    15457          * This is worked only when the beacon mode is enabled.<br>
    15458          *
    15459          * @param {Object} param
    15460          * <ul>
    15461          *   <li>{String} param.uuid [Required] - uuid. the range is 0~F(field1: 20 digits string, field2: 8 digits string)</li>
    15462          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15463          *   <pre class="code prettyprint">
    15464          *   param.onSuccess = function() {
    15465          *       // No Parameter.
    15466          *   }</pre>
    15467          *   </li>
    15468          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    15469          *   <pre class="code prettyprint">
    15470          *   param.onFailure = function (param) {
    15471          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15472          *   }</pre>
    15473          *   </li>
    15474          * </ul>
    15475          *
    15476          * @since 1.22.0
    15477          *
    15478          * @see
    15479          * <a href="hcap.beacon.html#.setBeaconMode">hcap.beacon.setBeaconMode()</a><br>
    15480          * <a href="hcap.beacon.html#.requestiBeacon">hcap.beacon.requestiBeacon()</a><br>
    15481          * <a href="hcap.beacon.html#.requestEddystoneUrl">hcap.beacon.requestEddystoneUrl()</a><br>
    15482          * <a href="hcap.beacon.html#.getBeaconInformation">hcap.beacon.getBeaconInformation()</a><br>
    15483          *
    15484          * @example
    15485          * hcap.beacon.requestEddystoneUid({
    15486          *      "uuid" : "AAAAAAAAAAAAAAAAAAAABBBBBBBB",
    15487          *      "onSuccess" : function() {
    15488          *          console.log("onSuccess");
    15489          *      },
    15490          *      "onFailure" : function(f) {
    15491          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15492          *      }
    15493          * });
    15494          */
    15495         hcap.beacon.requestEddystoneUid = function (param) {
    15496             hcap_command("request_eddystone_uid", param);
    15497         };
    15498         /**
    15499          * Request the Eddystone Url.<br>
    15500          * This is worked only when the beacon mode is enabled.<br>
    15501          *
    15502          * @param {Object} param
    15503          * <ul>
    15504          *   <li>{String} param.prefix [Required] - url prefix ("http", "httpEx", "https", "httpsEx")</li>
    15505          *   <li>{String} param.excode [Required] - url excode ("noneValue", "comEx", "orgEx", eduEx", "netEx", "infoEx", "bizEx", "govEx", "com", "org", "edu", "nex", "info", "biz", "gov")</li>
    15506          *   <li>{String} param.url [Required] - url. max length is 17. but max length is 15 when prefix is "httpsEx" or excode is "infoEx".</li>
    15507          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15508          *   <pre class="code prettyprint">
    15509          *   param.onSuccess = function() {
    15510          *       // No Parameter.
    15511          *   }</pre>
    15512          *   </li>
    15513          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    15514          *   <pre class="code prettyprint">
    15515          *   param.onFailure = function (param) {
    15516          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15517          *   }</pre>
    15518          *   </li>
    15519          * </ul>
    15520          *
    15521          * @since 1.22.0
    15522          *
    15523          * @see
    15524          * <a href="hcap.beacon.html#.setBeaconMode">hcap.beacon.setBeaconMode()</a><br>
    15525          * <a href="hcap.beacon.html#.requestiBeacon">hcap.beacon.requestiBeacon()</a><br>
    15526          * <a href="hcap.beacon.html#.requestEddystoneUid">hcap.beacon.requestEddystoneUid()</a><br>
    15527          * <a href="hcap.beacon.html#.getBeaconInformation">hcap.beacon.getBeaconInformation()</a><br>
    15528          *
    15529          * @example
    15530          * hcap.beacon.requestEddystoneUrl({
    15531          *      "prefix" : "httpEx",
    15532          *      "excode" : "eduEx",
    15533          *      "url" : "abcdefghijklmnopq",
    15534          *      "onSuccess" : function() {
    15535          *          console.log("onSuccess");
    15536          *      },
    15537          *      "onFailure" : function(f) {
    15538          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15539          *      }
    15540          * });
    15541          */
    15542         hcap.beacon.requestEddystoneUrl = function (param) {
    15543         	hcap_command("request_eddystone_url", param);
    15544         };
    15545         /**
    15546          * Gets the configuration of beacon.<br>
    15547          *
    15548          * @param {Object} param
    15549          * <ul>
    15550          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15551          *   <pre class="code prettyprint">
    15552          *   param.onSuccess = function (param) {
    15553          *       // {Boolean} param.beaconMode - true : enable to beacon mode, false : disable
    15554          *       // {String} param.beaconType - beacon type(iBeacon, eddystone)
    15555          *       // {String} param.iBeaconUuid - uuid of iBeacon.
    15556          *       // {Number} param.iBeaconMajor - major of iBeacon.
    15557          *       // {Number} param.iBeaconMinor - minor of iBeacon.
    15558          *       // {String} param.eddyStoneUuid - uuid of eddystone.
    15559          *       // {String} param.eddyStoneFrame - frame of eddystone.
    15560          *       // {String} param.eddyStoneUrlPrefix - url prefix of eddystone.
    15561          *       // {String} param.eddyStoneUrlExCode - url ex code of eddystone.
    15562          *       // {String} param.eddyStoneUrl - url of eddystone.
    15563          *   }</pre>
    15564          *   </li>
    15565          *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    15566          *   <pre class="code prettyprint">
    15567          *   param.onFailure = function (param) {
    15568          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15569          *   }</pre>
    15570          *   </li>
    15571          * </ul>
    15572          *
    15573          * @since 1.22.0
    15574          *
    15575          * @see
    15576          * <a href="hcap.beacon.html#.setBeaconMode">hcap.beacon.setBeaconMode()</a><br>
    15577          * <a href="hcap.beacon.html#.requestiBeacon">hcap.beacon.requestiBeacon()</a><br>
    15578          * <a href="hcap.beacon.html#.requestEddystoneUid">hcap.beacon.requestEddystoneUid()</a><br>
    15579          * <a href="hcap.beacon.html#.requestEddystoneUrl">hcap.beacon.requestEddystoneUrl()</a><br>
    15580          *
    15581          * @example
    15582          * hcap.beacon.getBeaconInformation({
    15583          *      "onSuccess" : function(s) {
    15584          *          console.log("onSuccess          : " +
    15585          *              "\n beacon mode             : " + s.beaconMode +
    15586          *              "\n beacon type             : " + s.beaconType +
    15587          *              "\n iBeacon uuid            : " + s.iBeaconUuid +
    15588          *              "\n iBeacon major           : " + s.iBeaconMajor +
    15589          *              "\n iBeacon minor           : " + s.iBeaconMinor +
    15590          *              "\n eddystone uuid          : " + s.eddyStoneUuid +
    15591          *              "\n eddystone frame         : " + s.eddyStoneFrame +
    15592          *              "\n eddystone url prefix    : " + s.eddyStoneUrlPrefix +
    15593          *              "\n eddystone url ex code   : " + s.eddyStoneUrlExCode +
    15594          *              "\n eddystone url           : " + s.eddyStoneUrl);
    15595          *      },
    15596          *      "onFailure" : function(f) {
    15597          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15598          *      }
    15599          * });
    15600          */
    15601         hcap.beacon.getBeaconInformation = function (param) {
    15602             hcap_command("get_beacon_information", param);
    15603         };
    15604         /**
    15605          * Starts to scan beacon data.<br>
    15606          *
    15607          * @param {Object} param
    15608          * <ul>
    15609          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15610          *   <pre class="code prettyprint">
    15611          *   param.onSuccess = function() {
    15612          *       // No Parameter.
    15613          *   }</pre>
    15614          *   </li>
    15615          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    15616          *   <pre class="code prettyprint">
    15617          *   param.onFailure = function (param) {
    15618          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15619          *   }</pre>
    15620          *   </li>
    15621          * </ul>
    15622          *
    15623          * @since 1.24.6
    15624          *
    15625          * @see
    15626          * <a href="hcap.beacon.html#.stopScan">hcap.beacon.stopScan()</a><br>
    15627          * <a href="_global_.html#event:beacon_device_discovered">{Event} beacon_device_discovered</a><br>
    15628          *
    15629          * @example
    15630          * hcap.beacon.startScan({
    15631          *      "onSuccess" : function() {
    15632          *          console.log("onSuccess");
    15633          *      },
    15634          *      "onFailure" : function(f) {
    15635          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15636          *      }
    15637          * });
    15638          */
    15639         hcap.beacon.startScan = function (param) {
    15640             hcap_command("beacon_start_scan", param);
    15641         };
    15642         /**
    15643          * Stops beacon data scanning.<br>
    15644          *
    15645          * @param {Object} param
    15646          * <ul>
    15647          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15648          *   <pre class="code prettyprint">
    15649          *   param.onSuccess = function() {
    15650          *       // No Parameter.
    15651          *   }</pre>
    15652          *   </li>
    15653          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    15654          *   <pre class="code prettyprint">
    15655          *   param.onFailure = function (param) {
    15656          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15657          *   }</pre>
    15658          *   </li>
    15659          * </ul>
    15660          *
    15661          * @since 1.24.6
    15662          *
    15663          * @see
    15664          * <a href="hcap.beacon.html#.startScan">hcap.beacon.startScan()</a><br>
    15665          * <a href="_global_.html#event:beacon_device_discovered">{Event} beacon_device_discovered</a><br>
    15666          *
    15667          * @example
    15668          * hcap.beacon.stopScan({
    15669          *      "onSuccess" : function() {
    15670          *          console.log("onSuccess");
    15671          *      },
    15672          *      "onFailure" : function(f) {
    15673          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15674          *      }
    15675          * });
    15676          */
    15677         hcap.beacon.stopScan = function (param) {
    15678             hcap_command("beacon_stop_scan", param);
    15679         };
    15680         /**
    15681          * @namespace hcap.bluetooth
    15682          */
    15683         hcap.bluetooth = { };
    15684         /**
    15685          * Sets the scan configuration such as visibility and connectability of the local device as a bluetooth device.<br>
    15686          * We highly recommend not to change the connectability.<br>
    15687          *
    15688          * @param {Object} param
    15689          * <ul>
    15690          *   <li>{Boolean} param.visible [Required] - true : visible to other bluetooth devices, false : invisible.</li>
    15691          *   <li>{Boolean} param.connectable [Required] - true : connectable to other bluetooth devices, false : unconnectable.</li>
    15692          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15693          *   <pre class="code prettyprint">
    15694          *   param.onSuccess = function() {
    15695          *       // No Parameter.
    15696          *   }</pre>
    15697          *   </li>
    15698          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    15699          *   <pre class="code prettyprint">
    15700          *   param.onFailure = function (param) {
    15701          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15702          *   }</pre>
    15703          *   </li>
    15704          * </ul>
    15705          *
    15706          * @since 1.19.0
    15707          *
    15708          * @see
    15709          * <a href="_global_.html#event:bluetooth_event_received">{Event} bluetooth_event_received</a><br>
    15710          * <a href="hcap.bluetooth.html#.disconnect">hcap.bluetooth.disconnect()</a><br>
    15711          *
    15712          * @example
    15713          * hcap.bluetooth.setScanState({
    15714          *      "visible" : true,
    15715          *      "connectable" : true,
    15716          *      "onSuccess" : function() {
    15717          *          console.log("onSuccess");
    15718          *      },
    15719          *      "onFailure" : function(f) {
    15720          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15721          *      }
    15722          * });
    15723          */
    15724         hcap.bluetooth.setScanState = function (param) {
    15725             hcap_command("bt_gap_set_scan_state", param);
    15726         };
    15727         /**
    15728          * Disconnects the device paired with the given bluetooth service profile.<br>
    15729          *
    15730          * @param {Object} param
    15731          * <ul>
    15732          *   <li>{String} param.service [Required] - service profile ("hid" : HID profile / "audio" : audio src(A2DP) profile / "opc" : OPC profile / "audio_sink" : audio sink(A2DP) profile)
    15733          *   <li>{String} param.address [Required] - BD (Bluetooth Device) address
    15734          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15735          *   <pre class="code prettyprint">
    15736          *   param.onSuccess = function() {
    15737          *       // No Parameter.
    15738          *   }</pre>
    15739          *   </li>
    15740          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    15741          *   <pre class="code prettyprint">
    15742          *   param.onFailure = function (param) {
    15743          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15744          *   }</pre>
    15745          *   </li>
    15746          * </ul>
    15747          *
    15748          * @since 1.19.0
    15749          *
    15750          * @see
    15751          * <a href="_global_.html#event:bluetooth_event_received">{Event} bluetooth_event_received</a><br>
    15752          * <a href="hcap.bluetooth.html#.setScanState">hcap.bluetooth.setScanState()</a><br>
    15753          *
    15754          * @example
    15755          * hcap.bluetooth.disconnect({
    15756          *      "service" : "audio_sink",
    15757          *      "address" : "00:1f:47:e2:04:3f",
    15758          *      "onSuccess" : function() {
    15759          *          console.log("onSuccess");
    15760          *      },
    15761          *      "onFailure" : function(f) {
    15762          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15763          *      }
    15764          * });
    15765          */
    15766         hcap.bluetooth.disconnect = function (param) {
    15767             hcap_command("bt_service_disconnect", param);
    15768         };
    15769         /**
    15770          * Sets the bluetooth sound sync application is enabled or disabled.<br>
    15771          *
    15772          * @param {Object} param
    15773          * <ul>
    15774          *   <li>{Boolean} param.enable [Required] - true : enable to bluetooth sound sync application, false : disable.</li>
    15775          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15776          *   <pre class="code prettyprint">
    15777          *   param.onSuccess = function() {
    15778          *       // No Parameter.
    15779          *   }</pre>
    15780          *   </li>
    15781          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    15782          *   <pre class="code prettyprint">
    15783          *   param.onFailure = function (param) {
    15784          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15785          *   }</pre>
    15786          *   </li>
    15787          * </ul>
    15788          *
    15789          * @since 1.20.1
    15790          *
    15791          * @see
    15792          * <a href="hcap.bluetooth.html#.getBluetoothSoundSync">hcap.bluetooth.getBluetoothSoundSync()</a><br>
    15793          * <a href="_global_.html#event:ui_value_changed">{Event} ui_value_changed</a><br>
    15794          *
    15795          * @example
    15796          * hcap.bluetooth.setBluetoothSoundSync({
    15797          *      "enable" : true,
    15798          *      "onSuccess" : function() {
    15799          *          console.log("onSuccess");
    15800          *      },
    15801          *      "onFailure" : function(f) {
    15802          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15803          *      }
    15804          * });
    15805          */
    15806         hcap.bluetooth.setBluetoothSoundSync = function (param) {
    15807             hcap_command("set_bt_sound_sync", param);
    15808         };
    15809         /**
    15810          * Gets whether bluetooth sound sync application is enabled or disabled.<br>
    15811          *
    15812          * @param {Object} param
    15813          * <ul>
    15814          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15815          *   <pre class="code prettyprint">
    15816          *   param.onSuccess = function (param) {
    15817          *       // {Boolean} param.enable - true if the bluetooth sound sync application is enabled. false if the bluetooth sound sync application is disabled.
    15818          *   }</pre>
    15819          *   </li>
    15820          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    15821          *   <pre class="code prettyprint">
    15822          *   param.onFailure = function (param) {
    15823          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15824          *   }</pre>
    15825          *   </li>
    15826          * </ul>
    15827          *
    15828          * @since 1.20.1
    15829          *
    15830          * @see
    15831          * <a href="hcap.bluetooth.html#.setBluetoothSoundSync">hcap.bluetooth.setBluetoothSoundSync()</a><br>
    15832          *
    15833          * @example
    15834          * hcap.bluetooth.getBluetoothSoundSync({
    15835          *      "onSuccess" : function (param) {
    15836          *          console.log("onSuccess : bluetooth sound sync = " + param.enable);
    15837          *      },
    15838          *      "onFailure" : function(f) {
    15839          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15840          *      }
    15841          * });
    15842          */
    15843         hcap.bluetooth.getBluetoothSoundSync = function (param) {
    15844             hcap_command("get_bt_sound_sync", param);
    15845         };
    15846         /**
    15847          * @namespace hcap.bluetooth.audio
    15848          */
    15849         hcap.bluetooth.audio = { };
    15850         /**
    15851          * Plays the bluetooth audio streaming.<br>
    15852          * Precondition : Bluetooth audio device is connected.<br>
    15853          *
    15854          * @param {Object} param
    15855          * <ul>
    15856          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15857          *   <pre class="code prettyprint">
    15858          *   param.onSuccess = function() {
    15859          *       // No Parameter.
    15860          *   }</pre>
    15861          *   </li>
    15862          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    15863          *   <pre class="code prettyprint">
    15864          *   param.onFailure = function(param) {
    15865          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15866          *   }</pre>
    15867          *   </li>
    15868          * </ul>
    15869          *
    15870          * @since 1.20.0
    15871          *
    15872          * @see
    15873          * <a href="_global_.html#event:bluetooth_event_received">{Event} bluetooth_event_received</a><br>
    15874          * <a href="hcap.bluetooth.audio.html#.stop">hcap.bluetooth.audio.stop()</a><br>
    15875          * <a href="hcap.bluetooth.audio.html#.pause">hcap.bluetooth.audio.pause()</a><br>
    15876          * <a href="hcap.bluetooth.audio.html#.forward">hcap.bluetooth.audio.forward()</a><br>
    15877          * <a href="hcap.bluetooth.audio.html#.backward">hcap.bluetooth.audio.backward()</a><br>
    15878          *
    15879          * @example
    15880          * hcap.bluetooth.audio.play({
    15881          *      "onSuccess":function() {
    15882          *          console.log("onSuccess");
    15883          *      },
    15884          *      "onFailure":function(f) {
    15885          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15886          *      }
    15887          * });
    15888          */
    15889         hcap.bluetooth.audio.play = function (param) {
    15890             hcap_command("bt_audio_play", param);
    15891         };
    15892         /**
    15893          * Stops the bluetooth audio streaming.<br>
    15894          * Precondition : Bluetooth audio device is connected.<br>
    15895          *
    15896          * @param {Object} param
    15897          * <ul>
    15898          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15899          *   <pre class="code prettyprint">
    15900          *   param.onSuccess = function() {
    15901          *       // No Parameter.
    15902          *   }</pre>
    15903          *   </li>
    15904          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    15905          *   <pre class="code prettyprint">
    15906          *   param.onFailure = function(param) {
    15907          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15908          *   }</pre>
    15909          *   </li>
    15910          * </ul>
    15911          *
    15912          * @since 1.20.0
    15913          *
    15914          * @see
    15915          * <a href="_global_.html#event:bluetooth_event_received">{Event} bluetooth_event_received</a><br>
    15916          * <a href="hcap.bluetooth.audio.html#.play">hcap.bluetooth.audio.play()</a><br>
    15917          * <a href="hcap.bluetooth.audio.html#.pause">hcap.bluetooth.audio.pause()</a><br>
    15918          * <a href="hcap.bluetooth.audio.html#.forward">hcap.bluetooth.audio.forward()</a><br>
    15919          * <a href="hcap.bluetooth.audio.html#.backward">hcap.bluetooth.audio.backward()</a><br>
    15920          *
    15921          * @example
    15922          * hcap.bluetooth.audio.stop({
    15923          *      "onSuccess":function() {
    15924          *          console.log("onSuccess");
    15925          *      },
    15926          *      "onFailure":function(f) {
    15927          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15928          *      }
    15929          * });
    15930          */
    15931         hcap.bluetooth.audio.stop = function (param) {
    15932             hcap_command("bt_audio_stop", param);
    15933         };
    15934         /**
    15935          * Pauses the bluetooth audio streaming.<br>
    15936          * Precondition : Bluetooth audio device is connected.<br>
    15937          *
    15938          * @param {Object} param
    15939          * <ul>
    15940          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15941          *   <pre class="code prettyprint">
    15942          *   param.onSuccess = function() {
    15943          *       // No Parameter.
    15944          *   }</pre>
    15945          *   </li>
    15946          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    15947          *   <pre class="code prettyprint">
    15948          *   param.onFailure = function(param) {
    15949          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15950          *   }</pre>
    15951          *   </li>
    15952          * </ul>
    15953          *
    15954          * @since 1.20.0
    15955          *
    15956          * @see
    15957          * <a href="_global_.html#event:bluetooth_event_received">{Event} bluetooth_event_received</a><br>
    15958          * <a href="hcap.bluetooth.audio.html#.play">hcap.bluetooth.audio.play()</a><br>
    15959          * <a href="hcap.bluetooth.audio.html#.stop">hcap.bluetooth.audio.stop()</a><br>
    15960          * <a href="hcap.bluetooth.audio.html#.forward">hcap.bluetooth.audio.forward()</a><br>
    15961          * <a href="hcap.bluetooth.audio.html#.backward">hcap.bluetooth.audio.backward()</a><br>
    15962          *
    15963          * @example
    15964          * hcap.bluetooth.audio.pause({
    15965          *      "onSuccess":function() {
    15966          *          console.log("onSuccess");
    15967          *      },
    15968          *      "onFailure":function(f) {
    15969          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    15970          *      }
    15971          * });
    15972          */
    15973         hcap.bluetooth.audio.pause = function (param) {
    15974             hcap_command("bt_audio_pause", param);
    15975         };
    15976         /**
    15977          * Plays the bluetooth audio streaming of the next track.<br>
    15978          * Precondition : Bluetooth audio device is connected.<br>
    15979          *
    15980          * @param {Object} param
    15981          * <ul>
    15982          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    15983          *   <pre class="code prettyprint">
    15984          *   param.onSuccess = function() {
    15985          *       // No Parameter.
    15986          *   }</pre>
    15987          *   </li>
    15988          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    15989          *   <pre class="code prettyprint">
    15990          *   param.onFailure = function(param) {
    15991          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    15992          *   }</pre>
    15993          *   </li>
    15994          * </ul>
    15995          *
    15996          * @since 1.20.0
    15997          *
    15998          * @see
    15999          * <a href="_global_.html#event:bluetooth_event_received">{Event} bluetooth_event_received</a><br>
    16000          * <a href="hcap.bluetooth.audio.html#.play">hcap.bluetooth.audio.play()</a><br>
    16001          * <a href="hcap.bluetooth.audio.html#.stop">hcap.bluetooth.audio.stop()</a><br>
    16002          * <a href="hcap.bluetooth.audio.html#.pause">hcap.bluetooth.audio.pause()</a><br>
    16003          * <a href="hcap.bluetooth.audio.html#.backward">hcap.bluetooth.audio.backward()</a><br>
    16004          *
    16005          * @example
    16006          * hcap.bluetooth.audio.forward({
    16007          *      "onSuccess":function() {
    16008          *          console.log("onSuccess");
    16009          *      },
    16010          *      "onFailure":function(f) {
    16011          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    16012          *      }
    16013          * });
    16014          */
    16015         hcap.bluetooth.audio.forward = function (param) {
    16016             hcap_command("bt_audio_forward", param);
    16017         };
    16018         /**
    16019          * Plays the bluetooth audio streaming of the previous track.<br>
    16020          * Precondition : Bluetooth audio device is connected.<br>
    16021          *
    16022          * @param {Object} param
    16023          * <ul>
    16024          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    16025          *   <pre class="code prettyprint">
    16026          *   param.onSuccess = function() {
    16027          *       // No Parameter.
    16028          *   }</pre>
    16029          *   </li>
    16030          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    16031          *   <pre class="code prettyprint">
    16032          *   param.onFailure = function(param) {
    16033          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    16034          *   }</pre>
    16035          *   </li>
    16036          * </ul>
    16037          *
    16038          * @since 1.20.0
    16039          *
    16040          * @see
    16041          * <a href="_global_.html#event:bluetooth_event_received">{Event} bluetooth_event_received</a><br>
    16042          * <a href="hcap.bluetooth.audio.html#.play">hcap.bluetooth.audio.play()</a><br>
    16043          * <a href="hcap.bluetooth.audio.html#.stop">hcap.bluetooth.audio.stop()</a><br>
    16044          * <a href="hcap.bluetooth.audio.html#.pause">hcap.bluetooth.audio.pause()</a><br>
    16045          * <a href="hcap.bluetooth.audio.html#.forward">hcap.bluetooth.audio.forward()</a><br>
    16046          *
    16047          * @example
    16048          * hcap.bluetooth.audio.backward({
    16049          *      "onSuccess":function() {
    16050          *          console.log("onSuccess");
    16051          *      },
    16052          *      "onFailure":function(f) {
    16053          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    16054          *      }
    16055          * });
    16056          */
    16057         hcap.bluetooth.audio.backward = function (param) {
    16058             hcap_command("bt_audio_backward", param);
    16059         };
    16060         /**
    16061          * @namespace hcap.webrtc
    16062          */
    16063         hcap.webrtc = { };
    16064         /**
    16065          * Plays the video stream from local video. This is for checking local video works well or not.<br>
    16066          *
    16067          * @param {Object} param
    16068          * <ul>
    16069          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    16070          *   <pre class="code prettyprint">
    16071          *   param.onSuccess = function() {
    16072          *       // No Parameter.
    16073          *   }</pre>
    16074          *   </li>
    16075          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    16076          *   <pre class="code prettyprint">
    16077          *   param.onFailure = function (param) {
    16078          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    16079          *   }</pre>
    16080          *   </li>
    16081          * </ul>
    16082          *
    16083          * @deprecated since 1.24
    16084          *
    16085          * @see
    16086          * <a href="_global_.html#event:webrtc_message_received">{Event} webrtc_message_received</a><br>
    16087          * <a href="_global_.html#event:webrtc_event_received">{Event} webrtc_event_received</a><br>
    16088          * <a href="hcap.webrtc.html#.stopPreviewVideo">hcap.webrtc.stopPreviewVideo()</a><br>
    16089          * <a href="hcap.webrtc.html#.incomingCall">hcap.webrtc.incomingCall()</a><br>
    16090          * <a href="hcap.webrtc.html#.outgoingCall">hcap.webrtc.outgoingCall()</a><br>
    16091          * <a href="hcap.webrtc.html#.endCall">hcap.webrtc.endCall()</a><br>
    16092          * <a href="hcap.webrtc.html#.acceptMessage">hcap.webrtc.acceptMessage()</a><br>
    16093          * <a href="hcap.webrtc.html#.startCheckAudio">hcap.webrtc.startCheckAudio()</a><br>
    16094          * <a href="hcap.webrtc.html#.stopCheckAudio">hcap.webrtc.stopCheckAudio()</a><br>
    16095          * <a href="hcap.webrtc.html#.setConfiguration">hcap.webrtc.setConfiguration()</a><br>
    16096          * <a href="hcap.webrtc.html#.getConfiguration">hcap.webrtc.getConfiguration()</a><br>
    16097          * <a href="hcap.webrtc.html#.showDiagnostics">hcap.webrtc.showDiagnostics()</a><br>
    16098          *
    16099          * @example
    16100          * hcap.webrtc.startPreviewVideo({
    16101          *      "onSuccess" : function() {
    16102          *          console.log("onSuccess");
    16103          *      },
    16104          *      "onFailure" : function(f) {
    16105          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    16106          *      }
    16107          * });
    16108          */
    16109         hcap.webrtc.startPreviewVideo = function (param) {
    16110             hcap_command("webrtc_start_preview_video", param);
    16111         };
    16112         /**
    16113          * Stops playing local video.<br>
    16114          *
    16115          * @param {Object} param
    16116          * <ul>
    16117          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    16118          *   <pre class="code prettyprint">
    16119          *   param.onSuccess = function() {
    16120          *       // No Parameter.
    16121          *   }</pre>
    16122          *   </li>
    16123          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    16124          *   <pre class="code prettyprint">
    16125          *   param.onFailure = function (param) {
    16126          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    16127          *   }</pre>
    16128          *   </li>
    16129          * </ul>
    16130          *
    16131          * @deprecated since 1.24
    16132          *
    16133          * @see
    16134          * <a href="_global_.html#event:webrtc_message_received">{Event} webrtc_message_received</a><br>
    16135          * <a href="_global_.html#event:webrtc_event_received">{Event} webrtc_event_received</a><br>
    16136          * <a href="hcap.webrtc.html#.startPreviewVideo">hcap.webrtc.startPreviewVideo()</a><br>
    16137          * <a href="hcap.webrtc.html#.incomingCall">hcap.webrtc.incomingCall()</a><br>
    16138          * <a href="hcap.webrtc.html#.outgoingCall">hcap.webrtc.outgoingCall()</a><br>
    16139          * <a href="hcap.webrtc.html#.endCall">hcap.webrtc.endCall()</a><br>
    16140          * <a href="hcap.webrtc.html#.acceptMessage">hcap.webrtc.acceptMessage()</a><br>
    16141          * <a href="hcap.webrtc.html#.startCheckAudio">hcap.webrtc.startCheckAudio()</a><br>
    16142          * <a href="hcap.webrtc.html#.stopCheckAudio">hcap.webrtc.stopCheckAudio()</a><br>
    16143          * <a href="hcap.webrtc.html#.setConfiguration">hcap.webrtc.setConfiguration()</a><br>
    16144          * <a href="hcap.webrtc.html#.getConfiguration">hcap.webrtc.getConfiguration()</a><br>
    16145          * <a href="hcap.webrtc.html#.showDiagnostics">hcap.webrtc.showDiagnostics()</a><br>
    16146          *
    16147          * @example
    16148          * hcap.webrtc.stopPreviewVideo({
    16149          *      "onSuccess" : function() {
    16150          *          console.log("onSuccess");
    16151          *      },
    16152          *      "onFailure" : function(f) {
    16153          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    16154          *      }
    16155          * });
    16156          */
    16157         hcap.webrtc.stopPreviewVideo = function (param) {
    16158             hcap_command("webrtc_stop_preview_video", param);
    16159         };
    16160         /**
    16161          * Receives an incoming call. This API should be included the information of peer's SDP(Session Description Protocol).<br>
    16162          *
    16163          * @param {Object} param
    16164          * <ul>
    16165          *   <li>{Number} param.localId [Required] - local(my) ID
    16166          *   <li>{Number} param.remoteId [Required] - peer(who makes a call to me) ID
    16167          *   <li>{String} param.remoteSDP[Required] - peer SDP
    16168          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    16169          *   <pre class="code prettyprint">
    16170          *   param.onSuccess = function() {
    16171          *       // No Parameter.
    16172          *   }</pre>
    16173          *   </li>
    16174          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    16175          *   <pre class="code prettyprint">
    16176          *   param.onFailure = function (param) {
    16177          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    16178          *   }</pre>
    16179          *   </li>
    16180          * </ul>
    16181          *
    16182          * @deprecated since 1.24
    16183          *
    16184          * @see
    16185          * <a href="_global_.html#event:webrtc_message_received">{Event} webrtc_message_received</a><br>
    16186          * <a href="_global_.html#event:webrtc_event_received">{Event} webrtc_event_received</a><br>
    16187          * <a href="hcap.webrtc.html#.startPreviewVideo">hcap.webrtc.startPreviewVideo()</a><br>
    16188          * <a href="hcap.webrtc.html#.stopPreviewVideo">hcap.webrtc.stopPreviewVideo()</a><br>
    16189          * <a href="hcap.webrtc.html#.outgoingCall">hcap.webrtc.outgoingCall()</a><br>
    16190          * <a href="hcap.webrtc.html#.endCall">hcap.webrtc.endCall()</a><br>
    16191          * <a href="hcap.webrtc.html#.acceptMessage">hcap.webrtc.acceptMessage()</a><br>
    16192          * <a href="hcap.webrtc.html#.startCheckAudio">hcap.webrtc.startCheckAudio()</a><br>
    16193          * <a href="hcap.webrtc.html#.stopCheckAudio">hcap.webrtc.stopCheckAudio()</a><br>
    16194          * <a href="hcap.webrtc.html#.setConfiguration">hcap.webrtc.setConfiguration()</a><br>
    16195          * <a href="hcap.webrtc.html#.getConfiguration">hcap.webrtc.getConfiguration()</a><br>
    16196          * <a href="hcap.webrtc.html#.showDiagnostics">hcap.webrtc.showDiagnostics()</a><br>
    16197          *
    16198          * @example
    16199          * hcap.webrtc.incomingCall({
    16200          *      "localId" : 1,
    16201          *      "remoteId" : 2,
    16202          *      "remoteSDP" : "{"sdp" : "v=0\r\no=- 3454157150814283647 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE audio video\r\..."}",
    16203          *      "onSuccess" : function() {
    16204          *          console.log("onSuccess");
    16205          *      },
    16206          *      "onFailure" : function(f) {
    16207          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    16208          *      }
    16209          * });
    16210          */
    16211         hcap.webrtc.incomingCall = function (param) {
    16212             hcap_command("webrtc_incoming_call", param);
    16213         };
    16214         /**
    16215          * Makes an outgoing call. This API lead to create WebRTC object and local SDP.
    16216          * The local SDP will be passed to HCAP by an event <a href="_global_.html#event:webrtc_message_received">{Event} webrtc_message_received</a>.<br>
    16217          *
    16218          * @param {Object} param
    16219          * <ul>
    16220          *   <li>{Number} param.localId [Required] - local(my) ID
    16221          *   <li>{Number} param.remoteId [Required] - peer(who I want to call) ID
    16222          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    16223          *   <pre class="code prettyprint">
    16224          *   param.onSuccess = function() {
    16225          *       // No Parameter.
    16226          *   }</pre>
    16227          *   </li>
    16228          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    16229          *   <pre class="code prettyprint">
    16230          *   param.onFailure = function (param) {
    16231          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    16232          *   }</pre>
    16233          *   </li>
    16234          * </ul>
    16235          *
    16236          * @deprecated since 1.24
    16237          *
    16238          * @see
    16239          * <a href="_global_.html#event:webrtc_message_received">{Event} webrtc_message_received</a><br>
    16240          * <a href="_global_.html#event:webrtc_event_received">{Event} webrtc_event_received</a><br>
    16241          * <a href="hcap.webrtc.html#.startPreviewVideo">hcap.webrtc.startPreviewVideo()</a><br>
    16242          * <a href="hcap.webrtc.html#.stopPreviewVideo">hcap.webrtc.stopPreviewVideo()</a><br>
    16243          * <a href="hcap.webrtc.html#.incomingCall">hcap.webrtc.incomingCall()</a><br>
    16244          * <a href="hcap.webrtc.html#.endCall">hcap.webrtc.endCall()</a><br>
    16245          * <a href="hcap.webrtc.html#.acceptMessage">hcap.webrtc.acceptMessage()</a><br>
    16246          * <a href="hcap.webrtc.html#.startCheckAudio">hcap.webrtc.startCheckAudio()</a><br>
    16247          * <a href="hcap.webrtc.html#.stopCheckAudio">hcap.webrtc.stopCheckAudio()</a><br>
    16248          * <a href="hcap.webrtc.html#.setConfiguration">hcap.webrtc.setConfiguration()</a><br>
    16249          * <a href="hcap.webrtc.html#.getConfiguration">hcap.webrtc.getConfiguration()</a><br>
    16250          * <a href="hcap.webrtc.html#.showDiagnostics">hcap.webrtc.showDiagnostics()</a><br>
    16251          *
    16252          * @example
    16253          * hcap.webrtc.outgoingCall({
    16254          *      "localId" : 1,
    16255          *      "remoteId" : 2,
    16256          *      "onSuccess" : function() {
    16257          *          console.log("onSuccess");
    16258          *      },
    16259          *      "onFailure" : function(f) {
    16260          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    16261          *      }
    16262          * });
    16263          */
    16264         hcap.webrtc.outgoingCall = function (param) {
    16265             hcap_command("webrtc_outgoing_call", param);
    16266         };
    16267         /**
    16268          * Ends a call.<br>
    16269          *
    16270          * @param {Object} param
    16271          * <ul>
    16272          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    16273          *   <pre class="code prettyprint">
    16274          *   param.onSuccess = function() {
    16275          *       // No Parameter.
    16276          *   }</pre>
    16277          *   </li>
    16278          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    16279          *   <pre class="code prettyprint">
    16280          *   param.onFailure = function (param) {
    16281          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    16282          *   }</pre>
    16283          *   </li>
    16284          * </ul>
    16285          *
    16286          * @deprecated since 1.24
    16287          *
    16288          * @see
    16289          * <a href="_global_.html#event:webrtc_message_received">{Event} webrtc_message_received</a><br>
    16290          * <a href="_global_.html#event:webrtc_event_received">{Event} webrtc_event_received</a><br>
    16291          * <a href="hcap.webrtc.html#.startPreviewVideo">hcap.webrtc.startPreviewVideo()</a><br>
    16292          * <a href="hcap.webrtc.html#.stopPreviewVideo">hcap.webrtc.stopPreviewVideo()</a><br>
    16293          * <a href="hcap.webrtc.html#.incomingCall">hcap.webrtc.incomingCall()</a><br>
    16294          * <a href="hcap.webrtc.html#.outgoingCall">hcap.webrtc.outgoingCall()</a><br>
    16295          * <a href="hcap.webrtc.html#.acceptMessage">hcap.webrtc.acceptMessage()</a><br>
    16296          * <a href="hcap.webrtc.html#.startCheckAudio">hcap.webrtc.startCheckAudio()</a><br>
    16297          * <a href="hcap.webrtc.html#.stopCheckAudio">hcap.webrtc.stopCheckAudio()</a><br>
    16298          * <a href="hcap.webrtc.html#.setConfiguration">hcap.webrtc.setConfiguration()</a><br>
    16299          * <a href="hcap.webrtc.html#.getConfiguration">hcap.webrtc.getConfiguration()</a><br>
    16300          * <a href="hcap.webrtc.html#.showDiagnostics">hcap.webrtc.showDiagnostics()</a><br>
    16301          *
    16302          * @example
    16303          * hcap.webrtc.endCall({
    16304          *      "onSuccess" : function() {
    16305          *          console.log("onSuccess");
    16306          *      },
    16307          *      "onFailure" : function(f) {
    16308          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    16309          *      }
    16310          * });
    16311          */
    16312         hcap.webrtc.endCall = function (param) {
    16313             hcap_command("webrtc_end_call", param);
    16314         };
    16315         /**
    16316          * Sends a message to webrtc service. Predefined types of message can be passed to webrtc service.
    16317          * <br>
    16318          *
    16319          * @param {Object} param
    16320          * <ul>
    16321          *   <li>{Number} param.remoteId [Required] - peer ID
    16322          *   <li>{String} param.rtcMsg [Required] - message which be sent to webrtc service, such as SDP, ICE configuration, and so on.
    16323          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    16324          *   <pre class="code prettyprint">
    16325          *   param.onSuccess = function() {
    16326          *       // No Parameter.
    16327          *   }</pre>
    16328          *   </li>
    16329          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    16330          *   <pre class="code prettyprint">
    16331          *   param.onFailure = function (param) {
    16332          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    16333          *   }</pre>
    16334          *   </li>
    16335          * </ul>
    16336          *
    16337          * @deprecated since 1.24
    16338          *
    16339          * @see
    16340          * <a href="_global_.html#event:webrtc_message_received">{Event} webrtc_message_received</a><br>
    16341          * <a href="_global_.html#event:webrtc_event_received">{Event} webrtc_event_received</a><br>
    16342          * <a href="hcap.webrtc.html#.startPreviewVideo">hcap.webrtc.startPreviewVideo()</a><br>
    16343          * <a href="hcap.webrtc.html#.stopPreviewVideo">hcap.webrtc.stopPreviewVideo()</a><br>
    16344          * <a href="hcap.webrtc.html#.incomingCall">hcap.webrtc.incomingCall()</a><br>
    16345          * <a href="hcap.webrtc.html#.outgoingCall">hcap.webrtc.outgoingCall()</a><br>
    16346          * <a href="hcap.webrtc.html#.endCall">hcap.webrtc.endCall()</a><br>
    16347          * <a href="hcap.webrtc.html#.startCheckAudio">hcap.webrtc.startCheckAudio()</a><br>
    16348          * <a href="hcap.webrtc.html#.stopCheckAudio">hcap.webrtc.stopCheckAudio()</a><br>
    16349          * <a href="hcap.webrtc.html#.setConfiguration">hcap.webrtc.setConfiguration()</a><br>
    16350          * <a href="hcap.webrtc.html#.getConfiguration">hcap.webrtc.getConfiguration()</a><br>
    16351          * <a href="hcap.webrtc.html#.showDiagnostics">hcap.webrtc.showDiagnostics()</a><br>
    16352          *
    16353          * @example
    16354          * hcap.webrtc.acceptMessage({
    16355          *      "remoteId" : 2,
    16356          *      "rtcMsg" : "{"type":"answer","sdp":"v=0\r\no=- 4474142502554476113 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE audio video..."}",
    16357          *      "onSuccess" : function() {
    16358          *          console.log("onSuccess");
    16359          *      },
    16360          *      "onFailure" : function(f) {
    16361          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    16362          *      }
    16363          * });
    16364          */
    16365         hcap.webrtc.acceptMessage = function (param) {
    16366             hcap_command("webrtc_accept_message", param);
    16367         };
    16368         /**
    16369          * Checks local audio. This API can test the local sound by 2-step.<br>
    16370          * step1: Set the param.type as a 'microphone' to test input works well or not. It record the sound only from microphone.
    16371          * step2: Set the param.type as a 'speaker' to test the output works well or not. It plays the recorded sound from 'microphone' test.
    16372          * Each step will be done by <a href="hcap.webrtc.html#.stopCheckAudio">hcap.webrtc.stopCheckAudio()</a>.
    16373          *
    16374          * @param {Object} param
    16375          * <ul>
    16376          *   <li>{String} param.type [Required] - microphone | speaker
    16377          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    16378          *   <pre class="code prettyprint">
    16379          *   param.onSuccess = function() {
    16380          *       // No Parameter.
    16381          *   }</pre>
    16382          *   </li>
    16383          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    16384          *   <pre class="code prettyprint">
    16385          *   param.onFailure = function (param) {
    16386          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    16387          *   }</pre>
    16388          *   </li>
    16389          * </ul>
    16390          *
    16391          * @deprecated since 1.24
    16392          *
    16393          * @see
    16394          * <a href="_global_.html#event:webrtc_message_received">{Event} webrtc_message_received</a><br>
    16395          * <a href="_global_.html#event:webrtc_event_received">{Event} webrtc_event_received</a><br>
    16396          * <a href="hcap.webrtc.html#.startPreviewVideo">hcap.webrtc.startPreviewVideo()</a><br>
    16397          * <a href="hcap.webrtc.html#.stopPreviewVideo">hcap.webrtc.stopPreviewVideo()</a><br>
    16398          * <a href="hcap.webrtc.html#.incomingCall">hcap.webrtc.incomingCall()</a><br>
    16399          * <a href="hcap.webrtc.html#.outgoingCall">hcap.webrtc.outgoingCall()</a><br>
    16400          * <a href="hcap.webrtc.html#.endCall">hcap.webrtc.endCall()</a><br>
    16401          * <a href="hcap.webrtc.html#.acceptMessage">hcap.webrtc.acceptMessage()</a><br>
    16402          * <a href="hcap.webrtc.html#.stopCheckAudio">hcap.webrtc.stopCheckAudio()</a><br>
    16403          * <a href="hcap.webrtc.html#.setConfiguration">hcap.webrtc.setConfiguration()</a><br>
    16404          * <a href="hcap.webrtc.html#.getConfiguration">hcap.webrtc.getConfiguration()</a><br>
    16405          * <a href="hcap.webrtc.html#.showDiagnostics">hcap.webrtc.showDiagnostics()</a><br>
    16406          *
    16407          * @example
    16408          * hcap.webrtc.startCheckAudio({
    16409          *      "type" : "microphone",
    16410          *      "onSuccess" : function() {
    16411          *          console.log("onSuccess");
    16412          *      },
    16413          *      "onFailure" : function(f) {
    16414          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    16415          *      }
    16416          * });
    16417          */
    16418         hcap.webrtc.startCheckAudio = function (param) {
    16419             hcap_command("webrtc_start_check_audio", param);
    16420         };
    16421         /**
    16422          * Stops <a href="hcap.webrtc.html#.startCheckAudio">hcap.webrtc.startCheckAudio()</a>.<br>
    16423          *
    16424          * @param {Object} param
    16425          * <ul>
    16426          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    16427          *   <pre class="code prettyprint">
    16428          *   param.onSuccess = function() {
    16429          *       // No Parameter.
    16430          *   }</pre>
    16431          *   </li>
    16432          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    16433          *   <pre class="code prettyprint">
    16434          *   param.onFailure = function (param) {
    16435          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    16436          *   }</pre>
    16437          *   </li>
    16438          * </ul>
    16439          *
    16440          * @deprecated since 1.24
    16441          *
    16442          * @see
    16443          * <a href="_global_.html#event:webrtc_message_received">{Event} webrtc_message_received</a><br>
    16444          * <a href="_global_.html#event:webrtc_event_received">{Event} webrtc_event_received</a><br>
    16445          * <a href="hcap.webrtc.html#.startPreviewVideo">hcap.webrtc.startPreviewVideo()</a><br>
    16446          * <a href="hcap.webrtc.html#.stopPreviewVideo">hcap.webrtc.stopPreviewVideo()</a><br>
    16447          * <a href="hcap.webrtc.html#.incomingCall">hcap.webrtc.incomingCall()</a><br>
    16448          * <a href="hcap.webrtc.html#.outgoingCall">hcap.webrtc.outgoingCall()</a><br>
    16449          * <a href="hcap.webrtc.html#.endCall">hcap.webrtc.endCall()</a><br>
    16450          * <a href="hcap.webrtc.html#.acceptMessage">hcap.webrtc.acceptMessage()</a><br>
    16451          * <a href="hcap.webrtc.html#.startCheckAudio">hcap.webrtc.startCheckAudio()</a><br>
    16452          * <a href="hcap.webrtc.html#.setConfiguration">hcap.webrtc.setConfiguration()</a><br>
    16453          * <a href="hcap.webrtc.html#.getConfiguration">hcap.webrtc.getConfiguration()</a><br>
    16454          * <a href="hcap.webrtc.html#.showDiagnostics">hcap.webrtc.showDiagnostics()</a><br>
    16455          *
    16456          * @example
    16457          * hcap.webrtc.stopCheckAudio({
    16458          *      "onSuccess" : function() {
    16459          *          console.log("onSuccess");
    16460          *      },
    16461          *      "onFailure" : function(f) {
    16462          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    16463          *      }
    16464          * });
    16465          */
    16466         hcap.webrtc.stopCheckAudio = function (param) {
    16467             hcap_command("webrtc_stop_check_audio", param);
    16468         };
    16469         /**
    16470          * Sets WebRTC configuration.<br>
    16471          *
    16472          * @param {Object} param
    16473          * <ul>
    16474          *   <li>{String} param.key [Required] - configuration key to be set.
    16475          *   <li>{String} param.value [Required] - configuration value to be set.<br>
    16476          *   <div>
    16477          *     <table class="hcap_spec">
    16478          *       <thead>
    16479          *         <tr>
    16480          *           <th>Key</th>
    16481          *           <th>Description</th>
    16482          *           <th>Read/Write</th>
    16483          *           <th>Value Format</th>
    16484          *           <th>Value example (default value for the predefined value set)</th>
    16485          *         </tr>
    16486          *       </thead>
    16487          *       <tbody>
    16488          *       <tr class="odd">
    16489          *         <td>ice_cfg</td>
    16490          *         <td class="left">STUN/TURN server infomation</td>
    16491          *         <td>Read/Write</td>
    16492          *         <td class="left">[version string]<br>';' '|' ':'</td>
    16493          *         <td>stun:stun.l.google.com:19302;turn:89.108.113.194:3478|webrtc|webrtc</td>
    16494          *       </tr>
    16495          *       <tr>
    16496          *         <td>peer_server_name</td>
    16497          *         <td class="left">IP address of peer connection server</td>
    16498          *         <td>Read/Write</td>
    16499          *         <td class="left">[version string]<br>ip address</td>
    16500          *         <td>192.168.0.2</td>
    16501          *       </tr>
    16502          *       <tr class="odd">
    16503          *         <td>peer_server_port</td>
    16504          *         <td class="left">Port number of peer connection server</td>
    16505          *         <td>Read/Write</td>
    16506          *         <td class="left">[version string]<br>integer</td>
    16507          *         <td>8888</td>
    16508          *       </tr>
    16509          *       <tr>
    16510          *         <td>user_name</td>
    16511          *         <td class="left">User name to log-in</td>
    16512          *         <td>Read/Write</td>
    16513          *         <td class="left">[version string]<br>free format string</td>
    16514          *         <td>Andy</td>
    16515          *       </tr>
    16516          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    16517          *   <pre class="code prettyprint">
    16518          *   param.onSuccess = function() {
    16519          *       // No Parameter.
    16520          *   }</pre>
    16521          *   </li>
    16522          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    16523          *   <pre class="code prettyprint">
    16524          *   param.onFailure = function (param) {
    16525          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    16526          *   }</pre>
    16527          *   </li>
    16528          * </ul>
    16529          *
    16530          * @deprecated since 1.24
    16531          *
    16532          * @see
    16533          * <a href="_global_.html#event:webrtc_message_received">{Event} webrtc_message_received</a><br>
    16534          * <a href="_global_.html#event:webrtc_event_received">{Event} webrtc_event_received</a><br>
    16535          * <a href="hcap.webrtc.html#.startPreviewVideo">hcap.webrtc.startPreviewVideo()</a><br>
    16536          * <a href="hcap.webrtc.html#.stopPreviewVideo">hcap.webrtc.stopPreviewVideo()</a><br>
    16537          * <a href="hcap.webrtc.html#.incomingCall">hcap.webrtc.incomingCall()</a><br>
    16538          * <a href="hcap.webrtc.html#.outgoingCall">hcap.webrtc.outgoingCall()</a><br>
    16539          * <a href="hcap.webrtc.html#.endCall">hcap.webrtc.endCall()</a><br>
    16540          * <a href="hcap.webrtc.html#.acceptMessage">hcap.webrtc.acceptMessage()</a><br>
    16541          * <a href="hcap.webrtc.html#.startCheckAudio">hcap.webrtc.startCheckAudio()</a><br>
    16542          * <a href="hcap.webrtc.html#.stopCheckAudio">hcap.webrtc.stopCheckAudio()</a><br>
    16543          * <a href="hcap.webrtc.html#.getConfiguration">hcap.webrtc.getConfiguration()</a><br>
    16544          * <a href="hcap.webrtc.html#.showDiagnostics">hcap.webrtc.showDiagnostics()</a><br>
    16545          *
    16546          * @example
    16547          * hcap.webrtc.setConfiguration({
    16548          *      "key" : "max_height",
    16549          *      "value" : "480",
    16550          *      "onSuccess" : function() {
    16551          *          console.log("onSuccess");
    16552          *      },
    16553          *      "onFailure" : function(f) {
    16554          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    16555          *      }
    16556          * });
    16557          */
    16558         hcap.webrtc.setConfiguration = function (param) {
    16559             hcap_command("webrtc_set_configuration", param);
    16560         };
    16561         /**
    16562         * Gets WebRTC configurations. This return the list of configrations.<br>
    16563         *
    16564         * @param {Object} param
    16565         * <ul>
    16566         *   <li>{Function} param.onSuccess [Optional] - success callback function.
    16567         *   <pre class="code prettyprint">
    16568         *   param.onSuccess = function (param) {
    16569         *       // {String} param.configurations - configurations string.
    16570         *   }</pre>
    16571         *   </li>
    16572         *   <li>{Function} param.onFailure [Optional]  - failure callback function.
    16573         *   <pre class="code prettyprint">
    16574         *   param.onFailure = function (param) {
    16575         *       // {String} param.errorMessage - in case of failure, this message provides the details.
    16576         *   }</pre>
    16577         *   </li>
    16578         * </ul>
    16579         *
    16580         * @deprecated since 1.24
    16581         *
    16582         * @see
    16583         * <a href="_global_.html#event:webrtc_message_received">{Event} webrtc_message_received</a><br>
    16584         * <a href="_global_.html#event:webrtc_event_received">{Event} webrtc_event_received</a><br>
    16585         * <a href="hcap.webrtc.html#.startPreviewVideo">hcap.webrtc.startPreviewVideo()</a><br>
    16586         * <a href="hcap.webrtc.html#.stopPreviewVideo">hcap.webrtc.stopPreviewVideo()</a><br>
    16587         * <a href="hcap.webrtc.html#.incomingCall">hcap.webrtc.incomingCall()</a><br>
    16588         * <a href="hcap.webrtc.html#.outgoingCall">hcap.webrtc.outgoingCall()</a><br>
    16589         * <a href="hcap.webrtc.html#.endCall">hcap.webrtc.endCall()</a><br>
    16590         * <a href="hcap.webrtc.html#.acceptMessage">hcap.webrtc.acceptMessage()</a><br>
    16591         * <a href="hcap.webrtc.html#.startCheckAudio">hcap.webrtc.startCheckAudio()</a><br>
    16592         * <a href="hcap.webrtc.html#.stopCheckAudio">hcap.webrtc.stopCheckAudio()</a><br>
    16593         * <a href="hcap.webrtc.html#.setConfiguration">hcap.webrtc.setConfiguration()</a><br>
    16594         * <a href="hcap.webrtc.html#.showDiagnostics">hcap.webrtc.showDiagnostics()</a><br>
    16595         *
    16596         * @example
    16597         * hcap.webrtc.getConfiguration({
    16598         *      "onSuccess" : function(s) {
    16599         *          console.log("onSuccess : configurations = " + s.configurations);
    16600         *      },
    16601         *      "onFailure" : function(f) {
    16602         *          console.log("onFailure : errorMessage = " + f.errorMessage);
    16603         *      }
    16604         * });
    16605         */
    16606         hcap.webrtc.getConfiguration = function (param) {
    16607             hcap_command("webrtc_get_configuration", param);
    16608         };
    16609         /**
    16610          * Shows diagnostics.<br>
    16611          *
    16612          * @param {Object} param
    16613          * <ul>
    16614          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    16615          *   <pre class="code prettyprint">
    16616          *   param.onSuccess = function() {
    16617          *       // No Parameter.
    16618          *   }</pre>
    16619          *   </li>
    16620          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    16621          *   <pre class="code prettyprint">
    16622          *   param.onFailure = function (param) {
    16623          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    16624          *   }</pre>
    16625          *   </li>
    16626          * </ul>
    16627          *
    16628          * @deprecated since 1.24
    16629          *
    16630          * @see
    16631          * <a href="_global_.html#event:webrtc_message_received">{Event} webrtc_message_received</a><br>
    16632          * <a href="_global_.html#event:webrtc_event_received">{Event} webrtc_event_received</a><br>
    16633          * <a href="hcap.webrtc.html#.startPreviewVideo">hcap.webrtc.startPreviewVideo()</a><br>
    16634          * <a href="hcap.webrtc.html#.stopPreviewVideo">hcap.webrtc.stopPreviewVideo()</a><br>
    16635          * <a href="hcap.webrtc.html#.incomingCall">hcap.webrtc.incomingCall()</a><br>
    16636          * <a href="hcap.webrtc.html#.outgoingCall">hcap.webrtc.outgoingCall()</a><br>
    16637          * <a href="hcap.webrtc.html#.endCall">hcap.webrtc.endCall()</a><br>
    16638          * <a href="hcap.webrtc.html#.acceptMessage">hcap.webrtc.acceptMessage()</a><br>
    16639          * <a href="hcap.webrtc.html#.startCheckAudio">hcap.webrtc.startCheckAudio()</a><br>
    16640          * <a href="hcap.webrtc.html#.stopCheckAudio">hcap.webrtc.stopCheckAudio()</a><br>
    16641          * <a href="hcap.webrtc.html#.setConfiguration">hcap.webrtc.setConfiguration()</a><br>
    16642          * <a href="hcap.webrtc.html#.getConfiguration">hcap.webrtc.getConfiguration()</a><br>
    16643          *
    16644          * @example
    16645          * hcap.webrtc.showDiagnostics({
    16646          *      "onSuccess" : function() {
    16647          *          console.log("onSuccess");
    16648          *      },
    16649          *      "onFailure" : function(f) {
    16650          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    16651          *      }
    16652          * });
    16653          */
    16654         hcap.webrtc.showDiagnostics = function (param) {
    16655             hcap_command("webrtc_show_diagnostics", param);
    16656         };
    16657          /**
    16658          * @namespace hcap.security
    16659          */
    16660         hcap.security = { };
    16661         /**
    16662          * Registers a server certificate to validate the keys from the HCAP server as part of a PKI (Public Key Infrastructure).<br>
    16663          * If you want to register a server certificate, the property "browser_https_security_level" should be replaced from "1" to "0".<br>
    16664          * After registration, reboot is needed.<br>
    16665          * Handling (Register/Unregister) server/client certificates must be done very carefully under the control of installer or hotelier because it is done in insecure environment.<br>
    16666          * If a server certificate is registered, TV will validate the public key from the HCAP server when TV requests resources to the HCAP server in the modules like HCAP MW, Ez-i and HCAP browser in charge of downloads or loads of HCAP applications.<br>
    16667          * The server certificate to register can be a self-signed certificate or a CA (Certificate Authority) certificate.<br>
    16668          * Only 1 server certificate is permitted in TV. Therefore to register a server certificate when another server certificate was registered, revoke(unregister) the registered server certificate first, and register the new server certificate. Or the registration for the new server certificate will be failed.<br><br>
    16669          * This feature was tested with following settings in Ubuntu 12.04 LTS and the apache server as the HTTPS HCAP server.<br>
    16670          * Reference : <a href="http://theheat.dk/blog/?p=1023">Create a CA, issue server/client certificates and test them via Apache</a><br>
    16671          * <pre style="background-color: lightgray">
    16672 user@lgesccicbld28v:~/certificate$ mkdir demoCA
    16673 user@lgesccicbld28v:~/certificate$ cd demoCA
    16674 user@lgesccicbld28v:~/certificate/demoCA$ mkdir certs
    16675 user@lgesccicbld28v:~/certificate/demoCA$ mkdir csr
    16676 user@lgesccicbld28v:~/certificate/demoCA$ mkdir newcerts
    16677 user@lgesccicbld28v:~/certificate/demoCA$ mkdir private
    16678 user@lgesccicbld28v:~/certificate/demoCA$ cp ../openssl.cnf .
    16679 user@lgesccicbld28v:~/certificate/demoCA$ echo 00 > serial
    16680 user@lgesccicbld28v:~/certificate/demoCA$ echo 00 > crlnumber
    16681 user@lgesccicbld28v:~/certificate/demoCA$ touch index.txt
    16682 user@lgesccicbld28v:~/certificate/demoCA$ pwd
    16683 /home/user/certificate/demoCA
    16684 user@lgesccicbld28v:~/certificate/demoCA$ vi openssl.cnf
    16685
    16686 >>> Change dir in CA_default
    16687 [ CA_default ]
    16688
    16689 dir             = ./demoCA         # Where everything is kept
    16690 >>>>
    16691 dir             = /home/user/certificate/demoCA         # Where everything is kept
    16692
    16693 user@lgesccicbld28v:~/certificate/demoCA$ openssl genrsa -des3 -passout pass:passcode -out  private/rootCA.key 2048
    16694 Generating RSA private key, 2048 bit long modulus
    16695 ...........................................................+++
    16696 ......................................................+++
    16697 e is 65537 (0x10001)
    16698 user@lgesccicbld28v:~/certificate/demoCA$ openssl rsa -passin pass:passcode -in private/rootCA.key -out private/rootCA.key
    16699 writing RSA key
    16700 user@lgesccicbld28v:~/certificate/demoCA$ openssl req -config openssl.cnf -new -x509 -subj '/C=KR/L=LGE/O=CTO CA/CN=ROOT CA' -days 3650 -key private/rootCA.key -out certs/rootCA.crt
    16701 user@lgesccicbld28v:~/certificate/demoCA$ openssl genrsa -des3 -passout pass:passcode -out private/jkcloud.key 2048
    16702 Generating RSA private key, 2048 bit long modulus
    16703 ................+++
    16704 .................................................+++
    16705 e is 65537 (0x10001)
    16706 user@lgesccicbld28v:~/certificate/demoCA$ openssl rsa -passin pass:passcode -in private/jkcloud.key -out private/jkcloud.key
    16707 writing RSA key
    16708 user@lgesccicbld28v:~/certificate/demoCA$ openssl req -config openssl.cnf -new -subj '/C=KR/L=LGE/O=CTO/CN=jkcloud.lge.com' -key private/jkcloud.key -out csr/jkcloud.csr
    16709 user@lgesccicbld28v:~/certificate/demoCA$ openssl ca -batch -config openssl.cnf -days 3650 -in csr/jkcloud.csr -out certs/jkcloud.crt -keyfile private/rootCA.key -cert certs/rootCA.crt -policy policy_anything
    16710 Using configuration from openssl.cnf
    16711 Check that the request matches the signature
    16712 Signature ok
    16713 Certificate Details:
    16714         Serial Number: 0 (0x0)
    16715         Validity
    16716             Not Before: Mar 21 06:52:38 2016 GMT
    16717             Not After : Mar 19 06:52:38 2026 GMT
    16718         Subject:
    16719             countryName               = KR
    16720             localityName              = LGE
    16721             organizationName          = CTO
    16722             commonName                = jkcloud.lge.com
    16723         X509v3 extensions:
    16724             X509v3 Basic Constraints:
    16725                 CA:FALSE
    16726             Netscape Comment:
    16727                 OpenSSL Generated Certificate
    16728             X509v3 Subject Key Identifier:
    16729                 3F:87:5F:F8:76:65:12:96:AF:D6:4B:BC:AA:FA:1E:36:76:5F:8A:FE
    16730             X509v3 Authority Key Identifier:
    16731                 keyid:85:20:EF:03:87:EA:73:32:10:5D:B2:3B:92:42:4F:3C:66:65:6A:E0
    16732
    16733 Certificate is to be certified until Mar 19 06:52:38 2026 GMT (3650 days)
    16734
    16735 Write out database with 1 new entries
    16736 Data Base Updated
    16737 user@lgesccicbld28v:~/certificate/demoCA$ openssl genrsa -des3 -passout pass:passcode -out private/client_x86Emul.key 2048
    16738 Generating RSA private key, 2048 bit long modulus
    16739 ...................................................................................................................................................................................................................................+++
    16740 ...................................................................................................................+++
    16741 e is 65537 (0x10001)
    16742 user@lgesccicbld28v:~/certificate/demoCA$ openssl rsa -passin pass:passcode -in private/client_x86Emul.key -out private/client_x86Emul.key
    16743 writing RSA key
    16744 user@lgesccicbld28v:~/certificate/demoCA$ openssl req -config openssl.cnf -new -subj '/C=KR/L=LGE/O=CTO/CN=x86Emul' -key private/client_x86Emul.key -out csr/client_x86Emul.csr
    16745 user@lgesccicbld28v:~/certificate/demoCA$ openssl ca -batch -config openssl.cnf -days 3650 -in csr/client_x86Emul.csr -out certs/client_x86Emul.crt -keyfile private/rootCA.key -cert certs/rootCA.crt -policy policy_anything
    16746 Using configuration from openssl.cnf
    16747 Check that the request matches the signature
    16748 Signature ok
    16749 Certificate Details:
    16750         Serial Number: 1 (0x1)
    16751         Validity
    16752             Not Before: Mar 21 06:53:26 2016 GMT
    16753             Not After : Mar 19 06:53:26 2026 GMT
    16754         Subject:
    16755             countryName               = KR
    16756             localityName              = LGE
    16757             organizationName          = CTO
    16758             commonName                = x86Emul
    16759         X509v3 extensions:
    16760             X509v3 Basic Constraints:
    16761                 CA:FALSE
    16762             Netscape Comment:
    16763                 OpenSSL Generated Certificate
    16764             X509v3 Subject Key Identifier:
    16765                 EE:1A:6C:59:3B:13:FA:32:A7:61:60:2A:6C:56:66:82:AB:21:CD:05
    16766             X509v3 Authority Key Identifier:
    16767                 keyid:85:20:EF:03:87:EA:73:32:10:5D:B2:3B:92:42:4F:3C:66:65:6A:E0
    16768
    16769 Certificate is to be certified until Mar 19 06:53:26 2026 GMT (3650 days)
    16770
    16771 Write out database with 1 new entries
    16772 Data Base Updated
    16773 user@lgesccicbld28v:~/certificate/demoCA$ find
    16774 .
    16775 ./serial.old
    16776 ./newcerts
    16777 ./newcerts/00.pem
    16778 ./newcerts/01.pem
    16779 ./serial
    16780 ./index.txt.attr
    16781 ./openssl.cnf
    16782 ./certs
    16783 ./certs/rootCA.crt
    16784 ./certs/client_x86Emul.crt
    16785 ./certs/jkcloud.crt
    16786 ./crlnumber
    16787 ./index.txt.attr.old
    16788 ./csr
    16789 ./csr/jkcloud.csr
    16790 ./csr/client_x86Emul.csr
    16791 ./private
    16792 ./private/client_x86Emul.key
    16793 ./private/jkcloud.key
    16794 ./private/rootCA.key
    16795 ./index.txt.old
    16796 ./index.txt
    16797 user@lgesccicbld28v:~/certificate/demoCA$
    16798
    16799 user@lgesccicbld28v:~/certificate/demoCA$ sudo vi /etc/apache2/sites-available/default-ssl
    16800 [sudo] password for user:
    16801 >>> Change as following
    16802         SSLEngine on # enable for server/client certificate
    16803
    16804         SSLCertificateFile    /home/user/certificate/demoCA/certs/jkcloud.crt # for server certificate
    16805         SSLCertificateKeyFile /home/user/certificate/demoCA/private/jkcloud.key # for server certificate
    16806
    16807         SSLCACertificateFile /home/user/certificate/demoCA/certs/rootCA.crt # for client certificate
    16808
    16809         SSLVerifyClient require # for client certificate
    16810         SSLVerifyDepth  10 # for client certificate
    16811
    16812 user@lgesccicbld28v:~/certificate/demoCA$ sudo a2enmod ssl
    16813 Module ssl already enabled
    16814 user@lgesccicbld28v:~/certificate/demoCA$ sudo a2ensite default-ssl
    16815 Site default-ssl already enabled
    16816 user@lgesccicbld28v:~/certificate/demoCA$ sudo service apache2 restart
    16817  * Restarting web server apache2                                                                                                                                                                                                                                         ... waiting                                                                                                                                                                                                                                                     [ OK ]
    16818 user@lgesccicbld28v:~/certificate/demoCA$
    16819          * </pre><br>
    16820          * In above example, register rootCA.crt to TV as the server certificate with <a href="hcap.security.html#.registerServerCertificate">hcap.security.registerServerCertificate()</a>.<br>
    16821          * And in the server, register jkcloud.crt and jkcloud.key to SSLCertificateFile and SSLCertificateKeyFile respectively if the server is the apache server.<br>
    16822          *
    16823          * @param {Object} param
    16824          * <ul>
    16825          *   <li>{String} param.nickname [Required] - nickname for this server certificate as 4 to 10-character string chosen from the set [a-zA-Z0-9].<br>
    16826          *   <li>{String} param.certificate [Required] - certificate string of the full contents in the server certificate file (public root CA of the server certificate file) in the form of PEM (rootCA.crt in above example).<br>
    16827          *   <li>{Boolean} param.enableVerifyHost [Required] - true for verifying the server to connect to has the same hostname in the certificate (if the verification is failed, the connection will be failed), otherwise false.<br>
    16828          *   <li>{Boolean} param.isSelfSigned [Required] - true if the server certificate is self-signed, otherwise false.<br>
    16829          *   <li>{String} param.accessCode [Required] - password as 4 to 10-character string chosen from the set [a-zA-Z0-9] to get whether this certificate is registered or not, or revoke this certificate in the future.<br>
    16830          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    16831          *   <pre class="code prettyprint">
    16832          *   param.onSuccess = function() {
    16833          *       // No Parameter.
    16834          *   }</pre>
    16835          *   </li>
    16836          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    16837          *   <pre class="code prettyprint">
    16838          *   param.onFailure = function (param) {
    16839          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    16840          *   }</pre>
    16841          *   </li>
    16842          * </ul>
    16843          *
    16844          * @since 1.20.0
    16845          *
    16846          * @see
    16847          * <a href="hcap.security.html#.registerClientCertificate">hcap.security.registerClientCertificate()</a><br>
    16848          * <a href="hcap.security.html#.unregisterServerCertificate">hcap.security.unregisterServerCertificate()</a><br>
    16849          * <a href="hcap.security.html#.unregisterClientCertificate">hcap.security.unregisterClientCertificate()</a><br>
    16850          * <a href="hcap.security.html#.existServerCertificate">hcap.security.existServerCertificate()</a><br>
    16851          * <a href="hcap.security.html#.existClientCertificate">hcap.security.existClientCertificate()</a><br>
    16852          *
    16853          * @example
    16854          * hcap.security.registerServerCertificate({
    16855          *      "nickname" : "testserver",
    16856          *      "certificate" : "\
    16857          *-----BEGIN CERTIFICATE-----\n\
    16858          *MIIDXzCCAkegAwIBAgIJALispfP+z4ZZMA0GCSqGSIb3DQEBBQUAMEYxCzAJBgNV\n\
    16859          *BAYTAktSMQwwCgYDVQQHDANMR0UxDzANBgNVBAoMBkNUTyBDQTEYMBYGA1UEAwwP\n\
    16860          *amtjbG91ZC5sZ2UuY29tMB4XDTE2MDMxNzAzMDUzMFoXDTI2MDMxNTAzMDUzMFow\n\
    16861          *RjELMAkGA1UEBhMCS1IxDDAKBgNVBAcMA0xHRTEPMA0GA1UECgwGQ1RPIENBMRgw\n\
    16862          *FgYDVQQDDA9qa2Nsb3VkLmxnZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw\n\
    16863          *ggEKAoIBAQCwdor7TwwIIuTI8HvOBx//cBlu+xE1L/9ZAWaIRivK/O/1Bv+jTxpx\n\
    16864          *5RN9RttmJle9QS8Tx6/Wf40REt9Lnc1fUCdVILSkTrcHY4Wcc5cqvt0Uz17kcaTJ\n\
    16865          *Q6Ch2wiyq2ZSj2vTQAhQfV0cpvwJTYKwXCSeL8M10KZqeU/41PITp/67MzCZF+BT\n\
    16866          *gTm60UTfrc/Owe8q2yn3di7wKiuEwP5WROGa/HkOrWJfkx0DjAlO79tZoUmyd4RH\n\
    16867          *C6R3ST8lbCMtttDd8JGHlCSVRf9NIQc71M88vgYY7Dh9POfCfhxkVA9/ws5h7aHt\n\
    16868          *t0vAqmRN6vgFhBPhmTUp+eoUl+3nf0aVAgMBAAGjUDBOMB0GA1UdDgQWBBQkXPyq\n\
    16869          *koD+LlrJgYRvkiqg5KDJJTAfBgNVHSMEGDAWgBQkXPyqkoD+LlrJgYRvkiqg5KDJ\n\
    16870          *JTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQCcK/JXi0aaQ1RiToTK\n\
    16871          *stYpMZjTtmiDqgpdHkhsU0H2EwVW46j4xaALzLoSWx4neREJS1KPJ4Wh6PT9554S\n\
    16872          *wI/9yIjiqJlsHmU3h3FxjO5NRO9Qu+o9MeLAGAJs9M49NS0TiJYo1V7beyI5ju99\n\
    16873          *xs887ac5F/Axg3Pb4sX1Wo5xTB2Bw+bKMHj0Rk+9uDrGqsrPpX39R8CL0W/1ISU5\n\
    16874          *ioOvHBHeyw2PzqO4KbIXrvj0dihDBWc/SltS/4htXs4JL76rA7+Byj9AUVxrm2QK\n\
    16875          *gmsignOklllYUkLdIjLPyJy8tDUFTcR4oElWN+mGME4zl0x8mCaTaPf8niBw9hfI\n\
    16876          *Cymj\n\
    16877          *-----END CERTIFICATE-----\n",
    16878          *      "enableVerifyHost" : true,
    16879          *      "isSelfSigned" : true,
    16880          *      "accessCode" : "passCode1",
    16881          *      "onSuccess" : function() {
    16882          *          console.log("onSuccess");
    16883          *      },
    16884          *      "onFailure" : function(f) {
    16885          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    16886          *      }
    16887          * });
    16888          */
    16889         hcap.security.registerServerCertificate = function (param) {
    16890             hcap_command("register_server_certificate", param);
    16891         };
    16892         /**
    16893          * Registers a client certificate and its private key for TLS and SSL client authentication.<br>
    16894          * After registration, reboot is needed.<br>
    16895          * If a client certificate is registered, TV will try to authenticate to the HCAP server with the client certificate in the modules like HCAP middleware, Ez-i and HCAP browser in charge of downloads or loads of HCAP applications.<br>
    16896          * The client certificate to register can be a self-signed certificate or a trusted CA (Certificate Authority) certificate.<br>
    16897          * Only 1 client certificate is permitted in TV. Therefore to register a client certificate when another client certificate was registered, revoke(unregister) the registered client certificate first, and register the new client certificate. Or the registration for the new client certificate will be failed.<br>
    16898          * Please refer to the example code to create server/client self-signed certificates in <a href="hcap.security.html#.registerServerCertificate">hcap.security.registerServerCertificate()</a>
    16899          * And register client_x86Emul.crt, client_x86Emul.key and rootCA.crt to TV as the client certificate, the client private key and the CA certificate repectively in the example code and its server environment.<br>
    16900          * urlPattern and issuerCN are needed to match the HCAP app url and its client certificate automatically in HCAP browser.<br>
    16901          *
    16902          * @param {Object} param
    16903          * <ul>
    16904          *   <li>{String} param.nickname [Required] - nickname for this client certificate as 4 to 10-character string chosen from the set [a-zA-Z0-9].<br>
    16905          *   <li>{String} param.certificate [Required] - certificate string of the full contents in the client certificate file in the form of PEM (client_x86Emul.crt in above example).<br>
    16906          *   <li>{String} param.key [Required] - certificate string of the full contents in the client private key file in the form of PEM (client_x86Emul.key in above example).<br>
    16907          *   <li>{String} param.keyPassword [Required] - password string of the client private key ("passcode" in above example).<br>
    16908          *   <li>{String} param.cacert [Required] - certificate string of the full contents in the CA certificate file of the client certificate in the form of PEM (rootCA.crt in above example).<br>
    16909          *   <li>{String} param.urlPattern [Required] - url pattern string to specify sites for which HCAP browser automatically selects a client certificate if the site requests a certificate (ex. "https://jkcloud.lge.com").<br>
    16910          *   <li>{String} param.issuerCN [Required] - CommonName string of the issuer of the client certificate ("ROOT CA" in above example).<br>
    16911          *   <li>{Boolean} param.isSelfSigned [Required] - true if the client certificate is self-signed, otherwise false.<br>
    16912          *   <li>{String} param.accessCode [Required] - password as 4 to 10-character string chosen from the set [a-zA-Z0-9] to get whether this certificate is registered or not, or revoke this certificate in the future.<br>
    16913          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    16914          *   <pre class="code prettyprint">
    16915          *   param.onSuccess = function() {
    16916          *       // No Parameter.
    16917          *   }</pre>
    16918          *   </li>
    16919          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    16920          *   <pre class="code prettyprint">
    16921          *   param.onFailure = function (param) {
    16922          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    16923          *   }</pre>
    16924          *   </li>
    16925          * </ul>
    16926          *
    16927          * @since 1.20.0
    16928          *
    16929          * @see
    16930          * <a href="hcap.security.html#.registerServerCertificate">hcap.security.registerServerCertificate()</a><br>
    16931          * <a href="hcap.security.html#.unregisterServerCertificate">hcap.security.unregisterServerCertificate()</a><br>
    16932          * <a href="hcap.security.html#.unregisterClientCertificate">hcap.security.unregisterClientCertificate()</a><br>
    16933          * <a href="hcap.security.html#.existServerCertificate">hcap.security.existServerCertificate()</a><br>
    16934          * <a href="hcap.security.html#.existClientCertificate">hcap.security.existClientCertificate()</a><br>
    16935          *
    16936          * @example
    16937          * hcap.security.registerClientCertificate({
    16938          *      "nickname" : "testclient",
    16939          *      "certificate" : "\
    16940          *Certificate:\n\
    16941          *    Data:\n\
    16942          *        Version: 3 (0x2)\n\
    16943          *        Serial Number: 1 (0x1)\n\
    16944          *    Signature Algorithm: sha1WithRSAEncryption\n\
    16945          *        Issuer: C=KR, L=LGE, O=CTO CA, CN=ROOT CA\n\
    16946          *        Validity\n\
    16947          *            Not Before: Mar 21 06:53:26 2016 GMT\n\
    16948          *            Not After : Mar 19 06:53:26 2026 GMT\n\
    16949          *        Subject: C=KR, L=LGE, O=CTO, CN=x86Emul\n\
    16950          *        Subject Public Key Info:\n\
    16951          *            Public Key Algorithm: rsaEncryption\n\
    16952          *                Public-Key: (2048 bit)\n\
    16953          *                Modulus:\n\
    16954          *                    00:a2:e3:4d:39:47:6f:9c:bb:7e:fb:90:43:8a:29:\n\
    16955          *                    7f:3a:b2:4e:32:83:bd:1f:16:c1:0b:d2:cd:e7:22:\n\
    16956          *                    33:f3:19:41:ea:db:ec:0a:3d:e9:4c:00:8c:e2:8d:\n\
    16957          *                    57:d8:b0:12:af:50:66:df:6f:f5:65:d8:91:c0:a8:\n\
    16958          *                    f6:87:b7:fa:ed:7c:32:bf:25:d3:18:a3:bc:3b:f8:\n\
    16959          *                    0c:d5:bc:03:99:7d:c6:fd:72:d6:19:c7:3f:4c:7b:\n\
    16960          *                    8f:1a:d8:c3:b6:15:01:82:99:a8:2d:b0:79:36:86:\n\
    16961          *                    2a:cb:dc:43:a5:30:ab:fd:31:70:76:e4:01:67:73:\n\
    16962          *                    d9:bd:7a:20:d9:49:f4:11:61:de:b9:6b:80:d5:83:\n\
    16963          *                    5f:1b:e0:34:fa:af:3c:b9:26:84:1b:ca:16:a5:02:\n\
    16964          *                    be:f9:fa:bc:19:f1:84:a9:13:7b:32:04:68:ba:c3:\n\
    16965          *                    66:69:8a:b8:84:19:bf:15:72:df:37:68:83:cb:e5:\n\
    16966          *                    4b:e2:59:8c:4e:e0:42:3b:ea:a6:39:85:1e:ae:41:\n\
    16967          *                    c4:a6:17:06:a2:02:d6:c4:cb:53:0d:f7:2e:e7:28:\n\
    16968          *                    20:35:a7:3e:02:9c:38:68:1c:d6:18:c0:39:24:1d:\n\
    16969          *                    f2:96:c5:81:f1:c2:de:22:e0:d4:f0:02:72:9c:e8:\n\
    16970          *                    c1:d0:28:46:60:1e:6d:52:78:f4:48:94:80:9b:01:\n\
    16971          *                    dc:eb\n\
    16972          *                Exponent: 65537 (0x10001)\n\
    16973          *        X509v3 extensions:\n\
    16974          *            X509v3 Basic Constraints: \n\
    16975          *                CA:FALSE\n\
    16976          *            Netscape Comment: \n\
    16977          *                OpenSSL Generated Certificate\n\
    16978          *            X509v3 Subject Key Identifier: \n\
    16979          *                EE:1A:6C:59:3B:13:FA:32:A7:61:60:2A:6C:56:66:82:AB:21:CD:05\n\
    16980          *            X509v3 Authority Key Identifier: \n\
    16981          *                keyid:85:20:EF:03:87:EA:73:32:10:5D:B2:3B:92:42:4F:3C:66:65:6A:E0\n\
    16982          *\n\
    16983          *    Signature Algorithm: sha1WithRSAEncryption\n\
    16984          *         92:a7:bd:83:65:de:c9:bd:cb:57:c0:46:c0:16:e7:7e:0a:e6:\n\
    16985          *         67:96:ab:45:38:91:2a:6e:b8:5c:07:8a:58:0d:56:0b:79:e6:\n\
    16986          *         00:c4:0e:ce:86:ae:07:cb:69:bf:24:d9:69:fe:59:b6:31:b9:\n\
    16987          *         82:79:75:1a:64:41:45:2d:d9:83:c2:5b:f9:5c:80:1b:ea:1a:\n\
    16988          *         14:c7:5e:9e:f9:1e:7e:1c:fc:a3:55:1b:9a:df:cd:38:f7:e9:\n\
    16989          *         24:ac:ce:b0:91:93:a6:a8:45:99:c3:77:c8:e4:86:4c:8a:11:\n\
    16990          *         35:27:40:f4:71:d6:84:db:7b:26:a7:d3:6c:9d:e5:d0:d7:c2:\n\
    16991          *         96:dd:80:0f:99:24:0f:40:b1:65:d0:7f:87:4d:d3:36:b1:da:\n\
    16992          *         a7:45:08:5a:2f:59:d9:84:11:a9:c4:77:fe:54:36:5f:47:d1:\n\
    16993          *         3c:86:32:92:6d:04:77:61:51:4b:bf:17:88:0d:b0:26:41:12:\n\
    16994          *         11:4f:cd:1f:50:b1:38:0d:7b:7c:3c:de:52:97:e3:e3:12:57:\n\
    16995          *         6b:2a:7b:4d:ed:11:be:cd:7e:b8:e9:18:eb:78:b3:03:1f:87:\n\
    16996          *         8e:ea:fa:9b:da:ab:7b:1a:4a:ba:c3:e0:10:ed:c2:e6:05:22:\n\
    16997          *         97:cf:3d:96:77:b9:63:47:82:0a:d1:9c:fa:73:eb:05:e1:8e:\n\
    16998          *         43:d1:87:96\n\
    16999          *-----BEGIN CERTIFICATE-----\n\
    17000          *MIIDbzCCAlegAwIBAgIBATANBgkqhkiG9w0BAQUFADA+MQswCQYDVQQGEwJLUjEM\n\
    17001          *MAoGA1UEBwwDTEdFMQ8wDQYDVQQKDAZDVE8gQ0ExEDAOBgNVBAMMB1JPT1QgQ0Ew\n\
    17002          *HhcNMTYwMzIxMDY1MzI2WhcNMjYwMzE5MDY1MzI2WjA7MQswCQYDVQQGEwJLUjEM\n\
    17003          *MAoGA1UEBwwDTEdFMQwwCgYDVQQKDANDVE8xEDAOBgNVBAMMB3g4NkVtdWwwggEi\n\
    17004          *MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCi4005R2+cu377kEOKKX86sk4y\n\
    17005          *g70fFsEL0s3nIjPzGUHq2+wKPelMAIzijVfYsBKvUGbfb/Vl2JHAqPaHt/rtfDK/\n\
    17006          *JdMYo7w7+AzVvAOZfcb9ctYZxz9Me48a2MO2FQGCmagtsHk2hirL3EOlMKv9MXB2\n\
    17007          *5AFnc9m9eiDZSfQRYd65a4DVg18b4DT6rzy5JoQbyhalAr75+rwZ8YSpE3syBGi6\n\
    17008          *w2ZpiriEGb8Vct83aIPL5UviWYxO4EI76qY5hR6uQcSmFwaiAtbEy1MN9y7nKCA1\n\
    17009          *pz4CnDhoHNYYwDkkHfKWxYHxwt4i4NTwAnKc6MHQKEZgHm1SePRIlICbAdzrAgMB\n\
    17010          *AAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJh\n\
    17011          *dGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBTuGmxZOxP6MqdhYCpsVmaCqyHNBTAf\n\
    17012          *BgNVHSMEGDAWgBSFIO8Dh+pzMhBdsjuSQk88ZmVq4DANBgkqhkiG9w0BAQUFAAOC\n\
    17013          *AQEAkqe9g2Xeyb3LV8BGwBbnfgrmZ5arRTiRKm64XAeKWA1WC3nmAMQOzoauB8tp\n\
    17014          *vyTZaf5ZtjG5gnl1GmRBRS3Zg8Jb+VyAG+oaFMdenvkefhz8o1Ubmt/NOPfpJKzO\n\
    17015          *sJGTpqhFmcN3yOSGTIoRNSdA9HHWhNt7JqfTbJ3l0NfClt2AD5kkD0CxZdB/h03T\n\
    17016          *NrHap0UIWi9Z2YQRqcR3/lQ2X0fRPIYykm0Ed2FRS78XiA2wJkESEU/NH1CxOA17\n\
    17017          *fDzeUpfj4xJXayp7Te0Rvs1+uOkY63izAx+Hjur6m9qrexpKusPgEO3C5gUil889\n\
    17018          *lne5Y0eCCtGc+nPrBeGOQ9GHlg==\n\
    17019          *-----END CERTIFICATE-----\n",
    17020          *      "key" : "\
    17021          *-----BEGIN RSA PRIVATE KEY-----\n\
    17022          *MIIEowIBAAKCAQEAouNNOUdvnLt++5BDiil/OrJOMoO9HxbBC9LN5yIz8xlB6tvs\n\
    17023          *Cj3pTACM4o1X2LASr1Bm32/1ZdiRwKj2h7f67XwyvyXTGKO8O/gM1bwDmX3G/XLW\n\
    17024          *Gcc/THuPGtjDthUBgpmoLbB5NoYqy9xDpTCr/TFwduQBZ3PZvXog2Un0EWHeuWuA\n\
    17025          *1YNfG+A0+q88uSaEG8oWpQK++fq8GfGEqRN7MgRousNmaYq4hBm/FXLfN2iDy+VL\n\
    17026          *4lmMTuBCO+qmOYUerkHEphcGogLWxMtTDfcu5yggNac+Apw4aBzWGMA5JB3ylsWB\n\
    17027          *8cLeIuDU8AJynOjB0ChGYB5tUnj0SJSAmwHc6wIDAQABAoIBACWW9vdE+QjebAt5\n\
    17028          *21xC/014YHtf04EdKyejWkkAp6RuK7wbTHmAmBol9l1B6QfkeitjDpp5p9P9CoW/\n\
    17029          *eEURvCKaCsv52qFRB9t+/tdEMEB3ujg7DBWe2Yi46ulzJJcceeC9vQXuN8rRY4bw\n\
    17030          *KdwxQz+G7UFClOBe59zGFlaOrnhkE1HyWIsJc6SoVBhvcHsAu313KJ/yAdboBI70\n\
    17031          *PwUVyYxP7txF17PbK6yPEOq7o0q+KSBiOzxyH5qqsVmHqB2aMNO9SXRlr+ldjd7e\n\
    17032          *m3eIbeR8KmMiaq5toq+o+2LfgG9nYMQEUtHqPeEG2tvpmAu3jXUU4mxL+5XZfQA9\n\
    17033          *oRclCcECgYEA0APW+5lqtTg+Q4pVhHGe0uX4wpbMQkIbKBbVm9BwqSGsFtzeiV57\n\
    17034          *ffTFbY6rcVfElfqBSRi0FxDglYWbZgMYdi7G/qXJmoh6CJ/UY3IHGBLdvWfE3yPz\n\
    17035          *KZcPHyxRYZgTW9/BEgro/BcRY/7MKwnNryMUqW0mLm9UzmZM/p6UhVkCgYEAyHaE\n\
    17036          *S90R2Po/SAXsSjbahfnaKZ5Q/4M7zdnt+IgeaK0hFb1Qp0FP1EJeLb8rZeldlWrT\n\
    17037          *U9r0z0dwVrh1i4yTjG9DB8ipbkhLixt6P3eUunYkn+NEG9NZE7y/QiGrYjq6fRBw\n\
    17038          *lbZJiQYcSl7BFF2xF3j4ZzzMGktkSTKaW8lFt+MCgYEAqu4M0XBu0/0khOF+hjfL\n\
    17039          *V+frsxKxQ90IbbfdzYzJluF5hMv3/Y9rEMR7Gxy6WofRnaBcbpFjIvUWZyeD2569\n\
    17040          *khe8I3JeKKLvDHkx0InZtHmERminyOjEnq9nmKkVMooBlmRWRZo7ezMFclLkuJT0\n\
    17041          *tG6yQsrTLiMD4BsGN9BdoPkCgYBUEtC9eIQpuhqcPE+zeHoBwp4q4kkaQJHubb4O\n\
    17042          *hBgs0p+TnIic/Rlb7lHNYeXzogIrzle/TY9q94038bjqxBSFy4wTUactp4h3WRjW\n\
    17043          *UXLBGReXLxu7h9JOItUcCT71vafFGAX/5CnHHBb1YfQcdIb3TzbvJWJ8jK4MvPpc\n\
    17044          *EHf6/QKBgH/9uM9+GZvS2iXc2KzhB+oENyWM/kJbMlfefVUu2AaBAzDdVBTDvAxd\n\
    17045          *PZTdseH5K8DrVRJe8YcFnd86HE/B56PAmyP4Qo+Sslf5bc/Gmp08mMdYxWb1IwRm\n\
    17046          *ndWHoUiBaeMo5QB/Oac/0bBwlOt14PO+t7TWjKHQIHvfONNrXbui\n\
    17047          *-----END RSA PRIVATE KEY-----\n",
    17048          *      "keyPassword" : "passcode",
    17049          *      "cacert" : "\
    17050          *-----BEGIN CERTIFICATE-----\n\
    17051          *MIIDXzCCAkegAwIBAgIJALispfP+z4ZZMA0GCSqGSIb3DQEBBQUAMEYxCzAJBgNV\n\
    17052          *BAYTAktSMQwwCgYDVQQHDANMR0UxDzANBgNVBAoMBkNUTyBDQTEYMBYGA1UEAwwP\n\
    17053          *amtjbG91ZC5sZ2UuY29tMB4XDTE2MDMxNzAzMDUzMFoXDTI2MDMxNTAzMDUzMFow\n\
    17054          *RjELMAkGA1UEBhMCS1IxDDAKBgNVBAcMA0xHRTEPMA0GA1UECgwGQ1RPIENBMRgw\n\
    17055          *FgYDVQQDDA9qa2Nsb3VkLmxnZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw\n\
    17056          *ggEKAoIBAQCwdor7TwwIIuTI8HvOBx//cBlu+xE1L/9ZAWaIRivK/O/1Bv+jTxpx\n\
    17057          *5RN9RttmJle9QS8Tx6/Wf40REt9Lnc1fUCdVILSkTrcHY4Wcc5cqvt0Uz17kcaTJ\n\
    17058          *Q6Ch2wiyq2ZSj2vTQAhQfV0cpvwJTYKwXCSeL8M10KZqeU/41PITp/67MzCZF+BT\n\
    17059          *gTm60UTfrc/Owe8q2yn3di7wKiuEwP5WROGa/HkOrWJfkx0DjAlO79tZoUmyd4RH\n\
    17060          *C6R3ST8lbCMtttDd8JGHlCSVRf9NIQc71M88vgYY7Dh9POfCfhxkVA9/ws5h7aHt\n\
    17061          *t0vAqmRN6vgFhBPhmTUp+eoUl+3nf0aVAgMBAAGjUDBOMB0GA1UdDgQWBBQkXPyq\n\
    17062          *koD+LlrJgYRvkiqg5KDJJTAfBgNVHSMEGDAWgBQkXPyqkoD+LlrJgYRvkiqg5KDJ\n\
    17063          *JTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQCcK/JXi0aaQ1RiToTK\n\
    17064          *stYpMZjTtmiDqgpdHkhsU0H2EwVW46j4xaALzLoSWx4neREJS1KPJ4Wh6PT9554S\n\
    17065          *wI/9yIjiqJlsHmU3h3FxjO5NRO9Qu+o9MeLAGAJs9M49NS0TiJYo1V7beyI5ju99\n\
    17066          *xs887ac5F/Axg3Pb4sX1Wo5xTB2Bw+bKMHj0Rk+9uDrGqsrPpX39R8CL0W/1ISU5\n\
    17067          *ioOvHBHeyw2PzqO4KbIXrvj0dihDBWc/SltS/4htXs4JL76rA7+Byj9AUVxrm2QK\n\
    17068          *gmsignOklllYUkLdIjLPyJy8tDUFTcR4oElWN+mGME4zl0x8mCaTaPf8niBw9hfI\n\
    17069          *Cymj\n\
    17070          *-----END CERTIFICATE-----\n",
    17071          *      "urlPattern" : "https://jkcloud.lge.com",
    17072          *      "issuerCN" : "ROOT CA",
    17073          *      "isSelfSigned" : true,
    17074          *      "accessCode" : "passCode1",
    17075          *      "onSuccess" : function() {
    17076          *          console.log("onSuccess");
    17077          *      },
    17078          *      "onFailure" : function(f) {
    17079          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    17080          *      }
    17081          * });
    17082          */
    17083         hcap.security.registerClientCertificate = function (param) {
    17084             hcap_command("register_client_certificate", param);
    17085         };
    17086         /**
    17087          * Unregisters a server certificate and deactivate the TLS authentication and the host verification.<br>
    17088          *
    17089          * @param {Object} param
    17090          * <ul>
    17091          *   <li>{String} param.nickname [Required] - nickname for the server certificate to unregister.<br>
    17092          *   <li>{String} param.accessCode [Required] - password to be used for the registration of the server certificate before.<br>
    17093          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    17094          *   <pre class="code prettyprint">
    17095          *   param.onSuccess = function() {
    17096          *       // No Parameter.
    17097          *   }</pre>
    17098          *   </li>
    17099          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    17100          *   <pre class="code prettyprint">
    17101          *   param.onFailure = function (param) {
    17102          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    17103          *   }</pre>
    17104          *   </li>
    17105          * </ul>
    17106          *
    17107          * @since 1.20.0
    17108          *
    17109          * @see
    17110          * <a href="hcap.security.html#.registerServerCertificate">hcap.security.registerServerCertificate()</a><br>
    17111          * <a href="hcap.security.html#.registerClientCertificate">hcap.security.registerClientCertificate()</a><br>
    17112          * <a href="hcap.security.html#.unregisterClientCertificate">hcap.security.unregisterClientCertificate()</a><br>
    17113          * <a href="hcap.security.html#.existServerCertificate">hcap.security.existServerCertificate()</a><br>
    17114          * <a href="hcap.security.html#.existClientCertificate">hcap.security.existClientCertificate()</a><br>
    17115          *
    17116          * @example
    17117          * hcap.security.unregisterServerCertificate({
    17118          *      "nickname" : "testserver",
    17119          *      "accessCode" : "passCode1",
    17120          *      "onSuccess" : function() {
    17121          *          console.log("onSuccess");
    17122          *      },
    17123          *      "onFailure" : function(f) {
    17124          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    17125          *      }
    17126          * });
    17127          */
    17128         hcap.security.unregisterServerCertificate = function (param) {
    17129             hcap_command("unregister_server_certificate", param);
    17130         };
    17131         /**
    17132          * Unregisters a client certificate and its private key, and deactivate the TLS authentication.<br>
    17133          *
    17134          * @param {Object} param
    17135          * <ul>
    17136          *   <li>{String} param.nickname [Required] - nickname for the client certificate to unregister.<br>
    17137          *   <li>{String} param.accessCode [Required] - password to be used for the registration of the client certificate before.<br>
    17138          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    17139          *   <pre class="code prettyprint">
    17140          *   param.onSuccess = function() {
    17141          *       // No Parameter.
    17142          *   }</pre>
    17143          *   </li>
    17144          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    17145          *   <pre class="code prettyprint">
    17146          *   param.onFailure = function (param) {
    17147          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    17148          *   }</pre>
    17149          *   </li>
    17150          * </ul>
    17151          *
    17152          * @since 1.20.0
    17153          *
    17154          * @see
    17155          * <a href="hcap.security.html#.registerServerCertificate">hcap.security.registerServerCertificate()</a><br>
    17156          * <a href="hcap.security.html#.registerClientCertificate">hcap.security.registerClientCertificate()</a><br>
    17157          * <a href="hcap.security.html#.unregisterServerCertificate">hcap.security.unregisterServerCertificate()</a><br>
    17158          * <a href="hcap.security.html#.existServerCertificate">hcap.security.existServerCertificate()</a><br>
    17159          * <a href="hcap.security.html#.existClientCertificate">hcap.security.existClientCertificate()</a><br>
    17160          *
    17161          * @example
    17162          * hcap.security.unregisterClientCertificate({
    17163          *      "nickname" : "testclient",
    17164          *      "accessCode" : "passCode1",
    17165          *      "onSuccess" : function() {
    17166          *          console.log("onSuccess");
    17167          *      },
    17168          *      "onFailure" : function(f) {
    17169          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    17170          *      }
    17171          * });
    17172          */
    17173         hcap.security.unregisterClientCertificate = function (param) {
    17174             hcap_command("unregister_client_certificate", param);
    17175         };
    17176         /**
    17177          * Returns whether a server certificate was registered or not.<br>
    17178          *
    17179          * @param {Object} param
    17180          * <ul>
    17181          *   <li>{String} param.nickname [Required] - nickname for the server certificate.<br>
    17182          *   <li>{String} param.accessCode [Required] - password to be used for the registration of the server certificate before.<br>
    17183          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    17184          *   <pre class="code prettyprint">
    17185          *   param.onSuccess = function (param) {
    17186          *       // {String} param.nickname - nickname for the server certificate.
    17187          *       // {Boolean} param.exist - true if the server certificate was registered.
    17188          *   }</pre>
    17189          *   </li>
    17190          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    17191          *   <pre class="code prettyprint">
    17192          *   param.onFailure = function (param) {
    17193          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    17194          *   }</pre>
    17195          *   </li>
    17196          * </ul>
    17197          *
    17198          * @since 1.20.0
    17199          *
    17200          * @see
    17201          * <a href="hcap.security.html#.registerServerCertificate">hcap.security.registerServerCertificate()</a><br>
    17202          * <a href="hcap.security.html#.registerClientCertificate">hcap.security.registerClientCertificate()</a><br>
    17203          * <a href="hcap.security.html#.unregisterServerCertificate">hcap.security.unregisterServerCertificate()</a><br>
    17204          * <a href="hcap.security.html#.unregisterClientCertificate">hcap.security.unregisterClientCertificate()</a><br>
    17205          * <a href="hcap.security.html#.existClientCertificate">hcap.security.existClientCertificate()</a><br>
    17206          *
    17207          * @example
    17208          * hcap.security.existServerCertificate({
    17209          *      "nickname" : "testserver",
    17210          *      "accessCode" : "passCode1",
    17211          *      "onSuccess" : function() {
    17212          *          console.log("onSuccess");
    17213          *      },
    17214          *      "onFailure" : function(f) {
    17215          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    17216          *      }
    17217          * });
    17218          */
    17219         hcap.security.existServerCertificate = function (param) {
    17220             hcap_command("exist_server_certificate", param);
    17221         };
    17222         /**
    17223          * Returns whether a client certificate was registered or not.<br>
    17224          *
    17225          * @param {Object} param
    17226          * <ul>
    17227          *   <li>{String} param.nickname [Required] - nickname for the client certificate.<br>
    17228          *   <li>{String} param.accessCode [Required] - password to be used for the registration of the client certificate before.<br>
    17229          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    17230          *   <pre class="code prettyprint">
    17231          *   param.onSuccess = function (param) {
    17232          *       // {String} param.nickname - nickname for the client certificate.
    17233          *       // {Boolean} param.exist - true if the client certificate was registered.
    17234          *   }</pre>
    17235          *   </li>
    17236          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    17237          *   <pre class="code prettyprint">
    17238          *   param.onFailure = function (param) {
    17239          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    17240          *   }</pre>
    17241          *   </li>
    17242          * </ul>
    17243          *
    17244          * @since 1.20.0
    17245          *
    17246          * @see
    17247          * <a href="hcap.security.html#.registerServerCertificate">hcap.security.registerServerCertificate()</a><br>
    17248          * <a href="hcap.security.html#.registerClientCertificate">hcap.security.registerClientCertificate()</a><br>
    17249          * <a href="hcap.security.html#.unregisterServerCertificate">hcap.security.unregisterServerCertificate()</a><br>
    17250          * <a href="hcap.security.html#.unregisterClientCertificate">hcap.security.unregisterClientCertificate()</a><br>
    17251          * <a href="hcap.security.html#.existServerCertificate">hcap.security.existServerCertificate()</a><br>
    17252          *
    17253          * @example
    17254          * hcap.security.existClientCertificate({
    17255          *      "nickname" : "testclient",
    17256          *      "accessCode" : "passCode1",
    17257          *      "onSuccess" : function() {
    17258          *          console.log("onSuccess");
    17259          *      },
    17260          *      "onFailure" : function(f) {
    17261          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    17262          *      }
    17263          * });
    17264          */
    17265         hcap.security.existClientCertificate = function (param) {
    17266             hcap_command("exist_client_certificate", param);
    17267         };
    17268         /**
    17269          * @namespace hcap.iot
    17270          */
    17271         hcap.iot = { };
    17272         /**
    17273          * Requests to set the bridge status.<br>
    17274          * If the bridge status is changed, <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a> will be delivered.<br>
    17275          * In "scan" mode, a bridge can terminate the "scan" mode and change to "normal" mode by the timeout (the timeout is different binding by binding).<br>
    17276          *
    17277          * @param {Object} param
    17278          * <ul>
    17279          *   <li>{String} param.bridgeUid [Required] - bridge UID.<br>
    17280          *   <li>{String} param.status [Required] - "scan" for scan status, "normal" for normal (non-scan) status.<br>
    17281          *   <li>{Function} param.onSuccess [Optional] - success callback function. Request for the same status returns <i>onSuccess</i> and it has no effect.
    17282          *   <pre class="code prettyprint">
    17283          *   param.onSuccess = function () {
    17284          *       // No Parameter.
    17285          *   }</pre>
    17286          *   </li>
    17287          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    17288          *   <pre class="code prettyprint">
    17289          *   param.onFailure = function (param) {
    17290          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    17291          *   }</pre>
    17292          *   </li>
    17293          * </ul>
    17294          *
    17295          * @since 1.22.2
    17296          *
    17297          * @see
    17298          * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    17299          * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    17300          * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
    17301          * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
    17302          * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
    17303          * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
    17304          * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
    17305          * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
    17306          * <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a><br>
    17307          * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
    17308          * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
    17309          * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
    17310          * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
    17311          * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
    17312          * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
    17313          * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
    17314          * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
    17315          * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
    17316          * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
    17317          * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
    17318          * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
    17319          * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
    17320          *
    17321          * @example
    17322          * hcap.iot.getThingList({
    17323          *      "thingType": "ThingBridge",
    17324          *      "onSuccess": function(s) {
    17325          *          console.log("getThingList onSuccess");
    17326          *          hcap.iot.requestSetBridgeStatus({
    17327          *              "bridgeUid": s.thingList[0].thingUid,
    17328          *              "status": "scan",
    17329          *              "onSuccess": function() {
    17330          *                  console.log("requestSetBridgeStatus onSuccess");
    17331          *              },
    17332          *              "onFailure": function(sf) {
    17333          *                  console.log("requestSetBridgeStatus onFailure : errorMessage = " + sf.errorMessage);
    17334          *              }
    17335          *          });
    17336          *      },
    17337          *      "onFailure" : function(f) {
    17338          *          console.log("getThingList onFailure : errorMessage = " + f.errorMessage);
    17339          *      }
    17340          * });
    17341          */
    17342         hcap.iot.requestSetBridgeStatus = function (param) {
    17343             hcap_command("iot_request_set_bridge_status", param);
    17344         };
    17345         /**
    17346          * Gets the bridge status.<br>
    17347          *
    17348          * @param {Object} param
    17349          * <ul>
    17350          *   <li>{String} param.bridgeUid [Required] - bridge UID.<br>
    17351          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    17352          *   <pre class="code prettyprint">
    17353          *   param.onSuccess = function (param) {
    17354          *       // {String} param.status - "scan" for scan status, "normal" for normal (non-scan) status.
    17355          *   }</pre>
    17356          *   </li>
    17357          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    17358          *   <pre class="code prettyprint">
    17359          *   param.onFailure = function (param) {
    17360          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    17361          *   }</pre>
    17362          *   </li>
    17363          * </ul>
    17364          *
    17365          * @since 1.22.2
    17366          *
    17367          * @see
    17368          * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    17369          * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    17370          * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
    17371          * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
    17372          * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
    17373          * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
    17374          * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
    17375          * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
    17376          * <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a><br>
    17377          * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
    17378          * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
    17379          * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
    17380          * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
    17381          * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
    17382          * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
    17383          * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
    17384          * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
    17385          * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
    17386          * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
    17387          * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
    17388          * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
    17389          * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
    17390          * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
    17391          *
    17392          * @example
    17393          * hcap.iot.getBridgeStatus({
    17394          *      "bridgeUid": "Zigbee:ZHA",
    17395          *      "onSuccess": function(s) {
    17396          *          console.log("getBridgeStatus onSuccess : status = " + s.status);
    17397          *      },
    17398          *      "onFailure" : function(f) {
    17399          *          console.log("getBridgeStatus onFailure : errorMessage = " + f.errorMessage);
    17400          *      }
    17401          * });
    17402          */
    17403         hcap.iot.getBridgeStatus = function (param) {
    17404             hcap_command("iot_get_bridge_status", param);
    17405         };
    17406         /**
    17407          * Requests registration for a discovered thing.<br>
    17408          * If the discovered thing is registered, <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a> will be delivered and <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a> may also be delivered subsequently.<br>
    17409          *
    17410          * @param {Object} param
    17411          * <ul>
    17412          *   <li>{String} param.thingUid [Required] - UID of the discovered thing to register.<br>
    17413          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    17414          *   <pre class="code prettyprint">
    17415          *   param.onSuccess = function () {
    17416          *       // No Parameter.
    17417          *   }</pre>
    17418          *   </li>
    17419          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    17420          *   <pre class="code prettyprint">
    17421          *   param.onFailure = function (param) {
    17422          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    17423          *   }</pre>
    17424          *   </li>
    17425          * </ul>
    17426          *
    17427          * @since 1.22.2
    17428          *
    17429          * @see
    17430          * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    17431          * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    17432          * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
    17433          * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
    17434          * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
    17435          * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
    17436          * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
    17437          * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
    17438          * <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a><br>
    17439          * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
    17440          * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
    17441          * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
    17442          * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
    17443          * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
    17444          * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
    17445          * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
    17446          * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
    17447          * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
    17448          * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
    17449          * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
    17450          * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
    17451          * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
    17452          * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
    17453          *
    17454          * @example
    17455          * document.addEventListener(
    17456          *      "iot_thing_discovered",
    17457          *      function (param) {
    17458          *          // {String} param.bindingId - binding ID.
    17459          *          // {String} param.thingUid : thing UID.
    17460          *          console.log(
    17461          *              "Event 'iot_thing_discovered' is received.\n" +
    17462          *              "bindingId = " + param.bindingId + "\n" +
    17463          *              "thingUid = " + param.thingUid
    17464          *          );
    17465          *          hcap.iot.requestRegisterThing({
    17466          *              "thingUid": param.thingUid,
    17467          *              "onSuccess": function() {
    17468          *                  console.log("requestRegisterThing onSuccess");
    17469          *              },
    17470          *              "onFailure": function(f) {
    17471          *                  console.log("requestRegisterThing onFailure : errorMessage = " + f.errorMessage);
    17472          *              }
    17473          *          });
    17474          *      },
    17475          *      false
    17476          * );
    17477          */
    17478         hcap.iot.requestRegisterThing = function (param) {
    17479             hcap_command("iot_request_register_thing", param);
    17480         };
    17481         /**
    17482          * Requests a reject to register a discovered thing.<br>
    17483          * If the discovered thing is rejected to register, <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a> will be delivered.<br>
    17484          *
    17485          * @param {Object} param
    17486          * <ul>
    17487          *   <li>{String} param.thingUid [Required] - UID of the discovered thing to reject.<br>
    17488          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    17489          *   <pre class="code prettyprint">
    17490          *   param.onSuccess = function () {
    17491          *       // No Parameter.
    17492          *   }</pre>
    17493          *   </li>
    17494          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    17495          *   <pre class="code prettyprint">
    17496          *   param.onFailure = function (param) {
    17497          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    17498          *   }</pre>
    17499          *   </li>
    17500          * </ul>
    17501          *
    17502          * @since 1.22.2
    17503          *
    17504          * @see
    17505          * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    17506          * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    17507          * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
    17508          * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
    17509          * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
    17510          * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
    17511          * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
    17512          * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
    17513          * <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a><br>
    17514          * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
    17515          * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
    17516          * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
    17517          * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
    17518          * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
    17519          * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
    17520          * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
    17521          * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
    17522          * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
    17523          * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
    17524          * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
    17525          * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
    17526          * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
    17527          * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
    17528          *
    17529          * @example
    17530          * hcap.iot.requestRejectThing({
    17531          *     "thingUid": "Zigbee:01EC789805006F0D00",
    17532          *     "onSuccess": function() {
    17533          *         console.log("requestRejectThing onSuccess");
    17534          *     },
    17535          *     "onFailure": function(f) {
    17536          *         console.log("requestRejectThing onFailure : errorMessage = " + f.errorMessage);
    17537          *     }
    17538          * });
    17539          */
    17540         hcap.iot.requestRejectThing = function (param) {
    17541             hcap_command("iot_request_reject_thing", param);
    17542         };
    17543         /**
    17544          * Gets cached information for registered things.<br>
    17545          * Each parameter works as a filter for result things list.<br>
    17546          * If several parameters are given, only the highest priority parameter will be effective. Priorities among parameters are (HIGH) > <i>thingUidList</i> > <i>thingTypeId</i> > (LOW).<br>
    17547          * If no parameter is given, it's same as no filter, therefore all things list will be returned.<br>
    17548          *
    17549          * @param {Object} param
    17550          * <ul>
    17551          *   <li>{Array} param.thingUidList [Required] - thing UID list as an array of a string thingUids like [|thingUid-0|, |thingUid-1|, ..., |thingUid-n|] while |thingUid-n| is a string of thing UID.<br>
    17552          *   <li>{String} param.thingType [Optional] - |ThingType|, thing type. <b><i>ThingBridge</i></b> for bridges. <b><i>ThingDiscovered</i></b> for discovered things.<br>
    17553          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    17554          *   <pre class="code prettyprint">
    17555          *   param.onSuccess = function (s) {
    17556          *       // {Array} s.thingList - information for things as a type of json array as of [|thing-0|, |thing-1|, ..., |thing-n|]
    17557          *       //   |thing-n| - json object for a thing
    17558          *       //     {
    17559          *       //       "bindingId": |string|, // binding ID
    17560          *       //       "thingUid" : |string|, //thing UID
    17561          *       //       "thingId" : |string|, // thing ID
    17562          *       //       "thingType" : |ThingType|, //thing type
    17563          *       //       "thingMetaData" : |ThingMetaData|, // thing meta data
    17564          *       //       "thingComponentList": [|thingComponentList-0|, |thingComponentList-1|, ..., |thingComponentList-n|], // component list of the thing
    17565          *       //     }
    17566          *       //   |thingComponentList-n| - json object for a component
    17567          *       //     {
    17568          *       //       "parentThingUid": |string|, // parent thing UID of the component
    17569          *       //       "componentType": |string|, // component type
    17570          *       //       "componentId": |string|, // component ID
    17571          *       //       "componentValueType": |string|, // component value type
    17572          *       //       "componentValue": |ComponentValue|, // component value
    17573          *       //       "componentGettable": |boolean|, // true:component is gettable, false:component is not gettable
    17574          *       //       "componentSettable": |boolean|, // true:component is settable, false:component is not settable
    17575          *       //     }
    17576          *       //   |ComponentValue| - json object for a component value
    17577          *       //     {
    17578          *       //       "valueType": |string|, // "Unknown", "String", "Boolean", "Variables", "Double", "Float", "Int8", "Int16", "Int32", "Int64", "UInt8", "UInt16", "UInt32", "UInt64"
    17579          *       //       "value": |string|, // value
    17580          *       //       "additionalValue": |string|, //custom additional value as a string
    17581          *       //     }
    17582          *   }</pre>
    17583          *   </li>
    17584          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    17585          *   <pre class="code prettyprint">
    17586          *   param.onFailure = function (param) {
    17587          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    17588          *   }</pre>
    17589          *   </li>
    17590          * </ul>
    17591          *
    17592          * @since 1.22.2
    17593          *
    17594          * @see
    17595          * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    17596          * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    17597          * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
    17598          * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
    17599          * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
    17600          * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
    17601          * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
    17602          * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
    17603          * <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a><br>
    17604          * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
    17605          * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
    17606          * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
    17607          * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
    17608          * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
    17609          * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
    17610          * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
    17611          * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
    17612          * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
    17613          * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
    17614          * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
    17615          * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
    17616          * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
    17617          * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
    17618          *
    17619          * @example
    17620          * hcap.iot.getThingList({
    17621          *      "onSuccess": function(s) {
    17622          *          console.log("getThingList onSuccess : valueType of the first component of the first thing = " + s.thingList[0].thingComponentList[0].componentValue.valueType);
    17623          *      },
    17624          *      "onFailure" : function(f) {
    17625          *          console.log("getThingList onFailure : errorMessage = " + f.errorMessage);
    17626          *      }
    17627          * });
    17628          */
    17629         hcap.iot.getThingList = function (param) {
    17630             hcap_command("iot_get_thing_list", param);
    17631         };
    17632         /**
    17633          * Gets the binding ID list.<br>
    17634          *
    17635          * @param {Object} param
    17636          * <ul>
    17637          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    17638          *   <pre class="code prettyprint">
    17639          *   param.onSuccess = function (s) {
    17640          *       // {Array} s.bindingIdList - binding ID list when returnValue is true.
    17641          *   }</pre>
    17642          *   </li>
    17643          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    17644          *   <pre class="code prettyprint">
    17645          *   param.onFailure = function (param) {
    17646          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    17647          *   }</pre>
    17648          *   </li>
    17649          * </ul>
    17650          *
    17651          * @since 1.22.2
    17652          *
    17653          * @see
    17654          * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    17655          * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    17656          * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
    17657          * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
    17658          * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
    17659          * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
    17660          * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
    17661          * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
    17662          * <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a><br>
    17663          * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
    17664          * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
    17665          * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
    17666          * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
    17667          * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
    17668          * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
    17669          * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
    17670          * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
    17671          * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
    17672          * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
    17673          * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
    17674          * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
    17675          * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
    17676          * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
    17677          *
    17678          * @example
    17679          * hcap.iot.getBindingIdList({
    17680          *      "onSuccess": function(s) {
    17681          *          console.log("getBindingIdList onSuccess : bindingIdList = " + JSON.stringify(s.bindingIdList));
    17682          *      },
    17683          *      "onFailure" : function(f) {
    17684          *          console.log("getBindingIdList onFailure : errorMessage = " + f.errorMessage);
    17685          *      }
    17686          * });
    17687          */
    17688         hcap.iot.getBindingIdList = function (param) {
    17689             hcap_command("iot_get_binding_id_list", param);
    17690         };
    17691         /**
    17692          * Requests to set the component value.<br>
    17693          * If this call is succeeded or failed, <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a> will be delivered.<br>
    17694          * If the component value is changed, <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a> will be delivered.<br>
    17695          *
    17696          * @param {Object} param
    17697          * <ul>
    17698          *   <li>{String} param.thingUid [Required] - thing UID.<br>
    17699          *   <li>{String} param.componentId [Required] - component ID.<br>
    17700          *   <li>{Object} param.componentValue [Required] - |ComponentValue|. component value to set.<br>
    17701          *   <pre class="code prettyprint">
    17702          *       // {Object} |ComponentValue| - json object for a variable
    17703          *       //     {
    17704          *       //       "valueType": |string|, // "Unknown", "String", "Boolean", "Variables", "Double", "Float", "Int8", "Int16", "Int32", "Int64", "UInt8", "UInt16", "UInt32", "UInt64"
    17705          *       //       "value": |string|, // value
    17706          *       //       "additionalValue": |string|, //custom additional value as a string
    17707          *       //     }</pre>
    17708          *   <li>{String} param.callId [Required] - callId which will be delivered for the result identification of this call via <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a>.<br>
    17709          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    17710          *   <pre class="code prettyprint">
    17711          *   param.onSuccess = function () {
    17712          *       // No Parameter.
    17713          *   }</pre>
    17714          *   </li>
    17715          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    17716          *   <pre class="code prettyprint">
    17717          *   param.onFailure = function (param) {
    17718          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    17719          *   }</pre>
    17720          *   </li>
    17721          * </ul>
    17722          *
    17723          * @since 1.22.2
    17724          *
    17725          * @see
    17726          * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    17727          * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    17728          * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
    17729          * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
    17730          * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
    17731          * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
    17732          * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
    17733          * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
    17734          * <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a><br>
    17735          * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
    17736          * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
    17737          * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
    17738          * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
    17739          * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
    17740          * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
    17741          * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
    17742          * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
    17743          * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
    17744          * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
    17745          * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
    17746          * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
    17747          * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
    17748          * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
    17749          *
    17750          * @example
    17751          * hcap.iot.requestSetComponent({
    17752          *      "thingUid": "Zigbee:01EC789805006F0D00",
    17753          *      "componentId": "Dimming",
    17754          *      "componentValue": {
    17755          *          "additionalVlaue":"",
    17756          *          "valueType": "Double",
    17757          *          "value": "60"
    17758          *      },
    17759          *      "callId": "7",
    17760          *      "onSuccess": function() {
    17761          *          console.log("requestSetComponent onSuccess");
    17762          *      },
    17763          *      "onFailure" : function(f) {
    17764          *          console.log("requestSetComponent onFailure : errorMessage = " + f.errorMessage);
    17765          *      }
    17766          * });
    17767          */
    17768         hcap.iot.requestSetComponent = function (param) {
    17769             hcap_command("iot_request_set_component", param);
    17770         };
    17771         /**
    17772          * Requests to unregister a thing.<br>
    17773          * If a thing is unregistered, <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a> will be delivered.<br>
    17774          *
    17775          * @param {Object} param
    17776          * <ul>
    17777          *   <li>{String} param.thingUid [Required] - thing UID to unregister.<br>
    17778          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    17779          *   <pre class="code prettyprint">
    17780          *   param.onSuccess = function () {
    17781          *       // No Parameter.
    17782          *   }</pre>
    17783          *   </li>
    17784          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    17785          *   <pre class="code prettyprint">
    17786          *   param.onFailure = function (param) {
    17787          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    17788          *   }</pre>
    17789          *   </li>
    17790          * </ul>
    17791          *
    17792          * @since 1.22.2
    17793          *
    17794          * @see
    17795          * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    17796          * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    17797          * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
    17798          * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
    17799          * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
    17800          * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
    17801          * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
    17802          * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
    17803          * <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a><br>
    17804          * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
    17805          * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
    17806          * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
    17807          * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
    17808          * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
    17809          * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
    17810          * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
    17811          * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
    17812          * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
    17813          * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
    17814          * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
    17815          * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
    17816          * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
    17817          * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
    17818          *
    17819          * @example
    17820          * hcap.iot.requestUnregisterThing({
    17821          *      "thingUid": "Zigbee:01EC789805006F0D00",
    17822          *      "onSuccess": function() {
    17823          *          console.log("requestUnregisterThing onSuccess");
    17824          *      },
    17825          *      "onFailure" : function(f) {
    17826          *          console.log("requestUnregisterThing onFailure : errorMessage = " + f.errorMessage);
    17827          *      }
    17828          * });
    17829          */
    17830         hcap.iot.requestUnregisterThing = function (param) {
    17831             hcap_command("iot_request_unregister_thing", param);
    17832         };
    17833         /**
    17834          * Set the nickname of a thing.<br>
    17835          * The change of the nickname of a thing causes <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a>.<br>
    17836          *
    17837          * @param {Object} param
    17838          * <ul>
    17839          *   <li>{String} param.thingUid [Required] - thing UID to remove.<br>
    17840          *   <li>{String} param.nickname [Required] - nickname.<br>
    17841          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    17842          *   <pre class="code prettyprint">
    17843          *   param.onSuccess = function () {
    17844          *       // No Parameter.
    17845          *   }</pre>
    17846          *   </li>
    17847          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    17848          *   <pre class="code prettyprint">
    17849          *   param.onFailure = function (param) {
    17850          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    17851          *   }</pre>
    17852          *   </li>
    17853          * </ul>
    17854          *
    17855          * @since 1.22.2
    17856          *
    17857          * @see
    17858          * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    17859          * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    17860          * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
    17861          * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
    17862          * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
    17863          * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
    17864          * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
    17865          * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
    17866          * <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a><br>
    17867          * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
    17868          * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
    17869          * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
    17870          * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
    17871          * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
    17872          * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
    17873          * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
    17874          * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
    17875          * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
    17876          * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
    17877          * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
    17878          * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
    17879          * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
    17880          * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
    17881          *
    17882          * @example
    17883          * hcap.iot.setThingNickname({
    17884          *      "thingUid": "Zigbee:01EC789805006F0D00",
    17885          *      "nickname": "NewNickname",
    17886          *      "onSuccess": function() {
    17887          *          console.log("setThingNickname onSuccess");
    17888          *      },
    17889          *      "onFailure" : function(f) {
    17890          *          console.log("setThingNickname onFailure : errorMessage = " + f.errorMessage);
    17891          *      }
    17892          * });
    17893          */
    17894         hcap.iot.setThingNickname = function (param) {
    17895             hcap_command("iot_set_thing_nickname", param);
    17896         };
    17897         /**
    17898          * Requests to synchronize components values of an IoT thing between components values in TV's cache and them in the thing.<br>
    17899          * This request is a trigger to update components between TV and the thing.<br>
    17900          * Therefore if the thing is not reached by the reason like thing's sleep, it will be failed to synchronize components.<br>
    17901          * If the request for a component update is reached to the thing, <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a> will be delivered.<br>
    17902          *
    17903          * @param {Object} param
    17904          * <ul>
    17905          *   <li>{String} param.thingUid [Required] - thing UID to synchronize.<br>
    17906          *   <li>{String} param.componentId [Optional] - component ID to synchronize. If <i>componentId</i> is not defined, all components of the thing will be requested to synchronize.<br>
    17907          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    17908          *   <pre class="code prettyprint">
    17909          *   param.onSuccess = function () {
    17910          *       // No Parameter.
    17911          *   }</pre>
    17912          *   </li>
    17913          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    17914          *   <pre class="code prettyprint">
    17915          *   param.onFailure = function (param) {
    17916          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    17917          *   }</pre>
    17918          *   </li>
    17919          * </ul>
    17920          *
    17921          * @since 1.22.2
    17922          *
    17923          * @see
    17924          * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    17925          * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    17926          * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
    17927          * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
    17928          * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
    17929          * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
    17930          * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
    17931          * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
    17932          * <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a><br>
    17933          * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
    17934          * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
    17935          * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
    17936          * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
    17937          * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
    17938          * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
    17939          * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
    17940          * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
    17941          * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
    17942          * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
    17943          * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
    17944          * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
    17945          * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
    17946          * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
    17947          *
    17948          * @example
    17949          * hcap.iot.requestSynchronizeThing({
    17950          *      "thingUid": "Zigbee:01EC789805006F0D00",
    17951          *      "onSuccess": function() {
    17952          *          console.log("requestSynchronizeThing onSuccess");
    17953          *      },
    17954          *      "onFailure" : function(f) {
    17955          *          console.log("requestSynchronizeThing onFailure : errorMessage = " + f.errorMessage);
    17956          *      }
    17957          * });
    17958          */
    17959         hcap.iot.requestSynchronizeThing = function (param) {
    17960             hcap_command("iot_request_synchronize_thing", param);
    17961         };
    17962         /**
    17963          * Gets the IoT framework status.<br>
    17964          *
    17965          * @param {Object} param
    17966          * <ul>
    17967          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    17968          *   <pre class="code prettyprint">
    17969          *   param.onSuccess = function (param) {
    17970          *       // {String} param.status - "off" : framework is off, "initializing" : framework is initializing, "ready" : framework is ready.
    17971          *   }</pre>
    17972          *   </li>
    17973          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    17974          *   <pre class="code prettyprint">
    17975          *   param.onFailure = function (param) {
    17976          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    17977          *   }</pre>
    17978          *   </li>
    17979          * </ul>
    17980          *
    17981          * @since 1.22.2
    17982          *
    17983          * @see
    17984          * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    17985          * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    17986          * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
    17987          * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
    17988          * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
    17989          * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
    17990          * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
    17991          * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
    17992          * <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a><br>
    17993          * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
    17994          * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
    17995          * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
    17996          * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
    17997          * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
    17998          * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
    17999          * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
    18000          * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
    18001          * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
    18002          * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
    18003          * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
    18004          * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
    18005          * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
    18006          * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
    18007          *
    18008          * @example
    18009          * hcap.iot.getFrameworkStatus({
    18010          *      "onSuccess": function(s) {
    18011          *          console.log("getFrameworkStatus onSuccess : status = " + s.status);
    18012          *      },
    18013          *      "onFailure" : function(f) {
    18014          *          console.log("getFrameworkStatus onFailure : errorMessage = " + f.errorMessage);
    18015          *      }
    18016          * });
    18017          */
    18018         hcap.iot.getFrameworkStatus = function (param) {
    18019             hcap_command("iot_get_framework_status", param);
    18020         };
    18021         /**
    18022          * Request to do factory reset for core DB and binding DBs.<br>
    18023          * If factory reset is successful,  <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a> will be delivered.<br>
    18024          *
    18025          * @param {Object} param
    18026          * <ul>
    18027          *   <li>{Array} param.bindingIdList [Required] - binding ID list to do factory reset.<br> If bindingIdList is undefined, core and all bindings will remove DB file.<br>
    18028          *                                                If bindingIdList is defined, the bindings in bindingIdList will remove DB files, and core will remove bindings in binidngIdList and their information in core DB but core will not remove core DB file.<br>
    18029          *                                                For core or bindings to delete its DB file, its factory reset result will be included in factoryResetResultList of IoT event <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received<br>
    18030          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    18031          *   <pre class="code prettyprint">
    18032          *   param.onSuccess = function (param) {
    18033          *       // No parameter.
    18034          *   }</pre>
    18035          *   </li>
    18036          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    18037          *   <pre class="code prettyprint">
    18038          *   param.onFailure = function (param) {
    18039          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    18040          *   }</pre>
    18041          *   </li>
    18042          * </ul>
    18043          *
    18044          * @since 1.22.2
    18045          *
    18046          * @see
    18047          * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    18048          * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    18049          * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
    18050          * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
    18051          * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
    18052          * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
    18053          * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
    18054          * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
    18055          * <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a><br>
    18056          * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
    18057          * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
    18058          * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
    18059          * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
    18060          * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
    18061          * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
    18062          * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
    18063          * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
    18064          * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
    18065          * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
    18066          * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
    18067          * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
    18068          * <a href="hcap.iot.html#.getVersions">hcap.iot.getVersions()</a><br>
    18069          *
    18070          * @example
    18071          * hcap.iot.requestFactoryReset({
    18072          *      "onSuccess": function(s) {
    18073          *          console.log("requestFactoryReset onSuccess");
    18074          *      },
    18075          *      "onFailure" : function(f) {
    18076          *          console.log("requestFactoryReset onFailure : errorMessage = " + f.errorMessage);
    18077          *      }
    18078          * });
    18079          */
    18080         hcap.iot.requestFactoryReset = function (param) {
    18081             hcap_command("iot_request_factory_reset", param);
    18082         };
    18083         /**
    18084          * Get versions of hcapmw, iotservice, core and bindings.<br>
    18085          *
    18086          * @param {Object} param
    18087          * <ul>
    18088          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    18089          *   <pre class="code prettyprint">
    18090          *   param.onSuccess = function (s) {
    18091          *       // {Object} s.versions - versions of JSON foramt when returnValue is true. If no binding is ready, "bindings" doesn't exist.
    18092          *   }</pre>
    18093          *   </li>
    18094          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    18095          *   <pre class="code prettyprint">
    18096          *   param.onFailure = function (param) {
    18097          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    18098          *   }</pre>
    18099          *   </li>
    18100          * </ul>
    18101          *
    18102          * @since 1.22.2
    18103          *
    18104          * @see
    18105          * <a href="_global_.html#event:iot_binding_ready">{Event} iot_binding_ready</a><br>
    18106          * <a href="_global_.html#event:iot_thing_discovered">{Event} iot_thing_discovered</a><br>
    18107          * <a href="_global_.html#event:iot_bridge_status_changed">{Event} iot_bridge_status_changed</a><br>
    18108          * <a href="_global_.html#event:iot_thing_registered">{Event} iot_thing_registered</a><br>
    18109          * <a href="_global_.html#event:iot_thing_rejected">{Event} iot_thing_rejected</a><br>
    18110          * <a href="_global_.html#event:iot_component_reported">{Event} iot_component_reported</a><br>
    18111          * <a href="_global_.html#event:iot_thing_unregistered">{Event} iot_thing_unregistered</a><br>
    18112          * <a href="_global_.html#event:iot_thing_meta_data_changed">{Event} iot_thing_meta_data_changed</a><br>
    18113          * <a href="_global_.html#event:iot_set_component_result_received">{Event} iot_set_component_result_received</a><br>
    18114          * <a href="_global_.html#event:iot_framework_status_changed">{Event} iot_framework_status_changed</a><br>
    18115          * <a href="_global_.html#event:iot_factory_reset_result_received">{Event} iot_factory_reset_result_received</a><br>
    18116          * <a href="hcap.iot.html#.requestSetBridgeStatus">hcap.iot.requestSetBridgeStatus()</a><br>
    18117          * <a href="hcap.iot.html#.getBridgeStatus">hcap.iot.getBridgeStatus()</a><br>
    18118          * <a href="hcap.iot.html#.requestRegisterThing">hcap.iot.requestRegisterThing()</a><br>
    18119          * <a href="hcap.iot.html#.requestRejectThing">hcap.iot.requestRejectThing()</a><br>
    18120          * <a href="hcap.iot.html#.getThingList">hcap.iot.getThingList()</a><br>
    18121          * <a href="hcap.iot.html#.getBindingIdList">hcap.iot.getBindingIdList()</a><br>
    18122          * <a href="hcap.iot.html#.requestSetComponent">hcap.iot.requestSetComponent()</a><br>
    18123          * <a href="hcap.iot.html#.requestUnregisterThing">hcap.iot.requestUnregisterThing()</a><br>
    18124          * <a href="hcap.iot.html#.setThingNickname">hcap.iot.setThingNickname()</a><br>
    18125          * <a href="hcap.iot.html#.requestSynchronizeThing">hcap.iot.requestSynchronizeThing()</a><br>
    18126          * <a href="hcap.iot.html#.getFrameworkStatus">hcap.iot.getFrameworkStatus()</a><br>
    18127          * <a href="hcap.iot.html#.requestFactoryReset">hcap.iot.requestFactoryReset()</a><br>
    18128          *
    18129          * @example
    18130          * hcap.iot.getVersions({
    18131          *      "onSuccess": function(s) {
    18132          *          console.log("getVersions onSuccess : versions = " +  JSON.stringify(s.versions));
    18133          *      },
    18134          *      "onFailure" : function(f) {
    18135          *          console.log("getVersions onFailure : errorMessage = " + f.errorMessage);
    18136          *      }
    18137          * });
    18138          */
    18139         hcap.iot.getVersions = function (param) {
    18140             hcap_command("iot_get_versions", param);
    18141         };
    18142         hcap.iot.getThingListPrivate = function (param) {
    18143             hcap_command("iot_get_thing_list_private", param);
    18144         };
    18145         /**
    18146          * @namespace hcap.camera
    18147          */
    18148         hcap.camera = { };
    18149         /**
    18150          * Get information about currently available camera devices. Only supported for Logitech BCC950 model.<br>
    18151          *
    18152          * @param {Object} param
    18153          * <ul>
    18154          *   <li>{Function} param.onSuccess [Optional] - success callback function.<br>
    18155          *   <pre class="code prettyprint">
    18156          *   param.onSuccess = function() {
    18157          *       // {Array} param.list - camera information list supported by TV
    18158          *       //         {String} param.list[].id - camera id currently available
    18159          *       //         {String} param.list[].name - camera name currently available
    18160          *       //         {String} param.list[].controls - control types currently available
    18161          *   }</pre>
    18162          *   </li>
    18163          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    18164          *   <pre class="code prettyprint">
    18165          *   param.onFailure = function (param) {
    18166          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    18167          *   }</pre>
    18168          *   </li>
    18169          * </ul>
    18170          *
    18171          * @since 1.24.4
    18172          *
    18173          * @see
    18174          * <a href="hcap.camera.html#.getCameraControl">hcap.camera.getCameraControl()</a><br>
    18175          * <a href="hcap.camera.html#.setCameraControl">hcap.camera.setCameraControl()</a><br>
    18176          *
    18177          * @example
    18178          * hcap.camera.getCameraInformation({
    18179          *      "onSuccess" : function() {
    18180          *          console.log("onSuccess : list length = " + s.list.length);
    18181          *          for (var i = 0; i < s.list.length; i++) {
    18182          *              console.log(
    18183          *              "[" + i + "].id = " + s.list[i].id +
    18184          *              ", [" + i + "].name = " + s.list[i].name +
    18185          *              ", [" + i + "].controls = " + s.list[i].controls
    18186          *              );
    18187          *          }
    18188          *      },
    18189          *      "onFailure" : function(f) {
    18190          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    18191          *      }
    18192          * });
    18193          */
    18194         hcap.camera.getCameraInformation = function (param) {
    18195             hcap_command("get_camera_information", param);
    18196         };
    18197         /**
    18198          * Gets the current value of the camera control type. Only supported for Logitech BCC950 model.<br>
    18199          *
    18200          * @param {Object} param
    18201          * <ul>
    18202          *   <li>{String} param.id [Required] - camera id</li>
    18203          *   <li>{String} param.control_type [Required] - control type of the camera ("Pan (relative)"/"Tilt (relative)"/"Zoom"/"Absolute"/"Brightness"/"Contrast"/"Sharpness")</li>
    18204          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    18205          *   <pre class="code prettyprint">
    18206          *   param.onSuccess = function (param) {
    18207          *       // {Number} param.value - the current value of the control_type parameter.
    18208          *   }</pre>
    18209          *   </li>
    18210          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    18211          *   <pre class="code prettyprint">
    18212          *   param.onFailure = function (param) {
    18213          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    18214          *   }</pre>
    18215          *   </li>
    18216          * </ul>
    18217          *
    18218          * @since 1.24.4
    18219          *
    18220          * @see
    18221          * <a href="hcap.camera.html#.getCameraInformation">hcap.camera.getCameraInformation()</a><br>
    18222          * <a href="hcap.camera.html#.setCameraControl">hcap.camera.setCameraControl()</a><br>
    18223          *
    18224          * @example
    18225          * hcap.camera.getCameraControl({
    18226          *      "id" : "video0",
    18227          *      "control_type" : "Brightness",
    18228          *      "onSuccess" : function(s) {
    18229          *          console.log("onSuccess : value = " + s.value);
    18230          *      },
    18231          *      "onFailure" : function(f) {
    18232          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    18233          *      }
    18234          * });
    18235          */
    18236         hcap.camera.getCameraControl = function (param) {
    18237             hcap_command("get_camera_control", param);
    18238         };
    18239         /**
    18240          * Sets the value of the camera control type. Only supported for Logitech BCC950 model.<br>
    18241          *
    18242          * @param {Object} param
    18243          * <ul>
    18244          *   <li>{String} param.id [Required] - camera id</li>
    18245          *   <li>{String} param.control_type [Required] - control type of the camera ("Pan (relative)"/"Tilt (relative)"/"Zoom"/"Absolute"/"Brightness"/"Contrast"/"Sharpness"/"Pan Reset"/"Tilt Reset")</li>
    18246          *   <li>{Number} param.value [Required] - value to set</li>
    18247          *   <li>{Function} param.onSuccess [Optional] - success callback function.
    18248          *   <pre class="code prettyprint">
    18249          *   param.onSuccess = function (param) {
    18250          *       // No Parameter.
    18251          *   }</pre>
    18252          *   </li>
    18253          *   <li>{Function} param.onFailure [Optional] - failure callback function.
    18254          *   <pre class="code prettyprint">
    18255          *   param.onFailure = function (param) {
    18256          *       // {String} param.errorMessage - in case of failure, this message provides the details.
    18257          *   }</pre>
    18258          *   </li>
    18259          * </ul>
    18260          *
    18261          * @since 1.24.4
    18262          *
    18263          * @see
    18264          * <a href="hcap.camera.html#.getCameraInformation">hcap.camera.getCameraInformation()</a><br>
    18265          * <a href="hcap.camera.html#.getCameraControl">hcap.camera.getCameraControl()</a><br>
    18266          *
    18267          * @example
    18268          * hcap.camera.setCameraControl({
    18269          *      "id" : "video0",
    18270          *      "control_type" : "Pan (Relative)",
    18271          *      "value" : -500,
    18272          *      "onSuccess" : function(s) {
    18273          *          console.log("onSuccess : value = " + s.value);
    18274          *      },
    18275          *      "onFailure" : function(f) {
    18276          *          console.log("onFailure : errorMessage = " + f.errorMessage);
    18277          *      }
    18278          * });
    18279          */
    18280         hcap.camera.setCameraControl = function (param) {
    18281             hcap_command("set_camera_control", param);
    18282         };
    18283 		/**
    18284 		 * @namespace hcap.speech
    18285 		 */
    18286 		hcap.speech = { };
    18287 		/**
    18288 		 * Sets using the speech recognition by HCAP Application is enabled or disabled.<br>
    18289 		 *
    18290 		 * @param {Object} param
    18291 		 * <ul>
    18292 		 *   <li>{Boolean} param.enable [Required] - true : enable to speech recognition, false : disable.</li>
    18293 		 *   <li>{Function} param.onSuccess [Optional] - success callback function.
    18294 		 *   <pre class="code prettyprint">
    18295 		 *   param.onSuccess = function() {
    18296 		 *       // No Parameter.
    18297 		 *   }</pre>
    18298 		 *   </li>
    18299 		 *   <li>{Function} param.onFailure [Optional] - failure callback function.
    18300 		 *   <pre class="code prettyprint">
    18301 		 *   param.onFailure = function (param) {
    18302 		 *       // {String} param.errorMessage - in case of failure, this message provides the details.
    18303 		 *   }</pre>
    18304 		 *   </li>
    18305 		 * </ul>
    18306 		 *
    18307 		 * @since 1.22.2
    18308 		 *
    18309 		 * @see
    18310 		 * <a href="_global_.html#event:speech_to_text_status_changed">{Event} speech_to_text_status_changed</a><br>
    18311 		 * <a href="hcap.speech.html#.getSpeechRecognition">hcap.speech.getSpeechRecognition()</a><br>
    18312 		 * <a href="hcap.speech.html#.decideHost">hcap.speech.decideHost()</a><br>
    18313 		 *
    18314 		 * @example
    18315 		 * hcap.speech.setSpeechRecognition({
    18316 		 *      "enable" : true,
    18317 		 *      "onSuccess" : function() {
    18318 		 *          console.log("onSuccess");
    18319 		 *      },
    18320 		 *      "onFailure" : function(f) {
    18321 		 *          console.log("onFailure : errorMessage = " + f.errorMessage);
    18322 		 *      }
    18323 		 * });
    18324 		 */
    18325 		hcap.speech.setSpeechRecognition = function (param) {
    18326 			hcap_command("set_speech_recognition", param);
    18327 		};
    18328 		/**
    18329 		 * Gets whether using the speech recognition by HCAP Application is enabled or disabled.<br>
    18330 		 *
    18331 		 * @param {Object} param
    18332 		 * <ul>
    18333 		 *   <li>{Function} param.onSuccess [Optional] - success callback function.
    18334 		 *   <pre class="code prettyprint">
    18335 		 *   param.onSuccess = function (param) {
    18336 		 *       // {Boolean} param.enable - true if using the speech recognition by HCAP Application is enabled. false if using the speech recognition by HCAP Application is disabled.
    18337 		 *   }</pre>
    18338 		 *   </li>
    18339 		 *   <li>{Function} param.onFailure [Optional] - failure callback function.
    18340 		 *   <pre class="code prettyprint">
    18341 		 *   param.onFailure = function (param) {
    18342 		 *       // {String} param.errorMessage - in case of failure, this message provides the details.
    18343 		 *   }</pre>
    18344 		 *   </li>
    18345 		 * </ul>
    18346 		 *
    18347 		 * @since 1.22.2
    18348 		 *
    18349 		 * @see
    18350 		 * <a href="_global_.html#event:speech_to_text_status_changed">{Event} speech_to_text_status_changed</a><br>
    18351 		 * <a href="hcap.speech.html#.setSpeechRecognition">hcap.speech.setSpeechRecognition()</a><br>
    18352 		 * <a href="hcap.speech.html#.decideHost">hcap.speech.decideHost()</a><br>
    18353 		 *
    18354 		 * @example
    18355 		 * hcap.speech.getSpeechRecognition({
    18356 		 *      "onSuccess" : function (param) {
    18357 		 *          console.log("onSuccess : get speech recognition = " + param.enable);
    18358 		 *      },
    18359 		 *      "onFailure" : function(f) {
    18360 		 *          console.log("onFailure : errorMessage = " + f.errorMessage);
    18361 		 *      }
    18362 		 * });
    18363 		 */
    18364 		hcap.speech.getSpeechRecognition = function (param) {
    18365 			hcap_command("get_speech_recognition", param);
    18366 		};
    18367 		/**
    18368 		 * @namespace hcap.speech.HostType
    18369 		 */
    18370 		hcap.speech.HostType = {
    18371 			/**
    18372 			 * Not Support
    18373 			 * @since 1.22.2
    18374 			 * @constant
    18375 			 */
    18376 			NOT_SUPPORT : 0,
    18377 			/**
    18378 			 * HCAP Application is in charge of handling the speech recognition
    18379 			 * @since 1.22.2
    18380 			 * @constant
    18381 			 */
    18382 			APPLICATION : 1,
    18383 			/**
    18384 			 * The Pro:Centric platform is in charge of handling the speech recognition
    18385 			 * @since 1.22.2
    18386 			 * @constant
    18387 			 */
    18388 			TV : 2
    18389 		};
    18390 		/**
    18391 		 * Decides who is in charge of handling the speech recognition.<br>
    18392 		 *
    18393 		 * @param {Object} param
    18394 		 * <ul>
    18395 		 *   <li>{String} param.serviceType [Required] - STT result category.</li>
    18396 		 *   <li>{String} param.actionType [Required] - STT result intent.</li>
    18397 		 *   <li>{Number} param.hostType [Required] - host type defined <a href="hcap.speech.HostType.html">hcap.speech.HostType</a>.</li>
    18398 		 *   <li>{Function} param.onSuccess [Optional] - success callback function.
    18399 		 *   <pre class="code prettyprint">
    18400 		 *   param.onSuccess = function() {
    18401 		 *       // No Parameter.
    18402 		 *   }</pre>
    18403 		 *   </li>
    18404 		 *   <li>{Function} param.onFailure [Optional] - failure callback function.
    18405 		 *   <pre class="code prettyprint">
    18406 		 *   param.onFailure = function (param) {
    18407 		 *       // {String} param.errorMessage - in case of failure, this message provides the details.
    18408 		 *   }</pre>
    18409 		 *   </li>
    18410 		 * </ul>
    18411 		 *
    18412 		 * @since 1.22.2
    18413 		 *
    18414 		 * @see
    18415 		 * <a href="_global_.html#event:speech_to_text_status_changed">{Event} speech_to_text_status_changed</a><br>
    18416 		 * <a href="hcap.speech.html#.setSpeechRecognition">hcap.speech.setSpeechRecognition()</a><br>
    18417 		 * <a href="hcap.speech.html#.getSpeechRecognition">hcap.speech.getSpeechRecognition()</a><br>
    18418 		 *
    18419 		 * @example
    18420 		 * hcap.speech.decideHost({
    18421 		 *      "serviceType" : "id_time",
    18422 		 *      "actionType" : "id_time_info",
    18423 		 *      "hostType" : hcap.speech.HostType.APPLICATION,
    18424 		 *      "onSuccess" : function() {
    18425 		 *          console.log("onSuccess");
    18426 		 *      },
    18427 		 *      "onFailure" : function(f) {
    18428 		 *          console.log("onFailure : errorMessage = " + f.errorMessage);
    18429 		 *      }
    18430 		 * });
    18431 		 */
    18432 		hcap.speech.decideHost = function (param) {
    18433 			hcap_command("decide_host", param);
    18434 		};
    18435     }());
    18436 }