/*
* Printer_Data.c
*
* Example getting driver specifics.
*
* Compiled with SAS C 5.10a. lc -cfist -v -L Printer_Data
*
* Run from CLI only
*/
#include <exec/types.h>
#include <exec/ports.h>
#include <devices/printer.h>
#include <devices/prtbase.h>
#include <clib/exec_protos.h>
#include <clib/alib_protos.h>
#include <clib/alib_stdio_protos.h>
union printerIO
{
struct IOStdReq ios;
struct IODRPReq iodrp;
struct IOPrtCmdReq iopc;
};
VOID main(VOID);
VOID main(VOID)
{
struct MsgPort *PrinterMP;
union printerIO *PIO;
struct PrinterData *PD;
struct PrinterExtendedData *PED;
/* Create non-public messageport. Could use CreateMsgPort() for this, that's
* V37 specific however.
*/
if (PrinterMP = (struct MsgPort *)CreatePort(0,0))
{
/* Allocate printerIO union */
if (PIO = (union printerIO *)CreateExtIO(PrinterMP, sizeof(union printerIO)))
{
/* Open the printer.device */
if (!(OpenDevice("printer.device",0,(struct IORequest *)PIO,0)))
{
/* Now that we've got the device opened, let's see what we've got.
* First, get a pointer to the printer data.
*/
PD = (struct PrinterData *)PIO->iodrp.io_Device;
/* And a pointer to the extended data */
PED = (struct PrinterExtendedData *)&PD->pd_SegmentData->ps_PED;
/* See the <devices/prtbase.h> include file for more details on
* the PrinterData and PrinterExtendedData structures.
*/
printf("Printername: '%s', Version: %ld, Revision: %ld\n",
PED->ped_PrinterName, PD->pd_SegmentData->ps_Version,
PD->pd_SegmentData->ps_Revision);
printf("PrinterClass: 0x%lx, ColorClass: 0x%lx\n",
PED->ped_PrinterClass, PED->ped_ColorClass);
printf("MaxColumns: %ld, NumCharSets: %ld, NumRows: %ld\n",
PED->ped_MaxColumns, PED->ped_NumCharSets,PED->ped_NumRows);
printf("MaxXDots: %ld, MaxYDots: %ld, XDotsInch: %ld, YDotsInch: %ld\n",
PED->ped_MaxXDots, PED->ped_MaxYDots, PED->ped_XDotsInch, PED->ped_YDotsInch);
CloseDevice((struct IORequest *)PIO);
}
else
printf("Can't open printer.device\n");
DeleteExtIO((struct IORequest *)PIO);
}
else
printf("Can't CreateExtIO\n");
DeletePort((struct MsgPort *)PrinterMP);
}
else
printf("Can't CreatePort\n");
}