ctre_sys/
pigeon.rs

1//! Enums and functions related to the Pigeon IMU.
2#![allow(non_camel_case_types, non_upper_case_globals)]
3
4use std::os::raw::{c_char, c_int, c_short};
5use ErrorCode;
6
7pub enum _Handle {}
8pub type Handle = *mut _Handle;
9
10/* automatically generated by rust-bindgen */
11
12#[repr(i32)]
13/// Enumerated type for status frame types.
14#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
15pub enum PigeonIMU_ControlFrame {
16    CondStatus_Control_1 = 272384,
17}
18
19impl PigeonIMU_StatusFrame {
20    pub const BiasedStatus_4_Mag: PigeonIMU_StatusFrame = PigeonIMU_StatusFrame::RawStatus_4_Mag;
21}
22#[repr(i32)]
23/// Enumerated type for status frame types.
24#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
25pub enum PigeonIMU_StatusFrame {
26    CondStatus_1_General = 270336,
27    CondStatus_9_SixDeg_YPR = 270848,
28    CondStatus_6_SensorFusion = 270656,
29    CondStatus_11_GyroAccum = 270976,
30    CondStatus_2_GeneralCompass = 270400,
31    CondStatus_3_GeneralAccel = 270464,
32    CondStatus_10_SixDeg_Quat = 270912,
33    RawStatus_4_Mag = 269504,
34    BiasedStatus_2_Gyro = 269376,
35    BiasedStatus_6_Accel = 269632,
36}
37
38extern "C" {
39    pub fn c_PigeonIMU_Create2(talonDeviceID: c_int) -> Handle;
40
41    pub fn c_PigeonIMU_Create1(deviceNumber: c_int) -> Handle;
42
43    pub fn c_PigeonIMU_GetDescription(
44        handle: Handle,
45        toFill: *mut c_char,
46        toFillByteSz: c_int,
47        numBytesFilled: *mut c_int,
48    ) -> ErrorCode;
49
50    pub fn c_PigeonIMU_ConfigSetParameter(
51        handle: Handle,
52        param: c_int,
53        value: f64,
54        subValue: c_int,
55        ordinal: c_int,
56        timeoutMs: c_int,
57    ) -> ErrorCode;
58
59    pub fn c_PigeonIMU_ConfigGetParameter(
60        handle: Handle,
61        param: c_int,
62        value: *mut f64,
63        ordinal: c_int,
64        timeoutMs: c_int,
65    ) -> ErrorCode;
66
67    pub fn c_PigeonIMU_ConfigSetCustomParam(
68        handle: Handle,
69        newValue: c_int,
70        paramIndex: c_int,
71        timeoutMs: c_int,
72    ) -> ErrorCode;
73
74    pub fn c_PigeonIMU_ConfigGetCustomParam(
75        handle: Handle,
76        readValue: *mut c_int,
77        paramIndex: c_int,
78        timoutMs: c_int,
79    ) -> ErrorCode;
80
81    pub fn c_PigeonIMU_SetYaw(handle: Handle, angleDeg: f64, timeoutMs: c_int) -> ErrorCode;
82
83    pub fn c_PigeonIMU_AddYaw(handle: Handle, angleDeg: f64, timeoutMs: c_int) -> ErrorCode;
84
85    pub fn c_PigeonIMU_SetYawToCompass(handle: Handle, timeoutMs: c_int) -> ErrorCode;
86
87    pub fn c_PigeonIMU_SetFusedHeading(
88        handle: Handle,
89        angleDeg: f64,
90        timeoutMs: c_int,
91    ) -> ErrorCode;
92
93    pub fn c_PigeonIMU_AddFusedHeading(
94        handle: Handle,
95        angleDeg: f64,
96        timeoutMs: c_int,
97    ) -> ErrorCode;
98
99    pub fn c_PigeonIMU_SetFusedHeadingToCompass(handle: Handle, timeoutMs: c_int) -> ErrorCode;
100
101    pub fn c_PigeonIMU_SetAccumZAngle(handle: Handle, angleDeg: f64, timeoutMs: c_int)
102        -> ErrorCode;
103
104    pub fn c_PigeonIMU_ConfigTemperatureCompensationEnable(
105        handle: Handle,
106        bTempCompEnable: c_int,
107        timeoutMs: c_int,
108    ) -> ErrorCode;
109
110    pub fn c_PigeonIMU_SetCompassDeclination(
111        handle: Handle,
112        angleDegOffset: f64,
113        timeoutMs: c_int,
114    ) -> ErrorCode;
115
116    pub fn c_PigeonIMU_SetCompassAngle(
117        handle: Handle,
118        angleDeg: f64,
119        timeoutMs: c_int,
120    ) -> ErrorCode;
121
122    pub fn c_PigeonIMU_EnterCalibrationMode(
123        handle: Handle,
124        calMode: c_int,
125        timeoutMs: c_int,
126    ) -> ErrorCode;
127
128    pub fn c_PigeonIMU_GetGeneralStatus(
129        handle: Handle,
130        state: *mut c_int,
131        currentMode: *mut c_int,
132        calibrationError: *mut c_int,
133        bCalIsBooting: *mut c_int,
134        tempC: *mut f64,
135        upTimeSec: *mut c_int,
136        noMotionBiasCount: *mut c_int,
137        tempCompensationCount: *mut c_int,
138        lastError: *mut c_int,
139    ) -> ErrorCode;
140
141    pub fn c_PigeonIMU_GetLastError(handle: Handle) -> ErrorCode;
142
143    /// wxyz takes an array of length 4
144    pub fn c_PigeonIMU_Get6dQuaternion(handle: Handle, wxyz: *mut f64) -> ErrorCode;
145
146    /// ypr takes an array of length 3
147    pub fn c_PigeonIMU_GetYawPitchRoll(handle: Handle, ypr: *mut f64) -> ErrorCode;
148
149    /// xyz_deg takes an array of length 3
150    pub fn c_PigeonIMU_GetAccumGyro(handle: Handle, xyz_deg: *mut f64) -> ErrorCode;
151
152    pub fn c_PigeonIMU_GetAbsoluteCompassHeading(handle: Handle, value: *mut f64) -> ErrorCode;
153
154    pub fn c_PigeonIMU_GetCompassHeading(handle: Handle, value: *mut f64) -> ErrorCode;
155
156    pub fn c_PigeonIMU_GetCompassFieldStrength(handle: Handle, value: *mut f64) -> ErrorCode;
157
158    pub fn c_PigeonIMU_GetTemp(handle: Handle, value: *mut f64) -> ErrorCode;
159
160    pub fn c_PigeonIMU_GetState(handle: Handle, state: *mut c_int) -> ErrorCode;
161
162    pub fn c_PigeonIMU_GetUpTime(handle: Handle, value: *mut c_int) -> ErrorCode;
163
164    /// rm_xyz takes an array of length 3
165    pub fn c_PigeonIMU_GetRawMagnetometer(handle: Handle, rm_xyz: *mut c_short) -> ErrorCode;
166
167    /// bm_xyz takes an array of length 3
168    pub fn c_PigeonIMU_GetBiasedMagnetometer(handle: Handle, bm_xyz: *mut c_short) -> ErrorCode;
169
170    /// ba_xyz takes an array of length 3
171    pub fn c_PigeonIMU_GetBiasedAccelerometer(handle: Handle, ba_xyz: *mut c_short) -> ErrorCode;
172
173    /// xyz_dps takes an array of length 3
174    pub fn c_PigeonIMU_GetRawGyro(handle: Handle, xyz_dps: *mut f64) -> ErrorCode;
175
176    /// tiltAngles takes an array of length 3
177    pub fn c_PigeonIMU_GetAccelerometerAngles(handle: Handle, tiltAngles: *mut f64) -> ErrorCode;
178
179    pub fn c_PigeonIMU_GetFusedHeading2(
180        handle: Handle,
181        bIsFusing: *mut c_int,
182        bIsValid: *mut c_int,
183        value: *mut f64,
184        lastError: *mut c_int,
185    ) -> ErrorCode;
186
187    pub fn c_PigeonIMU_GetFusedHeading1(handle: Handle, value: *mut f64) -> ErrorCode;
188
189    pub fn c_PigeonIMU_GetResetCount(handle: Handle, value: *mut c_int) -> ErrorCode;
190
191    pub fn c_PigeonIMU_GetResetFlags(handle: Handle, value: *mut c_int) -> ErrorCode;
192
193    pub fn c_PigeonIMU_GetFirmwareVersion(handle: Handle, firmwareVers: *mut c_int) -> ErrorCode;
194
195    pub fn c_PigeonIMU_HasResetOccurred(handle: Handle, hasReset: *mut bool) -> ErrorCode;
196
197    pub fn c_PigeonIMU_SetLastError(handle: Handle, value: c_int) -> ErrorCode;
198
199    pub fn c_PigeonIMU_GetFaults(handle: Handle, param: *mut c_int) -> ErrorCode;
200
201    pub fn c_PigeonIMU_GetStickyFaults(handle: Handle, param: *mut c_int) -> ErrorCode;
202
203    pub fn c_PigeonIMU_ClearStickyFaults(handle: Handle, timeoutMs: c_int) -> ErrorCode;
204
205    pub fn c_PigeonIMU_SetStatusFramePeriod(
206        handle: Handle,
207        frame: c_int,
208        periodMs: c_int,
209        timeoutMs: c_int,
210    ) -> ErrorCode;
211
212    pub fn c_PigeonIMU_GetStatusFramePeriod(
213        handle: Handle,
214        frame: c_int,
215        periodMs: *mut c_int,
216        timeoutMs: c_int,
217    ) -> ErrorCode;
218
219    pub fn c_PigeonIMU_SetControlFramePeriod(
220        handle: Handle,
221        frame: c_int,
222        periodMs: c_int,
223    ) -> ErrorCode;
224}