diff --git a/main.js b/main.js index 6024186..b7d7e48 100644 --- a/main.js +++ b/main.js @@ -13,7 +13,7 @@ let mainWindow function createWindow () { // Create the browser window. - mainWindow = new BrowserWindow({width: 1024, height: 600, resizable: false, fullscreenable: false, autoHideMenuBar: true}) + mainWindow = new BrowserWindow({width: 1024, height: 670, resizable: false, fullscreenable: false, autoHideMenuBar: true}) // and load the index.html of the app. mainWindow.loadURL(url.format({ diff --git a/package.json b/package.json index bc29aca..832d036 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "autoflash", - "version": "2017.5.28-1", + "version": "2017.5.30-1", "description": "Autoflasher for E3372", "main": "main.js", "scripts": { @@ -19,7 +19,6 @@ "bootstrap": "^3.3.7", "iconv-lite": "^0.4.17", "jQuery": "^1.7.4", - "node-wmi": "0.0.4", - "serialport": "^5.0.0-beta3" + "node-wmi": "0.0.4" } } diff --git a/renderer.js b/renderer.js index 607472c..465b82c 100644 --- a/renderer.js +++ b/renderer.js @@ -10,7 +10,7 @@ var exec = require('child_process').exec; var spawn = require('child_process').spawn; var path = require('path'); var iconv = require('iconv-lite'); -var SerialPort = require('serialport'); +// var SerialPort = require('serialport'); var wmi = require('node-wmi'); var $ = require('jQuery'); require('bootstrap'); @@ -48,15 +48,15 @@ function _updateLog(level, data) { } function error_handler(func, args, callback) { - _updateLog('error', func + ' ' + JSON.stringify(args)); + _updateLog('error', func.name + ' ' + JSON.stringify(args)); var error_mess = '

' + DIALOG_ERROR + '! '+ DIALOG_WHAT_TO_DO + ' [s(' + DIALOG_WHAT_TO_DO_SKIP + ')/R(' + DIALOG_WHAT_TO_DO_RETRY + ')/e(' + DIALOG_WHAT_TO_DO_EXIT + ')/a(' + DIALOG_WHAT_TO_DO_SKIP_ALL + ')] '; if(skip_all === true) error_mess += 'a'; else error_mess += ''; error_mess += '

'; - $('body > div.container').append('
'); $('body > div.container').append(error_mess); + $('body > div.container').append('
'); if(!skip_all) { $('input#error_handler').on('keydown', function(e) { if (e.which == 13) { @@ -76,7 +76,7 @@ function error_handler(func, args, callback) { skip_all = true; break; default: - if(typeof(args) == 'object') func.apply(...args); + if(args && typeof(args) == 'object') func.apply(this, args); else func(); break; } @@ -87,26 +87,23 @@ function error_handler(func, args, callback) { function _detectSuccess(callback) { exec('atscr ' + port + ' "AT^HWVER"', function(error, stdout, stderr) { - model = /.*:\"(.*)\"/.exec($.grep(stdout.split('\n'), function(elem, idx) { + model = $(/.*:\"(.*)\"/.exec($.grep(stdout.split('\n'), function(elem, idx) { if(!/AT/.test(elem) && /HWVER/.test(elem)) return true; else return false; - })[0]); - if(model) model = model[1]; + })[0]))[1]; exec('atscr ' + port + ' "AT^DLOADINFO?"', function(error, stdout, stderr) { if(!model) { - model = /product name:(.*)/.exec($.grep(stdout.split('\n'), function(elem, idx) { + model = $(/product name:(.*)/.exec($.grep(stdout.split('\n'), function(elem, idx) { return /product name/.test(elem); - })[0]); - if(model) model = model[1]; - else model = ''; + })[0]))[1]; + if(!model) model = ''; } - version = /swver:(.*)/.exec($.grep(stdout.split('\n'), function(elem, idx) { + version = $(/swver:(.*)/.exec($.grep(stdout.split('\n'), function(elem, idx) { return /swver/.test(elem); - })[0]); - if(version) version = version[1]; - else version = ''; + })[0]))[1]; + if(!version) version = ''; if(typeof(callback) == 'function') callback(); }); }); @@ -117,32 +114,29 @@ function _detectSuccess(callback) { // atscr.flush(function() { // atscr.write('AT^HWVER', function() { // atscr.drain(function() { - // model = /.*:\"(.*)\"/.exec($.grep(atscr.read(4096).toString().split('\n'), function(elem, idx) { + // model = $(/.*:\"(.*)\"/.exec($.grep(atscr.read(4096).toString().split('\n'), function(elem, idx) { // if(!/AT/.test(elem) && /HWVER/.test(elem)) // return true; // else // return false; - // })[0]); - // if(model) model = model[1]; - // else model = ''; + // })[0]))[1]; + // if(!model) model = ''; // atscr.flush(function() { // atscr.write('AT^DLOADINFO?', function() { // atscr.drain(function() { // if(!model) { - // model = /product name:(.*)/.exec($.grep(atscr.read(4096).toString().split('\n'), function(elem, idx) { + // model = $(/product name:(.*)/.exec($.grep(atscr.read(4096).toString().split('\n'), function(elem, idx) { // return /product name/.test(elem); - // })[0]); - // if(model) model = model[1]; - // else model = ''; + // })[0]))[1]; + // if(!model) model = ''; // } // atscr.flush(function() { // atscr.write('AT^DLOADINFO?', function() { // atscr.drain(function() { - // version = /swver:(.*)/.exec($.grep(atscr.read(4096).toString().split('\n'), function(elem, idx) { + // version = $(/swver:(.*)/.exec($.grep(atscr.read(4096).toString().split('\n'), function(elem, idx) { // return /swver/.test(elem); - // })[0]); - // if(version) version = version[1]; - // else version = ''; + // })[0]))[1]; + // if(!version) version = ''; // atscr.close(function() { // if(typeof(callback) == 'function') callback(); // }); @@ -158,15 +152,14 @@ function _detectSuccess(callback) { // }); // } -function detect(callback) { +function detect(useInFlashMode, callback) { _updateLog('start', 'detect'); switch(mode) { case 'port': if(typeof(agr_port) != 'undefined') { port = agr_port; - port_number = /COM(\d*)/.exec(port); - if(port_number) port_number = port_number[1]; - else port_number = ''; + port_number = $(/COM(\d*)/.exec(port))[1]; + if(!port_number) port_number = ''; _updateLog('info', 'Port: ' + port); $('body > div.container').append('

' + DIALOG_SUCCESS + '!

'); $('body > div.container').append('
'); @@ -177,8 +170,8 @@ function detect(callback) { $('input#port').on('keydown', function(e) { if (e.which == 13) { port = $(this).val(); - port_number = /COM(\d*)/.exec(port); - if(port_number) port_number = port_number[1]; + port_number = $(/COM(\d*)/.exec(port))[1]; + if(!port_number) port_number = ''; _updateLog('info', 'Port: ' + port); $('body > div.container').append('

' + DIALOG_SUCCESS + '!

'); $('body > div.container').append('
'); @@ -204,7 +197,7 @@ function detect(callback) { class: 'Win32_NetworkAdapterConfiguration', where: 'Index=' + hilink_index }, function(err, result) { - if(result) if(result[0].DefaultIPGateway) hilink_ip = result[0].DefaultIPGateway[0]; + if(result) if(result[0]) if(result[0].DefaultIPGateway) hilink_ip = result[0].DefaultIPGateway[0]; else hilink_ip = ''; if(hilink_ip) { $('body > div.container').append('

' + DIALOG_TRY_OPEN_PORT + '

'); @@ -222,20 +215,35 @@ function detect(callback) { class: 'Win32_PnPEntity', where: 'ClassGuid="{4d36e978-e325-11ce-bfc1-08002be10318}" and Name like "%PC UI Interface%"' }, function(err, result) { - if(result) port = /.* \((COM\d*)\)/.exec(result[0].Name); + if(result) if(result[0]) if(result[0].Name) port = $(/.* \((COM\d*)\)/.exec(result[0].Name))[1]; else port = ''; - if(port) port = port[1]; + if(!port) port = ''; if(port) { - port_number = /COM(\d*)/.exec(port); - if(port_number) port_number = port_number[1]; - else port_number = ''; - _updateLog('info', 'Port: ' + port + ''); - $('body > div.container').append('

' + DIALOG_SUCCESS + '!

'); - $('body > div.container').append('
'); - _updateLog('success', 'detect'); - _detectSuccess(callback); - } - else { + if(useInFlashMode === true) { + port_number = $(/COM(\d*)/.exec(port))[1]; + if(!port_number) port_number = ''; + _updateLog('info', 'Port: ' + port ); + $('body > div.container').append('

' + DIALOG_SUCCESS + '!

'); + $('body > div.container').append('
'); + _updateLog('success', 'detect'); + _detectSuccess(callback); + } else { + exec('atscr ' + port + ' "AT^DLOADINFO?"', function(error, stdout, stderr) { + if(stdout.indexOf('dload type:0') != -1) { + port_number = $(/COM(\d*)/.exec(port))[1]; + if(!port_number) port_number = ''; + _updateLog('info', 'Port: ' + port ); + $('body > div.container').append('

' + DIALOG_SUCCESS + '!

'); + $('body > div.container').append('
'); + _updateLog('success', 'detect'); + _detectSuccess(callback); + } else { + port_number = ''; + setTimeout(whileFunc, 0, callback); + } + }); + } + } else { port_number = ''; setTimeout(whileFunc, 0, callback); } @@ -253,9 +261,8 @@ function detect_flash(callback) { case 'port': if(typeof(agr_flash_port) != 'undefined') { flash_port = agr_flash_port; - flash_port_number = /COM(\d*)/.exec(flash_port); - if(flash_port_number) flash_port_number = flash_port_number[1]; - else flash_port_number = ''; + flash_port_number = $(/COM(\d*)/.exec(flash_port))[1]; + if(!flash_port_number) flash_port_number = ''; _updateLog('info', 'Download port: ' + flash_port); $('body > div.container').append('

' + DIALOG_SUCCESS + '!

'); $('body > div.container').append('
'); @@ -266,9 +273,8 @@ function detect_flash(callback) { $('input#flash_port').on('keydown', function(e) { if (e.which == 13) { flash_port = $(this).val(); - flash_port_number = /COM(\d*)/.exec(flash_port); - if(flash_port_number) flash_port_number = flash_port_number[1]; - else flash_port_number = ''; + flash_port_number = $(/COM(\d*)/.exec(flash_port))[1]; + if(!flash_port_number) flash_port_number = ''; _updateLog('info', 'Download port: ' + flash_port); $('body > div.container').append('

' + DIALOG_SUCCESS + '!

'); $('body > div.container').append('
'); @@ -287,28 +293,25 @@ function detect_flash(callback) { class: 'Win32_PnPEntity', where: 'ClassGuid="{4d36e978-e325-11ce-bfc1-08002be10318}" and (PNPDeviceID like "%VID_12D1&PID_1C05&MI_02%" or PNPDeviceID like "%VID_12D1&PID_1442&MI_00%")' }, function(err, result) { - if(result) flash_port = /.* \((COM\d*)\)/.exec(result[0].Name); + if(result) flash_port = $(/.* \((COM\d*)\)/.exec(result[0].Name))[1]; else flash_port = ''; - if(flash_port) flash_port = flash_port[1]; + if(!flash_port) flash_port = ''; if(flash_port) { exec('atscr ' + flash_port + ' "AT^DLOADINFO?"', function(error, stdout, stderr) { if(stdout.indexOf('dload type:1') != -1) { - flash_port_number = /COM(\d*)/.exec(flash_port); - if(flash_port_number) flash_port_number = flash_port_number[1]; - else flash_port_number = ''; + flash_port_number = $(/COM(\d*)/.exec(flash_port))[1]; + if(!flash_port_number) flash_port_number = ''; _updateLog('info', 'Download port: ' + flash_port); $('body > div.container').append('

' + DIALOG_SUCCESS + '!

'); $('body > div.container').append('
'); _updateLog('success', 'detect_flash'); if(typeof(callback) == 'function') callback(); - } - else { + } else { flash_port_number = ''; setTimeout(whileFunc, 0, callback); } }); - } - else { + } else { flash_port_number = ''; setTimeout(whileFunc, 0, callback); } @@ -328,9 +331,8 @@ function detect_dload(callback) { case 'port': if(typeof(agr_dload_port) != 'undefined') { dload_port = agr_dload_port; - dload_port_number = /COM(\d*)/.exec(dload_port); - if(dload_port_number) dload_port_number = dload_port_number[1]; - else dload_port_number = ''; + dload_port_number = $(/COM(\d*)/.exec(dload_port))[1]; + if(!dload_port_number) dload_port_number = ''; _updateLog('info', 'Boot port: ' + dload_port); $('body > div.container').append('

' + DIALOG_SUCCESS + '!

'); $('body > div.container').append('
'); @@ -341,10 +343,9 @@ function detect_dload(callback) { $('input#dload_port').on('keydown', function(e) { if (e.which == 13) { dload_port = $(this).val(); - dload_port_number = /COM(\d*)/.exec(dload_port); - if(dload_port_number) dload_port_number = dload_port_number[1]; - else dload_port_number = ''; - _updateLog('info', 'Boot port: ' + dload_port + ''); + dload_port_number = $(/COM(\d*)/.exec(dload_port))[1]; + if(!dload_port_number) dload_port_number = ''; + _updateLog('info', 'Boot port: ' + dload_port ); $('body > div.container').append('

' + DIALOG_SUCCESS + '!

'); $('body > div.container').append('
'); _updateLog('success', 'detect_dload'); @@ -362,20 +363,18 @@ function detect_dload(callback) { class: 'Win32_PnPEntity', where: 'ClassGuid="{4d36e978-e325-11ce-bfc1-08002be10318}" and PNPDeviceID like "%VID_12D1&PID_1443%"' }, function(err, result) { - if(result) dload_port = /.* \((COM\d*)\)/.exec(result[0].Name); + if(result) if(result[0]) if(result[0].Name) dload_port = $(/.* \((COM\d*)\)/.exec(result[0].Name))[1]; else dload_port = ''; - if(dload_port) dload_port = dload_port[1]; - if(dload_port) { - dload_port_number = /COM(\d*)/.exec(dload_port); - if(dload_port_number) dload_port_number = dload_port_number[1]; - else dload_port_number = ''; + if(dload_port) dload_port = ''; + if(!dload_port) { + dload_port_number = $(/COM(\d*)/.exec(dload_port))[1]; + if(!dload_port_number) dload_port_number = ''; _updateLog('info', 'Boot port: ' + dload_port); $('body > div.container').append('

' + DIALOG_SUCCESS + '!

'); $('body > div.container').append('
'); _updateLog('success', 'detect_dload'); if(typeof(callback) == 'function') callback(); - } - else { + } else { dload_port_number = ''; setTimeout(whileFunc, 0, callback); } @@ -389,14 +388,14 @@ function detect_dload(callback) { function factory(callback) { _updateLog('start', 'factory'); - detect(function() { + detect(false, function() { $('body > div.container').append('

' + DIALOG_FACTORY + '

'); exec('atscr ' + port + ' "AT^SFM=1"', function(error,stdout, stderr) { if(stdout.indexOf('OK') != -1) { $('body > div.container').append('

' + DIALOG_SUCCESS + '!

'); $('body > div.container').append('
'); } else { - error_handler(factory, null, callback); + error_handler(factory, [callback], callback); return false; } _updateLog('success', 'factory'); @@ -407,14 +406,14 @@ function factory(callback) { function godload(callback) { _updateLog('start', 'godload'); - detect(function() { + detect(false, function() { $('body > div.container').append('

' + DIALOG_GODLOAD + '

'); exec('atscr ' + port + ' "AT^GODLOAD"', function(error, stdout, stderr) { if(stdout.indexOf('OK') != -1) { $('body > div.container').append('

' + DIALOG_SUCCESS + '!

'); $('body > div.container').append('
'); } else { - error_handler(godload, null, callback); + error_handler(godload, [callback], callback); return false; } _updateLog('success', 'godload'); @@ -437,7 +436,7 @@ function _dload(dload_model, callback) { if(code == 0) { $('body > div.container').append('

' + DIALOG_SUCCESS + '!

'); $('body > div.container').append('
'); - _updateLog('success', 'dload ' + dload_model + ''); + _updateLog('success', 'dload ' + dload_model ); } else { error_handler(dload, [dload_model, callback], callback); return false; @@ -456,7 +455,7 @@ function _dload(dload_model, callback) { if(code == 0) { $('body > div.container').append('

' + DIALOG_SUCCESS + '!

'); $('body > div.container').append('
'); - _updateLog('success', 'dload ' + dload_model + ''); + _updateLog('success', 'dload ' + dload_model ); } else { error_handler(dload, [dload_model, callback], callback); return false; @@ -467,7 +466,7 @@ function _dload(dload_model, callback) { } function dload(dload_model, callback) { - _updateLog('start', 'dload ' + dload_model + ''); + _updateLog('start', 'dload ' + dload_model ); detect_dload(function() { _dload(dload_model, callback); }); @@ -805,7 +804,7 @@ function _end() { function start() { $('body > div.container').html(''); - detect(function() { + detect(true, function() { if(model.indexOf('CL2E3372HM') != -1) { _updateLog('info', 'Model: Huawei E3372h'); _updateLog('info', 'Firmware: ' + version); @@ -843,13 +842,13 @@ function start() { default: _updateLog('info', 'Modded firmware: false'); if(model.indexOf('CL2E3372HM') != -1) { - if(/[0-9]*\.([0-9]*)\.[0-9]*\.[0-9]*\.[0-9]*/.exec(version)[1] > 315 || (/[0-9]*\.([0-9]*)\.[0-9]*\.[0-9]*\.[0-9]*/.exec(version) == 315 && /[0-9]*\.[0-9]*\.[0-9]*\.([0-9]*)\.[0-9]*/.exec(version) > 0)) // игла + if($(/[0-9]*\.([0-9]*)\.[0-9]*\.[0-9]*\.[0-9]*/.exec(version))[1] > 315 || (/[0-9]*\.([0-9]*)\.[0-9]*\.[0-9]*\.[0-9]*/.exec(version) == 315 && /[0-9]*\.[0-9]*\.[0-9]*\.([0-9]*)\.[0-9]*/.exec(version) > 0)) // игла e3372h_dload(_end); else e3372h(_end) } else if(model.indexOf('CL1E3372SM') != -1) { - if(/[0-9]*\.([0-9]*)\.[0-9]*\.[0-9]*\.[0-9]*/.exec(version) < 300) // старые модели без проверки подписи + if($(/[0-9]*\.([0-9]*)\.[0-9]*\.[0-9]*\.[0-9]*/.exec(version))[1] < 300) // старые модели без проверки подписи e3372s_old(_end); else e3372s(_end); @@ -879,6 +878,13 @@ function _main() { skip_all = false; + port = ''; + port_number = ''; + flash_port = ''; + flash_port_numer = ''; + dload_port = ''; + dload_port_number = ''; + document.title = DIALOG_TITLE; document.querySelector('body > div.container').innerHTML = '

' + DIALOG_HELLO + '

'; @@ -913,7 +919,7 @@ function _main() { }); } else { mode = agr_mode; - _updateLog('info', 'Autoflash mode: ' + mode + ''); + _updateLog('info', 'Autoflash mode: ' + mode ); start(); } }