ctre-sys 5.4.0

FFI bindings to CTR Electronics' Phoenix FRC libraries
Documentation
//! Enums and functions related to the Pigeon IMU.
#![allow(non_camel_case_types, non_upper_case_globals)]

use std::os::raw::{c_char, c_int, c_short};
use ErrorCode;

pub enum _Handle {}
pub type Handle = *mut _Handle;

/* automatically generated by rust-bindgen */

#[repr(i32)]
/// Enumerated type for status frame types.
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum PigeonIMU_ControlFrame {
    CondStatus_Control_1 = 272384,
}

impl PigeonIMU_StatusFrame {
    pub const BiasedStatus_4_Mag: PigeonIMU_StatusFrame = PigeonIMU_StatusFrame::RawStatus_4_Mag;
}
#[repr(i32)]
/// Enumerated type for status frame types.
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum PigeonIMU_StatusFrame {
    CondStatus_1_General = 270336,
    CondStatus_9_SixDeg_YPR = 270848,
    CondStatus_6_SensorFusion = 270656,
    CondStatus_11_GyroAccum = 270976,
    CondStatus_2_GeneralCompass = 270400,
    CondStatus_3_GeneralAccel = 270464,
    CondStatus_10_SixDeg_Quat = 270912,
    RawStatus_4_Mag = 269504,
    BiasedStatus_2_Gyro = 269376,
    BiasedStatus_6_Accel = 269632,
}

