Raw File
#ifndef DCE_H
#define DCE_H 1
#define DCE_CL_DSR 1
#define DCE_CL_DCD 2
#define DCE_CL_CTS 4
#define DCE_CL_DTR 8
#define DCE_CL_LE 16
#define DCE_CL_RI 32
/* This is a cool piece of code found by Chris Osborn (fozztexx@fozztexx.com) from
* https://graphics.stanford.edu/~seander/bithacks.html#ParityWith64Bits that
* computes even parity for any 8 bit data value
*/
#ifndef gen_parity
# define gen_parity(v) ((unsigned char)(((((v) * 0x0101010101010101ULL) & 0x8040201008040201ULL) % 0x1FF) & 1))
#endif
/* This is an impressive piece of code written by Chris Osborn (fozztexx@fozztexx.com)
* that given a value where SPACE=0,ODD=1,EVEN=2,MARK=3 parity is present in p,
* it will quickly add the correct parity to a 7 bit data value
*/
#ifndef apply_parity
# define apply_parity(v, p) ((unsigned char)((v & 0x7f) | (((p >> gen_parity(v & 0x7f))) & 1) << 7))
#endif
enum {
PARITY_SPACE_NONE = 0,
PARITY_ODD,
PARITY_EVEN,
PARITY_MARK
};
typedef struct dce_config {
int port_speed;
int parity;
int is_ip232;
char tty[256];
int ifd;
int ofd;
int dp[2][2];
int sSocket;
int is_connected;
int ip232_dtr;
int ip232_dcd;
int ip232_iac;
int ip232_ri;
} dce_config;
void dce_init_config(dce_config *cfg);
int dce_connect(dce_config *cfg);
int dce_set_flow_control(dce_config *cfg, int opts);
int dce_set_control_lines(dce_config *cfg, int state);
int dce_get_control_lines(dce_config *cfg);
int dce_check_control_lines(dce_config *cfg);
int dce_write(dce_config *cfg, unsigned char *data, int len);
int dce_write_char_raw(dce_config *cfg, unsigned char data);
int dce_read(dce_config *cfg, unsigned char *data, int len);
int dce_read_char_raw(dce_config *cfg);
void dce_detect_parity(dce_config *cfg, unsigned char a, unsigned char t);
int dce_strip_parity(dce_config *cfg, unsigned char data);
int dce_get_parity(dce_config *cfg);
//int dce_check_for_break(dce_config *cfg, char ch, int chars_left);
#endif
Generated by GNU Enscript 1.6.6, and GophHub 1.3.