Session and connection¶
These constants identify the parsed door-information format, active communications implementation, flow-control policy, paging policy, disabled automatic behavior, and BBS event status. Fields which report a selected mode are normally read after initialization; configuration fields must be set before initialization unless their individual reference permits a run-time change.
Door-information formats¶
od_control.od_info_type is set to one
of the following values after OpenDoors selects and parses a drop file. Test the
constant before using a field available only from a particular format. Do not
assign a value merely to make format-specific caller fields appear valid.
DORINFO1¶
The selected file is a DORINFO?.DEF record in the commonly implemented
RBBS/QuickBBS family. The question mark represents the node number. OpenDoors
uses od_node and its search rules to find
the appropriate numbered file.
EXITINFO¶
The selected data is the normal QuickBBS 2.6-era EXITINFO.BBS representation,
used with its related DORINFO?.DEF information. Only fields actually present
in that representation are meaningful.
RA1EXITINFO¶
The selected file is the extended RemoteAccess 1.x EXITINFO.BBS format.
OpenDoors exposes its additional caller, menu, event, and EMSI data through the
corresponding normalized control fields.
CHAINTXT¶
The selected file is CHAIN.TXT, traditionally produced by WWIV-family
systems. It supplies a different subset and textual representation than
DOOR.SYS; check field availability instead of assuming a complete caller
record.
SFDOORSDAT¶
The selected file is SFDOORS.DAT, used by Spitfire and compatible systems.
Node and caller information are normalized where supplied.
CALLINFO¶
The selected file is CALLINFO.BBS, associated with older Wildcat! systems.
This format identifier does not select the Wildcat local personality.
DOORSYS_GAP¶
The selected file is a GAP/PCBoard-style DOOR.SYS. Several BBS packages emit
compatible line-oriented records. OpenDoors parses the known layout rather than
identifying the exact BBS product.
DOORSYS_DRWY¶
The selected file is the DoorWay-style DOOR.SYS representation. Despite the
shared filename, it has different field semantics from the GAP/PCBoard layout.
QBBS275EXITINFO¶
The selected file is a QuickBBS 2.75-or-later EXITINFO.BBS. This constant
distinguishes its extended representation from EXITINFO and the RemoteAccess
formats.
CUSTOM¶
The selected file was parsed using the application's custom door-information definition configured through the built-in configuration component. The values available are exactly those mapped by that definition. See Custom door-information formats.
DOORSYS_WILDCAT¶
The selected file is a Wildcat! 3.x-style DOOR.SYS. The identifier concerns
the drop-file layout and is independent of the active personality or terminal
type.
RA2EXITINFO¶
The selected file is a RemoteAccess 2.x EXITINFO.BBS. Its version-specific
fields are normalized into the current user_*, event_*, and related
members.
TRIBBSSYS¶
The selected file is TRIBBS.SYS. OpenDoors reads the supported TriBBS session
information from this format.
DOOR32SYS¶
The selected file is DOOR32.SYS, the modern line-oriented handoff which can
describe local operation or an inherited socket/handle session. Confirm
od_use_socket and
od_open_handle rather than treating
the connection number as a DOS COM port.
NO_DOOR_FILE¶
No door-information file was selected. This is the expected result in an
explicit local or application-supplied session, but normally indicates a setup
problem when the BBS was meant to provide caller data. Inspect info_path, the
working directory, command-line options, and DIS_INFOFILE.
Communication methods¶
od_control.od_com_method selects or
reports the I/O implementation. Availability is platform dependent.
COM_FOSSIL¶
Use a DOS FOSSIL driver. The driver owns the serial hardware interface and OpenDoors calls its interrupt API for input, output, carrier, and line setup. On DOS32, block operations use a DPMI conventional-memory transfer buffer when possible and fall back to byte operations when necessary; application buffers are not required to reside below one megabyte.
The FOSSIL driver must already be installed by the BBS or system setup. Selecting the constant does not load one.
COM_INTERNAL¶
Use OpenDoors' direct internal UART implementation. This DOS and DOS32 path requires correct port address, IRQ, buffer, FIFO, and flow-control settings. On DOS32, OpenDoors installs a protected-mode interrupt handler through the DOS extender. This is not a synonym for an operating system serial API.
COM_WIN32¶
Use the Windows serial communications implementation. The active object is a
Windows communications handle. OpenDoors either opens the selected COMn
device itself or uses od_open_handle when the launcher supplies an existing
handle. It closes handles it opens itself; it does not close a caller-supplied
handle when the communications object is closed.
COM_DOOR32¶
Use the Windows DOOR32.DLL interface. OpenDoors loads that DLL, resolves its
initialize, shutdown, read, write, available-event, and offline-event entry
points, and uses those callbacks for communications. This is distinct from the
socket method selected by od_use_socket.
COM_SOCKET¶
Use a connected socket as the remote byte stream. Carrier state follows socket
connection state. Physical modem settings such as IRQ and FIFO trigger do not
apply. For compatibility with disconnect code written for modems,
od_set_dtr(FALSE) closes the socket; raising DTR is
unsupported for this method.
COM_STDIO¶
Use standard input and standard output as the remote byte stream. This is useful for launchers which connect a session through pipes or a terminal-like process interface. The local OpenDoors presentation and the remote standard streams remain conceptually separate.
Flow-control methods¶
od_control.od_com_flow_control
uses one of these values when the active serial implementation supports the
choice. Socket, standard-stream, and local sessions do not use UART flow
control.
COM_DEFAULT_FLOW¶
Do not override the communication implementation's default flow-control policy. The DOS FOSSIL and internal-UART implementations choose RTS/CTS as their default. The Win32 serial implementation leaves the existing DCB flow-control settings unchanged when the default is selected.
COM_RTSCTS_FLOW¶
Request RTS/CTS hardware flow control. Both the UART/driver and modem cabling must support it. This does not enable software XON/XOFF processing.
COM_NO_FLOW¶
Disable serial flow control. At high speeds, a receiver which cannot keep up may lose bytes. Use this only when the surrounding serial configuration requires it.
Paging policy¶
od_control.od_okaytopage determines
whether od_page() may alert the local operator.
PAGE_DISABLE¶
Paging is unavailable regardless of the configured start and end times. The door can use this temporarily when the sysop must not be disturbed.
PAGE_ENABLE¶
Paging is available regardless of configured hours. A caller can still cancel
the page by submitting an empty reason, and the page ends normally if the sysop
does not answer within od_page_len seconds.
PAGE_USE_HOURS¶
OpenDoors compares the current local time with
od_pagestartmin and
od_pageendmin, expressed as minutes
after midnight. This is the normal tri-state “maybe” policy.
Disabled automatic behavior¶
Combine these bits in
od_control.od_disable. A set bit
turns off one OpenDoors behavior. Preserve unrelated bits when changing the
mask:
od_control.od_disable |= DIS_NAME_PROMPT;
DIS_INFOFILE¶
Do not read or rewrite a door-information file. The application or command line
must supply all connection and caller values needed by the session. This is
stronger than merely setting info_path to an empty string.
DIS_CARRIERDETECT¶
Do not automatically terminate when the active transport reports loss of
carrier/connection. od_carrier() can still report the
state, allowing the application to implement its own policy.
Use this carefully: continuing to write after a disconnected socket or modem does not restore the caller.
DIS_TIMEOUT¶
Disable automatic termination when the caller's available BBS/door time expires. It does not disable finite timeouts explicitly passed to input functions and does not disable inactivity handling.
DIS_LOCAL_OVERRIDE¶
Prevent a zero BPS value read from door information from overriding an explicitly configured locked speed and forcing local mode. This is intended for setups where zero has a format-specific meaning and the application has a more reliable connection setting.
DIS_BPS_SETTING¶
Prevent OpenDoors from passing the selected BPS rate to the communications implementation when it opens the connection. The BBS, driver, or existing device configuration remains responsible for the rate. Historically this was used to stop OpenDoors from changing a FOSSIL driver's locked rate; in the current Win32 serial path it likewise leaves the DCB baud setting unchanged. This bit does not select a different communication method.
DIS_LOCAL_INPUT¶
Prevent ordinary local keyboard input from entering the door's common input queue while leaving recognized local operator function keys available. Remote input continues normally.
DIS_SYSOP_KEYS¶
Disable local operator function keys as well as local door input. Use this when
the application or host owns the complete local keyboard. It is broader than
DIS_LOCAL_INPUT.
DIS_DTR_DISABLE¶
On Win32, disable the shutdown procedure which sends
od_disable_dtr to prevent a
modem from responding to a later DTR transition. That procedure is considered
only for a serial port OpenDoors opened itself while carrier remains present.
It is skipped for caller-supplied handles, Door32, sockets, and local sessions.
DIS_NAME_PROMPT¶
Do not prompt for the caller's name when OpenDoors automatically enters local mode without user information. The application must tolerate or supply the remaining default name.
BBS event status¶
od_control.event_status uses these
values when the selected door-information format supplies a pending event.
ES_DELETED¶
Value 0, the record-format status named “deleted.” The current library copies
this value from compatible EXITINFO.BBS records and writes it back. OpenDoors
does not otherwise distinguish it from any other status which is not
ES_ENABLED.
ES_ENABLED¶
Value 1. This is the only status for which OpenDoors treats the accompanying event information as valid. The RemoteAccess local personality displays the next-event time and error level when this value is present.
ES_DISABLED¶
Value 2, the record-format status named “disabled.” Like ES_DELETED, it is
copied through supported EXITINFO.BBS records. The current library does not
use it for scheduling and treats it only as a value other than ES_ENABLED.