use interface::{OperatorLeftRight, UID, UniqueIdentifier};
use std::marker::PhantomData;
#[derive(UID)]
#[uid(port = 55_011)]
pub enum WfeRms<const E: i32 = 0> {}
#[derive(UID)]
#[uid(data = Vec<f64>, port = 55_001)]
pub enum MaskedWavefront {}
#[derive(UID)]
#[uid(data = Vec<f64>, port = 55_001)]
pub enum Wavefront {}
#[derive(UID)]
#[uid(port = 55_002)]
pub enum TipTilt {}
#[derive(UID)]
#[uid(port = 55_101)]
pub enum M1GlobalTipTilt {}
#[derive(UID)]
#[uid(port = 55_102)]
pub enum M2GlobalTipTilt {}
#[derive(UID)]
#[uid(port = 55_103)]
pub enum M1GlobalTxyz {}
#[derive(UID)]
#[uid(port = 55_104)]
pub enum M2GlobalTxyz {}
pub enum SegmentWfe<const E: i32 = 0> {}
impl<const E: i32> UniqueIdentifier for SegmentWfe<E> {
type DataType = Vec<(f64, f64)>;
const PORT: u16 = 55_003;
}
pub enum SegmentDWfe<const E: i32 = 0> {}
impl<const E: i32> UniqueIdentifier for SegmentDWfe<E> {
type DataType = Vec<(f64, f64)>;
const PORT: u16 = 55_003;
}
#[derive(UID, Debug)]
#[uid(port = 55_004)]
pub enum SegmentWfeRms<const E: i32 = 0> {}
#[derive(UID, Debug)]
#[uid(port = 55_005)]
pub enum SegmentPiston<const E: i32 = 0> {}
#[derive(UID)]
#[uid(port = 55_005)]
pub enum SegmentD7Piston<const E: i32 = 0> {}
#[derive(UID)]
#[uid(port = 55_021)]
pub enum SegmentD21PistonRSS<const E: i32 = 0> {}
#[derive(UID)]
#[uid(port = 55_006)]
pub enum SegmentTipTilt {}
#[derive(UID)]
#[uid(port = 55_007)]
pub enum SensorData {}
impl OperatorLeftRight for SensorData {
const LEFT: bool = true;
}
#[derive(UID)]
#[uid(data = Vec<f32>, port = 55_008)]
pub enum DetectorFrame {}
#[deprecated = "use M1Modes instead"]
pub enum M1modes {}
#[allow(deprecated)]
impl UniqueIdentifier for M1modes {
type DataType = Vec<f64>;
const PORT: u16 = 55_011;
}
#[deprecated = "use M2Modes instead"]
pub enum M2modes {}
#[allow(deprecated)]
impl UniqueIdentifier for M2modes {
type DataType = Vec<f64>;
const PORT: u16 = 55_011;
}
#[derive(UID)]
#[uid(port = 55_011)]
pub enum M1Modes {}
#[derive(UID)]
#[uid(port = 55_009)]
pub enum M2Modes {}
#[derive(UID)]
#[uid(port = 55_014)]
pub enum PSSn {}
#[derive(UID)]
#[uid(port = 55_010)]
pub enum M2rxy {}
pub trait Cuda {}
pub enum Host {}
pub enum Dev {}
impl Cuda for Host {}
impl Cuda for Dev {}
pub struct Frame<T: Cuda>(PhantomData<T>);
#[cfg(feature = "crseo")]
impl UniqueIdentifier for Frame<Dev> {
const PORT: u16 = 55_011;
type DataType = crseo::imaging::Frame;
}
impl UniqueIdentifier for Frame<Host> {
const PORT: u16 = 55_011;
type DataType = Vec<f32>;
}
pub mod dispersed_fringe_sensor {
use interface::{UID, UniqueIdentifier};
use super::{Cuda, Frame, Host};
pub struct DfsFftFrame<T: Cuda>(Frame<T>);
#[cfg(feature = "crseo")]
impl UniqueIdentifier for DfsFftFrame<super::Dev> {
const PORT: u16 = 55_021;
type DataType = crseo::imaging::Frame;
}
impl UniqueIdentifier for DfsFftFrame<Host> {
const PORT: u16 = 55_021;
type DataType = Vec<f32>;
}
#[derive(UID)]
#[uid(port = 55_022)]
pub enum Intercepts {}
}