connectivitylayer/isce/isirouter_dll/src/isicltransceiver.cpp
changeset 5 8ccc39f9d787
parent 0 63b37f68c1ce
child 7 fa67e03b87df
--- a/connectivitylayer/isce/isirouter_dll/src/isicltransceiver.cpp	Mon Nov 09 10:36:19 2009 +0000
+++ b/connectivitylayer/isce/isirouter_dll/src/isicltransceiver.cpp	Thu Jan 14 10:44:58 2010 +0200
@@ -10,8 +10,8 @@
 * Nokia Corporation - initial contribution.
 *
 * Contributors:
-* 
-* Description: 
+*
+* Description:
 *
 */
 
@@ -75,11 +75,13 @@
     delete []iLinksArray;
     C_TRACE( ( _T( "DISICLTransceiver::~DISICLTransceiver<" ) ) );
     }
-    
-void DISICLTransceiver::SendCommIsaEntityNotReachableResp( TDes8& aMessage )
+
+TInt DISICLTransceiver::SendCommIsaEntityNotReachableResp( TDes8& aMessage )
     {
     C_TRACE( ( _T( "DISICLTransceiver::SendCommIsaEntityNotReachableResp 0x%x>" ), &aMessage ) );
     const TUint8* msgTmpPtr( aMessage.Ptr() );
+    TInt error = KErrAlreadyExists;
+
     // To avoid COMM_ISA_ENTITY_NOT_REACHABLE_RESP loop
     if( msgTmpPtr[ ISI_HEADER_OFFSET_MESSAGEID ] != COMMON_MESSAGE &&
         msgTmpPtr[ ISI_HEADER_OFFSET_SUBMESSAGEID ] != COMM_ISA_ENTITY_NOT_REACHABLE_RESP )
@@ -89,7 +91,7 @@
 		    TUint8 length( 16 );
 		    TDes8& tempPtr = MemApi::AllocBlock( ISI_HEADER_SIZE + SIZE_COMMON_MESSAGE_COMM_ISA_ENTITY_NOT_REACHABLE_RESP );
 		    ASSERT_RESET_ALWAYS( &tempPtr, ( EISICLTransceiverMemAllocFailure1 | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
-  	    ASSERT_RESET_ALWAYS( ISI_HEADER_SIZE + SIZE_COMMON_MESSAGE_COMM_ISA_ENTITY_NOT_REACHABLE_RESP > ISI_HEADER_OFFSET_MESSAGEID, ( EISICLTransceiverOverTheLimits | EDISICLTransceiverTraceId << KClassIdentifierShift ) );    
+  	    ASSERT_RESET_ALWAYS( ISI_HEADER_SIZE + SIZE_COMMON_MESSAGE_COMM_ISA_ENTITY_NOT_REACHABLE_RESP > ISI_HEADER_OFFSET_MESSAGEID, ( EISICLTransceiverOverTheLimits | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
   	    TUint8* ptr = const_cast<TUint8*>( tempPtr.Ptr() );
   	    // We start to append from transaction id.
   	    tempPtr.SetLength( ISI_HEADER_OFFSET_TRANSID );
@@ -117,23 +119,25 @@
 		    // Filler
 		    tempPtr.Append( 0x00 );
 		    // Filler
-        tempPtr.Append( 0x00 );
+            tempPtr.Append( 0x00 );
 		    RouteISIMessage( tempPtr );
-		    }
+            error = RouteISIMessage( tempPtr );
+   		    }
 		else
 		    {
 		    C_TRACE( ( _T( "DISICLTransceiver Not sending another CommIsaEntityNotReachableResp" ) ) );
 		    }
     C_TRACE( ( _T( "DISICLTransceiver::SendCommIsaEntityNotReachableResp 0x%x<" ), &aMessage ) );
+    return error;
     }
 
-void DISICLTransceiver::RouteISIMessage( TDes8& aMessage )
+TInt DISICLTransceiver::RouteISIMessage( TDes8& aMessage )
     {
-	  C_TRACE( ( _T( "DISICLTransceiver::RouteISIMessage 0x%x>" ), &aMessage ) );
-	  TInt error( ValidateISIMessage( aMessage ) ); //TODO what to do with error?
-	 	TBool sendOk( EFalse );
-	 	TUint8* messageBlockPtr( const_cast<TUint8*>( aMessage.Ptr() ) );
-	  switch( messageBlockPtr[ ISI_HEADER_OFFSET_RECEIVERDEVICE ] )
+	 C_TRACE( ( _T( "DISICLTransceiver::RouteISIMessage 0x%x>" ), &aMessage ) );
+	TInt error( ValidateISIMessage( aMessage ) );
+    TBool sendOk( EFalse );
+	TUint8* messageBlockPtr( const_cast<TUint8*>( aMessage.Ptr() ) );
+    switch( messageBlockPtr[ ISI_HEADER_OFFSET_RECEIVERDEVICE ] )
         {
         case PN_DEV_APE:
             {
@@ -154,7 +158,7 @@
             TUint8 linkId = MapDeviceToMedia( messageBlockPtr[ ISI_HEADER_OFFSET_RECEIVERDEVICE ] );
 	          ASSERT_RESET_ALWAYS( linkId < EISIAmountOfMedias, ( EISICLTransceiverNotSupportedMedia | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
             MISIRouterLinkIf* link = iLinksArray[ linkId ];
-            ASSERT_RESET_ALWAYS( link, ( EISICLTransceiverNULLPtr | EDISICLTransceiverTraceId << KClassIdentifierShift ) );  
+            ASSERT_RESET_ALWAYS( link, ( EISICLTransceiverNULLPtr | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
             sendOk = link->Send( aMessage );
             C_TRACE( ( _T( "DISIRouter link sendOk %d" ), sendOk ) );
             break;
@@ -164,8 +168,9 @@
         {
         SendCommIsaEntityNotReachableResp( aMessage );
         MemApi::DeallocBlock( aMessage );
-        }   
+        }
 	  C_TRACE( ( _T( "DISICLTransceiver::RouteISIMessage 0x%x<" ), &aMessage ) );
+    return error;
     }
 
 // KErrBadDescriptor, if message length too small
@@ -189,7 +194,7 @@
     // If the ISI message length is bigger that the largest supported.
     msgOk = ( ( msgOk == KErrNone && isiMsgLength > KMaxISIMsgSize ) ? KErrUnderflow : msgOk );
     TRACE_ASSERT_INFO( msgOk == KErrNone, msgOk );
-    // If the ISI message length with PN_HEADER_SIZE is less or equal than ISI_HEADER_OFFSET_MESSAGEID. 
+    // If the ISI message length with PN_HEADER_SIZE is less or equal than ISI_HEADER_OFFSET_MESSAGEID.
     msgOk = ( ( msgOk == KErrNone && isiMsgLength <= ISI_HEADER_OFFSET_MESSAGEID ) ? KErrUnderflow : msgOk );
     TRACE_ASSERT_INFO( msgOk == KErrNone, msgOk );
     TRACE_ASSERT_INFO( msgOk == KErrNone, msgOk );