1#![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#[repr(i32)]
13#[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#[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 pub fn c_PigeonIMU_Get6dQuaternion(handle: Handle, wxyz: *mut f64) -> ErrorCode;
145
146 pub fn c_PigeonIMU_GetYawPitchRoll(handle: Handle, ypr: *mut f64) -> ErrorCode;
148
149 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 pub fn c_PigeonIMU_GetRawMagnetometer(handle: Handle, rm_xyz: *mut c_short) -> ErrorCode;
166
167 pub fn c_PigeonIMU_GetBiasedMagnetometer(handle: Handle, bm_xyz: *mut c_short) -> ErrorCode;
169
170 pub fn c_PigeonIMU_GetBiasedAccelerometer(handle: Handle, ba_xyz: *mut c_short) -> ErrorCode;
172
173 pub fn c_PigeonIMU_GetRawGyro(handle: Handle, xyz_dps: *mut f64) -> ErrorCode;
175
176 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}