source: trunk/pdr/src/ecset.c@ 5

Last change on this file since 5 was 5, checked in by bart, 17 years ago

Initial check in of port driver source

File size: 8.7 KB
Line 
1/**************************************************************************
2 *
3 * SOURCE FILE NAME = ECSET.C
4 *
5 * DESCRIPTIVE NAME = eCUPS part, this reads out dialog values
6 *
7 * Copyright : Bart van Leeuwen, netlabs 2006
8 *
9 ****************************************************************************/
10
11#define LINT_ARGS /* argument checking enabled */
12
13#define INCL_DOS
14#define INCL_GPI
15#undef INCL_GPI
16#define INCL_DEV
17#define INCL_DOSMEMMGR /* Include standard OS/2 support */
18#define INCL_DOSMODULEMGR /* For DosLoadModule */
19#define INCL_DOSPROCESS
20#define INCL_GPILCIDS
21#define INCL_WINCOMMON /* Include Window Management support */
22#define INCL_WINDOWMGR
23#define INCL_WINSWITCHLIST
24#define INCL_WINPROGRAMLIST
25#define INCL_WINMENUS
26#define INCL_WINWINDOWMGR
27#define INCL_WINMESSAGEMGR
28#define INCL_WINDIALOGS
29#define INCL_WINSTATICS
30#define INCL_WINLISTBOXES
31#define INCL_WINMENUS
32#define INCL_WINSYS
33#define INCL_WINFRAMEMGR
34#define INCL_INCLWINACCELERATORS
35#define INCL_WINPOINTERS
36#define INCL_WINERRORS
37#define INCL_WINSHELLDATA
38
39#define INCL_WINTYPES
40#define INCL_WINACCELERATORS
41#define INCL_WINBUTTONS
42#define INCL_WINENTRYFIELDS
43#define INCL_WINRECTANGLES
44#define INCL_WINTIMER
45#define INCL_WINSCROLLBARS
46#define INCL_WINHEAP
47#define INCL_SHLERRORS
48#define INCL_WININPUT
49#define INCL_WINHELP
50#define INCL_WINSTDSPIN
51#define INCL_WINSTDFILE
52
53
54#define INCL_SPL
55#define INCL_SPLP
56#define INCL_SPLERRORS
57#define INCL_SHLERRORS
58#define INCL_DOSERRORS
59#define INCL_WINHOOKS
60#define INCL_SPLDOSPRINT
61
62
63
64#include <os2.h>
65
66#include <stdlib.h>
67#include <stdio.h>
68#include <string.h>
69#include <time.h>
70
71#include "ecups.h"
72#include "ecdebug.h"
73
74
75
76extern ECUPSSESSIONDATA eCUPSSession;
77
78/*
79** If port driver is not defined in INI file yet
80** assume it exists in the boot drive's \OS2\DLL directory
81*/
82extern PSZ szDefaultPortDrvPath;
83
84// This structure is the base for key data pairs stored in the INI file
85
86
87
88// in this array we can easely extend the data stored in the INI File
89// add a key name, pointer to a variable which holds the data, the datatype and the default value
90// the get and save data functions will do the work for you then
91
92
93
94
95
96
97ECUPSSESSIONDATA eCUPSSession = {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL};
98
99/****************************************************************************
100 *
101 * FUNCTION NAME = SavePortSettings
102 *
103 * DESCRIPTION = save any changed values for this COM port in INI file
104 *
105 * INPUT = pSerialData -> this port's information
106 *
107 * OUTPUT = TRUE - successful
108 * FALSE - PrfWrite failed
109 *
110 * RETURN-NORMAL = TRUE
111 * RETURN-ERROR = FALSE
112 *
113 ****************************************************************************/
114
115BOOL SavePortSettings()
116
117{
118 ULONG count,rc;
119// /*
120// ** Only save settings if they don't match original settings
121// **
122// ** Format of comm port initialization string:
123// ** "Baudrate;Parity;Wordlength;StopBits;Handshaking"
124// **
125// ** Default values are "9600;0;8;1;1;"
126// **
127// */
128
129 _PmpfF(("INICount %d",INICount));
130 for(count = 0; count < INICount; count ++)
131 {
132
133 if(INIKeys[count].ulType==2)
134 {
135 _PmpfF(("INKey: %d -> %s - %d -> %s",count,INIKeys[count].pszKeyName,INIKeys[count].ulType,*(PSZ*)INIKeys[count].pData));
136 PrfWriteProfileString (HINI_SYSTEMPROFILE,
137 APPNAME,
138 INIKeys[count].pszKeyName,
139 *(PSZ*)INIKeys[count].pData);
140 }
141 if(INIKeys[count].ulType==1)
142 {
143 _PmpfF(("INKey: %d -> %s - %d -> %d",count,INIKeys[count].pszKeyName,INIKeys[count].ulType,*(ULONG*)INIKeys[count].pData));
144 rc = PrfWriteProfileData (HINI_SYSTEMPROFILE,
145 APPNAME,
146 INIKeys[count].pszKeyName,
147 INIKeys[count].pData,
148 sizeof(ULONG));
149 }
150 }
151 return TRUE;
152}
153
154/****************************************************************************
155 *
156 * FUNCTION NAME = GetPortSettings
157 *
158 * DESCRIPTION = Get port Initialization settings from INI file
159 *
160 * INPUT = pSerialData -> structure containing port name.
161 * On return this will have port timeout,
162 * baud rate, word length, parity, stop bits
163 * and handshake.
164 *
165 * OUTPUT = TRUE - if INI information found for port
166 * FALSE - if INI info not found
167 *
168 * RETURN-NORMAL =
169 * RETURN-ERROR =
170 *
171 ****************************************************************************/
172
173BOOL GetPortSettings()
174{
175 ULONG ulDataSize,count,rc,temp;
176
177 for(count = 0; count < INICount; count ++)
178 {
179 ulDataSize=0;
180 if(INIKeys[count].ulType==2)
181 {
182 _PmpfF(("INKey: %d -> %s - %d rc=%d -> %s",count,INIKeys[count].pszKeyName,INIKeys[count].ulType,rc,*(PSZ*)INIKeys[count].pData));
183 PrfQueryProfileSize (HINI_SYSTEMPROFILE,
184 APPNAME,
185 INIKeys[count].pszKeyName,
186 &ulDataSize);
187 if(*(PSZ*)INIKeys[count].pData == NULL)
188 {
189 *(PSZ*)INIKeys[count].pData=malloc(ulDataSize);
190 }
191 else
192 {
193 free(*(PSZ*)INIKeys[count].pData);
194 *(PSZ*)INIKeys[count].pData=malloc(ulDataSize);
195 }
196
197 if(ulDataSize == 0)
198 {
199 if((PSZ)INIKeys[count].pDefault!=NULL)
200 {
201 _PmpfF(("default : %s",(PSZ)INIKeys[count].pDefault));
202 *(PSZ*)INIKeys[count].pData=malloc(strlen((PSZ)INIKeys[count].pDefault));
203 memcpy(*(PSZ*)INIKeys[count].pData,(PSZ)INIKeys[count].pDefault,strlen((PSZ)INIKeys[count].pDefault));
204 }
205 else
206 *(PSZ*)INIKeys[count].pData=NULL;
207 }
208 else
209 rc = PrfQueryProfileString (HINI_SYSTEMPROFILE,
210 APPNAME,
211 INIKeys[count].pszKeyName,
212 "x",
213 *(PSZ*)INIKeys[count].pData,
214 ulDataSize);
215
216 _PmpfF(("INKey: %d -> %s - %d rc=%d -> %s",count,INIKeys[count].pszKeyName,INIKeys[count].ulType,rc,*(PSZ*)INIKeys[count].pData));
217 }
218 if(INIKeys[count].ulType==1)
219 {
220 _PmpfF(("INKey: %d -> %s",count,INIKeys[count].pszKeyName));
221 PrfQueryProfileSize (HINI_SYSTEMPROFILE,
222 APPNAME,
223 INIKeys[count].pszKeyName,
224 &ulDataSize);
225 if(ulDataSize == 0)
226 {
227 _PmpfF(("default : %d",(ULONG*)INIKeys[count].pDefault));
228 *(ULONG*)INIKeys[count].pData=(ULONG*)INIKeys[count].pDefault;
229 }
230 else
231 PrfQueryProfileData (HINI_SYSTEMPROFILE,
232 APPNAME,
233 INIKeys[count].pszKeyName,
234 &temp,
235 &ulDataSize);
236 *(ULONG*)INIKeys[count].pData = temp;
237 _PmpfF(("INKey: %d -> %s - %d size: %d -> %d",count,INIKeys[count].pszKeyName,INIKeys[count].ulType,ulDataSize,*(ULONG*)INIKeys[count].pData));
238 }
239 }
240
241
242 return(TRUE);
243}
244
245/****************************************************************************
246 *
247 * FUNCTION NAME = GetPortDefaultSettings
248 *
249 * DESCRIPTION = Get port Initialization settings from INI file
250 *
251 * INPUT = pszSaveCommSetting - gets default port settings
252 *
253 * OUTPUT = TRUE - if INI information found for port
254 * FALSE - if INI info not found
255 *
256 * RETURN-NORMAL =
257 * RETURN-ERROR =
258 *
259 ****************************************************************************/
260
261VOID GetPortDefaultSettings(PSZ pszSaveCommSetting)
262{
263 ULONG ulDataSize,count,rc;
264
265
266 for(count = 0; count < INICount; count ++)
267 {
268
269 if(INIKeys[count].ulType==2)
270 {
271 *(PSZ*)INIKeys[count].pData=malloc(strlen((PSZ)INIKeys[count].pDefault));
272 memcpy(*(PSZ*)INIKeys[count].pData,(PSZ)INIKeys[count].pDefault,strlen((PSZ)INIKeys[count].pDefault));
273 }
274 if(INIKeys[count].ulType==1)
275 {
276 *(ULONG*)INIKeys[count].pData=malloc(sizeof(ULONG));
277 memcpy(*(ULONG*)INIKeys[count].pData,(ULONG*)INIKeys[count].pDefault,sizeof(ULONG));
278 }
279 }
280}
Note: See TracBrowser for help on using the repository browser.