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 self ;
11+ var proto ;
12+ var Module = scope . Module ;
13+
14+ function getMessage ( m ) {
15+ var text = "" ;
16+ for ( var i = 3 ; i < m . length ; i ++ ) {
17+ text += String . fromCharCode ( m [ i ] ) ;
18+ }
19+ var cutPos = text . indexOf ( ' ' ) ;
20+ var title = text . substring ( 0 , cutPos ) ;
21+ text = text . substring ( cutPos + 1 ) ;
22+ return [ title , text ] ;
23+ }
24+
25+ function EV3BT ( board , rx , tx ) {
26+ Module . call ( this ) ;
27+ this . _board = board ;
28+ self = this ;
29+ self . callback = { } ;
30+ self . title = '' ;
31+ self . content = '' ;
32+ self . _rx = rx ;
33+ self . _tx = tx ;
34+ board . send ( [ 0xF0 , 0x04 , 0x23 , 0x04 /*init*/ , rx , tx , 0xF7 ] ) ;
35+ board . on ( webduino . BoardEvent . SYSEX_MESSAGE , function ( event ) {
36+ var m = event . message ;
37+ if ( m [ 0 ] == 0x04 && m [ 1 ] == 0x23 ) {
38+ var msg = getMessage ( m ) ;
39+ self . msgType = m [ 2 ] ;
40+ self . title = msg [ 0 ] ;
41+ self . content = msg [ 1 ] ;
42+ if ( self . msgType == 1 ) {
43+ self . content = self . content == '1' ? true : false ;
44+ }
45+ var callbackList = self . callback [ self . title ] ;
46+ for ( var cb in callbackList ) {
47+ callbackList [ cb ] ( self . content ) ;
48+ }
49+ }
50+ } ) ;
51+ }
52+
53+ EV3BT . prototype = proto = Object . create ( Module . prototype , {
54+ constructor : {
55+ value : EV3BT
56+ }
57+ } ) ;
58+
59+ proto . on = function ( title , callback ) {
60+ if ( self . callback [ title ] == null ) {
61+ self . callback [ title ] = [ ] ;
62+ }
63+ self . callback [ title ] . push ( callback ) ;
64+ }
65+
66+ proto . sendLogic = function ( title , b ) {
67+ var cmd = [ 0xF0 , 0x04 , 0x23 , 0x01 , title . length ] ;
68+ var data = title ;
69+ var dataLen = data . length ;
70+ for ( var i = 0 ; i < dataLen ; i ++ ) {
71+ cmd . push ( data . charCodeAt ( i ) ) ;
72+ }
73+ var b = b . toString ( ) . toLowerCase ( ) == 'true' ? true : false ;
74+ cmd . push ( b ? 0x31 : 0x30 ) ;
75+ cmd . push ( 0xF7 ) ;
76+ this . _board . send ( cmd ) ;
77+ }
78+
79+ proto . sendNumber = function ( title , num ) {
80+ var cmd = [ 0xF0 , 0x04 , 0x23 , 0x02 , title . length ] ;
81+ var data = title + num ;
82+ var dataLen = data . length ;
83+ for ( var i = 0 ; i < dataLen ; i ++ ) {
84+ cmd . push ( data . charCodeAt ( i ) ) ;
85+ }
86+ cmd . push ( 0xF7 ) ;
87+ this . _board . send ( cmd ) ;
88+ }
89+
90+ proto . sendText = function ( title , txt ) {
91+ var cmd = [ 0xF0 , 0x04 , 0x23 , 0x03 , title . length ] ;
92+ var data = title + txt ;
93+ var dataLen = data . length ;
94+ for ( var i = 0 ; i < dataLen ; i ++ ) {
95+ cmd . push ( data . charCodeAt ( i ) ) ;
96+ }
97+ cmd . push ( 0xF7 ) ;
98+ this . _board . send ( cmd ) ;
99+ }
100+
101+ scope . module . EV3BT = EV3BT ;
102+ } ) ) ;
0 commit comments