| angular.module('bmcApp').controller('fwupdateController', [ |
| '$scope', '$http', '$uibModal', '$state', |
| function($scope, $http, $uibModal, $state) { |
| $scope.files = []; |
| $scope.$watch('files', function(newValue, oldValue) { |
| if (newValue.length > 0) { |
| console.log('Loading firware file ' + $scope.files[0]); |
| r = new FileReader(); |
| r.onload = function(e) { |
| get_image_info = function(buffer) { |
| image_info = {'valid' : false}; |
| var expected = '*SignedImage*\0\0\0'; |
| |
| var dv1 = new Int8Array(e.target.result, 0, 16); |
| |
| for (var i = 0; i != expected.length; i++) { |
| if (dv1[i] != expected.charCodeAt(i)) { |
| return image_info; |
| } |
| } |
| image_info['valid'] = true; |
| var generation = new Int8Array(e.target.result, 16, 17)[0]; |
| image_info['generation'] = generation; |
| if ((generation < 4) || |
| (generation > 5)) { // not VLN generation header |
| |
| return image_info; |
| } else { |
| var version_minor = new Uint16Array(e.target.result, 20, 22)[0]; |
| image_info['major_version'] = |
| new Uint8Array(e.target.result, 28, 29)[0]; |
| image_info['submajor_version'] = |
| new Uint8Array(e.target.result, 29, 30)[0].toString(16); |
| var version_minor2 = new Uint16Array(e.target.result, 30, 32)[0]; |
| image_info['sha1_version'] = |
| ('0000' + version_minor2.toString(16)).substr(-4) + |
| ('0000' + version_minor.toString(16)).substr(-4); |
| } |
| return image_info; |
| }; |
| var image_info = get_image_info(e.target.result); |
| $scope.image_info = image_info; |
| |
| var objectSelectionModal = $uibModal.open({ |
| templateUrl : 'static/partial-fwupdateconfirm.html', |
| controller : function($scope) { |
| $scope.image_info = image_info; |
| $scope.file_to_load = file_to_load; |
| // The function that is called for modal closing (positive button) |
| |
| $scope.okModal = function() { |
| // Closing the model with result |
| objectSelectionModal.close($scope.selection); |
| $http({ |
| method : 'POST', |
| url : '/intel/firmwareupload', |
| data : e.target.result, |
| transformRequest : [], |
| headers : {'Content-Type' : 'application/octet-stream'} |
| }) |
| .then( |
| function successCallback(response) { |
| console.log('Success uploaded. Response: ' + |
| response.data) |
| }, |
| function errorCallback(response) { |
| console.log('Error status: ' + response.status) |
| }); |
| }; |
| |
| // The function that is called for modal dismissal(negative |
| // button) |
| |
| $scope.dismissModal = function() { |
| objectSelectionModal.dismiss(); |
| }; |
| } |
| }); |
| }; |
| var file_to_load = $scope.files[0]; |
| $scope.file_to_load = $scope.files[0]; |
| r.readAsArrayBuffer($scope.files[0]); |
| } |
| }); |
| |
| } |
| ]); |