Update contrib.
1 // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
17 #include "printerport.h"
19 _LIT(KPdrStoreECUART,"ECUART");
21 EXPORT_C CFilePrinterPort* CFilePrinterPort::NewL(const TDesC& aFileName)
23 CFilePrinterPort* fileprinterport = new(ELeave) CFilePrinterPort(aFileName);
24 CleanupStack::PushL(fileprinterport);
25 fileprinterport->ConstructL();
27 return fileprinterport;
30 EXPORT_C CFilePrinterPort::~CFilePrinterPort()
34 iFs.Delete(iFileName); // ignore error
37 /** Implementation of the pure virtual function inherited from CPrinterPort.
39 Writes data asynchronously to the concrete file printer port.
41 @param aBuf A descriptor containing the data to be written to the file printer port.
42 @param aRequestStatus A reference to the request status object.
43 On completion contains KErrNone if the data is successfully written to
44 this file printer port, otherwise if the request is cancelled, this should
47 void CFilePrinterPort::WriteRequest(const TDesC8& aBuf, TRequestStatus& aRequestStatus)
49 // iFile.Write(aBuf,aRequestStatus); //!! real code with fixed F32
51 TRequestStatus* pStatus=&aRequestStatus; // F32 bug workaround code
52 User::RequestComplete(pStatus, iFile.Write(aBuf)); // F32 bug workaround code
55 void CFilePrinterPort::Cancel()
60 void CFilePrinterPort::ConstructL()
62 User::LeaveIfError(iFs.Connect());
63 User::LeaveIfError(iFile.Replace(iFs, iFileName,EFileStream|EFileWrite));
66 CFilePrinterPort::CFilePrinterPort(const TDesC& aFileName)
67 : iFileName(aFileName)
71 EXPORT_C TOutputHandshake::TOutputHandshake()
79 EXPORT_C void TOutputHandshake::InternalizeL(RReadStream& aStream)
81 iXonXoff = aStream.ReadInt8L();
82 iCts = aStream.ReadInt8L();
83 iDsr = aStream.ReadInt8L();
84 iDcd = aStream.ReadInt8L();
87 EXPORT_C void TOutputHandshake::ExternalizeL(RWriteStream& aStream) const
89 aStream.WriteInt8L(iXonXoff);
90 aStream.WriteInt8L(iCts);
91 aStream.WriteInt8L(iDsr);
92 aStream.WriteInt8L(iDcd);
95 EXPORT_C TSerialPrinterPortConfig::TSerialPrinterPortConfig()
100 iIgnoreParity(EFalse),
105 EXPORT_C void TSerialPrinterPortConfig::InternalizeL(RReadStream& aStream)
107 iRate = (TBps) aStream.ReadInt8L();
108 iDataBits = (TDataBits) aStream.ReadInt8L();
109 iStopBits = (TStopBits) aStream.ReadInt8L();
110 iParity = (TParity) aStream.ReadInt8L();
111 iIgnoreParity = aStream.ReadInt8L();
112 iHandshake.InternalizeL(aStream);
115 EXPORT_C void TSerialPrinterPortConfig::ExternalizeL(RWriteStream& aStream) const
117 aStream.WriteInt8L(iRate);
118 aStream.WriteInt8L(iDataBits);
119 aStream.WriteInt8L(iStopBits);
120 aStream.WriteInt8L(iParity);
121 aStream.WriteInt8L(iIgnoreParity);
122 iHandshake.ExternalizeL(aStream);
125 EXPORT_C CCommPrinterPort* CCommPrinterPort::NewL(const TDesC& aCsyName, const TDesC& aPortName, const TSerialPrinterPortConfig& aConfig, const TFifo aFifo)
127 CCommPrinterPort* commprinterport = new(ELeave) CCommPrinterPort;
128 CleanupStack::PushL(commprinterport);
129 commprinterport->ConstructL(aCsyName, aPortName, aConfig, aFifo);
131 return commprinterport;
134 EXPORT_C CCommPrinterPort::~CCommPrinterPort()
140 EXPORT_C void CCommPrinterPort::WriteRequest(const TDesC8& aBuf, TRequestStatus& aRequestStatus)
142 iComm.Write(aRequestStatus, 20000000, aBuf); // Times out after 20 seconds
145 EXPORT_C void CCommPrinterPort::Cancel()
150 EXPORT_C void CCommPrinterPort::ConstructL(const TDesC& aCsyName, const TDesC& aPortName, const TSerialPrinterPortConfig& aConfig, const TFifo aFifo)
152 User::LeaveIfError(iCommServ.Connect());
153 User::LeaveIfError(iCommServ.LoadCommModule(aCsyName));
154 User::LeaveIfError(iComm.Open(iCommServ, aPortName, ECommExclusive));
157 iComm.Config(config);
158 config().iRate = aConfig.iRate;
159 config().iDataBits = aConfig.iDataBits;
160 config().iStopBits = aConfig.iStopBits;
161 config().iParityErrorChar = STATIC_CAST(TText8, aConfig.iParity);
162 if (aConfig.iIgnoreParity)
163 config().iParityErrorChar = KConfigParityErrorIgnore;
165 if (aConfig.iHandshake.iXonXoff)
166 handshake = handshake | KConfigObeyXoff;
167 if (aConfig.iHandshake.iCts)
168 handshake = handshake | KConfigObeyCTS;
169 if (aConfig.iHandshake.iDsr)
170 handshake = handshake | KConfigObeyDSR;
171 if (aConfig.iHandshake.iDcd)
172 handshake = handshake | KConfigObeyDCD;
173 config().iHandshake = handshake;
174 config().iFifo = aFifo;
175 User::LeaveIfError(iComm.SetConfig(config));
178 EXPORT_C CCommPrinterPort::CCommPrinterPort()
185 EXPORT_C CSerialPrinterPort* CSerialPrinterPort::NewL(const TDesC& aPortName, const TSerialPrinterPortConfig& aConfig)
187 CSerialPrinterPort* serialprinterport=new(ELeave) CSerialPrinterPort(aConfig);
188 CleanupStack::PushL(serialprinterport);
189 serialprinterport->ConstructL(aPortName);
191 return serialprinterport;
194 EXPORT_C CSerialPrinterPort::~CSerialPrinterPort()
198 EXPORT_C TSerialPrinterPortConfig CSerialPrinterPort::Config()
203 void CSerialPrinterPort::ConstructL(const TDesC& aPortName)
205 CCommPrinterPort::ConstructL(KPdrStoreECUART, aPortName, iConfig);
208 CSerialPrinterPort::CSerialPrinterPort(const TSerialPrinterPortConfig& aConfig)
209 : CCommPrinterPort(),
214 EXPORT_C CParallelPrinterPort* CParallelPrinterPort::NewL(const TDesC& aPortName)
216 CParallelPrinterPort* parallelprinterport = new(ELeave) CParallelPrinterPort;
217 CleanupStack::PushL(parallelprinterport);
218 parallelprinterport->ConstructL(aPortName);
220 return parallelprinterport;
223 EXPORT_C CParallelPrinterPort::~CParallelPrinterPort()
227 void CParallelPrinterPort::ConstructL(const TDesC& aPortName)
229 TSerialPrinterPortConfig config;
230 config.iRate = EBps19200;
231 config.iHandshake.iXonXoff = ETrue;
232 config.iHandshake.iCts = EFalse;
233 config.iHandshake.iDsr = ETrue;
234 config.iHandshake.iDcd = ETrue;
235 CCommPrinterPort::ConstructL(KPdrStoreECUART, aPortName, config, EFifoDisable);
238 iComm.Write(stat, 10, TPtrC8(NULL, 0));
239 User::WaitForRequest(stat);
243 buf().iHandshake |= (KConfigFailDSR | KConfigFailDCD);
244 User::LeaveIfError(iComm.SetConfig(buf));
247 CParallelPrinterPort::CParallelPrinterPort()
252 EXPORT_C CIrdaPrinterPort* CIrdaPrinterPort::NewL()
254 CIrdaPrinterPort* irdaprinterport = new(ELeave) CIrdaPrinterPort;
255 CleanupStack::PushL(irdaprinterport);
256 irdaprinterport->ConstructL();
258 return irdaprinterport;
261 EXPORT_C CIrdaPrinterPort::~CIrdaPrinterPort()
265 void CIrdaPrinterPort::ConstructL()
267 TSerialPrinterPortConfig config;
268 _LIT(KPdrStoreIRCOMM,"IRCOMM");
269 _LIT(KPdrStoreIRCOMM0,"IrCOMM::0");
270 CCommPrinterPort::ConstructL(KPdrStoreIRCOMM, KPdrStoreIRCOMM0, config, EFifoDisable);
273 CIrdaPrinterPort::CIrdaPrinterPort()
278 EXPORT_C CEpocConnectPort* CEpocConnectPort::NewL()
280 CEpocConnectPort* epocconnectport = new(ELeave) CEpocConnectPort;
281 CleanupStack::PushL(epocconnectport);
282 epocconnectport->ConstructL();
284 return epocconnectport;
287 EXPORT_C CEpocConnectPort::~CEpocConnectPort()
291 void CEpocConnectPort::ConstructL()
293 TSerialPrinterPortConfig config;
294 _LIT(KPdrStorePLPLPT,"PLPLPT");
295 _LIT(KPdrStorePLPLPT0,"PLPLPT::0");
296 CCommPrinterPort::ConstructL(KPdrStorePLPLPT, KPdrStorePLPLPT0, config, EFifoDisable);
299 CEpocConnectPort::CEpocConnectPort()