Skip to content

Commit eeae723

Browse files
committed
separate send & receive
1 parent 7c2b151 commit eeae723

12 files changed

Lines changed: 186 additions & 152 deletions

File tree

IrRaw-blockly.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@
22

33
'use strict';
44

5-
window.getIrRaw = function (board, pinMapping) {
6-
return new webduino.module.IrRaw(board, pinMapping);
5+
window.getIrRawSend = function (board, pinSendIR) {
6+
return new webduino.module.IrRawSend(board, pinSendIR);
7+
};
8+
9+
window.getIrRawRecv = function (board, pinRecvIR) {
10+
return new webduino.module.IrRawRecv(board, pinRecvIR);
711
};
812

913
}(window, window.webduino));

IrRaw.js

Lines changed: 0 additions & 145 deletions
This file was deleted.

IrRawSend.js

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
+(function (factory) {
2+
if (typeof exports === 'undefined') {
3+
factory(webduino || {});
4+
} else {
5+
module.exports = factory;
6+
}
7+
}(function (scope) {
8+
'use strict';
9+
10+
var Module = scope.Module;
11+
var proto;
12+
var sendLen = 32;
13+
var self;
14+
var lastSendIR = false;
15+
16+
function IrRawSend(board, pinSendIR) {
17+
console.log("debug IrRawSend");
18+
self = this;
19+
Module.call(self);
20+
self._board = board;
21+
self._pinSendIR = pinSendIR;
22+
23+
onMessage();
24+
}
25+
26+
function onMessage() {
27+
self._board.on(webduino.BoardEvent.SYSEX_MESSAGE, function (event) {
28+
var m = event.message;
29+
30+
if (m[0] == 0x04 && m[1] == 0x09 && m[2] == 0x0B) {
31+
if (lastSendIR) {
32+
//store OK
33+
lastSendIR = false;
34+
self._board.send([0xf0, 0x04, 0x09, 0x0C, self._pinSendIR, 0xF7]);
35+
}
36+
}
37+
//trigger IR send
38+
else if (m[0] == 0x04 && m[1] == 0x09 && m[2] == 0x0C) {
39+
self.irSendCallback();
40+
}
41+
});
42+
}
43+
44+
45+
function send(startPos, data) {
46+
47+
var CMD = [0xf0, 0x04, 0x09, 0x0A];
48+
var raw = [];
49+
raw = raw.concat(CMD);
50+
var n = '0000' + startPos.toString(16);
51+
n = n.substring(n.length - 4);
52+
for (var i = 0; i < 4; i++) {
53+
raw.push(n.charCodeAt(i));
54+
}
55+
raw.push(0xf7);
56+
// send Data //
57+
CMD = [0xf0, 0x04, 0x09, 0x0B];
58+
raw = raw.concat(CMD);
59+
for (i = 0; i < data.length; i++) {
60+
raw.push(data.charCodeAt(i));
61+
}
62+
raw.push(0xf7);
63+
self._board.send(raw);
64+
}
65+
66+
function sendIRCmd(cmd, len) {
67+
for (var i = 0; i < cmd.length; i = i + len) {
68+
var data = cmd.substring(i, i + len);
69+
send(i / 4, data);
70+
}
71+
lastSendIR = true;
72+
}
73+
74+
IrRawSend.prototype = proto = Object.create(Module.prototype, {
75+
constructor: {
76+
value: IrRawSend
77+
}
78+
});
79+
80+
proto.send = function (data, callback) {
81+
sendIRCmd(data, sendLen);
82+
self.irSendCallback = callback;
83+
}
84+
85+
scope.module.IrRawSend = IrRawSend;
86+
}));

blockly.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
"blockly/javascript.js"
77
],
88
"dependencies": [
9-
"IrRaw.js",
9+
"IrRawSend.js",
10+
"irRawRecv.js",
1011
"IrRaw-blockly.js"
1112
],
1213
"msg": "blockly/msg",

