diff --git a/Cargo.lock b/Cargo.lock index b83d042..0ae6d25 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -104,9 +104,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "cc" -version = "1.0.73" +version = "1.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "581f5dba903aac52ea3feb5ec4810848460ee833876f1f9b0fdeab1f19091574" [[package]] name = "cfg-if" @@ -372,9 +372,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.51" +version = "0.1.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5a6ef98976b22b3b7f2f3a806f858cb862044cfa66805aa3ad84cb3d3b785ed" +checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -411,9 +411,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.135" +version = "0.2.137" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c" +checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" [[package]] name = "link-cplusplus" @@ -495,9 +495,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1" +checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" [[package]] name = "parking_lot_core" diff --git a/fsrc-core/src/lib.rs b/fsrc-core/src/lib.rs index c5178d4..789dc36 100644 --- a/fsrc-core/src/lib.rs +++ b/fsrc-core/src/lib.rs @@ -12,6 +12,7 @@ extern crate alloc; #[cfg(any(feature = "std", test))] extern crate std; +extern crate downcast_rs; pub mod error; #[cfg(feature = "alloc")] @@ -29,5 +30,3 @@ pub mod pool; pub mod pus; pub mod tmtc; pub mod util; - -extern crate downcast_rs; diff --git a/fsrc-core/src/util.rs b/fsrc-core/src/util.rs index 5041306..27afd18 100644 --- a/fsrc-core/src/util.rs +++ b/fsrc-core/src/util.rs @@ -1,8 +1,7 @@ -//! Utility types and enums +//! Utility types and enums. //! //! This module contains various helper types. This includes wrapper for primitive rust types -//! using the newtype pattern. This was also done for pairs and triplets of these primtive types. -//! +//! using the newtype pattern. This was also done for pairs and triplets of these primitive types. //! The [ToBeBytes] was implemented for those types as well, which allows to easily convert them //! into a network friendly raw byte format. //! @@ -345,6 +344,7 @@ impl From> for Params { } } +/// Converts a byte slice into the [Params::Vec] variant impl From<&[u8]> for Params { fn from(val: &[u8]) -> Self { Self::Vec(val.to_vec()) @@ -357,6 +357,7 @@ impl From for Params { } } +/// Converts a string slice into the [Params::String] variant impl From<&str> for Params { fn from(val: &str) -> Self { Self::String(val.to_string()) diff --git a/fsrc-core/tests/pus_autogen_events.rs b/fsrc-core/tests/pus_autogen_events.rs new file mode 100644 index 0000000..03b4006 --- /dev/null +++ b/fsrc-core/tests/pus_autogen_events.rs @@ -0,0 +1,94 @@ +#![allow(dead_code, unused_imports)] + +use fsrc_core::events::{ + EventU32, EventU32TypedSev, GenericEvent, HasSeverity, LargestEventRaw, LargestGroupIdRaw, + Severity, SeverityInfo, SeverityLow, SeverityMedium, +}; +use std::convert::AsRef; + +#[derive(Debug)] +struct GroupIdIntrospection { + name: &'static str, + id: LargestGroupIdRaw, +} + +#[derive(Debug)] +struct EventIntrospection { + name: &'static str, + group_id: GroupIdIntrospection, + event: &'static EventU32, + info: &'static str, +} + +//#[event(descr="This is some info event")] +const INFO_EVENT_0: EventU32TypedSev = EventU32TypedSev::const_new(0, 0); +const INFO_EVENT_0_ERASED: EventU32 = EventU32::const_from_info(INFO_EVENT_0); + +// This is ideally auto-generated +const INFO_EVENT_0_INTROSPECTION: EventIntrospection = EventIntrospection { + name: "INFO_EVENT_0", + group_id: GroupIdIntrospection { + id: 0, + name: "Group ID 0 without name", + }, + event: &INFO_EVENT_0_ERASED, + info: "This is some info event", +}; + +//#[event(descr="This is some low severity event")] +const SOME_LOW_SEV_EVENT: EventU32TypedSev = EventU32TypedSev::const_new(0, 12); + +//const EVENT_LIST: [&'static Event; 2] = [&INFO_EVENT_0, &SOME_LOW_SEV_EVENT]; + +//#[event_group] +const TEST_GROUP_NAME: u16 = 1; +// Auto-generated? +const TEST_GROUP_NAME_NAME: &str = "TEST_GROUP_NAME"; + +//#[event(desc="Some medium severity event")] +const MEDIUM_SEV_EVENT_IN_OTHER_GROUP: EventU32TypedSev = + EventU32TypedSev::const_new(TEST_GROUP_NAME, 0); +const MEDIUM_SEV_EVENT_IN_OTHER_GROUP_REDUCED: EventU32 = + EventU32::const_from_medium(MEDIUM_SEV_EVENT_IN_OTHER_GROUP); + +// Also auto-generated +const MEDIUM_SEV_EVENT_IN_OTHER_GROUP_INTROSPECTION: EventIntrospection = EventIntrospection { + name: "MEDIUM_SEV_EVENT_IN_OTHER_GROUP", + group_id: GroupIdIntrospection { + name: TEST_GROUP_NAME_NAME, + id: TEST_GROUP_NAME, + }, + event: &MEDIUM_SEV_EVENT_IN_OTHER_GROUP_REDUCED, + info: "Some medium severity event", +}; + +const CONST_SLICE: &'static [u8] = &[0, 1, 2, 3]; +const INTROSPECTION_FOR_TEST_GROUP_0: [&EventIntrospection; 2] = + [&INFO_EVENT_0_INTROSPECTION, &INFO_EVENT_0_INTROSPECTION]; + +//const INTROSPECTION_FOR_TABLE: &'static [&EventIntrospection] = &INTROSPECTION_FOR_TEST_GROUP_0; + +const INTROSPECTION_FOR_TEST_GROUP_NAME: [&EventIntrospection; 1] = + [&MEDIUM_SEV_EVENT_IN_OTHER_GROUP_INTROSPECTION]; +//const BLAH: &'static [&EventIntrospection] = &INTROSPECTION_FOR_TEST_GROUP_NAME; + +const ALL_EVENTS: [&[&EventIntrospection]; 2] = [ + &INTROSPECTION_FOR_TEST_GROUP_0, + &INTROSPECTION_FOR_TEST_GROUP_NAME, +]; + +#[test] +fn main() { + //let test = stringify!(INFO_EVENT); + //println!("{:?}", test); + //for event in EVENT_LIST { + // println!("{:?}", event); + //} + //for events in ALL_EVENTS.into_iter().flatten() { + // dbg!("{:?}", events); + //} + //for introspection_info in INTROSPECTION_FOR_TEST_GROUP { + // dbg!("{:?}", introspection_info); + //} + //let test_struct = +} diff --git a/fsrc-core/tests/pus_events.rs b/fsrc-core/tests/pus_events.rs index b304939..99c13c5 100644 --- a/fsrc-core/tests/pus_events.rs +++ b/fsrc-core/tests/pus_events.rs @@ -1,94 +1,6 @@ -#![allow(dead_code, unused_imports)] - -use fsrc_core::events::{ - EventU32, EventU32TypedSev, GenericEvent, HasSeverity, LargestEventRaw, LargestGroupIdRaw, - Severity, SeverityInfo, SeverityLow, SeverityMedium, -}; -use std::convert::AsRef; - -#[derive(Debug)] -struct GroupIdIntrospection { - name: &'static str, - id: LargestGroupIdRaw, -} - -#[derive(Debug)] -struct EventIntrospection { - name: &'static str, - group_id: GroupIdIntrospection, - event: &'static EventU32, - info: &'static str, -} - -//#[event(descr="This is some info event")] -const INFO_EVENT_0: EventU32TypedSev = EventU32TypedSev::const_new(0, 0); -const INFO_EVENT_0_ERASED: EventU32 = EventU32::const_from_info(INFO_EVENT_0); - -// This is ideally auto-generated -const INFO_EVENT_0_INTROSPECTION: EventIntrospection = EventIntrospection { - name: "INFO_EVENT_0", - group_id: GroupIdIntrospection { - id: 0, - name: "Group ID 0 without name", - }, - event: &INFO_EVENT_0_ERASED, - info: "This is some info event", -}; - -//#[event(descr="This is some low severity event")] -const SOME_LOW_SEV_EVENT: EventU32TypedSev = EventU32TypedSev::const_new(0, 12); - -//const EVENT_LIST: [&'static Event; 2] = [&INFO_EVENT_0, &SOME_LOW_SEV_EVENT]; - -//#[event_group] -const TEST_GROUP_NAME: u16 = 1; -// Auto-generated? -const TEST_GROUP_NAME_NAME: &str = "TEST_GROUP_NAME"; - -//#[event(desc="Some medium severity event")] -const MEDIUM_SEV_EVENT_IN_OTHER_GROUP: EventU32TypedSev = - EventU32TypedSev::const_new(TEST_GROUP_NAME, 0); -const MEDIUM_SEV_EVENT_IN_OTHER_GROUP_REDUCED: EventU32 = - EventU32::const_from_medium(MEDIUM_SEV_EVENT_IN_OTHER_GROUP); - -// Also auto-generated -const MEDIUM_SEV_EVENT_IN_OTHER_GROUP_INTROSPECTION: EventIntrospection = EventIntrospection { - name: "MEDIUM_SEV_EVENT_IN_OTHER_GROUP", - group_id: GroupIdIntrospection { - name: TEST_GROUP_NAME_NAME, - id: TEST_GROUP_NAME, - }, - event: &MEDIUM_SEV_EVENT_IN_OTHER_GROUP_REDUCED, - info: "Some medium severity event", -}; - -const CONST_SLICE: &'static [u8] = &[0, 1, 2, 3]; -const INTROSPECTION_FOR_TEST_GROUP_0: [&EventIntrospection; 2] = - [&INFO_EVENT_0_INTROSPECTION, &INFO_EVENT_0_INTROSPECTION]; - -//const INTROSPECTION_FOR_TABLE: &'static [&EventIntrospection] = &INTROSPECTION_FOR_TEST_GROUP_0; - -const INTROSPECTION_FOR_TEST_GROUP_NAME: [&EventIntrospection; 1] = - [&MEDIUM_SEV_EVENT_IN_OTHER_GROUP_INTROSPECTION]; -//const BLAH: &'static [&EventIntrospection] = &INTROSPECTION_FOR_TEST_GROUP_NAME; - -const ALL_EVENTS: [&[&EventIntrospection]; 2] = [ - &INTROSPECTION_FOR_TEST_GROUP_0, - &INTROSPECTION_FOR_TEST_GROUP_NAME, -]; #[test] fn main() { - //let test = stringify!(INFO_EVENT); - //println!("{:?}", test); - //for event in EVENT_LIST { - // println!("{:?}", event); - //} - for events in ALL_EVENTS.into_iter().flatten() { - dbg!("{:?}", events); - } - //for introspection_info in INTROSPECTION_FOR_TEST_GROUP { - // dbg!("{:?}", introspection_info); - //} - //let test_struct = + + //let event_man; }