|
|
1.1 root 1: #ifndef GSCI_DOT_H
2: #define GSCI_DOT_H
3:
4: /*
5: * GSCI.H 5.20A June 8, 1995
6: *
7: * The Greenleaf Comm Library
8: *
9: * Copyright (C) 1984-1995 Greenleaf Software Inc. All Rights Reserved.
10: *
11: * NOTES
12: *
13: * This file contains all the structure definitions and function
14: * prototypes needed by user modules that are going to access GSCI
15: * Level 1 functions.
16: *
17: * MODIFICATIONS
18: *
19: * December 12, 1992 4.00A : Initial release
20: *
21: */
22: #include "commlib.h"
23:
24: #define MAX_PORT 35
25: #define MAX_BUF_SIZE 65535U
26: #define MIN_BUF_SIZE 2
27:
28: /*
29: * port operating modes
30: */
31: #define ASIN 1
32: #define ASOUT 2
33: #define ASINOUT 3
34: #define BINARY 0
35: #define ASCII 4
36: #define NORMALRX 0
37: #define WIDETRACKRX 128
38:
39: /*
40: *Parity types
41: */
42: #define P_NONE 0
43: #define P_ODD 1
44: #define P_EVEN 2
45: #define P_S_STICK 3
46: #define P_M_STICK 4
47:
48:
49:
50: /*
51: * Error masks for widetrack rx buffer
52: */
53: #define OVERRUN_ERR 2
54: #define PARITY_ERR 4
55: #define FRAMING_ERR 8
56: #define CTS_STATE 16
57: #define DSR_STATE 32
58: #define RI_STATE 64
59: #define CD_STATE 128
60:
61: /*
62: * Argument values for asicheck()
63: */
64: #define ALERT_FLAG_STOPS_RX_AND_TX 1
65: #define CTS_LOW_STOPS_TX_INTERRUPTS 2
66: #define DSR_LOW_DISCARDS_RX_DATA 4
67: #define CD_LOW_DISCARDS_RX_DATA 8
68: #define MODEM_STATUS_CHANGES_SET_ALERT 16
69: #define LINE_STATUS_ERRORS_SET_ALERT 32
70:
71: /*
72: * For asirchk()
73: */
74: #define CHKDISABLE 0
75: #define CHKDISCARD 1
76: #define CHKFLAGDISCARD 2
77: #define CHKFLAG 3
78: #define CHKRESET 4
79:
80: /*
81: *Define status modes for all those is...() functions
82: */
83: #define IMMEDIATE 0
84: #define CUMULATIVE 1
85:
86: /*
87: *Buffer Flags (Masks)
88: */
89: #define ALERT 1
90: #define RXEMPTY 2
91: #define RXFULL 4
92: #define RXOVFLOW 8
93: #define TXEMPTY 16
94: #define TXFULL 32
95: #define LINERR 64
96: #define MODCHG 128
97:
98: /*
99: * Names used as parameters passed to asicheck()
100: */
101:
102: #define IGALERT 1
103: #define IGCTS 2
104: #define IGDSR 4
105: #define IGCD 8
106: #define IGMSTAT 16
107: #define IGLSTAT 32
108:
109: /*
110: * Old argument values for the is...() functions
111: */
112: #define DIRECT 0
113: #define STATIC 1
114:
115: /*************************************************************************
116: * SUPPORT POLICY RE ALL STRUCTURES FROM HERE ON: *
117: * *
118: * These structures are used internally by the Comm functions and the *
119: * interrupts. Feel free to look around, but it's not a good idea to *
120: * change anything here! *
121: * *
122: ************************************************************************/
123:
124: /*
125: * Port Status Bits (from interrupt process)
126: */
127: struct AS_STBITS {
128: unsigned alert : 1;
129: unsigned rxempty : 1;
130: unsigned rxfull : 1;
131: unsigned rxovflow : 1;
132: unsigned txempty : 1;
133: unsigned txfull : 1;
134: unsigned linerr : 1;
135: unsigned modchg : 1;
136: unsigned xchrun : 1;
137: unsigned rchrun : 1;
138: unsigned txwxon : 1;
139: unsigned txwcts : 1;
140: unsigned txwalert : 1;
141: unsigned xoffsent : 1;
142: unsigned rtsactive : 1;
143: unsigned txiflag : 1;
144: };
145:
146: /*
147: *Interrupt Options (written from application side, read by interrupts)
148: */
149: struct AS_MODEBITS {
150: unsigned is_txint : 1;
151: unsigned is_rxint : 1;
152: unsigned is_ascii : 1;
153: unsigned is_rxerror : 1;
154: unsigned is_receiver_xoffmode : 1;
155: unsigned cts_low_holds_tx_interrupts : 1;
156: unsigned alert_flag_stops_rx_and_tx : 1;
157: unsigned dsr_low_discards_rx_data : 1;
158: unsigned cd_low_discards_rx_data : 1;
159: unsigned modem_status_changes_set_alert : 1;
160: unsigned line_errors_set_alert : 1;
161: unsigned is_16550 : 1;
162: unsigned is_blocking : 1;
163: unsigned is_rchking : 1;
164: unsigned is_rtscontrol : 1;
165: unsigned is_transmitter_xoffmode : 1;
166: };
167:
168: /*
169: *Port Information Table
170: */
171: struct PORT_TABLE {
172: int intrpt_num; /* 8250 interrupt no. 0C... */
173: unsigned base_8250; /* base i/o address of 8250 */
174: int p_8250[ 5 ]; /* previous values for 8250 registers:
175: 0 = line control register,
176: 1 = modem control register, bits 5-7 are FCR
177: 2 = interrupt enable register,
178: 3 = divisor latch LSB,
179: 4 = divisor latch MSB
180: */
181: void ( GF_FAR * p_vector )( void ); /* previous value for interrupt vector */
182: unsigned int line_stat; /* Cumulative line status */
183: unsigned int modem_stat; /* Cumulative modem status */
184: unsigned int wide_stat; /* Current wide-track status */
185:
186: int irq_8259; /* Interrupt # in 8259 (com0 = 4) */
187: int saved_8259_bits; /* Previous value of irq_8259 bit */
188: unsigned int port_8259; /* I/O Address of 8259 */
189:
190: unsigned int rx_cell; /* size of rx cell ( for wide-track ) */
191: unsigned int rx_size; /* size of receive buffer */
192: unsigned int rx_count; /* number of bytes in receive buffer */
193: unsigned int rx_head; /* offset of receive buffer head */
194: unsigned int rx_tail; /* offset of receive buffer tail */
195: #ifdef VGFD
196: char GF_FAR *rx_buffer; /* always points to base of rx buffer */
197: #else
198: char GF_DLL_FAR *rx_buffer; /* always points to base of rx buffer */
199: #endif
200: unsigned int tx_cell; /* size of tx cell (always 1) */
201: unsigned int tx_size; /* size of transmit buffer */
202: unsigned int tx_count; /* number of bytes in transmit buffer */
203: unsigned int tx_head; /* offset of transmit buffer head */
204: unsigned int tx_tail; /* offset of transmit buffer tail */
205:
206: #ifdef VGFD
207: char GF_FAR *tx_buffer; /* points to base of transmit buffer */
208: #else
209: char GF_DLL_FAR *tx_buffer; /* points to base of transmit buffer */
210: #endif
211: struct AS_STBITS chst_bits; /* port status bits */
212: struct AS_MODEBITS chmode_bits; /* port mode bits IN,OUT,XON,etc */
213:
214: unsigned int rts_lowater; /* when to assert RTS */
215: unsigned int rts_hiwater; /* when to de-assert RTS */
216: unsigned int rx_accum; /* counter for received characters */
217: unsigned int rx_lowater; /* When to send an XON */
218: unsigned int rx_hiwater; /* When to send an XOFF */
219: int stop_xmt; /* The incoming XOFF character */
220: int start_xmt; /* The incoming XON character */
221: int stop_rem_xmt; /* The outbound XOFF character */
222: int start_rem_xmt; /* The outbound XON character */
223:
224: int break_delay; /* The number of ticks in a break */
225:
226: int aswmodem; /* Polled mode timeout values */
227: int aswtime;
228: int asrtime;
229:
230: unsigned int chkchr[ 3 ]; /* Each character occupies the low
231: 8 bits, the high order bit (bit 15)
232: is set to 1 if rx-interrupts are to
233: look at this character, bit 14 is set
234: by interrupt routines and is to be
235: checked by asirchk(). Bit 8 & 9
236: determine the mode or option of what
237: to do */
238: unsigned int mscount; /* Modem status interrupt counter */
239: unsigned int lscount; /* Line status interrupt counter */
240: unsigned int txcount; /* Transmit interrupt counter */
241: unsigned int rxcount; /* Receive interrupt counter */
242: int out12_mask; /* The OUT1/OUT2 mask */
243: int ls_ms_ier; /* The interrupt enable initial mask */
244: PORT GF_DLL_FAR *generic_driver; /* Pointer to Level 2 structure */
245:
246: #ifndef VGFD
247: unsigned int tx_16550_limit; /* FIFO buffer limit for 16550 */
248: #endif
249:
250: #ifdef VGFD
251: long reserved1; /* for VGFD */
252: long reserved2; /* for VGFD */
253: #endif
254:
255: };
256:
257: /*************************************************************************
258: * ARRAYS OF FUNDAMENTAL THINGS THAT MUST BE KNOWN AT INTERRUPT TIME. *
259: * *
260: * 1. Pointer to main parameter structure for the port. *
261: * 2. I/O Address of status reg if shared-int hardware, zero if not. *
262: * 3. If shared hardware, this is bitmask to compare for the port. *
263: * Note: when the int. reads the status port it searches for a *
264: * match against an entry in this column in the array. *
265: * 4. Value to be XOR'ed with value read from shared port, this will *
266: * cover the case where bits in the board's interrupt I.D. register *
267: * are active when 0 instead of active when 1. *
268: ************************************************************************/
269:
270: enum GSCI_HANDLER_TYPE { GSCI_STANDARD_HANDLER = 0,
271: GSCI_SHARED_IRQ_HANDLER = 1,
272: GSCI_USER_INSTALLED_HANDLER = 2,
273: GSCI_DEFUNCT_HANDLER = 3 };
274:
275: struct PORTINFO {
276: #ifdef VGFD
277: struct PORT_TABLE GF_FAR *ptb;
278: #else
279: struct PORT_TABLE GF_DLL_FAR *ptb;
280: #endif
281: unsigned as_shport;
282: unsigned as_shbits;
283: unsigned as_mask;
284: unsigned as_xorv;
285: enum GSCI_HANDLER_TYPE handler_type;
286: #ifdef VGFD
287: unsigned task_handle_port; /* VGFD task handle */
288: int vm_id_port; /* VGFD VM id */
289: long reserved2; /* for VGFD */
290: #endif
291: };
292:
293: #ifdef __cplusplus
294: extern "C" {
295: #endif
296:
297: #ifdef VGFD
298: extern struct PORTINFO GF_FAR *as_chnl;
299: #else
300: extern struct PORTINFO as_chnl[ MAX_PORT ];
301: #endif
302: extern int _aserror, _asoprt, _asmask, _asxorv, _comvers;
303:
304: #ifdef __cplusplus
305: }
306: #endif
307:
308:
309: #define isalert( p ) _iswhat( ( p ), 1 ) /* Tag: GSCI public */
310: #define isrxempty( p ) _iswhat( ( p ), 2 ) /* Tag: GSCI public */
311: #define isrxfull( p ) _iswhat( ( p ), 3 ) /* Tag: GSCI public */
312: #define isrxovflow( p ) _iswhat( ( p ), 4 ) /* Tag: GSCI public */
313: #define istxempty( p ) _iswhat( ( p ), 5 ) /* Tag: GSCI public */
314: #define istxfull( p ) _iswhat( ( p ), 6 ) /* Tag: GSCI public */
315: #define islinerr( p ) _iswhat( ( p ), 7 ) /* Tag: GSCI public */
316: #define ismodemerr( p ) _iswhat( ( p ), 8 ) /* Tag: GSCI public */
317: #define istxintrunning( p ) _iswhat( ( p ), 9 ) /* Tag: GSCI public */
318: #define isrxintrunning( p ) _iswhat( ( p ), 10 ) /* Tag: GSCI public */
319: #define AlertFlagStopsRXAndTX( p ) _iswhat( ( p ), 11 ) /* Tag: GSCI public */
320: #define CTSLowHoldsTXInterrupts( p ) _iswhat( ( p ), 12 ) /* Tag: GSCI public */
321: #define DSRLowDiscardsRXData( p ) _iswhat( ( p ), 13 ) /* Tag: GSCI public */
322: #define CDLowDiscardsRXData( p ) _iswhat( ( p ), 14 ) /* Tag: GSCI public */
323: #define ModemStatusChangesSetAlert( p ) _iswhat( ( p ), 15 ) /* Tag: GSCI public */
324: #define LineStatusErrorsSetAlert( p ) _iswhat( ( p ), 16 ) /* Tag: GSCI public */
325:
326: #define isoverrun( p, o ) _isstat( ( p ), o, 1 ) /* Tag: GSCI public */
327: #define isparityerr( p, o ) _isstat( ( p ), o, 2 ) /* Tag: GSCI public */
328: #define isframerr( p, o ) _isstat( ( p ), o, 3 ) /* Tag: GSCI public */
329: #define isbreak( p, o ) _isstat( ( p ), o, 4 ) /* Tag: GSCI public */
330: #define iscts( p, o ) _isstat( ( p ), o, 5 ) /* Tag: GSCI public */
331: #define isdsr( p, o ) _isstat( ( p ), o, 6 ) /* Tag: GSCI public */
332: #define iscd( p, o ) _isstat( ( p ), o, 7 ) /* Tag: GSCI public */
333: #define isri( p, o ) _isstat( ( p ), o, 8 ) /* Tag: GSCI public */
334: #define ischgcts( p, o ) _isstat( ( p ), o, 9 ) /* Tag: GSCI public */
335: #define ischgdsr( p, o ) _isstat( ( p ), o, 10 ) /* Tag: GSCI public */
336: #define ischgcd( p, o ) _isstat( ( p ), o, 11 ) /* Tag: GSCI public */
337: #define ischgri( p, o ) _isstat( ( p ), o, 12 ) /* Tag: GSCI public */
338:
339: #define isncts( p ) _iswhat( ( p ), 17 ) /* Tag: GSCI public */
340: #define isndsr( p ) _iswhat( ( p ), 18 ) /* Tag: GSCI public */
341: #define isncd( p ) _iswhat( ( p ), 19 ) /* Tag: GSCI public */
342: #define isring( p ) _iswhat( ( p ), 20 ) /* Tag: Defunct Public */
343: #define isxmrxing( p ) _iswhat( ( p ), 21 ) /* Tag: GSCI public */
344: #define isxoffblocked( p ) _iswhat( ( p ), 22 ) /* Tag: GSCI public */
345: #define isctsblocked( p ) _iswhat( ( p ), 23 ) /* Tag: GSCI public */
346: #define is16550( p ) _iswhat( ( p ), 24 ) /* Tag: GSCI public */
347: /*
348: * The old Hayes Modem function names
349: */
350: #define hmreset HMReset /* Tag: Modem Defunct */
351: #define hmregset HMSetRegister /* Tag: Modem Defunct */
352: #define hmringnum HMSetAutoAnswerRingCount /* Tag: Modem Defunct */
353: #define hmringcnt HMGetIncomingRingCount /* Tag: Modem Defunct */
354: #define hmescset HMSetEscapeCode /* Tag: Modem Defunct */
355: #define hms3set HMSetEndOfLineCharacter /* Tag: Modem Defunct */
356: #define hms4set HMSetLineFeedCharacter /* Tag: Modem Defunct */
357: #define hms5set HMSetBackspaceCharacter /* Tag: Modem Defunct */
358: #define hmdialset HMSetWaitForDialToneTime /* Tag: Modem Defunct */
359: #define hmcarrset HMSetWaitTimeForCarrier /* Tag: Modem Defunct */
360: #define hmcomaset HMSetPauseTimeForComma /* Tag: Modem Defunct */
361: #define hmcarrec HMSetCDResponseTime /* Tag: Modem Defunct */
362: #define hmcarrdisc HMSetCarrierDisconnectTime /* Tag: Modem Defunct */
363: #define hmdialrate HMSetTouchToneDuration /* Tag: Modem Defunct */
364: #define hmescguard HMSetEscapeCodeGuardTime /* Tag: Modem Defunct */
365: #define hmuart HMGetUARTStatus /* Tag: Modem Defunct */
366: #define hmoption HMGetOptionRegister /* Tag: Modem Defunct */
367: #define hmflags HMGetFlagRegister /* Tag: Modem Defunct */
368: #define hmonline HMGoOnline /* Tag: Modem Defunct */
369: #define hmdialmode HMSetDialingMethod /* Tag: Modem Defunct */
370: #define hmdial HMDial /* Tag: Modem Defunct */
371: #define hmrepeat HMRepeatLastCommand /* Tag: Modem Defunct */
372: #define hmreverse HMDialInAnswerMode /* Tag: Modem Defunct */
373: #define hmanswer HMAnswer /* Tag: Modem Defunct */
374: #define hmcarron HMSetCarrier /* Tag: Modem Defunct */
375: #define hmecho HMSetEchoMode /* Tag: Modem Defunct */
376: #define hmduplex HMSetFullDuplexMode /* Tag: Modem Defunct */
377: #define hmhook HMSetHookSwitch /* Tag: Modem Defunct */
378: #define hmspeak HMSetSpeaker /* Tag: Modem Defunct */
379: #define hmquiet HMReturnNoResultCodes /* Tag: Modem Defunct */
380: #define hmextend HMSelectExtendedResultCodes /* Tag: Modem Defunct */
381: #define hmverbose HMSetVerboseMode /* Tag: Modem Defunct */
382: #define hmstr HMSendString /* Tag: Modem Defunct */
383: #define hmregread HMGetRegister /* Tag: Modem Defunct */
384:
385:
386: #ifdef __cplusplus
387: extern "C" {
388: #endif
389:
390:
391: int GF_CONV asiflow( int port_number,
392: int low_water,
393: int hi_water,
394: int rts_on_off,
395: int cts_on_off );
396: struct PORT_TABLE * GF_CONV _aschkcnl( int port_number);
397: int GF_CONV asdtr( int port_number, int on_off );
398: int GF_CONV asgetc( int port_number );
399: int GF_CONV asibreak( int port_number, int length_in_ticks );
400: unsigned int GF_CONV asibstat( int port_number );
401: int GF_CONV asiclear( int port_number, int option );
402: int GF_CONV asidiag( int port_number, int on_off );
403: unsigned int GF_CONV asierst( int port_number );
404: int GF_CONV asifirst( int port_number,
405: unsigned int operating_mode,
406: unsigned int rx_buffer_length,
407: unsigned int tx_buffer_length );
408: unsigned int GF_CONV asigetb( int port_number,
409: char GF_DLL_FAR *buffer,
410: unsigned int length );
411: unsigned int GF_CONV asigetb_timed( int port_number,
412: char GF_DLL_FAR *buffer,
413: unsigned int length,
414: int ticks );
415: int GF_CONV asigetc( int port_number );
416: int GF_CONV asigetc_timed( int port_number, int ticks );
417: int GF_CONV asigetparms( int port_number,
418: long GF_DLL_FAR *baud_rate,
419: int GF_DLL_FAR *word_length,
420: int GF_DLL_FAR *parity,
421: int GF_DLL_FAR *stop_bits,
422: int GF_DLL_FAR *dtr,
423: int GF_DLL_FAR *rts );
424: unsigned int GF_CONV asigets( int port_number,
425: char GF_DLL_FAR *buffer,
426: unsigned int maximum_length,
427: int terminating_character );
428: unsigned int GF_CONV asigets_timed( int port_number,
429: char GF_DLL_FAR *buffer,
430: unsigned int maximum_length,
431: int terminating_character,
432: int ticks );
433: int GF_CONV asihold( int port_number, unsigned int mode );
434: int GF_CONV asicheck( int port_number, int condition,
435: int on_off );
436: int GF_CONV asiinit( int port_number,
437: long baud_rate,
438: int parity,
439: int stop_bits,
440: int word_length );
441: unsigned int GF_CONV asilrst( int port_number );
442: unsigned int GF_CONV asilstat( int port_number,
443: int immediate_or_cumulative);
444: unsigned int GF_CONV asimrst( int port_number );
445: unsigned int GF_CONV asimstat( int port_number,
446: int immediate_or_cumulative );
447: int GF_CONV asiopen( int port_number,
448: unsigned int mode,
449: unsigned int rx_buffer_length,
450: unsigned int tx_buffer_length,
451: long baud_rate,
452: int parity,
453: int stop_bits,
454: int word_length,
455: int dtr,
456: int rts );
457: int GF_CONV asipeek( int port_number );
458: unsigned int GF_CONV asiputb( int port_number, char * buffer,
459: unsigned int length );
460: int GF_CONV asiputc( int port_number, int character );
461: unsigned int GF_CONV asiputs( int port_number,
462: char GF_DLL_FAR *output_string,
463: int termination_sequence );
464: int GF_CONV asiquit( int port_number );
465: int GF_CONV asirchk( int port_number,
466: int code_number,
467: unsigned int code_to_check,
468: int operation );
469: int GF_CONV asireset( int port_number );
470: int GF_CONV asiresume( int port_number, unsigned int mode );
471:
472:
473: int GF_CONV asistart( int port_number, unsigned int option );
474: unsigned int GF_CONV asiwgetb( int port_number,
475: char GF_DLL_FAR *character_buffer,
476: unsigned int maximum_length,
477: char GF_DLL_FAR *status_buffer );
478: unsigned int GF_CONV asiwgetb_timed( int port_number,
479: char GF_DLL_FAR *character_buffer,
480: unsigned int maximum_length,
481: char GF_DLL_FAR *status_buffer,
482: int ticks );
483: int GF_CONV asiwgetc( int port_number,
484: char GF_DLL_FAR *wide_track_buf );
485: int GF_CONV asiwgetc_timed( int port_number,
486: char GF_DLL_FAR *wide_track_buffer,
487: int ticks );
488: unsigned int GF_CONV asiwgets( int port_number,
489: char GF_DLL_FAR *destination_string,
490: unsigned int maximum_length,
491: int terminating_character,
492: char GF_DLL_FAR *status_buffer );
493: unsigned int GF_CONV asiwgets_timed( int port_number,
494: char GF_DLL_FAR *destination_string,
495: unsigned int maximum_length,
496: int terminating_character,
497: char GF_DLL_FAR *status_buffer,
498: int ticks );
499: int GF_CONV asiwpeek( int port_number,
500: char GF_DLL_FAR *status_buffer );
501: int GF_CONV asixoff( int port_number );
502: int GF_CONV asixon( int port_number,
503: int low_water_mark,
504: int high_water_mark,
505: int xon_character,
506: int xoff_character );
507: unsigned int GF_CONV asixrst( int port_number );
508: int GF_CONV asputc( int port_number, int character );
509: unsigned int GF_CONV asputs( int port_number,
510: char GF_DLL_FAR *output_string,
511: int termination_sequence );
512: int GF_CONV asrts( int port_number, int on_or_off );
513: unsigned int GF_CONV getrxcnt( int port_number );
514: unsigned int GF_CONV gettxfree( int port_number );
515: int GF_CONV isrchk( int port_number, int code_number );
516: int GF_CONV _isstat( int port_number,
517: int what_to_check,
518: int what_to_do );
519: int GF_CONV isxmrxcnt( int port_number, unsigned int count );
520: int GF_CONV _iswhat( int port_number, int what_to_check );
521: int GF_CONV ClearTXWaitConditions( int port );
522: #if defined( VGFD )
523: void GF_CONV UseInterruptCounters( int engage );
524: #else
525: void GF_CDECL UseInterruptCounters( int engage );
526: void GF_CONV GreenleafSet16550UseTXFifos( int port, int control );
527: #endif
528: int GF_CONV GreenleafSet16550TriggerLevel( TRIGGER_LEVEL level );
529: int GF_CONV GreenleafUseRXXonXoff( int port,
530: int low_water,
531: int hi_water,
532: int xon,
533: int xoff );
534: int GF_CONV GreenleafUseTXXonXoff( int port, int xon, int xoff );
535: int GF_CONV GreenleafUseXonXoff( int port,
536: int low_water,
537: int hi_water,
538: int xon,
539: int xoff );
540: int GF_CONV GreenleafDisableRXXonXoff( int port );
541: int GF_CONV GreenleafDisableTXXonXoff( int port );
542: int GF_CONV GreenleafDisableXonXoff( int port );
543: int GF_CONV SetWidetrackMode( int port, int control );
544: int GF_CONV GreenleafSetPortHardware( int port,
545: int irq,
546: int address );
547: int GF_CONV GreenleafGetPortHardware( int port,
548: int GF_DLL_FAR *irq,
549: int GF_DLL_FAR *address );
550: int GF_CONV GreenleafGetSavedPortParameters(
551: int port,
552: long GF_DLL_FAR *baud_rate,
553: char GF_DLL_FAR *parity,
554: int GF_DLL_FAR *word_length,
555: int GF_DLL_FAR *stop_bits,
556: int GF_DLL_FAR *dtr,
557: int GF_DLL_FAR *rts,
558: int GF_DLL_FAR *trigger_level );
559: int GF_CONV GreenleafSetSavedPortParameters( int port,
560: long baud_rate,
561: char parity,
562: int word_length,
563: int stop_bits,
564: int dtr,
565: int rts,
566: int trigger_level );
567:
568: #ifdef __cplusplus
569: }
570: #endif
571:
572: #ifdef VGFD
573: #include "sacommon.h"
574: #endif
575:
576: #define GREENLEAF_HANDLE_TO_PORT( h ) ( as_chnl[ h ].ptb )->generic_driver /* Tag: GSCI public */
577:
578: #endif /* #ifndef GSCI_DOT_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.