blob: e33a30f5c53f6de6a6ea512655e702b9b0b96067 [file] [log] [blame]
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]);
}
});
}
]);