1  /* do not edit automatically generated by mc from termios.  */
       2  /* termios.def provides a procedural interface to termios.
       3  
       4  Copyright (C) 2005-2023 Free Software Foundation, Inc.
       5  Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
       6  
       7  This file is part of GNU Modula-2.
       8  
       9  GNU Modula-2 is free software; you can redistribute it and/or modify
      10  it under the terms of the GNU General Public License as published by
      11  the Free Software Foundation; either version 3, or (at your option)
      12  any later version.
      13  
      14  GNU Modula-2 is distributed in the hope that it will be useful, but
      15  WITHOUT ANY WARRANTY; without even the implied warranty of
      16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      17  General Public License for more details.
      18  
      19  Under Section 7 of GPL version 3, you are granted additional
      20  permissions described in the GCC Runtime Library Exception, version
      21  3.1, as published by the Free Software Foundation.
      22  
      23  You should have received a copy of the GNU General Public License and
      24  a copy of the GCC Runtime Library Exception along with this program;
      25  see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
      26  <http://www.gnu.org/licenses/>.  */
      27  
      28  
      29  #if !defined (_termios_H)
      30  #   define _termios_H
      31  
      32  #include "config.h"
      33  #include "system.h"
      34  #   ifdef __cplusplus
      35  extern "C" {
      36  #   endif
      37  #include <stdbool.h>
      38  #   if !defined (PROC_D)
      39  #      define PROC_D
      40         typedef void (*PROC_t) (void);
      41         typedef struct { PROC_t proc; } PROC;
      42  #   endif
      43  
      44  #   include "GSYSTEM.h"
      45  
      46  #   if defined (_termios_C)
      47  #      define EXTERN
      48  #   else
      49  #      define EXTERN extern
      50  #   endif
      51  
      52  typedef void *termios_TERMIOS;
      53  
      54  typedef enum {termios_vintr, termios_vquit, termios_verase, termios_vkill, termios_veof, termios_vtime, termios_vmin, termios_vswtc, termios_vstart, termios_vstop, termios_vsusp, termios_veol, termios_vreprint, termios_vdiscard, termios_vwerase, termios_vlnext, termios_veol2} termios_ControlChar;
      55  
      56  typedef enum {termios_ignbrk, termios_ibrkint, termios_ignpar, termios_iparmrk, termios_inpck, termios_istrip, termios_inlcr, termios_igncr, termios_icrnl, termios_iuclc, termios_ixon, termios_ixany, termios_ixoff, termios_imaxbel, termios_opost, termios_olcuc, termios_onlcr, termios_ocrnl, termios_onocr, termios_onlret, termios_ofill, termios_ofdel, termios_onl0, termios_onl1, termios_ocr0, termios_ocr1, termios_ocr2, termios_ocr3, termios_otab0, termios_otab1, termios_otab2, termios_otab3, termios_obs0, termios_obs1, termios_off0, termios_off1, termios_ovt0, termios_ovt1, termios_b0, termios_b50, termios_b75, termios_b110, termios_b135, termios_b150, termios_b200, termios_b300, termios_b600, termios_b1200, termios_b1800, termios_b2400, termios_b4800, termios_b9600, termios_b19200, termios_b38400, termios_b57600, termios_b115200, termios_b240400, termios_b460800, termios_b500000, termios_b576000, termios_b921600, termios_b1000000, termios_b1152000, termios_b1500000, termios_b2000000, termios_b2500000, termios_b3000000, termios_b3500000, termios_b4000000, termios_maxbaud, termios_crtscts, termios_cs5, termios_cs6, termios_cs7, termios_cs8, termios_cstopb, termios_cread, termios_parenb, termios_parodd, termios_hupcl, termios_clocal, termios_lisig, termios_licanon, termios_lxcase, termios_lecho, termios_lechoe, termios_lechok, termios_lechonl, termios_lnoflsh, termios_ltopstop, termios_lechoctl, termios_lechoprt, termios_lechoke, termios_lflusho, termios_lpendin, termios_liexten} termios_Flag;
      57  
      58  
      59  /*
      60     InitTermios - new data structure.
      61  */
      62  
      63  EXTERN termios_TERMIOS termios_InitTermios (void);
      64  
      65  /*
      66     KillTermios - delete data structure.
      67  */
      68  
      69  EXTERN termios_TERMIOS termios_KillTermios (termios_TERMIOS t);
      70  
      71  /*
      72     cfgetospeed - return output baud rate.
      73  */
      74  
      75  EXTERN int termios_cfgetospeed (termios_TERMIOS t);
      76  
      77  /*
      78     cfgetispeed - return input baud rate.
      79  */
      80  
      81  EXTERN int termios_cfgetispeed (termios_TERMIOS t);
      82  
      83  /*
      84     cfsetospeed - set output baud rate.
      85  */
      86  
      87  EXTERN int termios_cfsetospeed (termios_TERMIOS t, unsigned int b);
      88  
      89  /*
      90     cfsetispeed - set input baud rate.
      91  */
      92  
      93  EXTERN int termios_cfsetispeed (termios_TERMIOS t, unsigned int b);
      94  
      95  /*
      96     cfsetspeed - set input and output baud rate.
      97  */
      98  
      99  EXTERN int termios_cfsetspeed (termios_TERMIOS t, unsigned int b);
     100  
     101  /*
     102     tcgetattr - get state of, fd, into, t.
     103  */
     104  
     105  EXTERN int termios_tcgetattr (int fd, termios_TERMIOS t);
     106  EXTERN int termios_tcsnow (void);
     107  EXTERN int termios_tcsdrain (void);
     108  EXTERN int termios_tcsflush (void);
     109  
     110  /*
     111     tcsetattr - set state of, fd, to, t, using option.
     112  */
     113  
     114  EXTERN int termios_tcsetattr (int fd, int option, termios_TERMIOS t);
     115  
     116  /*
     117     cfmakeraw - sets, t, to raw mode.
     118  */
     119  
     120  EXTERN void termios_cfmakeraw (termios_TERMIOS t);
     121  
     122  /*
     123     tcsendbreak - send zero bits for duration.
     124  */
     125  
     126  EXTERN int termios_tcsendbreak (int fd, int duration);
     127  
     128  /*
     129     tcdrain - waits for pending output to be written on, fd.
     130  */
     131  
     132  EXTERN int termios_tcdrain (int fd);
     133  
     134  /*
     135     tcflushi - flush input.
     136  */
     137  
     138  EXTERN int termios_tcflushi (int fd);
     139  
     140  /*
     141     tcflusho - flush output.
     142  */
     143  
     144  EXTERN int termios_tcflusho (int fd);
     145  
     146  /*
     147     tcflushio - flush input and output.
     148  */
     149  
     150  EXTERN int termios_tcflushio (int fd);
     151  
     152  /*
     153     tcflowoni - restart input on, fd.
     154  */
     155  
     156  EXTERN int termios_tcflowoni (int fd);
     157  
     158  /*
     159     tcflowoffi - stop input on, fd.
     160  */
     161  
     162  EXTERN int termios_tcflowoffi (int fd);
     163  
     164  /*
     165     tcflowono - restart output on, fd.
     166  */
     167  
     168  EXTERN int termios_tcflowono (int fd);
     169  
     170  /*
     171     tcflowoffo - stop output on, fd.
     172  */
     173  
     174  EXTERN int termios_tcflowoffo (int fd);
     175  
     176  /*
     177     GetFlag - sets a flag value from, t, in, b, and returns TRUE
     178               if, t, supports, f.
     179  */
     180  
     181  EXTERN bool termios_GetFlag (termios_TERMIOS t, termios_Flag f, bool *b);
     182  
     183  /*
     184     SetFlag - sets a flag value in, t, to, b, and returns TRUE if
     185               this flag value is supported.
     186  */
     187  
     188  EXTERN bool termios_SetFlag (termios_TERMIOS t, termios_Flag f, bool b);
     189  
     190  /*
     191     GetChar - sets a CHAR, ch, value from, t, and returns TRUE if
     192               this value is supported.
     193  */
     194  
     195  EXTERN bool termios_GetChar (termios_TERMIOS t, termios_ControlChar c, char *ch);
     196  
     197  /*
     198     SetChar - sets a CHAR value in, t, and returns TRUE if, c,
     199               is supported.
     200  */
     201  
     202  EXTERN bool termios_SetChar (termios_TERMIOS t, termios_ControlChar c, char ch);
     203  #   ifdef __cplusplus
     204  }
     205  #   endif
     206  
     207  #   undef EXTERN
     208  #endif