1use crate::{ca_access_rights, epicsThreadOSD};
4
5pub const MAX_STRING_SIZE: i32 = 40;
6pub const CA_K_INFO: i32 = 3;
7pub const CA_K_ERROR: i32 = 2;
8pub const CA_K_SUCCESS: i32 = 1;
9pub const CA_K_WARNING: i32 = 0;
10pub const CA_K_SEVERE: i32 = 4;
11pub const CA_K_FATAL: i32 = 6;
12pub const CA_M_MSG_NO: i32 = 65528;
13pub const CA_M_SEVERITY: i32 = 7;
14pub const CA_M_LEVEL: i32 = 3;
15pub const CA_M_SUCCESS: i32 = 1;
16pub const CA_M_ERROR: i32 = 2;
17pub const CA_M_SEVERE: i32 = 4;
18pub const CA_S_MSG_NO: i32 = 13;
19pub const CA_S_SEVERITY: i32 = 3;
20pub const CA_V_MSG_NO: i32 = 3;
21pub const CA_V_SEVERITY: i32 = 0;
22pub const CA_V_SUCCESS: i32 = 0;
23pub const MAX_UNITS_SIZE: i32 = 8;
24pub const MAX_ENUM_STRING_SIZE: i32 = 26;
25pub const MAX_ENUM_STATES: i32 = 16;
26pub const DBF_STRING: i32 = 0;
27pub const DBF_INT: i32 = 1;
28pub const DBF_SHORT: i32 = 1;
29pub const DBF_FLOAT: i32 = 2;
30pub const DBF_ENUM: i32 = 3;
31pub const DBF_CHAR: i32 = 4;
32pub const DBF_LONG: i32 = 5;
33pub const DBF_DOUBLE: i32 = 6;
34pub const DBF_NO_ACCESS: i32 = 7;
35pub const LAST_TYPE: i32 = 6;
36pub const DBR_STRING: i32 = 0;
37pub const DBR_INT: i32 = 1;
38pub const DBR_SHORT: i32 = 1;
39pub const DBR_FLOAT: i32 = 2;
40pub const DBR_ENUM: i32 = 3;
41pub const DBR_CHAR: i32 = 4;
42pub const DBR_LONG: i32 = 5;
43pub const DBR_DOUBLE: i32 = 6;
44pub const DBR_STS_STRING: i32 = 7;
45pub const DBR_STS_SHORT: i32 = 8;
46pub const DBR_STS_INT: i32 = 8;
47pub const DBR_STS_FLOAT: i32 = 9;
48pub const DBR_STS_ENUM: i32 = 10;
49pub const DBR_STS_CHAR: i32 = 11;
50pub const DBR_STS_LONG: i32 = 12;
51pub const DBR_STS_DOUBLE: i32 = 13;
52pub const DBR_TIME_STRING: i32 = 14;
53pub const DBR_TIME_INT: i32 = 15;
54pub const DBR_TIME_SHORT: i32 = 15;
55pub const DBR_TIME_FLOAT: i32 = 16;
56pub const DBR_TIME_ENUM: i32 = 17;
57pub const DBR_TIME_CHAR: i32 = 18;
58pub const DBR_TIME_LONG: i32 = 19;
59pub const DBR_TIME_DOUBLE: i32 = 20;
60pub const DBR_GR_STRING: i32 = 21;
61pub const DBR_GR_SHORT: i32 = 22;
62pub const DBR_GR_INT: i32 = 22;
63pub const DBR_GR_FLOAT: i32 = 23;
64pub const DBR_GR_ENUM: i32 = 24;
65pub const DBR_GR_CHAR: i32 = 25;
66pub const DBR_GR_LONG: i32 = 26;
67pub const DBR_GR_DOUBLE: i32 = 27;
68pub const DBR_CTRL_STRING: i32 = 28;
69pub const DBR_CTRL_SHORT: i32 = 29;
70pub const DBR_CTRL_INT: i32 = 29;
71pub const DBR_CTRL_FLOAT: i32 = 30;
72pub const DBR_CTRL_ENUM: i32 = 31;
73pub const DBR_CTRL_CHAR: i32 = 32;
74pub const DBR_CTRL_LONG: i32 = 33;
75pub const DBR_CTRL_DOUBLE: i32 = 34;
76pub const DBR_PUT_ACKT: i32 = 35;
77pub const DBR_PUT_ACKS: i32 = 36;
78pub const DBR_STSACK_STRING: i32 = 37;
79pub const DBR_CLASS_NAME: i32 = 38;
80pub const LAST_BUFFER_TYPE: i32 = 38;
81pub const db_strval_dim: i32 = 40;
82pub const db_units_dim: i32 = 8;
83pub const db_desc_dim: i32 = 24;
84pub const db_name_dim: i32 = 36;
85pub const db_state_dim: i32 = 16;
86pub const db_state_text_dim: i32 = 26;
87pub const DBE_VALUE: i32 = 1;
88pub const DBE_ARCHIVE: i32 = 2;
89pub const DBE_LOG: i32 = 2;
90pub const DBE_ALARM: i32 = 4;
91pub const DBE_PROPERTY: i32 = 8;
92pub const CA_OP_GET: i32 = 0;
93pub const CA_OP_PUT: i32 = 1;
94pub const CA_OP_CREATE_CHANNEL: i32 = 2;
95pub const CA_OP_ADD_EVENT: i32 = 3;
96pub const CA_OP_CLEAR_EVENT: i32 = 4;
97pub const CA_OP_OTHER: i32 = 5;
98pub const CA_OP_CONN_UP: i32 = 6;
99pub const CA_OP_CONN_DOWN: i32 = 7;
100pub const CA_OP_SEARCH: i32 = 2;
101pub const TYPENOTCONN: i32 = -1;
102pub const CA_PRIORITY_MAX: i32 = 99;
103pub const CA_PRIORITY_MIN: i32 = 0;
104pub const CA_PRIORITY_DEFAULT: i32 = 0;
105pub const CA_PRIORITY_DB_LINKS: i32 = 80;
106pub const CA_PRIORITY_ARCHIVE: i32 = 20;
107pub const CA_PRIORITY_OPI: i32 = 0;
108pub const NO_ALARM: i32 = 0;
109pub type epicsThreadId = *mut epicsThreadOSD;
110#[repr(u32)]
111#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
112pub enum epicsBoolean {
113 epicsFalse = 0,
114 epicsTrue = 1,
115}
116pub type epicsInt8 = libc::c_schar;
117pub type epicsUInt8 = libc::c_uchar;
118pub type epicsInt16 = libc::c_short;
119pub type epicsUInt16 = libc::c_ushort;
120pub type epicsInt32 = libc::c_int;
121pub type epicsUInt32 = libc::c_uint;
122pub type epicsInt64 = libc::c_longlong;
123pub type epicsUInt64 = libc::c_ulonglong;
124pub type epicsEnum16 = epicsUInt16;
125pub type epicsFloat32 = f32;
126pub type epicsFloat64 = f64;
127pub type epicsStatus = epicsInt32;
128#[repr(C)]
129#[derive(Debug, Copy, Clone)]
130pub struct epicsString {
131 pub length: libc::c_uint,
132 pub pString: *mut libc::c_char,
133}
134pub type epicsOldString = [libc::c_char; 40usize];
135#[repr(C)]
136#[derive(Copy, Clone)]
137pub union epics_any {
138 pub int8: epicsInt8,
139 pub uInt8: epicsUInt8,
140 pub int16: epicsInt16,
141 pub uInt16: epicsUInt16,
142 pub enum16: epicsEnum16,
143 pub int32: epicsInt32,
144 pub uInt32: epicsUInt32,
145 pub int64: epicsInt64,
146 pub uInt64: epicsUInt64,
147 pub float32: epicsFloat32,
148 pub float64: epicsFloat64,
149 pub string: epicsString,
150}
151pub type epicsAny = epics_any;
152#[repr(u32)]
153#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
154pub enum epicsType {
155 epicsInt8T = 0,
156 epicsUInt8T = 1,
157 epicsInt16T = 2,
158 epicsUInt16T = 3,
159 epicsEnum16T = 4,
160 epicsInt32T = 5,
161 epicsUInt32T = 6,
162 epicsFloat32T = 7,
163 epicsFloat64T = 8,
164 epicsStringT = 9,
165 epicsOldStringT = 10,
166}
167#[repr(u32)]
168#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
169pub enum epicsTypeClass {
170 epicsIntC = 0,
171 epicsUIntC = 1,
172 epicsEnumC = 2,
173 epicsFloatC = 3,
174 epicsStringC = 4,
175 epicsOldStringC = 5,
176}
177#[repr(C)]
178#[derive(Debug, Copy, Clone)]
179pub struct epicsTimeStamp {
180 pub secPastEpoch: epicsUInt32,
181 pub nsec: epicsUInt32,
182}
183pub type dbr_string_t = epicsOldString;
184pub type dbr_char_t = epicsUInt8;
185pub type dbr_short_t = epicsInt16;
186pub type dbr_ushort_t = epicsUInt16;
187pub type dbr_int_t = epicsInt16;
188pub type dbr_enum_t = epicsUInt16;
189pub type dbr_long_t = epicsInt32;
190pub type dbr_ulong_t = epicsUInt32;
191pub type dbr_float_t = epicsFloat32;
192pub type dbr_double_t = epicsFloat64;
193pub type dbr_put_ackt_t = epicsUInt16;
194pub type dbr_put_acks_t = epicsUInt16;
195pub type dbr_stsack_string_t = epicsOldString;
196pub type dbr_class_name_t = epicsOldString;
197#[repr(C)]
198#[derive(Debug, Copy, Clone)]
199pub struct dbr_sts_string {
200 pub status: dbr_short_t,
201 pub severity: dbr_short_t,
202 pub value: dbr_string_t,
203}
204#[repr(C)]
205#[derive(Debug, Copy, Clone)]
206pub struct dbr_stsack_string {
207 pub status: dbr_ushort_t,
208 pub severity: dbr_ushort_t,
209 pub ackt: dbr_ushort_t,
210 pub acks: dbr_ushort_t,
211 pub value: dbr_string_t,
212}
213#[repr(C)]
214#[derive(Debug, Copy, Clone)]
215pub struct dbr_sts_int {
216 pub status: dbr_short_t,
217 pub severity: dbr_short_t,
218 pub value: dbr_short_t,
219}
220#[repr(C)]
221#[derive(Debug, Copy, Clone)]
222pub struct dbr_sts_short {
223 pub status: dbr_short_t,
224 pub severity: dbr_short_t,
225 pub value: dbr_short_t,
226}
227#[repr(C)]
228#[derive(Debug, Copy, Clone)]
229pub struct dbr_sts_float {
230 pub status: dbr_short_t,
231 pub severity: dbr_short_t,
232 pub value: dbr_float_t,
233}
234#[repr(C)]
235#[derive(Debug, Copy, Clone)]
236pub struct dbr_sts_enum {
237 pub status: dbr_short_t,
238 pub severity: dbr_short_t,
239 pub value: dbr_enum_t,
240}
241#[repr(C)]
242#[derive(Debug, Copy, Clone)]
243pub struct dbr_sts_char {
244 pub status: dbr_short_t,
245 pub severity: dbr_short_t,
246 pub RISC_pad: dbr_char_t,
247 pub value: dbr_char_t,
248}
249#[repr(C)]
250#[derive(Debug, Copy, Clone)]
251pub struct dbr_sts_long {
252 pub status: dbr_short_t,
253 pub severity: dbr_short_t,
254 pub value: dbr_long_t,
255}
256#[repr(C)]
257#[derive(Debug, Copy, Clone)]
258pub struct dbr_sts_double {
259 pub status: dbr_short_t,
260 pub severity: dbr_short_t,
261 pub RISC_pad: dbr_long_t,
262 pub value: dbr_double_t,
263}
264#[repr(C)]
265#[derive(Debug, Copy, Clone)]
266pub struct dbr_time_string {
267 pub status: dbr_short_t,
268 pub severity: dbr_short_t,
269 pub stamp: epicsTimeStamp,
270 pub value: dbr_string_t,
271}
272#[repr(C)]
273#[derive(Debug, Copy, Clone)]
274pub struct dbr_time_short {
275 pub status: dbr_short_t,
276 pub severity: dbr_short_t,
277 pub stamp: epicsTimeStamp,
278 pub RISC_pad: dbr_short_t,
279 pub value: dbr_short_t,
280}
281#[repr(C)]
282#[derive(Debug, Copy, Clone)]
283pub struct dbr_time_float {
284 pub status: dbr_short_t,
285 pub severity: dbr_short_t,
286 pub stamp: epicsTimeStamp,
287 pub value: dbr_float_t,
288}
289#[repr(C)]
290#[derive(Debug, Copy, Clone)]
291pub struct dbr_time_enum {
292 pub status: dbr_short_t,
293 pub severity: dbr_short_t,
294 pub stamp: epicsTimeStamp,
295 pub RISC_pad: dbr_short_t,
296 pub value: dbr_enum_t,
297}
298#[repr(C)]
299#[derive(Debug, Copy, Clone)]
300pub struct dbr_time_char {
301 pub status: dbr_short_t,
302 pub severity: dbr_short_t,
303 pub stamp: epicsTimeStamp,
304 pub RISC_pad0: dbr_short_t,
305 pub RISC_pad1: dbr_char_t,
306 pub value: dbr_char_t,
307}
308#[repr(C)]
309#[derive(Debug, Copy, Clone)]
310pub struct dbr_time_long {
311 pub status: dbr_short_t,
312 pub severity: dbr_short_t,
313 pub stamp: epicsTimeStamp,
314 pub value: dbr_long_t,
315}
316#[repr(C)]
317#[derive(Debug, Copy, Clone)]
318pub struct dbr_time_double {
319 pub status: dbr_short_t,
320 pub severity: dbr_short_t,
321 pub stamp: epicsTimeStamp,
322 pub RISC_pad: dbr_long_t,
323 pub value: dbr_double_t,
324}
325#[repr(C)]
326#[derive(Debug, Copy, Clone)]
327pub struct dbr_gr_int {
328 pub status: dbr_short_t,
329 pub severity: dbr_short_t,
330 pub units: [libc::c_char; 8usize],
331 pub upper_disp_limit: dbr_short_t,
332 pub lower_disp_limit: dbr_short_t,
333 pub upper_alarm_limit: dbr_short_t,
334 pub upper_warning_limit: dbr_short_t,
335 pub lower_warning_limit: dbr_short_t,
336 pub lower_alarm_limit: dbr_short_t,
337 pub value: dbr_short_t,
338}
339#[repr(C)]
340#[derive(Debug, Copy, Clone)]
341pub struct dbr_gr_short {
342 pub status: dbr_short_t,
343 pub severity: dbr_short_t,
344 pub units: [libc::c_char; 8usize],
345 pub upper_disp_limit: dbr_short_t,
346 pub lower_disp_limit: dbr_short_t,
347 pub upper_alarm_limit: dbr_short_t,
348 pub upper_warning_limit: dbr_short_t,
349 pub lower_warning_limit: dbr_short_t,
350 pub lower_alarm_limit: dbr_short_t,
351 pub value: dbr_short_t,
352}
353#[repr(C)]
354#[derive(Debug, Copy, Clone)]
355pub struct dbr_gr_float {
356 pub status: dbr_short_t,
357 pub severity: dbr_short_t,
358 pub precision: dbr_short_t,
359 pub RISC_pad0: dbr_short_t,
360 pub units: [libc::c_char; 8usize],
361 pub upper_disp_limit: dbr_float_t,
362 pub lower_disp_limit: dbr_float_t,
363 pub upper_alarm_limit: dbr_float_t,
364 pub upper_warning_limit: dbr_float_t,
365 pub lower_warning_limit: dbr_float_t,
366 pub lower_alarm_limit: dbr_float_t,
367 pub value: dbr_float_t,
368}
369#[repr(C)]
370#[derive(Debug, Copy, Clone)]
371pub struct dbr_gr_enum {
372 pub status: dbr_short_t,
373 pub severity: dbr_short_t,
374 pub no_str: dbr_short_t,
375 pub strs: [[libc::c_char; 26usize]; 16usize],
376 pub value: dbr_enum_t,
377}
378#[repr(C)]
379#[derive(Debug, Copy, Clone)]
380pub struct dbr_gr_char {
381 pub status: dbr_short_t,
382 pub severity: dbr_short_t,
383 pub units: [libc::c_char; 8usize],
384 pub upper_disp_limit: dbr_char_t,
385 pub lower_disp_limit: dbr_char_t,
386 pub upper_alarm_limit: dbr_char_t,
387 pub upper_warning_limit: dbr_char_t,
388 pub lower_warning_limit: dbr_char_t,
389 pub lower_alarm_limit: dbr_char_t,
390 pub RISC_pad: dbr_char_t,
391 pub value: dbr_char_t,
392}
393#[repr(C)]
394#[derive(Debug, Copy, Clone)]
395pub struct dbr_gr_long {
396 pub status: dbr_short_t,
397 pub severity: dbr_short_t,
398 pub units: [libc::c_char; 8usize],
399 pub upper_disp_limit: dbr_long_t,
400 pub lower_disp_limit: dbr_long_t,
401 pub upper_alarm_limit: dbr_long_t,
402 pub upper_warning_limit: dbr_long_t,
403 pub lower_warning_limit: dbr_long_t,
404 pub lower_alarm_limit: dbr_long_t,
405 pub value: dbr_long_t,
406}
407#[repr(C)]
408#[derive(Debug, Copy, Clone)]
409pub struct dbr_gr_double {
410 pub status: dbr_short_t,
411 pub severity: dbr_short_t,
412 pub precision: dbr_short_t,
413 pub RISC_pad0: dbr_short_t,
414 pub units: [libc::c_char; 8usize],
415 pub upper_disp_limit: dbr_double_t,
416 pub lower_disp_limit: dbr_double_t,
417 pub upper_alarm_limit: dbr_double_t,
418 pub upper_warning_limit: dbr_double_t,
419 pub lower_warning_limit: dbr_double_t,
420 pub lower_alarm_limit: dbr_double_t,
421 pub value: dbr_double_t,
422}
423#[repr(C)]
424#[derive(Debug, Copy, Clone)]
425pub struct dbr_ctrl_int {
426 pub status: dbr_short_t,
427 pub severity: dbr_short_t,
428 pub units: [libc::c_char; 8usize],
429 pub upper_disp_limit: dbr_short_t,
430 pub lower_disp_limit: dbr_short_t,
431 pub upper_alarm_limit: dbr_short_t,
432 pub upper_warning_limit: dbr_short_t,
433 pub lower_warning_limit: dbr_short_t,
434 pub lower_alarm_limit: dbr_short_t,
435 pub upper_ctrl_limit: dbr_short_t,
436 pub lower_ctrl_limit: dbr_short_t,
437 pub value: dbr_short_t,
438}
439#[repr(C)]
440#[derive(Debug, Copy, Clone)]
441pub struct dbr_ctrl_short {
442 pub status: dbr_short_t,
443 pub severity: dbr_short_t,
444 pub units: [libc::c_char; 8usize],
445 pub upper_disp_limit: dbr_short_t,
446 pub lower_disp_limit: dbr_short_t,
447 pub upper_alarm_limit: dbr_short_t,
448 pub upper_warning_limit: dbr_short_t,
449 pub lower_warning_limit: dbr_short_t,
450 pub lower_alarm_limit: dbr_short_t,
451 pub upper_ctrl_limit: dbr_short_t,
452 pub lower_ctrl_limit: dbr_short_t,
453 pub value: dbr_short_t,
454}
455#[repr(C)]
456#[derive(Debug, Copy, Clone)]
457pub struct dbr_ctrl_float {
458 pub status: dbr_short_t,
459 pub severity: dbr_short_t,
460 pub precision: dbr_short_t,
461 pub RISC_pad: dbr_short_t,
462 pub units: [libc::c_char; 8usize],
463 pub upper_disp_limit: dbr_float_t,
464 pub lower_disp_limit: dbr_float_t,
465 pub upper_alarm_limit: dbr_float_t,
466 pub upper_warning_limit: dbr_float_t,
467 pub lower_warning_limit: dbr_float_t,
468 pub lower_alarm_limit: dbr_float_t,
469 pub upper_ctrl_limit: dbr_float_t,
470 pub lower_ctrl_limit: dbr_float_t,
471 pub value: dbr_float_t,
472}
473#[repr(C)]
474#[derive(Debug, Copy, Clone)]
475pub struct dbr_ctrl_enum {
476 pub status: dbr_short_t,
477 pub severity: dbr_short_t,
478 pub no_str: dbr_short_t,
479 pub strs: [[libc::c_char; 26usize]; 16usize],
480 pub value: dbr_enum_t,
481}
482#[repr(C)]
483#[derive(Debug, Copy, Clone)]
484pub struct dbr_ctrl_char {
485 pub status: dbr_short_t,
486 pub severity: dbr_short_t,
487 pub units: [libc::c_char; 8usize],
488 pub upper_disp_limit: dbr_char_t,
489 pub lower_disp_limit: dbr_char_t,
490 pub upper_alarm_limit: dbr_char_t,
491 pub upper_warning_limit: dbr_char_t,
492 pub lower_warning_limit: dbr_char_t,
493 pub lower_alarm_limit: dbr_char_t,
494 pub upper_ctrl_limit: dbr_char_t,
495 pub lower_ctrl_limit: dbr_char_t,
496 pub RISC_pad: dbr_char_t,
497 pub value: dbr_char_t,
498}
499#[repr(C)]
500#[derive(Debug, Copy, Clone)]
501pub struct dbr_ctrl_long {
502 pub status: dbr_short_t,
503 pub severity: dbr_short_t,
504 pub units: [libc::c_char; 8usize],
505 pub upper_disp_limit: dbr_long_t,
506 pub lower_disp_limit: dbr_long_t,
507 pub upper_alarm_limit: dbr_long_t,
508 pub upper_warning_limit: dbr_long_t,
509 pub lower_warning_limit: dbr_long_t,
510 pub lower_alarm_limit: dbr_long_t,
511 pub upper_ctrl_limit: dbr_long_t,
512 pub lower_ctrl_limit: dbr_long_t,
513 pub value: dbr_long_t,
514}
515#[repr(C)]
516#[derive(Debug, Copy, Clone)]
517pub struct dbr_ctrl_double {
518 pub status: dbr_short_t,
519 pub severity: dbr_short_t,
520 pub precision: dbr_short_t,
521 pub RISC_pad0: dbr_short_t,
522 pub units: [libc::c_char; 8usize],
523 pub upper_disp_limit: dbr_double_t,
524 pub lower_disp_limit: dbr_double_t,
525 pub upper_alarm_limit: dbr_double_t,
526 pub upper_warning_limit: dbr_double_t,
527 pub lower_warning_limit: dbr_double_t,
528 pub lower_alarm_limit: dbr_double_t,
529 pub upper_ctrl_limit: dbr_double_t,
530 pub lower_ctrl_limit: dbr_double_t,
531 pub value: dbr_double_t,
532}
533#[repr(u32)]
534#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
535pub enum dbr_value_class {
536 dbr_class_int = 0,
537 dbr_class_float = 1,
538 dbr_class_string = 2,
539 dbr_class_max = 3,
540}
541#[repr(C)]
542#[derive(Copy, Clone)]
543pub union db_access_val {
544 pub strval: dbr_string_t,
545 pub shrtval: dbr_short_t,
546 pub intval: dbr_short_t,
547 pub fltval: dbr_float_t,
548 pub enmval: dbr_enum_t,
549 pub charval: dbr_char_t,
550 pub longval: dbr_long_t,
551 pub doubleval: dbr_double_t,
552 pub sstrval: dbr_sts_string,
553 pub sshrtval: dbr_sts_short,
554 pub sfltval: dbr_sts_float,
555 pub senmval: dbr_sts_enum,
556 pub schrval: dbr_sts_char,
557 pub slngval: dbr_sts_long,
558 pub sdblval: dbr_sts_double,
559 pub tstrval: dbr_time_string,
560 pub tshrtval: dbr_time_short,
561 pub tfltval: dbr_time_float,
562 pub tenmval: dbr_time_enum,
563 pub tchrval: dbr_time_char,
564 pub tlngval: dbr_time_long,
565 pub tdblval: dbr_time_double,
566 pub gstrval: dbr_sts_string,
567 pub gshrtval: dbr_gr_short,
568 pub gfltval: dbr_gr_float,
569 pub genmval: dbr_gr_enum,
570 pub gchrval: dbr_gr_char,
571 pub glngval: dbr_gr_long,
572 pub gdblval: dbr_gr_double,
573 pub cstrval: dbr_sts_string,
574 pub cshrtval: dbr_ctrl_short,
575 pub cfltval: dbr_ctrl_float,
576 pub cenmval: dbr_ctrl_enum,
577 pub cchrval: dbr_ctrl_char,
578 pub clngval: dbr_ctrl_long,
579 pub cdblval: dbr_ctrl_double,
580 pub putackt: dbr_put_ackt_t,
581 pub putacks: dbr_put_acks_t,
582 pub sastrval: dbr_sts_string,
583 pub classname: dbr_string_t,
584}
585#[repr(C)]
586#[derive(Debug, Copy, Clone)]
587pub struct oldChannelNotify {
588 _unused: [u8; 0],
589}
590pub type chid = *mut oldChannelNotify;
591pub type chanId = chid;
592pub type chtype = libc::c_long;
593#[repr(C)]
594#[derive(Debug, Copy, Clone)]
595pub struct oldSubscription {
596 _unused: [u8; 0],
597}
598pub type evid = *mut oldSubscription;
599pub type ca_real = f64;
600#[repr(C)]
601#[derive(Debug, Copy, Clone)]
602pub struct connection_handler_args {
603 pub chid: chanId,
604 pub op: libc::c_long,
605}
606pub type caCh = ::core::option::Option<unsafe extern "C" fn(args: connection_handler_args)>;
607pub type caar = ca_access_rights;
608#[repr(C)]
609pub struct access_rights_handler_args {
610 pub chid: chanId,
611 pub ar: caar,
612}
613pub type caArh = ::core::option::Option<unsafe extern "C" fn(args: access_rights_handler_args)>;
614#[repr(C)]
615#[derive(Debug, Copy, Clone)]
616pub struct event_handler_args {
617 pub usr: *mut libc::c_void,
618 pub chid: chanId,
619 pub type_: libc::c_long,
620 pub count: libc::c_long,
621 pub dbr: *const libc::c_void,
622 pub status: libc::c_int,
623}
624pub type evargs = event_handler_args;
625pub type caEventCallBackFunc =
626 ::core::option::Option<unsafe extern "C" fn(arg1: event_handler_args)>;
627#[repr(C)]
628#[derive(Debug, Copy, Clone)]
629pub struct exception_handler_args {
630 pub usr: *mut libc::c_void,
631 pub chid: chanId,
632 pub type_: libc::c_long,
633 pub count: libc::c_long,
634 pub addr: *mut libc::c_void,
635 pub stat: libc::c_long,
636 pub op: libc::c_long,
637 pub ctx: *const libc::c_char,
638 pub pFile: *const libc::c_char,
639 pub lineNo: libc::c_uint,
640}
641pub type CA_SYNC_GID = libc::c_uint;
642#[repr(u32)]
643#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
644pub enum channel_state {
645 cs_never_conn = 0,
646 cs_prev_conn = 1,
647 cs_conn = 2,
648 cs_closed = 3,
649}
650#[repr(u32)]
651#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
652pub enum ca_preemptive_callback_select {
653 ca_disable_preemptive_callback = 0,
654 ca_enable_preemptive_callback = 1,
655}
656pub type capri = libc::c_uint;
657pub type caExceptionHandler =
658 ::core::option::Option<unsafe extern "C" fn(arg1: exception_handler_args)>;
659pub type CAFDHANDLER = ::core::option::Option<
660 unsafe extern "C" fn(parg: *mut libc::c_void, fd: libc::c_int, opened: libc::c_int),
661>;
662#[repr(C)]
663#[derive(Debug, Copy, Clone)]
664pub struct ca_client_context {
665 _unused: [u8; 0],
666}
667#[repr(u32)]
668#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
669pub enum epicsAlarmSeverity {
670 epicsSevNone = 0,
671 epicsSevMinor = 1,
672 epicsSevMajor = 2,
673 epicsSevInvalid = 3,
674 ALARM_NSEV = 4,
675}
676#[repr(u32)]
677#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
678pub enum epicsAlarmCondition {
679 epicsAlarmNone = 0,
680 epicsAlarmRead = 1,
681 epicsAlarmWrite = 2,
682 epicsAlarmHiHi = 3,
683 epicsAlarmHigh = 4,
684 epicsAlarmLoLo = 5,
685 epicsAlarmLow = 6,
686 epicsAlarmState = 7,
687 epicsAlarmCos = 8,
688 epicsAlarmComm = 9,
689 epicsAlarmTimeout = 10,
690 epicsAlarmHwLimit = 11,
691 epicsAlarmCalc = 12,
692 epicsAlarmScan = 13,
693 epicsAlarmLink = 14,
694 epicsAlarmSoft = 15,
695 epicsAlarmBadSub = 16,
696 epicsAlarmUDF = 17,
697 epicsAlarmDisable = 18,
698 epicsAlarmSimm = 19,
699 epicsAlarmReadAccess = 20,
700 epicsAlarmWriteAccess = 21,
701 ALARM_NSTATUS = 22,
702}
703extern "C" {
704 pub static mut epicsTypeNames: [*const libc::c_char; 11usize];
705 pub static mut epicsTypeCodeNames: [*const libc::c_char; 11usize];
706 pub static epicsTypeSizes: [libc::c_uint; 11usize];
707 pub static epicsTypeClasses: [epicsTypeClass; 11usize];
708 pub static mut epicsTypeAnyFieldName: [*const libc::c_char; 11usize];
709 pub fn ca_message(ca_status: libc::c_long) -> *const libc::c_char;
710 pub static mut ca_message_text: [*const libc::c_char; 0usize];
711 pub static epicsTypeToDBR_XXXX: [libc::c_int; 11usize];
712 pub static DBR_XXXXToEpicsType: [epicsType; 39usize];
713 pub static dbr_size: [libc::c_ushort; 0usize];
714 pub static dbr_value_size: [libc::c_ushort; 0usize];
715 pub static dbr_value_class: [dbr_value_class; 39usize];
716 pub static dbr_value_offset: [libc::c_ushort; 39usize];
717 pub static mut dbf_text: [*const libc::c_char; 9usize];
718 pub static dbf_text_dim: libc::c_short;
719 pub static mut dbf_text_invalid: *const libc::c_char;
720 pub static mut dbr_text: [*const libc::c_char; 39usize];
721 pub static dbr_text_dim: libc::c_short;
722 pub static mut dbr_text_invalid: *const libc::c_char;
723 pub fn ca_test_event(arg1: event_handler_args);
724 pub fn ca_field_type(chan: chid) -> libc::c_short;
725 pub fn ca_element_count(chan: chid) -> libc::c_ulong;
726 pub fn ca_name(chan: chid) -> *const libc::c_char;
727 pub fn ca_set_puser(chan: chid, puser: *mut libc::c_void);
728 pub fn ca_puser(chan: chid) -> *mut libc::c_void;
729 pub fn ca_read_access(chan: chid) -> libc::c_uint;
730 pub fn ca_write_access(chan: chid) -> libc::c_uint;
731 pub fn ca_state(chan: chid) -> channel_state;
732 pub fn ca_task_initialize() -> libc::c_int;
733 pub fn ca_context_create(select: ca_preemptive_callback_select) -> libc::c_int;
734 pub fn ca_detach_context();
735 pub fn ca_task_exit() -> libc::c_int;
736 pub fn ca_context_destroy();
737 pub fn ca_create_channel(
738 pChanName: *const libc::c_char,
739 pConnStateCallback: caCh,
740 pUserPrivate: *mut libc::c_void,
741 priority: capri,
742 pChanID: *mut chid,
743 ) -> libc::c_int;
744 pub fn ca_change_connection_event(chan: chid, pfunc: caCh) -> libc::c_int;
745 pub fn ca_replace_access_rights_event(chan: chid, pfunc: caArh) -> libc::c_int;
746 pub fn ca_add_exception_event(
747 pfunc: caExceptionHandler,
748 pArg: *mut libc::c_void,
749 ) -> libc::c_int;
750 pub fn ca_clear_channel(chanId: chid) -> libc::c_int;
751 pub fn ca_array_put(
752 type_: chtype,
753 count: libc::c_ulong,
754 chanId: chid,
755 pValue: *const libc::c_void,
756 ) -> libc::c_int;
757 pub fn ca_array_put_callback(
758 type_: chtype,
759 count: libc::c_ulong,
760 chanId: chid,
761 pValue: *const libc::c_void,
762 pFunc: caEventCallBackFunc,
763 pArg: *mut libc::c_void,
764 ) -> libc::c_int;
765 pub fn ca_array_get(
766 type_: chtype,
767 count: libc::c_ulong,
768 chanId: chid,
769 pValue: *mut libc::c_void,
770 ) -> libc::c_int;
771 pub fn ca_array_get_callback(
772 type_: chtype,
773 count: libc::c_ulong,
774 chanId: chid,
775 pFunc: caEventCallBackFunc,
776 pArg: *mut libc::c_void,
777 ) -> libc::c_int;
778 pub fn ca_create_subscription(
779 type_: chtype,
780 count: libc::c_ulong,
781 chanId: chid,
782 mask: libc::c_long,
783 pFunc: caEventCallBackFunc,
784 pArg: *mut libc::c_void,
785 pEventID: *mut evid,
786 ) -> libc::c_int;
787 pub fn ca_clear_subscription(eventID: evid) -> libc::c_int;
788 pub fn ca_evid_to_chid(id: evid) -> chid;
789 pub fn ca_pend_event(timeout: ca_real) -> libc::c_int;
790 pub fn ca_pend_io(timeout: ca_real) -> libc::c_int;
791 pub fn ca_pend(timeout: ca_real, early: libc::c_int) -> libc::c_int;
792 pub fn ca_test_io() -> libc::c_int;
793 pub fn ca_flush_io() -> libc::c_int;
794 pub fn ca_signal(errorCode: libc::c_long, pCtxStr: *const libc::c_char);
795 pub fn ca_signal_with_file_and_lineno(
796 errorCode: libc::c_long,
797 pCtxStr: *const libc::c_char,
798 pFileStr: *const libc::c_char,
799 lineNo: libc::c_int,
800 );
801 pub fn ca_signal_formated(
802 ca_status: libc::c_long,
803 pfilenm: *const libc::c_char,
804 lineno: libc::c_int,
805 pFormat: *const libc::c_char,
806 ...
807 );
808 pub fn ca_host_name(channel: chid) -> *const libc::c_char;
809 pub fn ca_get_host_name(
810 pChan: chid,
811 pBuf: *mut libc::c_char,
812 bufLength: libc::c_uint,
813 ) -> libc::c_uint;
814 pub fn ca_add_fd_registration(pHandler: CAFDHANDLER, pArg: *mut libc::c_void) -> libc::c_int;
815 pub fn ca_sg_create(pgid: *mut CA_SYNC_GID) -> libc::c_int;
816 pub fn ca_sg_delete(gid: CA_SYNC_GID) -> libc::c_int;
817 pub fn ca_sg_block(gid: CA_SYNC_GID, timeout: ca_real) -> libc::c_int;
818 pub fn ca_sg_test(gid: CA_SYNC_GID) -> libc::c_int;
819 pub fn ca_sg_reset(gid: CA_SYNC_GID) -> libc::c_int;
820 pub fn ca_sg_array_get(
821 gid: CA_SYNC_GID,
822 type_: chtype,
823 count: libc::c_ulong,
824 chan: chid,
825 pValue: *mut libc::c_void,
826 ) -> libc::c_int;
827 pub fn ca_sg_array_put(
828 gid: CA_SYNC_GID,
829 type_: chtype,
830 count: libc::c_ulong,
831 chan: chid,
832 pValue: *const libc::c_void,
833 ) -> libc::c_int;
834 pub fn ca_sg_stat(gid: CA_SYNC_GID) -> libc::c_int;
835 pub fn ca_dump_dbr(type_: chtype, count: libc::c_uint, pbuffer: *const libc::c_void);
836 pub fn ca_v42_ok(chan: chid) -> libc::c_int;
837 pub fn ca_version() -> *const libc::c_char;
838 pub fn ca_get_ioc_connection_count() -> libc::c_uint;
839 pub fn ca_preemtive_callback_is_enabled() -> libc::c_int;
840 pub fn ca_self_test();
841 pub fn ca_beacon_anomaly_count() -> libc::c_uint;
842 pub fn ca_search_attempts(chan: chid) -> libc::c_uint;
843 pub fn ca_beacon_period(chan: chid) -> f64;
844 pub fn ca_receive_watchdog_delay(chan: chid) -> f64;
845 pub fn ca_current_context() -> *mut ca_client_context;
846 pub fn ca_attach_context(context: *mut ca_client_context) -> libc::c_int;
847 pub fn ca_client_status(level: libc::c_uint) -> libc::c_int;
848 pub fn ca_context_status(arg1: *mut ca_client_context, level: libc::c_uint) -> libc::c_int;
849 pub fn ca_build_and_connect(
850 pChanName: *const libc::c_char,
851 arg1: chtype,
852 arg2: libc::c_ulong,
853 pChanID: *mut chid,
854 arg3: *mut libc::c_void,
855 pFunc: caCh,
856 pArg: *mut libc::c_void,
857 ) -> libc::c_int;
858 pub fn ca_search_and_connect(
859 pChanName: *const libc::c_char,
860 pChanID: *mut chid,
861 pFunc: caCh,
862 pArg: *mut libc::c_void,
863 ) -> libc::c_int;
864 pub fn ca_channel_status(tid: epicsThreadId) -> libc::c_int;
865 pub fn ca_clear_event(eventID: evid) -> libc::c_int;
866 pub fn ca_add_masked_array_event(
867 type_: chtype,
868 count: libc::c_ulong,
869 chanId: chid,
870 pFunc: caEventCallBackFunc,
871 pArg: *mut libc::c_void,
872 p_delta: ca_real,
873 n_delta: ca_real,
874 timeout: ca_real,
875 pEventID: *mut evid,
876 mask: libc::c_long,
877 ) -> libc::c_int;
878 pub fn ca_modify_user_name(pUserName: *const libc::c_char) -> libc::c_int;
879 pub fn ca_modify_host_name(pHostName: *const libc::c_char) -> libc::c_int;
880 pub static mut epicsAlarmSeverityStrings: [*const libc::c_char; 4usize];
881 pub static mut epicsAlarmConditionStrings: [*const libc::c_char; 22usize];
882}