networkprotocolmodules/common/suplrrlpasn1/src/suplpospayload.cpp
changeset 45 15a2125aa2f3
parent 40 18280709ae43
child 49 5f20f71a57a3
child 51 95c570bf4a05
--- a/networkprotocolmodules/common/suplrrlpasn1/src/suplpospayload.cpp	Fri Jun 11 15:06:31 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,182 +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 "RRLP-Messages.h"
-#include "ULP.h"
-#include "suplpospayload.h"
-#include "supldevloggermacros.h" 
-#include "rrlputils.h"
-#include "rrlpmeasureposrequest.h"
-#include "rrlpassistancedata.h"
-#include "rrlpprotocolerror.h"
-#include "suplasn1error.h"
-
-/**
-Default Constructor
-*/
-CSuplPosPayload::CSuplPosPayload(TSuplPosPayloadType aType, TBool aIsOutgoingMsg)
- : iMessageType(aType), iIsOutgoingMessage(aIsOutgoingMsg)
-	{
-	SUPLLOG(ELogP1, "CSuplPosPayload::CSuplPosPayload() Begin\n");
-	SUPLLOG(ELogP1, "CSuplPosPayload::CSuplPosPayload() End\n");
-	}
-
-/**
-Default Constructor
-*/
-CSuplPosPayload::~CSuplPosPayload()
-	{
-	SUPLLOG(ELogP1, "CSuplPosPayload::~CSuplPosPayload() Begin\n");
-	SUPLLOG(ELogP1, "CSuplPosPayload::~CSuplPosPayload() End\n");
-	}
-	
-/** 
-EncodeToL()
-
-Encode a populated outgoing message 
-
-@param aBuf the destination buffer to encode to
-@return error indication, KErrNone otherwise
-*/
-TInt CSuplPosPayload::EncodeToL(TPtr8& /*aBuf*/)
-	{
-	SUPLLOG(ELogP1, "CSuplPosPayload::~CSuplPosPayload() Begin\n");
-	SUPLLOG(ELogP1, "CSuplPosPayload::~CSuplPosPayload() End\n");
-	return KErrNotSupported;
-	}
-
-/**
-Prints the content payload data structure to the logger
-Default implementation logs nothing and should be overridden
-*/
-void CSuplPosPayload::LogMessageContent()
-	{
-	SUPLLOG(ELogP1, "CSuplPosPayload::LogMessageContent() Begin\n");
-	SUPLLOG(ELogP1, "CSuplPosPayload::LogMessageContent() End\n");
-	}
-
-/** 
-MessageType()
-
-@return the positioning payload message type
-*/
-EXPORT_C CSuplPosPayload::TSuplPosPayloadType CSuplPosPayload::MessageType()
-	{
-	SUPLLOG(ELogP1, "CSuplPosPayload::MessageType() Begin\n");
-	SUPLLOG2(ELogP1, "CSuplPosPayload::MessageType() End (iMessageType = %d)\n", iMessageType);
-	return iMessageType;
-	}
-	
-/**
- * DecodePosPayload
- * 
- * decodes a pospayload and returns a CSuplPosPayload* (eg CRrlpMeasurePositionRequest*) containing the decoded rrlp payload 
- * 
- * @param aPosPayload	an asn1-encoded rrlp pos payload. Caller takes ownership.
- * @param aError		any error encountered 
- */
-EXPORT_C CSuplPosPayload* CSuplPosPayload::DecodePosPayloadL(const HBufC8* aPosPayload, TInt& aError)
-	{
-	SUPLLOG(ELogP1, "CSuplPosPayload::DecodePosPayloadL() Begin\n");	
-	
-	CSuplPosPayload *decodedRrlpMsg = NULL;
-	
-	const ASN1T_PosPayLoad_rrlpPayload* posPayLoad = reinterpret_cast<const ASN1T_PosPayLoad_rrlpPayload*>(aPosPayload);
-	
-	// extract the RRLP payload and decode and compare...
-	TInt payloadLength  = posPayLoad->numocts;
-	const OSOCTET* payloadptr = &posPayLoad->data[0];
-
-	// Create the payload decode buffer
-    // CleanupDeletePushL used for ASN1x_X classes rather than CleanupStack::PushL() to ensure 
-	// class destructors are called on PopAndDestroy. This is necessary to ensure ASN1Context 
-	// reference counter is decremented correctly and memory released.
-	ASN1Context* payloadContext = new (ELeave) ASN1Context;
-	CleanupDeletePushL(payloadContext);
-	ASN1PERDecodeBuffer* decodeBuffer = new (ELeave) ASN1PERDecodeBuffer (payloadptr, payloadLength, FALSE, payloadContext);
-	// construction of iDecodeBuffer successful, pop payloadContext off the cleanup stack
-	CleanupStack::Pop(payloadContext);	// now owned by decodeBuffer
-	CleanupDeletePushL(decodeBuffer);	
-	
-	// Create data and control objects to manage the decode		
-	ASN1T_PDU* payloadData  = new (ELeave) ASN1T_PDU();
-	CleanupDeletePushL(payloadData);	
-	ASN1C_PDU* payloadPdu   = new (ELeave) ASN1C_PDU(*decodeBuffer, *payloadData);
-	CleanupDeletePushL(payloadPdu);
-	
-	TInt stat = payloadPdu->Decode();
-
-	// return now if error encountered while decoding
-	if (stat != KErrNone)
-		{
-		aError = RrlpUtils::ProcessAsn1Error(stat);
-		CleanupStack::PopAndDestroy(payloadPdu);
-		CleanupStack::PopAndDestroy(payloadData);
-		CleanupStack::PopAndDestroy(decodeBuffer);
-		return NULL;	
-		}
-
-	// build payload content wrapper.
-	switch (payloadData->component.t)
-		{
-		case T_RRLP_Component_msrPositionReq:
-			{
-			decodedRrlpMsg = CRrlpMeasurePositionRequest::NewL();	
-			break;
-			}
-			
-		case T_RRLP_Component_assistanceData:
-			{
-			decodedRrlpMsg = CRrlpAssistanceData::NewL();
-			break;
-			}
-
-		case T_RRLP_Component_protocolError:
-			{
-			decodedRrlpMsg = CRrlpProtocolError::NewL(EFalse);
-			break;
-			}
-
-		case T_RRLP_Component_msrPositionRsp:
-		case T_RRLP_Component_assistanceDataAck:
-		default:
-			{
-			// unsupported message type
-			aError = ESuplAsn1ErrUnsupportedPosMessageType;
-			CleanupStack::PopAndDestroy(payloadPdu);
-			CleanupStack::PopAndDestroy(payloadData);
-			CleanupStack::PopAndDestroy(decodeBuffer);
-			return NULL;	
-			}
-		}
-	
-	CleanupStack::Pop(payloadPdu);
-	CleanupStack::Pop(payloadData);
-	CleanupStack::PopAndDestroy(decodeBuffer);
-	
-	// pass ownership of the decoded message content.
-	static_cast<CRrlpMessageBase*>(decodedRrlpMsg)->SetDecodedData(payloadData, payloadPdu);
-			
-	SUPLLOG(ELogP1, "CSuplPosPayload::DecodePosPayloadL() End\n");
-	
-	return decodedRrlpMsg;
-		
-	}