Skip to content

Commit d8e1839

Browse files
committed
more functions
1 parent 1d8c475 commit d8e1839

File tree

2 files changed

+40
-25
lines changed

2 files changed

+40
-25
lines changed

src/control_word.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
pub const CHAR_WIDTH: usize = 5;
2-
pub const CHAR_HEIGHT: usize = 7;
32
pub const DEVICE_CHARS: usize = 4;
43

54
#[derive(Debug, Clone, Copy, PartialEq, Eq)]

src/lib.rs

+40-24
Original file line numberDiff line numberDiff line change
@@ -151,14 +151,14 @@ where
151151
Ok(())
152152
}
153153

154-
pub fn print_c_string(&mut self, c_str: &[u8]) -> Result<(), Hcms29xxError<PinErr>> {
154+
pub fn print_ascii_bytes(&mut self, bytes: &[u8]) -> Result<(), Hcms29xxError<PinErr>> {
155155
self.set_dot_data()?;
156156
for i in 0..NUM_CHARS {
157-
if i >= c_str.len() || c_str[i] < self.font_ascii_start_index {
157+
if i >= bytes.len() || bytes[i] < self.font_ascii_start_index {
158158
break;
159159
}
160160
let char_start_index: usize =
161-
(c_str[i] - self.font_ascii_start_index) as usize * control_word::CHAR_WIDTH;
161+
(bytes[i] - self.font_ascii_start_index) as usize * control_word::CHAR_WIDTH;
162162
for j in 0..control_word::CHAR_WIDTH {
163163
self.send_byte(font5x7::FONT5X7.load_at(char_start_index + j))?;
164164
}
@@ -167,38 +167,54 @@ where
167167
Ok(())
168168
}
169169

170-
pub fn print_u32(&mut self, value: u32) -> Result<(), Hcms29xxError<PinErr>> {
171-
let mut buf = [0; 10]; // u32 max base-10 digits
170+
pub fn print_cols(&mut self, cols: &[u8]) -> Result<(), Hcms29xxError<PinErr>> {
171+
self.set_dot_data()?;
172+
for &byte in cols {
173+
self.send_byte(byte)?;
174+
}
175+
self.end_transfer()?;
176+
Ok(())
177+
}
178+
179+
pub fn print_i32(&mut self, value: i32) -> Result<(), Hcms29xxError<PinErr>> {
180+
let mut buf = [0; 11]; // i32 max 11 base-10 digits
172181

182+
let mut minus = value < 0;
173183
let mut value = value;
174184
for index in (0..NUM_CHARS).rev() {
175185
buf[index] = if value > 0 {
176-
(b'0' + (value % 10) as u8) as u8
186+
let digit = b'0' + (value % 10) as u8;
187+
value /= 10;
188+
digit
189+
} else if minus {
190+
minus = false;
191+
b'-'
177192
} else {
178-
b' ' as u8
193+
b' '
179194
};
180-
value /= 10;
181195
}
182-
self.print_c_string(&buf[..NUM_CHARS])?;
196+
self.print_ascii_bytes(&buf[..NUM_CHARS])?;
183197

184198
Ok(())
185199
}
186200

187-
// pub fn print_raw(&mut self, raw: &[u8]) -> Result<(), Hcms29xxError<PinErr>> {
188-
// self.set_dot_data()?;
189-
// for i in 0..NUM_CHARS {
190-
// if i >= raw.len() {
191-
// break;
192-
// }
193-
// self.send_byte(raw[i])?;
194-
// }
195-
// self.end_transfer()?;
196-
// Ok(())
197-
// }
198-
199-
//pub fn print_signed_int
200-
201-
//pub fn print_u16
201+
pub fn print_u32(&mut self, value: u32) -> Result<(), Hcms29xxError<PinErr>> {
202+
let mut buf = [0; 10]; // u32 max 10 base-10 digits
203+
204+
let mut value = value;
205+
for index in (0..NUM_CHARS).rev() {
206+
buf[index] = if value > 0 {
207+
let digit = b'0' + (value % 10) as u8;
208+
value /= 10;
209+
digit
210+
} else {
211+
b' '
212+
};
213+
}
214+
self.print_ascii_bytes(&buf[..NUM_CHARS])?;
215+
216+
Ok(())
217+
}
202218

203219
pub fn display_blank(&mut self) -> Result<(), Hcms29xxError<PinErr>> {
204220
if let Some(ref blank) = self.blank {

0 commit comments

Comments
 (0)