diff -r 000000000000 -r a4daefaec16c voipplugins/dhcppositionprovider/inc/dhcplocationinformationparser.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/voipplugins/dhcppositionprovider/inc/dhcplocationinformationparser.h Mon Jan 18 20:12:36 2010 +0200 @@ -0,0 +1,143 @@ +/* +* Copyright (c) 2007 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: +* +*/ + + +#ifndef DHCPLOCATIONINFORMATIONPARSER_H +#define DHCPLOCATIONINFORMATIONPARSER_H + +#include + +/** + * Parses location information from DHCP message to LCI + * + * @lib sspcontroller + * @since S60 3,0 + */ +class TDhcpLocationInformationParser + { + public: + + /** Location information parsing type */ + enum TParsingType + { + EDHCPCoordinates, + EDHCPCivicAddress + }; + + public: + + /** + * Constructor + */ + TDhcpLocationInformationParser(); + + /** + * Parses location information + * + * @since S60 3.2 + * @param aInput Input data + * @param aParsingType Parsing type + * @param aOutput Result + * @return None + */ + void ParseLocationInformation( const TDesC8& aInput, + const TParsingType aParsingType, TDes8& aOutput ); + + private: + + /** + * Parses coordinate parameters from the input data + * + * @since S60 3.2 + * @param aInput Input data + * @param aOutput Result + * @return None + */ + void ParseLCI( const TDesC8& aInput, TDes8& aOutput ); + + /** + * Parses datum from the input data + * + * @since S60 3.2 + * @param aInput Input data + * @param aOutput Result + * @return Error code + */ + TInt ParseDatum(const TDesC8& aInput, TDes8& aOutput ); + + /** + * Parses the input to the DMS coordinate form + * + * @since S60 3.2 + * @param aIsLatitude latitude if ETrue, otherwise longitude + * @param aResolution Resolution, i.e. the amount of significant bits + * @param aInteger Integer part of coordinate, or degree + * @param aFraction Fraction part of coordinate + * @param aOutput Result + * @return None + */ + void ParseDMS(TBool aIsLatitude, TUint8 aResolution, + TUint16 aInteger, TUint32 aFraction, TDes8& aOutput ); + + /** + * Parses the civic address elements into the XML description + * + * @since S60 3.2 + * @param aInput Input data + * @param aOutput Result + * @return None + */ + void ParseCivicAddressElements( const TDesC8& aInput, TDes8& aOutput ); + + /** + * Extract a single civic address element from the input + * + * @since S60 3.2 + * @param aInput Input data + * @param aOutput Result + * @return None + */ + void ExtractCivicAddressElement( TLex8& aInput, TDes8& aOutput ); + + /** + * Parses the timestamp + * + * @since S60 3.2 + * @param aTimeStamp Resulting timestamp + * @return None + */ + void ParseTimeStamp( TDes8& aTimeStamp ); + + /** + * Parses the retenrion-expiry + * + * @since S60 3.2 + * @param aTimeStamp Resulting timestamp + * @return None + */ + void ParseRetentionExpiry( TDes8& aTimeStamp ); + + private: // data + + /** + * Timestamp + */ + TTime iTimeStamp; + + }; + +#endif // DHCPLOCATIONINFORMATIONPARSER_H