@@ -51,6 +51,9 @@ mod hts221;
51
51
mod lps25h;
52
52
mod rh;
53
53
54
+ use std:: error:: Error ;
55
+ use std:: fmt:: Display ;
56
+
54
57
pub use measurements:: Angle ;
55
58
pub use measurements:: Pressure ;
56
59
pub use measurements:: Temperature ;
@@ -127,10 +130,27 @@ pub enum SenseHatError {
127
130
GenericError ,
128
131
I2CError ( LinuxI2CError ) ,
129
132
LSM9DS1Error ( lsm9ds1:: Error ) ,
133
+ #[ cfg( feature = "led-matrix" ) ]
130
134
ScreenError ( sensehat_screen:: error:: ScreenError ) ,
131
135
CharacterError ( std:: string:: FromUtf16Error ) ,
132
136
}
133
137
138
+ impl Display for SenseHatError {
139
+ fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
140
+ match self {
141
+ SenseHatError :: NotReady => write ! ( f, "Not ready error" ) ,
142
+ SenseHatError :: GenericError => write ! ( f, "Generic error" ) ,
143
+ SenseHatError :: I2CError ( err) => write ! ( f, "I2C error: {}" , err) ,
144
+ SenseHatError :: LSM9DS1Error ( err) => write ! ( f, "LSM9DS1 error: {}" , err) ,
145
+ #[ cfg( feature = "led-matrix" ) ]
146
+ SenseHatError :: ScreenError ( err) => write ! ( f, "Screen error: {}" , err) ,
147
+ SenseHatError :: CharacterError ( err) => write ! ( f, "Character error: {}" , err) ,
148
+ }
149
+ }
150
+ }
151
+
152
+ impl Error for SenseHatError { }
153
+
134
154
/// A shortcut for Results that can return `T` or `SenseHatError`.
135
155
pub type SenseHatResult < T > = Result < T , SenseHatError > ;
136
156
@@ -154,7 +174,7 @@ impl<'a> SenseHat<'a> {
154
174
let status = self . pressure_chip . status ( ) ?;
155
175
if ( status & 1 ) != 0 {
156
176
Ok ( Temperature :: from_celsius (
157
- self . pressure_chip . get_temp_celcius ( ) ?
177
+ self . pressure_chip . get_temp_celcius ( ) ?,
158
178
) )
159
179
} else {
160
180
Err ( SenseHatError :: NotReady )
@@ -166,7 +186,7 @@ impl<'a> SenseHat<'a> {
166
186
let status = self . pressure_chip . status ( ) ?;
167
187
if ( status & 2 ) != 0 {
168
188
Ok ( Pressure :: from_hectopascals (
169
- self . pressure_chip . get_pressure_hpa ( ) ?
189
+ self . pressure_chip . get_pressure_hpa ( ) ?,
170
190
) )
171
191
} else {
172
192
Err ( SenseHatError :: NotReady )
@@ -279,7 +299,13 @@ impl<'a> SenseHat<'a> {
279
299
/// * a string from the [W3C basic keywords](https://www.w3.org/TR/css-color-3/#html4) like `"white"` or `"purple"`, or
280
300
/// * an RGB 8-bit triple like `(0, 0xFF, 0)`.
281
301
#[ cfg( feature = "led-matrix" ) ]
282
- pub fn show_message < INT , FG , BG > ( & mut self , message : & str , interval : INT , fg : FG , bg : BG ) -> SenseHatResult < ( ) >
302
+ pub fn show_message < INT , FG , BG > (
303
+ & mut self ,
304
+ message : & str ,
305
+ interval : INT ,
306
+ fg : FG ,
307
+ bg : BG ,
308
+ ) -> SenseHatResult < ( ) >
283
309
where
284
310
INT : Into < :: std:: time:: Duration > ,
285
311
FG : Into < Colour > ,
@@ -303,7 +329,6 @@ impl<'a> SenseHat<'a> {
303
329
:: std:: thread:: sleep ( wait_time) ;
304
330
} ) ;
305
331
Ok ( ( ) )
306
-
307
332
}
308
333
309
334
/// Displays a scrolling message on the LED matrix. Blocks until the
@@ -354,6 +379,7 @@ impl From<std::string::FromUtf16Error> for SenseHatError {
354
379
}
355
380
}
356
381
382
+ #[ cfg( feature = "led-matrix" ) ]
357
383
impl From < sensehat_screen:: error:: ScreenError > for SenseHatError {
358
384
fn from ( err : sensehat_screen:: error:: ScreenError ) -> SenseHatError {
359
385
SenseHatError :: ScreenError ( err)
0 commit comments