-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtest.js
executable file
·86 lines (79 loc) · 1.99 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#! /usr/bin/env node
var PLM = require("./"),
util = PLM.util,
readline = require("readline");
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
completer: completer,
terminal: true
});
var modem = new PLM(process.argv[2], function(data){
console.log(
"Connected to PLM\n" +
"ID: " + util.makeHex(data.id) + "\n" +
"Device Category: " + util.makeHex(data.deviceCategory) + "\n" +
"Device Subcategory: " + util.makeHex(data.deviceSubcategory) + "\n" +
"Firmware Version: " + util.makeHex(data.firmwareVersion)
);
rl.prompt();
});
modem.on("error", function(err){
console.error(err.toString());
rl.prompt();
});
function completer(line){
return [[], ""];
}
var helpCmds = {
sendCommand: "",
sendDirect: ""
}
var commands = {
sendCommand: function(){
rl.pause();
modem.sendCommand(util.parseHex(Array.prototype.slice.call(arguments)), function(ACK, cmd, data){
console.log("ACK:" + ACK + "; CMD:" + util.makeHex(cmd) + "; DATA: " + util.makeHex(data));
rl.resume();
rl.prompt();
});
},
sendDirect: function(to, cmd, hops){
rl.pause();
modem.sendINSTEON({
to: util.parseHex(to),
command: util.parseHex(cmd, 2),
flags: {
maxHops: parseInt(hops, 10)
}
}, function(err, reply){
if(err){
console.error(err);
}else{
console.log("REPLY FROM: " + util.makeHex(reply.from));
console.log("COMMAND NUMBER: " + util.makeHex(reply.command.number));
console.log("COMMAND DATA: " + util.makeHex(reply.command.data));
}
rl.resume();
rl.prompt();
});
},
help: function(command){
if(command in helpCmds){
console.log(helpCmds[command]);
rl.prompt();
}else{
console.log("Available commands: " + Object.keys(helpCmds).sort().join(", "));
rl.prompt();
}
}
};
rl.on("line", function(line){
var args = line.split(" ");
if(args[0] in commands){
commands[args[0]].apply(this, args.slice(1));
}else{
console.error("Command not found: " + args[0] + ". Type `help` for a list.");
rl.prompt();
}
});