cbsatplugin/atmisccmdplugin/inc/scpbrcommandhandler.h
author hgs
Fri, 23 Jul 2010 15:57:13 +0300
changeset 47 9e2a905b887f
permissions -rw-r--r--
201029_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
47
9e2a905b887f 201029_02
hgs
parents:
diff changeset
     1
/*
9e2a905b887f 201029_02
hgs
parents:
diff changeset
     2
 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
9e2a905b887f 201029_02
hgs
parents:
diff changeset
     3
 * All rights reserved.
9e2a905b887f 201029_02
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
9e2a905b887f 201029_02
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
9e2a905b887f 201029_02
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
9e2a905b887f 201029_02
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
9e2a905b887f 201029_02
hgs
parents:
diff changeset
     8
 * Initial Contributors:
9e2a905b887f 201029_02
hgs
parents:
diff changeset
     9
 * Nokia Corporation - initial contribution.
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    10
 *
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    11
 * Contributors:
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    12
 * 
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    13
 * Description :
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    14
 * 
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    15
 * CSCPBRCommandHandler class declaration for AT^SCPBR command
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    16
 * 
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    17
 */
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    18
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    19
#ifndef SCPBRCOMMANDHANDLER_H_
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    20
#define SCPBRCOMMANDHANDLER_H_
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    21
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    22
#include <e32base.h>
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    23
#include <etelmm.h>
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    24
#include <e32cmn.h>
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    25
#include <rmmcustomapi.h>
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    26
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    27
#include "atcmdasyncbase.h"
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    28
#include "atmisccmdpluginconsts.h"
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    29
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    30
class CPhoneBookBuffer;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    31
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    32
/**
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    33
 *  AT^SCPBR command handler implementation class
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    34
 */
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    35
NONSHARABLE_CLASS( CSCPBRCommandHandler ) : public CATCmdAsyncBase
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    36
	{
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    37
private:
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    38
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    39
	/**
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    40
	 * SCPBR States
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    41
	 */
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    42
	enum TSCPBRState
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    43
	    {
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    44
        ESCPBRStateIdle,                  // Idle
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    45
        ESCPBRStateRead,                  // Read
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    46
        ESCPBRStateGetPhoneBookInfo,      // Get phone book info.
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    47
        ESCPBRStateGet3GPBInfo,           // Get 3G phone book info.
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    48
        ESCPBRStateNotSupported           // phone book store not supported
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    49
	    };
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    50
private:
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    51
	/**
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    52
	 *  The data structure of phone book entry.
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    53
	 *  Inner class used by CSCPBRCommandHandler only.
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    54
	 */
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    55
	class TPhoneBookEntry
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    56
	    {
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    57
    public:
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    58
	    TPhoneBookEntry(): iIndex(-1)
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    59
            {
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    60
            }
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    61
	    
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    62
	    void Externalize( TDes8& aDes ) const;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    63
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    64
        TInt iIndex;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    65
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    66
        TBuf8<KSCPBRMaxNumberLength> iNumber1;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    67
        TBuf8<KSCPBRMaxNumberLength> iNumber2;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    68
        TBuf8<KSCPBRMaxNumberLength> iNumber3;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    69
        TBuf8<KSCPBRMaxNumberLength> iNumber4;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    70
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    71
        TBuf8<KSCPBRMaxNameLength> iName;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    72
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    73
        TBuf8<KSCPBRMaxEmailLength> iEmail;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    74
	    };
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    75
	
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    76
public:
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    77
	static CSCPBRCommandHandler* NewL(MATMiscCmdPlugin* aCallback, TAtCommandParser& aATCmdParser, RMobilePhone& aPhone );
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    78
	
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    79
	virtual ~CSCPBRCommandHandler();
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    80
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    81
private: // from CATCmdAsyncBase
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    82
	virtual void HandleCommand(const TDesC8& aCmd, RBuf8& aReply, TBool aReplyNeeded);
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    83
	
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    84
private: // from CActive
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    85
	virtual void RunL();
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    86
	virtual void DoCancel();
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    87
	virtual TInt RunError(TInt aError);
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    88
	
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    89
private:	
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    90
	CSCPBRCommandHandler(MATMiscCmdPlugin* aCallback, TAtCommandParser& aATCmdParser, RMobilePhone& aPhone );
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    91
	void ConstructL();
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    92
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    93
	void ExtractEntriesL();
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    94
	void CopyToPhonebookEntryField(TDes8& aDest, const TDesC16& aSrc);
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    95
	void FormatReplyL();
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    96
	TInt ParseParameters();
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    97
	void AppendEntryL(const TPhoneBookEntry& aEntry);
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    98
	
9e2a905b887f 201029_02
hgs
parents:
diff changeset
    99
private:
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   100
	/**
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   101
	 * The first index to be read from phonebook store.
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   102
	 */
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   103
    TInt iIndex1;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   104
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   105
	/**
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   106
	 * The last index to be read from phonebook store.
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   107
	 */
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   108
    TInt iIndex2;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   109
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   110
	/**
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   111
	 * The reply
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   112
	 */
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   113
    RBuf8 iReply;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   114
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   115
	/**
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   116
	 * The phone book store. used to get entries information and entries.
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   117
	 */
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   118
    RMobilePhoneBookStore iPhoneBookStore;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   119
    
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   120
	/**
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   121
	 * used to save the entries information.
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   122
	 */
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   123
    RArray<TPhoneBookEntry> iEntries;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   124
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   125
	/**
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   126
	 * Used to parse the content get from PhoneBookStore.
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   127
	 */
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   128
    CPhoneBookBuffer* iPhoneBookBuffer;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   129
    
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   130
	/**
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   131
	 * The buffer to get phonebookstore entries content.
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   132
	 */
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   133
    RBuf8 iContactsBuf; 
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   134
    
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   135
	/**
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   136
	 * Current state
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   137
	 */
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   138
    TSCPBRState iState;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   139
    
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   140
	/**
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   141
	 * The PhonebookInfo, used to get phone book entries information.
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   142
	 */
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   143
    RMobilePhoneBookStore::TMobilePhoneBookInfoV1 iPhoneBookInfo;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   144
    
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   145
    /**
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   146
     * Total entries supported by phonebook store.
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   147
     */
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   148
    TInt iTotalEntries;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   149
	/**
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   150
	 * The max number length supported
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   151
	 */
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   152
    TInt iNLength;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   153
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   154
	/**
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   155
	 * The max email length supported.
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   156
	 */
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   157
    TInt iMLength;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   158
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   159
	/**
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   160
	 * The max text length supported.
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   161
	 */
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   162
    TInt iTLength;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   163
    
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   164
	/**
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   165
	 * Used to get 3GPBInfo.
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   166
	 */ 
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   167
    RMmCustomAPI iCustomApi;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   168
    
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   169
	/**
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   170
	 * Used to get 3GPBInfo.
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   171
	 */
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   172
    RMmCustomAPI::T3GPBInfo i3GPBInfo;
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   173
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   174
    };
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   175
9e2a905b887f 201029_02
hgs
parents:
diff changeset
   176
#endif /* SCPBRCOMMANDHANDLER_H_ */