diff -r 000000000000 -r 29b1cd4cb562 bt_plat/at_command_handler_plugin_api/inc/atext.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bt_plat/at_command_handler_plugin_api/inc/atext.h Fri Jan 15 08:13:17 2010 +0200 @@ -0,0 +1,280 @@ +/* +* 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: AT extension client API +* +*/ + + +#ifndef R_ATEXTCLIENT_H +#define R_ATEXTCLIENT_H + +#include +#include + +/** Interface definitions; either DUN or HFP */ +enum TATExtensionInterface + { + EDunATExtension, + EHfpATExtension + }; + +/** ECOM notification type for plugins */ +enum TATExtensionEcomType + { + EEcomTypeUninstall, + EEcomTypeInstall + }; + +/** + * Client of AT Extension. + * + * @lib atextclient.lib + * @since S60 v5.0 + */ +NONSHARABLE_CLASS( RATExt ) : public RSessionBase + { + +public: + + /** + * Establishes a session with server and connect to corresponding extension + * plugins specified by parameter TATExtensionInterface. + * + * @since S60 v5.0 + * @param aIf The AT extension interface + * @param aName Connection identifier name + * @return Symbian error code on error, KErrNone otherwise + */ + IMPORT_C TInt Connect( TATExtensionInterface aIf, + const TDesC8& aName ); + + /** + * Synchronously closes the session + * Optional: client can do either Close() or SynchronousClose()+Close() + * + * @since S60 v5.0 + * @return Symbian error code on error, KErrNone otherwise + */ + IMPORT_C TInt SynchronousClose(); + + /** + * Handles a command. + * + * @since S60 v5.0 + * @param aStatus The request status + * @param aCmd The command to be handled. + * @param aReply The descriptor to hold reply to this command; + * @param aRemainingReplyLength Tells the length of remaining reply if it is not 0; + * the remainings can be fetched by GetNextPartOfReply(). + * @param aReplyType Reply type for the handled AT command + * @return Symbian error code on error, KErrNone otherwise + */ + IMPORT_C TInt HandleCommand( TRequestStatus& aStatus, + const TDesC8& aCmd, + TBuf8& aReply, + TPckg& aRemainingReplyLength, + TPckg& aReplyType ); + + /** + * Cancels a command handling request. + * + * @since S60 v5.0 + * @return Symbian error code on error, KErrNone otherwise + */ + IMPORT_C TInt CancelHandleCommand(); + + /** + * Gets the remaining reply of a previous handled command. + * + * @since S60 v5.0 + * @param aReply The descriptor to hold the reply; + * @param aRemainingReplyLength tells the length of remaining reply if it is not 0; + * the remainings can be fetched by GetNextPartOfReply(). + * @return Symbian error code on error, KErrNone otherwise + */ + IMPORT_C TInt GetNextPartOfReply( TBuf8& aReply, + TInt& aRemainingReplyLength ); + + /** + * Number of plugins + * + * @since S60 v5.0 + * @return The number of plugins + */ + IMPORT_C TInt NumberOfPlugins(); + + /** + * Receives unsolicited result code from extension plugins. + * + * @since S60 v5.0 + * @param aStatus The request status + * @param aRecvBuffer The receiving buffer + * @param aUrcPluginUid UID of the plugin + * @return Symbian error code on error, KErrNone otherwise + */ + IMPORT_C TInt ReceiveUnsolicitedResult( TRequestStatus& aStatus, + TBuf8& aRecvBuffer, + TPckg& aUrcPluginUid ); + + /** + * Cancels a pending receiving request. + * + * @since S60 v5.0 + * @param aUrcPluginUid UID of the plugin + * @return Symbian error code on error, KErrNone otherwise + */ + IMPORT_C TInt CancelReceiveUnsolicitedResult( TUid& aUrcPluginUid ); + + /** + * Marks URC handling ownership. + * + * @since S60 v5.0 + * @param aUrcPluginUid UID of the plugin + * @return Symbian error code on error, KErrNone otherwise + */ + IMPORT_C TInt MarkUrcHandlingOwnership( TUid& aUrcPluginUid ); + + /** + * Receives ECOM plugin uninstall/install/version reports + * + * @since S60 5.0 + * @param aStatus The request status + * @param aPluginUid UID of the plugin + * @param aEcomType Ecom type for the update + * @return Symbian error code on error, KErrNone otherwise + */ + IMPORT_C TInt ReceiveEcomPluginChange( + TRequestStatus& aStatus, + TPckg& aPluginUid, + TPckg& aEcomType ); + + /** + * Cancels ECOM plugin uninstall/install/version report receiving + * + * @since S60 5.0 + * @return Symbian error code on error, KErrNone otherwise + */ + IMPORT_C TInt CancelReceiveEcomPluginChange(); + + /** + * Reports change to quiet mode. + * The quiet mode is off by default. + * + * @since S60 5.0 + * @param aMode ETrue if quiet mode changed on, EFalse if off + * @return Symbian error code on error, KErrNone otherwise + */ + IMPORT_C TInt ReportQuietModeChange( TBool aMode ); + + /** + * Reports change to verbose mode. + * The verbose mode is on by default. + * + * @since S60 5.0 + * @param aMode ETrue if verbose mode changed on, EFalse if off + * @return Symbian error code on error, KErrNone otherwise + */ + IMPORT_C TInt ReportVerboseModeChange( TBool aMode ); + + /** + * Reports change to a value of a character + * + * @since S60 5.0 + * @param aCharType New character's type + * @param aNewChar New character value + * @return Symbian error code on error, KErrNone otherwise + */ + IMPORT_C TInt ReportCharacterChange( TATExtensionCharType aCharType, + TInt8 aNewChar ); + + /** + * Reporter for reporting when client side has updated its internal + * information after ReceiveEcomPluginChange() + * + * @since S60 5.0 + * @param aPluginUid UID of the plugin + * @param aUpdateType Type of update + * @return Symbian error code on error, KErrNone otherwise + */ + IMPORT_C TInt ReportListenerUpdateReady( TUid& aPluginUid, + TATExtensionEcomType aUpdateType ); + + /** + * Broadcasts NVRAM status change to the plugins. + * + * @since S60 5.0 + * @param aNvram New NVRAM status. The new settings (delimited by "|") + * must differ from the Hayes defaults. + * @return Symbian error code on error, KErrNone otherwise + */ + IMPORT_C TInt BroadcastNvramStatusChange( const TDesC8& aNvram ); + + /** + * Reports about external handle command error condition. + * This is for cases when for example DUN decided the reply contained an + * error condition but the plugin is still handling the command internally. + * Example: "AT+TEST;+TEST2" was given in command line; "AT+TEST" returns + * non-EReplyTypeError condition and "AT+TEST2" returns EReplyTypeError. + * As the plugin(s) returning the non-EReplyTypeError may still have some + * ongoing operation then these plugins are notified about the external + * EReplyTypeError in command line processing. It is to be noted that + * HandleCommandCancel() is not sufficient to stop the processing as the + * command handling has already finished. + * + * @since S60 5.0 + * @return Symbian error code on error, KErrNone otherwise + */ + IMPORT_C TInt ReportExternalHandleCommandError(); + + /** + * Reports about abort condition in command handling. + * This is for cases when for example DUN decided an abort condition was + * received from DTE (ITU-T V.250 5.6.1). This API is for notifying the + * plugin that abort was requested. However the plugin currently handling + * the command may ignore the request if it doesn't support abort for the + * command or it may return the changed condition with + * HandleCommandCompleted() + * + * @since S60 5.0 + * @param aStop If ETrue stop command line processing + * If EFalse continue command line processing + * @return Symbian error code on error, KErrNone otherwise + */ + IMPORT_C TInt ReportHandleCommandAbort( TBool& aStop ); + + /** + * Gets the next special command RSS file entry. These commands are commands + * with a matching start but with any ending sequence. Command "ATD*99***1#" + * is one of these and the number of these commands should be kept minimal. + * + * @since S60 5.0 + * @param aCmd The next found special command + * @param aFirstSearch If ETrue the search is done from the start, + * If EFalse the search continues from the old position. + * ATEXT sets this to EFalse after each successfull call. + * @return Symbian error code on error, KErrNone otherwise + */ + IMPORT_C TInt GetNextSpecialCommand( TDes8& aCmd, + TBool& aFirstSearch ); + +private: // data + + /** + * Connected interface + */ + TATExtensionInterface iConnectedIf; + + }; + +#endif // R_ATEXTCLIENT_H