use deku::prelude::*;
use num_enum::IntoPrimitive;
#[derive(Clone, Debug, Default, PartialEq, Copy, IntoPrimitive, DekuRead, DekuWrite)]
#[repr(u32)]
#[deku(id_type = "u32", endian = "endian", ctx = "endian: deku::ctx::Endian")]
pub enum SecurityMode {
Reserved = 0,
#[default]
Unauthenticated = 1,
Authenticated = 2,
Encrypted = 4,
EncryptedControlUnauthTest = 8,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn should_have_valid_discriminants() {
let reserved: u32 = SecurityMode::Reserved.into();
let unauthenticated: u32 = SecurityMode::Unauthenticated.into();
let authenticated: u32 = SecurityMode::Authenticated.into();
let encrypted: u32 = SecurityMode::Encrypted.into();
assert_eq!(reserved, 0u32);
assert_eq!(unauthenticated, 1u32);
assert_eq!(authenticated, 2u32);
assert_eq!(encrypted, 4u32);
}
}