blockly/blocks.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,3 +65,16 @@ Blockly.Blocks['irraw_launch'] = {
6565
this.setHelpUrl(mainUrl + 'basic/index.html' + utmUrl);
6666
}
6767
};
68+
69+
Blockly.Blocks['irraw_stop_receive'] = {
70+
init: function () {
71+
this.appendDummyInput()
72+
.appendField(new Blockly.FieldVariable("irraw"), "name_")
73+
.appendField(Blockly.Msg.WEBDUINO_IRRAW_STOP_RECV, "停止偵測");
74+
this.setPreviousStatement(true);
75+
this.setNextStatement(true);
76+
this.setTooltip('');
77+
this.setColour(65);
78+
this.setHelpUrl(mainUrl + 'basic/index.html' + utmUrl);
79+
}
80+
};

blockly/javascript.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
Blockly.JavaScript['irraw_new_send'] = function (block) {
22
var dropdown_pin_ = block.getFieldValue('pin_');
3-
var code = 'getIrRaw(board, {"send":' + dropdown_pin_ + '})';
3+
var code = 'getIrRawSend(board, ' + dropdown_pin_ + ')';
44
return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL];
55
};
66

77
Blockly.JavaScript['irraw_new_recv'] = function (block) {
88
var dropdown_pin_ = block.getFieldValue('pin_');
9-
var code = 'getIrRaw(board, {"recv":' + dropdown_pin_ + '})';
9+
var code = 'getIrRawRecv(board, ' + dropdown_pin_ + ')';
1010
return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL];
1111
};
1212

@@ -37,3 +37,9 @@ Blockly.JavaScript['irraw_val'] = function (block) {
3737
var code = variable_name_ + '.onVal';
3838
return [code, Blockly.JavaScript.ORDER_ATOMIC];
3939
};
40+
41+
Blockly.JavaScript['irraw_stop_receive'] = function (block) {
42+
var variable_name_ = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('name_'), Blockly.Variables.NAME_TYPE);
43+
var code = variable_name_ + '.stopRecv();\n';
44+
return code;
45+
};

blockly/msg/blocks/en.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ Blockly.Msg.WEBDUINO_IRRAW_LAUNCHCODE = 'Launch Codes (m-16):';
44
Blockly.Msg.WEBDUINO_IRRAW_ON = 'Start Receiving Raw IR';
55
Blockly.Msg.WEBDUINO_IRRAW_CODE = 'Received code';
66
Blockly.Msg.WEBDUINO_IRRAW_DO = 'Do';
7+
Blockly.Msg.WEBDUINO_IRRAW_STOP_RECV = 'Stop detection';

blockly/msg/blocks/zh-hans.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ Blockly.Msg.WEBDUINO_IRRAW_LAUNCHCODE = '发射代码 ( 十六进位 )';
44
Blockly.Msg.WEBDUINO_IRRAW_ON = '开始接收冷气红外线';
55
Blockly.Msg.WEBDUINO_IRRAW_CODE = '接收的代码';
66
Blockly.Msg.WEBDUINO_IRRAW_DO = '执行';
7+
Blockly.Msg.WEBDUINO_IRRAW_STOP_RECV = '停止侦测';

blockly/msg/blocks/zh-hant.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ Blockly.Msg.WEBDUINO_IRRAW_LAUNCHCODE = '發射代碼 ( 十六進位 )';
44
Blockly.Msg.WEBDUINO_IRRAW_ON = '開始接收冷氣紅外線';
55
Blockly.Msg.WEBDUINO_IRRAW_CODE = '接收的代碼';
66
Blockly.Msg.WEBDUINO_IRRAW_DO = '執行';
7+
Blockly.Msg.WEBDUINO_IRRAW_STOP_RECV = '停止偵測';

blockly/msg/zh-hant.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
MSG.catIrRaw = '冷氣紅外線';
1+
MSG.catIrRawV2 = '冷氣V2';

0 commit comments

Comments
 (0)