serial.device/SDCMD_SETPARAMS
[Contents]
[Index]
[Help]
[Retrace]
[Browse <]
[Browse >]
NAME
SetParams -- change parameters for the serial port
FUNCTION
This command allows the caller to change parameters for the
serial device. Except for xON-xOFF enable/disable, it will
reject a setparams call if any reads or writes are active
or pending.
Note specifically:
1. Valid input for io_Baud is between 112 and 292000 baud inclusive;
asynchronous i/o above 32KB (especially on a busy system) may
be ambitious.
2. The EOFMODE and QUEUEDBRK bits of io_SerFlags can be set/reset
in the io_Rqst block without a call to SetParams. The SHARED
and 7WIRE bits of io_SerFlags can be used in OpenDevice calls.
ALL OTHER PARAMETERS CAN ONLY BE CHANGED BY THE SetParams
COMMAND.
3. RBufLen must be at least 64. The buffer may be any multiple of
64 bytes.
4. If not used, io_ExtFlags MUST be set to zero.
5. xON-xOFF is by default enabled. The XDISABLED bit is the only
parameter that can be changed via a SetParams call while the
device is active. Note that this will return the value
SerErr_DevBusy in the io_Error field.
xON/xOFF handshaking is inappropriate for certain binary transfer
protocalls, such as Xmodem. The binary data might contain the
xON (ASCII 17) and xOFF (ASCII 19) characters.
6. If trying to run MIDI, you should set the RAD_BOOGIE bit of
io_SerFlags to eliminate unneeded overhead. Specifically, this skips
checks for parity, x-OFF handling, character lengths other than
8 bits, and testing for a break signal. Setting RAD_BOOGIE will
also set the XDISABLED bit.
Note that writing data (that's already in MIDI format) at MIDI rates
is easily accomplished. Using this driver alone for MIDI reads may,
however, may not be reliable, due to MIDI timestamping requirements,
and possibility of overruns in a busy multitasking and/or display
intensive environment.
7. If you select mark or space parity (see io_ExtFlags in serial.h),
this will cause the SERB_PARTY_ON bit to be set, and the setting
of SERB_PARTY_ODD to be ignored.
8. For best results, set the RAD_BOOGIE flag whenever possible. See
#6 for details.
9. Note that at this time parity is *not* calculated for the xON-xOFF
characters. If you have a system that is picky about the parity of
these, you must set your own xON-xOFF characters in io_CtlChar.
10. 7WIRE (CTS/RTS) handshake is bi-directional. The external side
is expected to drop CTS several character times before the external
buffer is full. The Amiga will drop RTS several character times
before the Amiga's buffer is full.
IO REQUEST
io_Message mn_ReplyPort initialized
io_Device preset by OpenDevice
io_Unit preset by OpenDevice
io_Command SDCMD_SETPARAMS (0x0B)
NOTE that the following fields are filled in by Open
to reflect the serial device's current configuration.
io_CtlChar a longword containing byte values for the
xON,xOFF,INQ,ACK fields (respectively)
(INQ/ACK not used at this time)
io_RBufLen length in bytes of input buffer
NOTE that any change in buffer size causes the
current buffer to be deallocated and a new,
correctly sized one to be allocated. Thusly,
the CONTENTS OF THE OLD BUFFER ARE LOST.
io_ExtFlags additional serial flags (bitdefs in devices/serial.h)
mark & space parity may be specified here.
io_Baud baud rate for reads AND writes. (See 1 above)
io_BrkTime duration of break signal in MICROseconds
io_TermArray ASCII descending-ordered 8-byte array of
termination characters. If less than 8 chars
used, fill out array w/lowest valid value.
Terminators are checked only if EOFMODE bit of
io_Serflags is set. (e.g. x512F040303030303 )
io_ReadLen number of bits in read word (1-8) not including parity
io_WriteLen number of bits in write word (1-8) " " "
io_StopBits number of stop bits (0, 1 or 2)
io_SerFlags see devices/serial.h for bit equates, NOTE that x00
yields exclusive access, xON/OFF-enabled, no
parity checking, 3-wire protocol and TermArray
inactive.
RESULTS
Error -- if the SetParams succeded, then Error will be null.
If the SetParams failed, then the Error will be non-zero.
SEE ALSO
exec/OpenDevice()
[Back to Amiga Developer Docs]