This page shows how to operate dvb scanner with Frontend Service.
var dvbChannelList = new Array(); var channelInfoSequence = new Array(); var scanSettings = null; var scanObj = null; var channelserviceObj; var queryConditions = new Array(); var requestedProperties = new Array(); ScanSettings = function (toiDvbcScanner) { this.dvbCScanner = toiDvbcScanner; this.initialize = function () { this.MODULATION_ANY = this.dvbCScanner.MODULATION_ANY; this.MODULATION_16_QAM = this.dvbCScanner.MODULATION_16_QAM; this.MODULATION_32_QAM = this.dvbCScanner.MODULATION_32_QAM; this.MODULATION_64_QAM = this.dvbCScanner.MODULATION_64_QAM; this.MODULATION_128_QAM = this.dvbCScanner.MODULATION_128_QAM; this.MODULATION_256_QAM = this.dvbCScanner.MODULATION_256_QAM; this.STORE_MODE_OVERWRITE = this.dvbCScanner.STORE_MODE_OVERWRITE; this.STORE_MODE_UPDATE = this.dvbCScanner.STORE_MODE_UPDATE; }; this.getUpdatedValues = function () { // Frequency scan settings this.startFrequency = startFrequencyInput.getValue() - 0; this.endFrequency = endFrequencyInput.getValue() - 0; this.step = stepInput.getValue() - 0; // Nit scan settings this.networkId = networkIdInput.getValue() - 0; this.nitFrequency = nitFrequencyInput.getValue() - 0; // Common scan settings this.symbolRate = symbolRateInput.getValue() - 0; }; // Common scan settings for option list this.getModulation = function () { var result; var selectedOption = modulationOptionList.getSelectedText(); switch (selectedOption) { case "ANY": result = this.MODULATION_ANY; break; case "16_QAM": result = this.MODULATION_16_QAM; break; case "32_QAM": result = this.MODULATION_32_QAM; break; case "64_QAM": result = this.MODULATION_64_QAM; break; case "128_QAM": result = this.MODULATION_128_QAM; break; case "256_QAM": result = this.MODULATION_256_QAM; break; } } this.getStoreMode = function () { var result; var selectedOption = storeModeOptionList.getSelectedText(); DumpLog("selectedOption = " + selectedOption); switch (selectedOption) { case "OVERWRITE": result = this.STORE_MODE_OVERWRITE; break; case "UPDATE": result = this.STORE_MODE_UPDATE; break; default: throw "Exception: unsupported store mode: " + selectedOption; } return result; }; this.saveSettings = function () { this.getUpdatedValues(); var settings = "startFrequency=" + this.startFrequency + "," + "endFrequency=" + this.endFrequency + "," + "step=" + this.step + "," + "networkId=" + this.networkId + "," + "nitFrequency=" + this.nitFrequency + "," + "modulation=" + this.getModulation() + "," + "symbolRate=" + this.symbolRate + "," + "storeMode=" + this.getStoreMode(); toi.informationService.setObject("dvbCPortalSettings", settings, toi.informationService.STORAGE_PERMANENT); }; } // DVB scanner object DvbScanner = function () { var opId; var frontendService = toi.frontendService; this.FrontendId = frontendService.FRONTEND_ID_ANY_FREE; try { this.dvbCScanner = frontendService.createDvbCScanner(this.FrontendId); scanSettings = new ScanSettings(this.dvbCScanner); scanSettings.initialize(); DumpLog("create dvbc scanner succeeded"); } catch (e) { DumpLog("create scanner Caught exception:" + e); } try { this.operationManager = toi.frontendService.getOperationManager(); } catch (e) { DumpLog("get operation manager for frontend service:" + e); } // Release the dvb scanner this.releaseInstance = function () { this.releaseOperation(); try { this.operationManager.removeEventListener( this.operationManager.ON_OPERATION_RESULT, this.onOperationResult); } catch (e) { DumpLog("DvbScanner removeEventListener error:" + e); } try { this.dvbCScanner.releaseInstance(); } catch (e) { DumpLog("ReleaseInstance: " + e); } }; this.releaseOperation = function () { try { isScanning = false; if (opId != null) { this.operationManager.releaseOperation(opId); opId = null; } } catch (e) { DumpLog("release operationManager: " + e); } }; this.prepareFrequencyScan = function () { try { // Make sure do frequency scan only this.clear(); scanSettings.getUpdatedValues(); var frontendParameters = toi.statics.ToiDvbCScannerDvbCFrontendParameters.create (scanSettings.getModulation(), scanSettings.symbolRate); DumpLog("startFrequency: " + (scanSettings.startFrequency) + ", endFrequency: " + (scanSettings.endFrequency) + ", step: " + (scanSettings.step) + ", modulation: " + (scanSettings.getModulation()) + ", symbolRate: " + (scanSettings.symbolRate)); this.dvbCScanner.addFrequencyScanParameters( frontendParameters, scanSettings.startFrequency, scanSettings.endFrequency, scanSettings.step ); } catch (e) { throw ("prepareFrequencyScan: " + e); } }; this.prepareNitScan = function () { try { // Make sure do NIT scan only this.clear(); scanSettings.getUpdatedValues(); var frontendParameters = toi.statics.ToiDvbCScannerDvbCFrontendParameters.create (scanSettings.getModulation(), scanSettings.symbolRate); DumpLog( "nitFrequency: " + (scanSettings.nitFrequency) + ", networkId: " + (scanSettings.networkId) ); this.dvbCScanner.addNitScanParametersByNetworkId( frontendParameters, scanSettings.nitFrequency, scanSettings.networkId); } catch (e) { throw ("prepareNitScan: " + e); } }; this.startScan = function () { try { if (opId == null) { opId = this.operationManager.createOperation("startScan"); } scanProgress = 0; DumpLog("start the dvb scan"); this.dvbCScanner.startScan(opId, scanSettings.getStoreMode()); } catch (e) { DumpLog("startScan error: " + e); } }; this.stopScan = function () { try { DumpLog ("abort the scan"); if (opId != null) { this.operationManager.cancelOperation(opId); opId = null; } scanProgress = 0; } catch (e) { DumpLog("Abort scanner error: " + e); } }; this.onOperationResult = function (event) { if (event.operation.userData == "startScan") { scanProgress = event.operation.progress; DumpLog("onOperationResult Called"); for (var i in event.operation.properties) { if (event.operation.properties[i].id == 1) { DumpLog("onProgress(): the total found services is " + event.operation.properties[i].value + " (State: " + event.operation.state + ", Progress: " + event.operation.progress + ")"); } } if (parseInt(event.operation.progress) == 100) { scanObj.releaseInstance(); scanProgress = 0; } } }; this.operationManager.addEventListener( this.operationManager.ON_OPERATION_RESULT,this.onOperationResult); this.clear = function () { try { this.dvbCScanner.clear(); } catch (e) { DumpLog("clear() Caught exception:" +e); } }; } // End of DVB scanner object function frequencyScan() { if (!isScanning) { VideoPlayer.close(); try { scanObj = new DvbScanner(); isScanning = true; } catch (e) { DumpLog("createScanner: " + e); } scanObj.prepareFrequencyScan(); scanObj.startScan(); } else { abort(); } } function nitScan() { if (!isScanning) { VideoPlayer.close(); try { scanObj = new DvbScanner(); isScanning = true; } catch (e) { DumpLog("createScanner: " + e); } scanObj.prepareNitScan(); scanObj.startScan(); } else { abort(); } } function abort() { if (scanObj != null) { scanObj.stopScan(); scanObj.releaseInstance(); } } function getFrontends() { var frontends = new Array(); frontends= toi.frontendService.getFrontends(); var frontendsValue = ""; for (var i in frontends) { frontendsValue += i; frontendsValue += " "; } frontendListResult.setText(frontendsValue); } function getFrontendInfo() { var id = frontendIdInput.getValue(); try { var frontendInfo = toi.frontendService.getFrontendInfo(id); showFrontendInfo(frontendInfo); } catch (e) { DumpLog("getFrontendInfo exception:" + e); cleanFrontendInfo(); } } function getFrontendInfoBySession() { var id = frontendIdSessionIdInput.getValue(); try { var frontendInfo = toi.frontendService.getFrontendInfoBySession(id); showFrontendInfo(frontendInfo); } catch (e) { DumpLog("getFrontendInfoBySession Caught exception:" + e); cleanFrontendInfo(); } } function showFrontendInfo(frontendInfo) { var SessionId = frontendInfo.sessionId; var IsLocked = frontendInfo.isLocked; var SignalNoiseRatio = frontendInfo.signalNoiseRatio; var BitErrorRate = frontendInfo.bitErrorRate; var UncorrectedBlocks = frontendInfo.uncorrectedBlocks; var RFLevel = frontendInfo.rFLevel; var CentreFrequency = frontendInfo.centreFrequency; var ExtendedProperties = frontendInfo.extendedProperties; var ChannelId = getPropertyValue(ExtendedProperties, toi.consts.ToiFrontendService.PROPERTY_DERIVED_CHANNEL_ID); var SSI = getPropertyValue(ExtendedProperties, toi.consts.ToiFrontendService.PROPERTY_SIGNAL_STRENGTH_INDICATOR); var Quality = getPropertyValue(ExtendedProperties, toi.consts.ToiFrontendService.PROPERTY_SIGNAL_QUALITY_INDICATOR); }