1
+ const SCREEN_FN_ID_HANDSHAKE : number = 0 ;
1
2
const SCREEN_FN_ID_RESET_SCREEN_IMAGE : number = 5 ;
2
3
const SCREEN_FN_ID_SET_IMAGE_SIZE : number = 6 ;
3
4
const SCREEN_FN_ID_DRAW_TRANSPARENT_IMAGE : number = 7 ;
@@ -23,6 +24,7 @@ namespace controller {
23
24
controllerButtonEvents [ i ] ,
24
25
btn . id ,
25
26
( ) => {
27
+ // screen().fill(btn.id)
26
28
radio . sendBuffer ( Buffer . fromArray ( [ BUTTON_PRESS_RADIO_ID , controllerKeys [ i ] , btn . id ] ) )
27
29
}
28
30
)
@@ -48,7 +50,9 @@ function recvBitmaps(): Bitmap[] {
48
50
while ( numberOfBitmaps == 0 ) {
49
51
basic . pause ( 3 ) ;
50
52
}
53
+
51
54
radio . sendString ( "ACK" ) ;
55
+ // screen().fill(6);
52
56
53
57
54
58
//----------------------------
@@ -80,6 +84,7 @@ function recvBitmaps(): Bitmap[] {
80
84
while ( maxPacketBufferSize == 0 ) {
81
85
basic . pause ( 3 ) ;
82
86
}
87
+ // screen().fill(3);
83
88
84
89
//-----------------------------------------
85
90
// Calculate the number of incoming chunks:
@@ -140,11 +145,12 @@ function recvBitmaps(): Bitmap[] {
140
145
141
146
// Rebinding for safety - since we're going back to only responding to .onReceivedString() at the top of this loop:
142
147
// radio.onReceivedBuffer(_ => { })
148
+ // screen().fill(3);
143
149
}
144
150
145
151
radio . onReceivedString ( ( _ : string ) => { } )
146
152
radio . onReceivedBuffer ( ( _ : Buffer ) => { } )
147
- basic . showString ( "F" )
153
+ // basic.showString("F")
148
154
return bitmaps ;
149
155
}
150
156
@@ -169,22 +175,25 @@ function rebuildBitmap(buf: Buffer, bitmapWidth: number, bitmapHeight: number):
169
175
}
170
176
171
177
172
- function handshake ( ) {
173
- let receivedHandshake = false ;
174
- radio . onReceivedString ( ( receivedString : string ) => {
175
- if ( receivedString == "HANDSHAKE" ) {
176
- receivedHandshake = true ;
177
- radio . sendString ( "ACK" )
178
- }
179
- } )
178
+ function handshake ( ) : number {
179
+ let device_id : number = null ;
180
180
181
- while ( ! receivedHandshake ) { basic . pause ( 3 ) }
182
- radio . onReceivedString ( ( _ : string ) => { } )
181
+ radio . onReceivedBuffer ( ( buf : Buffer ) => {
182
+ if ( buf [ 0 ] == SCREEN_FN_ID_HANDSHAKE ) {
183
+ device_id = buf [ 1 ] ;
184
+ radio . sendString ( "ACK" )
185
+ }
186
+ } ) ;
187
+
188
+ while ( device_id == null ) { basic . pause ( 10 ) }
189
+ radio . onReceivedBuffer ( ( _ : Buffer ) => { } )
190
+ return device_id ;
183
191
}
184
192
185
193
function radioControlRxLoop ( ) {
186
194
radio . setGroup ( 5 )
187
- handshake ( ) ;
195
+
196
+ const device_id = handshake ( ) ;
188
197
const bitmaps : Bitmap [ ] = recvBitmaps ( ) ;
189
198
controller . bindButtonsForWDS ( ) ;
190
199
@@ -195,10 +204,12 @@ function radioControlRxLoop() {
195
204
} )
196
205
197
206
radio . onReceivedBuffer ( ( buf : Buffer ) => {
198
- radio . sendString ( "ACK" ) ;
207
+
208
+ // radio.sendString("ACK");
199
209
const request : number = buf [ 0 ] ;
200
210
const params : Buffer = buf . slice ( 1 ) ;
201
211
212
+ // screen().printCenter(""+request, 0);
202
213
// basic.showNumber(fn_id)
203
214
204
215
// control.inBackground(() => {
@@ -233,6 +244,8 @@ function radioControlRxLoop() {
233
244
// basic.showNumber(fn_id)
234
245
screen ( ) . fill ( params [ 0 ] ) ;
235
246
247
+ // screen().fill(3);
248
+
236
249
// let endTime = input.runningTime();
237
250
// basic.showNumber(endTime - startTime)
238
251
break ;
@@ -253,12 +266,13 @@ function radioControlRxLoop() {
253
266
}
254
267
255
268
default : {
256
- basic . showString ( "D" )
257
269
break ;
258
270
}
259
271
}
260
- // basic.pause(20);
261
- // })
262
- } )
272
+ } ) // end of radio.onReceivedBuffer()
273
+
274
+ while ( true ) {
275
+ basic . pause ( 3 )
276
+ }
263
277
}
264
278
0 commit comments