-
Notifications
You must be signed in to change notification settings - Fork 39
Expand file tree
/
Copy pathirsend.js
More file actions
108 lines (83 loc) · 2.78 KB
/
irsend.js
File metadata and controls
108 lines (83 loc) · 2.78 KB
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
var Promise = require('bluebird');
var exec = Promise.promisify(require('child_process').exec, { multiArgs: true });
// TODO: execOverride is used for testing. I don't like it.
function IRSend (execOverride) {
this.command = 'irsend';
this.exec = execOverride || exec;
};
// In some cases the default lirc socket does not work
// More info at http://wiki.openelec.tv/index.php?title=Guide_to_Lirc_IR_Blasting
IRSend.prototype.setSocket = function(socket) {
if(socket) {
this.command = 'irsend -d ' + socket;
} else {
this.command = 'irsend';
}
};
IRSend.prototype.list = function(remote, code) {
var command = this._list(remote, code);
return this.exec(command);
};
IRSend.prototype.send_once = function(remote, code) {
var command = this._send_once(remote, code);
return this.exec(command);
};
IRSend.prototype.send_start = function(remote, code) {
var command = this._send_start(remote, code);
return this.exec(command);
};
IRSend.prototype.send_stop = function(remote, code) {
var command = this._send_stop(remote, code);
return this.exec(command);
};
IRSend.prototype.set_transmitters = function(transmitters) {
var command = this._set_transmitters(transmitters);
return this.exec(command);
};
IRSend.prototype.simulate = function(code) {
var command = this._simulate(code);
return this.exec(command);
};
// Internal methods
IRSend.prototype._list = function(remote, code) {
if (!remote) remote = '';
if (!code) code = '';
return this.command + ' LIST "' + remote + '" "' + code + '"';
};
IRSend.prototype._send_once = function(remote, code) {
if (!remote) remote = '';
if (!code) code = '';
if (code instanceof Array) {
var newCode = '';
code.forEach(function(element, index, array) {
newCode = newCode + '"' + element + '" ';
});
code = newCode.trim();
code = code.substr(1, code.length-2);
}
return this.command + ' SEND_ONCE "' + remote + '" "' + code + '"';
};
IRSend.prototype._send_start = function(remote, code) {
if (!remote) remote = '';
if (!code) code = '';
return this.command + ' SEND_START "' + remote + '" "' + code + '"';
};
IRSend.prototype._send_stop = function(remote, code) {
if (!remote) remote = '';
if (!code) code = '';
return this.command + ' SEND_STOP "' + remote + '" "' + code + '"';
};
IRSend.prototype._set_transmitters = function(transmitters) {
if (transmitters instanceof Array) {
var newTransmitters = '';
transmitters.forEach(function(element, index, array) {
newTransmitters = newTransmitters + element + " ";
});
transmitters = newTransmitters.trim();
}
return this.command + ' SET_TRANSMITTERS ' + transmitters;
};
IRSend.prototype._simulate = function(code) {
return this.command + ' SIMULATE "' + code + '"';
};
exports = module.exports = IRSend;