home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / MAXMAILP.ZIP / MODEM.H < prev    next >
C/C++ Source or Header  |  1990-10-12  |  9KB  |  246 lines

  1. /***************************************************************************
  2.  *                                                                         *
  3.  *  MAXIMUS-CBCS Source Code, Version 1.02                                 *
  4.  *  Copyright 1989, 1990 by Scott J. Dudley.  All rights reserved.         *
  5.  *                                                                         *
  6.  *  FOSSIL #define's and declarations                                      *
  7.  *                                                                         *
  8.  *  For complete details of the licensing restrictions, please refer to    *
  9.  *  the licence agreement, which is published in its entirety in MAX.C     *
  10.  *  and LICENCE.MAX.                                                       *
  11.  *                                                                         *
  12.  *  USE OF THIS FILE IS SUBJECT TO THE RESTRICTIONS CONTAINED IN THE       *
  13.  *  MAXIMUS-CBCS LICENSING AGREEMENT.  IF YOU DO NOT FIND THE TEXT OF THIS *
  14.  *  AGREEMENT IN ANY OF THE  AFOREMENTIONED FILES, OR IF YOU DO NOT HAVE   *
  15.  *  THESE FILES, YOU SHOULD IMMEDIATELY CONTACT THE AUTHOR AT ONE OF THE   *
  16.  *  ADDRESSES LISTED BELOW.  IN NO EVENT SHOULD YOU PROCEED TO USE THIS    *
  17.  *  FILE WITHOUT HAVING ACCEPTED THE TERMS OF THE MAXIMUS-CBCS LICENSING   *
  18.  *  AGREEMENT, OR SUCH OTHER AGREEMENT AS YOU ARE ABLE TO REACH WITH THE   *
  19.  *  AUTHOR.                                                                *
  20.  *                                                                         *
  21.  *  You can contact the author at one of the address listed below:         *
  22.  *                                                                         *
  23.  *  Scott Dudley           FidoNet  1:249/106                              *
  24.  *  777 Downing St.        IMEXnet  89:483/202                             *
  25.  *  Kingston, Ont.         Internet f106.n249.z1.fidonet.org               *
  26.  *  Canada - K7M 5N3       BBS      (613) 389-8315 - HST/14.4K, 24hrs      *
  27.  *                                                                         *
  28.  ***************************************************************************/
  29.  
  30. /*
  31.  * If you are using K&R C, remove the comments below:
  32.  *
  33.  * #define cdecl
  34.  * #define pascal
  35.  * #define far
  36.  * #define void    int
  37.  *
  38.  */
  39.  
  40. #ifndef _MODEM_H_INCLUDED
  41. #define _MODEM_H_INCLUDED
  42.  
  43. #define TRUE  1
  44. #define FALSE 0
  45.  
  46. struct _fossil_info
  47. {
  48.   int size;
  49.   char majver;
  50.   char minver;
  51.   char far *id;
  52.   int input_size;
  53.   int input_free;
  54.   int output_size;
  55.   int output_free;
  56.   char width;
  57.   char height;
  58.   char baud;
  59. };
  60.  
  61.  
  62. int  pascal fossil_getcw(void );
  63. void pascal fossil_getxy(char *row,char *col);
  64. int  fossil_wherex(void );
  65. int  fossil_wherey(void );
  66. void pascal fossil_gotoxy(char row,char col);
  67. int  pascal fossil_inf(struct _fossil_info far *finfo);
  68. int  pascal fossil_peek(void );
  69. void cdecl fossil_putc(char chr);
  70. void cdecl fossil_puts(char *str);
  71. int  pascal mdm_baud(int  bod);
  72. void pascal mdm_break(unsigned int hundredths);
  73. int  pascal mdm_cmd(char *command);
  74. int  pascal mdm_deinit(void );
  75. char pascal mdm_dump(char buffer);
  76. int  pascal mdm_init(int  prt);
  77. void pascal mdm_pputs(char *str);
  78. int  cdecl mdm_printf(char *format,...);
  79. void pascal mdm_watchdog(int  watch);
  80. int  pascal mdm_blockwrite(int  max_chars,char *offset);
  81.  
  82. #define mdm_halt()      mdm_ctrlc(1)
  83. #define mdm_getc()      (mdm_avail() ? mdm_ggetcw() : -1)
  84.  
  85. #define Mdm_Flow_On()   Mdm_Flow(FLOW_on)
  86. #define Mdm_Flow_Off()  Mdm_Flow(FLOW_partial_off)
  87.  
  88. #ifdef OS_2
  89.     #ifndef COMMAPI
  90.     #include "comm.h"
  91.     #endif
  92.  
  93.     extern void com_XON_enable(void);
  94.     extern void com_XON_disable(void);
  95.     extern void com_DTR_on(void );
  96.     extern void com_DTR_off(void );
  97.     extern void com_break(int on);
  98.  
  99.     extern void MDM_ENABLE(int ignore);
  100.     extern void MDM_DISABLE(void );
  101.     extern int Cominit(int port);
  102.  
  103.     void ShowMdmSettings(void);
  104.  
  105.     int  pascal mdm_ctrlc(char mask);
  106.     void pascal mdm_dtr(char dtr);
  107.     /*void pascal mdm_flow(int  flow);*/
  108.     #define mdm_flow(f) /*PLF Sun  04-22-1990  19:48:12 */
  109.     void vbuf_flush(void);
  110.  
  111.     #define mdm_peek()      ComPeek(hcModem)
  112.     #define mdm_pputcw(c)   ComPutc(hcModem,c)
  113.     #define mdm_ggetcw()    (!ComTxWait(hcModem,-1L)?ComGetc(hcModem):0)
  114.     #define mdm_fflush()    ComTxWait(hcModem, -1L)
  115.  
  116.     #define CARRIER()   (ComIsOnline(hcModem))
  117.     #define carrier()   CARRIER()
  118.     #define out_empty() (ComOutCount(hcModem)==0)
  119.     #define mdm_avail() ComInCount(hcModem)
  120.     extern HCOMM hcModem;
  121. #else
  122.  
  123.     void pascal mdm_fflush(void );
  124.     unsigned short pascal far CallFossil(int FOSSIL_function,int AL);
  125.     #define CallFossilNR CallFossil
  126.  
  127.     #define mdm_pputc(chr)  ((unsigned char)CallFossil(FOSSIL_xmit,chr))
  128.     #define mdm_pputcw(chr) CallFossilNR(FOSSIL_xmitw,chr)
  129.     #define mdm_ggetcw()    (CallFossil(FOSSIL_recvw,0) & 0xff)
  130.     #define mdm_status()    CallFossil(FOSSIL_status,0)
  131.     #define mdm_peek()      ((int)CallFossil(FOSSIL_peek,0))
  132.  
  133.     /* The "& 0x00ff" kludge is necessary because X00 is broken, and       *
  134.      * it forgets to zero out the AH register in this call...  O!Comm and  *
  135.      * others do it correctly, though.                                     */
  136.  
  137.     #define mdm_ctrlc(mask) (!local && (CallFossil(FOSSIL_ctrlc,mask) & 0x00ff)==0x0001)
  138.  
  139.     #define mdm_dtr(dtr)    CallFossilNR(FOSSIL_dtr,dtr)
  140.     #define mdm_flow(flow)  CallFossilNR(FOSSIL_flow,(flow) | 0xf0)
  141.  
  142.     #define carrier()     (mdm_status() & STATUS_dcd)
  143.     #define out_empty()   (local ? TRUE : (mdm_status() & STATUS_outempty))
  144.     #define out_full()    (local ? FALSE : !(mdm_status() & STATUS_roomavail))
  145.     #define mdm_avail()   (local ? FALSE : (mdm_status() & STATUS_anydata))
  146.  
  147.  
  148.     /* For the Binkley stuff */
  149.     #define CARRIER()     carrier()
  150.     #define OUT_EMPTY()   out_empty()
  151.     #define OUT_FULL()    out_full()
  152.     #define MDM_AVAIL()   mdm_avail()
  153. #endif
  154.  
  155. #define FOSSIL_baud        0x00
  156. #define FOSSIL_xmitw       0x01
  157. #define FOSSIL_recvw       0x02
  158. #define FOSSIL_status      0x03
  159. #define FOSSIL_init        0x04
  160. #define FOSSIL_deinit      0x05
  161. #define FOSSIL_dtr         0x06
  162. #define FOSSIL_ttick       0x07
  163. #define FOSSIL_flushout    0x08
  164. #define FOSSIL_dumpout     0x09
  165. #define FOSSIL_dumpin      0x0a
  166. #define FOSSIL_xmit        0x0b
  167. #define FOSSIL_peek        0x0c
  168. #define FOSSIL_kpeek       0x0d
  169. #define FOSSIL_getcw       0x0e
  170. #define FOSSIL_flow        0x0f
  171. #define FOSSIL_ctrlc       0x10
  172. #define FOSSIL_gotoxy      0x11
  173. #define FOSSIL_getxy       0x12
  174. #define FOSSIL_putc        0x13
  175. #define FOSSIL_watchdog    0x14
  176. #define FOSSIL_bputc       0x15
  177. #define FOSSIL_attfunc     0x16
  178. #define FOSSIL_reboot      0x17
  179. #define FOSSIL_blockread   0x18
  180. #define FOSSIL_blockwrite  0x19
  181. #define FOSSIL_break       0x1a
  182. #define FOSSIL_info        0x1b
  183. #define FOSSIL_extapp_inst 0x7e
  184. #define FOSSIL_extapp_dest 0x7f
  185.  
  186. #define INIT_ok            0x00
  187. #define INIT_alreadyopen   0x01
  188. #define INIT_nofossil      0x02
  189.  
  190. #define BAUD300   0x43
  191. #define BAUD600   0x63
  192. #define BAUD1200  0x83
  193. #define BAUD2400  0xa3
  194. #define BAUD4800  0xc3
  195. #define BAUD9600  0xe3
  196. #define BAUD19200 0x03
  197. #define BAUD38400 0x23
  198.  
  199. #define FLOW_txoff    0x01
  200. #define FLOW_cts      0x02
  201. #define FLOW_dsr      0x04
  202. #define FLOW_rxoff    0x08
  203.  
  204. #define DUMP_output 0x00
  205. #define DUMP_input  0x01
  206. #define DUMP_all    0x02
  207.  
  208. #define DTR_down 0x00
  209. #define DTR_up   0x01
  210.  
  211. #define FLOW_on           0x00
  212. #define FLOW_partial_off  0x01
  213. #define FLOW_off          0x02
  214.  
  215. #define MAX_cmdlen        28 /* Maximum length of command modem will return */
  216.  
  217. #define CTRLC_off 0x00
  218. #define CTRLC_on  0x01
  219.  
  220. #define XMIT_disable 0x00
  221. #define XMIT_enable  0x02
  222.  
  223. #define WATCHDOG_on  0x01
  224. #define WATCHDOG_off 0x00
  225.  
  226. #define BREAK_on  0x01
  227. #define BREAK_off 0x00
  228.  
  229. #define STATUS_active     0x0008  /* FOSSIL is active */
  230. #define STATUS_dcd        0x0080  /* Carrier detect */
  231.  
  232. #define STATUS_anydata    0x0100  /* Some data in input buffer */
  233. #define STATUS_overrun    0x0200  /* Input buffer overrun */
  234. #define STATUS_parityrerr 0x0400  /* Parity error */
  235. #define STATUS_framingerr 0x0800  /* Framing error */
  236. #define STATUS_roomavail  0x2000  /* Room available in output buffer */
  237. #define STATUS_outempty   0x4000  /* Output buffer is empty */
  238.  
  239. typedef enum {MDM_none=-1,MDM_ok,MDM_nocarrier,MDM_busy,MDM_nodialtone,
  240.               MDM_dialtone,MDM_error,MDM_voice,MDM_ring,MDM_ringing,
  241.               MDM_connect3,MDM_connect6,MDM_connect12,MDM_connect24,
  242.               MDM_connect48,MDM_connect96,MDM_connect19,MDM_connect38,
  243.               MDM_timeout} MDM_RESPONSE;
  244.  
  245. #endif
  246.