| /* |
| ** InterslipLib - Routines to talk to InterSLIP. Version 1.1, 31-Oct-1995. |
| ** |
| ** |
| ** (c) Jack Jansen, CWI, 1995 <jack@cwi.nl> |
| */ |
| |
| #include <Devices.h> |
| |
| #include "InterslipLib.h" |
| |
| static CntrlParam iopb; |
| static short refnum = -1; |
| |
| OSErr is_open() |
| { |
| if ( refnum >= 0 ) return 0; |
| return OpenDriver("\p.InterSLIP", &refnum); |
| } |
| |
| OSErr is_connect() |
| { |
| iopb.ioCRefNum = refnum; |
| iopb.ioVRefNum = refnum; |
| iopb.ioCompletion = (UniversalProcPtr) 0; |
| iopb.csCode = 2; |
| return PBControlImmed((ParmBlkPtr)&iopb); |
| } |
| |
| OSErr is_disconnect() |
| { |
| iopb.ioCRefNum = refnum; |
| iopb.ioVRefNum = refnum; |
| iopb.ioCompletion = (UniversalProcPtr) 0; |
| iopb.csCode = 3; |
| return PBControlImmed((ParmBlkPtr)&iopb); |
| } |
| |
| OSErr is_status(long *status, long *msgseqnum, StringPtr *msg) |
| { |
| long *csp; |
| OSErr err; |
| |
| iopb.ioCRefNum = refnum; |
| iopb.ioVRefNum = refnum; |
| iopb.ioCompletion = (UniversalProcPtr) 0; |
| iopb.csCode = 4; |
| if( err = PBControlImmed((ParmBlkPtr)&iopb) ) |
| return err; |
| csp = (long *)&iopb.csParam; |
| *status = csp[0]; |
| *msgseqnum = csp[1]; |
| *msg = (unsigned char *)csp[2]; |
| return 0; |
| } |
| |
| OSErr is_getconfig(long *baudrate, long *flags, |
| Str255 idrvnam, Str255 odrvnam, Str255 cfgnam) |
| { |
| long *csp; |
| OSErr err; |
| |
| iopb.ioCRefNum = refnum; |
| iopb.ioVRefNum = refnum; |
| iopb.ioCompletion = (UniversalProcPtr) 0; |
| iopb.csCode = 6; |
| csp = (long *)&iopb.csParam; |
| csp[2] = (long)idrvnam; |
| csp[3] = (long)odrvnam; |
| csp[4] = (long)cfgnam; |
| if( err = PBControlImmed((ParmBlkPtr)&iopb) ) |
| return err; |
| *baudrate = csp[0]; |
| *flags = csp[1]; |
| return 0; |
| } |
| |
| OSErr is_setconfig(long baudrate, long flags, |
| Str255 idrvnam, Str255 odrvnam, Str255 cfgnam) |
| { |
| long *csp; |
| OSErr err; |
| |
| iopb.ioCRefNum = refnum; |
| iopb.ioVRefNum = refnum; |
| iopb.ioCompletion = (UniversalProcPtr) 0; |
| iopb.csCode = 7; |
| csp = (long *)&iopb.csParam; |
| csp[0] = baudrate; |
| csp[1] = flags; |
| csp[2] = (long)idrvnam; |
| csp[3] = (long)odrvnam; |
| csp[4] = (long)cfgnam; |
| return PBControlImmed((ParmBlkPtr)&iopb); |
| } |
| |
| |