-
Notifications
You must be signed in to change notification settings - Fork 24
Expand file tree
/
Copy pathDataTransfer.js
More file actions
99 lines (89 loc) · 2.16 KB
/
DataTransfer.js
File metadata and controls
99 lines (89 loc) · 2.16 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
+(function (factory) {
if (typeof exports === 'undefined') {
factory(webduino || {});
} else {
module.exports = factory;
}
}(function (scope) {
'use strict';
var self;
var proto;
var sendLength = 50;
var sendArray = [];
var sending = false;
var sendAck = '';
var sendCallback;
var Module = scope.Module;
var _callback;
var _dataString;
function toArray(str) {
var data = [];
for (var i = 0; i < str.length; i++) {
data.push(str.charCodeAt(i));
}
return data;
}
function DataTransfer(board) {
Module.call(this);
this._board = board;
self = this;
//board.send([0xF0, 0x04, 0x20, dataType /*init*/ , 0xF7]);
board.on(webduino.BoardEvent.SYSEX_MESSAGE,
function (event) {
var data = event.message;
sending = false;
if (data[0] == 0x20) {
switch (data[1] /*dataType*/ ) {
case 0: //String
var str = "";
for (var i = 2; i < data.length; i++) {
str += String.fromCharCode(data[i]);
}
_dataString = str;
_callback(0, str);
break;
}
}
});
startQueue(board);
}
DataTransfer.prototype = proto = Object.create(Module.prototype, {
constructor: {
value: DataTransfer
}
});
proto.sendString = function (msg, callback) {
var cmdArray = [0xF0, 0x04, 0x20, 0x0];
cmdArray = cmdArray.concat(toArray(msg));
cmdArray.push(0xF7);
this._board.send(cmdArray);
if (callback !== undefined) {
_callback = callback;
}
}
proto.onMessage = function (callback) {
if (callback !== undefined) {
_callback = callback;
}
}
proto.getDataString = function () {
return _dataString;
}
function startQueue(board) {
setInterval(function () {
if (sending || sendArray.length == 0) {
return;
}
sending = true;
var sendObj = sendArray.shift();
sendAck = sendObj.ack;
if (sendAck > 0) {
board.send(sendObj.obj);
} else {
sending = false;
sendCallback();
}
}, 0);
}
scope.module.DataTransfer = DataTransfer;
}));