pub struct InOrbitMode {
base: BaseMode,
}Expand description
InOrbitMode is an implementation of GlobalMode and OrbitalMode that governs normal
in-orbit operations such as transitioning between flight states, listening for event-driven
interrupts (e.g., Safe Mode, ZO, BO), and executing scheduled task queues specific to the InOrbitMode.
This mode represents the satellite operating in a stable orbital state, performing mapping or communication tasks.
The mode is interruptible and reactive to new objectives, flight events, or beacon detections.
Fields§
§base: BaseModeThe base operational context (e.g. Mapping or Beacon Objective Scanning).
Implementations§
Source§impl InOrbitMode
impl InOrbitMode
Sourceconst MODE_NAME: &'static str = "InOrbitMode"
const MODE_NAME: &'static str = "InOrbitMode"
The internal name of the mode used for logging and identification.
Sourcepub fn new(base: BaseMode) -> Self
pub fn new(base: BaseMode) -> Self
Constructs a new InOrbitMode instance using the given BaseMode.
§Arguments
base– The high-level operational context (e.g.,MappingMode).
§Returns
InOrbitMode– The initialized mode.
Trait Implementations§
Source§impl Clone for InOrbitMode
impl Clone for InOrbitMode
Source§fn clone(&self) -> InOrbitMode
fn clone(&self) -> InOrbitMode
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl GlobalMode for InOrbitMode
impl GlobalMode for InOrbitMode
Source§fn init_mode<'life0, 'async_trait>(
&'life0 self,
context: Arc<ModeContext>,
) -> Pin<Box<dyn Future<Output = OpExitSignal> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn init_mode<'life0, 'async_trait>(
&'life0 self,
context: Arc<ModeContext>,
) -> Pin<Box<dyn Future<Output = OpExitSignal> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Initializes the mode by running scheduling logic and listening for early exit signals.
Reacts to Safe Mode signals and reinitializes if needed. Otherwise, continues with task list execution.
§Arguments
context– The shared execution context for the mode.
§Returns
OpExitSignal– Signal indicating if the mode should continue or reinitialize.
Source§fn exec_task_wait<'life0, 'async_trait>(
&'life0 self,
c: Arc<ModeContext>,
due: DateTime<Utc>,
) -> Pin<Box<dyn Future<Output = WaitExitSignal> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn exec_task_wait<'life0, 'async_trait>(
&'life0 self,
c: Arc<ModeContext>,
due: DateTime<Utc>,
) -> Pin<Box<dyn Future<Output = WaitExitSignal> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn exec_task<'life0, 'async_trait>(
&'life0 self,
context: Arc<ModeContext>,
task: Task,
) -> Pin<Box<dyn Future<Output = ExecExitSignal> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn exec_task<'life0, 'async_trait>(
&'life0 self,
context: Arc<ModeContext>,
task: Task,
) -> Pin<Box<dyn Future<Output = ExecExitSignal> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn safe_handler<'life0, 'async_trait>(
&'life0 self,
context: Arc<ModeContext>,
) -> Pin<Box<dyn Future<Output = OpExitSignal> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn safe_handler<'life0, 'async_trait>(
&'life0 self,
context: Arc<ModeContext>,
) -> Pin<Box<dyn Future<Output = OpExitSignal> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn zo_handler<'life0, 'life1, 'async_trait>(
&'life0 self,
c: &'life1 Arc<ModeContext>,
obj: KnownImgObjective,
) -> Pin<Box<dyn Future<Output = Option<OpExitSignal>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn zo_handler<'life0, 'life1, 'async_trait>(
&'life0 self,
c: &'life1 Arc<ModeContext>,
obj: KnownImgObjective,
) -> Pin<Box<dyn Future<Output = Option<OpExitSignal>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Handles the detection of a new Zoned Objective.
Attempts to switch to a ZOPrepMode. If the objective is unreachable, logs a warning and continues.
§Arguments
c– Shared context.obj– The newly received zoned objective.
§Returns
Some(OpExitSignal::ReInit)– If transition toZOPrepModeis feasible.None– If the objective is not reachable (e.g., burn not possible).
Source§fn bo_event_handler<'life0, 'life1, 'async_trait>(
&'life0 self,
context: &'life1 Arc<ModeContext>,
) -> Pin<Box<dyn Future<Output = Option<OpExitSignal>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn bo_event_handler<'life0, 'life1, 'async_trait>(
&'life0 self,
context: &'life1 Arc<ModeContext>,
) -> Pin<Box<dyn Future<Output = Option<OpExitSignal>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn exit_mode<'life0, 'async_trait>(
&'life0 self,
context: Arc<ModeContext>,
) -> Pin<Box<dyn Future<Output = Box<dyn GlobalMode>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn exit_mode<'life0, 'async_trait>(
&'life0 self,
context: Arc<ModeContext>,
) -> Pin<Box<dyn Future<Output = Box<dyn GlobalMode>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn safe_mode_rationale(&self) -> &'static str
fn safe_mode_rationale(&self) -> &'static str
Source§fn new_zo_rationale(&self) -> &'static str
fn new_zo_rationale(&self) -> &'static str
Source§fn new_bo_rationale(&self) -> &'static str
fn new_bo_rationale(&self) -> &'static str
Source§fn tasks_done_rationale(&self) -> &'static str
fn tasks_done_rationale(&self) -> &'static str
Source§fn tasks_done_exit_rationale(&self) -> &'static str
fn tasks_done_exit_rationale(&self) -> &'static str
Source§fn out_of_orbit_rationale(&self) -> &'static str
fn out_of_orbit_rationale(&self) -> &'static str
Source§fn bo_done_rationale(&self) -> &'static str
fn bo_done_rationale(&self) -> &'static str
Source§fn exec_task_queue<'life0, 'async_trait>(
&'life0 self,
context: Arc<ModeContext>,
) -> Pin<Box<dyn Future<Output = OpExitSignal> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn exec_task_queue<'life0, 'async_trait>(
&'life0 self,
context: Arc<ModeContext>,
) -> Pin<Box<dyn Future<Output = OpExitSignal> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§impl OrbitalMode for InOrbitMode
impl OrbitalMode for InOrbitMode
Source§fn get_max_dt() -> TimeDelta
fn get_max_dt() -> TimeDelta
Source§async fn exec_task_wait(
&self,
context: Arc<ModeContext>,
due: DateTime<Utc>,
) -> WaitExitSignal
async fn exec_task_wait( &self, context: Arc<ModeContext>, due: DateTime<Utc>, ) -> WaitExitSignal
Source§async fn monitor_bo_mon_change(
sig: BeaconControllerState,
bo_mon: &RwLock<Receiver<BeaconControllerState>>,
)
async fn monitor_bo_mon_change( sig: BeaconControllerState, bo_mon: &RwLock<Receiver<BeaconControllerState>>, )
BeaconControllerState until it changes to the expected value. Read moreSource§async fn log_bo_event(&self, context: &Arc<ModeContext>, base: BaseMode)
async fn log_bo_event(&self, context: &Arc<ModeContext>, base: BaseMode)
Auto Trait Implementations§
impl Freeze for InOrbitMode
impl RefUnwindSafe for InOrbitMode
impl Send for InOrbitMode
impl Sync for InOrbitMode
impl Unpin for InOrbitMode
impl UnwindSafe for InOrbitMode
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
Source§fn lossless_try_into(self) -> Option<Dst>
fn lossless_try_into(self) -> Option<Dst>
Source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
Source§fn lossy_into(self) -> Dst
fn lossy_into(self) -> Dst
Source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
Source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
Source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
Source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
Source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
Source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
Source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.