diff -r 18280709ae43 -r 15a2125aa2f3 networkprotocolmodules/common/suplrrlpasn1/src/suplresponse.cpp --- a/networkprotocolmodules/common/suplrrlpasn1/src/suplresponse.cpp Fri Jun 11 15:06:31 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,245 +0,0 @@ -// Copyright (c) 2008-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: -// - -/** - @file - @internalTechnology - -*/ - -#include "ULP.h" -#include "suplresponse.h" -#include "supldevloggermacros.h" - -/** -Static factory constructor -*/ -EXPORT_C CSuplResponse* CSuplResponse::NewL() - { - SUPLLOG(ELogP1, "CSuplResponse::NewL() Begin\n"); - CSuplResponse* self = new (ELeave) CSuplResponse(); - CleanupStack::PushL(self); - self->ConstructL(); - SUPLLOG(ELogP1, "CSuplResponse::NewL() End\n"); - CleanupStack::Pop(self); - return self; - } - -/** -Constructor -*/ -CSuplResponse::CSuplResponse() - : CSuplMessageBase::CSuplMessageBase(ESuplResponse, EFalse) - { - } - -/** -Second stage constructor -*/ -void CSuplResponse::ConstructL() - { - // call the base class ConstructL() to create common data structures - CSuplMessageBase::ConstructL(); - } - - -/** -Destructor -*/ -CSuplResponse::~CSuplResponse() - { - SUPLLOG(ELogP1, "CSuplResponse::~CSuplResponse() Begin\n"); - SUPLLOG(ELogP1, "CSuplResponse::~CSuplResponse() End\n"); - } - - -/** -GetPosMethod() - -The Positioning Method parameter of the SUPL RESPONSE message is the method -that SHALL be used for the SUPL POS session. - -@param aMethod on return, populated according to Pos Method parameter -@return error indication, KErrNone otherwise -*/ -EXPORT_C TInt CSuplResponse::GetPosMethod(TLbsNetPosRequestMethod& aMethod) - { - SUPLLOG(ELogP1, "CSuplResponse::GetPosMethod() Begin\n"); - __ASSERT_DEBUG(iData->message.u.msSUPLRESPONSE != NULL, User::Invariant()); - - // pointer to message body - ASN1T_SUPLRESPONSE* msgBody = iData->message.u.msSUPLRESPONSE; - - TLbsNetPosMethod posMethods[2]; - TInt numMethods = 1; - - switch (msgBody->posMethod) - { - case PosMethod::agpsSETassisted: - posMethods[0].SetPosMethod(KLbsPositioningMeansGps, TPositionModuleInfo::ETechnologyNetwork | TPositionModuleInfo::ETechnologyAssisted); - break; - - case PosMethod::agpsSETbased: - posMethods[0].SetPosMethod(KLbsPositioningMeansGps, TPositionModuleInfo::ETechnologyTerminal | TPositionModuleInfo::ETechnologyAssisted); - break; - - case PosMethod::agpsSETassistedpref: - posMethods[0].SetPosMethod(KLbsPositioningMeansGps, TPositionModuleInfo::ETechnologyNetwork | TPositionModuleInfo::ETechnologyAssisted); - posMethods[1].SetPosMethod(KLbsPositioningMeansGps, TPositionModuleInfo::ETechnologyTerminal | TPositionModuleInfo::ETechnologyAssisted); - ++numMethods; - break; - - case PosMethod::PosMethod::agpsSETbasedpref: - posMethods[0].SetPosMethod(KLbsPositioningMeansGps, TPositionModuleInfo::ETechnologyTerminal | TPositionModuleInfo::ETechnologyAssisted); - posMethods[1].SetPosMethod(KLbsPositioningMeansGps, TPositionModuleInfo::ETechnologyNetwork | TPositionModuleInfo::ETechnologyAssisted); - ++numMethods; - break; - - case PosMethod::autonomousGPS: - posMethods[0].SetPosMethod(KLbsPositioningMeansGps, TPositionModuleInfo::ETechnologyTerminal); - break; - - case PosMethod::aFLT: - posMethods[0].SetPosMethod(KLbsPositioningMeansAflt, TPositionModuleInfo::ETechnologyTerminal); - break; - - case PosMethod::eCID: - posMethods[0].SetPosMethod(KLbsPositioningMeansCell, TPositionModuleInfo::ETechnologyTerminal); - break; - - case PosMethod::PosMethod::eOTD: - posMethods[0].SetPosMethod(KLbsPositioningMeansEotd, TPositionModuleInfo::ETechnologyTerminal); - break; - - case PosMethod::oTDOA: - posMethods[0].SetPosMethod(KLbsPositioningMeansOtdoa, TPositionModuleInfo::ETechnologyTerminal); - break; - - case PosMethod::noPosition: - posMethods[0].SetPosMethod(KLbsPositioningMeansNone, TPositionModuleInfo::ETechnologyTerminal); - break; - - default: - // error - __ASSERT_DEBUG(EFalse, User::Invariant()); - return KErrArgument; - } - - // populate the return parameter - TInt err = aMethod.SetPosMethods(posMethods, numMethods); - - SUPLLOG(ELogP1, "CSuplResponse::GetPosMethod() End\n"); - return err; - } - - -/** -SlpAddressPresent() - -The SLP Address is conditionally present - it is required if the SUPL Session -is operating in non-Proxy mode, otherwise it is not required. - -@return ETrue if the SlpAddress parameter is present -*/ -EXPORT_C TBool CSuplResponse::SlpAddressPresent() - { - SUPLLOG(ELogP1, "CSuplResponse::SlpAddressPresent() Begin\n"); - __ASSERT_DEBUG(iData->message.u.msSUPLRESPONSE != NULL, User::Invariant()); - - if (iData->message.u.msSUPLRESPONSE->m.sLPAddressPresent == 0) - { - SUPLLOG(ELogP1, "CSuplResponse::SlpAddressPresent(EFalse) End\n"); - return EFalse; - } - - SUPLLOG(ELogP1, "CSuplResponse::SlpAddressPresent(ETrue) End\n"); - return ETrue; - } - - -/** -SlpAddress() - -@param aAddress, populated according to the SLP address parameter -@return error indication, KErrNone otherwise -*/ -EXPORT_C TInt CSuplResponse::GetSlpAddress(CSuplSlpAddress& aAddress) - { - SUPLLOG(ELogP1, "CSuplResponse::SlpAddress() Begin\n"); - __ASSERT_DEBUG(iData->message.u.msSUPLRESPONSE != NULL, User::Invariant()); - __ASSERT_DEBUG(iData->message.u.msSUPLRESPONSE->m.sLPAddressPresent != 0, User::Invariant()); - - // pointer to message body - ASN1T_SUPLRESPONSE* msgBody = iData->message.u.msSUPLRESPONSE; - - if (msgBody->m.sLPAddressPresent == 0) - { - SUPLLOG(ELogP1, "CSuplResponse::SlpAddress() End (SLP Address element not present)\n"); - return KErrNotFound; - } - - if (msgBody->sLPAddress.t == T_SLPAddress_fQDN) - { - // FQDN is a NULL terminated string, length 1..255 - aAddress.iSlpAddressType = ESuplSlpAddressTypeFqdn; - - // find the length of the FQDN (NULL terminated) - const TUint8* tmp = (const TUint8*)msgBody->sLPAddress.u.fQDN; - TPtrC8 source = TPtrC8(tmp, 256); - _LIT8(KNull,"\0"); - TInt fqdnLength = source.Find(KNull); - source.Set(tmp, fqdnLength); - - // copy to the container - TBuf8<256>& fqdn = aAddress.iFqdn->iFqdn; - fqdn.Copy(source); - fqdn.SetLength(fqdnLength); - } - - else if (msgBody->sLPAddress.t == T_SLPAddress_iPAddress) - { - // SLP ID is an IP Address - aAddress.iSlpAddressType = ESuplSlpAddressTypeIp; - - // Reference to the address data buffer - TBuf8<16>& ipAddress = aAddress.iIpAddress->iIpAddress; - - // IPv4 or IPv6 address? - if (msgBody->sLPAddress.u.iPAddress->t == T_IPAddress_ipv6Address) - { - aAddress.iIpAddress->iIpAddressType = ESuplIpAddressTypeV6; - TInt len = msgBody->sLPAddress.u.iPAddress->u.ipv6Address->numocts; - TUint8* data = msgBody->sLPAddress.u.iPAddress->u.ipv6Address->data; - ipAddress.Copy(data, len); - } - else - { - aAddress.iIpAddress->iIpAddressType = ESuplIpAddressTypeV4; - TInt len = msgBody->sLPAddress.u.iPAddress->u.ipv4Address->numocts; - TUint8* data = msgBody->sLPAddress.u.iPAddress->u.ipv4Address->data; - ipAddress.Copy(data, len); - } - } - else - { - // error - __ASSERT_DEBUG(0, User::Invariant()); - return KErrArgument; - } - - SUPLLOG(ELogP1, "CSuplResponse::SlpAddress() End\n"); - return KErrNone; - } -