extern "C" {
    pub fn c_PigeonIMU_Create2(talonDeviceID: c_int) -> Handle;

    pub fn c_PigeonIMU_Create1(deviceNumber: c_int) -> Handle;

    pub fn c_PigeonIMU_GetDescription(
        handle: Handle,
        toFill: *mut c_char,
        toFillByteSz: c_int,
        numBytesFilled: *mut c_int,
    ) -> ErrorCode;

    pub fn c_PigeonIMU_ConfigSetParameter(
        handle: Handle,
        param: c_int,
        value: f64,
        subValue: c_int,
        ordinal: c_int,
        timeoutMs: c_int,
    ) -> ErrorCode;

    pub fn c_PigeonIMU_ConfigGetParameter(
        handle: Handle,
        param: c_int,
        value: *mut f64,
        ordinal: c_int,
        timeoutMs: c_int,
    ) -> ErrorCode;

    pub fn c_PigeonIMU_ConfigSetCustomParam(
        handle: Handle,
        newValue: c_int,
        paramIndex: c_int,
        timeoutMs: c_int,
    ) -> ErrorCode;

    pub fn c_PigeonIMU_ConfigGetCustomParam(
        handle: Handle,
        readValue: *mut c_int,
        paramIndex: c_int,
        timoutMs: c_int,
    ) -> ErrorCode;

    pub fn c_PigeonIMU_SetYaw(handle: Handle, angleDeg: f64, timeoutMs: c_int) -> ErrorCode;

    pub fn c_PigeonIMU_AddYaw(handle: Handle, angleDeg: f64, timeoutMs: c_int) -> ErrorCode;

    pub fn c_PigeonIMU_SetYawToCompass(handle: Handle, timeoutMs: c_int) -> ErrorCode;

    pub fn c_PigeonIMU_SetFusedHeading(
        handle: Handle,
        angleDeg: f64,
        timeoutMs: c_int,
    ) -> ErrorCode;

    pub fn c_PigeonIMU_AddFusedHeading(
        handle: Handle,
        angleDeg: f64,
        timeoutMs: c_int,
    ) -> ErrorCode;

    pub fn c_PigeonIMU_SetFusedHeadingToCompass(handle: Handle, timeoutMs: c_int) -> ErrorCode;

    pub fn c_PigeonIMU_SetAccumZAngle(handle: Handle, angleDeg: f64, timeoutMs: c_int)
        -> ErrorCode;

    pub fn c_PigeonIMU_ConfigTemperatureCompensationEnable(
        handle: Handle,
        bTempCompEnable: c_int,
        timeoutMs: c_int,
    ) -> ErrorCode;

    pub fn c_PigeonIMU_SetCompassDeclination(
        handle: Handle,
        angleDegOffset: f64,
        timeoutMs: c_int,
    ) -> ErrorCode;

    pub fn c_PigeonIMU_SetCompassAngle(
        handle: Handle,
        angleDeg: f64,
        timeoutMs: c_int,
    ) -> ErrorCode;

    pub fn c_PigeonIMU_EnterCalibrationMode(
        handle: Handle,
        calMode: c_int,
        timeoutMs: c_int,
    ) -> ErrorCode;

    pub fn c_PigeonIMU_GetGeneralStatus(
        handle: Handle,
        state: *mut c_int,
        currentMode: *mut c_int,
        calibrationError: *mut c_int,
        bCalIsBooting: *mut c_int,
        tempC: *mut f64,
        upTimeSec: *mut c_int,
        noMotionBiasCount: *mut c_int,
        tempCompensationCount: *mut c_int,
        lastError: *mut c_int,
    ) -> ErrorCode;

    pub fn c_PigeonIMU_GetLastError(handle: Handle) -> ErrorCode;

    /// wxyz takes an array of length 4
    pub fn c_PigeonIMU_Get6dQuaternion(handle: Handle, wxyz: *mut f64) -> ErrorCode;

    /// ypr takes an array of length 3
    pub fn c_PigeonIMU_GetYawPitchRoll(handle: Handle, ypr: *mut f64) -> ErrorCode;

    /// xyz_deg takes an array of length 3
    pub fn c_PigeonIMU_GetAccumGyro(handle: Handle, xyz_deg: *mut f64) -> ErrorCode;

    pub fn c_PigeonIMU_GetAbsoluteCompassHeading(handle: Handle, value: *mut f64) -> ErrorCode;

    pub fn c_PigeonIMU_GetCompassHeading(handle: Handle, value: *mut f64) -> ErrorCode;

    pub fn c_PigeonIMU_GetCompassFieldStrength(handle: Handle, value: *mut f64) -> ErrorCode;

    pub fn c_PigeonIMU_GetTemp(handle: Handle, value: *mut f64) -> ErrorCode;

    pub fn c_PigeonIMU_GetState(handle: Handle, state: *mut c_int) -> ErrorCode;

    pub fn c_PigeonIMU_GetUpTime(handle: Handle, value: *mut c_int) -> ErrorCode;

    /// rm_xyz takes an array of length 3
    pub fn c_PigeonIMU_GetRawMagnetometer(handle: Handle, rm_xyz: *mut c_short) -> ErrorCode;

    /// bm_xyz takes an array of length 3
    pub fn c_PigeonIMU_GetBiasedMagnetometer(handle: Handle, bm_xyz: *mut c_short) -> ErrorCode;

    /// ba_xyz takes an array of length 3
    pub fn c_PigeonIMU_GetBiasedAccelerometer(handle: Handle, ba_xyz: *mut c_short) -> ErrorCode;

    /// xyz_dps takes an array of length 3
    pub fn c_PigeonIMU_GetRawGyro(handle: Handle, xyz_dps: *mut f64) -> ErrorCode;

    /// tiltAngles takes an array of length 3
    pub fn c_PigeonIMU_GetAccelerometerAngles(handle: Handle, tiltAngles: *mut f64) -> ErrorCode;

    pub fn c_PigeonIMU_GetFusedHeading2(
        handle: Handle,
        bIsFusing: *mut c_int,
        bIsValid: *mut c_int,
        value: *mut f64,
        lastError: *mut c_int,
    ) -> ErrorCode;

    pub fn c_PigeonIMU_GetFusedHeading1(handle: Handle, value: *mut f64) -> ErrorCode;

    pub fn c_PigeonIMU_GetResetCount(handle: Handle, value: *mut c_int) -> ErrorCode;

    pub fn c_PigeonIMU_GetResetFlags(handle: Handle, value: *mut c_int) -> ErrorCode;

    pub fn c_PigeonIMU_GetFirmwareVersion(handle: Handle, firmwareVers: *mut c_int) -> ErrorCode;

    pub fn c_PigeonIMU_HasResetOccurred(handle: Handle, hasReset: *mut bool) -> ErrorCode;

    pub fn c_PigeonIMU_SetLastError(handle: Handle, value: c_int) -> ErrorCode;

    pub fn c_PigeonIMU_GetFaults(handle: Handle, param: *mut c_int) -> ErrorCode;

    pub fn c_PigeonIMU_GetStickyFaults(handle: Handle, param: *mut c_int) -> ErrorCode;

    pub fn c_PigeonIMU_ClearStickyFaults(handle: Handle, timeoutMs: c_int) -> ErrorCode;

    pub fn c_PigeonIMU_SetStatusFramePeriod(
        handle: Handle,
        frame: c_int,
        periodMs: c_int,
        timeoutMs: c_int,
    ) -> ErrorCode;

    pub fn c_PigeonIMU_GetStatusFramePeriod(
        handle: Handle,
        frame: c_int,
        periodMs: *mut c_int,
        timeoutMs: c_int,
    ) -> ErrorCode;

    pub fn c_PigeonIMU_SetControlFramePeriod(
        handle: Handle,
        frame: c_int,
        periodMs: c_int,
    ) -> ErrorCode;
}