Use u16 for raw StatusWords

This commit is contained in:
Jack Grigg
2019-11-30 15:24:10 +00:00
parent 4b5cd8dd45
commit cfef291ad9
+9 -9
View File
@@ -280,7 +280,7 @@ impl Response {
/// Get the raw [`StatusWords`] code for this response. /// Get the raw [`StatusWords`] code for this response.
#[cfg(feature = "untested")] #[cfg(feature = "untested")]
pub fn code(&self) -> u32 { pub fn code(&self) -> u16 {
self.status_words.code() self.status_words.code()
} }
@@ -317,7 +317,7 @@ impl From<Vec<u8>> for Response {
} }
let sw = StatusWords::from( let sw = StatusWords::from(
(bytes[bytes.len() - 2] as u32) << 8 | (bytes[bytes.len() - 1] as u32), (bytes[bytes.len() - 2] as u16) << 8 | (bytes[bytes.len() - 1] as u16),
); );
let len = bytes.len() - 2; let len = bytes.len() - 2;
@@ -377,15 +377,15 @@ pub(crate) enum StatusWords {
NotSupportedError, NotSupportedError,
/// Other/unrecognized status words /// Other/unrecognized status words
Other(u32), Other(u16),
} }
impl StatusWords { impl StatusWords {
/// Get the numerical response code for these status words /// Get the numerical response code for these status words
pub fn code(self) -> u32 { pub fn code(self) -> u16 {
match self { match self {
StatusWords::None => 0, StatusWords::None => 0,
StatusWords::VerifyFailError { tries } => 0x63c0 & tries as u32, StatusWords::VerifyFailError { tries } => 0x63c0 & tries as u16,
StatusWords::SecurityStatusError => 0x6982, StatusWords::SecurityStatusError => 0x6982,
StatusWords::AuthBlockedError => 0x6983, StatusWords::AuthBlockedError => 0x6983,
StatusWords::IncorrectParamError => 0x6a80, StatusWords::IncorrectParamError => 0x6a80,
@@ -402,8 +402,8 @@ impl StatusWords {
} }
} }
impl From<u32> for StatusWords { impl From<u16> for StatusWords {
fn from(sw: u32) -> Self { fn from(sw: u16) -> Self {
match sw { match sw {
0x0000 => StatusWords::None, 0x0000 => StatusWords::None,
sw if sw & 0xfff0 == 0x63c0 => StatusWords::VerifyFailError { sw if sw & 0xfff0 == 0x63c0 => StatusWords::VerifyFailError {
@@ -420,8 +420,8 @@ impl From<u32> for StatusWords {
} }
} }
impl From<StatusWords> for u32 { impl From<StatusWords> for u16 {
fn from(sw: StatusWords) -> u32 { fn from(sw: StatusWords) -> u16 {
sw.code() sw.code()
} }
} }