source: trunk/notes@ 1

Last change on this file since 1 was 1, checked in by Alex Taylor, 12 years ago

RXPRTUTL: initial import

File size: 7.0 KB
Line 
1USING RPUPortSet
2
3The standard serial and parallel port drivers do not support the SplPdSet API.
4
5The PAR1284 port driver takes a data structure with the following format:
6
7 ULONG signature; /* Must be 0x52464E49 ('INFR') */
8 ULONG ulVersion; /* Must be 0x00000001 */
9 ULONG flStatus; /* Status flags: */
10 /* 0x00000001 BIDI_Q_PORT set (bidi enabled)*/
11 /* 0x00000002 Set after 1st attempt at bidi */
12 /* 0x00000004 Port connected to print queue */
13 /* 0x00000008 Port already open */
14 /* 0x00000010 Port open in progress */
15 /* 0x00000020 SplPdOpen being processed */
16 /* 0x00000040 SplPdClose being processed */
17 /* 0x00000080 XlateCmd has more alerts left */
18 /* 0x00000100 New printer or powered off */
19 /* 0x00000200 Set when deviceId was checked */
20 /* after first good write to a */
21 /* unidirectional printer. */
22 /* 0x00000400 Set when last write was sent */
23 /* using ECP mode cmd channel. */
24 /* 0x00000800 Set when printer put in bidi */
25 /* mode and DeviceID received. */
26 /* 0x00001000 Set when CommStatChange alert */
27 /* was posted to spooler. */
28 /* Cleared after BIDI_Q_PORT */
29 /* 0x00002000 Set when CommStatChange alert */
30 /* should not be set */
31 /* 0x00004000 Set when port has a network */
32 /* connection */
33 ULONG flBidiCapabilities; /* PRTPORT.flBidiCapabilities _CAPS_ */
34 ULONG flBidiProtocol; /* PRTPORT.flBidiProtocol _TYPE_ */
35 ULONG flJob; /* PRTSW.flJob flags */
36 ULONG flDevice; /* PRTSW.flDevice flags */
37 ULONG ulModeSelected; /* Mode selected by user(see PARMODE_) */
38 ULONG ulCurrentMode; /* Current mode of port(see CURMODE_) */
39 BOOL fShareAccess; /* Share port with DOS/Windows */
40 ULONG ulPrintTimeOut; /* Seconds to continue to retry job */
41 /* write request in SplPdWrite(). */
42 /* Default: 45 seconds */
43 ULONG ulNoQueryTimeOut; /* Seconds from last query until */
44 /* port drops printer connection */
45 /* Default: 180 seconds */
46 ULONG ulNoJobTimeOut; /* Seconds from last job sent until */
47 /* port drops printer connection */
48 /* NOTE: Connection can be dropped */
49 /* sooner if PDR receives */
50 /* BIDI_NOTIFY_ENDJOBCONNECT */
51 /* This is used if we lose */
52 /* a job acknowledgement so */
53 /* that other Apps can use the */
54 /* infrared port. */
55 /* Default: 300 seconds */
56 /* */
57 PPTIMEOUTCHANNEL TimeOut; /* Read and Write timeouts */
58 /* */
59 /* */
60 /* The following ulpsz fields are */
61 /* offsets from the beginning of */
62 /* this PORTSETTINGS structure to */
63 /* the variable length strings. */
64 /* This allows us to pass the buffer */
65 /* intact to PrtQuery and PrtSet, */
66 /* even across the network. */
67 /* All strings are packed immediately */
68 /* after the fixed-length PORTSETTINGS */
69 /* structure. */
70 /* */
71 /* An offset of 0 means no string */
72 /* */
73 ULONG ulpszPortName; /* -> name of port info is for */
74 ULONG ulpszDeviceID; /* -> 1284 deviceID for printer on port */
75} PORTSETTINGS, *PPORTSETTINGS;
76#define PAR12_SIGNATURE
77
78typedef struct _PPTIMEOUTCHANNEL{
79 ULONG ulReadIdleTimeOut; // millisecs DD has to complete entire Read
80 ULONG ulReadIntTimeOut; // millisecs DD waits for Read interrupt
81 ULONG ulWriteIdleTimeOut; // millisecs DD has to complete entire Write
82 ULONG ulWriteIntTimeOut; // millisecs DD waits for Write interrupt
83 ULONG ulLogChannel; // 1=use data channel, 2=use address channel
84} PPTIMEOUTCHANNEL, *PPPTIMEOUTCHANNEL;
85
86
87
88
89Port settings structure for CUPS.PDR:
90
91typedef struct _PORTSETTINGS {
92 CHAR szHost[ 65 ]; // CUPS server hostname/IP
93 CHAR szQueue[ 65 ]; // CUPS printer queue name
94} PORTSETTINGS, *PPORTSETTINGS;
95
96
97
98Port setting structure for SMB.PDR:
99
100/* szPortData contains all of the port parameters in a single buffer: */
101/* host */
102/* printer */
103/* workgroup */
104/* userid */
105/* copies */
106/* password */
107/* All except 'password' are verbatim character strings; 'password' is */
108/* a hexadecimal string. Fields are separated by '#'. All fields are */
109/* required; those with unspecified values are left empty. */
110
111typedef struct _PORTSETTINGS {
112 CHAR szPortData[ 256 ];
113} PORTSETTINGS, *PPORTSETTINGS;
Note: See TracBrowser for help on using the repository browser.