diff -r 000000000000 -r 9cfd9a3ee49c datasourcemodules/bluetoothgpspositioningmodule/btgpspsy/inc/Nmea/BTGPSNmeaParser.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/datasourcemodules/bluetoothgpspositioningmodule/btgpspsy/inc/Nmea/BTGPSNmeaParser.h Tue Feb 02 01:50:39 2010 +0200 @@ -0,0 +1,152 @@ +/* +* Copyright (c) 2005-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: +* +*/ + + + + +#ifndef BTGPSNMEAPARSER_H +#define BTGPSNMEAPARSER_H + +// INCLUDES + +#include +#include + + +// CONSTANTS + +// MACROS + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +// CLASS DECLARATION + +/** +* NMEA sentence parser. This class detects the validity of NMEA sentence. It provides +* functions to get different field value and field data. +* +*/ +class TBTGPSNmeaParser: public TDelimitedParserBase8 + { + public: + + /** + * Construction. + */ + TBTGPSNmeaParser(); + + /** + * Set NMEA sentence to parser. This function will check sentence validity. + * @param aNmea Reference to nmea sentences. + */ + void SetNmeaSentence(const TDesC8& aNmea); + + /** + * Get NMEA Sentence + */ + const TDesC8& NmeaSentence() const; + + /** + * Check if the NMEA sentece is valid + * @return ETrue if the sentence is a valid NMEA sentence. + */ + TBool IsValid() const; + + /** + * Get NMEA message Id + * @return The NMEA sentence message id. + */ + TInt MessageId() const; + + /** + * Get the field block + * @param aFieldId Field id + * @param aField On return contains the field string. + * @return KErrNone if the field if found. Otherwise system + * wide error code + */ + TInt GetFieldBlock(TInt aFieldId, TPtrC8& aField) const; + + /** + * Check if filed is null field + * @param aFieldId Field id. + * @return ETrue if the field is NULL field. + */ + TBool IsNullField(TInt aFieldId) const; + + /** + * Get field data. + * @param aFieldId Field id + * @param aData On return contain the field value + * @return KErrNone if the field is found and contain valid information, + * otherwise system wide error code. + */ + template + TInt GetFieldData(TInt aFieldId, T& aData) const; + + /** + * Get next field data. This is iteration function that will get all field + * data + * @param aData On return contains next valid field value. + * @return KErrNone if next field data is retrieved. KErrNotFound if end of + * NMEA sentence is reached. + */ + template + TInt NextFieldData(T& aData) const; + + private: + /** + * Getmessage id + */ + void GetMessageId(); + + /** + * Check validity of NMEA sentence + */ + TBool CheckValidity() const; + + /** + * Remove '$', Checksum delimiter and check sum field + */ + const TPtrC8 TrimSentence() const; + + /** + * Verify checksum + */ + TBool VerifyChecksum(const TDesC8& aSentence) const; + + /** + * Convert char to nibble + */ + TUint8 CharToNibble(const TUint8 aChar) const; + + + private: + //NMEA sentence + TPtrC8 iNmea; + + //Message id. //ENmeaNull means message not valid + TInt iId; + + }; +#endif +// End of File +