@@ -151,14 +151,14 @@ where
151
151
Ok ( ( ) )
152
152
}
153
153
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 > > {
155
155
self . set_dot_data ( ) ?;
156
156
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 {
158
158
break ;
159
159
}
160
160
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 ;
162
162
for j in 0 ..control_word:: CHAR_WIDTH {
163
163
self . send_byte ( font5x7:: FONT5X7 . load_at ( char_start_index + j) ) ?;
164
164
}
@@ -167,38 +167,54 @@ where
167
167
Ok ( ( ) )
168
168
}
169
169
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
172
181
182
+ let mut minus = value < 0 ;
173
183
let mut value = value;
174
184
for index in ( 0 ..NUM_CHARS ) . rev ( ) {
175
185
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'-'
177
192
} else {
178
- b' ' as u8
193
+ b' '
179
194
} ;
180
- value /= 10 ;
181
195
}
182
- self . print_c_string ( & buf[ ..NUM_CHARS ] ) ?;
196
+ self . print_ascii_bytes ( & buf[ ..NUM_CHARS ] ) ?;
183
197
184
198
Ok ( ( ) )
185
199
}
186
200
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
+ }
202
218
203
219
pub fn display_blank ( & mut self ) -> Result < ( ) , Hcms29xxError < PinErr > > {
204
220
if let Some ( ref blank) = self . blank {
0 commit comments