Skip to content

Commit d215944

Browse files
committed
Merge branch 'master' into gh-pages
2 parents aa5b061 + 65dbfd0 commit d215944

5 files changed

Lines changed: 198 additions & 40 deletions

File tree

IrRaw-blockly.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,16 @@
22

33
'use strict';
44

5-
window.getIrRawSend = function (board, pinSendIR) {
5+
/* this function for old version */
6+
window.getIrRaw = (board, pinMapping) => {
7+
return new webduino.module.IrRaw(board, pinMapping);
8+
};
9+
10+
window.getIrRawSend = (board, pinSendIR) => {
611
return new webduino.module.IrRawSend(board, pinSendIR);
712
};
813

9-
window.getIrRawRecv = function (board, pinRecvIR) {
14+
window.getIrRawRecv = (board, pinRecvIR) => {
1015
return new webduino.module.IrRawRecv(board, pinRecvIR);
1116
};
1217

IrRaw.js

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
/**
2+
* For old version
3+
*/
4+
+(function (factory) {
5+
if (typeof exports === 'undefined') {
6+
factory(webduino || {});
7+
} else {
8+
module.exports = factory;
9+
}
10+
}(function (scope) {
11+
'use strict';
12+
13+
var Module = scope.Module,
14+
BoardEvent = scope.BoardEvent;
15+
var self;
16+
var proto;
17+
var sendLen = 32;
18+
var lastSendIR = false;
19+
var debugFlag = false;
20+
21+
function log(obj) {
22+
if (debugFlag) {
23+
console.log(obj);
24+
}
25+
}
26+
27+
function IrRaw(board, pinMapping) {
28+
Module.call(this);
29+
this._board = board;
30+
this.pinSendIR = this.pinRecvIR = -1;
31+
self = this;
32+
if (typeof pinMapping === 'object') {
33+
if (pinMapping['send']) {
34+
this.pinSendIR = pinMapping['send'];
35+
}
36+
if (pinMapping['recv']) {
37+
this.pinRecvIR = pinMapping['recv'];
38+
}
39+
}
40+
onMessage();
41+
}
42+
43+
function onMessage() {
44+
self._board.on(webduino.BoardEvent.SYSEX_MESSAGE, function (event) {
45+
var m = event.message;
46+
//send IR data to Board
47+
if (m[0] == 0x04 && m[1] == 0x09 && m[2] == 0x0B) {
48+
log("send IR data to Board callback");
49+
if (lastSendIR) {
50+
//store OK
51+
lastSendIR = false;
52+
log("send pin:" + self.pinSendIR);
53+
self._board.send([0xf0, 0x04, 0x09, 0x0C, self.pinSendIR, 0xF7]);
54+
}
55+
}
56+
//trigger IR send
57+
else if (m[0] == 0x04 && m[1] == 0x09 && m[2] == 0x0C) {
58+
log("trigger IR send callback...");
59+
self.irSendCallback();
60+
}
61+
//record IR data
62+
else if (m[0] == 0x04 && m[1] == 0x09 && m[2] == 0x0D) {
63+
log("record IR callback...");
64+
var strInfo = '';
65+
for (var i = 3; i < m.length; i++) {
66+
strInfo += String.fromCharCode(m[i]);
67+
}
68+
self.irData = strInfo.substring(4);
69+
self.irRecvCallback(self.irData);
70+
} else {
71+
log(event);
72+
}
73+
});
74+
}
75+
76+
77+
function send(startPos, data) {
78+
var CMD = [0xf0, 0x04, 0x09, 0x0A];
79+
var raw = [];
80+
raw = raw.concat(CMD);
81+
var n = '0000' + startPos.toString(16);
82+
n = n.substring(n.length - 4);
83+
for (var i = 0; i < 4; i++) {
84+
raw.push(n.charCodeAt(i));
85+
}
86+
raw.push(0xf7);
87+
// send Data //
88+
CMD = [0xf0, 0x04, 0x09, 0x0B];
89+
raw = raw.concat(CMD);
90+
for (i = 0; i < data.length; i++) {
91+
raw.push(data.charCodeAt(i));
92+
}
93+
raw.push(0xf7);
94+
self._board.send(raw);
95+
}
96+
97+
function sendIRCmd(cmd, len) {
98+
for (var i = 0; i < cmd.length; i = i + len) {
99+
var data = cmd.substring(i, i + len);
100+
send(i / 8, data);
101+
}
102+
lastSendIR = true;
103+
}
104+
105+
IrRaw.prototype = proto = Object.create(Module.prototype, {
106+
constructor: {
107+
value: IrRaw
108+
}
109+
});
110+
111+
proto.receive = function (callback) {
112+
self.irRecvCallback = callback;
113+
if (self.pinRecvIR > 0) {
114+
self._board.send([0xF0, 0x04, 0x09, 0x0D, self.pinRecvIR, 0xF7]);
115+
log("wait for receiving...");
116+
}
117+
};
118+
119+
proto.send = function (data, callback) {
120+
if (self.pinSendIR > 0) {
121+
sendIRCmd(data, sendLen);
122+
self.irSendCallback = callback;
123+
}
124+
}
125+
126+
proto.debug = function (val) {
127+
if (typeof val == 'boolean') {
128+
self.isDebug = val;
129+
}
130+
}
131+
132+
proto.sendPin = function (pin) {
133+
this.pinSendIR = pin;
134+
}
135+
proto.recvPin = function (pin) {
136+
this.pinRecvIR = pin;
137+
}
138+
139+
scope.module.IrRaw = IrRaw;
140+
}));

IrRawSend.js

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,35 +7,38 @@
77
}(function (scope) {
88
'use strict';
99

10-
var Module = scope.Module;
11-
var proto;
12-
var sendLen = 32;
13-
var self;
14-
var lastSendIR = false;
10+
let Module = scope.Module;
11+
let WEBDUINO_COMMAND = 0x04;
12+
let SENSOR_IRRSEND = 0x09;
13+
let START_POS = 0x0A;
14+
let SEND_RAW_DATA = 0x0B;
15+
let TRIGGER_IR = 0x0C;
16+
let proto;
17+
let sendLen = 32;
18+
let self;
19+
// let lastSendIR = false;
1520

1621
function IrRawSend(board, pinSendIR) {
17-
console.log("debug IrRawSend");
1822
self = this;
1923
Module.call(self);
2024
self._board = board;
2125
self._pinSendIR = pinSendIR;
22-
2326
onMessage();
2427
}
2528

2629
function onMessage() {
2730
self._board.on(webduino.BoardEvent.SYSEX_MESSAGE, function (event) {
28-
var m = event.message;
31+
let m = event.message;
2932

30-
if (m[0] == 0x04 && m[1] == 0x09 && m[2] == 0x0B) {
33+
/*if (m[0] == WEBDUINO_COMMAND && m[1] == SENSOR_IRRSEND && m[2] == 0x0B) {
3134
if (lastSendIR) {
3235
//store OK
3336
lastSendIR = false;
34-
self._board.send([0xf0, 0x04, 0x09, 0x0C, self._pinSendIR, 0xF7]);
37+
self._board.send([0xf0, WEBDUINO_COMMAND, SENSOR_IRRSEND, 0x0C, self._pinSendIR, 0xF7]);
3538
}
36-
}
37-
//trigger IR send
38-
else if (m[0] == 0x04 && m[1] == 0x09 && m[2] == 0x0C) {
39+
}*/
40+
41+
if (m[0] == WEBDUINO_COMMAND && m[1] == SENSOR_IRRSEND && m[2] == TRIGGER_IR) {
3942
self.irSendCallback();
4043
}
4144
});
@@ -44,17 +47,18 @@
4447

4548
function send(startPos, data) {
4649

47-
var CMD = [0xf0, 0x04, 0x09, 0x0A];
48-
var raw = [];
50+
let CMD = [0xf0, WEBDUINO_COMMAND, SENSOR_IRRSEND, START_POS];
51+
let raw = [];
4952
raw = raw.concat(CMD);
50-
var n = '0000' + startPos.toString(16);
53+
let n = '0000' + startPos.toString(16);
5154
n = n.substring(n.length - 4);
52-
for (var i = 0; i < 4; i++) {
55+
for (let i = 0; i < 4; i++) {
5356
raw.push(n.charCodeAt(i));
5457
}
5558
raw.push(0xf7);
56-
// send Data //
57-
CMD = [0xf0, 0x04, 0x09, 0x0B];
59+
60+
// send raw data
61+
CMD = [0xf0, WEBDUINO_COMMAND, SENSOR_IRRSEND, SEND_RAW_DATA];
5862
raw = raw.concat(CMD);
5963
for (i = 0; i < data.length; i++) {
6064
raw.push(data.charCodeAt(i));
@@ -64,11 +68,12 @@
6468
}
6569

6670
function sendIRCmd(cmd, len) {
67-
for (var i = 0; i < cmd.length; i = i + len) {
68-
var data = cmd.substring(i, i + len);
71+
for (let i = 0; i < cmd.length; i = i + len) {
72+
let data = cmd.substring(i, i + len);
6973
send(i / 4, data);
7074
}
71-
lastSendIR = true;
75+
// lastSendIR = true;
76+
self._board.send([0xf0, WEBDUINO_COMMAND, SENSOR_IRRSEND, TRIGGER_IR, self._pinSendIR, 0xF7]);
7277
}
7378

7479
IrRawSend.prototype = proto = Object.create(Module.prototype, {
@@ -77,7 +82,7 @@
7782
}
7883
});
7984

80-
proto.send = function (data, callback) {
85+
proto.send = (data, callback) => {
8186
sendIRCmd(data, sendLen);
8287
self.irSendCallback = callback;
8388
}

blockly.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"blockly/javascript.js"
77
],
88
"dependencies": [
9+
"IrRaw.js",
910
"IrRawSend.js",
1011
"irRawRecv.js",
1112
"IrRaw-blockly.js"

irRawRecv.js

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,16 @@
77
}(function (scope) {
88
'use strict';
99

10-
var Module = scope.Module;
11-
var proto;
12-
var self;
13-
10+
let Module = scope.Module;
11+
let proto;
12+
let self;
13+
let WEBDUINO_COMMAND = 0x04;
14+
let SENSOR_RECV = 0x0A;
15+
let INIT_RECV = 0x00;
16+
let STOP_RECV = 0x01;
17+
let RECORD_RAW_DATA = 0x02;
18+
let RECORD_FINISH = 0x03;
19+
1420
function IrRawRecv(board, pinRecvIR) {
1521
self = this;
1622
Module.call(self);
@@ -23,18 +29,19 @@
2329

2430
function onMessage() {
2531
self._board.on(webduino.BoardEvent.SYSEX_MESSAGE, function (event) {
26-
var m = event.message;
32+
let m = event.message;
2733

28-
//record IR data
29-
if (m[0] == 0x04 && m[1] == 0x09 && m[2] == 0x0D) {
30-
var strData = "";
31-
for (var i = 3; i < m.length; i++) {
34+
// record raw data
35+
if (m[0] == WEBDUINO_COMMAND && m[1] == SENSOR_RECV && m[2] == RECORD_RAW_DATA) {
36+
let strData = "";
37+
for (let i = 3; i < m.length; i++) {
3238
strData += String.fromCharCode(m[i]);
3339
}
3440
self._irInfo += strData;
35-
3641
}
37-
else if (m[0] == 0x04 && m[1] == 0x09 && m[2] == 0x0E) {
42+
43+
// record finish
44+
else if (m[0] == WEBDUINO_COMMAND && m[1] == SENSOR_RECV && m[2] == RECORD_FINISH) {
3845
self.irRecvCallback(self._irInfo);
3946
self._irInfo = "";
4047
}
@@ -47,15 +54,15 @@
4754
}
4855
});
4956

50-
proto.receive = function (callback) {
57+
proto.receive = (callback) => {
5158
self.irRecvCallback = callback;
5259
if (self._pinRecvIR > 0) {
53-
self._board.send([0xF0, 0x04, 0x0A, 0x00, self._pinRecvIR, 0xF7]);
60+
self._board.send([0xF0, WEBDUINO_COMMAND, SENSOR_RECV, INIT_RECV, self._pinRecvIR, 0xF7]);
5461
}
5562
};
5663

57-
proto.stopRecv = function () {
58-
self._board.send([0xF0, 0x04, 0x0A, 0x01, 0xF7]);
64+
proto.stopRecv = () => {
65+
self._board.send([0xF0, WEBDUINO_COMMAND, SENSOR_RECV, STOP_RECV, 0xF7]);
5966
}
6067

6168
scope.module.IrRawRecv = IrRawRecv;

0 commit comments

Comments
 (0)