From 59ff782d525b48e49fbb4eb32b09294f548f3e68 Mon Sep 17 00:00:00 2001 From: finga Date: Fri, 9 Jun 2023 09:20:24 +0200 Subject: [PATCH] firmware: Use `const`s for LCD limits Set the given dimensional limits of the LCD in `const`s and use them accordingly. --- firmware/src/lcd.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/firmware/src/lcd.rs b/firmware/src/lcd.rs index afc1b23..cb599d4 100644 --- a/firmware/src/lcd.rs +++ b/firmware/src/lcd.rs @@ -9,6 +9,10 @@ use nb::block; use crate::{assets::SYMBOL_TABLE, DefaultClock}; +const LCD_WIDTH: u8 = 102; +const LCD_HEIGHT: u8 = 8; +const LCD_MAX_CONTRAST: u8 = 63; + // TODO: Make `cd` and `rst` pins generic pins pub struct Lcd { pub spi: Spi, @@ -65,28 +69,28 @@ impl Lcd { } pub fn set_contrast(&mut self, contrast: u8) { - assert!(contrast <= 63); + assert!(contrast <= LCD_MAX_CONTRAST); self.control([0x81, contrast].iter()); } pub fn move_cursor(&mut self, segment: u8, page: u8) { - assert!(segment < 102); - assert!(page < 8); + assert!(segment < LCD_WIDTH); + assert!(page < LCD_HEIGHT); self.control([0x0F & segment, 0x10 + (segment >> 4), 0xB0 + page].iter()); } fn fill(&mut self, segment: u8, page: u8, width: u8, data: u8) { - assert!(segment + width <= 102); + assert!(segment + width <= LCD_WIDTH); self.move_cursor(segment, page); self.display(false, iter::repeat(&data).take(width.into())); } pub fn fill_area(&mut self, segment: u8, page: u8, width: u8, height: u8, data: u8) { - assert!(segment + width <= 102); - assert!(page + height <= 8); + assert!(segment + width <= LCD_WIDTH); + assert!(page + height <= LCD_HEIGHT); for i in 0..height { self.fill(segment, page + i, width, data);