# Namespace hcap.channel

hcap.channel

- Defined in: hcap-1.24.6.5901.js

Namespace Summary
Constructor Attributes | Constructor Name and Description
--- | ---
| hcap.channel

## Method Summary

## Namespace Detail

hcap.channel

## Field Detail

<static> <constant> hcap.channel.NO_STREAM_PID
No stream PID.

Since:
  1.3.1

## Method Detail

- <static> hcap.channel.getChannelMap(param)
  Gets information of the channel which is registered in the shortcut.

      hcap.channel.getChannelMap({
           "onSuccess" : function(s) {
               console.log("onSuccess : list length = " + s.list.length);
               for (var i = 0; i < s.list.length; i++) {
                   console.log(
                       "[" + i + "].img_url2 = " + s.list[i].img_url2 +
                       "[" + i + "].img_url = " + s.list[i].img_url +
                       "[" + i + "].short_cut = " + s.list[i].short_cut +
                       "[" + i + "].channel_type = " + s.list[i].channel_type +
                       "[" + i + "].channel_mode_id = " + s.list[i].channel_mode_id +
                       "[" + i + "].channel_number = " + s.list[i].channel_number +
                       "[" + i + "].channel_name = " + s.list[i].channel_name
                   );
               }
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

  Parameters:
  {Object} param
    - {Function} param.onSuccess [Optional] - success callback function.

            param.onSuccess = function (param) {
                // {Array} param.list - list for the channel information registered in the shortcut.
                //         {String} param.list[].img_url2 - logo image url2 of the channel
                //         {String} param.list[].img_url - logo image url of the channel
                //         {String} param.list[].short_cut - shortcut number (1~12)
                //         {String} param.list[].channel_type - name of the channel type ex) atellite BS
                //         {String} param.list[].channel_mode_id - channel mode id which is number 0~6
                //         {String} param.list[].channel_number - number of the channel ex)101
                //         {String} param.list[].channel_name - channel type and number ex) BS 101
            }

    - {Function} param.onFailure [Optional] - failure callback function.

            param.onFailure = function (param) {
                // {String} param.errorMessage - in case of failure, this message provides the details.
            }

  Since:
    1.23.2
  See:
    hcap.channel.requestChangeCurrentChannel()
    hcap.channel.getCurrentChannel()
    hcap.channel.replayCurrentChannel()
    hcap.channel.stopCurrentChannel()
    hcap.channel.getDataChannel()
    hcap.channel.getChannelMap()
    hcap.channel.getStartChannel()
    hcap.channel.setStartChannel()
    {Event} channel_changed
- <static> hcap.channel.getChannelSignalStatus(param)
  Gets the channel signal status.

      hcap.channel.getChannelSignalStatus({
           "onSuccess" : function(s) {
               console.log("onSuccess  :" +
                   "\n snr value       : " + s.snrValue       +
                   "\n frequency       : " + s.frequency      +
                   "\n signal level    : " + s.signalLevel    +
                   "\n modulation mode : " + s.modulationMode +
                   "\n lock status     : " + s.lockStatus);
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

  Parameters:
  {Object} param
    - {Function} param.onSuccess [Optional] - success callback function.

            param.onSuccess = function (param) {
                // {Number} param.snrValue - snr value(dB).
                // {Number} param.frequency - current frequency(KHz).
                // {Number} param.signalLevel - signal level(%).
                // {String} param.modulationMode - modulation mode.
                // {Boolean} param.lockStatus - lock status.
            }

    - {Function} param.onFailure [Optional] - failure callback function.

            param.onFailure = function (param) {
                // {String} param.errorMessage - in case of failure, this message provides the details.
            }

  Since:
    1.19.2
- <static> hcap.channel.getCurrentChannel(param)
  Gets the current channel information.
  For detailed information, such as, example and related information, please refer to hcap.channel.requestChangeCurrentChannel()

      hcap.channel.getCurrentChannel({
           "onSuccess" : function(s) {
               console.log("onSuccess :" +
                   "\n channel status    : " + s.channelStatus   +
                   "\n channel type      : " + s.channelType     +
                   "\n logical number    : " + s.logicalNumber   +
                   "\n frequency         : " + s.frequency       +
                   "\n program number    : " + s.programNumber   +
                   "\n major number      : " + s.majorNumber     +
                   "\n minor number      : " + s.minorNumber     +
                   "\n satellite ID      : " + s.satelliteId     +
                   "\n polarization      : " + s.polarization    +
                   "\n rf broadcast type : " + s.rfBroadcastType +
                   "\n ip                : " + s.ip              +
                   "\n port              : " + s.port            +
                   "\n ip broadcast type : " + s.ipBroadcastType +
                   "\n symbol rate       : " + s.symbolRate      +
                   "\n pcr pid           : " + s.pcrPid          +
                   "\n video pid         : " + s.videoPid        +
                   "\n video stream type : " + s.videoStreamType +
                   "\n audio pid         : " + s.audioPid        +
                   "\n audio stream type : " + s.audioStreamType +
                   "\n signal strength   : " + s.signalStrength  +
                   "\n source address    : " + s.sourceAddress);
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

  Parameters:
  {Object} param
    - {Function} param.onSuccess [Optional] - success callback function.

            param.onSuccess = function (param) {
                // {Number} [since 1.12.0] param.channelStatus - current channel status in hcap.channel.ChannelStatus.
                // see the { Channel Properties } in hcap.channel.requestChangeCurrentChannel().
            }

    - {Function} param.onFailure [Optional] - failure callback function.

            param.onFailure = function (param) {
                // {String} param.errorMessage - in case of failure, this message provides the details.
            }

  Since:
    1.3.1
  See:
    hcap.channel.requestChangeCurrentChannel()
    hcap.channel.getCurrentChannel()
    hcap.channel.replayCurrentChannel()
    hcap.channel.stopCurrentChannel()
    hcap.channel.getDataChannel()
    hcap.channel.getChannelMap()
    hcap.channel.getStartChannel()
    hcap.channel.setStartChannel()
    {Event} channel_changed
- <static> hcap.channel.getCurrentChannelAudioLanguageIndex(param)
  Gets the audio language index of the current channel.
  If application wants to map the index to audio language code, then it can get the audio language list of the current channel by hcap.channel.getCurrentChannelAudioLanguageList().

  Item | Value
  --- | ---
  audio language list | en,ko,fr,en,xx
  index | 0, 1, 2, 3, 4
  Audio Language List & Index Example

      hcap.channel.getCurrentChannelAudioLanguageIndex({
           "onSuccess" : function(s) {
               console.log("onSuccess : index = " + s.index);
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

  Parameters:
  {Object} param
    - {Function} param.onSuccess [Optional] - success callback function.

            param.onSuccess = function (param) {
                // {Number} param.index - audio language index of the current channel.
            }

    - {Function} param.onFailure [Optional] - failure callback function.

            param.onFailure = function (param) {
                // {String} param.errorMessage - in case of failure, this message provides the details.
            }

  Since:
    1.3.1
  See:
    hcap.channel.getCurrentChannelAudioLanguageList()
    hcap.channel.setCurrentChannelAudioLanguageIndex()
- <static> hcap.channel.getCurrentChannelAudioLanguageList(param)
  Gets the list of supported audio languages in the current channel.
  Audio language list is composed of language codes and delimiter comma(',').
  Application can get/set audio language of the current channel by index of the audio language list.
  If there is no audio language list of the current channel, only "xx" is returned as the audio language list.
  And "xx" could be returned as an audio language if the audio language is not mapped to an audio language code.
  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]

  Item | Value
  --- | ---
  audio language list | en,ko,fr,en,xx
  index | 0, 1, 2, 3, 4
  Audio Language List & Index Example

  If the application wants to set the audio language to French ('fr'), use the index '2'.

      hcap.channel.getCurrentChannelAudioLanguageList({
           "onSuccess" : function(s) {
               console.log("onSuccess : list = " + s.list);
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

  Parameters:
  {Object} param
    - {Function} param.onSuccess [Optional] - success callback function.

            param.onSuccess = function (param) {
                // {String} param.list - audio language list string
                //     which is composed of language codes separated by delimiter comma(',').
            }

    - {Function} param.onFailure [Optional] - failure callback function.

            param.onFailure = function (param) {
                // {String} param.errorMessage - in case of failure, this message provides the details.
            }

  Since:
    1.3.1
  See:
    hcap.channel.getCurrentChannelAudioLanguageIndex()
    hcap.channel.setCurrentChannelAudioLanguageIndex()
- <static> hcap.channel.getCurrentChannelSubtitleIndex(param)
  Gets the subtitle index of the current channel. If application wants to map the index to subtitle setting value, get subtitle list of the current channel by hcap.channel.getCurrentChannelSubtitleList().

  Item | Value
  --- | ---
  Subtitle List | off,en,ko,fr,en,xx,eng
  index | 0, 1, 2, 3, 4, 5, 6
  Subtitle List & Index Example

      hcap.channel.getCurrentChannelSubtitleIndex({
           "onSuccess" : function(s) {
               console.log("onSuccess : index = " + s.index);
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

  Parameters:
  {Object} param
    - {Function} param.onSuccess [Optional] - success callback function.

            param.onSuccess = function (param) {
                // {Number} param.index - subtitle setting index of the current channel.
            }

    - {Function} param.onFailure [Optional] - failure callback function.

            param.onFailure = function (param) {
                // {String} param.errorMessage - in case of failure, this message provides the details.
            }

  Since:
    1.3.1
  See:
    hcap.channel.getCurrentChannelSubtitleList()
    hcap.channel.setCurrentChannelSubtitleIndex()
- <static> hcap.channel.getCurrentChannelSubtitleList(param)
  Gets supported subtitle list of the current channel.
  Subtitle list is composed of subtitle setting values and delimiter comma(',').
  Application can get/set subtitle setting of the current channel by index of the subtitle list.
  "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.
  And "off" can be returned as a subtitle setting to turn off the subtitle.
  If there is no subtitle list of the current channel, only "off" is returned as the subtitle list.
  Since version 1.24.2, subtitles with "_HOH" appended to the original value(ex: sq_HOH) are provided for the hearing impaired. [EU Only]

  Item | Value
  --- | ---
  Subtitle List | off,en,ko,fr,en,xx,eng
  index | 0, 1, 2, 3, 4, 5, 6
  Subtitle List & Index Example

  If the application wants to set the subtitle to French ('fr'), use the index value '3'.

      hcap.channel.getCurrentChannelSubtitleList({
           "onSuccess" : function(s) {
               console.log("onSuccess : list = " + s.list);
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

  Parameters:
  {Object} param
    - {Function} param.onSuccess [Optional] - success callback function.

            param.onSuccess = function (param) {
                // {String} param.list - subtitle list string
                //     which is composed of subtitle setting values and delimiter comma(',').
            }

    - {Function} param.onFailure [Optional] - failure callback function.

            param.onFailure = function (param) {
                // {String} param.errorMessage - in case of failure, this message provides the details.
            }

  Since:
    1.3.1
  See:
    hcap.channel.getCurrentChannelSubtitleIndex()
    hcap.channel.setCurrentChannelSubtitleIndex()
- <static> hcap.channel.getDataChannel(param)
  Gets information about the Pro:Centric data channel(RF Channel or IP Channel), which is the channel used to download applications. In case of RF Data Channel, only frequency and program number are valid in channel information.

      hcap.channel.getDataChannel({
           "onSuccess" : function(s) {
               if (s.channelType === hcap.channel.ChannelType.RF_DATA) {
                   console.log("onSuccess :" +
                       "\n frequency         " + s.frequency       +
                       "\n program number    " + s.programNumber);
               } else if (s.channelType === hcap.channel.ChannelType.IP_DATA) {
                   console.log("onSuccess :" +
                       "\n ip                " + s.ip              +
                       "\n port              " + s.port);
               } else {
                   console.log("unknown channel type");
               }
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

  Parameters:
  {Object} param
    - {Function} param.onSuccess [Optional] - success callback function.

            param.onSuccess = function (param) {
                // see the { Channel Properties } in hcap.channel.requestChangeCurrentChannel().
            }

    - {Function} param.onFailure [Optional] - failure callback function.

            param.onFailure = function (param) {
                // {String} param.errorMessage - in case of failure, this message provides the details.
            }

  Since:
    1.3.1
  See:
    hcap.channel.requestChangeCurrentChannel()
    hcap.channel.getCurrentChannel()
    hcap.channel.replayCurrentChannel()
    hcap.channel.stopCurrentChannel()
    hcap.channel.getDataChannel()
    hcap.channel.getChannelMap()
    hcap.channel.getStartChannel()
    hcap.channel.setStartChannel()
    {Event} channel_changed
- <static> hcap.channel.getProgramInfo(param)
  Gets the information about the current program and the next program in the current channel.

      hcap.channel.getProgramInfo({
           "onSuccess" : function(s) {
               console.log("onSuccess :" +
                   "\n currentProgram title = " + s.currentProgram.title +
                   "\n currentProgram startTime = " + s.currentProgram.startTime.year +
                           "-" + s.currentProgram.startTime.month +
                           "-" + s.currentProgram.startTime.day +
                           " " + s.currentProgram.startTime.hour +
                           " : " + s.currentProgram.startTime.minute +
                           " : " + s.currentProgram.startTime.second +
                   "\n currentProgram length = " + s.currentProgram.lengthInSeconds + "second(s)" +
                   "\n nextProgram title = " + s.nextProgram.title +
                   "\n nextProgram startTime = " + s.nextProgram.startTime.year +
                           "-" + s.nextProgram.startTime.month +
                           "-" + s.nextProgram.startTime.day +
                           " " + s.nextProgram.startTime.hour +
                           " : " + s.nextProgram.startTime.minute +
                           " : " + s.nextProgram.startTime.second +
                   "\n nextProgram length = " + s.nextProgram.lengthInSeconds + "second(s)");
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

  Parameters:
  {Object} param
    - {Function} param.onSuccess [Optional] - success callback function.

            param.onSuccess = function (param) {
                // {String} param.currentProgram.title - title of the current program.
                // {Number} param.currentProgram.startTime.year - year of the start time of the current program.
                // {Number} param.currentProgram.startTime.month - month of the start time of the current program.
                // {Number} param.currentProgram.startTime.day - day of the start time of the current program.
                // {Number} param.currentProgram.startTime.hour - hour of the start time of the current program.
                // {Number} param.currentProgram.startTime.minute - minute of the start time of the current program.
                // {Number} param.currentProgram.startTime.second - second of the start time of the current program.
                // {String} param.currentProgram.lengthInSeconds - length of the current program in seconds. (0 ~ 2^32 - 1)
                // {String} param.nextProgram.title - title of the next program.
                // {Number} param.nextProgram.startTime.year - year of the start time of the next program.
                // {Number} param.nextProgram.startTime.month - month of the start time of the next program.
                // {Number} param.nextProgram.startTime.day - day of the start time of the next program.
                // {Number} param.nextProgram.startTime.hour - hour of the start time of the next program.
                // {Number} param.nextProgram.startTime.minute - minute of the start time of the next program.
                // {Number} param.nextProgram.startTime.second - second of the start time of the next program.
                // {String} param.nextProgram.lengthInSeconds - length of the next program in seconds. (0 ~ 2^32 - 1)
            }

    - {Function} param.onFailure [Optional] - failure callback function.

            param.onFailure = function (param) {
                // {String} param.errorMessage - in case of failure, this message provides the details.
            }

  Since:
    1.5.0
- <static> hcap.channel.getReadyInbandDataService(param)
  Get the available inband data service in the current channel.

      hcap.channel.getReadyInbandDataService({
           "onSuccess" : function(s) {
               var serviceType = "UNKNOWN";
               switch(s.availableDataServiceType) {
               case hcap.channel.InbandDataServiceType.MHP: serviceType = "MHP"; break;
               case hcap.channel.InbandDataServiceType.MHEG: serviceType = "MHEG"; break;
               case hcap.channel.InbandDataServiceType.HBBTV: serviceType = "HBBTV"; break;
               case hcap.channel.InbandDataServiceType.NONE: serviceType = "NONE"; break;
               default: serviceType = "UNKNOWN"; break;
               }
               console.log("onSuccess : available data service type = " + serviceType);
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

  Parameters:
  {Object} param
    - {Function} param.onSuccess [Optional] - success callback function.

            param.onSuccess = function (param) {
                // {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.
            }

    - {Function} param.onFailure [Optional] - failure callback function.

            param.onFailure = function (param) {
                // {String} param.errorMessage - in case of failure, this message provides the details.
            }

  Since:
    1.8.0
  See:
    {Event} inband_data_service_ready
    hcap.channel.InbandDataServiceType.MHP
    hcap.channel.InbandDataServiceType.MHEG
    hcap.channel.InbandDataServiceType.HBBTV
    hcap.channel.InbandDataServiceType.NONE
- <static> hcap.channel.getStartChannel(param)
  Gets the start channel information which is the channel displayed at first when TV is turned on.
  This API is very similar to hcap.channel.getCurrentChannel(). For detailed information, such as example and related information, please refer to hcap.channel.requestChangeCurrentChannel().

      hcap.channel.getStartChannel({
           "onSuccess" : function(s) {
               console.log("onSuccess :" +
                   "\n channel type      : " + s.channelType     +
                   "\n logical number    : " + s.logicalNumber   +
                   "\n frequency         : " + s.frequency       +
                   "\n program number    : " + s.programNumber   +
                   "\n major number      : " + s.majorNumber     +
                   "\n minor number      : " + s.minorNumber     +
                   "\n satellite ID      : " + s.satelliteId     +
                   "\n polarization      : " + s.polarization    +
                   "\n rf broadcast type : " + s.rfBroadcastType +
                   "\n ip                : " + s.ip              +
                   "\n port              : " + s.port            +
                   "\n ip broadcast type : " + s.ipBroadcastType +
                   "\n symbol rate       : " + s.symbolRate      +
                   "\n pcr pid           : " + s.pcrPid          +
                   "\n video pid         : " + s.videoPid        +
                   "\n video stream type : " + s.videoStreamType +
                   "\n audio pid         : " + s.audioPid        +
                   "\n audio stream type : " + s.audioStreamType +
                   "\n signal strength   : " + s.signalStrength  +
                   "\n source address    : " + s.sourceAddress);
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

  Parameters:
  {Object} param
    - {Function} param.onSuccess [Optional] - success callback function.

            param.onSuccess = function (param) {
                // see the { Channel Properties } in hcap.channel.requestChangeCurrentChannel().
            }

    - {Function} param.onFailure [Optional] - failure callback function.

            param.onFailure = function (param) {
                // {String} param.errorMessage - in case of failure, this message provides the details.
            }

  Since:
    1.3.1
  See:
    hcap.channel.requestChangeCurrentChannel()
    hcap.channel.getCurrentChannel()
    hcap.channel.replayCurrentChannel()
    hcap.channel.stopCurrentChannel()
    hcap.channel.getDataChannel()
    hcap.channel.getChannelMap()
    hcap.channel.getStartChannel()
    hcap.channel.setStartChannel()
    {Event} channel_changed
- <static> hcap.channel.launchInbandDataService(param)
  Launch the application of the inband data service type in the current channel.

      hcap.channel.launchInbandDataService({
           "inband_data_service_type" : hcap.channel.InbandDataServiceType.HBBTV,
           "onSuccess" : function() {
               console.log("onSuccess");
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

  Parameters:
  {Object} param
    - {Number} param.inband_data_service_type [Required] - inband data service type to launch at the current channel.
    - {Function} param.onSuccess [Optional] - success callback function.

            param.onSuccess = function() {
                // No Parameter.
            }

    - {Function} param.onFailure [Optional] - failure callback function.

            param.onFailure = function (param) {
                // {String} param.errorMessage - in case of failure, this message provides the details.
            }

  Since:
    1.6.0
  See:
    {Event} inband_data_service_ready
    hcap.channel.InbandDataServiceType.MHP
    hcap.channel.InbandDataServiceType.MHEG
    hcap.channel.InbandDataServiceType.HBBTV
- <static> hcap.channel.replayCurrentChannel(param)
  Replays the current stopped channel.
  - RF channel : restart channel tuning and replays AV.
  - IP channel : join IP multicast group and replays AV.

      hcap.channel.replayCurrentChannel({
           "onSuccess" : function() {
               console.log("onSuccess");
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

  Parameters:
  {Object} param
    - {Function} param.onSuccess [Optional] - success callback function.

            param.onSuccess = function() {
                // no parameter.
            }

    - {Function} param.onFailure [Optional] - failure callback function. Replaying already playing channel, or for operation failure

            param.onFailure = function (param) {
                // {String} param.errorMessage - in case of failure, this message provides the details.
            }

  Since:
    1.3.1
  See:
    hcap.channel.requestChangeCurrentChannel()
    hcap.channel.getCurrentChannel()
    hcap.channel.replayCurrentChannel()
    hcap.channel.stopCurrentChannel()
    hcap.channel.getDataChannel()
    hcap.channel.getChannelMap()
    hcap.channel.getStartChannel()
    hcap.channel.setStartChannel()
    {Event} channel_changed
- <static> hcap.channel.requestChangeCurrentChannel(param)
  Requests to change the current channel.
  The result for the channel change operation can be obtained by registering the {Event} channel_changed
  For channel parameters, TV will support only one channel class.

  Channel Class & Parameters
  AV Channel | RF channel class 1 (supported in only US model) | logicalNumber
  RF channel class 2 (supported in only EU model) | frequency + programNumber. (for analog channel, programNumber = 0)
  RF channel class 3 (supported in only US model) | majorNumber + minorNumber. (for analog channel, minorNumber = 0)
  RF channel class 4 (supported in only EU model) | frequency + programNumber + satelliteId + polarization
  RF channel class 5 (supported in only EU model) | frequency + programNumber + plpId. (rfBroadcastType = hcap.channel.RfBroadcastType.TERRESTRIAL_2)
  RF channel class 6 (supported in only US model) | majorNumber + minorNumber + plpId. (rfBroadcastType = hcap.channel.RfBroadcastType.TERRESTRIAL_ATSC3, hcap.channel.RfBroadcastType.CABLE_ATSC3)
  IP channel class 1 (supported in only US model) | logicalNumber
  IP channel class 2 (supported in both EU model and US model) | ip + port
  Data Channel | RF channel class 1 (not supported) |
  RF channel class 2 (supported in both EU model and US model) | frequency + programNumber (required)
  IP channel class 1 (not supported) |
  IP channel class 2 (supported in both EU model and US model) | ip + port (required)

  If a channel with more than one Channel Class is requested to change, then next priority table will be applied.
  RF channel class 1 is 'X' when logicalNumber is 0.
  RF channel class 2 is 'X' when frequency is 0.
  RF channel class 3 is 'X' when majorNumber is 0.
  RF channel class 4 is 'X' when satelliteId is 0.
  IP channel class 1 is 'X' when logicalNumber is 0.
  IP channel class 2 is 'X' when ip is "0" and port is 0.
  RF channel class 5 is only when the channel type is hcap.channel.RfBroadcastType.TERRESTRIAL_2 and only frequency + programNumber + plpId take affect.
  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.
  Other cases than following table will be treated as invalid channel combinations.

  RF channel class 1 (logicalNumber) | RF channel class 2 (frequency + programNumber) | RF channel class 3 (majorNumber + minorNumber) | RF channel class 4 (frequency + programNumber + satelliteId + polarization) | Effective Channel Class
  --- | --- | --- | --- | ---
  X | X | X | X | RF channel class 1
  O | X | X | X | RF channel class 1
  X | O | X | X | RF channel class 2
  X | X | O | X | RF channel class 3
  X | - | X | O | RF channel class 4
  O | O | X | X | RF channel class 2
  O | X | O | X | RF channel class 3
  O | - | X | O | RF channel class 4
  RF Channel

  IP channel class 1 (logicalNumber) | IP channel class 2 (ip + port) | Effective Channel Class
  --- | --- | ---
  X | X | IP channel class 1
  O | X | IP channel class 1
  X | O | IP channel class 2
  O | O | IP channel class 2
  IP Channel

  hcap.channel.getCurrentChannel() gets the AV (RF/IP) channel information which includes supported channel class information and optional parameters, but unsupported channel classes are filled with 0.
  hcap.channel.getDataChannel() gets the DATA (RF/IP) channel information which includes supported channel class information, but other channel classes and optional parameters are filled with 0.
  Result objects for hcap.channel.getCurrentChannel() and hcap.channel.getDataChannel() have following information.

  Channel Type | Description
  --- | ---
  hcap.channel.ChannelType.RF | Defines AV channel via RF signal.
  hcap.channel.ChannelType.IP | Defines AV channel via IP network to support IPTV.
  hcap.channel.ChannelType.RF_DATA | Defines data channel via RF signal. Applications can download some carousel data.

  hcap.channel.ChannelType.IP_DATA

  Defines data channel via IP network.

  Data channel operation in IP address range
  Unicast IP Address | Applications can download some data from Pro:Centric server using HTTP protocol.
  Multicast IP Address (224.0.0.0 ~ 239.255.255.255) | RF broadcast data will be sent via IP multicast [TS(Transport Stream) over IP multicast]. In this mode, carousel download operation is same as hcap.channel.ChannelType.RF_DATA In this case, HCAP URL can use the special frequency# '1' for this virtual RF channel.

  Channel Type

  hcap.channel.requestChangeCurrentChannel() for IP DATA channel returns false because it has no effect.
  If following option fields are filled correctly in the input object, AV channel change performance will be improved.
  - symbolRate
  - pcrPid, videoPid
  - videoStreamType
  - audioPid
  - audioStreamType

  Property Name | Type | Req uired | RF | IP | RF DATA | IP DATA | Value | Description
  --- | --- | --- | --- | --- | --- | --- | --- | ---
  channelType | Number | O | O | O | O | O | hcap.channel.ChannelType | Channel type indicator
  logicalNumber | Number | O | O | O | O | X | 0 ~ 2^16 - 1 | Logical channel number
  frequency | Number | O | O | X | O | X | 0 ~ 2^32 - 1 | Frequency (Hz, and MHz for satellite)
  programNumber | Number | O | O | X | O | X | 0 ~ 2^16 - 1 | Program number (0 for analog channel)
  programNumber | Number | X | X | O | X | X | 0 ~ 2^16 - 1 | Specific program number in IP Stream
  majorNumber | Number | O | O | X | O | X | 0 ~ 2^16 - 1 | Major channel number
  minorNumber | Number | O | O | X | O | X | 0 ~ 2^16 - 1 | Minor channel number
  satelliteId | Number | O | O | X | X | X | 0 ~ 2^16 - 1 | Satellite setting ID
  polarization | Number | O | O | X | X | X | hcap.channel.Polarization | Polarization mode
  plpId | Number | O | O | X | X | X | 0 ~ 0xFF | PLP (Physical Layer Pipe) ID
  rfBroadcastType | Number | O | O | X | O | X | hcap.channel.RfBroadcastType | RF broadcast type
  ip | String | O | X | O | X | O | [0~255].[0~255].[0~255].[0~255] | IP address value
  port | Number | O | X | O | X | O | 0 ~ 2^16 - 1 | Port number
  ipBroadcastType | Number | O | X | O | X | X | hcap.channel.IpBroadcastType | IP broadcast type (default is UDP)
  symbolRate | Number | X | O | X | X | X | 0 ~ 2^32 - 1 | Symbol rate (Bd)
  pcrPid | Number | X | O | O | X | X | 0 ~ 2^13 - 1 | PCR(Program Clock Reference)Packet ID
  videoPid | Number | X | O | O | X | X | 0 ~ 2^13 - 1 | Video packet ID (hcap.channel.NO_STREAM_PID for audio only channel)
  videoStreamType | Number | X | O | O | X | X | hcap.channel.VideoStreamType | Video stream type
  audioPid | Number | X | O | O | X | X | 0 ~ 2^13 - 1 | Audio packet ID
  audioStreamType | Number | X | O | O | X | X | hcap.channel.AudioStreamType | Audio stream type
  signalStrength (read only) | Number | X | O | X | O | X | 0 ~ 255 | Channel signal strength
  sourceAddress | String | X | X | O | X | X | [0~255].[0~255].[0~255].[0~255] | Source IP address for IGMPv3
  Channel Property

  Below are a few examples for channel change request for different channel classes

      // RF channel class 1 change request
      hcap.channel.requestChangeCurrentChannel({
           "channelType" : hcap.channel.ChannelType.RF,
           "logicalNumber" : 7,
           "rfBroadcastType" : hcap.channel.RfBroadcastType.TERRESTRIAL,
           "onSuccess" : function() {
               console.log("onSuccess");
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

      // RF channel class 2 change request
      hcap.channel.requestChangeCurrentChannel({
           "channelType" : hcap.channel.ChannelType.RF,
           "frequency" : 63000000,
           "programNumber" : 1,
           "rfBroadcastType" : hcap.channel.RfBroadcastType.TERRESTRIAL,
           "onSuccess" : function() {
               console.log("onSuccess");
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

      // RF channel class 3 change request
      hcap.channel.requestChangeCurrentChannel({
           "channelType" : hcap.channel.ChannelType.RF,
           "majorNumber" : 9,
           "minorNumber" : 1,
           "rfBroadcastType" : hcap.channel.RfBroadcastType.TERRESTRIAL,
           "onSuccess" : function() {
               console.log("onSuccess");
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

      // RF channel class 4 change request
      hcap.channel.requestChangeCurrentChannel({
           "channelType" : hcap.channel.ChannelType.RF,
           "frequency" : 63000000,
           "programNumber" : 1,
           "satelliteId" : 1,
           "polarization" : hcap.channel.Polarization.VERTICAL,
           "rfBroadcastType" : hcap.channel.RfBroadcastType.SATELLITE_2,
           "onSuccess" : function() {
               console.log("onSuccess");
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

      // RF channel class 5 change request
      hcap.channel.requestChangeCurrentChannel({
           "channelType" : hcap.channel.ChannelType.RF,
           "frequency" : 63000000,
           "programNumber" : 1,
           "plpId" : 3,
           "rfBroadcastType" : hcap.channel.RfBroadcastType.TERRESTRIAL_2,
           "onSuccess" : function() {
               console.log("onSuccess");
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

      // RF channel class 6 change request
      hcap.channel.requestChangeCurrentChannel({
           "channelType" : hcap.channel.ChannelType.RF,
           "majorNumber" : 9,
           "minorNumber" : 1,
           "plpId" : 3,
           "rfBroadcastType" : hcap.channel.RfBroadcastType.TERRESTRIAL_ATSC3,
           "onSuccess" : function() {
               console.log("onSuccess");
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

      // IP channel class 1 change request
      hcap.channel.requestChangeCurrentChannel({
           "channelType" : hcap.channel.ChannelType.IP,
           "logicalNumber" : 9,
           "ipBroadcastType" : hcap.channel.IpBroadcastType.UDP,
           "onSuccess" : function() {
               console.log("onSuccess");
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

      // IP channel class 2 change request
      hcap.channel.requestChangeCurrentChannel({
           "channelType" : hcap.channel.ChannelType.IP,
           "ip" : "1.2.3.4",
           "port" : 3333,
           "ipBroadcastType" : hcap.channel.IpBroadcastType.UDP,
           "onSuccess" : function() {
               console.log("onSuccess");
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

      // IP channel class 2 change request with optional property
      hcap.channel.requestChangeCurrentChannel({
           "channelType" : hcap.channel.ChannelType.IP,
           "ip" : "1.2.3.4",
           "port" : 3333,
           "symbolRate" : 6758,
           "prcPid" : 100,
           "videoPid" : 200,
           "videoStreamType" : hcap.channel.VideoStreamType.MPEG2,
           "audioPid" : 400,
           "audioStreamType" : hcap.channel.AudioStreamType.MPEG2,
           "ipBroadcastType" : hcap.channel.IpBroadcastType.UDP,
           "onSuccess" : function() {
               console.log("onSuccess");
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

  Parameters:
  {Object} param
    - { Channel Properties } [Required] - Channel Information
    - {Function} param.onSuccess [Optional] - success callback function.

            param.onSuccess = function() {
                // No Parameter.
            }

    - {Function} param.onFailure [Optional] - failure callback function.

            param.onFailure = function (param) {
                // {String} param.errorMessage - in case of failure, this message provides the details.
            }

  Since:
    1.3.1
  See:
    hcap.channel.requestChangeCurrentChannel()
    hcap.channel.getCurrentChannel()
    hcap.channel.replayCurrentChannel()
    hcap.channel.stopCurrentChannel()
    hcap.channel.getDataChannel()
    hcap.channel.getChannelMap()
    hcap.channel.getStartChannel()
    hcap.channel.setStartChannel()
    {Event} channel_changed
- <static> hcap.channel.setCurrentChannelAudioLanguageIndex(param)
  Sets the audio language of the current channel.

  Item | Value
  --- | ---
  audio language list | en,ko,fr,en,xx
  index | 0, 1, 2, 3, 4
  Audio Language List & Index Example

      hcap.channel.setCurrentChannelAudioLanguageIndex({
           "index" : 1,
           "onSuccess" : function() {
               console.log("onSuccess");
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

  Parameters:
  {Object} param
    - {Number} param.index [Required] - audio language index to be set. Index starts with 0.
    - {Function} param.onSuccess [Optional] - success callback function.

            param.onSuccess = function() {
                // No Parameter.
            }

    - {Function} param.onFailure [Optional] - failure callback function.
      Setting to the same audio language index as before will invoke this callback function.

            param.onFailure = function (param) {
                // {String} param.errorMessage - in case of failure, this message provides the details.
            }

  Since:
    1.3.1
  See:
    hcap.channel.getCurrentChannelAudioLanguageList()
    hcap.channel.getCurrentChannelAudioLanguageIndex()
- <static> hcap.channel.setCurrentChannelSubtitleIndex(param)
  Sets the subtitle index of the current channel.

  Item | Value
  --- | ---
  Subtitle List | off,en,ko,fr,en,xx,eng
  index | 0, 1, 2, 3, 4, 5, 6
  Subtitle List & Index Example

  If the application wants to set the subtitle to French ('fr'), use the index value '3'.

      hcap.channel.setCurrentChannelSubtitleIndex({
           "index" : 1,
           "onSuccess" : function() {
               console.log("onSuccess");
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

  Parameters:
  {Object} param
    - {Number} param.index [Required] - subtitle setting index to be set. Index starts with 0.
    - {Function} param.onSuccess [Optional] - success callback function.

            param.onSuccess = function() {
                // No Parameter.
            }

    - {Function} param.onFailure [Optional] - failure callback function.
      Setting to the same subtitle index as before will invoke this callback function.

            param.onFailure = function (param) {
                // {String} param.errorMessage - in case of failure, this message provides the details.
            }

  Since:
    1.3.1
  See:
    hcap.channel.getCurrentChannelSubtitleList()
    hcap.channel.getCurrentChannelSubtitleIndex()
- <static> hcap.channel.setStartChannel(param)
  Sets the start channel which is displayed at first when TV is turned on. This API is very similar to hcap.channel.requestChangeCurrentChannel(), but in this case, just update the start channel setting without channel change. For detailed information, such as example and related information, please refer to hcap.channel.requestChangeCurrentChannel().

      // set start channel with RF channel class 2
      hcap.channel.setStartChannel({
           "channelType" : hcap.channel.ChannelType.RF,
           "frequency" : 63000000,
           "programNumber" : 1,
           "rfBroadcastType" : hcap.channel.RfBroadcastType.TERRESTRIAL,
           "onSuccess" : function() {
               console.log("onSuccess");
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

  Parameters:
  {Object} param
    - { Channel Properties } [Required] - Channel Information
    If you want to set off start channel, set param.channelType to hcap.channel.ChannelType.UNKNOWN.
- {Function} param.onSuccess [Optional] - success callback function.
  Setting to the same channel as before will invoke this callback function.

        param.onSuccess = function() {
            // No Parameter.
        }

- {Function} param.onFailure [Optional] - failure callback function.

        param.onFailure = function (param) {
            // {String} param.errorMessage - in case of failure, this message provides the details.
        }

Since:
  1.3.1

See:
  hcap.channel.requestChangeCurrentChannel()
  hcap.channel.getCurrentChannel()
  hcap.channel.replayCurrentChannel()
  hcap.channel.stopCurrentChannel()
  hcap.channel.getDataChannel()
  hcap.channel.getChannelMap()
  hcap.channel.getStartChannel()
  hcap.channel.setStartChannel()
  {Event} channel_changed

- <static> hcap.channel.stopCurrentChannel(param)
  Stops AV play of the current channel.
  - RF channel : Stops RF tuning and stops playing AV.
  - IP channel : Leaves IP multicast group and stops playing AV.
  This API has only an effect on the current channel.
  When the channel is changed, new channel will be played.
  To replay the current channel, use hcap.channel.replayCurrentChannel().

      hcap.channel.stopCurrentChannel({
           "onSuccess" : function() {
               console.log("onSuccess");
           },
           "onFailure" : function(f) {
               console.log("onFailure : errorMessage = " + f.errorMessage);
           }
      });

  Parameters:
  {Object} param
    - {Function} param.onSuccess [Optional] - success callback function.

            param.onSuccess = function() {
                // no parameter.
            }

    - {Function} param.onFailure [Optional] - failure callback function.
      Stopping already stopped channel will invoke this callback function.

            param.onFailure = function (param) {
                // {String} param.errorMessage - in case of failure, this message provides the details.
            }

  Since:
    1.3.1
  See:
    hcap.channel.requestChangeCurrentChannel()
    hcap.channel.getCurrentChannel()
    hcap.channel.replayCurrentChannel()
    hcap.channel.stopCurrentChannel()
    hcap.channel.getDataChannel()
    hcap.channel.getChannelMap()
    hcap.channel.getStartChannel()
    hcap.channel.setStartChannel()
    {Event} channel_changed