#ifndef _EFAXOS_H
#define _EFAXOS_H
#include <time.h>
#include "efaxlib.h"
#if defined(__APPLE__)
#include <CoreFoundation/CoreFoundation.h>
#include <IOKit/pwr_mgt/IOPMLib.h>
#endif
#define ANSISIGS SIGABRT, SIGFPE, SIGILL, SIGINT, SIGSEGV, SIGTERM
#define UNIXSIGS SIGHUP, SIGQUIT, SIGIOT, SIGALRM
#define CATCHSIGS ANSISIGS, UNIXSIGS
extern unsigned char normalbits [ ] ;
typedef enum ttymodes
{
COMMAND,
SEND,
VOICECOMMAND,
VOICESEND,
DROPDTR,
ORIGINAL
} ttymodes ;
#define IBUFSIZE 1024
#define OBUFSIZE 1024
typedef struct tfilestruct {
int fd ;
void (*onsig)(int sig);
unsigned char *ip, *iq ;
unsigned char ibuf [ IBUFSIZE ] ;
unsigned char *ibitorder, *obitorder ;
int bytes, pad, lines ;
int hwfc ;
time_t start ;
long mstart ;
int rd_state ;
int modem_wait ;
int signal;
} TFILE ;
#define tgetc(f,t) ( (f)->ip >= (f)->iq && tundrflw(f,t) == EOF ? EOF : \
*(unsigned char*)(f)->ip++ )
int tundrflw ( TFILE *f, int t ) ;
int tgetd ( TFILE *f, int t ) ;
int tput ( TFILE *f, const char *p, int n ) ;
int tdata ( TFILE *f, int t ) ;
int ttyopen ( TFILE *f, char *fname, int reverse, int hwfc ) ;
int ttyclose ( TFILE *f ) ;
int ttymode ( TFILE *f, ttymodes mode ) ;
void msleep ( int t ) ;
long proc_ms ( void ) ;
int time_ms ( void ) ;
extern int execl ( const char *path, const char *arg , ... ) ;
#define BINLKFLAG '#'
int lockall ( TFILE *f, char **lkfiles, int log ) ;
int unlockall ( TFILE *f, char **lkfiles ) ;
char *efaxbasename ( char *p ) ;
#define FAXFILE "/dev/modem"
#ifdef __APPLE__
#define TDATA_READY 1
#define TDATA_TIMEOUT 0
#define TDATA_SELECTERR -2
#define TDATA_SLEEP -6
#define TDATA_WAKE -7
#define TDATA_MANANSWER -8
#define TDATA_CANCEL -9
#define TDATA_MODEMADDED -10
#define TDATA_MODEMREMOVED -11
typedef struct syseventstruct
{
unsigned char event;
io_connect_t powerKernelPort;
long powerNotificationID;
} sysevent_t;
extern sysevent_t sysevent;
extern int waiting;
extern int manual_answer;
extern int answer_wait;
extern char *faxfile;
extern int modem_found;
extern int cleanup ( int err );
extern void notify(CFStringRef status, CFTypeRef value);
extern void sysEventMonitorStart(void);
extern void sysEventMonitorStop(void);
#endif
#endif