home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / comm / xprzedza.lzh / Xproto.h < prev    next >
C/C++ Source or Header  |  1992-11-30  |  5KB  |  190 lines

  1. /** xproto.h
  2. *
  3. *   Include file for External Protocol Handling
  4. *
  5. *
  6. *   Modified to support ZedZap/ZedZip fidonet protocol by
  7. *   Yves Konighofer and Russel McOrmond.
  8. *
  9. *   Adapted to xprzmodem Version 2.52 by Andrea Cisternino (30 Nov 92)
  10. **/
  11.  
  12. /*
  13. *   The structure
  14. */
  15. struct XPR_IO {
  16.  
  17.   /* File name(s) */
  18.   char *xpr_filename;
  19.  
  20.   /* Open file */
  21.    long (* __asm xpr_fopen)(register __a0 char *filename,
  22.          register __a1 char *accessmode);
  23.  
  24.    /* Close file */
  25.    long (* __asm xpr_fclose)(register __a0 long filepointer);
  26.  
  27.    /* Get char from file */
  28.    long (* __asm xpr_fread)(register __a0 char *buffer, register __d0 long size,
  29.          register __d1 long count, register __a1 long fileptr);
  30.  
  31.    /* Put string to file */
  32.    long (* __asm xpr_fwrite)(register __a0 char *buffer, register __d0 long size,
  33.          register __d1 long count, register __a1 long fileptr);
  34.  
  35.    /* Get char from serial */
  36.    long (* __asm xpr_sread)(register __a0 char *buffer,
  37.          register __d0 long size, register __d1 long timeout);
  38.  
  39.    /* Put string to serial */
  40.    long (* __asm xpr_swrite)(register __a0 char *buffer,
  41.          register __d0 long size);
  42.  
  43.    /* Flush serial input buffer */
  44.    long (*xpr_sflush)(void);
  45.  
  46.    /* Print stuff */
  47.    long (* __asm xpr_update)(register __a0 struct XPR_UPDATE *updatestruct);
  48.  
  49.    /* Check for abort */
  50.    long (*xpr_chkabort)(void);
  51.  
  52.    /* Check misc. stuff */
  53.    void (*xpr_chkmisc)(void);
  54.  
  55.    /* Get string interactively */
  56.    long (* __asm xpr_gets)(register __a0 char *prompt,
  57.          register __a1 char *buffer);
  58.  
  59.    /* Set and Get serial info */
  60.    long (* __asm xpr_setserial)(register __d0 long newstatus);
  61.  
  62.    /* Find first file name */
  63.    long (* __asm xpr_ffirst)(register __a0 char *buffer,
  64.          register __a1 char *pattern);
  65.  
  66.    /* Find next file name */
  67.    long (* __asm xpr_fnext)(register __d0 long oldstate,
  68.          register __a0 char *buffer, register __a1 char *pattern);
  69.  
  70.    /* Return file info */
  71.    long (* __asm xpr_finfo)(register __a0 char *filename,
  72.          register __d0 long typeofinfo);
  73.  
  74.    /* Seek in a file */
  75.    long (* __asm xpr_fseek)(register __a0 long fileptr,
  76.          register __d0 long offset, register __d1 long origin);
  77.  
  78.    /* Number of extensions */
  79.    long  xpr_extension;
  80.  
  81.    /* Initialized by Setup. */
  82.    long  *xpr_data;
  83.  
  84.    /* Multiple XPR options. */
  85.    long (* __asm xpr_options)(register __d0 long n,
  86.          register __a0 struct xpr_option **opt);
  87.  
  88.    /* Delete a file. */
  89.    long (* __asm xpr_unlink)(register __a0 char *filename);
  90.  
  91.    /* Query serial device */
  92.    long (*xpr_squery)(void);
  93.  
  94.    /* Get various host ptrs */
  95.    long (* __asm xpr_getptr)(register __d0 long type);
  96. };
  97.  
  98. /*
  99. *   Number of defined extensions
  100. */
  101. #define XPR_EXTENSION 4L
  102.  
  103. /*
  104. *   The functions
  105. */
  106. #ifndef LATTICE
  107. extern long XProtocolSend(),  XProtocolReceive(),
  108.             XProtocolSetup(), XProtocolCleanup();
  109. #endif
  110.  
  111. /*
  112. *   Flags returned by XProtocolSetup()
  113. */
  114. #define XPRS_FAILURE    0x00000000L
  115. #define XPRS_SUCCESS    0x00000001L
  116. #define XPRS_NORECREQ   0x00000002L
  117. #define XPRS_NOSNDREQ   0x00000004L
  118. #define XPRS_HOSTMON    0x00000008L
  119. #define XPRS_USERMON    0x00000010L
  120. #define XPRS_HOSTNOWAIT 0x00000020L
  121.  
  122. /*
  123. *   The update structure
  124. */
  125. struct XPR_UPDATE {
  126.    long  xpru_updatemask;
  127.    char *xpru_protocol;
  128.    char *xpru_filename;
  129.    long  xpru_filesize;
  130.    char *xpru_msg;
  131.    char *xpru_errormsg;
  132.    long  xpru_blocks;
  133.    long  xpru_blocksize;
  134.    long  xpru_bytes;
  135.    long  xpru_errors;
  136.    long  xpru_timeouts;
  137.    long  xpru_packettype;
  138.    long  xpru_packetdelay;
  139.    long  xpru_chardelay;
  140.    char *xpru_blockcheck;
  141.    char *xpru_expecttime;
  142.    char *xpru_elapsedtime;
  143.    long  xpru_datarate;
  144.    long  xpru_status;
  145.    long  xpru_reserved2;
  146.    long  xpru_reserved3;
  147.    long  xpru_reserved4;
  148.    long  xpru_reserved5;
  149. };
  150.  
  151. /*
  152. *   The possible bit values for the xpru_updatemask are:
  153. */
  154. #define XPRU_PROTOCOL      0x00000001L
  155. #define XPRU_FILENAME      0x00000002L
  156. #define XPRU_FILESIZE      0x00000004L
  157. #define XPRU_MSG           0x00000008L
  158. #define XPRU_ERRORMSG      0x00000010L
  159. #define XPRU_BLOCKS        0x00000020L
  160. #define XPRU_BLOCKSIZE     0x00000040L
  161. #define XPRU_BYTES         0x00000080L
  162. #define XPRU_ERRORS        0x00000100L
  163. #define XPRU_TIMEOUTS      0x00000200L
  164. #define XPRU_PACKETTYPE    0x00000400L
  165. #define XPRU_PACKETDELAY   0x00000800L
  166. #define XPRU_CHARDELAY     0x00001000L
  167. #define XPRU_BLOCKCHECK    0x00002000L
  168. #define XPRU_EXPECTTIME    0x00004000L
  169. #define XPRU_ELAPSEDTIME   0x00008000L
  170. #define XPRU_DATARATE      0x00010000L
  171. #define XPRU_STATUS        0x00020000L
  172. /*
  173. *   The xpro_option structure
  174. */
  175. struct xpr_option {
  176.    char *xpro_description;  /* description of the option */
  177.    long  xpro_type;         /* type of option */
  178.    char *xpro_value;        /* pointer to a buffer with the current value */
  179.    long  xpro_length;       /* buffer size */
  180. };
  181. /*
  182. *   Valid values for xpro_type are:
  183. */
  184. #define XPRO_BOOLEAN  1L   /* xpro_value is "yes", "no", "on" or "off"   */
  185. #define XPRO_LONG     2L   /* xpro_value is string representing a number */
  186. #define XPRO_STRING   3L   /* xpro_value is a string      */
  187. #define XPRO_HEADER   4L   /* xpro_value is ignored       */
  188. #define XPRO_COMMAND  5L   /* xpro_value is ignored       */
  189. #define XPRO_COMMPAR  6L   /* xpro_value contains command parameters     */
  190.