diff -r 000000000000 -r 29b1cd4cb562 irda/irdastack/SSRC/client-side/IR_SOCK.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/irda/irdastack/SSRC/client-side/IR_SOCK.CPP Fri Jan 15 08:13:17 2010 +0200 @@ -0,0 +1,252 @@ +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#include + +#include +#include +#include +#include +#include "IR_CONST.H" + +EXPORT_C TIrdaSockAddr::TIrdaSockAddr() : TSockAddr() +/** Default constructor. Sets the protocol family to the value of the constant +KIrdaAddrFamily. */ + { + SetFamily(KIrdaAddrFamily); + SetUserLen(sizeof(SIrdaAddr)); + addrPtr()->iSpare = 0; + } + +// +// Copy constructor - takes a previously filled TSockAddr and +// parses it for result fields. Useful for client code only. +// +EXPORT_C TIrdaSockAddr::TIrdaSockAddr(const TSockAddr &aAddr) +/** Copy constructor. Assumes that the source address is an IrDA socket address. + +@param aAddr A socket address assumed to be valid IrDA socket address. */ + { + SetFamily(KIrdaAddrFamily); + SetPort(aAddr.Port()); + SetRemoteDevAddr(TIrdaSockAddr::Cast(aAddr).GetRemoteDevAddr()); + SetHostDevAddr(TIrdaSockAddr::Cast(aAddr).GetHostDevAddr()); + SetSniffStatus(TIrdaSockAddr::Cast(aAddr).GetSniffStatus()); + SetSolicitedStatus(TIrdaSockAddr::Cast(aAddr).GetSolicitedStatus()); + SetIrlapVersion(TIrdaSockAddr::Cast(aAddr).GetIrlapVersion()); + SetCharacterSet(TIrdaSockAddr::Cast(aAddr).GetCharacterSet()); + SetFirstServiceHintByte(TIrdaSockAddr::Cast(aAddr).GetFirstServiceHintByte()); + SetSecondServiceHintByte(TIrdaSockAddr::Cast(aAddr).GetSecondServiceHintByte()); + SetServiceHintByteCount(TIrdaSockAddr::Cast(aAddr).GetServiceHintByteCount()); + SetHomePort(TIrdaSockAddr::Cast(aAddr).GetHomePort()); + SetRemotePort(TIrdaSockAddr::Cast(aAddr).GetRemotePort()); + + SetUserLen(sizeof(SIrdaAddr)); + } + +EXPORT_C TIrdaSockAddr &TIrdaSockAddr::Cast(const TSockAddr &aAddr) + { + return *((TIrdaSockAddr *)&aAddr); + } + +EXPORT_C TIrdaSockAddr &TIrdaSockAddr::Cast(const TSockAddr *aAddr) + { + return *((TIrdaSockAddr *)aAddr); + } + +EXPORT_C TUint TIrdaSockAddr::GetRemoteDevAddr() const + { + return addrPtr()->iRemoteDevAddr; + } + +EXPORT_C void TIrdaSockAddr::SetRemoteDevAddr(const TUint aRemote) + { + addrPtr()->iRemoteDevAddr=aRemote; + } + +EXPORT_C TUint TIrdaSockAddr::GetHostDevAddr() const + { + return addrPtr()->iHostDevAddr; + } + +EXPORT_C void TIrdaSockAddr::SetHostDevAddr(const TUint aHost) + { + addrPtr()->iHostDevAddr=aHost; + } + +EXPORT_C TBool TIrdaSockAddr::GetSniffStatus() const + { + return addrPtr()->iSniff; + } + +EXPORT_C void TIrdaSockAddr::SetSniffStatus(const TBool aSniffStatus) + { + addrPtr()->iSniff=aSniffStatus; + } + +EXPORT_C TBool TIrdaSockAddr::GetSolicitedStatus() const + { + return addrPtr()->iSolicited; + } + +EXPORT_C void TIrdaSockAddr::SetSolicitedStatus(const TBool aSolicitedStatus) + { + addrPtr()->iSolicited=aSolicitedStatus; + } + +EXPORT_C TUint8 TIrdaSockAddr::GetIrlapVersion() const + { + return addrPtr()->iIrlapVersion; + } + +EXPORT_C void TIrdaSockAddr::SetIrlapVersion(const TUint8 aIrlapVersion) + { + addrPtr()->iIrlapVersion=aIrlapVersion; + } + +EXPORT_C TUint8 TIrdaSockAddr::GetCharacterSet() const + { + return addrPtr()->iCharacterSet; + } + +EXPORT_C void TIrdaSockAddr::SetCharacterSet(const TUint8 aCharacterSet) + { + addrPtr()->iCharacterSet=aCharacterSet; + } + +EXPORT_C TUint8 TIrdaSockAddr::GetFirstServiceHintByte() const + { + return addrPtr()->iFirstServiceHintByte; + } + +EXPORT_C void TIrdaSockAddr::SetFirstServiceHintByte(const TUint8 aFirstServiceHintByte) + { + addrPtr()->iFirstServiceHintByte=aFirstServiceHintByte; + } + +EXPORT_C TUint8 TIrdaSockAddr::GetSecondServiceHintByte() const + { + return addrPtr()->iSecondServiceHintByte; + } + +EXPORT_C void TIrdaSockAddr::SetSecondServiceHintByte(const TUint8 aSecondServiceHintByte) + { + addrPtr()->iSecondServiceHintByte=aSecondServiceHintByte; + } + +EXPORT_C TUint8 TIrdaSockAddr::GetServiceHintByteCount() const + { + return addrPtr()->iServiceHintByteCount; + } + +EXPORT_C void TIrdaSockAddr::SetServiceHintByteCount(const TUint8 aServiceHintByteCount) + { + addrPtr()->iServiceHintByteCount=aServiceHintByteCount; + } + +EXPORT_C TUint8 TIrdaSockAddr::GetHomePort() const + { + return addrPtr()->iHomePort; + } + +EXPORT_C void TIrdaSockAddr::SetHomePort(const TUint8 aHomePort) + { + addrPtr()->iHomePort=aHomePort; + } + +EXPORT_C TUint8 TIrdaSockAddr::GetRemotePort() const + { + return addrPtr()->iRemotePort; + } + +EXPORT_C void TIrdaSockAddr::SetRemotePort(const TUint8 aRemotePort) + { + addrPtr()->iRemotePort=aRemotePort; + } + +TIrdaSockAddr::SIrdaAddr* TIrdaSockAddr::addrPtr() const + { + return (SIrdaAddr *)UserPtr(); + } + +/** +Stops the IrDA stack responding to discovery requests from +another device. + +@return KErrNone, if successful. + KErrPermissionDenied, if the method is called without the + required capabilities. + +@capability WriteDeviceData +@publishedAll +@released +*/ +EXPORT_C TInt RIrdaDiscoveryResponseSuppressor::Open() + { + return DefineAndSetKey(ETrue); + } + +/** +Stops the suppressor from blocking the sending of discovery responses +to remote IrDA devices. + +@publishedAll +@released +*/ +EXPORT_C void RIrdaDiscoveryResponseSuppressor::Close() + { + (void) DefineAndSetKey(EFalse); + } + +/** +Private helper function that defines the IrDA discovery responses +suppression P&S key and sets the specified suppression status. + +@param aSuppressDiscoveryResponses A boolean indicating if responses should be + suppressed or allowed. + +@return KErrNone, if successful. + KErrPermissionDenied, if the method is called without the + required capabilities. + +@internalComponent +@released +*/ +TInt RIrdaDiscoveryResponseSuppressor::DefineAndSetKey(TBool aSuppressDiscoveryResponses) + { + // Define the discovery response suppression property. + TSecurityPolicy policy = TSecurityPolicy(ECapabilityWriteDeviceData); + TInt rerr = RProperty::Define(KIrdaPropertyCategory, + KIrdaDiscoveryResponseSuppressor, + RProperty::EInt, + policy, + policy); + + if(rerr == KErrAlreadyExists || rerr == KErrNone) + { + TDiscoveryResponseSuppressorStatus status = aSuppressDiscoveryResponses ? + ESuppressDiscoveryResponses : + EAllowDiscoveryResponses; + + rerr = RProperty::Set(KIrdaPropertyCategory, + KIrdaDiscoveryResponseSuppressor, + status); + } + + // Forward the error if it is not KErrAlreadyExists. + return rerr; + } + +// EOF