@@ -302,7 +302,11 @@ impl CalibrationCoefficients {
302
302
///
303
303
/// # Datasheet
304
304
/// Apendix A, Section 8.6
305
- fn compensate_pressure ( & self , temperature : ThermodynamicTemperature , pressure_uncompensated : u32 ) -> Pressure {
305
+ fn compensate_pressure (
306
+ & self ,
307
+ temperature : ThermodynamicTemperature ,
308
+ pressure_uncompensated : u32 ,
309
+ ) -> Pressure {
306
310
// This could be done in fewer expressions, but it's broken down for clarity and to match the datasheet
307
311
let uncompensated = pressure_uncompensated as f32 ;
308
312
let temperature = temperature. get :: < degree_celsius > ( ) ;
@@ -314,12 +318,14 @@ impl CalibrationCoefficients {
314
318
let partial_data1 = self . par_p2 * temperature;
315
319
let partial_data2 = self . par_p3 * temperature * temperature;
316
320
let partial_data3 = self . par_p4 * temperature * temperature * temperature;
317
- let partial_out2 = uncompensated * ( self . par_p1 + partial_data1 + partial_data2 + partial_data3) ;
321
+ let partial_out2 =
322
+ uncompensated * ( self . par_p1 + partial_data1 + partial_data2 + partial_data3) ;
318
323
319
324
let partial_data1 = uncompensated * uncompensated;
320
325
let partial_data2 = self . par_p9 + self . par_p10 * temperature;
321
326
let partial_data3 = partial_data1 * partial_data2;
322
- let partial_data4 = partial_data3 + uncompensated * uncompensated * uncompensated * self . par_p11 ;
327
+ let partial_data4 =
328
+ partial_data3 + uncompensated * uncompensated * uncompensated * self . par_p11 ;
323
329
324
330
let pressure = partial_out1 + partial_out2 + partial_data4;
325
331
Pressure :: new :: < pascal > ( pressure)
@@ -537,7 +543,9 @@ where
537
543
538
544
/// Calculate the altitude based on the pressure and calibrated pressure.
539
545
fn calculate_altitude ( pressure : Pressure , sea_level_pressure : Pressure ) -> Length {
540
- Length :: new :: < foot > ( 145366.45 * ( 1.0 - powf ( ( pressure / sea_level_pressure) . value , 0.190284 ) ) )
546
+ Length :: new :: < foot > (
547
+ 145366.45 * ( 1.0 - powf ( ( pressure / sea_level_pressure) . value , 0.190284 ) ) ,
548
+ )
541
549
}
542
550
}
543
551
@@ -571,7 +579,10 @@ mod tests {
571
579
impl Default for CalibrationCoefficients {
572
580
fn default ( ) -> Self {
573
581
// NVM_PAR registers (0x31 .. 0x45) from a real BMP390, rev 0x01
574
- Self :: from_registers ( & [ 0x98 , 0x6c , 0xa9 , 0x4a , 0xf9 , 0xe3 , 0x1c , 0x61 , 0x16 , 0x06 , 0x01 , 0x51 , 0x4a , 0xde , 0x5d , 0x03 , 0xfa , 0xf9 , 0x0e , 0x06 , 0xf5 ] )
582
+ Self :: from_registers ( & [
583
+ 0x98 , 0x6c , 0xa9 , 0x4a , 0xf9 , 0xe3 , 0x1c , 0x61 , 0x16 , 0x06 , 0x01 , 0x51 , 0x4a , 0xde ,
584
+ 0x5d , 0x03 , 0xfa , 0xf9 , 0x0e , 0x06 , 0xf5 ,
585
+ ] )
575
586
}
576
587
}
577
588
@@ -645,7 +656,8 @@ mod tests {
645
656
) ] ;
646
657
647
658
let mut i2c = Mock :: new ( & expectations) ;
648
- let mut bmp390 = Bmp390 :: new_with_coefficients ( i2c. clone ( ) , addr, CalibrationCoefficients :: default ( ) ) ;
659
+ let mut bmp390 =
660
+ Bmp390 :: new_with_coefficients ( i2c. clone ( ) , addr, CalibrationCoefficients :: default ( ) ) ;
649
661
let temperature = bmp390. temperature ( ) . await . unwrap ( ) ;
650
662
assert_eq ! ( temperature, expected_temperature( ) ) ;
651
663
i2c. done ( ) ;
@@ -663,7 +675,8 @@ mod tests {
663
675
) ] ;
664
676
665
677
let mut i2c = Mock :: new ( & expectations) ;
666
- let mut bmp390 = Bmp390 :: new_with_coefficients ( i2c. clone ( ) , addr, CalibrationCoefficients :: default ( ) ) ;
678
+ let mut bmp390 =
679
+ Bmp390 :: new_with_coefficients ( i2c. clone ( ) , addr, CalibrationCoefficients :: default ( ) ) ;
667
680
let pressure = bmp390. pressure ( ) . await . unwrap ( ) ;
668
681
assert_eq ! ( pressure, expected_pressure( ) ) ;
669
682
i2c. done ( ) ;
@@ -679,7 +692,8 @@ mod tests {
679
692
) ] ;
680
693
681
694
let mut i2c = Mock :: new ( & expectations) ;
682
- let mut bmp390 = Bmp390 :: new_with_coefficients ( i2c. clone ( ) , addr, CalibrationCoefficients :: default ( ) ) ;
695
+ let mut bmp390 =
696
+ Bmp390 :: new_with_coefficients ( i2c. clone ( ) , addr, CalibrationCoefficients :: default ( ) ) ;
683
697
let measurement = bmp390. measure ( ) . await . unwrap ( ) ;
684
698
assert_eq ! ( measurement. temperature, expected_temperature( ) ) ;
685
699
assert_eq ! ( measurement. pressure, expected_pressure( ) ) ;
@@ -698,8 +712,12 @@ mod tests {
698
712
) ] ;
699
713
700
714
let mut i2c = Mock :: new ( & expectations) ;
701
- let mut bmp390 = Bmp390 :: new_with_coefficients ( i2c. clone ( ) , addr, CalibrationCoefficients :: default ( ) ) ;
702
- let altitude = bmp390. altitude ( Pressure :: new :: < millibar > ( 1013.25 ) ) . await . unwrap ( ) ;
715
+ let mut bmp390 =
716
+ Bmp390 :: new_with_coefficients ( i2c. clone ( ) , addr, CalibrationCoefficients :: default ( ) ) ;
717
+ let altitude = bmp390
718
+ . altitude ( Pressure :: new :: < millibar > ( 1013.25 ) )
719
+ . await
720
+ . unwrap ( ) ;
703
721
assert_eq ! ( altitude. get:: <meter>( ) , expected_altitude( ) . get:: <meter>( ) ) ;
704
722
i2c. done ( ) ;
705
723
}
0 commit comments