## 15.3.1 connection object

For all connection methods that take a timeout argument, a value of `-1` is indefinite, meaning that the command runs to completion.

`callback`
  If this member is set to a value other than `None` it should point to a function accepting a single argument (the connection object). This will make all connection object methods work asynchronously, with the callback routine being called upon completion.

  Note: for reasons beyond my understanding the callback routine is currently never called. You are advised against using asynchronous calls for the time being.

`Open` (timeout)
  Open an outgoing connection, waiting at most timeout seconds for the connection to be established.

`Listen` (timeout)
  Wait for an incoming connection. Stop waiting after timeout seconds. This call is only meaningful to some tools.

`accept` (yesno)
  Accept (when yesno is non-zero) or reject an incoming call after Listen returned.

`Close` (timeout, now)
  Close a connection. When now is zero, the close is orderly (i.e. outstanding output is flushed, etc.) with a timeout of timeout seconds. When now is non-zero the close is immediate, discarding output.

`Read` (len, chan, timeout)
  Read len bytes, or until timeout seconds have passed, from the channel chan (which is one of cmData, cmCntl or cmAttn). Return a 2-tuple: the data read and the end-of-message flag.

`Write` (buf, chan, timeout, eom)
  Write buf to channel chan, aborting after timeout seconds. When eom has the value cmFlagsEOM an end-of-message indicator will be written after the data (if this concept has a meaning for this communication tool). The method returns the number of bytes written.

`Status` ()
  Return connection status as the 2-tuple `(sizes, flags)`. sizes is a 6-tuple giving the actual buffer sizes used (see CMNew), flags is a set of bits describing the state of the connection.

`GetConfig` ()
  Return the configuration string of the communication tool. These configuration strings are tool-dependent, but usually easily parsed and modified.

`SetConfig` (str)
  Set the configuration string for the tool. The strings are parsed left-to-right, with later values taking precedence. This means individual configuration parameters can be modified by simply appending something like `'baud 4800'` to the end of the string returned by GetConfig and passing that to this method. The method returns the number of characters actually parsed by the tool before it encountered an error (or completed successfully).

`Choose` ()
  Present the user with a dialog to choose a communication tool and configure it. If there is an outstanding connection some choices (like selecting a different tool) may cause the connection to be aborted. The return value (one of the choose* constants) will indicate this.

`Idle` ()
  Give the tool a chance to use the processor. You should call this method regularly.

`Abort` ()
  Abort an outstanding asynchronous Open or Listen.

`Reset` ()
  Reset a connection. Exact meaning depends on the tool.

`Break` (length)
  Send a break. Whether this means anything, what it means and interpretation of the length parameter depend on the tool in use.