From 1dc98775f830bf099b094ba77e1c88770679da16 Mon Sep 17 00:00:00 2001 From: strawmanbobi Date: Tue, 21 Feb 2017 21:34:20 +0800 Subject: [PATCH] removed decode functionality from irext web console --- .../irda_decoder/libirda_decoder.so | Bin 55345 -> 0 bytes src/web_console/irext_console.js | 7 - .../mini_poem/utils/system_utils.js | 11 + src/web_console/routes/decode_routes.js | 8 - src/web_console/routes/index.js | 1 - src/web_console/services/decode_service.js | 46 --- src/web_console/work_unit/decode_logic.js | 262 ------------------ 7 files changed, 11 insertions(+), 324 deletions(-) delete mode 100644 src/web_console/irda_decoder/libirda_decoder.so delete mode 100644 src/web_console/routes/decode_routes.js delete mode 100644 src/web_console/services/decode_service.js delete mode 100644 src/web_console/work_unit/decode_logic.js diff --git a/src/web_console/irda_decoder/libirda_decoder.so b/src/web_console/irda_decoder/libirda_decoder.so deleted file mode 100644 index b52e9ba7eea9257b180dcd5a691369b94e290dd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55345 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 0) { - var remoteIndex = remoteIndexes[0]; - // prepare decoding remote index - var categoryID = remoteIndex.category_id; - var subCategoryID = remoteIndex.sub_cate; - var fileName = "irda_" + remoteIndex.protocol + "_" + remoteIndex.remote + ".bin"; - var remoteBinaryPath = FILE_TEMP_PATH; - var localBinFileName = remoteBinaryPath + "/cache/" + fileName; - var error = errorCode.SUCCESS; - var bucketName = ""; - fs.exists(localBinFileName, function(exists) { - if (exists) { - prepareDecoding(remoteIndexID, localBinFileName, categoryID, subCategoryID, callback); - } else { - if (remoteIndex.status == enums.ITEM_VALID) { - bucketName = RELEASE_BUCKET_NAME; - } else { - bucketName = DEBUG_BUCKET_NAME; - } - logger.info("bucket name = " + bucketName); - var aliOss = new OSS(OSS_HOST, bucketName, OSS_APP_ID, OSS_APP_SECRET); - aliOss.serveObjectByID(fileName, localBinFileName, - function (serveObjectErr, response) { - if (errorCode.SUCCESS.code == serveObjectErr) { - logger.info("serve remote binary object and cached successfully"); - prepareDecoding(remoteIndexID, localBinFileName, categoryID, subCategoryID, callback); - } else { - logger.info("serve remote binary object and cached failed"); - error = errorCode.FAILED; - callback(error, null); - } - }); - } - }); - } else { - logger.error("remoteIndex does not exist : " + remoteIndexID); - callback(errorCode.FAILED, null); - } - }); -}; - -exports.decodeSocketConnectedWorkUnit = function (client) { - logger.info("decode socket has been connected"); - client.on('disconnect', function() { - onDisconnected(client); - }); - client.on('init', function(ticketKey) { - onInit(ticketKey, client); - }); - client.on('control', function(id) { - onControl(id, client); - }) -}; - -function prepareDecoding(remoteID, binaryFilePath, category, subCategory, callback) { - fs.exists(binaryFilePath, function(exists) { - if (false == exists) { - logger.error("file existence detecting failed"); - callback(errorCode.FAILED, null); - } else { - var token = remoteID; - var timeStamp = new Date().getTime(); - var rand = StringUtils.randomNumber(12); - var key = MD5.MD5(rand + timeStamp); - var ttl = 60 * 60; - ticketPair.setTicketPair(key, token, ttl, function(setTicketPairErr) { - if (errorCode.SUCCESS.code == setTicketPairErr.code) { - var ticket = { - id: key, - ticket: token - }; - callback(setTicketPairErr, key); - } else { - callback(errorCode.FAILED, null); - } - }); - } - }); -} - -function onDisconnected() { - logger.info("client disconnected"); - libDecoder.ir_ac_lib_close(); - libDecoder.ir_tv_lib_close(); -} - -function onInit(ticketKey, client) { - var ticketResponse = new TicketResponse(); - ticketResponse.status = errorCode.FAILED; - ticketResponse.entity = new Object(); - - logger.info('on init, pair decoding ticket'); - ticketPair.getTicketPair(ticketKey, function(getTicketErr, ticket) { - if (getTicketErr.code == errorCode.SUCCESS.code) { - var remoteIndexID = ticket; - // double-check the validation of remote index binary - var conditions = { - id: remoteIndexID, - status: enums.ITEM_VALID - }; - RemoteIndex.findRemoteIndexByCondition(conditions, function(findRemoteIndexesErr, remoteIndexes) { - if (errorCode.SUCCESS.code == findRemoteIndexesErr.code && null != remoteIndexes && - remoteIndexes.length > 0) { - var remoteIndex = remoteIndexes[0]; - // prepare decoding remote index - var categoryID = remoteIndex.category_id; - var subCategoryID = remoteIndex.sub_cate; - var fileName = "irda_" + remoteIndex.protocol + "_" + remoteIndex.remote + ".bin"; - var remoteBinaryPath = FILE_TEMP_PATH; - var binFilePath = remoteBinaryPath + "/cache/" + fileName; - var ret = 0; - if (enums.CATEGORY_AC == categoryID) { - /** not enabled for AC - ret = libDecoder.ir_ac_file_open(binFilePath); - if (0 == ret) { - ret = libDecoder.ir_ac_lib_parse(); - if (0 == ret) { - ticketResponse.status = errorCode.SUCCESS; - ticketResponse.entity = { - category_id: categoryID, - sub_category_id: 0 - }; - logger.info("AC lib opened successfully"); - } else { - libDecoder.ir_ac_lib_close(); - } - } else { - libDecoder.ir_ac_lib_close(); - } - **/ - client.emit('init', ticketResponse); - } else { - logger.info('open tv binary file ' + binFilePath); - ret = libDecoder.ir_tv_file_open(binFilePath); - if (0 == ret) { - logger.info("TV lib opened successfully"); - ret = libDecoder.ir_tv_lib_parse(subCategoryID - 1); - if (0 == ret) { - ticketResponse.status = errorCode.SUCCESS; - ticketResponse.entity = { - category_id: categoryID, - sub_category_id: subCategoryID - }; - logger.info("TV lib parsed successfully"); - } else { - logger.error('tv binary parse failed'); - libDecoder.ir_tv_lib_close(); - } - } else { - logger.error('tv binary open failed'); - libDecoder.ir_tv_lib_close(); - } - } - } - client.emit('init', ticketResponse); - }); - } else { - client.emit('init', ticketResponse); - } - }); -} - -function onControl(control, client) { - logger.info("category = " + control.category_id + ", subCategory = " + control.sub_category_id + ", " + - "buttonID = " + control.key_id); - var categoryID = control.category_id; - var subCategoryID = control.sub_category_id; - var keyID = control.key_id; - var output = IntArrType(2048); - if (enums.CATEGORY_AC == categoryID) { - /** not enabled for AC - var acStatus = new ACStatus({ - acPower: control.ac_status.power, - acTemp: control.ac_status.temp, - acMode: control.ac_status.mode, - acWindDir: control.ac_status.wind_dir, - acWindSpeed: control.ac_status.wind_speed, - acDisplay: 0, - acSleep: 0, - acTimer: 0 - }); - var len = libDecoder.ir_ac_lib_control(acStatus, output, keyID, 0); - **/ - } else { - var len = libDecoder.ir_tv_lib_control(keyID, output); - client.emit('decode', { code: output, len: len}); - } -} \ No newline at end of file