crseo 2.5.3

Cuda Engined Optics Rust Interface
Documentation
mod builder;
use crate::builders::SourceBuilder;
pub use builder::PhaseSensorBuilder;
mod phase_sensor;
pub use phase_sensor::PhaseSensor;

pub use super::data_processing;
use crate::{
    wavefrontsensor::{GeomShack, PistonSensor},
    SegmentWiseSensorBuilder, WavefrontSensor, WavefrontSensorBuilder,
};

impl WavefrontSensorBuilder for PhaseSensorBuilder {
    fn guide_stars(&self, gs: Option<SourceBuilder>) -> SourceBuilder {
        gs.unwrap_or_default()
            .pupil_sampling(self.geom_shack_builder.pupil_sampling())
    }
}

impl WavefrontSensor for PhaseSensor {
    fn calibrate(&mut self, _src: &mut crate::Source, _threshold: f64) {
        todo!()
    }

    fn reset(&mut self) {
        self.piston_sensor.reset();
        self.geom_shack.reset();
    }

    fn process(&mut self) {
        todo!()
    }

    fn readout(&mut self) {
        todo!()
    }

    fn data(&mut self) -> Vec<f64> {
        PistonSensor::data(&self.piston_sensor)
            .into_iter()
            .chain(GeomShack::data(&self.geom_shack).into_iter())
            .map(|x| x as f64)
            .collect()
    }

    fn frame(&self) -> Option<Vec<f32>> {
        todo!()
    }

    fn n_frame(&self) -> usize {
        todo!()
    }

    fn valid_lenslet_from(&mut self, _wfs: &mut dyn WavefrontSensor) {
        todo!()
    }

    fn valid_lenslet(&mut self) -> &mut ffi::mask {
        todo!()
    }

    fn n_valid_lenslet(&mut self) -> Vec<usize> {
        todo!()
    }

    fn left_multiply(&self, calibration: &super::Calibration) -> Option<Vec<f32>> {
        calibration * self
    }
}