#ifndef _CHANDLE_H
#define _CHANDLE_H
#include "iohandle.h"
//ANSI display information ......
struct ANSIdata {
char info; //info level (=0)
char zero_1; //reserved (=0)
int block_length; //param block length
//(start at next field)
int flags; //0x0001 = intense
//0x0002 = blink
//other bits reserved (=0)
char mode; //1 = text, 2 = graphics
char zero_2; //reserved (=0)
int numcolors; //# colors (= 2**n, where
// n == 0, 1, 2, 4, 8;
// 0 == monochrome )
int pix_cols; //pixel columns
int pix_rows; //pixel rows
int txt_cols; //text columns
int txt_rows; //text rows
};
class charHandle: public IoctlHandle {
protected:
int _cat; //current device category
charHandle( const char *device ); //constructor
void handle_info( int, unsigned ); //set dev info
unsigned ioctl_data( ioctl_cmd fn, unsigned count,
void *buffer );
int char_ioctl( char_cmd minor_code,
void *param_block );
public:
static charHandle *Init(const char *device );
~charHandle() { } //~IoctlHandle() closes_handle
int deviceCat(void) { return _cat; }
unsigned setDeviceInfo( unsigned newinfo )
{ handle_info( _handle, newinfo );
return handleInfo(); }
int isCooked(void) //!0 if ASCII mode
{ return !(binary & info); }
int isRaw( void ) //!0 if Binary mode
{ return (binary & _info); }
int hasIoctlChar(void) { return ioctl & _info; }
int deviceReadyIn(void ) //!0=ready, 0 not ready
{ return inputStatus(); }
int deviceReadyOut(void) //!0=ready, 0 not ready
{ return outputStatus(); }
int sendIoctl( unsigned *count, void *data);
int readIoctl( unsigned *count, void *data);
unsigned busyCount( void ); //get count
unsigned busyCount( unsigned count ); //set count
int getANSIdata( struct ANSIdata *dis);
int setANSIdata( struct ANSIdata *dis);
}; //.... end class charHandle
#endif // __CHANDLE_H
// End of File