os/persistentdata/traceservices/tracefw/ulogger/src/outfrwkchans/serial/uloggerserialplugin.cpp
Update contrib.
1 // Copyright (c) 2007-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 <ecom/implementationproxy.h>
19 #include "uloggerserialplugin.h"
21 #if defined(__LIGHTLOGGER_ENABLED)
22 #include "lightlogger.h"
28 #if defined (__WINS__)
29 _LIT(KPddDev, "ECDRV.PDD");
31 _LIT(KPddDev, "EUART1");
34 #if defined (__WINS__)
35 _LIT(KLddDev, "ECOMM.LDD");
37 _LIT(KLddDev, "ECOMM");
40 //settings for serial output plugin
41 _LIT(KPortNumber, "output_port");
44 Creates an instance of CSerialWriter object
45 @return a pointer to the new created CSerialWriter Object
46 @leave KErrNoMemory if no memory
48 CSerialWriter* CSerialWriter::NewL()
50 CSerialWriter *me = new (ELeave) CSerialWriter;
51 CleanupStack::PushL(me);
60 CSerialWriter::~CSerialWriter()
66 CSerialWriter::CSerialWriter()
70 void CSerialWriter::ConstructL()
74 TInt err = User::LoadPhysicalDevice(KPddDev);
75 if(err!=KErrNone && err!=KErrAlreadyExists)
78 err = User::LoadLogicalDevice(KLddDev);
79 if(err!=KErrNone && err!=KErrAlreadyExists)
83 void CSerialWriter::CloseOutputPlugin()
88 TInt CSerialWriter::ConfigureOutputPlugin(const RPointerArray<TPluginConfiguration>& aSettings)
90 TInt i = aSettings.Count();
93 TPluginConfiguration* key = aSettings[i];
95 if(key->Key().Compare(KPortNumber) == 0)
97 TLex lex(key->Value());
103 TInt err = Connect();
111 TInt CSerialWriter::Connect()
116 err = iComm.Open(iPortNum);
128 TInt CSerialWriter::Config()
134 TCommConfigV02& cfg = cfgBuf();
135 iComm.Config(cfgBuf);
136 cfg.iRate = EBps115200;// default EBps9600;
137 cfg.iDataBits = EData8;// default EData8;
138 cfg.iStopBits = EStop1;// default EStop1;
139 cfg.iParity = EParityNone;// default EParityNone;
140 cfg.iHandshake = 0;// default KConfigObeyCTS;
141 cfg.iParityError = KConfigParityErrorFail;
142 cfg.iFifo = EFifoEnable;// default EFifoEnable;
143 cfg.iSpecialRate = 0;// default 0;
144 cfg.iTerminatorCount = 0;// default 0;
145 cfg.iXonChar = 0x11;// default 0x11; // XON
146 cfg.iXoffChar = 0x13;// default 0x13; // XOFF
147 cfg.iParityErrorChar = 0;// default 0;
148 cfg.iSIREnable = ESIRDisable;// default ESIRDisable;
149 cfg.iSIRSettings = 0;// no default
151 err = iComm.SetConfig(cfgBuf);
152 if(err!=KErrNone && err!=KErrInUse)
162 TInt CSerialWriter::Disconnect()
172 TInt CSerialWriter::Write(const TDesC8& aData)
178 TRequestStatus writeStatus;
179 iComm.Write(writeStatus, aData);
180 User::WaitForRequest(writeStatus);
181 err = writeStatus.Int();
188 TAny* CSerialWriter::GetInterfaceL(TPluginInterface aInterfaceId)
190 if(aInterfaceId == MOutputPlugin::iInterfaceId)
191 return static_cast<MOutputPlugin*>(this);
199 //Ecom Implementations
200 // Map the interface implementation UIDs to implementation factory functions
201 const TImplementationProxy ImplementationTable[] =
203 IMPLEMENTATION_PROXY_ENTRY(0x102836CB, Ulogger::CSerialWriter::NewL)
207 // Exported proxy for instantiation method resolution.
208 EXPORT_C const TImplementationProxy* ImplementationGroupProxy(
211 aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
212 return ImplementationTable;