ASYNC(3)                                                 ASYNC(3)

     NAME
          async - framing for a serial line to Datakit

     SYNOPSIS
          ctlfd = open(".../ctl", ORDWR);
          write(ctlfd, "push async", 10);

     DESCRIPTION
          This is not a device, but rather a stream module (see
          stream(3)) that can be pushed onto a stream.  This module
          provides the framing necessary to treat a serial line as a
          Datakit trunk.  It is usually pushed onto a stream before
          the dkmux module.  The frame includes a CRC.  Any received
          frames with an incorrect CRC are discarded.

          The format of a message upstream of the module is:

               channel # low byte
               channel # high byte
               control byte (0 means none)
               data bytes

          The format of a frame is:

               0x7d
               0x7d
               channel # low byte
               channel # high byte
               crc low byte
               crc high byte
               0x7d
               0x7d

          All control bytes in the frame are preceded by a 0x9d byte.
          All 0x9d and 0x7d bytes in the data are followed by a 0x00
          byte to distinguish them from framing or control specifiers.

     SEE ALSO
          stream(3), cons(3), dk(3)

     SOURCE
          /sys/src/9/port/stasync.c

     Page 1                       Plan 9            (printed 11/18/24)