11use adv_shift_registers:: wrappers:: ShifterValueRange ;
2- use ag_lcd :: LcdDisplay ;
2+ use ag_lcd_async :: LcdDisplay ;
33use alloc:: { rc:: Rc , string:: ToString } ;
44use embassy_sync:: { blocking_mutex:: raw:: NoopRawMutex , signal:: Signal } ;
55use embassy_time:: { Delay , Duration , Instant , Timer } ;
6- use embedded_hal:: { delay:: DelayNs , digital:: OutputPin } ;
6+ use embedded_hal:: digital:: OutputPin ;
7+ use embedded_hal_async:: delay:: DelayNs ;
78
89use crate :: {
910 consts:: {
@@ -33,13 +34,14 @@ pub async fn lcd_task(
3334
3435 #[ cfg( feature = "esp32" ) ]
3536 let mut lcd = LcdDisplay :: new_pcf8574 ( & mut i2c_expander, Delay )
36- . with_display ( ag_lcd :: Display :: On )
37- . with_blink ( ag_lcd :: Blink :: Off )
38- . with_cursor ( ag_lcd :: Cursor :: Off )
39- . with_size ( ag_lcd :: Size :: Dots5x8 )
37+ . with_display ( ag_lcd_async :: Display :: On )
38+ . with_blink ( ag_lcd_async :: Blink :: Off )
39+ . with_cursor ( ag_lcd_async :: Cursor :: Off )
40+ . with_size ( ag_lcd_async :: Size :: Dots5x8 )
4041 . with_cols ( 16 )
41- . with_lines ( ag_lcd:: Lines :: TwoLines )
42- . build ( ) ;
42+ . with_lines ( ag_lcd_async:: Lines :: TwoLines )
43+ . build ( )
44+ . await ;
4345
4446 #[ cfg( feature = "esp32c3" ) ]
4547 let mut lcd = {
@@ -50,19 +52,20 @@ pub async fn lcd_task(
5052 let d5_pin = lcd_shifter. get_pin_mut ( 5 , false ) ;
5153 let d6_pin = lcd_shifter. get_pin_mut ( 6 , false ) ;
5254 let d7_pin = lcd_shifter. get_pin_mut ( 7 , false ) ;
53- ag_lcd :: LcdDisplay :: new ( rs_pin, en_pin, Delay )
54- . with_display ( ag_lcd :: Display :: On )
55- . with_blink ( ag_lcd :: Blink :: Off )
56- . with_cursor ( ag_lcd :: Cursor :: Off )
57- . with_size ( ag_lcd :: Size :: Dots5x8 )
55+ LcdDisplay :: new ( rs_pin, en_pin, Delay )
56+ . with_display ( ag_lcd_async :: Display :: On )
57+ . with_blink ( ag_lcd_async :: Blink :: Off )
58+ . with_cursor ( ag_lcd_async :: Cursor :: Off )
59+ . with_size ( ag_lcd_async :: Size :: Dots5x8 )
5860 . with_cols ( 16 )
59- . with_lines ( ag_lcd :: Lines :: TwoLines )
61+ . with_lines ( ag_lcd_async :: Lines :: TwoLines )
6062 . with_half_bus ( d4_pin, d5_pin, d6_pin, d7_pin)
6163 . with_backlight ( bl_pin)
6264 . build ( )
65+ . await
6366 } ;
6467
65- lcd. clear ( ) ;
68+ lcd. clear ( ) . await ;
6669 lcd. backlight_on ( ) ;
6770
6871 let mut lcd_driver: LcdAbstract < 80 , 16 , 2 , 3 > = LcdAbstract :: new ( ) ;
@@ -79,15 +82,15 @@ pub async fn lcd_task(
7982 PrintAlign :: Left ,
8083 true ,
8184 ) ;
82- lcd_driver. display_on_lcd ( & mut lcd) ;
85+ lcd_driver. display_on_lcd ( & mut lcd) . await ;
8386
8487 _ = lcd_driver. print (
8588 0 ,
8689 & alloc:: format!( "{}%" , global_state. show_battery. wait( ) . await ) ,
8790 PrintAlign :: Right ,
8891 false ,
8992 ) ;
90- lcd_driver. display_on_lcd ( & mut lcd) ;
93+ lcd_driver. display_on_lcd ( & mut lcd) . await ;
9194
9295 #[ cfg( not( feature = "bat_dev_lcd" ) ) ]
9396 Timer :: after_millis ( 2500 ) . await ;
@@ -118,15 +121,15 @@ pub async fn lcd_task(
118121 & display,
119122 )
120123 . await ;
121- lcd_driver. display_on_lcd ( & mut lcd) ;
124+ lcd_driver. display_on_lcd ( & mut lcd) . await ;
122125
123126 let mut scroll_ticker =
124127 embassy_time:: Ticker :: every ( Duration :: from_millis ( SCROLL_TICKER_INVERVAL_MS ) ) ;
125128 loop {
126129 scroll_ticker. next ( ) . await ;
127130 let changed = lcd_driver. scroll_step ( ) ;
128131 if changed. is_ok_and ( |c| c) {
129- lcd_driver. display_on_lcd ( & mut lcd) ;
132+ lcd_driver. display_on_lcd ( & mut lcd) . await ;
130133 }
131134
132135 #[ cfg( not( any( feature = "e2e" , feature = "qa" ) ) ) ]
@@ -136,7 +139,7 @@ pub async fn lcd_task(
136139 {
137140 _ = lcd_driver. print ( 0 , "Sleep" , PrintAlign :: Center , true ) ;
138141 _ = lcd_driver. print ( 1 , "Press any key" , PrintAlign :: Center , true ) ;
139- lcd_driver. display_on_lcd ( & mut lcd) ;
142+ lcd_driver. display_on_lcd ( & mut lcd) . await ;
140143 lcd. backlight_off ( ) ;
141144
142145 unsafe {
@@ -151,7 +154,7 @@ pub async fn lcd_task(
151154 {
152155 _ = lcd_driver. print ( 0 , "Deep Sleep" , PrintAlign :: Center , true ) ;
153156 _ = lcd_driver. print ( 1 , "Press any key" , PrintAlign :: Center , true ) ;
154- lcd_driver. display_on_lcd ( & mut lcd) ;
157+ lcd_driver. display_on_lcd ( & mut lcd) . await ;
155158 crate :: utils:: deeper_sleep ( ) ;
156159 }
157160 }
@@ -286,7 +289,7 @@ async fn process_lcd<T: OutputPin, D: DelayNs>(
286289 )
287290 . ok ( ) ?;
288291
289- lcd_driver. display_on_lcd ( lcd) ;
292+ lcd_driver. display_on_lcd ( lcd) . await ;
290293 wifi_setup_sig. wait ( ) . await ;
291294 global_state. state . lock ( ) . await . scene = Scene :: AutoSetupWait ;
292295 }
@@ -408,6 +411,10 @@ async fn process_lcd<T: OutputPin, D: DelayNs>(
408411 . inspection_start
409412 . unwrap_or ( Instant :: now ( ) ) ;
410413
414+ lcd_driver
415+ . print ( 1 , "Inspection" , PrintAlign :: Center , true )
416+ . ok ( ) ?;
417+
411418 loop {
412419 let elapsed = ( Instant :: now ( ) - inspection_start) . as_millis ( ) ;
413420 let time_str = ms_to_time_str ( elapsed) ;
@@ -416,7 +423,7 @@ async fn process_lcd<T: OutputPin, D: DelayNs>(
416423 . print ( 0 , & time_str, PrintAlign :: Center , true )
417424 . ok ( ) ?;
418425
419- lcd_driver. display_on_lcd ( lcd) ;
426+ lcd_driver. display_on_lcd ( lcd) . await ;
420427 Timer :: after_millis ( LCD_INSPECTION_FRAME_TIME ) . await ;
421428 }
422429 }
@@ -428,7 +435,7 @@ async fn process_lcd<T: OutputPin, D: DelayNs>(
428435 . ok ( ) ?;
429436
430437 display. set_data_raw ( & crate :: utils:: stackmat:: time_str_to_display ( & time_str) ) ;
431- lcd_driver. display_on_lcd ( lcd) ;
438+ lcd_driver. display_on_lcd ( lcd) . await ;
432439 } ,
433440 Scene :: Finished => {
434441 let solve_time = current_state. solve_time . unwrap_or ( 0 ) ;
@@ -513,7 +520,7 @@ async fn process_lcd<T: OutputPin, D: DelayNs>(
513520 let progress = global_state. update_progress . wait ( ) . await ;
514521 _ = lcd_driver. print ( 1 , & alloc:: format!( "{progress}%" ) , PrintAlign :: Center , true ) ;
515522
516- lcd_driver. display_on_lcd ( lcd) ;
523+ lcd_driver. display_on_lcd ( lcd) . await ;
517524 }
518525 }
519526 }
0 commit comments