@@ -253,7 +253,6 @@ class SeProxyHal(IODevice):
253
253
def __init__ (self ,
254
254
sock : socket ,
255
255
model : str ,
256
- use_bagl : bool ,
257
256
automation : Optional [Automation ] = None ,
258
257
automation_server : Optional [BroadcastInterface ] = None ,
259
258
transport : TransportType = TransportType .HID ,
@@ -264,7 +263,8 @@ def __init__(self,
264
263
self .automation = automation
265
264
self .automation_server = automation_server
266
265
self .events : List [TextEvent ] = []
267
- self .refreshed = False
266
+ self .need_nbgl_refresh = False
267
+ self .is_last_draw_nbgl = False
268
268
self .verbose = verbose
269
269
270
270
self .status_event = threading .Event ()
@@ -277,9 +277,7 @@ def __init__(self,
277
277
278
278
self .transport = build_transport (self .socket_helper .queue_packet , transport )
279
279
280
- self .ocr = OCR (model , use_bagl )
281
-
282
- self .use_bagl = use_bagl
280
+ self .ocr = OCR (model )
283
281
284
282
# A list of callback methods when an APDU response is received
285
283
self .apdu_callbacks : List [Callable [[bytes ], None ]] = []
@@ -333,17 +331,17 @@ def can_read(self, screen: DisplayNotifier):
333
331
334
332
if tag == SephTag .GENERAL_STATUS :
335
333
if int .from_bytes (data [:2 ], 'big' ) == SephTag .GENERAL_STATUS_LAST_COMMAND :
336
- if self .refreshed :
337
- self .refreshed = False
334
+ if self .need_nbgl_refresh :
335
+ self .need_nbgl_refresh = False
338
336
339
337
# Update the screenshot, we'll upload its associated events shortly
340
- screen .display .gl .update_screenshot ()
341
- screen .display .gl .update_public_screenshot ()
338
+ screen .display .nbgl_gl .update_screenshot ()
339
+ screen .display .nbgl_gl .update_public_screenshot ()
342
340
343
- if self .use_bagl and screen .display .screen_update ():
341
+ if self .is_last_draw_nbgl is False and screen .display .screen_update ():
344
342
if screen .display .model in ["nanox" , "nanosp" ]:
345
343
self .events += self .ocr .get_events ()
346
- elif not self .use_bagl :
344
+ elif self .is_last_draw_nbgl :
347
345
self .events += self .ocr .get_events ()
348
346
349
347
# Apply automation rules after having received a GENERAL_STATUS_LAST_COMMAND tag. It allows the
@@ -362,6 +360,7 @@ def can_read(self, screen: DisplayNotifier):
362
360
SephTag .DBG_SCREEN_DISPLAY_STATUS ,
363
361
SephTag .BAGL_DRAW_RECT ]:
364
362
self .logger .debug (f"DISPLAY_STATUS { data !r} " )
363
+ self .is_last_draw_nbgl = False
365
364
if screen .display .model not in ["nanox" , "nanosp" ] or tag == SephTag .BAGL_DRAW_RECT :
366
365
events = screen .display .display_status (data )
367
366
self .events += events
@@ -371,8 +370,9 @@ def can_read(self, screen: DisplayNotifier):
371
370
elif tag in [SephTag .SCREEN_DISPLAY_RAW_STATUS , SephTag .BAGL_DRAW_BITMAP ]:
372
371
self .logger .debug ("SephTag.SCREEN_DISPLAY_RAW_STATUS" )
373
372
screen .display .display_raw_status (data )
373
+ self .is_last_draw_nbgl = False
374
374
if screen .display .model in ["nanox" , "nanosp" ]:
375
- self .ocr .analyze_bitmap (data )
375
+ self .ocr .analyze_bitmap (data , True )
376
376
if tag != SephTag .BAGL_DRAW_BITMAP :
377
377
self .socket_helper .send_packet (SephTag .DISPLAY_PROCESSED_EVENT )
378
378
if screen .display .rendering == RENDER_METHOD .PROGRESSIVE :
@@ -425,34 +425,34 @@ def can_read(self, screen: DisplayNotifier):
425
425
pass
426
426
427
427
elif tag == SephTag .NBGL_DRAW_RECT :
428
- assert isinstance (screen .display .gl , NBGL )
429
- self .events += screen .display .gl .hal_draw_rect (data )
428
+ assert isinstance (screen .display .nbgl_gl , NBGL )
429
+ self .events += screen .display .nbgl_gl .hal_draw_rect (data )
430
430
431
431
elif tag == SephTag .NBGL_REFRESH :
432
- assert isinstance (screen .display .gl , NBGL )
433
- screen .display .gl .refresh (data )
432
+ screen .display .nbgl_gl .refresh (data )
434
433
# Stax/Flex only
435
- # We have refreshed the screen, remember it for the next time we have SephTag.GENERAL_STATUS
434
+ # We have need_nbgl_refresh the screen, remember it for the next time we have SephTag.GENERAL_STATUS
436
435
# then we'll perform a screen update and make public the resulting screenshot
437
- self .refreshed = True
436
+ self .need_nbgl_refresh = True
437
+ self .is_last_draw_nbgl = True
438
438
439
439
elif tag == SephTag .NBGL_DRAW_LINE :
440
- assert isinstance (screen .display .gl , NBGL )
441
- screen .display .gl .hal_draw_line (data )
440
+ assert isinstance (screen .display .nbgl_gl , NBGL )
441
+ screen .display .nbgl_gl .hal_draw_line (data )
442
442
443
443
elif tag == SephTag .NBGL_DRAW_IMAGE :
444
- assert isinstance (screen .display .gl , NBGL )
445
- self .ocr .analyze_bitmap (data )
446
- screen .display .gl .hal_draw_image (data )
444
+ assert isinstance (screen .display .nbgl_gl , NBGL )
445
+ self .ocr .analyze_bitmap (data , False )
446
+ screen .display .nbgl_gl .hal_draw_image (data )
447
447
448
448
elif tag == SephTag .NBGL_DRAW_IMAGE_RLE :
449
- assert isinstance (screen .display .gl , NBGL )
450
- self .ocr .analyze_bitmap (data )
451
- screen .display .gl .hal_draw_image_rle (data )
449
+ assert isinstance (screen .display .nbgl_gl , NBGL )
450
+ self .ocr .analyze_bitmap (data , False )
451
+ screen .display .nbgl_gl .hal_draw_image_rle (data )
452
452
453
453
elif tag == SephTag .NBGL_DRAW_IMAGE_FILE :
454
- assert isinstance (screen .display .gl , NBGL )
455
- screen .display .gl .hal_draw_image_file (data )
454
+ assert isinstance (screen .display .nbgl_gl , NBGL )
455
+ screen .display .nbgl_gl .hal_draw_image_file (data )
456
456
457
457
elif tag == SephTag .NFC_RAPDU :
458
458
data = self .transport .handle_rapdu (data )
0 commit comments