artik-sdk
Version:
SDK for developing applications for Samsung's ARTIK platform
196 lines (167 loc) • 3.91 kB
JavaScript
var bluetooth = require('../src/bluetooth');
var CommandLine = require('./commandline');
var bt = new bluetooth();
var ftp = new bluetooth.Ftp();
var remote_addr = null;
ftp.on('transfer', function(properties) {
console.log("Transfer file: " + properties.filename + " - " + properties.status + " - " + properties.transfered + "/" + properties.size);
});
function get_file(args, help) {
if (args.length != 2) {
help();
return;
}
ftp.get_file(args[0], args[1]);
console.log("Get file " + args[0] + " from " + remote_addr + "... in progress");
}
function put_file(args, help) {
if (args.length != 2) {
help();
return;
}
ftp.put_file(args[0], args[1]);
console.log("Put file " + args[0] + " to " + remote_addr + "... in progress");
}
function list_files(args, help) {
var files = ftp.list_folder();
files.forEach(function(e) {
console.log("Filename: " + e.filename);
console.log("File type: " + e.type);
console.log("Modified: " + e.modified);
console.log("Permission: " + e.permission);
console.log("Size: " + e.size);
console.log("");
});
console.log("List current directory succeeded");
}
function delete_file(args, help) {
if (args.length != 1) {
help();
return;
}
ftp.delete_file(args[0]);
console.log("Delete file " + args[0] + " succeeded");
}
function change_directory(args, help) {
if (args.length != 1) {
help();
return;
}
ftp.change_folder(args[0]);
console.log("Change current folder to " + args[0] + " succeeded");
}
function make_directory(args, help) {
if (args.length != 1) {
help();
return;
}
ftp.create_folder(args[0]);
console.log("Create new folder " + args[0] + " succeeded");
}
function cancel_transfer(args, help) {
ftp.cancel_transfer();
console.log("Cancel transfer succeeded");
}
function resume_transfer(args, help) {
ftp.resume_transfer();
console.log("Resume transfer succeeded");
}
function suspend_transfer(args, help) {
ftp.suspend_transfer();
console.log("Suspend transfer succeeded");
}
function quit(args) {
process.exit(0);
}
var commands = [
{
command: "get",
description: "Get file",
doc: "get remote_source_file local_target_file",
handler: get_file
},
{
command: "put",
description: "Put file",
doc: "put local_source_file remote_target_file",
handler: put_file
},
{
command: "ls",
description: "List files",
doc: "ls",
handler: list_files
},
{
command: "delete",
description: "Delete file",
doc: "delete file",
handler: delete_file
},
{
command: "cd",
description: "Change the current folder",
doc: "cd folder",
handler: change_directory
},
{
command: "mkdir",
description: "Create new folder",
doc: "mkdir folder",
handler: make_directory
},
{
command: "cancel",
description: "Cancel transfer file",
doc: "cancel",
handler: cancel_transfer
},
{
command: "resume",
description: "Resume transfer file",
doc: "resume",
handler: resume_transfer
},
{
command: "suspend",
description: "Suspend transfer file",
doc: "suspend",
handler: suspend_transfer
},
{
command: "quit",
description: "Quit",
doc: "quit",
handler: quit
}
];
var command_line = new CommandLine(commands);
bt.on('started', function() {
console.log('onstarted');
bt.start_scan();
});
function stopScanning() {
bt.stop_scan();
console.log("Please input FTP server MAC address:");
command_line.read_line(function (line) {
remote_addr = line;
bt.start_bond(line);
});
}
setTimeout(stopScanning, 20000);
bt.on('scan', function(err, device) {
console.log('onscan (err = ' + err + '): ' + device);
});
bt.on('bond', function(err, paired) {
console.log('bonded (err=' + err + '): ' + paired);
if (!err) {
console.log("Connect to " + remote_addr);
ftp.create_session(remote_addr);
command_line.process();
}
});
process.on('SIGINT', function() {
if (bt.is_scanning())
bt.stop_scan();
process.exit(0);
});