Windows NT 4.0 source code leak
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.
 
 
 
 
 
 

837 lines
33 KiB

/***************************************************************************
*
* File Name: ./inc/jetdirct.h
*
* Copyright (C) 1993-1996 Hewlett-Packard Company.
* All rights reserved.
*
* 11311 Chinden Blvd.
* Boise, Idaho 83714
*
* This is a part of the HP JetAdmin Printer Utility
*
* This source code is only intended as a supplement for support and
* localization of HP JetAdmin by 3rd party Operating System vendors.
* Modification of source code cannot be made without the express written
* consent of Hewlett-Packard.
*
*
* Description:
*
* Author: Name
*
*
* Modification history:
*
* date initials change description
*
* mm-dd-yy MJB
*
*
*
*
*
*
***************************************************************************/
/****************************************************************/
/* (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1992. ALL RIGHTS */
/* RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, */
/* REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT */
/* THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. */
/****************************************************************/
#ifndef _JETDIRCT_H
#define _JETDIRCT_H
#ifndef WINDOWS
#define WINDOWS // tells the Netware include file which OS we are developing for
#endif
#include <nwipxspx.h>
//efine DAT_SIZ 1050 /* maximum data portion of ipx buffer */
#define DAT_SIZ 576 /* maximum data portion of ipx buffer */
#define MAX_RCFG_SOCKETS 7
#define RCFG_SOCKET1 0x400c /* normally dynamic, it's now static */
#define RCFG_SOCKET2 0x401c /* multi-port device number 2 */
#define RCFG_SOCKET3 0x402c /* multi-port device number 3 */
#define RCFG_SOCKET4 0x403c /* multi-port device number 4 */
#define RCFG_SOCKET5 0x404c /* multi-port device number 5 */
#define RCFG_SOCKET6 0x405c /* multi-port device number 6 */
#define RCFG_SOCKET7 0x406c /* multi-port device number 7 */
#define DIRM_SOCKET 0x1234 /* BOGUS value; actually uses RCFG_SOCKET */
#define SQRY_SOCKET 0x0452
#define RIP_SOCKET 0x0453
#define DIAG_SOCKET 0x0456
#define COMCHECK_SOCKET 0x8008
#define SNMP_ALT_SOCKET 0x87e6 /* Used for JetDirect NLM */
#define SNMP_SOCKET 0x900f
#define PS_SOCKET 0x6080 /* not swapped */
#define SPX_ECB_CNT 2
#define IPX_ECB_CNT 1 /* how many listen buffers */
#define TICKS_SEC 18
#define IPX_SEC_FRACTS 3
#define IPX_WAIT_INT (TICKS_SEC/IPX_SEC_FRACTS) /* 6 ticks = .33 sec */
#define IPX_WAIT_MAX1 (5*IPX_SEC_FRACTS) /* 5 seconds */
#define IPX_WAIT_MAX2 (2*IPX_SEC_FRACTS) /* 5 seconds */
#define IPX_WAIT_FALLOFF (2*IPX_SEC_FRACTS) /* 2 seconds falloff */
/* 3 times/sec to 1 time/sec*/
#define RETRY_ERROR ((WORD)-1)
#define SPX_WAIT_MAX 5 /* five seconds */
#define MAX_IOCHAN_NAME_LEN 32
#define MAX_FSERVER_SLOTS 16
#define MAX_QUEUES 64
#define MAX_PJL_INFO_STRING 512
#define MAX_DMID_LEN 512
#define MIO_ASYNC_PERIPH_STAT_LEN 32
/*------------------------------------------------------------------------
*
* CONSTANTS
*
*----------------------------------------------------------------------*/
/* error codes */
#define NPI_NO_AVAILABLE_SPX_CONNECTS 0x0040
#define NPI_SPX_NOT_INITIALIZED 0x0041
#define NPI_NO_SUCH_NPI 0x0042
#define NPI_UNABLE_TO_GET_NPI_ADDR 0x0043
#define NPI_UNABLE_TO_CONNECT_TO_SERVER 0x0044
#define NPI_NO_AVAILABLE_IPX_SOCKETS 0x0045
#define NPI_ALREADY_ATTACHED_TO_NPI 0x0046
#define NPI_IPX_NOT_INITIALIZED 0x0047
#define NPI_CANNOT_ALLOC_MEMORY 0x0048
/* Bindery values */
#define OT_JETDIRECT 0x0c03
#define OT_BITTERROOT 0x1201
#define OT_ESI_BTRIDGEPORT 0x6303
#define OT_INTEL_NETPORT_I 0x0280
#define OT_COMPAQ_NIC 0x7301
#define OT_NDS_TREE 0x7802
#define OT_NETWORK_SCANNER 0x1508
/* String sizes - these include space for the NULL terminator */
#define MAX_BINDERY_NAME_LEN 48
#define MAX_UNIT_NAME_LEN 32
#define MIN_VALID_BINDERY_NAME_LEN (MAX_BINDERY_NAME_LEN - MAX_UNIT_NAME_LEN + 1)
#define MAX_NODE_NAME_LEN 28
#define MAX_NDS_TREE_LEN (32+1)
#define NODE_NAME_LEN MAX_UNIT_NAME_LEN
#define IPX_NODE_SIZE 6
#define IPX_ADDR_SIZE (2*IPX_NODE_SIZE)
#define OK (0)
/**** for unit type information see status.h ****/
/* Printer status codes */
#define RUNNING 0
#define OFFLINE 1
#define PAPEROUT 2
#define PRINTING 3
#define NOSTATUS 4
/* Configuration status types - These must coincide with PConfig */
#define NO_STATUS 0
#define NOT_CONFIGURED 1
#define CONFIG_ERROR 2
#define RCFG_BUSY 3
#define INITIALIZING_ADAPTER 4
#define SHUTDOWN 5
#define RPTR_TRYING_TO_CONNECT 6
#define RPTR_NO_PRINT_SERVER 7
#define RPTR_UNABLE_TO_CONNECT 8
#define RPTR_PRINTER_NUM_IN_USE 9
#define RPTR_PRINTER_NUM_NOT_DEFINED 10
#define RPTR_CONNECTED 11
#define RPTR_DISCONNECTING 12
#define SLURP_TRYING_TO_CONNECT 13
#define SLURP_NO_FILE_SERVER 14
#define SLURP_NO_UNENCRYPTION 15
#define SLURP_NO_LOGIN_ACCOUNT 16
#define SLURP_BAD_PASSWORD 17
#define SLURP_NO_QUEUE_ASSIGNED 18
#define SLURP_CONNECTED 19
#define SLURP_DISCONNECTING 20
#define SLURP_UNABLE_TO_CONNECT 21
#define SLURP_UNABLE_TO_NEGOTIATE 22
#define SLURP_UNABLE_TO_LOGIN 23
#define SLURP_UNABLE_TO_SET_PASSWORD 24
#define SLURP_UNABLE_TO_ATTACH_TO_QUEUE 25
#define SLURP_ATTACHED 26
#define SLURP_DISCONNECTING_NCP 27
#define SLURP_DISCONNECTING_BUF 28
#define RPTR_SPX_FAIL_WHILE_RESERVE 29
#define RPTR_DISCONNECTING_PSERVER 30
#define RPTR_DISCONNECTING_SPX 31
#define RPTR_DISCONNECTING_UNXPCTD 32
#define DM_LISTENING 33
#define DM_CONNECTED 34
#define NOVELL_DISABLED 35
#define NOVELL_NOT_IN_USE 36
/* config constants */
#define MODE_SLURP 0 /* QServer */
#define MODE_RPTR 1
#define MODE_DIRECT 2
#define NPIERR_NOIPX 1
#define NPIERR_NOSPX 2
#define NPIERR_NONETX 3
#define NPIERR_ACCESS 4
#define NPIERR_TBMI 5
#define NPIERR_OLDSHELL 6
#define PTR_CLASS_UNDEF 0
#define PTR_CLASS_PRINTER 1
#define PTR_CLASS_PLOTTER 2
#define PTR_CLASS_INSTRUMENT 3
// Timeout constants
//
#define APPLET_REQREPLY_RETRIES 2
#define APPLET_REQREPLY_RETRY_INTVL 500000L // (microseconds)
typedef BYTE LINKADDR[6]; // 6 byte link level address
typedef struct {
BYTE linkAddress[IPX_ADDR_SIZE]; /* ASCII representation in HEX */
BYTE frameType[2]; /* ASCII indication of link type*/
BYTE unitType[2]; /* ASCII representation in HEX */
BYTE unitName[NODE_NAME_LEN];
} SAP_ID;
typedef struct {
WORD responseType; /* general or nearest */
WORD serverType; /* OT_JETDIRECT */
SAP_ID serverName; /* bindery name */
IPXAddress serverAddress;
WORD intermediateNetworks; /* number of hops */
} SAPData;
typedef struct {
WORD serverType; /* assigned by Novell */
char serverName[48]; /* name */
IPXAddress serverAddress; /* server internetwork address */
WORD interveningNetworks; /* # of networks packet must traverse */
} svrID;
typedef struct {
WORD SAPPacketType; /* 2 or 4 */
svrID servers[7];
} qResp;
typedef struct { /* ipx listen buffer */
ECB *ecb;
IPXHeader *hdr;
qResp *rsp;
} IPXBuffer;
typedef struct DriverStatStr {
BYTE driverVersion[2];
BYTE statisticsVersion[2];
long totalTxPacketCount;
long totalRxPacketCount;
WORD noECBAvailableCount;
WORD packetTxTooBigCount;
WORD packetTxTooSmallCount;
WORD packetRxOverflowCount;
WORD packetRxTooBigCount;
WORD packetRxTooSmallCount;
WORD packetTxMiscErrorCount;
WORD packetRxMiscErrorCount;
WORD retryTxCount;
WORD checksumErrorCount;
WORD hardwareRxMismatchCount;
WORD numberOfCustomVariables;
BYTE variableData[495];
/* BYTE variableData[1]; */
} DriverStat;
typedef struct AllRespStr {
BYTE completionCode;
long intervalMarker;
} AllResp;
/*========================================================================
* The following packets describe a protocol used for communication
* between PConfig and RCFG over an established SPX connection.
*======================================================================*/
/* Request types */
#define SET_UNIT_NAME 0
#define UNIT_CONFIG_REQUEST 1
#define SET_UNIT_CONFIG 2
#define SHUTDOWN_UNIT 4
#define SET_MASK_REQUEST 5 /* Development mode request types */
#define CLEAR_MASK_REQUEST 6 /* Development mode request types */
#define UNIT_NAME_REQUEST 7
#define SET_UNIT_NOTIF_LANG 8
#define SET_RCFG_LEVEL 9
#define GET_PJL_INFO 0x0a
#define NOVELL_RESTART 0x0b
#define GET_EXTENDED_CONFIG 0x0c
#define SET_EXTENDED_CONFIG 0x0d
#define GET_PROTOCOL_STACKS 0x0e
#define SET_PROTOCOL_STACKS 0x0f
#define DIRECT_MODE_REQUEST 0x10
#define DIRECT_MODE_ID_REQUEST 0x11
#define DIRECT_MODE_NORMAL_DATA 0x12
#define UNIT_CONFIG_REQUEST2 0x13
#define SET_UNIT_CONFIG2 0x14
/* Response types */
#define UNIT_CONFIG_RESPONSE 1
#define LINK_CONFIG_RESPONSE 2 /* no longer used */
#define CONNECTION_STATUS 3 /* additional response code, unsolicited */
#define UNIT_NAME_RESPONSE 7
#define SET_RCFG_LEVEL_RESPONSE 9
#define PJL_INFO_RESPONSE 0x0a
#define EXTENDED_CONFIG_RESPONSE 0x0c
#define PROTOCOL_STACKS_RESPONSE 0x0e
#define DIRECT_MODE_RESPONSE 0x10
#define DIRECT_MODE_ID_RESPONSE 0x11
#define DIRECT_MODE_BACK_DATA 0x12
#define UNIT_CONFIG_RESPONSE2 0x13
#define MAX_RCFG_CONNS 4
#define MAX_RCFG_ASYNC_PERIPH_STAT_LEN 21
/* direct mode field values */
#define DMREQ_DATA_CONN 0x00
#define DMREQ_STATUS_CONN 0x01
#define DMREQ_NO_OPTIONS 0x00
#define DMREQ_EXT_BIN_STATUS 0x01
#define DMRESP_REQ_GRANTED 0x00
#define DMRESP_NOT_ALLOWED 0x01
#define DMRESP_NO_FREE_CONNS 0x02
#define DMRESP_NOT_ACCEPT_CONNS 0x03
#define DMND_NORMAL 0x00
#define DMND_EOJ 0x01
#define DMID_NOEOS 0x00
#define DMID_EOS 0x01
#define DMID_BITR_NOID 0x02
#define DMID_NOBITR_NOID 0x03
/* reset types */
#define SOFT_RESET 0
#define HARD_RESET 1
/* extended config constants */
#define SR_AUTO_SENSE 0
#define SR_SAME_RING 1
#define SR_SINGLE_ROUTE 2
#define SR_ALL_ROUTES 3
#define ENABLE_ALL_FRAMES 0
#define ENABLE_E8023 1
#define ENABLE_EII 2
#define ENABLE_E8022 3
#define ENABLE_ESNAP 4
#define ENABLE_TR8022 1
#define ENABLE_TRSNAP 2
#define PJL_NOT_USED 0
#define PJL_BANNER 1
#define PJL_EOJ 2
#define PJL_INFO 4
#define PJL_BANNER_EOJ 3
/* protocol stacks bit values */
#define ENABLE_NOVELL 0x01
#define ENABLE_LLC 0x02
#define ENABLE_TCPIP 0x04
#define ENABLE_APPLETALK 0x08
#define ENABLE_ALL 0xff
/* toner notification values */
#define TONER_NOTIF_INTERVENE 0
#define TONER_NOTIF_OPERATE 1
/* PJL request values */
#define PJL_INFO_ID 0
#define PJL_INFO_CONFIG 1
/* PJL response values */
#define PJL_OK_NOEOS 0
#define PJL_OK_EOS 1
#define PJL_NOTAVAIL 2
/* ASYNCH status constants */
#define MANUAL_FEED 2
#define TONER_CARTRIDGE_GONE 2
#define WARMUP 2
#define PRINTING_REGULAR 1
#define PRINTING_TEST_PAGE 2
#define OUTPUT_BIN_FULL 1
/*------------------------------------------------------------------------
*
* SET UNIT NAME
*
* Contains the new name for the Printer which is stored in NV RAM. This
* is only the user defined portion, not the entire SAP Identifier.
*
*----------------------------------------------------------------------*/
typedef struct {
BYTE requestCode; /* SET_UNIT_NAME */
char unitName[NODE_NAME_LEN];
} SetUnitNameReq;
/*------------------------------------------------------------------------
*
* GET UNIT NAME
*
* Used by JetAdmin to request a printer's name
*
*----------------------------------------------------------------------*/
typedef struct {
BYTE requestCode; /* UNIT_NAME_REQUEST */
} GetUnitNameReq;
/*------------------------------------------------------------------------
*
* UNIT NAME RESPONSE
*
* Contains the current name for the Printer which is stored in NV RAM.
* This is only the user defined portion, not the entire SAP Identifier.
*
*----------------------------------------------------------------------*/
typedef struct {
BYTE requestCode; /* UNIT_NAME_RESPONSE */
BYTE unitName[MAX_NODE_NAME_LEN + 1];
} GetUnitNameResp;
/*------------------------------------------------------------------------
*
* GET UNIT CONFIGURATION
*
* Used by PConfig to request a printer's configuration
*
*----------------------------------------------------------------------*/
typedef struct {
BYTE requestCode; /* UNIT_CONFIG_REQUEST */
} GetUnitConfigReq;
typedef struct {
BYTE line_state;
BYTE paper_state;
BYTE intervene_state;
BYTE new_mode;
BYTE connterm_ack;
BYTE periph_error;
BYTE io_reset;
BYTE paper_out;
BYTE paper_jam;
BYTE toner_low;
BYTE page_punt;
BYTE memory_out;
BYTE io_inactive;
BYTE periph_busy;
BYTE periph_waiting;
BYTE periph_init;
BYTE door_open;
BYTE periph_printing;
BYTE output_problem;
BYTE pad[12];
} ASYNCH_PERIPH_STATUS;
typedef struct {
BYTE line_state;
BYTE paper_state;
BYTE intervene_state;
BYTE new_mode;
BYTE connterm_ack;
BYTE periph_error;
BYTE io_reset;
BYTE paper_out;
BYTE paper_jam;
BYTE toner_low;
BYTE page_punt;
BYTE memory_out;
BYTE io_inactive;
BYTE periph_busy;
BYTE periph_waiting;
BYTE periph_init;
BYTE door_open;
BYTE periph_printing;
BYTE output_problem;
BYTE pad[2];
} ASYNCH_FRAG;
typedef struct {
BYTE responseCode; /* UNIT_CONFIG_RESPONSE */
BYTE operatingMode; /* The mode that the card is using */
BYTE connectionStatus; /* For the connection with the server */
BYTE printerStatus; /* Status of the printer */
BYTE server[MAX_BINDERY_NAME_LEN];
/* print server's name if configured */
BYTE printerNumber; /* printer number if configured */
BYTE FS1NCPCcode; /* queue serv file serv 1 NCP error code */
BYTE DMSConnectStatus; /* Direct mode status connection status */
BYTE asyncPeriphStatLen; /* mio async periph status length*/
ASYNCH_FRAG asyncPStat;
/* mio async peripheral status */
BYTE FSNumber; /* number of QS configured file servers */
struct { /* info for QS servers 2-8 */
BYTE FSConnectStatus; /* file server connection status */
BYTE FSNCPCcode; /* NCP raw error code */
BYTE FSName[MAX_BINDERY_NAME_LEN]; /* file server name */
} FSInfo[8-1];
} GetUnitConfigResp;
typedef struct {
/* printer status */
BYTE printerStatus; /* Status of the printer */
BYTE asyncPeriphStatLen; /* mio async periph status length */
ASYNCH_FRAG asyncPStat; /* fragment of mio asynch periph status */
BYTE operatingMode; /* mode that the card is using */
/* rprinter mode information */
BYTE rptrStatus; /* For the connection with the server */
TCHAR pserver[MAX_BINDERY_NAME_LEN]; /* print server's name if configured */
BYTE printerNumber; /* printer number if configured */
/* queue server information */
WORD maxQ; /* max number of queues supported */
WORD maxFS; /* max number of file servers supported */
struct { /* info for QS servers 2-8 */
BYTE FSConnectStatus; /* file server connection status */
BYTE FSNCPCcode; /* NCP raw error code */
TCHAR FSName[MAX_BINDERY_NAME_LEN]; /* file server name */
} FSInfo[MAX_FSERVER_SLOTS]; /* currently 16 servers */
} UnitConfig;
/*------------------------------------------------------------------------
*
* RESTART
*
* This request causes the Queue Server, Remote Printer, or Direct Mode
* host connections to be closed and/or logged out. Queue Server and
* Remote Printer will search for the server again. Queue Server will
* log in again and read configuration files again.
*
*----------------------------------------------------------------------*/
typedef struct {
BYTE requestCode; /* NOVELL_RESTART */
BYTE resetType; /* soft or hard reset */
} NovellRestartReq;
/*------------------------------------------------------------------------
*
* SET UNIT CONFIGURATION
*
* Used by PConfig to set a unit's configuration. It is legal to send
* a print server name with an empty string. This effectively clears the
* configuration of the card. It will not attempt to attach to a print
* server until a new configuration with a non-empty print server name
* is received.
*
*----------------------------------------------------------------------*/
typedef struct {
BYTE requestCode; /* SET_UNIT_CONFIG */
BYTE operatingMode; /* The mode that the card should use */
BYTE printServer[MAX_BINDERY_NAME_LEN];
BYTE printerNumber;
} SetUnitConfigReq0;
typedef struct {
BYTE requestCode; /* SET_UNIT_CONFIG */
BYTE operatingMode; /* The mode that the card should use */
BYTE printServer[MAX_BINDERY_NAME_LEN];
BYTE printerNumber;
struct { /* info for QS servers 2-8 */
BYTE FSName[MAX_BINDERY_NAME_LEN]; /* file server name */
} FSInfo[8-1];
BYTE padding; /* padding once req for algnmt */
} SetUnitConfigReq;
/*------------------------------------------------------------------------
*
* SHUTDOWN_UNIT
*
* Performs a "soft shutdown" of the card. The card will disconnect from
* the print server and remove its name from the file server's bindery.
* This helps perform a clean powerdown.
*
*----------------------------------------------------------------------*/
typedef struct {
BYTE requestCode; /* SHUTDOWN_UNIT */
} ShutdownUnitReq;
/*------------------------------------------------------------------------
*
* GET LINK CONFIGURATION (no longer used)
*
* Used by PConfig to request a printer's link-level configuration
*
*----------------------------------------------------------------------*/
typedef struct {
BYTE requestCode; /* LINK_CONFIG_REQUEST */
} GetLinkConfigReq;
typedef struct {
BYTE responseCode; /* LINK_CONFIG_RESPONSE */
BYTE activeConfigBits; /* config in effect now */
BYTE bootConfigBits; /* config takes effect next reboot */
} GetLinkConfigResp;
/*------------------------------------------------------------------------
*
* SET LINK CONFIGURATION (no longer available)
*
* Used by PConfig to set a unit's link-level configuration.
* The new configuration is written to non-volatile memory, but does not
* take effect until the printer is power-cycled.
*
*----------------------------------------------------------------------*/
typedef struct {
BYTE requestCode; /* SET_LINK_CONFIG */
BYTE configBits; /* see xport/xportifce.h */
} SetLinkConfigReq;
/*------------------------------------------------------------------------
*
* SET_MASK
*
* Development mode only
*
*----------------------------------------------------------------------*/
typedef struct {
BYTE requestCode; /* SET_MASK_REQUEST */
BYTE pad; /* unused */
WORD mbid; /* destination mailbox */
WORD mask; /* trace mask to set */
} SetMaskReq;
/*------------------------------------------------------------------------
*
* CLEAR_MASK
*
* Development mode only
*
*----------------------------------------------------------------------*/
typedef struct {
BYTE requestCode; /* CLEAR_MASK_REQUEST */
BYTE pad; /* unused */
WORD mbid; /* destination mailbox */
WORD mask; /* trace mask to clear */
} ClearMaskReq;
/*------------------------------------------------------------------------
*
* CONNECTION STATUS
*
* The card sends this packet to PConfig whenever the connection status
* changes. This message allows PConfig to update its screen in real time
*
*----------------------------------------------------------------------*/
typedef struct {
BYTE requestCode; /* CONNECTION_STATUS */
BYTE connectionStatus; /* see connection status consts */
} ConnectionStatus;
/*------------------------------------------------------------------------
*
* SET UNIT NOTIFY LANGUAGE
*
* Contains the notification language which is stored in NV RAM. This
* is only the user defined portion, not the entire SAP Identifier.
*
*----------------------------------------------------------------------*/
typedef struct {
BYTE requestCode; /* SET_UNIT_NOTIF_LANG */
BYTE language;
} SetUnitNotifLangReq;
/*------------------------------------------------------------------------
* SET RCFG LEVEL REQUEST
*----------------------------------------------------------------------*/
typedef struct {
BYTE request; /* SET_RCFG_LEVEL */
BYTE level; /* 0x01 = NetJet level 1 extended status */
} SetRcfgLevelReq;
/*------------------------------------------------------------------------
* SET RCFG LEVEL RESPONSE
*----------------------------------------------------------------------*/
typedef struct {
BYTE request; /* SET_RCFG_LEVEL_RESPONSE */
BYTE result; /* 0x00 = success */
/* 0x01 = level not supported */
} SetRcfgLevelResp;
/*------------------------------------------------------------------------
*
* SET EXTENDED CONFIG
*
* Used by PConfig to set a unit's configuration. It is legal to send
* a print server name with an empty string. This effectively clears the
* configuration of the card. It will not attempt to attach to a print
* server until a new configuration with a non-empty print server name
* is received.
*
*----------------------------------------------------------------------*/
typedef struct {
BYTE requestCode; /* SET_EXTENDED_CONFIG */
BYTE srcRouteOption; /* source routing option */
BYTE frameTypeEnable; /* frames type to enable; disabling others */
BYTE QSJobPollInterval; /* Queue Server job polling interval */
WORD SAPBroadcastInterval;/* SAP broadcast interval */
BYTE PJLEnableFlag; /* PJL enable flag */
BYTE tonerLowNotif; /* configuration for toner low notification */
} SetExtendedConfigReq;
/*------------------------------------------------------------------------
* GET EXTENDED CONFIG
*----------------------------------------------------------------------*/
typedef struct {
BYTE requestCode; /* GET_EXTENDED_CONFIG */
} GetExtendedConfigReq;
/*------------------------------------------------------------------------
* EXTENDED CONFIG RESPONSE
*----------------------------------------------------------------------*/
typedef struct {
BYTE responseCode; /* EXTENDED_CONFIG_RESPONSE */
BYTE MIOPeriphClass; /* MIO peripheral class */
WORD MIOPeriphID; /* MIO peripheral ID */
BYTE MIOAppletalk; /* Appletalk flag */
BYTE IOPhysicalMedia; /* IO card physical media */
BYTE srcRouteOption; /* source routing option */
BYTE frameTypeEnable; /* frames type to enable; disabling others */
BYTE QSJobPollInterval; /* Queue Server job polling interval */
BYTE reserved; /* pad for compiler alignment, don't use */
WORD SAPBroadcastInterval;/* SAP broadcast interval */
BYTE PJLEnableFlag; /* PJL enable flag */
BYTE tonerLowNotif; /* configuration for toner low notification */
} GetExtendedConfigResp;
/*------------------------------------------------------------------------
* SET PROTOCOL STACKS
*----------------------------------------------------------------------*/
typedef struct {
BYTE requestCode; /* SET_PROTOCOL_STACKS */
BYTE protocolEnable; /* protocol stacks to enable; set of bits */
} SetProtocolStacksReq;
/*------------------------------------------------------------------------
* GET PROTOCOL STACKS
*----------------------------------------------------------------------*/
typedef struct {
BYTE requestCode; /* GET_PROTOCOL_STACKS */
} GetProtocolStacksReq;
/*------------------------------------------------------------------------
* PROTOCOL STACKS RESPONSE
*----------------------------------------------------------------------*/
typedef struct {
BYTE responseCode; /* PROTOCOL_STACKS_RESPONSE */
BYTE protocolSupport; /* protocol stacks supported; set of bits */
BYTE protocolEnable; /* protocol stacks enabled; set of bits */
} GetProtocolStacksResp;
/*------------------------------------------------------------------------
* GET PJL INFO REQUEST
*----------------------------------------------------------------------*/
typedef struct {
BYTE requestCode; /* GET_PJL_INFO */
BYTE subFunction; /* subfunction of PJL INFO */
WORD infoOffset; /* offset from beginning of PJL info string */
} GetPJLInfoReq;
/*------------------------------------------------------------------------
* GET PJL INFO RESPONSE
*----------------------------------------------------------------------*/
typedef struct {
BYTE responseCode; /* PJL_INFO_RESPONSE */
BYTE resultCode; /* result code */
BYTE responseString[MAX_PJL_INFO_STRING];
/* PJL INFO response string */
} GetPJLInfoResp;
/*------------------------------------------------------------------------
* DIRECT MODE REQUEST AND RESPONSE
*----------------------------------------------------------------------*/
typedef struct {
BYTE requestCode; /* DIRECT_MODE_REQUEST */
BYTE connectionType; /* a data or status connection */
BYTE optionsReq; /* extended binary status */
BYTE reserved;
WORD timeWaiting; /* time in seconds host has been waiting */
WORD rptrTimeout; /* timeout for RPTR switching */
} DirectModeReq;
typedef struct {
BYTE responseCode; /* DIRECT_MODE_RESPONSE */
BYTE reqResponse; /* response to the direct mode request */
} DirectModeResp;
/*------------------------------------------------------------------------
* DIRECT MODE ID REQUEST AND RESPONSE
*----------------------------------------------------------------------*/
typedef struct {
BYTE requestCode; /* DIRECT_MODE_ID_REQUEST */
WORD idStrOffset; /* offset into peripheral id string */
} DirectModeIDReq;
typedef struct {
BYTE responseCode; /* DIRECT_MODE_ID_RESPONSE */
BYTE endStrStatus; /* end of string status */
BYTE idStr[MAX_DMID_LEN]; /* a segment of the id string */
} DirectModeIDResp;
/*------------------------------------------------------------------------
* DIRECT MODE DATA
*----------------------------------------------------------------------*/
typedef struct {
BYTE requestCode; /* DIRECT_MODE_NORMAL_DATA */
BYTE eojFlag; /* end of job flag */
BYTE jobData; /* first byte of job data */
} DirectModeNormalData;
typedef struct {
BYTE responseCode; /* DIRECT_MODE_BACK_DATA */
BYTE reserved; /* reserved, set to 00 */
BYTE backData; /* first byte of back data */
} DirectModeBackData;
#endif // _JETDIRCT_H