connectivitylayer/isce/isirouter_dll/src/isicltransceiver.cpp
changeset 7 fa67e03b87df
parent 5 8ccc39f9d787
child 9 8486d82aef45
equal deleted inserted replaced
6:942573423a60 7:fa67e03b87df
    23 #include "misirouterlinkif.h"     // For MISIRouterLinkIf
    23 #include "misirouterlinkif.h"     // For MISIRouterLinkIf
    24 #include "isihelpers.h"           // For GET_SENDER_DEV...
    24 #include "isihelpers.h"           // For GET_SENDER_DEV...
    25 #include "memapi.h"               // For MemApi
    25 #include "memapi.h"               // For MemApi
    26 #include <trxdefs.h>              // For ETrxTest...
    26 #include <trxdefs.h>              // For ETrxTest...
    27 #include "isicltransceiver.h"     // For DISICLTransceiver
    27 #include "isicltransceiver.h"     // For DISICLTransceiver
    28 
    28 #include <nsisi.h>                // For PN_NAMESERVICE... TODO:Remove this
    29 
    29 
    30 #define PN_MEDIA_TEST 0xBB //not real
    30 #define PN_MEDIA_TEST 0xBB //not real
    31 #define PN_DEV_MODEM 0x12
    31 //#define PN_DEV_MODEM 0x12
    32 #define PN_DEV_DUMMYIST 0x13
    32 #define PN_DEV_DUMMYIST 0x13
    33 #define PN_DEV_APE 0x14
    33 #define PN_DEV_OWN 0x6C
       
    34 
       
    35 // CONSTS
       
    36 DISICLTransceiver* DISICLTransceiver::iThisPtr = NULL;
       
    37 
    34 
    38 
    35 // Faults
    39 // Faults
    36 enum TISICLTransceiverFaults
    40 enum TISICLTransceiverFaults
    37     {
    41     {
    38     EISICLTransceiverMemAllocFailure = 0x01,
    42     EISICLTransceiverMemAllocFailure = 0x01,
   118 		    tempPtr.Append( 0x00 );
   122 		    tempPtr.Append( 0x00 );
   119 		    // Filler
   123 		    // Filler
   120 		    tempPtr.Append( 0x00 );
   124 		    tempPtr.Append( 0x00 );
   121 		    // Filler
   125 		    // Filler
   122             tempPtr.Append( 0x00 );
   126             tempPtr.Append( 0x00 );
   123 		    RouteISIMessage( tempPtr );
       
   124             error = RouteISIMessage( tempPtr );
   127             error = RouteISIMessage( tempPtr );
   125    		    }
   128    		    }
   126 		else
   129 		else
   127 		    {
   130 		    {
   128 		    C_TRACE( ( _T( "DISICLTransceiver Not sending another CommIsaEntityNotReachableResp" ) ) );
   131 		    C_TRACE( ( _T( "DISICLTransceiver Not sending another CommIsaEntityNotReachableResp" ) ) );
   134 TInt DISICLTransceiver::RouteISIMessage( TDes8& aMessage )
   137 TInt DISICLTransceiver::RouteISIMessage( TDes8& aMessage )
   135     {
   138     {
   136 	 C_TRACE( ( _T( "DISICLTransceiver::RouteISIMessage 0x%x>" ), &aMessage ) );
   139 	 C_TRACE( ( _T( "DISICLTransceiver::RouteISIMessage 0x%x>" ), &aMessage ) );
   137 	TInt error( ValidateISIMessage( aMessage ) );
   140 	TInt error( ValidateISIMessage( aMessage ) );
   138     TBool sendOk( EFalse );
   141     TBool sendOk( EFalse );
   139 	TUint8* messageBlockPtr( const_cast<TUint8*>( aMessage.Ptr() ) );
   142     if(GET_RECEIVER_DEV( aMessage ) == PN_DEV_OWN )
   140     switch( messageBlockPtr[ ISI_HEADER_OFFSET_RECEIVERDEVICE ] )
   143         {
   141         {
   144         C_TRACE( ( _T( "DISIRouter msg to PN_DEV_APE" ) ) );
   142         case PN_DEV_APE:
   145         sendOk = iRouter->Receive( aMessage, GET_RECEIVER_OBJ( aMessage ) );
   143             {
   146         C_TRACE( ( _T( "DISIRouter router sendOk %d" ), sendOk ) );
   144             C_TRACE( ( _T( "DISIRouter msg to PN_DEV_APE" ) ) );
   147         }
   145             if( messageBlockPtr[ ISI_HEADER_OFFSET_RECEIVEROBJECT ] == PN_OBJ_ROUTING_REQ )
   148     else
   146                 {
   149         {
   147                 //route with resource and nameservice
   150          C_TRACE( ( _T( "DISIRouter msg to other device" ) ) );
   148                 }
   151          TUint8 linkId = MapDeviceToMedia( GET_RECEIVER_DEV( aMessage ) );
   149             else{
   152 	       ASSERT_RESET_ALWAYS( linkId < EISIAmountOfMedias, ( EISICLTransceiverNotSupportedMedia | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
   150             	  sendOk = iRouter->Receive( aMessage, messageBlockPtr[ ISI_HEADER_OFFSET_RECEIVEROBJECT ] );
   153          MISIRouterLinkIf* link = iLinksArray[ linkId ];
   151                 C_TRACE( ( _T( "DISIRouter router sendOk %d" ), sendOk ) );
   154          ASSERT_RESET_ALWAYS( link, ( EISICLTransceiverNULLPtr | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
   152                 }
   155          sendOk = link->Send( aMessage );
   153             break;
   156          C_TRACE( ( _T( "DISIRouter link sendOk %d" ), sendOk ) );
   154             }
   157          }   
   155         default:
       
   156             {
       
   157             C_TRACE( ( _T( "DISIRouter msg to other device" ) ) );
       
   158             TUint8 linkId = MapDeviceToMedia( messageBlockPtr[ ISI_HEADER_OFFSET_RECEIVERDEVICE ] );
       
   159 	          ASSERT_RESET_ALWAYS( linkId < EISIAmountOfMedias, ( EISICLTransceiverNotSupportedMedia | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
       
   160             MISIRouterLinkIf* link = iLinksArray[ linkId ];
       
   161             ASSERT_RESET_ALWAYS( link, ( EISICLTransceiverNULLPtr | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
       
   162             sendOk = link->Send( aMessage );
       
   163             C_TRACE( ( _T( "DISIRouter link sendOk %d" ), sendOk ) );
       
   164             break;
       
   165             }
       
   166         }
       
   167     if( !sendOk )
   158     if( !sendOk )
   168         {
   159         {
   169         SendCommIsaEntityNotReachableResp( aMessage );
   160         SendCommIsaEntityNotReachableResp( aMessage );
   170         MemApi::DeallocBlock( aMessage );
   161         MemApi::DeallocBlock( aMessage );
   171         }
   162         }