--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/biomsgfw/wappinc/wapp.h Mon Jan 18 20:36:02 2010 +0200
@@ -0,0 +1,357 @@
+// Copyright (c) 1999-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:
+// Header file for the WAP Access Point Parser
+//
+//
+
+#ifndef __WAPP_H__
+#define __WAPP_H__
+
+
+#include <bsp.h>
+#include <commsdattypesv1_1.h>
+#include <commsdat.h>
+using namespace CommsDat;
+#include <cdbcols.h>
+#include <cdblen.h>
+#include <charconv.h>
+
+class MMsvAttachmentManager;
+class MMsvAttachmentManagerSync;
+
+#define BIO_MSG_ENTRY_UNPARSED 0 // iMtmData3=0 - an untouched, a virgin message entry!
+#define BIO_MSG_ENTRY_PARSED 1 // iMtmData3=1 - entry parsed and externalised (has a store)
+#define BIO_MSG_ENTRY_PROCESSED 2 // iMtmData3=2 - entry been parsed,externalised and processed
+
+
+_LIT8(KDummyModemInitStr, "Modem Init String - final version to be decided!!!");
+_LIT(KWapDefaultSettingsName, "WAP Settings");
+_LIT(KWappDefaultBMName, "Unknown Bookmark"); // Default name for a bookmark.
+_LIT(KWappDll, "KWAPP-DLL");
+
+const TInt KGsmCsdSuffixLen = 8;
+_LIT(KGsmCsdSuffix, "-GsmCsd"); // Suffix - append to Settings Name for Gsm/Csd ISP/IAP entry
+_LIT(KGsmUssdSuffix, "-GsmUssd"); // Suffix - append to Settings Name for Gsm/Ussd ISP/IAP entry
+_LIT(KIS136CsdSuffix, "-Is136Csd"); // Suffix - append to Settings Name for IS136/Csd ISP/IAP entry
+_LIT(KGprsSuffix, "-Gprs"); // Suffix - append to Settings Name for GPRS ISP/IAP entry
+
+
+enum TWappPanic // Assert Debug panic codes
+ {
+ EWappLimitsExceeded,
+ EWappErrMessageProcessed,
+ EWappEmptyBuffer,
+ EWappInvalidEntry,
+ EWappNullPointer
+ };
+/*
+enum TBearer
+ {
+ EAll,
+ EIP,
+ ESMS7,
+ ESMS
+ };
+*/
+enum TCsdCallType
+ {
+ EAnalogue,
+ EIsdn
+ };
+
+enum TCsdCallSpeed
+ {
+ EAutobauding,
+ E9600baud,
+ E14400baud,
+ E19200baud,
+ E28800baud,
+ E38400baud,
+ E43200baud,
+ E57600baud
+ };
+
+
+// Forward declarations
+class RResourceFile;
+class CRichText;
+class CCommsDatabase;
+class CCommsDbTableView;
+class CIspTableData;
+class TBearerSpeed;
+class CWappBookmark;
+class CWapIpBearerData;
+class CWapSmsBearerData;
+class CWapGprsBearerData;
+class CWapCharsetConverter;
+
+class CMsvBIOWapAccessParser : public CBaseScriptParser2
+/**
+@internalComponent
+@released
+*/
+ {
+// Enum and inline class defines
+private:
+ enum TParseSession
+ {
+ EStart, // Don't do anything-just check message not empty & set Scheduler going
+ EUnfoldMessage, // Don't have to unfold the message, just save it
+ EParseMessage, // Parsing
+ EProcessInitialise, // Start ProcessL - restore data if necessary, PreProcess and Validate it
+ EProcessMessage, // Actual Processing of message data
+ ECompleteMessage // Completing ..
+ };
+
+ enum TWappBearerType
+ {
+ EWappUnknownBearer,
+ EWappGsmCsdBearer,
+ EWappGsmSmsBearer,
+ EWappGsmUssdBearer,
+ EWappIS136CsdBearer,
+ EWappGprsBearer
+ };
+
+
+// Member Variables
+public:
+ //Defines which type of characteristic we're dealing with
+ enum TWappCharacteristicType
+ {
+ EWappUnknown, // Don't know the type yet
+ EWappAddressCharacteristic, // An address, but specific type undetermined
+ EWappGsmCsdCharacteristic, // A GSM/CSD address
+ EWappGsmSmsCharacteristic, // A GSM/SMS address
+ EWappGsmUssdCharacteristic, // A GSM/USSD address
+ EWappIS136CsdCharacteristic, // A IS136/CSD address
+ EWappGprsCharacteristic, // A GPRS address
+ EWappBookmarkCharacteristic, // A Bookmark
+ EWappURLCharacteristic, // A URL
+ EWappNameCharacteristic, // A name characteristic
+ EWappIDCharacteristic, // A ID characteristic
+ EWappMMSURLCharacteristic // A Multi Media Service Centre Url characteristic
+ };
+
+
+ IMPORT_C static CMsvBIOWapAccessParser* NewL(CRegisteredParserDll& aRegisteredParserDll, CMsvEntry& aEntry, RFs& aFs);
+ ~CMsvBIOWapAccessParser();
+
+ void ParseL(TRequestStatus& aStatus, const TDesC& aSms);
+ void ProcessL(TRequestStatus& aStatus);
+
+private:
+ //Constructors
+ CMsvBIOWapAccessParser(CRegisteredParserDll& aRegisteredParserDll, // Only constructor-passes
+ CMsvEntry& aEntry, RFs& aFs); // parameters to base const
+
+ void ConstructL();
+
+ // Active Object stuff
+ void DoCancel();
+ void RunL();
+
+ // State Engine functions
+
+ void CallChangeStateL(TInt aState); // Calls ChangeStateL with the right state
+ void ChangeStateL(TParseSession aState); // Advances State Machine to next state
+
+ void ParseMessageL(); // Only checks & saves parsed data - calls DoParseL
+
+ void CompleteMessageL(); //Sets the flag on TMsvEntry to show message parsed.
+
+ void RequestComplete(TRequestStatus& aStatus, TInt aError); // Complete our async op.
+
+ // ***************** Additional helper functions added by AHF *********************
+private:
+
+ void StoreParsedDataL(); // Saves CParsedField data in a store
+
+ void RestoreParsedDataL(); // Loads the CParsedField data from store
+
+ void ResetProcessVariablesL(); // Resets variables, delete and create if necessary
+
+ void DoParseL(); // Does the actual parsing of the message.
+
+ void DoProcessL(); // Get data from array, commit to COMMDB
+
+ void PreProcessL(); // Called by DoProcessL,extracts data from array into
+ // Mapping object,rejects duplicate data
+
+ // ******************* Helper Functions for Parsing **********************
+
+ void ReadCharacteristicL(); // Gets a CHARACTERISTIC from the message
+
+ void ReadParmL(); // Reads in a PARM from the message
+
+ void SettingsNamePresentL(); // Ensures that a NAME characteristic is present.
+
+
+ TUint32 Read_mb_u_int32L(); // Extract a multiple byte encoded 32 bit int
+
+ HBufC* ReadStringTableReferenceLC(TUint32 anOffset);// Gets string from the string table
+ // using a 32 bit integer offset
+
+ void ReadASCIIorUTF8StringL(); //finds the end of a string encoded in UTF-8 or ASCII
+ void ReadUCS2StringL(); //finds end of a string encoded in 2-byte Unicode
+ HBufC* ReadInlineStringLC(); // Extracts an inline string from the message
+
+ void AppendDataPairL(const TDesC& aFieldName, const TDesC& aFieldValue);// Creates CParsedField,
+ // & appends to array
+
+ void AppendNameFieldL(const TDesC& aFieldName); // Creates a CParsedField,
+ // & append to array
+
+ void InsertDataPairL(const TDesC& aFieldName,const TDesC& aFieldValue,TInt anIndex);// Inserts CParsedField
+ // at specified position.
+
+ TChar GetNextMessageByteL(); // Gets next character from TLex - leaves if at end of buffer
+
+ // ****************** Helper functions for ProcessL *****************************
+ void ExtractBearerDataL(TInt& aCurrentPos);//Extracts data from iParsedFieldArray
+ // & stores in WAP & ISP table objects.
+ // Increments the current pos ref as it goes
+
+ void ExtractBookmarkDataL(TInt& aIndex); // Extracts bookmark data from array to create
+ // a bookmark. Rejects invalid bookmarks.
+ // Ensures that array positioned at next characteristic
+
+ void ValidateCharacteristicsL(); // Ensures that don't have invalid combinations
+ // of characteristic eg URLs, IDs, NAMES must have a bearer type
+ // but Bookmarks can be by themselves
+
+ TBool IsCharacteristicName(TInt anIndex); // True if name at index positino is a Characteristic name
+
+
+ TInt IsValidTokenNameL(const TInt anArrayIndex); // Validates the name against defined strings
+ // returns 0 if OK, error otherwise
+
+ void WriteDataToDBL(); // Creates entries in the tables using
+ // data in the arrays of table info
+
+ TBool DeleteTableEntryL(const TDesC& aTableName, const TDesC& aEntryName); // returns True if there are records in the CommDB table
+ void WriteToCommDatDialOutISPTableL(const TDesC& aRecName); // Writes/amends Dial Out ISP table
+ void WriteToCommsDatIAPTableL(const TDesC& aRecName); // Writes/amends WAP table
+ void WriteToCommDatGprsTableL(const TDesC& aRecName); // Writes/amends Gprs table
+ void WriteToCommDatWapAccessPointTableL(const TDesC& aRecName); // Writes/amends WAP table
+ void WriteToCommDatWapIpBearerTableL();
+ void WriteToCommDatWapSmsBearerTableL(); // Writes/amends Dial-Out WAP table
+ void DeleteCommDatTableEntryL(TMDBElementId aElementName, const TDesC& aCsdNameStr);
+
+
+ void WriteBookmarksToFileL(); // Stores bookmarks as an attachment file in the .eBM format
+
+ void WriteMMSURLL(); // Write the MMS URL to the setting in the message server.
+
+ TCommsDbWapWspOption GetWSPType(TDesC& aPortValue); // Returns the appropriate enum for the Port value
+
+ TBool UseSecurity(TDesC& aPortValue); //Returns the security level for the Port Value
+
+ void SetWapIspEntryIdL(const TDesC& aEntryName); // Set the iCurrentBearerType BEFORE calling this!!!!
+ //Sets variables holding ID of Dial Out ISP ID entry
+
+ void SetWapIapEntryIdL(const TDesC& aEntryName, CWapIpBearerData& aWapIpTable); // Sets variables holding ID of Dial Out IAP ID entry
+
+ void SetWapAPEntryIdL(); // Sets ID of entry in WAP Access Point Table. Uses iWAPSettings
+
+ void SetModemInitStringL(); // Sets the modem initialisation string
+
+ void UpdateStartPageUrlL(); // Updates the URL of start page in WAP table
+
+ // ****************** General Functions *****************************
+
+ // Locate a Name value, default is from start of array, returns -1 if search fails
+ TInt LocateParsedFieldName(const TDesC& aFieldName, const TInt aStartIndex=0);
+
+ void RemoveAttachmentIfExistL(const TDesC& aFileName, MMsvAttachmentManager& aManager, MMsvAttachmentManagerSync& aManagerSync);
+
+ void Panic(TInt aPanic);
+ //Member variables
+private:
+ TInt iState; // Current session state
+ TRequestStatus* iReport;
+ TInt iCompleted; // Stores completion code from previous session state
+
+private:
+ // Additional variables added by AHF
+
+ TWappCharacteristicType iCurrentCharacteristic;
+
+ TUint32 iWBXMLversionX10; // WBXML version *10 to give an int eg 1.0 -> 10
+ TUint32 iPublicID; //PublicId of document
+ // Internal Symbian character set identifier for incoming strings
+ TUint32 iCharacterSet;
+ HBufC* iStringTable; // Table of strings to be used for str table reference
+
+ CArrayPtrSeg<CWappBookmark>* iBookmarkList; // Array of bookmarks to store
+ TPtrC iWAPSettingsName; // Name for these WAP settings-get from NAME characteristic
+ TPtrC iUrl; // URL of the start page
+ TPtrC iMMSUrl; // URL of the MMSC
+ TPtrC iID; // ID used by these settings
+ HBufC8* iModemInitString; // String used to hold Modem Initialisation string
+
+ CWapIpBearerData* iGsmCsdWapIpTable; // Wap IP table data GSM/CSD
+ CWapIpBearerData* iGprsWapIpTable; // Wap IP table data for GPRS
+
+ CIspTableData* iWapIpISPTable; // 1 WAP GSM/CSD table entry = 1 ISP table entry
+ CWapSmsBearerData* iWapSmsTable; // No links to ISP table.
+ CWapGprsBearerData* iWapGprsTable;
+
+ TBool iGsmCsdData;
+ TBool iGsmSmsData;
+ TBool iGprsData;
+ TBool iURLData;
+ TBool iNameData;
+ TBool iIdData;
+ TBool iMMSURLData;
+
+ //commit data
+ CMDBSession* iDBSession;
+
+
+ TUint32 iRecordId;
+
+ TUint32 iWapAccessPtID; // ID of entry in WAP Access Point Table
+
+ TUint32 iWapLocation;
+ TUint32 iWapChargeCard;
+ TUint32 iWapModem;
+
+ CWapCharsetConverter* iCharsetConverter;
+ TWappBearerType iCurrentBearerType;
+ };
+
+
+class CWapCharsetConverter: public CBase
+/**
+@internalComponent
+@released
+*/
+ {
+ public:
+ static CWapCharsetConverter* NewL(RFs& aFs, TUint aMibEnum);
+ void ConvertL(const TDesC& aSource, TDes& aSink);
+ ~CWapCharsetConverter();
+ private:
+ void ConstructL(TInt aMibEnum);
+ CWapCharsetConverter(RFs& aFs) : iFs(aFs){}
+ private:
+ RFs& iFs;
+ CCnvCharacterSetConverter* iConverter;
+ CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* iAvailableCharsets;
+ TBool iParseable;
+ };
+
+
+#endif // __WAPP_H__