added unittests for result code helper
Some checks failed
Rust/sat-rs/pipeline/pr-main There was a failure building this commit
Some checks failed
Rust/sat-rs/pipeline/pr-main There was a failure building this commit
This commit is contained in:
parent
296832d6e1
commit
6a827cbd6f
@ -42,20 +42,20 @@ pub mod tmtc_err {
|
|||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
#[resultcode]
|
#[resultcode]
|
||||||
pub const INVALID_PUS_SERVICE: ResultU16 = ResultU16::const_new(GroupId::Tmtc as u8, 0);
|
pub const INVALID_PUS_SERVICE: ResultU16 = ResultU16::new(GroupId::Tmtc as u8, 0);
|
||||||
#[resultcode]
|
#[resultcode]
|
||||||
pub const INVALID_PUS_SUBSERVICE: ResultU16 = ResultU16::const_new(GroupId::Tmtc as u8, 1);
|
pub const INVALID_PUS_SUBSERVICE: ResultU16 = ResultU16::new(GroupId::Tmtc as u8, 1);
|
||||||
#[resultcode]
|
#[resultcode]
|
||||||
pub const PUS_SERVICE_NOT_IMPLEMENTED: ResultU16 = ResultU16::const_new(GroupId::Tmtc as u8, 2);
|
pub const PUS_SERVICE_NOT_IMPLEMENTED: ResultU16 = ResultU16::new(GroupId::Tmtc as u8, 2);
|
||||||
#[resultcode]
|
#[resultcode]
|
||||||
pub const UNKNOWN_TARGET_ID: ResultU16 = ResultU16::const_new(GroupId::Tmtc as u8, 3);
|
pub const UNKNOWN_TARGET_ID: ResultU16 = ResultU16::new(GroupId::Tmtc as u8, 3);
|
||||||
|
|
||||||
#[resultcode(
|
#[resultcode(
|
||||||
info = "Not enough data inside the TC application data field. Optionally includes: \
|
info = "Not enough data inside the TC application data field. Optionally includes: \
|
||||||
8 bytes of failure data containing 2 failure parameters, \
|
8 bytes of failure data containing 2 failure parameters, \
|
||||||
P1 (u32 big endian): Expected data length, P2: Found data length"
|
P1 (u32 big endian): Expected data length, P2: Found data length"
|
||||||
)]
|
)]
|
||||||
pub const NOT_ENOUGH_APP_DATA: ResultU16 = ResultU16::const_new(GroupId::Tmtc as u8, 2);
|
pub const NOT_ENOUGH_APP_DATA: ResultU16 = ResultU16::new(GroupId::Tmtc as u8, 2);
|
||||||
|
|
||||||
pub const TMTC_RESULTS: &[ResultU16Info] = &[
|
pub const TMTC_RESULTS: &[ResultU16Info] = &[
|
||||||
INVALID_PUS_SERVICE_EXT,
|
INVALID_PUS_SERVICE_EXT,
|
||||||
@ -69,13 +69,13 @@ pub mod hk_err {
|
|||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
#[resultcode]
|
#[resultcode]
|
||||||
pub const TARGET_ID_MISSING: ResultU16 = ResultU16::const_new(GroupId::Hk as u8, 0);
|
pub const TARGET_ID_MISSING: ResultU16 = ResultU16::new(GroupId::Hk as u8, 0);
|
||||||
#[resultcode]
|
#[resultcode]
|
||||||
pub const UNIQUE_ID_MISSING: ResultU16 = ResultU16::const_new(GroupId::Hk as u8, 1);
|
pub const UNIQUE_ID_MISSING: ResultU16 = ResultU16::new(GroupId::Hk as u8, 1);
|
||||||
#[resultcode]
|
#[resultcode]
|
||||||
pub const UNKNOWN_TARGET_ID: ResultU16 = ResultU16::const_new(GroupId::Hk as u8, 2);
|
pub const UNKNOWN_TARGET_ID: ResultU16 = ResultU16::new(GroupId::Hk as u8, 2);
|
||||||
#[resultcode]
|
#[resultcode]
|
||||||
pub const COLLECTION_INTERVAL_MISSING: ResultU16 = ResultU16::const_new(GroupId::Hk as u8, 3);
|
pub const COLLECTION_INTERVAL_MISSING: ResultU16 = ResultU16::new(GroupId::Hk as u8, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::enum_variant_names)]
|
#[allow(clippy::enum_variant_names)]
|
||||||
|
@ -4,6 +4,7 @@ use spacepackets::ecss::{EcssEnumU16, EcssEnumeration};
|
|||||||
use spacepackets::util::UnsignedEnum;
|
use spacepackets::util::UnsignedEnum;
|
||||||
use spacepackets::ByteConversionError;
|
use spacepackets::ByteConversionError;
|
||||||
|
|
||||||
|
/// Simple [u16] based result code type which also allows to group related resultcodes.
|
||||||
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||||
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
|
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
|
||||||
pub struct ResultU16 {
|
pub struct ResultU16 {
|
||||||
@ -12,7 +13,7 @@ pub struct ResultU16 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl ResultU16 {
|
impl ResultU16 {
|
||||||
pub const fn const_new(group_id: u8, unique_id: u8) -> Self {
|
pub const fn new(group_id: u8, unique_id: u8) -> Self {
|
||||||
Self {
|
Self {
|
||||||
group_id,
|
group_id,
|
||||||
unique_id,
|
unique_id,
|
||||||
@ -58,3 +59,26 @@ impl EcssEnumeration for ResultU16 {
|
|||||||
16
|
16
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const RESULT_CODE_CONST: ResultU16 = ResultU16::new(1, 1);
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
pub fn test_basic() {
|
||||||
|
let result_code = ResultU16::new(1, 1);
|
||||||
|
assert_eq!(result_code.unique_id(), 0);
|
||||||
|
assert_eq!(result_code.group_id(), 0);
|
||||||
|
assert_eq!(result_code, RESULT_CODE_CONST);
|
||||||
|
assert_eq!(result_code.raw(), (1_u16 << 8) | 1);
|
||||||
|
assert_eq!(result_code.pfc(), 16);
|
||||||
|
assert_eq!(result_code.size(), 2);
|
||||||
|
let mut buf: [u8; 2] = [0; 2];
|
||||||
|
let written = result_code.write_to_be_bytes(&mut buf).unwrap();
|
||||||
|
assert_eq!(written, 2);
|
||||||
|
assert_eq!(buf[0], 1);
|
||||||
|
assert_eq!(buf[1], 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user