--- a/telephonyprotocols/gprsumtsqosinterface/src/UmtsNifControlIf.cpp Mon May 03 13:37:20 2010 +0300
+++ b/telephonyprotocols/gprsumtsqosinterface/src/UmtsNifControlIf.cpp Thu May 06 15:10:38 2010 +0100
@@ -1,529 +1,529 @@
-// Copyright (c) 2006-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 "UmtsNifControlIf.h"
-
-GLDEF_C TInt E32Dll()
- {
- return(KErrNone);
- }
-
-//
-// Fills the strcuture with invalid default values at creation
-//
-//lint -e{1927} would want to use inilializer list
-EXPORT_C TContextParameters::TContextParameters()
- {
- iContextType = EContextTypeUnknown; // Default value to indicate invalid
- iContextInfo.iContextId = (TInt8)-1;// Default value to indicate invalid
- iContextInfo.iStatus = RPacketContext::EStatusUnknown;
- iContextConfig.Reset();
- iTFTOperationCode = 0; // Default value to indicate invalid
- iReasonCode = KErrGeneral;
- }
-
-
-// Class to handle one Traffic Flow Template
-// Includes 1 - 8 Filters
-//lint -e{1927} would want to use inilializer list
-EXPORT_C TTFTInfo::TTFTInfo()
- {
- iFilterCount = 0;
- iLastReturnedFilter = 0;
-#ifdef SYMBIAN_NETWORKING_UMTSR5
- iIMCNSubsystemflag = 0;
-#endif
-
- for(TUint counter = 0; counter < KMaxNumberOfPacketFilters; counter++)
- {
- iFilterSlots[counter] = EFalse; // All free
- }
- iSblpParams = NULL;
- }
-
-EXPORT_C TInt TTFTInfo::Set(const TTFTInfo& aInfo)
- {
- TUint counter;
- iFilterCount = aInfo.iFilterCount;
-#ifdef SYMBIAN_NETWORKING_UMTSR5
- iIMCNSubsystemflag = aInfo.iIMCNSubsystemflag;
-#endif
-
- // Loop© the new set of filters
- for(counter = 0; counter < KMaxNumberOfPacketFilters; counter++)
- {
- iFilterSlots[counter] = aInfo.iFilterSlots[counter];
- iPacketFilters[counter] = aInfo.iPacketFilters[counter];
- }
-
- // Added for Sblp Implementation. Set the SBlP Parameters also
- if ( NULL == iSblpParams )
- {
- TRAPD(err, iSblpParams = RPacketContext::CTFTMediaAuthorizationV3::NewL());
- if(err != KErrNone)
- {
- return err;
- }
- }
- // Get The Params
- aInfo.GetSblpToken(*iSblpParams);
-
- return KErrNone;
- }
-
-
-EXPORT_C TTFTInfo::~TTFTInfo()
- {
- // Additional Checking to prevent any accidental memory Leaks
- delete iSblpParams;
- }
-
-//
-// Adds a packet filter to the TFT. If a filter already exists with given id, it will
-// be replaced
-//
-EXPORT_C TInt TTFTInfo::AddPacketFilter(RPacketContext::TPacketFilterV2 aFilter)
- {
- TUint8 counter;
-
- // Search for existing with same ID to replace
- for(counter = 0; counter < KMaxNumberOfPacketFilters; counter++)
- {
- if( iFilterSlots[counter] &&
- iPacketFilters[counter].iId == aFilter.iId)
- {
- iPacketFilters[counter] = aFilter; // Replace existing
- return KErrNone;
- }
- }
-
- if(iFilterCount == KMaxNumberOfPacketFilters) // Already full
- {
- return KErrGeneral;
- }
-
- for(counter = 0; counter < KMaxNumberOfPacketFilters; counter++)
- if (iFilterSlots[counter] == EFalse)
- {
- iFilterSlots[counter] = ETrue; // Reserve filter slot
- iPacketFilters[counter] = aFilter;
- iFilterCount++;
- iLastReturnedFilter = 0; // Resets the iterator
- return KErrNone;
- }
-
- __ASSERT_DEBUG(counter < KMaxNumberOfPacketFilters, User::Panic(_L("No space for filter"), -1));
-
- return KErrGeneral;
- }
-//
-// Fetch a filter with given id
-//
-EXPORT_C TInt TTFTInfo::GetPacketFilter(RPacketContext::TPacketFilterV2& aFilter)
- {
- TUint8 counter;
- for(counter = 0; counter < KMaxNumberOfPacketFilters; counter++)
- {
- if( iFilterSlots[counter] &&
- iPacketFilters[counter].iId == aFilter.iId)
- {
- aFilter = iPacketFilters[counter];
- break;
- }
-
- }
-
- if(counter >= KMaxNumberOfPacketFilters)
- return KErrNotFound;
- else
- return KErrNone;
- }
-
-//
-// Remove a filter with given id
-//
-EXPORT_C TInt TTFTInfo::RemovePacketFilter(RPacketContext::TPacketFilterV2 aFilter)
- {
- TUint8 counter;
- for(counter = 0; counter < KMaxNumberOfPacketFilters; counter++)
- {
- if( iFilterSlots[counter] &&
- iPacketFilters[counter].iId == aFilter.iId)
- {
- iFilterSlots[counter] = EFalse;
- break;
- }
- }
-
- if(counter >= KMaxNumberOfPacketFilters)
- return KErrNotFound;
- else
- {
- iFilterCount--;
- iLastReturnedFilter = 0; // Resets the iterator
-
- return KErrNone;
- }
-
- }
-//
-// Iterate the next filter in TFT
-//
-EXPORT_C TInt TTFTInfo::NextPacketFilter(RPacketContext::TPacketFilterV2& aFilter)
- {
- if(iLastReturnedFilter >= KMaxNumberOfPacketFilters) // Iterator finished
- return KErrNotFound;
-
- TUint8 counter;
- for(counter = iLastReturnedFilter; counter < KMaxNumberOfPacketFilters; counter++)
- {
- if(iFilterSlots[counter])
- {
- iLastReturnedFilter = counter;
- aFilter = iPacketFilters[counter];
- iLastReturnedFilter++;
- break;
- }
- }
- if(counter == KMaxNumberOfPacketFilters)
- return KErrNotFound;
- else
- return KErrNone;
- }
-
-//
-// Reset the iterator
-//
-EXPORT_C void TTFTInfo::SetToFirst()
- {
- iLastReturnedFilter = 0;
- }
-
-//
-// Reset the iterator
-//
-EXPORT_C TUint8 TTFTInfo::FilterCount()
- {
- return iFilterCount;
- }
-
-#ifdef SYMBIAN_NETWORKING_UMTSR5
-EXPORT_C TInt TTFTInfo::SetIMCNSubsystemflag(TBool aIMCNSubsystemflag)
- {
- iIMCNSubsystemflag = aIMCNSubsystemflag;
- return KErrNone;
- }
-
-EXPORT_C TInt TTFTInfo::GetIMCNSubsystemflag(TBool &aIMCNSubsystemflag) const
- {
- aIMCNSubsystemflag = iIMCNSubsystemflag;
- return KErrNone;
- }
-#endif
-
-
-EXPORT_C TTFTInfo& TTFTInfo::operator=(const TTFTInfo& aTFTInfo)
- {
- // Assigning to self is NOP.
- if (this == &aTFTInfo)
- return *this;
-
- iFilterCount = aTFTInfo.iFilterCount;
- iLastReturnedFilter = aTFTInfo.iLastReturnedFilter;
-#ifdef SYMBIAN_NETWORKING_UMTSR5
- iIMCNSubsystemflag = aTFTInfo.iIMCNSubsystemflag;
-#endif
-
- // not using something like Mem::Copy since RPacketContext::TPacketFilterV2 might change in the future
- for (TUint i = 0; i < KMaxNumberOfPacketFilters; ++i)
- {
- iPacketFilters[i] = aTFTInfo.iPacketFilters[i];
- iFilterSlots[i] = aTFTInfo.iFilterSlots[i];
- }
-
- if (aTFTInfo.iSblpParams)
- {
- AddSblpToken(aTFTInfo.iSblpParams->iAuthorizationToken,aTFTInfo.iSblpParams->iFlowIds);
- }
-
- return *this;
- }
-
-//coverity[pass_by_value]
-EXPORT_C TInt TTFTInfo::AddSblpToken(RPacketContext::TAuthorizationToken aAuthorizationToken,
- RArray<RPacketContext::CTFTMediaAuthorizationV3::TFlowIdentifier> aFlowIds)
- {
- // Check whether memory is allocated to the Member or not
- if ( NULL == iSblpParams )
- {
- TRAPD(err, iSblpParams = RPacketContext::CTFTMediaAuthorizationV3::NewL());
- if(err != KErrNone)
- {
- return err;
- }
- }
-
- iSblpParams->iAuthorizationToken.Copy(aAuthorizationToken);
-
- iSblpParams->iFlowIds.Reset();
- TInt i;
- for(i=0; i<aFlowIds.Count();i++)
- {
- iSblpParams->iFlowIds.Append(aFlowIds[i]);
- }
-
- return KErrNone;
- }
-
-// Getter Function
-EXPORT_C TInt TTFTInfo::GetSblpToken ( RPacketContext::CTFTMediaAuthorizationV3 & aSblpParams ) const
- {
- // Check whether memory is allocated to the Member or not
- if ( NULL == iSblpParams )
- {
- return KErrNotFound;
- }
-
- // Copy using the Internalize mechanism of CTFTMediaAuthorisationV3
- HBufC8 * externalizeData = NULL;
- // First Externalize
- TRAPD(err,iSblpParams->ExternalizeL(externalizeData));
- if(err != KErrNone)
- {
- return err;
- }
- TPtr8 internalizePtr = externalizeData->Des();
- TRAPD(err1,aSblpParams.InternalizeL(internalizePtr));
- if(err1 != KErrNone)
- {
- return err1;
- }
- // Cleanup Memory
- delete externalizeData;
-
- return KErrNone;
- }
-
-// removal Function
-EXPORT_C TInt TTFTInfo::RemovSblpToken ()
- {
- // delete Sblp Params
- if (iSblpParams != NULL)
- {
- delete iSblpParams;
- iSblpParams = NULL;
- }
- return KErrNone;
- }
-
-
-EXPORT_C TContextConfig::TContextConfig()
- {
- // Current default values for data come from Etel class constructors.
- // If they need other default values, they should be initialized here.
- // RPacketContext::TContextConfigGPRS
- // RPacketQoS::TQoSR99_R4Requested
- // RPacketQoS::TQoSR99_R4Negotiated
- // RPacketQos::TQoSR5Requested
- // RPacketQos::TQoSR5Negotiated
- }
-
-EXPORT_C TContextConfig::~TContextConfig()
- {
- }
-
-EXPORT_C void TContextConfig::Reset()
- {
- TContextConfig temp;
- Set(temp);
- }
-
-EXPORT_C TInt TContextConfig::Set(const TContextConfig& aConfig)
- {
- aConfig.GetUMTSQoSNeg(iUMTSQoS);
- aConfig.GetUMTSQoSReq(iUMTSQoSReq);
- aConfig.GetTFTInfo(iTFTInfo);
-
- iContextConfig = aConfig.iContextConfig;
- iContextConfig.iPdpType = aConfig.iContextConfig.iPdpType;
- iContextConfig.iAccessPointName = aConfig.iContextConfig.iAccessPointName;
- iContextConfig.iPdpAddress = aConfig.iContextConfig.iPdpAddress;
- iContextConfig.iPdpCompression = aConfig.iContextConfig.iPdpCompression;
-
- return KErrNone;
- }
-
-EXPORT_C TInt TContextConfig::SetPdpType(RPacketContext::TProtocolType aPdpType)
- {
- iContextConfig.iPdpType = aPdpType;
- return KErrNone;
- }
-
-EXPORT_C TInt TContextConfig::SetAccessPointName(const RPacketContext::TGSNAddress& aAccessPointName)
- {
- iContextConfig.iAccessPointName = aAccessPointName;
- return KErrNone;
- }
-
-EXPORT_C TInt TContextConfig::SetPdpAddress(const RPacketContext::TProtocolAddress& aPdpAddress)
- {
- iContextConfig.iPdpAddress = aPdpAddress;
- return KErrNone;
- }
-
-EXPORT_C TInt TContextConfig::SetPdpCompression(TUint aPdpCompression)
- {
- iContextConfig.iPdpCompression = aPdpCompression;
- return KErrNone;
- }
-
-EXPORT_C TInt TContextConfig::SetTFTInfo(const TTFTInfo& aTFTInfo)
- {
- iTFTInfo.Set(aTFTInfo);
- return KErrNone;
- }
-
-EXPORT_C TInt TContextConfig::GetPdpType(RPacketContext::TProtocolType& aPdpType) const
- {
- aPdpType = iContextConfig.iPdpType;
- return KErrNone;
- }
-
-EXPORT_C TInt TContextConfig::GetAccessPointName(RPacketContext::TGSNAddress& aAccessPointName) const
- {
- aAccessPointName = iContextConfig.iAccessPointName;
- return KErrNone;
- }
-
-EXPORT_C TInt TContextConfig::GetPdpAddress(RPacketContext::TProtocolAddress& aPdpAddress) const
- {
- aPdpAddress = iContextConfig.iPdpAddress;
- return KErrNone;
- }
-
-EXPORT_C TInt TContextConfig::GetPdpCompression(TUint& aPdpCompression) const
- {
- aPdpCompression = iContextConfig.iPdpCompression;
- return KErrNone;
- }
-
-EXPORT_C TInt TContextConfig::GetTFTInfo(TTFTInfo& aTFTInfo) const
- {
- aTFTInfo.Set(iTFTInfo);
- return KErrNone;
- }
-
-EXPORT_C TInt TContextConfig::SetUMTSQoSReq(const RPacketQoS::TQoSR99_R4Requested& aUMTSQoSRequest)
- {
- iUMTSQoSReq.iReqTrafficClass = aUMTSQoSRequest.iReqTrafficClass;
- iUMTSQoSReq.iMinTrafficClass = aUMTSQoSRequest.iMinTrafficClass;
- iUMTSQoSReq.iReqDeliveryOrderReqd = aUMTSQoSRequest.iReqDeliveryOrderReqd;
- iUMTSQoSReq.iMinDeliveryOrderReqd = aUMTSQoSRequest.iMinDeliveryOrderReqd;
- iUMTSQoSReq.iReqDeliverErroneousSDU = aUMTSQoSRequest.iReqDeliverErroneousSDU;
- iUMTSQoSReq.iMinDeliverErroneousSDU = aUMTSQoSRequest.iMinDeliverErroneousSDU;
- iUMTSQoSReq.iReqMaxSDUSize = aUMTSQoSRequest.iReqMaxSDUSize;
- iUMTSQoSReq.iMinAcceptableMaxSDUSize = aUMTSQoSRequest.iMinAcceptableMaxSDUSize;
- iUMTSQoSReq.iReqMaxRate = aUMTSQoSRequest.iReqMaxRate;
- iUMTSQoSReq.iMinAcceptableMaxRate = aUMTSQoSRequest.iMinAcceptableMaxRate;
- iUMTSQoSReq.iReqBER = aUMTSQoSRequest.iReqBER;
- iUMTSQoSReq.iMaxBER = aUMTSQoSRequest.iMaxBER;
- iUMTSQoSReq.iReqSDUErrorRatio = aUMTSQoSRequest.iReqSDUErrorRatio;
- iUMTSQoSReq.iMaxSDUErrorRatio = aUMTSQoSRequest.iMaxSDUErrorRatio;
- iUMTSQoSReq.iReqTrafficHandlingPriority = aUMTSQoSRequest.iReqTrafficHandlingPriority;
- iUMTSQoSReq.iMinTrafficHandlingPriority = aUMTSQoSRequest.iMinTrafficHandlingPriority;
- iUMTSQoSReq.iReqTransferDelay = aUMTSQoSRequest.iReqTransferDelay;
- iUMTSQoSReq.iMaxTransferDelay = aUMTSQoSRequest.iMaxTransferDelay;
- iUMTSQoSReq.iReqGuaranteedRate = aUMTSQoSRequest.iReqGuaranteedRate;
- iUMTSQoSReq.iMinGuaranteedRate = aUMTSQoSRequest.iMinGuaranteedRate;
-
-#ifdef SYMBIAN_NETWORKING_UMTSR5
- iUMTSQoSReq.iSignallingIndication = 0;
- iUMTSQoSReq.iSourceStatisticsDescriptor = RPacketQoS::ESourceStatisticsDescriptorUnknown;
-#endif
-
- return KErrNone;
- }
-
-EXPORT_C TInt TContextConfig::GetUMTSQoSReq(RPacketQoS::TQoSR99_R4Requested& aUMTSQoSRequest) const
- {
- aUMTSQoSRequest = iUMTSQoSReq;
- return KErrNone;
- }
-
-EXPORT_C TInt TContextConfig::SetUMTSQoSNeg(const RPacketQoS::TQoSR99_R4Negotiated& aUMTSQoS)
- {
- iUMTSQoS.iTrafficClass = aUMTSQoS.iTrafficClass;
- iUMTSQoS.iDeliveryOrderReqd = aUMTSQoS.iDeliveryOrderReqd;
- iUMTSQoS.iDeliverErroneousSDU = aUMTSQoS.iDeliverErroneousSDU;
- iUMTSQoS.iMaxSDUSize = aUMTSQoS.iMaxSDUSize;
- iUMTSQoS.iMaxRate = aUMTSQoS.iMaxRate;
- iUMTSQoS.iBER = aUMTSQoS.iBER;
- iUMTSQoS.iSDUErrorRatio = aUMTSQoS.iSDUErrorRatio;
- iUMTSQoS.iTrafficHandlingPriority = aUMTSQoS.iTrafficHandlingPriority;
- iUMTSQoS.iTransferDelay = aUMTSQoS.iTransferDelay;
- iUMTSQoS.iGuaranteedRate = aUMTSQoS.iGuaranteedRate;
-
-#ifdef SYMBIAN_NETWORKING_UMTSR5
- iUMTSQoS.iSignallingIndication = 0;
- iUMTSQoS.iSourceStatisticsDescriptor = RPacketQoS::ESourceStatisticsDescriptorUnknown;
-#endif
-
- return KErrNone;
- }
-
-EXPORT_C TInt TContextConfig::GetUMTSQoSNeg(RPacketQoS::TQoSR99_R4Negotiated& aUMTSQoS) const
- {
- aUMTSQoS = iUMTSQoS;
- return KErrNone;
- }
-
-EXPORT_C TInt TContextConfig::SetContextConfig(const RPacketContext::TContextConfigGPRS& aContextConfig)
- {
- iContextConfig = aContextConfig;
- return KErrNone;
- }
-
-EXPORT_C TInt TContextConfig::GetContextConfig(RPacketContext::TContextConfigGPRS& aContextConfig) const
- {
- aContextConfig = iContextConfig;
- return KErrNone;
- }
-
-#ifdef SYMBIAN_NETWORKING_UMTSR5
-EXPORT_C TInt TContextConfig::SetUMTSQoSNeg(const RPacketQoS::TQoSR5Negotiated& aR5QoSNeg)
- {
- iUMTSQoS = aR5QoSNeg;
- return KErrNone;
- }
-
-EXPORT_C TInt TContextConfig::GetUMTSQoSNeg(RPacketQoS::TQoSR5Negotiated& aR5QoSNeg) const
- {
- aR5QoSNeg = iUMTSQoS;
- return KErrNone;
- }
-
-EXPORT_C TInt TContextConfig::SetUMTSQoSReq(const RPacketQoS::TQoSR5Requested& aR5QoSReq)
- {
- iUMTSQoSReq = aR5QoSReq;
- return KErrNone;
- }
-
-EXPORT_C TInt TContextConfig::GetUMTSQoSReq(RPacketQoS::TQoSR5Requested& aR5QoSReq) const
- {
- aR5QoSReq = iUMTSQoSReq;
- return KErrNone;
- }
-#endif
-
+// Copyright (c) 2006-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 "UmtsNifControlIf.h"
+
+GLDEF_C TInt E32Dll()
+ {
+ return(KErrNone);
+ }
+
+//
+// Fills the strcuture with invalid default values at creation
+//
+//lint -e{1927} would want to use inilializer list
+EXPORT_C TContextParameters::TContextParameters()
+ {
+ iContextType = EContextTypeUnknown; // Default value to indicate invalid
+ iContextInfo.iContextId = (TInt8)-1;// Default value to indicate invalid
+ iContextInfo.iStatus = RPacketContext::EStatusUnknown;
+ iContextConfig.Reset();
+ iTFTOperationCode = 0; // Default value to indicate invalid
+ iReasonCode = KErrGeneral;
+ }
+
+
+// Class to handle one Traffic Flow Template
+// Includes 1 - 8 Filters
+//lint -e{1927} would want to use inilializer list
+EXPORT_C TTFTInfo::TTFTInfo()
+ {
+ iFilterCount = 0;
+ iLastReturnedFilter = 0;
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+ iIMCNSubsystemflag = 0;
+#endif
+
+ for(TUint counter = 0; counter < KMaxNumberOfPacketFilters; counter++)
+ {
+ iFilterSlots[counter] = EFalse; // All free
+ }
+ iSblpParams = NULL;
+ }
+
+EXPORT_C TInt TTFTInfo::Set(const TTFTInfo& aInfo)
+ {
+ TUint counter;
+ iFilterCount = aInfo.iFilterCount;
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+ iIMCNSubsystemflag = aInfo.iIMCNSubsystemflag;
+#endif
+
+ // Loop© the new set of filters
+ for(counter = 0; counter < KMaxNumberOfPacketFilters; counter++)
+ {
+ iFilterSlots[counter] = aInfo.iFilterSlots[counter];
+ iPacketFilters[counter] = aInfo.iPacketFilters[counter];
+ }
+
+ // Added for Sblp Implementation. Set the SBlP Parameters also
+ if ( NULL == iSblpParams )
+ {
+ TRAPD(err, iSblpParams = RPacketContext::CTFTMediaAuthorizationV3::NewL());
+ if(err != KErrNone)
+ {
+ return err;
+ }
+ }
+ // Get The Params
+ aInfo.GetSblpToken(*iSblpParams);
+
+ return KErrNone;
+ }
+
+
+EXPORT_C TTFTInfo::~TTFTInfo()
+ {
+ // Additional Checking to prevent any accidental memory Leaks
+ delete iSblpParams;
+ }
+
+//
+// Adds a packet filter to the TFT. If a filter already exists with given id, it will
+// be replaced
+//
+EXPORT_C TInt TTFTInfo::AddPacketFilter(RPacketContext::TPacketFilterV2 aFilter)
+ {
+ TUint8 counter;
+
+ // Search for existing with same ID to replace
+ for(counter = 0; counter < KMaxNumberOfPacketFilters; counter++)
+ {
+ if( iFilterSlots[counter] &&
+ iPacketFilters[counter].iId == aFilter.iId)
+ {
+ iPacketFilters[counter] = aFilter; // Replace existing
+ return KErrNone;
+ }
+ }
+
+ if(iFilterCount == KMaxNumberOfPacketFilters) // Already full
+ {
+ return KErrGeneral;
+ }
+
+ for(counter = 0; counter < KMaxNumberOfPacketFilters; counter++)
+ if (iFilterSlots[counter] == EFalse)
+ {
+ iFilterSlots[counter] = ETrue; // Reserve filter slot
+ iPacketFilters[counter] = aFilter;
+ iFilterCount++;
+ iLastReturnedFilter = 0; // Resets the iterator
+ return KErrNone;
+ }
+
+ __ASSERT_DEBUG(counter < KMaxNumberOfPacketFilters, User::Panic(_L("No space for filter"), -1));
+
+ return KErrGeneral;
+ }
+//
+// Fetch a filter with given id
+//
+EXPORT_C TInt TTFTInfo::GetPacketFilter(RPacketContext::TPacketFilterV2& aFilter)
+ {
+ TUint8 counter;
+ for(counter = 0; counter < KMaxNumberOfPacketFilters; counter++)
+ {
+ if( iFilterSlots[counter] &&
+ iPacketFilters[counter].iId == aFilter.iId)
+ {
+ aFilter = iPacketFilters[counter];
+ break;
+ }
+
+ }
+
+ if(counter >= KMaxNumberOfPacketFilters)
+ return KErrNotFound;
+ else
+ return KErrNone;
+ }
+
+//
+// Remove a filter with given id
+//
+EXPORT_C TInt TTFTInfo::RemovePacketFilter(RPacketContext::TPacketFilterV2 aFilter)
+ {
+ TUint8 counter;
+ for(counter = 0; counter < KMaxNumberOfPacketFilters; counter++)
+ {
+ if( iFilterSlots[counter] &&
+ iPacketFilters[counter].iId == aFilter.iId)
+ {
+ iFilterSlots[counter] = EFalse;
+ break;
+ }
+ }
+
+ if(counter >= KMaxNumberOfPacketFilters)
+ return KErrNotFound;
+ else
+ {
+ iFilterCount--;
+ iLastReturnedFilter = 0; // Resets the iterator
+
+ return KErrNone;
+ }
+
+ }
+//
+// Iterate the next filter in TFT
+//
+EXPORT_C TInt TTFTInfo::NextPacketFilter(RPacketContext::TPacketFilterV2& aFilter)
+ {
+ if(iLastReturnedFilter >= KMaxNumberOfPacketFilters) // Iterator finished
+ return KErrNotFound;
+
+ TUint8 counter;
+ for(counter = iLastReturnedFilter; counter < KMaxNumberOfPacketFilters; counter++)
+ {
+ if(iFilterSlots[counter])
+ {
+ iLastReturnedFilter = counter;
+ aFilter = iPacketFilters[counter];
+ iLastReturnedFilter++;
+ break;
+ }
+ }
+ if(counter == KMaxNumberOfPacketFilters)
+ return KErrNotFound;
+ else
+ return KErrNone;
+ }
+
+//
+// Reset the iterator
+//
+EXPORT_C void TTFTInfo::SetToFirst()
+ {
+ iLastReturnedFilter = 0;
+ }
+
+//
+// Reset the iterator
+//
+EXPORT_C TUint8 TTFTInfo::FilterCount()
+ {
+ return iFilterCount;
+ }
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+EXPORT_C TInt TTFTInfo::SetIMCNSubsystemflag(TBool aIMCNSubsystemflag)
+ {
+ iIMCNSubsystemflag = aIMCNSubsystemflag;
+ return KErrNone;
+ }
+
+EXPORT_C TInt TTFTInfo::GetIMCNSubsystemflag(TBool &aIMCNSubsystemflag) const
+ {
+ aIMCNSubsystemflag = iIMCNSubsystemflag;
+ return KErrNone;
+ }
+#endif
+
+
+EXPORT_C TTFTInfo& TTFTInfo::operator=(const TTFTInfo& aTFTInfo)
+ {
+ // Assigning to self is NOP.
+ if (this == &aTFTInfo)
+ return *this;
+
+ iFilterCount = aTFTInfo.iFilterCount;
+ iLastReturnedFilter = aTFTInfo.iLastReturnedFilter;
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+ iIMCNSubsystemflag = aTFTInfo.iIMCNSubsystemflag;
+#endif
+
+ // not using something like Mem::Copy since RPacketContext::TPacketFilterV2 might change in the future
+ for (TUint i = 0; i < KMaxNumberOfPacketFilters; ++i)
+ {
+ iPacketFilters[i] = aTFTInfo.iPacketFilters[i];
+ iFilterSlots[i] = aTFTInfo.iFilterSlots[i];
+ }
+
+ if (aTFTInfo.iSblpParams)
+ {
+ AddSblpToken(aTFTInfo.iSblpParams->iAuthorizationToken,aTFTInfo.iSblpParams->iFlowIds);
+ }
+
+ return *this;
+ }
+
+//coverity[pass_by_value]
+EXPORT_C TInt TTFTInfo::AddSblpToken(RPacketContext::TAuthorizationToken aAuthorizationToken,
+ RArray<RPacketContext::CTFTMediaAuthorizationV3::TFlowIdentifier> aFlowIds)
+ {
+ // Check whether memory is allocated to the Member or not
+ if ( NULL == iSblpParams )
+ {
+ TRAPD(err, iSblpParams = RPacketContext::CTFTMediaAuthorizationV3::NewL());
+ if(err != KErrNone)
+ {
+ return err;
+ }
+ }
+
+ iSblpParams->iAuthorizationToken.Copy(aAuthorizationToken);
+
+ iSblpParams->iFlowIds.Reset();
+ TInt i;
+ for(i=0; i<aFlowIds.Count();i++)
+ {
+ iSblpParams->iFlowIds.Append(aFlowIds[i]);
+ }
+
+ return KErrNone;
+ }
+
+// Getter Function
+EXPORT_C TInt TTFTInfo::GetSblpToken ( RPacketContext::CTFTMediaAuthorizationV3 & aSblpParams ) const
+ {
+ // Check whether memory is allocated to the Member or not
+ if ( NULL == iSblpParams )
+ {
+ return KErrNotFound;
+ }
+
+ // Copy using the Internalize mechanism of CTFTMediaAuthorisationV3
+ HBufC8 * externalizeData = NULL;
+ // First Externalize
+ TRAPD(err,iSblpParams->ExternalizeL(externalizeData));
+ if(err != KErrNone)
+ {
+ return err;
+ }
+ TPtr8 internalizePtr = externalizeData->Des();
+ TRAPD(err1,aSblpParams.InternalizeL(internalizePtr));
+ if(err1 != KErrNone)
+ {
+ return err1;
+ }
+ // Cleanup Memory
+ delete externalizeData;
+
+ return KErrNone;
+ }
+
+// removal Function
+EXPORT_C TInt TTFTInfo::RemovSblpToken ()
+ {
+ // delete Sblp Params
+ if (iSblpParams != NULL)
+ {
+ delete iSblpParams;
+ iSblpParams = NULL;
+ }
+ return KErrNone;
+ }
+
+
+EXPORT_C TContextConfig::TContextConfig()
+ {
+ // Current default values for data come from Etel class constructors.
+ // If they need other default values, they should be initialized here.
+ // RPacketContext::TContextConfigGPRS
+ // RPacketQoS::TQoSR99_R4Requested
+ // RPacketQoS::TQoSR99_R4Negotiated
+ // RPacketQos::TQoSR5Requested
+ // RPacketQos::TQoSR5Negotiated
+ }
+
+EXPORT_C TContextConfig::~TContextConfig()
+ {
+ }
+
+EXPORT_C void TContextConfig::Reset()
+ {
+ TContextConfig temp;
+ Set(temp);
+ }
+
+EXPORT_C TInt TContextConfig::Set(const TContextConfig& aConfig)
+ {
+ aConfig.GetUMTSQoSNeg(iUMTSQoS);
+ aConfig.GetUMTSQoSReq(iUMTSQoSReq);
+ aConfig.GetTFTInfo(iTFTInfo);
+
+ iContextConfig = aConfig.iContextConfig;
+ iContextConfig.iPdpType = aConfig.iContextConfig.iPdpType;
+ iContextConfig.iAccessPointName = aConfig.iContextConfig.iAccessPointName;
+ iContextConfig.iPdpAddress = aConfig.iContextConfig.iPdpAddress;
+ iContextConfig.iPdpCompression = aConfig.iContextConfig.iPdpCompression;
+
+ return KErrNone;
+ }
+
+EXPORT_C TInt TContextConfig::SetPdpType(RPacketContext::TProtocolType aPdpType)
+ {
+ iContextConfig.iPdpType = aPdpType;
+ return KErrNone;
+ }
+
+EXPORT_C TInt TContextConfig::SetAccessPointName(const RPacketContext::TGSNAddress& aAccessPointName)
+ {
+ iContextConfig.iAccessPointName = aAccessPointName;
+ return KErrNone;
+ }
+
+EXPORT_C TInt TContextConfig::SetPdpAddress(const RPacketContext::TProtocolAddress& aPdpAddress)
+ {
+ iContextConfig.iPdpAddress = aPdpAddress;
+ return KErrNone;
+ }
+
+EXPORT_C TInt TContextConfig::SetPdpCompression(TUint aPdpCompression)
+ {
+ iContextConfig.iPdpCompression = aPdpCompression;
+ return KErrNone;
+ }
+
+EXPORT_C TInt TContextConfig::SetTFTInfo(const TTFTInfo& aTFTInfo)
+ {
+ iTFTInfo.Set(aTFTInfo);
+ return KErrNone;
+ }
+
+EXPORT_C TInt TContextConfig::GetPdpType(RPacketContext::TProtocolType& aPdpType) const
+ {
+ aPdpType = iContextConfig.iPdpType;
+ return KErrNone;
+ }
+
+EXPORT_C TInt TContextConfig::GetAccessPointName(RPacketContext::TGSNAddress& aAccessPointName) const
+ {
+ aAccessPointName = iContextConfig.iAccessPointName;
+ return KErrNone;
+ }
+
+EXPORT_C TInt TContextConfig::GetPdpAddress(RPacketContext::TProtocolAddress& aPdpAddress) const
+ {
+ aPdpAddress = iContextConfig.iPdpAddress;
+ return KErrNone;
+ }
+
+EXPORT_C TInt TContextConfig::GetPdpCompression(TUint& aPdpCompression) const
+ {
+ aPdpCompression = iContextConfig.iPdpCompression;
+ return KErrNone;
+ }
+
+EXPORT_C TInt TContextConfig::GetTFTInfo(TTFTInfo& aTFTInfo) const
+ {
+ aTFTInfo.Set(iTFTInfo);
+ return KErrNone;
+ }
+
+EXPORT_C TInt TContextConfig::SetUMTSQoSReq(const RPacketQoS::TQoSR99_R4Requested& aUMTSQoSRequest)
+ {
+ iUMTSQoSReq.iReqTrafficClass = aUMTSQoSRequest.iReqTrafficClass;
+ iUMTSQoSReq.iMinTrafficClass = aUMTSQoSRequest.iMinTrafficClass;
+ iUMTSQoSReq.iReqDeliveryOrderReqd = aUMTSQoSRequest.iReqDeliveryOrderReqd;
+ iUMTSQoSReq.iMinDeliveryOrderReqd = aUMTSQoSRequest.iMinDeliveryOrderReqd;
+ iUMTSQoSReq.iReqDeliverErroneousSDU = aUMTSQoSRequest.iReqDeliverErroneousSDU;
+ iUMTSQoSReq.iMinDeliverErroneousSDU = aUMTSQoSRequest.iMinDeliverErroneousSDU;
+ iUMTSQoSReq.iReqMaxSDUSize = aUMTSQoSRequest.iReqMaxSDUSize;
+ iUMTSQoSReq.iMinAcceptableMaxSDUSize = aUMTSQoSRequest.iMinAcceptableMaxSDUSize;
+ iUMTSQoSReq.iReqMaxRate = aUMTSQoSRequest.iReqMaxRate;
+ iUMTSQoSReq.iMinAcceptableMaxRate = aUMTSQoSRequest.iMinAcceptableMaxRate;
+ iUMTSQoSReq.iReqBER = aUMTSQoSRequest.iReqBER;
+ iUMTSQoSReq.iMaxBER = aUMTSQoSRequest.iMaxBER;
+ iUMTSQoSReq.iReqSDUErrorRatio = aUMTSQoSRequest.iReqSDUErrorRatio;
+ iUMTSQoSReq.iMaxSDUErrorRatio = aUMTSQoSRequest.iMaxSDUErrorRatio;
+ iUMTSQoSReq.iReqTrafficHandlingPriority = aUMTSQoSRequest.iReqTrafficHandlingPriority;
+ iUMTSQoSReq.iMinTrafficHandlingPriority = aUMTSQoSRequest.iMinTrafficHandlingPriority;
+ iUMTSQoSReq.iReqTransferDelay = aUMTSQoSRequest.iReqTransferDelay;
+ iUMTSQoSReq.iMaxTransferDelay = aUMTSQoSRequest.iMaxTransferDelay;
+ iUMTSQoSReq.iReqGuaranteedRate = aUMTSQoSRequest.iReqGuaranteedRate;
+ iUMTSQoSReq.iMinGuaranteedRate = aUMTSQoSRequest.iMinGuaranteedRate;
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+ iUMTSQoSReq.iSignallingIndication = 0;
+ iUMTSQoSReq.iSourceStatisticsDescriptor = RPacketQoS::ESourceStatisticsDescriptorUnknown;
+#endif
+
+ return KErrNone;
+ }
+
+EXPORT_C TInt TContextConfig::GetUMTSQoSReq(RPacketQoS::TQoSR99_R4Requested& aUMTSQoSRequest) const
+ {
+ aUMTSQoSRequest = iUMTSQoSReq;
+ return KErrNone;
+ }
+
+EXPORT_C TInt TContextConfig::SetUMTSQoSNeg(const RPacketQoS::TQoSR99_R4Negotiated& aUMTSQoS)
+ {
+ iUMTSQoS.iTrafficClass = aUMTSQoS.iTrafficClass;
+ iUMTSQoS.iDeliveryOrderReqd = aUMTSQoS.iDeliveryOrderReqd;
+ iUMTSQoS.iDeliverErroneousSDU = aUMTSQoS.iDeliverErroneousSDU;
+ iUMTSQoS.iMaxSDUSize = aUMTSQoS.iMaxSDUSize;
+ iUMTSQoS.iMaxRate = aUMTSQoS.iMaxRate;
+ iUMTSQoS.iBER = aUMTSQoS.iBER;
+ iUMTSQoS.iSDUErrorRatio = aUMTSQoS.iSDUErrorRatio;
+ iUMTSQoS.iTrafficHandlingPriority = aUMTSQoS.iTrafficHandlingPriority;
+ iUMTSQoS.iTransferDelay = aUMTSQoS.iTransferDelay;
+ iUMTSQoS.iGuaranteedRate = aUMTSQoS.iGuaranteedRate;
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+ iUMTSQoS.iSignallingIndication = 0;
+ iUMTSQoS.iSourceStatisticsDescriptor = RPacketQoS::ESourceStatisticsDescriptorUnknown;
+#endif
+
+ return KErrNone;
+ }
+
+EXPORT_C TInt TContextConfig::GetUMTSQoSNeg(RPacketQoS::TQoSR99_R4Negotiated& aUMTSQoS) const
+ {
+ aUMTSQoS = iUMTSQoS;
+ return KErrNone;
+ }
+
+EXPORT_C TInt TContextConfig::SetContextConfig(const RPacketContext::TContextConfigGPRS& aContextConfig)
+ {
+ iContextConfig = aContextConfig;
+ return KErrNone;
+ }
+
+EXPORT_C TInt TContextConfig::GetContextConfig(RPacketContext::TContextConfigGPRS& aContextConfig) const
+ {
+ aContextConfig = iContextConfig;
+ return KErrNone;
+ }
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+EXPORT_C TInt TContextConfig::SetUMTSQoSNeg(const RPacketQoS::TQoSR5Negotiated& aR5QoSNeg)
+ {
+ iUMTSQoS = aR5QoSNeg;
+ return KErrNone;
+ }
+
+EXPORT_C TInt TContextConfig::GetUMTSQoSNeg(RPacketQoS::TQoSR5Negotiated& aR5QoSNeg) const
+ {
+ aR5QoSNeg = iUMTSQoS;
+ return KErrNone;
+ }
+
+EXPORT_C TInt TContextConfig::SetUMTSQoSReq(const RPacketQoS::TQoSR5Requested& aR5QoSReq)
+ {
+ iUMTSQoSReq = aR5QoSReq;
+ return KErrNone;
+ }
+
+EXPORT_C TInt TContextConfig::GetUMTSQoSReq(RPacketQoS::TQoSR5Requested& aR5QoSReq) const
+ {
+ aR5QoSReq = iUMTSQoSReq;
+ return KErrNone;
+ }
+#endif
+