use fielder::bitfield;
#[test]
fn nav_pvt_flags_one() {
bitfield! {
struct FlagsOne: u8 {
GnssFixOk: 0;
DiffSoln: 1;
PsmNotActive: 2..4 = 0;
PsmEnabled: 2..4 = 1;
PsmAcquisition: 2..4 = 2;
PsmTracking: 2..4 = 3;
PsmPowerOptimizedTracking: 2..4 = 4;
PsmInactive: 2..4 = 5;
HeadVehValid: 5;
CarrSolnNone: 6..7 = 0;
CarrSolnFloating: 6..7 = 1;
CarrSolnFixed: 6..7 = 2;
}
};
let one = FlagsOne::from_bits(0b00000001);
assert!(one.contains(FlagsOne::GnssFixOk));
assert!(!one.contains(FlagsOne::DiffSoln));
assert!(one.contains(FlagsOne::PsmNotActive));
let two = FlagsOne::from_bits(0b00001110);
assert!(!two.contains(FlagsOne::GnssFixOk));
assert!(two.contains(FlagsOne::DiffSoln));
assert!(!two.contains(FlagsOne::PsmEnabled));
assert!(two.contains(FlagsOne::PsmTracking));
let three = FlagsOne::from_bits(0)
.set(FlagsOne::GnssFixOk)
.set(FlagsOne::DiffSoln)
.set(FlagsOne::PsmInactive)
.set(FlagsOne::CarrSolnNone);
assert_eq!(three.to_bits(), 0b00010111);
}