artik-sdk
Version:
SDK for developing applications for Samsung's ARTIK platform
113 lines (86 loc) • 2.88 kB
JavaScript
var bluetooth = require('../src/bluetooth');
var readline = require('readline');
function Request(display_cb, process_cb) {
this.display_cb = display_cb;
this.process_cb = process_cb;
}
var requests = [];
var agent = new bluetooth.Agent();
var bt = new bluetooth();
agent.on("request_pincode", function(request, device) {
console.log("request pincode");
var req = new Request(
function() { console.log("Enter the pincode of " + device); },
function(pincode) { request.send_pincode(pincode); }
);
requests.push(req);
});
agent.on("display_pincode", function(device, pincode) {
console.log("display_pincode");
var req = new Request(
function() { console.log("The pincode for the device " + device + " is " + pincode); },
null
);
requests.push(req);
});
agent.on("request_passkey", function(request, device) {
console.log("request_passkey");
var req = new Request(
function() { console.log("Enter the passkey of " + device); },
function(passkey) { request.send_passkey(passkey); });
requests.push(req);
});
agent.on("display_passkey", function(device, passkey, entered) {
console.log("display_passkey");
var req = new Request(
function() { console.log("The passkey for the device " + device + " is " + passkey); },
null );
requests.push(req);
});
agent.on("confirmation", function(request, device, passkey) {
console.log("confirmation");
var req = new Request(
function() { console.log("Confirm the passkey " + passkey + " for the device? (yes/no)" + device); },
function(confirmation) { if (confirmation == "yes") request.send_empty_response(); });
requests.push(req);
});
agent.on("authorization", function(request, device) {
console.log("authorization");
var req = new Request(
function() { console.log("Request authorization for the device? (yes/no)" + device); },
function(confirmation) { if (confirmation == "yes") request.send_empty_response(); }
);
requests.push(req);
});
agent.on("authorize_service", function(request, device, uuid) {
console.log("authorize_service");
var req = new Request(
function() { console.log("Authorize service " + uuid + " for device " + device + "? (yes/no)"); },
function(confirmation) { if (confirmation == "yes") request.send_empty_response(); });
requests.push(req);
});
var current_request = null;
var r1 = readline.createInterface({
input: process.stdin,
output: process.stdout,
terminal: false
});
r1.on("line", function(line) {
if (current_request == null)
return;
current_request.process_cb(line);
current_request = null;
});
setInterval(function() {
if (requests.length == 0)
return;
if (current_request != null)
return;
var request = requests.pop();
request.display_cb();
if (request.process_cb != null)
current_request = request;
}, 100);
bt.set_discoverable(true);
agent.register_capability("keyboard_only");
agent.set_default();