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
use dpcdecl::*;
use std::os::raw::c_char;
pub const dprpJtgSetSpeed: DPRP = 0x00000001;
pub const dprpJtgSetPinState: DPRP = 0x00000002;
pub const dprpJtgTransBuffering: DPRP = 0x00000004;
pub const dprpJtgWait: DPRP = 0x00000008;
pub const dprpJtgDelayCnt: DPRP = 0x00000010;
pub const dprpJtgReadyCnt: DPRP = 0x00000020;
pub const dprpJtgEscape: DPRP = 0x00000040;
pub const dprpJtgMScan: DPRP = 0x00000080;
pub const dprpJtgOScan0: DPRP = 0x00000100;
pub const dprpJtgOScan1: DPRP = 0x00000200;
pub const dprpJtgOScan2: DPRP = 0x00000400;
pub const dprpJtgOScan3: DPRP = 0x00000800;
pub const dprpJtgOScan4: DPRP = 0x00001000;
pub const dprpJtgOScan5: DPRP = 0x00002000;
pub const dprpJtgOScan6: DPRP = 0x00004000;
pub const dprpJtgOScan7: DPRP = 0x00008000;
pub const dprpJtgCheckPacket: DPRP = 0x00010000;
pub const dprpJtgBatch: DPRP = 0x00020000;
pub const dprpJtgSetAuxReset: DPRP = 0x00040000;
pub const dprpJtgSetGetGpio: DPRP = 0x00080000;
pub const jtgsfNone: u8 = 0;
pub const jtgsfJScan0: u8 = 1;
pub const jtgsfJScan1: u8 = 2;
pub const jtgsfJScan2: u8 = 3;
pub const jtgsfJScan3: u8 = 4;
pub const jtgsfMScan: u8 = 5;
pub const jtgsfOScan0: u8 = 6;
pub const jtgsfOScan1: u8 = 7;
pub const jtgsfOScan2: u8 = 8;
pub const jtgsfOScan3: u8 = 9;
pub const jtgsfOScan4: u8 = 10;
pub const jtgsfOScan5: u8 = 11;
pub const jtgsfOScan6: u8 = 12;
pub const jtgsfOScan7: u8 = 13;
pub const cedgeJtgCustom: u8 = 2;
pub const cedgeJtgDeselect: u8 = 4;
pub const cedgeJtgSelect: u8 = 6;
pub const cedgeJtgReset: u8 = 8;
pub const jcbSetTmsTdiTck: u32 = 1;
pub const jcbGetTmsTdiTdoTck: u32 = 2;
pub const jcbPutTms: u32 = 3;
pub const jcbPutTmsGetTdo: u32 = 4;
pub const jcbPutTdi: u32 = 5;
pub const jcbPutTdiGetTdo: u32 = 6;
pub const jcbGetTdo: u32 = 7;
pub const jcbClockTck: u32 = 8;
pub const jcbWaitUs: u32 = 9;
pub const jcbSetAuxReset: u32 = 10;
pub const jcbGetGpioMask: u32 = 11;
pub const jcbSetGpioDir: u32 = 12;
pub const jcbGetGpioDir: u32 = 13;
pub const jcbSetGpioState: u32 = 14;
pub const jcbGetGpioState: u32 = 15;
pub const djbpWaitUs: u32 = 0x00000001;
pub const djbpSetAuxReset: u32 = 0x00000002;
pub const djbpSetGetGpio: u32 = 0x00000004;
extern "C" {
pub fn DjtgGetVersion(szVersion: *mut c_char) -> BOOL;
pub fn DjtgGetPortCount(hif: HIF, pcprt: *mut i32) -> BOOL;
pub fn DjtgGetPortProperties(hif: HIF, prtReq: i32, pdprp: *mut u32) -> BOOL;
pub fn DjtgGetBatchProperties(hif: HIF, prtReq: i32, pdjbp: *mut u32) -> BOOL;
pub fn DjtgEnable(hif: HIF) -> BOOL;
pub fn DjtgEnableEx(hif: HIF, prtReq: i32) -> BOOL;
pub fn DjtgDisable(hif: HIF) -> BOOL;
pub fn DjtgGetSpeed(hif: HIF, pfrqCur: *mut u32) -> BOOL;
pub fn DjtgSetSpeed(hif: HIF, frqReq: u32, pfrqSet: *mut u32) -> BOOL;
pub fn DjtgSetTmsTdiTck(hif: HIF, fTms: BOOL, fTdi: BOOL, fTck: BOOL) -> BOOL;
pub fn DjtgGetTmsTdiTdoTck(
hif: HIF,
pfTms: *mut BOOL,
pfTdi: *mut BOOL,
pfTdo: *mut BOOL,
pfTck: *mut BOOL,
) -> BOOL;
pub fn DjtgSetAuxReset(hif: HIF, fReset: BOOL, fEnOutput: BOOL) -> BOOL;
pub fn DjtgEnableTransBuffering(hif: HIF, fEnable: BOOL) -> BOOL;
pub fn DjtgSyncBuffer(hif: HIF) -> BOOL;
pub fn DjtgWait(hif: HIF, tusWait: u32, ptusWaited: *mut u32) -> BOOL;
pub fn DjtgGetGpioMask(hif: HIF, pfsMaskOut: *mut u32, pfsMaskIn: *mut u32) -> BOOL;
pub fn DjtgSetGpioDir(hif: HIF, fsDirReq: u32, pfsDirSet: *mut u32) -> BOOL;
pub fn DjtgGetGpioDir(hif: HIF, pfsDir: *mut u32) -> BOOL;
pub fn DjtgSetGpioState(hif: HIF, fsState: u32) -> BOOL;
pub fn DjtgGetGpioState(hif: HIF, pfsState: *mut u32) -> BOOL;
pub fn DjtgPutTdiBits(
hif: HIF,
fTms: BOOL,
rgbSnd: *mut u8,
rgbRcv: *mut u8,
cbits: u32,
fOverlap: BOOL,
) -> BOOL;
pub fn DjtgPutTmsBits(
hif: HIF,
fTdi: BOOL,
rgbSnd: *mut u8,
rgbRcv: *mut u8,
cbits: u32,
fOverlap: BOOL,
) -> BOOL;
pub fn DjtgPutTmsTdiBits(
hif: HIF,
rgbSnd: *mut u8,
rgbRcv: *mut u8,
cbitpairs: u32,
fOverlap: BOOL,
) -> BOOL;
pub fn DjtgGetTdoBits(
hif: HIF,
fTdi: BOOL,
fTms: BOOL,
rgbRcv: *mut u8,
cbits: u32,
fOverlap: BOOL,
) -> BOOL;
pub fn DjtgClockTck(hif: HIF, fTms: BOOL, fTdi: BOOL, cclk: u32, fOverlap: BOOL) -> BOOL;
pub fn DjtgBatch(
hif: HIF,
cbSnd: u32,
rgbSnd: *mut u8,
cbRcv: u32,
rgbRcv: *mut u8,
fOverlap: BOOL,
) -> BOOL;
pub fn DjtgSetScanFormat(hif: HIF, jtgsfFmt: u8, fShiftXR: BOOL) -> BOOL;
pub fn DjtgGetScanFormat(hif: HIF, pjtgsfFmt: *mut u8, pfShiftXR: *mut BOOL) -> BOOL;
pub fn DjtgSetReadyCnt(
hif: HIF,
cbitRdy: u8,
pcretOutReq: *mut u32,
pcretOutSet: *mut u32,
) -> BOOL;
pub fn DjtgGetReadyCnt(hif: HIF, pcbitRdy: *mut u8, pcretOut: *mut u32) -> BOOL;
pub fn DjtgSetDelayCnt(hif: HIF, cbitDlyReq: u32, pcbitDlySet: *mut u32, fReset: BOOL) -> BOOL;
pub fn DjtgGetDelayCnt(hif: HIF, pcbitDly: *mut u32, pfReset: *mut BOOL) -> BOOL;
pub fn DjtgCheckPacket(hif: HIF, cedgeNop: u8, fReset: BOOL, fOverlap: BOOL) -> BOOL;
pub fn DjtgEscape(hif: HIF, cedgeEsc: u8, fOverlap: BOOL) -> BOOL;
}