home *** CD-ROM | disk | FTP | other *** search
- -> Query_Serial.e - Try to open the serial device and if unsuccessful,
- -> return the name of the owner.
-
- OPT PREPROCESS -> E-Note: we are using the NAME macros
-
- -> E-Note: E does not (as of v3.1a) support Resources in the conventional way
- MODULE 'amigalib/io',
- 'amigalib/ports',
- 'other/misc',
- 'devices/serial',
- 'dos/dos',
- 'exec/io',
- 'resources/misc'
-
- ENUM ERR_NONE, ERR_CRIO, ERR_PORT
-
- CONST UNIT_NUMBER=0
-
- DEF serialMP=NIL, serialIO=NIL:PTR TO ioextser
-
- PROC main() HANDLE
- DEF status, -> Return value of SDCMD_QUERY
- user -> Name of serial port owner if not us
-
- IF NIL=(serialMP:=createPort(NIL, NIL)) THEN Raise(ERR_PORT)
- IF NIL=(serialIO:=createExtIO(serialMP, SIZEOF ioextser)) THEN Raise(ERR_CRIO)
- IF OpenDevice(SERIALNAME, UNIT_NUMBER, serialIO, 0)
- WriteF('\n\s did not open', SERIALNAME)
-
- miscbase:=OpenResource(MISCNAME)
-
- -> Find out who has the serial device
- IF NIL=(user:=allocMiscResource(MR_SERIALPORT, 'Us'))
- WriteF('\n')
- freeMiscResource(MR_SERIALPORT)
- ELSE
- WriteF(' because \s owns it\n\n', user)
- ENDIF
- ELSE
- serialIO.iostd.command:=SDCMD_QUERY
- SendIO(serialIO) -> Execute query
-
- status:=serialIO.status -> Store returned status
-
- WriteF('\t The serial port status is \h\n', status)
-
- AbortIO(serialIO)
- WaitIO(serialIO)
-
- CloseDevice(serialIO)
- ENDIF
-
- EXCEPT DO
- IF serialIO THEN deleteExtIO(serialIO)
- IF serialMP THEN deletePort(serialMP)
- SELECT exception
- CASE ERR_CRIO; WriteF('Can''t create IO request\n')
- CASE ERR_PORT; WriteF('Can''t create message port\n')
- ENDSELECT
- ENDPROC IF exception<>ERR_NONE THEN RETURN_FAIL ELSE RETURN_OK
-