1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
use std::os::raw::{c_char, c_int};
pub type BOOL = c_int;
pub const MAX_PATH: usize = 260;
pub const cchAliasMax: usize = 16;
pub const cchUsrNameMax: usize = 16;
pub const cchProdNameMax: usize = 28;
pub const cchSnMax: usize = 15;
pub const cchVersionMax: usize = 256;
pub const cchDvcNameMax: usize = 64;
pub const cchDtpStringMax: usize = 16;
pub const cchErcMax: usize = 48;
pub const cchErcMsgMax: usize = 128;
pub type MGTCAP = u32;
pub type DCAP = u32;
pub const dcapJtag: DCAP = 0x00000001;
pub const dcapJtg: DCAP = 0x00000001;
pub const dcapPio: DCAP = 0x00000002;
pub const dcapEpp: DCAP = 0x00000004;
pub const dcapStm: DCAP = 0x00000008;
pub const dcapSpi: DCAP = 0x00000010;
pub const dcapTwi: DCAP = 0x00000020;
pub const dcapAci: DCAP = 0x00000040;
pub const dcapAio: DCAP = 0x00000080;
pub const dcapEmc: DCAP = 0x00000100;
pub const dcapDci: DCAP = 0x00000200;
pub const dcapGio: DCAP = 0x00000400;
pub const dcapPti: DCAP = 0x00000800;
pub const dcapAll: DCAP = 0xFFFFFFFF;
pub type DPRP = u32;
pub type DTP = u32;
pub const dtpUSB: DTP = 0x00000001;
pub const dtpEthernet: DTP = 0x00000002;
pub const dtpParallel: DTP = 0x00000004;
pub const dtpSerial: DTP = 0x00000008;
pub const dtpNone: DTP = 0x00000000;
pub const dtpAll: DTP = 0xFFFFFFFF;
pub const dtpNil: DTP = 0;
pub type TPT = u16;
pub const tptUSB: TPT = 0x0001;
pub const tptEthernet: TPT = 0x0002;
pub const tptParallel: TPT = 0x0004;
pub const tptSerial: TPT = 0x0008;
pub const tptNone: TPT = 0x0000;
pub const tptAll: TPT = 0xFFFF;
pub const tptNil: TPT = 0x0000;
pub type PTC = u16;
pub const ptcProtocol1: PTC = 0x0001;
pub const ptcProtocol2: PTC = 0x0002;
pub const ptcProtocol3: PTC = 0x0004;
pub const ptcProtocol4: PTC = 0x0008;
pub const ptcProtocol5: PTC = 0x0010;
pub const ptcProtocol6: PTC = 0x0020;
pub const ptcProtocol7: PTC = 0x0040;
pub const ptcProtocol8: PTC = 0x0080;
pub const ptcProtocol9: PTC = 0x0100;
pub const ptcProtocol10: PTC = 0x0200;
pub const ptcProtocol11: PTC = 0x0400;
pub const ptcProtocol12: PTC = 0x0800;
pub const ptcProtocol13: PTC = 0x1000;
pub const ptcProtocol14: PTC = 0x2000;
pub const ptcProtocol15: PTC = 0x4000;
pub const ptcProtocol16: PTC = 0x8000;
pub const ptcAll: PTC = 0x0000;
pub const ptcNil: PTC = 0x0000;
#[inline]
pub unsafe fn TptFromDtp(dtp: DTP) -> TPT {
(dtp & 0xFFFF) as TPT
}
#[inline]
pub unsafe fn PtcFromDtp(dtp: DTP) -> PTC {
((dtp >> 16) & 0xFFFF) as PTC
}
#[inline]
pub unsafe fn DtpFromTptPtc(tpt: TPT, ptc: PTC) -> DTP {
tpt as DTP | (ptc as DTP) << 16
}
pub type HIF = u32;
pub const hifInvalid: HIF = 0;
pub type PDID = u32;
pub type FWTYPE = u16;
pub type FWVER = u16;
pub type FWID = u8;
#[inline]
pub unsafe fn ProductFromPdid(pdid: PDID) -> c_int {
((pdid >> 20) & 0xFFF) as c_int
}
#[inline]
pub unsafe fn VariantFromPdid(pdid: PDID) -> c_int {
((pdid >> 8) & 0xFFF) as c_int
}
#[inline]
pub unsafe fn FwidFromPdid(pdid: PDID) -> FWID {
(pdid & 0xFF) as FWID
}
pub type DINFO = u32;
pub const dinfoNone: DINFO = 0;
pub const dinfoAlias: DINFO = 1;
pub const dinfoUsrName: DINFO = 2;
pub const dinfoProdName: DINFO = 3;
pub const dinfoPDID: DINFO = 4;
pub const dinfoSN: DINFO = 5;
pub const dinfoIP: DINFO = 6;
pub const dinfoMAC: DINFO = 7;
pub const dinfoDCAP: DINFO = 9;
pub const dinfoSerParam: DINFO = 10;
pub const dinfoParAddr: DINFO = 11;
pub const dinfoUsbPath: DINFO = 12;
pub const dinfoProdID: DINFO = 13;
pub const dinfoOpenCount: DINFO = 14;
pub const dinfoFWVER: DINFO = 15;
pub type ERC = c_int;
pub const ercNoErc: ERC = 0;
pub const ercNotSupported: ERC = 1;
pub const ercTransferCancelled: ERC = 2;
pub const ercCapabilityConflict: ERC = 3;
pub const ercCapabilityNotEnabled: ERC = 4;
pub const ercEppAddressTimeout: ERC = 5;
pub const ercEppDataTimeout: ERC = 6;
pub const ercDataSndLess: ERC = 7;
pub const ercDataRcvLess: ERC = 8;
pub const ercDataRcvMore: ERC = 9;
pub const ercDataSndLessRcvLess: ERC = 10;
pub const ercDataSndLessRcvMore: ERC = 11;
pub const ercInvalidPort: ERC = 12;
pub const ercBadParameter: ERC = 13;
pub const ercAciFifoFull: ERC = 0x20;
pub const ercTwiBadBatchCmd: ERC = 0x20;
pub const ercTwiBusBusy: ERC = 0x21;
pub const ercTwiAdrNak: ERC = 0x22;
pub const ercTwiDataNak: ERC = 0x23;
pub const ercTwiSmbPecError: ERC = 0x24;
pub const ercAlreadyOpened: ERC = 1024;
pub const ercInvalidHif: ERC = 1025;
pub const ercInvalidParameter: ERC = 1026;
pub const ercTransferPending: ERC = 1031;
pub const ercApiLockTimeout: ERC = 1032;
pub const ercPortConflict: ERC = 1033;
pub const ercConnectionFailed: ERC = 3072;
pub const ercControlTransferFailed: ERC = 3075;
pub const ercCmdSendFailed: ERC = 3076;
pub const ercStsReceiveFailed: ERC = 3077;
pub const ercInsufficientResources: ERC = 3078;
pub const ercInvalidTFP: ERC = 3079;
pub const ercInternalError: ERC = 3080;
pub const ercTooManyOpenedDevices: ERC = 3081;
pub const ercConfigFileError: ERC = 3082;
pub const ercDeviceNotConnected: ERC = 3083;
pub const ercEnumNotFree: ERC = 3084;
pub const ercEnumFreeFail: ERC = 3085;
pub const ercInvalidDevice: ERC = 3086;
pub const ercDeviceBusy: ERC = 3087;
pub const ercCorruptInstallation: ERC = 3088;
pub const ercDabsInitFailed: ERC = 3089;
pub const ercDpcommInitFailed: ERC = 3090;
#[repr(C)]
pub struct DVC {
pub szName: [c_char; cchDvcNameMax],
pub szConn: [c_char; MAX_PATH + 1],
pub dtp: DTP,
}