telephonyprotocols/secondarypdpcontextumtsdriver/spudman/src/spudnotify.cpp
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
equal deleted inserted replaced
-1:000000000000 0:3553901f7fa8
       
     1 // Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // NIFMAN notification proxy class
       
    15 // 
       
    16 //
       
    17 
       
    18 /**
       
    19  @file
       
    20  @internalComponent
       
    21 */
       
    22 
       
    23 #include "spudnotify.h"
       
    24 #include "bindman.h"
       
    25 
       
    26 CSpudNotify::CSpudNotify(CBindMan& aBindMan, MNifIfNotify* aNotify, TContextId aContextId)
       
    27     : iBindMan(aBindMan), iNotify(aNotify), iContextId(aContextId)
       
    28     {
       
    29     }
       
    30 
       
    31 
       
    32 CSpudNotify::~CSpudNotify()
       
    33     {
       
    34     }
       
    35 
       
    36 /**
       
    37  * Notification from the nif that the link layer has gone down.
       
    38  * @param aReason A Symbian OS error code indicating the reason for the link closing down
       
    39  * @param aAction The action that should be taken as a result of link layer down being signalled
       
    40  */
       
    41 void CSpudNotify::LinkLayerDown(TInt aReason, TAction aAction)
       
    42     {
       
    43 	iBindMan.SpudMan()->LinkLayerDown(iContextId, aReason, aAction);
       
    44     }
       
    45 
       
    46 /**
       
    47  * Notification from the nif that the link layer is up
       
    48  */
       
    49 void CSpudNotify::LinkLayerUp()
       
    50     {
       
    51 	iBindMan.SpudMan()->LinkLayerUp(iContextId);
       
    52     }
       
    53 
       
    54 /**
       
    55  * Indicate that link negotiation failed on this nif to allow nifman to take appropriate action
       
    56  * @param aIf The address of the CNifIfBase/Link object for which negotiation failed
       
    57  * @param aReason An error code denoting the reason for failure
       
    58  */
       
    59 void CSpudNotify::NegotiationFailed(CNifIfBase* aIf, TInt aReason)
       
    60     {
       
    61     iNotify->NegotiationFailed(aIf, aReason);
       
    62     }
       
    63 
       
    64 /**
       
    65  * Request to the agent to return the data required for authentication
       
    66  * @param aUsername On return, contains the username to be used for authentication
       
    67  * @param aPassword On return, contains the password to be used for authentication
       
    68  * @note The return values in aUsername and aPassword should not be considered valid until CNifIfLink::AuthenticateComplete() has been called
       
    69  */
       
    70 TInt CSpudNotify::Authenticate(TDes& aUsername, TDes& aPassword)
       
    71     {
       
    72     return iNotify->Authenticate(aUsername, aPassword);
       
    73     }
       
    74 
       
    75 /**
       
    76  * Request to the agent to cancel a pending authentication
       
    77  */
       
    78 void CSpudNotify::CancelAuthenticate()
       
    79     {
       
    80     iNotify->CancelAuthenticate();
       
    81     }
       
    82 
       
    83 /**
       
    84  * Fetch any excess data from the agent that it received during connection setup
       
    85  * @param aBuffer On return, the buffer contains the excess data from the agent
       
    86  * @return KErrNone, if successful; otherwise, one of the standard Symbian OS error codes
       
    87  */
       
    88 TInt CSpudNotify::GetExcessData(TDes8& aBuffer)
       
    89     {
       
    90     return iNotify->GetExcessData(aBuffer);
       
    91     }
       
    92 
       
    93 
       
    94 /**
       
    95  * Upcall from the nif indicating that a new progress state has been reached on this connection
       
    96  * @pre The stage value is within the range assigned to nifs i.e. KMinNifProgress <= aStage <= KMaxNifProgress
       
    97  * @param aStage The progress stage that has been reached
       
    98  * @param aError Any errors that have occurred
       
    99  */
       
   100 void CSpudNotify::IfProgress(TInt aStage, TInt aError)
       
   101     {
       
   102 	iBindMan.SpudMan()->IfProgress(iContextId, aStage, aError);
       
   103     }
       
   104 
       
   105 /**
       
   106  * Upcall from the nif indicating that a new progress state has been reached on this subconnection
       
   107  * @pre The stage value is within the range assigned to nifs i.e. KMinNifProgress <= aStage <= KMaxNifProgress
       
   108  * @param aSubConnectionUniqueId The subconnection to which this notification refers
       
   109  * @param aStage The progress stage that has been reached
       
   110  * @param aError Any errors that have occurred
       
   111  */
       
   112 void CSpudNotify::IfProgress(TSubConnectionUniqueId aSubConnectionUniqueId, TInt aStage, TInt aError)
       
   113     {
       
   114 	iBindMan.SpudMan()->IfProgress(iContextId, aSubConnectionUniqueId, aStage, aError);
       
   115     }
       
   116 
       
   117 /**
       
   118  * Increment the count of users of this nif
       
   119  */
       
   120 void CSpudNotify::OpenRoute()
       
   121     {
       
   122     // TODO: check that this reference counting is correct
       
   123     iNotify->OpenRoute();
       
   124     }
       
   125 
       
   126 /**
       
   127  * Decrement the count of users of this nif
       
   128  */
       
   129 void CSpudNotify::CloseRoute()
       
   130     {
       
   131     // TODO: check that this reference counting is correct
       
   132     iNotify->CloseRoute();
       
   133     }
       
   134 
       
   135 /**
       
   136  * Notification of an event from the nif
       
   137  * @param aEvent The type of event that occurred
       
   138  * @param aInfo Any data associated with the event
       
   139  * @return KErrNone if successful, otherwise one of the system-wide error codes
       
   140  */
       
   141 TInt CSpudNotify::Notification(TNifToAgentEventType aEvent, void * aInfo)
       
   142     {
       
   143 	return iBindMan.SpudMan()->Notification(iContextId, aEvent, aInfo);
       
   144     }
       
   145 
       
   146 /**
       
   147  * Notification from the nif that a binder layer has gone down
       
   148  * @param aBinderIf An identifier for the binder layer that went down
       
   149  * @param aReason The reason for the binder layer failure
       
   150  * @param aAction The action to be taken as a result, eg. disconnect, reconnect
       
   151  */
       
   152 void CSpudNotify::BinderLayerDown(CNifIfBase* aBinderIf, TInt aReason, TAction aAction)
       
   153     {
       
   154     iNotify->BinderLayerDown(aBinderIf, aReason, aAction);
       
   155     }
       
   156 
       
   157 /**
       
   158  * Indication from network layer that a packet has been transmitted or received
       
   159  *
       
   160  * @param aDirection Whether the packet was transmitted or received
       
   161  * @param aBytes The size of the packet
       
   162  * @param aResetTimer Whether the idle timer should be reset
       
   163  * @return KErrNone if successful, otherwise one of the system-wide error codes
       
   164  */
       
   165 TInt CSpudNotify::PacketActivity(TDataTransferDirection aDirection, TUint aBytes, TBool aResetTimer)
       
   166     {
       
   167     return iNotify->PacketActivity(aDirection, aBytes, aResetTimer);
       
   168     }
       
   169 
       
   170 /**
       
   171  * Indication that the sent bytes threshold for a subconnection has been met or exceeded in the nif
       
   172  *
       
   173  * @param aSubConnectionUniqueId The subconnection to which this notification refers
       
   174  * @param aUplinkVolume The total number of bytes sent by this subconnection
       
   175  */
       
   176 void CSpudNotify::NotifyDataSent(TSubConnectionUniqueId aSubConnectionUniqueId, TUint aUplinkVolume)
       
   177     {
       
   178     iNotify->NotifyDataSent(aSubConnectionUniqueId, aUplinkVolume);
       
   179     }
       
   180 
       
   181 /**
       
   182  * Indication that the received bytes threshold for a subconnection has been met or exceeded in the nif
       
   183  *
       
   184  * @param aSubConnectionUniqueId The subconnection to which this notification refers
       
   185  * @param aDownlinkVolume The total number of bytes sent by this subconnection
       
   186  */
       
   187 void CSpudNotify::NotifyDataReceived(TSubConnectionUniqueId aSubConnectionUniqueId, TUint aDownlinkVolume)
       
   188     {
       
   189     iNotify->NotifyDataReceived(aSubConnectionUniqueId, aDownlinkVolume);
       
   190     }
       
   191 
       
   192 /**
       
   193  * Indication that some parameter relating to a subconnection has changed in the nif eg. subconnection closed, opened, QoS changed
       
   194  *
       
   195  * @param aEventType The type of event which has occurred - used to direct the event notification to the appropriate component(s)
       
   196  * @param aEvent The event which has occurred
       
   197  * @param aEventData Any arguments or additional data to do with the event; the interpretation of this depends on the event
       
   198  * @param aSource An appropriate identifier of the source of the event - this will be used when one receiver is receiving events from many producers
       
   199  */
       
   200 void CSpudNotify::NifEvent(TNetworkAdaptorEventType aEventType, TUint aEvent, const TDesC8& aEventData, TAny* aSource)
       
   201     {
       
   202     iNotify->NifEvent(aEventType, aEvent, aEventData, aSource);
       
   203     }
       
   204 
       
   205 
       
   206 
       
   207 
       
   208 /**
       
   209  * Read an integer field from the connection settings provider
       
   210  * @param aField The name of the field to read
       
   211  * @param aValue On return, contains the value of the field read
       
   212  * @param aMessage for capability checking
       
   213  * @return KErrNone, if successful; otherwise one of the standard Symbian OS error codes
       
   214  */
       
   215 TInt CSpudNotify::DoReadInt(const TDesC& aField, TUint32& aValue,const RMessagePtr2* aMessage)
       
   216     {
       
   217 	//Spudman does eventually call iNotify->ReadInt but it does some necessary translations for some special cases therefore we
       
   218 	//need to defer to Spudman and cannot call iNotify->ReadInt ourselves
       
   219     // The lower NIF will never have any capabilities to give us
       
   220 	__ASSERT_ALWAYS(aMessage == NULL, iBindMan.SpudMan()->Panic());
       
   221 	return iBindMan.SpudMan()->ReadInt(iContextId, aField, aValue);
       
   222     }
       
   223 
       
   224 /**
       
   225  * Write an integer field to the connection settings provider
       
   226  * @param aField The name of the field to which to write
       
   227  * @param aValue The value to be written to the field
       
   228  * @param aMessage for capability checking
       
   229  * @return KErrNone, if successful; otherwise one of the standard Symbian OS error codes
       
   230  */
       
   231 TInt CSpudNotify::DoWriteInt(const TDesC& aField, TUint32 aValue,const RMessagePtr2* aMessage)
       
   232     {
       
   233     return iNotify->WriteInt(aField, aValue, aMessage);
       
   234     }
       
   235 
       
   236 /**
       
   237  * Read a 8-bit descriptor field from the connection settings provider
       
   238  * @param aField The name of the field to read
       
   239  * @param aValue On return, contains the value of the field read
       
   240  * @param aMessage for capability checking
       
   241  * @return KErrNone, if successful; otherwise one of the standard Symbian OS error codes
       
   242  */
       
   243 TInt CSpudNotify::DoReadDes(const TDesC& aField, TDes8& aValue,const RMessagePtr2* aMessage)
       
   244     {
       
   245 	//Spudman does eventually call iNotify->ReadDes but it does some necessary translations for some special cases therefore we
       
   246 	//need to defer to Spudman and cannot call iNotify->ReadDes ourselves
       
   247     // The lower NIF will never have any capabilities to give us
       
   248 	__ASSERT_ALWAYS(aMessage == NULL, iBindMan.SpudMan()->Panic());
       
   249 	return iBindMan.SpudMan()->ReadDes(iContextId, aField, aValue);
       
   250     }
       
   251 
       
   252 /**
       
   253  * Read a 16-bit descriptor field from the connection settings provider
       
   254  * @param aField The name of the field to read
       
   255  * @param aValue On return, contains the value of the field read
       
   256  * @param aMessage for capability checking
       
   257  * @return KErrNone, if successful; otherwise one of the standard Symbian OS error codes
       
   258  */
       
   259 TInt CSpudNotify::DoReadDes(const TDesC& aField, TDes16& aValue,const RMessagePtr2* aMessage)
       
   260     {
       
   261 	//Spudman does eventually call iNotify->ReadDes but it does some necessary translations for some special cases therefore we
       
   262 	//need to defer to Spudman and cannot call iNotify->ReadDes ourselves
       
   263     // The lower NIF will never have any capabilities to give us
       
   264 	__ASSERT_ALWAYS(aMessage == NULL, iBindMan.SpudMan()->Panic());
       
   265 	return iBindMan.SpudMan()->ReadDes(iContextId, aField, aValue);
       
   266     }
       
   267 
       
   268 /**
       
   269  * Write an 8-bit descriptor field to the connection settings provider
       
   270  * @param aField The name of the field to which to write
       
   271  * @param aValue The value to be written to the field
       
   272  * @param aMessage for capability checking
       
   273  * @return KErrNone, if successful; otherwise one of the standard Symbian OS error codes
       
   274  */
       
   275 TInt CSpudNotify::DoWriteDes(const TDesC& aField, const TDesC8& aValue,const RMessagePtr2* aMessage)
       
   276     {
       
   277     return iNotify->WriteDes(aField, aValue, aMessage);
       
   278     }
       
   279 
       
   280 /**
       
   281  * Write an 16-bit descriptor field to the connection settings provider
       
   282  * @param aField The name of the field to which to write
       
   283  * @param aValue The value to be written to the field
       
   284  * @param aMessage for capability checking
       
   285  * @return KErrNone, if successful; otherwise one of the standard Symbian OS error codes
       
   286  */
       
   287 TInt CSpudNotify::DoWriteDes(const TDesC& aField, const TDesC16& aValue,const RMessagePtr2* aMessage)
       
   288     {
       
   289     return iNotify->WriteDes(aField, aValue, aMessage);
       
   290     }
       
   291 
       
   292 /**
       
   293  * Read an boolean field from the connection settings provider
       
   294  * @param aField The name of the field to read
       
   295  * @param aValue On return, contains the value of the field read
       
   296  * @param aMessage for capability checking
       
   297  * @return KErrNone, if successful; otherwise one of the standard Symbian OS error codes
       
   298  */
       
   299 TInt CSpudNotify::DoReadBool(const TDesC& aField, TBool& aValue,const RMessagePtr2* aMessage)
       
   300     {
       
   301     return iNotify->ReadBool(aField, aValue, aMessage);
       
   302     }
       
   303 
       
   304 /**
       
   305  * Write an boolean field to the connection settings provider
       
   306  * @param aField The name of the field to which to write
       
   307  * @param aValue The value to be written to the field
       
   308  * @param aMessage for capability checking
       
   309  * @return KErrNone, if successful; otherwise one of the standard Symbian OS error codes
       
   310  */
       
   311 TInt CSpudNotify::DoWriteBool(const TDesC& aField, TBool aValue,const RMessagePtr2* aMessage)
       
   312     {
       
   313     return iNotify->WriteBool(aField, aValue, aMessage);
       
   314     }
       
   315 
       
   316