Compare commits
16 Commits
satrs-mib-
...
satrs-exam
Author | SHA1 | Date | |
---|---|---|---|
813e221030 | |||
18cec8bcf0 | |||
d4a122e462 | |||
7af327d077 | |||
3a6cd6712d | |||
c4eba03043 | |||
e9e5c999ec | |||
f14a85cb84 | |||
c3902c2c06 | |||
24f82d4c5e | |||
44ff62e947 | |||
9cf80b44ea | |||
f4bc33aefa | |||
445fdfe066 | |||
7c3879fbce | |||
c3e9d4441f |
@ -7,7 +7,7 @@ This is the repository of the sat-rs framework. Its primary goal is to provide r
|
|||||||
to write on-board software for remote systems like rovers or satellites. It is specifically written
|
to write on-board software for remote systems like rovers or satellites. It is specifically written
|
||||||
for the special requirements for these systems. You can find an overview of the project and the
|
for the special requirements for these systems. You can find an overview of the project and the
|
||||||
link to the [more high-level sat-rs book](https://absatsw.irs.uni-stuttgart.de/projects/sat-rs/)
|
link to the [more high-level sat-rs book](https://absatsw.irs.uni-stuttgart.de/projects/sat-rs/)
|
||||||
at the [IRS documentation website](https://absatsw.irs.uni-stuttgart.de/sat-rs.html).
|
at the [IRS software projects website](https://absatsw.irs.uni-stuttgart.de/projects/sat-rs/).
|
||||||
|
|
||||||
A lot of the architecture and general design considerations are based on the
|
A lot of the architecture and general design considerations are based on the
|
||||||
[FSFW](https://egit.irs.uni-stuttgart.de/fsfw/fsfw) C++ framework which has flight heritage
|
[FSFW](https://egit.irs.uni-stuttgart.de/fsfw/fsfw) C++ framework which has flight heritage
|
||||||
@ -41,7 +41,7 @@ Each project has its own `CHANGELOG.md`.
|
|||||||
|
|
||||||
* [`spacepackets`](https://egit.irs.uni-stuttgart.de/rust/spacepackets): Basic ECSS and CCSDS
|
* [`spacepackets`](https://egit.irs.uni-stuttgart.de/rust/spacepackets): Basic ECSS and CCSDS
|
||||||
packet protocol implementations. This repository is re-exported in the
|
packet protocol implementations. This repository is re-exported in the
|
||||||
[`satrs-core`](https://egit.irs.uni-stuttgart.de/rust/satrs-launchpad/src/branch/main/satrs-core)
|
[`satrs`](https://egit.irs.uni-stuttgart.de/rust/satrs/src/branch/main/satrs)
|
||||||
crate.
|
crate.
|
||||||
|
|
||||||
# Coverage
|
# Coverage
|
||||||
|
@ -15,7 +15,9 @@ RUN rustup install nightly && \
|
|||||||
rustup component add rustfmt clippy
|
rustup component add rustfmt clippy
|
||||||
|
|
||||||
WORKDIR "/tmp"
|
WORKDIR "/tmp"
|
||||||
# RUN cargo install mdbook --no-default-features --features search --vers "^0.4" --locked
|
# Install cargo-nextest
|
||||||
|
RUN curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C ${CARGO_HOME:-~/.cargo}/bin
|
||||||
|
# Install mdbook and mdbook-linkcheck
|
||||||
RUN curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.37/mdbook-v0.4.37-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory /usr/local/bin
|
RUN curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.37/mdbook-v0.4.37-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory /usr/local/bin
|
||||||
RUN curl -sSL https://github.com/Michael-F-Bryan/mdbook-linkcheck/releases/latest/download/mdbook-linkcheck.x86_64-unknown-linux-gnu.zip -o mdbook-linkcheck.zip && \
|
RUN curl -sSL https://github.com/Michael-F-Bryan/mdbook-linkcheck/releases/latest/download/mdbook-linkcheck.x86_64-unknown-linux-gnu.zip -o mdbook-linkcheck.zip && \
|
||||||
unzip mdbook-linkcheck.zip && \
|
unzip mdbook-linkcheck.zip && \
|
||||||
|
2
automation/Jenkinsfile
vendored
2
automation/Jenkinsfile
vendored
@ -32,7 +32,7 @@ pipeline {
|
|||||||
}
|
}
|
||||||
stage('Test') {
|
stage('Test') {
|
||||||
steps {
|
steps {
|
||||||
sh 'cargo test --all-features'
|
sh 'cargo nextest r --all-features'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stage('Check with all features') {
|
stage('Check with all features') {
|
||||||
|
@ -17,14 +17,14 @@ it is still centered around small packets. `sat-rs` provides support for these E
|
|||||||
standards and also attempts to fill the gap to the internet protocol by providing the following
|
standards and also attempts to fill the gap to the internet protocol by providing the following
|
||||||
components.
|
components.
|
||||||
|
|
||||||
1. [UDP TMTC Server](https://docs.rs/satrs-core/0.1.0-alpha.0/satrs_core/hal/host/udp_server/index.html).
|
1. [UDP TMTC Server](https://docs.rs/satrs/latest/satrs/hal/host/udp_server/index.html).
|
||||||
UDP is already packet based which makes it an excellent fit for exchanging space packets.
|
UDP is already packet based which makes it an excellent fit for exchanging space packets.
|
||||||
2. [TCP TMTC Server Components](https://docs.rs/satrs-core/0.1.0-alpha.1/satrs_core/hal/std/tcp_server/index.html).
|
2. [TCP TMTC Server Components](https://docs.rs/satrs/latest/satrs/hal/std/tcp_server/index.html).
|
||||||
TCP is a stream based protocol, so the framework provides building blocks to parse telemetry
|
TCP is a stream based protocol, so the framework provides building blocks to parse telemetry
|
||||||
from an arbitrary bytestream. Two concrete implementations are provided:
|
from an arbitrary bytestream. Two concrete implementations are provided:
|
||||||
- [TCP spacepackets server](https://docs.rs/satrs-core/0.1.0-alpha.1/satrs_core/hal/std/tcp_server/struct.TcpSpacepacketsServer.html)
|
- [TCP spacepackets server](https://docs.rs/satrs/latest/satrs/hal/std/tcp_server/struct.TcpSpacepacketsServer.html)
|
||||||
to parse tightly packed CCSDS Spacepackets.
|
to parse tightly packed CCSDS Spacepackets.
|
||||||
- [TCP COBS server](https://docs.rs/satrs-core/0.1.0-alpha.1/satrs_core/hal/std/tcp_server/struct.TcpTmtcInCobsServer.html)
|
- [TCP COBS server](https://docs.rs/satrs/latest/satrs/hal/std/tcp_server/struct.TcpTmtcInCobsServer.html)
|
||||||
to parse generic frames wrapped with the
|
to parse generic frames wrapped with the
|
||||||
[COBS protocol](https://en.wikipedia.org/wiki/Consistent_Overhead_Byte_Stuffing).
|
[COBS protocol](https://en.wikipedia.org/wiki/Consistent_Overhead_Byte_Stuffing).
|
||||||
|
|
||||||
|
@ -26,15 +26,17 @@ For example, a very small telecommand (TC) pool might look like this:
|
|||||||

|

|
||||||
|
|
||||||
The core of the pool abstractions is the
|
The core of the pool abstractions is the
|
||||||
[PoolProvider trait](https://docs.rs/satrs-core/0.1.0-alpha.3/satrs_core/pool/trait.PoolProvider.html).
|
[PoolProvider trait](https://docs.rs/satrs/latest/satrs/pool/trait.PoolProvider.html).
|
||||||
This trait specifies the general API a pool structure should have without making assumption
|
This trait specifies the general API a pool structure should have without making assumption
|
||||||
of how the data is stored.
|
of how the data is stored.
|
||||||
|
|
||||||
This trait is implemented by a static memory pool implementation.
|
This trait is implemented by a static memory pool implementation.
|
||||||
The code to generate this static pool would look like this:
|
The code to generate this static pool would look like this:
|
||||||
|
|
||||||
```rust
|
<!-- Would be nice to test this code sample, but need to wait
|
||||||
use satrs_core::pool::{StaticMemoryPool, StaticPoolConfig};
|
for https://github.com/rust-lang/mdBook/issues/706 to be merged.. -->
|
||||||
|
```rust, ignore
|
||||||
|
use satrs::pool::{StaticMemoryPool, StaticPoolConfig};
|
||||||
|
|
||||||
let tc_pool = StaticMemoryPool::new(StaticPoolConfig::new(vec
|
- [`StaticPoolConfig` API](https://docs.rs/satrs/latest/satrs/pool/struct.StaticPoolConfig.html)
|
||||||
- [`StaticMemoryPool` API](https://docs.rs/satrs-core/0.1.0-alpha.3/satrs_core/pool/struct.StaticMemoryPool.html)
|
- [`StaticMemoryPool` API](https://docs.rs/satrs/latest/satrs/pool/struct.StaticMemoryPool.html)
|
||||||
|
|
||||||
for more details.
|
for more details.
|
||||||
|
|
||||||
|
@ -23,11 +23,11 @@ Some additional explanation is provided for the various components.
|
|||||||
The example includes a UDP and TCP server to receive telecommands and poll telemetry from. This
|
The example includes a UDP and TCP server to receive telecommands and poll telemetry from. This
|
||||||
might be an optional component for an OBSW which is only used during the development phase on
|
might be an optional component for an OBSW which is only used during the development phase on
|
||||||
ground. The UDP server is strongly based on the
|
ground. The UDP server is strongly based on the
|
||||||
[UDP TC server](https://docs.rs/satrs-core/0.1.0-alpha.1/satrs_core/hal/std/udp_server/struct.UdpTcServer.html).
|
[UDP TC server](https://docs.rs/satrs/latest/satrs/hal/std/udp_server/struct.UdpTcServer.html).
|
||||||
This server component is wrapped by a TMTC server which handles all telemetry to the last connected
|
This server component is wrapped by a TMTC server which handles all telemetry to the last connected
|
||||||
client.
|
client.
|
||||||
|
|
||||||
The TCP server is based on the [TCP Spacepacket Server](https://docs.rs/satrs-core/0.1.0-alpha.1/satrs_core/hal/std/tcp_server/struct.TcpSpacepacketsServer.html)
|
The TCP server is based on the [TCP Spacepacket Server](https://docs.rs/satrs/latest/satrs/hal/std/tcp_server/struct.TcpSpacepacketsServer.html)
|
||||||
class. It parses space packets by using the CCSDS space packet ID as the packet
|
class. It parses space packets by using the CCSDS space packet ID as the packet
|
||||||
start delimiter. All available telemetry will be sent back to a client after having read all
|
start delimiter. All available telemetry will be sent back to a client after having read all
|
||||||
telecommands from the client.
|
telecommands from the client.
|
||||||
@ -51,13 +51,13 @@ services. This currently includes the following services:
|
|||||||
|
|
||||||
- Service 1 for telecommand verification. The verification handling is handled locally: Each
|
- Service 1 for telecommand verification. The verification handling is handled locally: Each
|
||||||
component which generates verification telemetry in some shape or form receives a
|
component which generates verification telemetry in some shape or form receives a
|
||||||
[reporter](https://docs.rs/satrs-core/0.1.0-alpha.1/satrs_core/pus/verification/struct.VerificationReporterWithSender.html)
|
[reporter](https://docs.rs/satrs/latest/satrs/pus/verification/struct.VerificationReporterWithSender.html)
|
||||||
object which can be used to send PUS 1 verification telemetry to the TM funnel.
|
object which can be used to send PUS 1 verification telemetry to the TM funnel.
|
||||||
- Service 3 for housekeeping telemetry handling.
|
- Service 3 for housekeeping telemetry handling.
|
||||||
- Service 5 for management and downlink of on-board events.
|
- Service 5 for management and downlink of on-board events.
|
||||||
- Service 8 for handling on-board actions.
|
- Service 8 for handling on-board actions.
|
||||||
- Service 11 for scheduling telecommands to be released at a specific time. This component
|
- Service 11 for scheduling telecommands to be released at a specific time. This component
|
||||||
uses the [PUS scheduler class](https://docs.rs/satrs-core/0.1.0-alpha.1/satrs_core/pus/scheduler/alloc_mod/struct.PusScheduler.html)
|
uses the [PUS scheduler class](https://docs.rs/satrs/latest/satrs/pus/scheduler/alloc_mod/struct.PusScheduler.html)
|
||||||
which performs the core logic of scheduling telecommands. All telecommands released by the
|
which performs the core logic of scheduling telecommands. All telecommands released by the
|
||||||
scheduler are sent to the central TC source using a message.
|
scheduler are sent to the central TC source using a message.
|
||||||
- Service 17 for test purposes like pings.
|
- Service 17 for test purposes like pings.
|
||||||
@ -65,10 +65,10 @@ services. This currently includes the following services:
|
|||||||
### Event Management Component
|
### Event Management Component
|
||||||
|
|
||||||
An event manager based on the sat-rs
|
An event manager based on the sat-rs
|
||||||
[event manager component](https://docs.rs/satrs-core/0.1.0-alpha.1/satrs_core/event_man/index.html)
|
[event manager component](https://docs.rs/satrs/latest/satrs/event_man/index.html)
|
||||||
is provided to handle the event IPC and FDIR mechanism. The event message are converted to PUS 5
|
is provided to handle the event IPC and FDIR mechanism. The event message are converted to PUS 5
|
||||||
telemetry by the
|
telemetry by the
|
||||||
[PUS event dispatcher](https://docs.rs/satrs-core/0.1.0-alpha.1/satrs_core/pus/event_man/alloc_mod/struct.PusEventDispatcher.html).
|
[PUS event dispatcher](https://docs.rs/satrs/latest/satrs/pus/event_man/alloc_mod/struct.PusEventDispatcher.html).
|
||||||
|
|
||||||
You can read the [events](./events.md) chapter for more in-depth information about event management.
|
You can read the [events](./events.md) chapter for more in-depth information about event management.
|
||||||
|
|
||||||
|
@ -20,12 +20,12 @@ thiserror = "1"
|
|||||||
derive-new = "0.5"
|
derive-new = "0.5"
|
||||||
|
|
||||||
[dependencies.satrs]
|
[dependencies.satrs]
|
||||||
# version = "0.1.0-alpha.3"
|
version = "0.1.1"
|
||||||
path = "../satrs"
|
# path = "../satrs"
|
||||||
|
|
||||||
[dependencies.satrs-mib]
|
[dependencies.satrs-mib]
|
||||||
# version = "0.1.0-alpha.2"
|
version = "0.1.0"
|
||||||
path = "../satrs-mib"
|
# path = "../satrs-mib"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
dyn_tmtc = []
|
dyn_tmtc = []
|
||||||
|
@ -7,7 +7,7 @@ authors = ["Robin Mueller <muellerr@irs.uni-stuttgart.de>"]
|
|||||||
description = """
|
description = """
|
||||||
Helper crate of the sat-rs framework to build a mission information base (MIB) from the
|
Helper crate of the sat-rs framework to build a mission information base (MIB) from the
|
||||||
On-Board Software (OBSW) code directly."""
|
On-Board Software (OBSW) code directly."""
|
||||||
homepage = "https://absatsw.uni-stuttgart.de/projects/sat-rs"
|
homepage = "https://absatsw.irs.uni-stuttgart.de/projects/sat-rs/"
|
||||||
repository = "https://egit.irs.uni-stuttgart.de/rust/sat-rs"
|
repository = "https://egit.irs.uni-stuttgart.de/rust/sat-rs"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
keywords = ["no-std", "space", "aerospace"]
|
keywords = ["no-std", "space", "aerospace"]
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
[](https://crates.io/crates/satrs-mib)
|
||||||
|
[](https://docs.rs/satrs-mib)
|
||||||
|
|
||||||
satrs-mib
|
satrs-mib
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
use quote::{format_ident, quote, ToTokens};
|
use quote::{format_ident, quote, ToTokens};
|
||||||
use syn::{parse_macro_input, ItemConst, LitStr};
|
use syn::{parse_macro_input, ItemConst, LitStr};
|
||||||
|
|
||||||
|
/// This macro can be used to automatically generate introspection information for return codes.
|
||||||
|
///
|
||||||
|
/// For example, it can be applied to types like the [satrs_shared::res_code::ResultU16] type
|
||||||
|
/// to automatically generate [satrs_mib::res_code::ResultU16Info] instances. These instances
|
||||||
|
/// can then be used for tasks like generating CSVs or YAML files with the list of all result
|
||||||
|
/// codes. This information is valuable for both operators and developers.
|
||||||
#[proc_macro_attribute]
|
#[proc_macro_attribute]
|
||||||
pub fn resultcode(
|
pub fn resultcode(
|
||||||
args: proc_macro::TokenStream,
|
args: proc_macro::TokenStream,
|
||||||
|
@ -19,7 +19,4 @@ Checklist for new releases
|
|||||||
|
|
||||||
# Post-Release
|
# Post-Release
|
||||||
|
|
||||||
1. Create a new annotaged tag and push it with `git tag -a satrs-mib-<version>` and
|
1. Create a new release on `EGit` with the name `satrs-mib-<version>`.
|
||||||
`git push -u origin satrs-mib-<version>`
|
|
||||||
2. Create a new release on `EGit` based on the tag.
|
|
||||||
|
|
||||||
|
@ -73,6 +73,7 @@ pub mod stdmod {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// This function exports a slice of result code information objects to a CSV file.
|
||||||
pub fn write_resultcodes_to_csv(
|
pub fn write_resultcodes_to_csv(
|
||||||
writer_builder: csv::WriterBuilder,
|
writer_builder: csv::WriterBuilder,
|
||||||
results: &[ResultU16Info],
|
results: &[ResultU16Info],
|
||||||
|
@ -4,7 +4,7 @@ description = "Components shared by multiple sat-rs crates"
|
|||||||
version = "0.1.1"
|
version = "0.1.1"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
authors = ["Robin Mueller <muellerr@irs.uni-stuttgart.de>"]
|
authors = ["Robin Mueller <muellerr@irs.uni-stuttgart.de>"]
|
||||||
homepage = "https://absatsw.uni-stuttgart.de/projects/sat-rs"
|
homepage = "https://absatsw.irs.uni-stuttgart.de/projects/sat-rs/"
|
||||||
repository = "https://egit.irs.uni-stuttgart.de/rust/sat-rs"
|
repository = "https://egit.irs.uni-stuttgart.de/rust/sat-rs"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
|
|
||||||
|
@ -7,3 +7,11 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
|||||||
and this project adheres to [Semantic Versioning](http://semver.org/).
|
and this project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
|
|
||||||
# [unreleased]
|
# [unreleased]
|
||||||
|
|
||||||
|
# [v0.1.1] 2024-02-12
|
||||||
|
|
||||||
|
- Minor fixes for crate config `homepage` entries and links in documentation.
|
||||||
|
|
||||||
|
# [v0.1.0] 2024-02-12
|
||||||
|
|
||||||
|
Initial release.
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "satrs"
|
name = "satrs"
|
||||||
version = "0.1.0"
|
version = "0.1.1"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = "1.61"
|
rust-version = "1.61"
|
||||||
authors = ["Robin Mueller <muellerr@irs.uni-stuttgart.de>"]
|
authors = ["Robin Mueller <muellerr@irs.uni-stuttgart.de>"]
|
||||||
description = "A framework to build software for remote systems"
|
description = "A framework to build software for remote systems"
|
||||||
homepage = "https://absatsw.uni-stuttgart.de/projects/sat-rs"
|
homepage = "https://absatsw.irs.uni-stuttgart.de/projects/sat-rs/"
|
||||||
repository = "https://egit.irs.uni-stuttgart.de/rust/sat-rs"
|
repository = "https://egit.irs.uni-stuttgart.de/rust/sat-rs"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
keywords = ["no-std", "space", "aerospace"]
|
keywords = ["no-std", "space", "aerospace"]
|
||||||
@ -15,17 +15,14 @@ categories = ["aerospace", "aerospace::space-protocols", "no-std", "hardware-sup
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
delegate = ">0.7, <=0.10"
|
delegate = ">0.7, <=0.10"
|
||||||
paste = "1"
|
paste = "1"
|
||||||
|
smallvec = "1"
|
||||||
[dependencies.smallvec]
|
crc = "3"
|
||||||
version = "1"
|
satrs-shared = "0.1.1"
|
||||||
|
|
||||||
[dependencies.num_enum]
|
[dependencies.num_enum]
|
||||||
version = ">0.5, <=0.7"
|
version = ">0.5, <=0.7"
|
||||||
default-features = false
|
default-features = false
|
||||||
|
|
||||||
[dependencies.crc]
|
|
||||||
version = "3"
|
|
||||||
|
|
||||||
[dependencies.dyn-clone]
|
[dependencies.dyn-clone]
|
||||||
version = "1"
|
version = "1"
|
||||||
optional = true
|
optional = true
|
||||||
@ -70,9 +67,6 @@ version = "0.5.4"
|
|||||||
features = ["all"]
|
features = ["all"]
|
||||||
optional = true
|
optional = true
|
||||||
|
|
||||||
[dependencies.satrs-shared]
|
|
||||||
version = "0.1.1"
|
|
||||||
|
|
||||||
[dependencies.spacepackets]
|
[dependencies.spacepackets]
|
||||||
version = "0.9"
|
version = "0.9"
|
||||||
default-features = false
|
default-features = false
|
||||||
@ -115,7 +109,7 @@ alloc = [
|
|||||||
"dyn-clone",
|
"dyn-clone",
|
||||||
"downcast-rs"
|
"downcast-rs"
|
||||||
]
|
]
|
||||||
serde = ["dep:serde", "spacepackets/serde"]
|
serde = ["dep:serde", "spacepackets/serde", "satrs-shared/serde"]
|
||||||
crossbeam = ["crossbeam-channel"]
|
crossbeam = ["crossbeam-channel"]
|
||||||
heapless = ["dep:heapless"]
|
heapless = ["dep:heapless"]
|
||||||
doc-images = []
|
doc-images = []
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
[](https://crates.io/crates/satrs-core)
|
[](https://crates.io/crates/satrs)
|
||||||
[](https://docs.rs/satrs-core)
|
[](https://docs.rs/satrs)
|
||||||
|
|
||||||
satrs-core
|
sat-rs
|
||||||
======
|
======
|
||||||
|
|
||||||
This crate contains the core components of the sat-rs framework.
|
This crate contains the primary components of the sat-rs framework.
|
||||||
You can find more information on the [homepage](https://egit.irs.uni-stuttgart.de/rust/sat-rs).
|
You can find more information on the [homepage](https://egit.irs.uni-stuttgart.de/rust/sat-rs).
|
||||||
|
@ -19,7 +19,5 @@ Checklist for new releases
|
|||||||
|
|
||||||
# Post-Release
|
# Post-Release
|
||||||
|
|
||||||
1. Create a new annotaged tag and push it with `git tag -a satrs-core-<version>` and
|
1. Create a new release on `EGit` with the name `satrs-<version>`.
|
||||||
`git push -u origin satrs-core-<version>`
|
|
||||||
2. Create a new release on `EGit` based on the tag.
|
|
||||||
|
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
//! # sat-rs: A framework to build on-board software for remote systems
|
//! # sat-rs: A framework to build on-board software for remote systems
|
||||||
//!
|
//!
|
||||||
//! You can find more information about the sat-rs framework on the
|
//! You can find more information about the sat-rs framework on the
|
||||||
//! [homepage](https://egit.irs.uni-stuttgart.de/rust/sat-rs).
|
//! [homepage](https://absatsw.irs.uni-stuttgart.de/projects/sat-rs/).
|
||||||
|
//! The [satrs-book](https://absatsw.irs.uni-stuttgart.de/projects/sat-rs/book/) contains
|
||||||
|
//! high-level information about this framework.
|
||||||
//!
|
//!
|
||||||
//! ## Overview
|
//! ## Overview
|
||||||
//!
|
//!
|
||||||
|
Reference in New Issue
Block a user