#[cfg(feature = "bind-c")]
mod ffi;
#[derive(Clone, Copy, Debug, Default, Eq, Ord, PartialEq, PartialOrd)]
#[repr(C)]
pub struct Encoder {
pub ppr: u16,
pub count: i64
}
pub fn update(encoder: Encoder, delta: i64) -> Encoder {
Encoder {
count: encoder.count + delta,
..encoder
}
}
pub fn get_degree(encoder: Encoder) -> f64 {
encoder.count as f64 / encoder.ppr as f64 / 4f64 * 360f64
}
pub fn get_radian(encoder: Encoder) -> f64 {
encoder.count as f64 / encoder.ppr as f64 / 4f64 * 2f64 * core::f64::consts::PI
}
pub fn get_revolution(encoder: Encoder) -> i64 {
encoder.count / encoder.ppr as i64 / 4
}