You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
158 lines
4.3 KiB
158 lines
4.3 KiB
4 years ago
|
/*
|
||
|
* $Id: pi-source.h,v 1.42 2006/10/17 13:24:07 desrod Exp $
|
||
|
*
|
||
|
* pi-source.h
|
||
|
*
|
||
|
* This library is free software; you can redistribute it and/or modify it
|
||
|
* under the terms of the GNU Library General Public License as published by
|
||
|
* the Free Software Foundation; either version 2 of the License, or (at
|
||
|
* your option) any later version.
|
||
|
*
|
||
|
* This library is distributed in the hope that it will be useful, but
|
||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
|
||
|
* General Public License for more details.
|
||
|
*
|
||
|
* You should have received a copy of the GNU Library General Public License
|
||
|
* along with this library; if not, write to the Free Software Foundation,
|
||
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||
|
*/
|
||
|
|
||
|
#ifndef _PILOT_SOURCE_H_
|
||
|
#define _PILOT_SOURCE_H_
|
||
|
|
||
|
# include <sys/ioctl.h>
|
||
|
# include <sys/time.h>
|
||
|
# include <sys/errno.h>
|
||
|
# include <time.h>
|
||
|
# include <fcntl.h>
|
||
|
# include <unistd.h>
|
||
|
# include <string.h>
|
||
|
# include <stdlib.h>
|
||
|
# include <dirent.h>
|
||
|
# include <errno.h>
|
||
|
# include <assert.h>
|
||
|
|
||
|
#ifdef NeXT
|
||
|
# include <sys/types.h>
|
||
|
# include <sys/socket.h>
|
||
|
#endif
|
||
|
|
||
|
#ifdef __EMX__
|
||
|
# define OS2
|
||
|
# include <sys/types.h>
|
||
|
# include <sys/socket.h>
|
||
|
# include <sys/param.h> /* for htonl .. */
|
||
|
# define ENOMSG 150
|
||
|
# define strcasecmp stricmp
|
||
|
# define strncasecmp strnicmp
|
||
|
|
||
|
# define TTYPrompt "com#"
|
||
|
# define RETSIGTYPE void
|
||
|
# define HAVE_SIGACTION
|
||
|
# define HAVE_DUP2
|
||
|
# define HAVE_SYS_SELECT_H
|
||
|
# define HAVE_STRDUP
|
||
|
#else
|
||
|
#endif
|
||
|
|
||
|
#ifdef SGTTY
|
||
|
# include <sgtty.h>
|
||
|
#else
|
||
|
# include <termios.h>
|
||
|
#endif
|
||
|
|
||
|
#ifndef PI_DEPRECATED
|
||
|
#if __GNUC__ - 0 > 3 || (__GNUC__ - 0 == 3 && __GNUC_MINOR__ - 0 >= 2)
|
||
|
# define PI_DEPRECATED __attribute__ ((deprecated))
|
||
|
#else
|
||
|
# define PI_DEPRECATED
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#include "pi-socket.h"
|
||
|
#include "pi-macros.h"
|
||
|
#include "pi-buffer.h"
|
||
|
|
||
|
#define PI_SOCK_LISTEN 0x01 /* Listener */
|
||
|
#define PI_SOCK_CONN_ACCEPT 0x02 /* Connected by accepting */
|
||
|
#define PI_SOCK_CONN_INIT 0x04 /* Connected by initiating */
|
||
|
#define PI_SOCK_CONN_BREAK 0x08 /* Connected but broken */
|
||
|
#define PI_SOCK_CONN_END 0x10 /* Connected but end */
|
||
|
#define PI_SOCK_CLOSE 0x20 /* Closed */
|
||
|
|
||
|
#define PI_FLUSH_INPUT 0x01 /* for flush() */
|
||
|
#define PI_FLUSH_OUTPUT 0x02 /* for flush() */
|
||
|
|
||
|
typedef struct pi_protocol {
|
||
|
int level;
|
||
|
struct pi_protocol *(*dup)
|
||
|
PI_ARGS((struct pi_protocol *));
|
||
|
void (*free)
|
||
|
PI_ARGS((struct pi_protocol *));
|
||
|
ssize_t (*read)
|
||
|
PI_ARGS((pi_socket_t *ps, pi_buffer_t *buf,
|
||
|
size_t expect, int flags));
|
||
|
ssize_t (*write)
|
||
|
PI_ARGS((pi_socket_t *ps, PI_CONST unsigned char *buf,
|
||
|
size_t len, int flags));
|
||
|
int (*flush)
|
||
|
PI_ARGS((pi_socket_t *ps, int flags));
|
||
|
int (*getsockopt)
|
||
|
PI_ARGS((pi_socket_t *ps, int level,
|
||
|
int option_name, void *option_value,
|
||
|
size_t *option_len));
|
||
|
int (*setsockopt)
|
||
|
PI_ARGS((pi_socket_t *ps, int level,
|
||
|
int option_name, const void *option_value,
|
||
|
size_t *option_len));
|
||
|
void *data;
|
||
|
} pi_protocol_t;
|
||
|
|
||
|
typedef struct pi_device {
|
||
|
void (*free)
|
||
|
PI_ARGS((struct pi_device *dev));
|
||
|
struct pi_protocol *(*protocol)
|
||
|
PI_ARGS((struct pi_device *dev));
|
||
|
int (*bind)
|
||
|
PI_ARGS((pi_socket_t *ps,
|
||
|
struct sockaddr *addr, size_t addrlen));
|
||
|
int (*listen)
|
||
|
PI_ARGS((pi_socket_t *ps, int backlog));
|
||
|
int (*accept)
|
||
|
PI_ARGS((pi_socket_t *ps, struct sockaddr *addr,
|
||
|
size_t *addrlen));
|
||
|
int (*connect)
|
||
|
PI_ARGS((pi_socket_t *ps, struct sockaddr *addr,
|
||
|
size_t addrlen));
|
||
|
int (*close)
|
||
|
PI_ARGS((pi_socket_t *ps));
|
||
|
void *data;
|
||
|
} pi_device_t;
|
||
|
|
||
|
/* internal functions */
|
||
|
extern pi_socket_list_t *pi_socket_recognize PI_ARGS((pi_socket_t *));
|
||
|
extern pi_socket_t *find_pi_socket PI_ARGS((int sd));
|
||
|
extern int crc16 PI_ARGS((unsigned char *ptr, int count));
|
||
|
extern char *printlong PI_ARGS((unsigned long val));
|
||
|
extern unsigned long makelong PI_ARGS((char *c));
|
||
|
|
||
|
/* provide compatibility for old code. Code should now use
|
||
|
pi_dumpline() and pi_dumpdata() */
|
||
|
|
||
|
extern void dumpline
|
||
|
PI_ARGS((PI_CONST char *buf, size_t len, unsigned int addr)) PI_DEPRECATED;
|
||
|
|
||
|
extern void dumpdata
|
||
|
PI_ARGS((PI_CONST char *buf, size_t len)) PI_DEPRECATED;
|
||
|
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
#endif /* _PILOT_SOURCE_H_ */
|