JohnDoneth / hd44780-driver

Implementation of the embedded-hal traits for the HD44780.
MIT License
37 stars 40 forks source link

Update crate from 0.3.0 to master branch git, got compiling errors #21

Closed Rudo2204 closed 4 years ago

Rudo2204 commented 4 years ago

I'm writing a small embedded project on the EK-TM4C123G eval board using this driver, using version 0.3.0 the code works fine but I needed the HD44780 struct not to take ownership of Delay so I switched to using the latest commit from the repo. I have changed the code to using the new syntax but when I compile I get this error:

error[E0599]: no method named `reset` found for enum `core::result::Result<hd44780_driver::HD44780<hd44780_driver::bus::FourBitBus<tm4c123x_hal::gpio::gpioa::PA4<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpiod::PD6<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC7<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC6<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC5<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC4<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>>>, hd44780_driver::error::Error>` in the current scope
  --> examples/lcd_new.rs:37:9
   |
37 |     lcd.reset(&mut delay);
   |         ^^^^^ method not found in `core::result::Result<hd44780_driver::HD44780<hd44780_driver::bus::FourBitBus<tm4c123x_hal::gpio::gpioa::PA4<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpiod::PD6<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC7<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC6<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC5<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC4<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>>>, hd44780_driver::error::Error>`

error[E0599]: no method named `clear` found for enum `core::result::Result<hd44780_driver::HD44780<hd44780_driver::bus::FourBitBus<tm4c123x_hal::gpio::gpioa::PA4<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpiod::PD6<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC7<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC6<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC5<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC4<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>>>, hd44780_driver::error::Error>` in the current scope
  --> examples/lcd_new.rs:38:9
   |
38 |     lcd.clear(&mut delay);
   |         ^^^^^ method not found in `core::result::Result<hd44780_driver::HD44780<hd44780_driver::bus::FourBitBus<tm4c123x_hal::gpio::gpioa::PA4<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpiod::PD6<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC7<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC6<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC5<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC4<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>>>, hd44780_driver::error::Error>`

error[E0599]: no method named `set_display_mode` found for enum `core::result::Result<hd44780_driver::HD44780<hd44780_driver::bus::FourBitBus<tm4c123x_hal::gpio::gpioa::PA4<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpiod::PD6<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC7<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC6<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC5<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC4<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>>>, hd44780_driver::error::Error>` in the current scope
  --> examples/lcd_new.rs:40:9
   |
40 |     lcd.set_display_mode(DisplayMode {
   |         ^^^^^^^^^^^^^^^^ method not found in `core::result::Result<hd44780_driver::HD44780<hd44780_driver::bus::FourBitBus<tm4c123x_hal::gpio::gpioa::PA4<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpiod::PD6<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC7<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC6<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC5<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC4<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>>>, hd44780_driver::error::Error>`

error[E0599]: no method named `write_str` found for enum `core::result::Result<hd44780_driver::HD44780<hd44780_driver::bus::FourBitBus<tm4c123x_hal::gpio::gpioa::PA4<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpiod::PD6<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC7<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC6<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC5<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC4<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>>>, hd44780_driver::error::Error>` in the current scope
  --> examples/lcd_new.rs:46:9
   |
46 |     lcd.write_str("HELLO, WORLD", &mut delay);
   |         ^^^^^^^^^ method not found in `core::result::Result<hd44780_driver::HD44780<hd44780_driver::bus::FourBitBus<tm4c123x_hal::gpio::gpioa::PA4<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpiod::PD6<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC7<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC6<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC5<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC4<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>>>, hd44780_driver::error::Error>`

I also tried to unwrap the result, but I got this error:

error[E0599]: no method named `unwrap` found for enum `core::result::Result<hd44780_driver::HD44780<hd44780_driver::bus::FourBitBus<tm4c123x_hal::gpio::gpioa::PA4<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpiod::PD6<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC7<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC6<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC5<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC4<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>>>, hd44780_driver::error::Error>` in the current scope
  --> examples/lcd_new.rs:36:73
   |
36 |     let mut lcd = HD44780::new_4bit(rs, en, b4, b5, b6, b7, &mut delay).unwrap();
   |                                                                         ^^^^^^ method not found in `core::result::Result<hd44780_driver::HD44780<hd44780_driver::bus::FourBitBus<tm4c123x_hal::gpio::gpioa::PA4<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpiod::PD6<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC7<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC6<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC5<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>, tm4c123x_hal::gpio::gpioc::PC4<tm4c123x_hal::gpio::Output<tm4c123x_hal::gpio::PushPull>>>>, hd44780_driver::error::Error>

Not quite sure how to fix this.

Rudo2204 commented 4 years ago

It seems like this error was caused because the Error struct in src/error.rs does not implement Debug. I see that in PR #20 this has been fixed. Closing this now.