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 } |