home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / PROTOCOL / TPHYD100.ZIP / HYDRA.INC < prev    next >
Text File  |  1993-09-14  |  9KB  |  141 lines

  1. (******************************************************************************)
  2. (*                      Hydra Bi-directional Protocol                         *)
  3. (*                        ─────────────────────────                           *)
  4. (*                                                                            *)
  5. (*                        HYDRA CONSTANT DEFINITIONS                          *)
  6. (*                                                                            *)
  7. (* BY: Adam Blake                                      Wandoo Valley Software *)
  8. (*     Arjen Lentz                                         and Lentz Software *)
  9. (* VER: 1.00                                                      Development *)
  10. (* DATE: 5th August 1993                                   (c) Copyright 1993 *)
  11. (* LANGUAGE: Turbo Pascal v6.0                  All Rights Reserved Worldwide *)
  12. (******************************************************************************)
  13.  
  14. const
  15.   (*HYDRA Specification Revision/Timestamp-----------Revision----Date--------*)
  16.   H_REVSTAMP    = $2B1AAB00;                      (* 001         01 Dec 1992 *)
  17.   H_REVISION    = 1;
  18.  
  19.   XON           = 17;                   (* Ctrl-Q (^Q) Xmit-On character     *)
  20.   XOFF          = 19;                   (* Ctrl-S (^S) Xmit-Off character    *)
  21.  
  22.   H_DLE         = 24;                   (* Ctrl-X (^X) HYDRA DataLinkEscape  *)
  23.   H_MINBLKLEN   = 64;                   (* Min. length of a HYDRA data block *)
  24.   H_MAXBLKLEN   = 2048;                 (* Max. length of a HYDRA data block *)
  25.   H_OVERHEAD    = 8;                    (* Max. no. control bytes in a pkt   *)
  26.   H_MAXPKTLEN   = ((H_MAXBLKLEN + H_OVERHEAD + 5) * 3);       (* Encoded pkt *)
  27.   H_BUFLEN      = (H_MAXPKTLEN + 16);   (* Buffer sizes: max.enc.pkt + slack *)
  28.   H_PKTPREFIX   = 31;                   (* Max length of pkt prefix string   *)
  29.   H_FLAGLEN     = 3;                    (* Length of a flag field            *)
  30.   H_RETRIES     = 10;                   (* No. retries in case of an error   *)
  31.   H_MINTIMER    = 10;                   (* Minimum timeout period            *)
  32.   H_MAXTIMER    = 60;                   (* Maximum timeout period            *)
  33.   H_START       = 5;                    (* Timeout for re-sending startstuff *)
  34.   H_IDLE        = 20;                   (* Idle? TX IDLE pkt every 20 secs   *)
  35.   H_BRAINDEAD   = 120;                  (* Braindead in 2 mins (120 secs)    *)
  36.  
  37. (*HYDRA Result Codes---------------------------------------------------------*)
  38.   XFER_ABORT    = -1;                   (* Failed on this file & abort xfer  *)
  39.   XFER_SKIP     = 0;                    (* Skip this file but continue xfer  *)
  40.   XFER_OK       = 1;                    (* File was sent, continue transfer  *)
  41.  
  42. (*HYDRA Transmitter States---------------------------------------------------*)
  43.   HTX_DONE      = 0;                    (* All over and done                 *)
  44.   HTX_START     = 1;                    (* Send start autostr + START pkt    *)
  45.   HTX_SWAIT     = 2;                    (* Wait for any pkt or timeout       *)
  46.   HTX_INIT      = 3;                    (* Send INIT pkt                     *)
  47.   HTX_INITACK   = 4;                    (* Wait for INITACK pkt              *)
  48.   HTX_RINIT     = 5;                    (* Wait for HRX_INIT -> HRX_FINFO    *)
  49.   HTX_FINFO     = 6;                    (* Send FINFO pkt                    *)
  50.   HTX_FINFOACK  = 7;                    (* Wait for FINFOACK pkt             *)
  51.   HTX_XDATA     = 8;                    (* Send next packet with file data   *)
  52.   HTX_DATAACK   = 9;                    (* Wait for DATAACK packet           *)
  53.   HTX_XWAIT     = 10;                   (* Wait for HRX_END                  *)
  54.   HTX_EOF       = 11;                   (* Send EOF pkt                      *)
  55.   HTX_EOFACK    = 12;                   (* End of file, wait for EOFACK pkt  *)
  56.   HTX_REND      = 13;                   (* Wait for HRX_END AND HTD_DONE     *)
  57.   HTX_END       = 14;                   (* Send END pkt (finish session)     *)
  58.   HTX_ENDACK    = 15;                   (* Wait for END pkt from other side  *)
  59.  
  60. (*HYDRA Device Packet Transmitter States-------------------------------------*)
  61.   HTD_DONE      = 0;                    (* No device data pkt to send        *)
  62.   HTD_DATA      = 1;                    (* Send DEVDATA pkt                  *)
  63.   HTD_DACK      = 2;                    (* Wait for DEVDACK pkt              *)
  64.  
  65. (*HYDRA Receiver States------------------------------------------------------*)
  66.   HRX_DONE      = 0;                    (* All over and done                 *)
  67.   HRX_INIT      = 1;                    (* Wait for INIT pkt                 *)
  68.   HRX_FINFO     = 2;                    (* Wait for FINFO pkt of next file   *)
  69.   HRX_DATA      = 3;                    (* Wait for next DATA pkt            *)
  70.  
  71. (*HYDRA Packet Types---------------------------------------------------------*)
  72.   HPKT_START    = 'A';                  (* Startup sequence                  *)
  73.   HPKT_INIT     = 'B';                  (* Session initialisation            *)
  74.   HPKT_INITACK  = 'C';                  (* Response to INIT pkt              *)
  75.   HPKT_FINFO    = 'D';                  (* File info (name, size, time)      *)
  76.   HPKT_FINFOACK = 'E';                  (* Response to FINFO pkt             *)
  77.   HPKT_DATA     = 'F';                  (* File data packet                  *)
  78.   HPKT_DATAACK  = 'G';                  (* File data position ACK packet     *)
  79.   HPKT_RPOS     = 'H';                  (* Transmitter reposition packet     *)
  80.   HPKT_EOF      = 'I';                  (* End of file packet                *)
  81.   HPKT_EOFACK   = 'J';                  (* Response to EOF packet            *)
  82.   HPKT_END      = 'K';                  (* End of session                    *)
  83.   HPKT_IDLE     = 'L';                  (* Idle - just saying I'm alive      *)
  84.   HPKT_DEVDATA  = 'M';                  (* Data to specified device          *)
  85.   HPKT_DEVDACK  = 'N';                  (* Response to DEVDATA pkt           *)
  86.  
  87.   HPKT_HIGHEST  = 'N';                  (* Highest known pkttype in this imp *)
  88.  
  89. (*HYDRA Internal Pseudo Packet Types-----------------------------------------*)
  90.   H_NOPKT       =  0;                   (* No packet (yet)                   *)
  91.   H_CANCEL      = -1;                   (* Received cancel sequence 5*Ctrl-X *)
  92.   H_CARRIER     = -2;                   (* Lost carrier                      *)
  93.   H_SYSABORT    = -3;                   (* Aborted by operator on this side  *)
  94.   H_TXTIME      = -4;                   (* Transmitter timeout               *)
  95.   H_DEVTXTIME   = -5;                   (* Device transmitter timeout        *)
  96.   H_BRAINTIME   = -6;                   (* Braindead timeout (quite fatal)   *)
  97.  
  98. (*HYDRA Packet Format: START[<data>]<type><crc>END --------------------------*)
  99.   HCHR_PKTEND   = 'a';                  (* End of packet (any format)        *)
  100.   HCHR_BINPKT   = 'b';                  (* Start of binary packet            *)
  101.   HCHR_HEXPKT   = 'c';                  (* Start of hex encoded packet       *)
  102.   HCHR_ASCPKT   = 'd';                  (* Start of shifted 7bit encoded pkt *)
  103.   HCHR_UUEPKT   = 'e';                  (* Start of uuencoded packet         *)
  104.  
  105. (*HYDRA Local Storage of INIT Options (Bitmapped)----------------------------*)
  106.   HOPT_XONXOFF  = $00000001;            (* Escape XON/XOFF                   *)
  107.   HOPT_TELENET  = $00000002;            (* Escape CR-'@'-CR (Telenet escape) *)
  108.   HOPT_CTLCHRS  = $00000004;            (* Escape ASCII 0-31 and 127         *)
  109.   HOPT_HIGHCTL  = $00000008;            (* Escape above 3 with 8th bit too   *)
  110.   HOPT_HIGHBIT  = $00000010;            (* Escape ASCII 128-255 + strip high *)
  111.   HOPT_CANBRK   = $00000020;            (* Can transmit a break signal       *)
  112.   HOPT_CANASC   = $00000040;            (* Can transmit/handle ASC packets   *)
  113.   HOPT_CANUUE   = $00000080;            (* Can transmit/handle UUE packets   *)
  114.   HOPT_CRC32    = $00000100;            (* Packets with CRC-32 allowed       *)
  115.   HOPT_DEVICE   = $00000200;            (* DEVICE packets allowed            *)
  116.   HOPT_FPT      = $00000400;            (* Can handle filenames with paths   *)
  117.  
  118. (*What we can do*)
  119.   HCAN_OPTIONS  = (HOPT_XONXOFF OR HOPT_TELENET OR HOPT_CTLCHRS OR HOPT_HIGHCTL
  120.                    OR HOPT_HIGHBIT OR HOPT_CANBRK OR HOPT_CANASC OR HOPT_CANUUE
  121.                    OR HOPT_CRC32 OR HOPT_DEVICE);
  122.  
  123. (*Vital options if we ask for any; abort if other side doesn't support them*)
  124.   HNEC_OPTIONS  = (HOPT_XONXOFF OR HOPT_TELENET OR HOPT_CTLCHRS OR HOPT_HIGHCTL
  125.                    OR HOPT_HIGHBIT OR HOPT_CANBRK);
  126.  
  127. (*Non-vital options; nice if other side supports them, but doesn't matter*)
  128.   HUNN_OPTIONS  = (HOPT_CANASC OR HOPT_CANUUE OR HOPT_CRC32 OR HOPT_DEVICE);
  129.  
  130. (*Default options*)
  131.    HDEF_OPTIONS = $0;
  132.  
  133. (*RxOptions during init (needs to handle ANY link yet unknown at that point*)
  134.    HRXI_OPTIONS = (HOPT_XONXOFF OR HOPT_TELENET OR HOPT_CTLCHRS OR HOPT_HIGHCTL
  135.                    OR HOPT_HIGHBIT);
  136.  
  137. (*Ditto, but this time TxOptions*)
  138.    HTXI_OPTIONS = $0;
  139.  
  140. (*END of Hydra.inc*)
  141.