254 { |
254 { |
255 #endif |
255 #endif |
256 iChannelTable[ aChannelId ].iChannel = NULL; |
256 iChannelTable[ aChannelId ].iChannel = NULL; |
257 iChannelTable[ aChannelId ].iWaitingChannel = NULL; |
257 iChannelTable[ aChannelId ].iWaitingChannel = NULL; |
258 iChannelTable[ aChannelId ].iType = ENormalOpen; |
258 iChannelTable[ aChannelId ].iType = ENormalOpen; |
259 const TInt indicationCancelOrderSize( 2 ); |
259 if( iConnectionStatus == EIADConnectionOk ) |
260 TDes8& cancelOrder = AllocateBlock( indicationCancelOrderSize ); |
260 { |
261 cancelOrder.Append( 0x00 ); |
261 const TInt indicationCancelOrderSize( 2 ); |
262 cancelOrder.Append( 0x00 ); |
262 TDes8& cancelOrder = AllocateBlock( indicationCancelOrderSize ); |
263 // Order internally, so no return values above ::Close { 0x00, 0x00 } 8-bit cancel indication. |
263 cancelOrder.Append( 0x00 ); |
264 TInt error( OrderIndication( cancelOrder, aChannelId, EFalse ) ); |
264 cancelOrder.Append( 0x00 ); |
265 C_TRACE( ( _T( "DRouter::Close open->close indication order returned %d 0x%x" ), error, aChannelId ) ); |
265 // Order internally, so no return values above ::Close { 0x00, 0x00 } 8-bit cancel indication. |
266 OstTraceExt2( TRACE_NORMAL, DROUTER_CLOSE, "DRouter::Close open->close indication order returned;error=%d;aChannelId=%x", error, aChannelId ); |
266 TInt error( OrderIndication( cancelOrder, aChannelId, EFalse ) ); |
267 ASSERT_RESET_ALWAYS( KErrNone == error, EIADIndicationOrderFailed | static_cast<TUint8>( ( aChannelId << KChannelNumberShift ) ) ); |
267 C_TRACE( ( _T( "DRouter::Close open->close indication order returned %d 0x%x" ), error, aChannelId ) ); |
268 DeAllocateBlock( cancelOrder ); |
268 OstTraceExt2( TRACE_NORMAL, DROUTER_CLOSE, "DRouter::Close open->close indication order returned;error=%d;aChannelId=%x", error, aChannelId ); |
|
269 ASSERT_RESET_ALWAYS( KErrNone == error, EIADIndicationOrderFailed | static_cast<TUint8>( ( aChannelId << KChannelNumberShift ) ) ); |
|
270 DeAllocateBlock( cancelOrder ); |
|
271 } |
269 #if (NCP_COMMON_SOS_VERSION_SUPPORT >= SOS_VERSION_95) |
272 #if (NCP_COMMON_SOS_VERSION_SUPPORT >= SOS_VERSION_95) |
270 } |
273 } |
271 else |
274 else |
272 { |
275 { |
273 C_TRACE( ( _T( "DRouter::Close open->close loaned channel 0x%x" ), aChannelId ) ); |
276 C_TRACE( ( _T( "DRouter::Close open->close loaned channel 0x%x" ), aChannelId ) ); |
274 OstTrace1( TRACE_NORMAL, DROUTER_CLOSE_2, "DRouter::Close open->close loaned channel;aChannelId=%x", aChannelId ); |
277 OstTrace1( TRACE_NORMAL, DROUTER_CLOSE_2, "DRouter::Close open->close loaned channel;aChannelId=%x", aChannelId ); |
275 iChannelTable[ aChannelId ].iType = ENormalOpen; |
278 iChannelTable[ aChannelId ].iType = ENormalOpen; |
276 iChannelTable[ aChannelId ].iChannel = iChannelTable[ aChannelId ].iWaitingChannel; |
279 iChannelTable[ aChannelId ].iChannel = iChannelTable[ aChannelId ].iWaitingChannel; |
277 iChannelTable[ aChannelId ].iWaitingChannel = NULL; |
280 iChannelTable[ aChannelId ].iWaitingChannel = NULL; |
|
281 // TODO: When pipe functionality working, call PipeLoanReturned |
278 } |
282 } |
279 #endif |
283 #endif |
280 } |
284 } |
281 C_TRACE( ( _T( "DRouter::Close 0x%x <-" ), aChannelId ) ); |
285 C_TRACE( ( _T( "DRouter::Close 0x%x <-" ), aChannelId ) ); |
282 OstTrace0( TRACE_NORMAL, DROUTER_CLOSE_EXIT, "<DRouter::Close" ); |
286 OstTrace0( TRACE_NORMAL, DROUTER_CLOSE_EXIT, "<DRouter::Close" ); |
647 { |
651 { |
648 C_TRACE( ( _T( "DRouter::SendMessage sending to NAMESERVICE>" ) ) ); |
652 C_TRACE( ( _T( "DRouter::SendMessage sending to NAMESERVICE>" ) ) ); |
649 iNameService->Receive( aMessage ); |
653 iNameService->Receive( aMessage ); |
650 C_TRACE( ( _T( "DRouter::SendMessage sending to NAMESERVICE<" ) ) ); |
654 C_TRACE( ( _T( "DRouter::SendMessage sending to NAMESERVICE<" ) ) ); |
651 } |
655 } |
|
656 else if ( msgBlockPtr[ ISI_HEADER_OFFSET_RECEIVERDEVICE ] == PN_DEV_OWN || |
|
657 msgBlockPtr[ ISI_HEADER_OFFSET_RECEIVERDEVICE ] == PN_DEV_PC ) |
|
658 { |
|
659 C_TRACE( ( _T( "DRouter::SendMessage to 0x%x" ), msgBlockPtr[ ISI_HEADER_OFFSET_RECEIVERDEVICE ] ) ); |
|
660 this->MessageReceived( aMessage ); |
|
661 } |
652 else // Normal way |
662 else // Normal way |
653 { |
663 { |
654 // The IST shall deallocate the block when it's approriate to do. |
664 // The IST shall deallocate the block when it's approriate to do. |
655 C_TRACE( ( _T( "DRouter::SendMessage sending 0x%x" ), &aMessage ) ); |
665 C_TRACE( ( _T( "DRouter::SendMessage sending 0x%x" ), &aMessage ) ); |
656 OstTrace1( TRACE_NORMAL, DUP3_DROUTER_SENDMESSAGE, "DRouter::SendMessage;aMessage=%x", (TUint)&(aMessage )); |
666 OstTrace1( TRACE_NORMAL, DUP3_DROUTER_SENDMESSAGE, "DRouter::SendMessage;aMessage=%x", (TUint)&(aMessage )); |
662 { |
672 { |
663 C_TRACE( ( _T( "DRouter::SendMessage not sending due error 0x%x %d %d" ), &aMessage, aCh, error ) ); |
673 C_TRACE( ( _T( "DRouter::SendMessage not sending due error 0x%x %d %d" ), &aMessage, aCh, error ) ); |
664 OstTraceExt2( TRACE_NORMAL, DUP1_DROUTER_SENDMESSAGE, "DRouter::SendMessage;aCh=%hx;error=%d", aCh, error ); |
674 OstTraceExt2( TRACE_NORMAL, DUP1_DROUTER_SENDMESSAGE, "DRouter::SendMessage;aCh=%hx;error=%d", aCh, error ); |
665 // Deallocate the block. |
675 // Deallocate the block. |
666 TRACE_ASSERT_INFO( 0, (TUint8)aCh<<KChannelNumberShift | (TUint8)error ); |
676 TRACE_ASSERT_INFO( 0, (TUint8)aCh<<KChannelNumberShift | (TUint8)error ); |
667 this->DeAllocateBlock( aMessage ); |
677 if ( error != KErrNotReady ) // No deallocation if no connection |
|
678 { |
|
679 this->DeAllocateBlock( aMessage ); |
|
680 } |
668 // TODO: who should NULL the block? IST or IAD |
681 // TODO: who should NULL the block? IST or IAD |
669 } |
682 } |
670 C_TRACE( ( _T( "DRouter::SendMessage 0x%x %d %d <-" ), &aMessage, aCh, error ) ); |
683 C_TRACE( ( _T( "DRouter::SendMessage 0x%x %d %d <-" ), &aMessage, aCh, error ) ); |
671 OstTraceExt2( TRACE_NORMAL, DROUTER_SENDMESSAGE_EXIT, "<DRouter::SendMessage;aCh=%hx;error=%d", aCh, error ); |
684 OstTraceExt2( TRACE_NORMAL, DROUTER_SENDMESSAGE_EXIT, "<DRouter::SendMessage;aCh=%hx;error=%d", aCh, error ); |
672 return error; |
685 return error; |
1272 OstTraceExt2( TRACE_NORMAL, DROUTER_SETSENDERINFO_ENTRY, ">DRouter::SetSenderInfo;aMessage=%x;aCh=%hx", ( TUint )&( aMessage ), aCh ); |
1285 OstTraceExt2( TRACE_NORMAL, DROUTER_SETSENDERINFO_ENTRY, ">DRouter::SetSenderInfo;aMessage=%x;aCh=%hx", ( TUint )&( aMessage ), aCh ); |
1273 C_TRACE( ( _T( "DRouter::SetSenderInfo 0x%x ->" ), &aMessage ) ); |
1286 C_TRACE( ( _T( "DRouter::SetSenderInfo 0x%x ->" ), &aMessage ) ); |
1274 TUint8* msgBlockPtr = const_cast<TUint8*>( aMessage.Ptr() ); |
1287 TUint8* msgBlockPtr = const_cast<TUint8*>( aMessage.Ptr() ); |
1275 ASSERT_RESET_ALWAYS( aMessage.Length() > ISI_HEADER_OFFSET_MEDIA, EIADOverTheLimits | EIADFaultIdentifier10 << KFaultIdentifierShift ); |
1288 ASSERT_RESET_ALWAYS( aMessage.Length() > ISI_HEADER_OFFSET_MEDIA, EIADOverTheLimits | EIADFaultIdentifier10 << KFaultIdentifierShift ); |
1276 if ( aCh == EIADNokiaUsbPhonetLink ) |
1289 if ( aCh == EIADNokiaUsbPhonetLink ) |
1277 { |
1290 { |
1278 msgBlockPtr[ ISI_HEADER_OFFSET_MEDIA ] = PN_MEDIA_SOS; |
1291 msgBlockPtr[ ISI_HEADER_OFFSET_MEDIA ] = PN_MEDIA_SOS; |
1279 SET_RECEIVER_DEV( msgBlockPtr, OTHER_DEVICE_1 ); |
1292 C_TRACE( ( _T( "DRouter::SetSenderInfo 0x%x 0x%x 0x%x" ), aMessage.Ptr()[0], msgBlockPtr[ ISI_HEADER_OFFSET_MEDIA ], PN_MEDIA_SOS ) ); |
|
1293 if( GET_RECEIVER_DEV( msgBlockPtr ) != PN_DEV_OWN) |
|
1294 { |
|
1295 C_TRACE( ( _T( "DRouter::SetSenderInfo to OTHER_DEVICE_1" ) ) ); |
|
1296 SET_RECEIVER_DEV( msgBlockPtr, OTHER_DEVICE_1 ); |
|
1297 } |
1280 } |
1298 } |
1281 else{ |
1299 else{ |
1282 SET_SENDER_OBJ( msgBlockPtr, aCh ); |
1300 SET_SENDER_OBJ( msgBlockPtr, aCh ); |
1283 C_TRACE( ( _T( "DRouter::SetSenderInfo receiver device %d" ), msgBlockPtr[ ISI_HEADER_OFFSET_RECEIVERDEVICE ] ) ); |
1301 C_TRACE( ( _T( "DRouter::SetSenderInfo receiver device %d" ), msgBlockPtr[ ISI_HEADER_OFFSET_RECEIVERDEVICE ] ) ); |
1284 if( msgBlockPtr[ ISI_HEADER_OFFSET_RECEIVERDEVICE ] == PN_DEV_OWN ) |
1302 if( msgBlockPtr[ ISI_HEADER_OFFSET_RECEIVERDEVICE ] == PN_DEV_OWN || msgBlockPtr[ ISI_HEADER_OFFSET_RECEIVERDEVICE ] == PN_DEV_PC ) |
1285 { |
1303 { |
1286 C_TRACE( ( _T( "DRouter::SetSenderInfo message to APE from APE" ) ) ); |
1304 C_TRACE( ( _T( "DRouter::SetSenderInfo message to APE from APE" ) ) ); |
1287 SET_SENDER_DEV( msgBlockPtr, PN_DEV_OWN ); |
1305 SET_SENDER_DEV( msgBlockPtr, PN_DEV_OWN ); |
1288 } |
1306 } |
1289 else |
1307 else |
1382 } |
1400 } |
1383 |
1401 |
1384 //From objectapi |
1402 //From objectapi |
1385 EXPORT_C MISIObjectRouterIf* MISIObjectRouterIf::Connect( const TInt32 aUID, TUint8& aObjId, MISIRouterObjectIf* aCallback ) |
1403 EXPORT_C MISIObjectRouterIf* MISIObjectRouterIf::Connect( const TInt32 aUID, TUint8& aObjId, MISIRouterObjectIf* aCallback ) |
1386 { |
1404 { |
1387 C_TRACE( ( _T( "MISIObjectRouterIf::Connect %d 0x%x 0x%x>" ), aUID, aObjId, aCallback ) ); |
1405 C_TRACE( ( _T( "MISIObjectRouterIf::Connect %d 0x%x 0x%x>" ), aUID, aObjId, aCallback ) ); |
1388 Kern::Printf( "IADRouter::Connect" ); |
|
1389 //Connect( aUID, aObjId, aCallback ); |
1406 //Connect( aUID, aObjId, aCallback ); |
1390 if( aUID == KNameServiceUID ) |
1407 if( aUID == KNameServiceUID ) |
1391 { |
1408 { |
1392 C_TRACE( ( _T( "MISIObjectRouterIf was nameservice" ) ) ); |
1409 C_TRACE( ( _T( "MISIObjectRouterIf was nameservice" ) ) ); |
1393 DRouter::iThisPtr->iNameService = aCallback; |
1410 DRouter::iThisPtr->iNameService = aCallback; |
1409 } |
1426 } |
1410 |
1427 |
1411 TInt DRouter::Send( TDes8& aMessage, const TUint8 aObjId ) |
1428 TInt DRouter::Send( TDes8& aMessage, const TUint8 aObjId ) |
1412 { |
1429 { |
1413 C_TRACE( ( _T( "DRouter::Send objectapi 0x%x 0x%x>" ), &aMessage, aObjId ) ); |
1430 C_TRACE( ( _T( "DRouter::Send objectapi 0x%x 0x%x>" ), &aMessage, aObjId ) ); |
1414 Kern::Printf( "IADRouter::Send" ); |
|
1415 if( aObjId == PN_OBJ_EVENT_MULTICAST ) //from communicationmanager |
1431 if( aObjId == PN_OBJ_EVENT_MULTICAST ) //from communicationmanager |
1416 { |
1432 { |
1417 // Don't put to mainrxqueue |
1433 // Don't put to mainrxqueue |
1418 HandleIsiMessage( aMessage ); |
1434 HandleIsiMessage( aMessage ); |
1419 } |
1435 } |