X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Fcommon%2Fdisplay.rs;h=38eeaa9228ed6c23f8afa4466bc5834d95c98688;hb=9a546fcb6aaae061f51546dd538883a99c419fce;hp=4f09ef5f95a346f4e8438abd03ab4398670c791c;hpb=9cef125c6dc3f96c4475d3b0064d4690ca2cb71e;p=gps-watch.git diff --git a/src/common/display.rs b/src/common/display.rs index 4f09ef5..38eeaa9 100644 --- a/src/common/display.rs +++ b/src/common/display.rs @@ -32,6 +32,14 @@ pub struct Display { i2c_slave_address: u8, } +pub enum Icon { + SatelliteBody, + SatelliteWave1, + SatelliteWave2, + Heart, + Alarm, +} + fn delay(u: u32) { let mut r = u; @@ -73,6 +81,8 @@ fn delay2(u: u32) { } } +const ICON_COLUMN: usize = 8; + impl Display { pub fn new(reset_gpio: u32, reset_gpio_pin: u32, i2c_slave_address: u8) -> Display { Display { @@ -114,6 +124,30 @@ impl Display { } } + fn icon_row(&self, icon: Icon) -> usize { + match icon { + Icon::SatelliteBody => 31, + Icon::SatelliteWave1 => 29, + Icon::SatelliteWave2 => 27, + Icon::Heart => 45, + Icon::Alarm => 61, + } + } + + pub fn show_icon(&mut self, icon: Icon) { + let row = self.icon_row(icon); + + self.seek(row, ICON_COLUMN); + self.write_data(0x80); + } + + pub fn hide_icon(&mut self, icon: Icon) { + let row = self.icon_row(icon); + + self.seek(row, ICON_COLUMN); + self.write_data(0x00); + } + pub fn clear(&mut self) { self.seek(0, 0); @@ -123,10 +157,10 @@ impl Display { } pub fn draw(&mut self, screen: &screen::Screen) { - let mut mask : u8 = 0x80; + let mut mask : u8 = 0x01; for col in 0..screen::WIDTH_PX { - mask = mask.rotate_left(1); + mask = mask.rotate_right(1); // Rotate by 90 degrees. //