connectivitylayer/isce/isirouter_dll/src/isicltransceiver.cpp
author mikaruus
Tue, 19 Oct 2010 13:16:20 +0300
changeset 9 8486d82aef45
parent 7 fa67e03b87df
permissions -rw-r--r--
modemadaptation release 2010wk40
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
     1
/*
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
     3
* All rights reserved.
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
     8
*
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
     9
* Initial Contributors:
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    11
*
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    12
* Contributors:
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents: 0
diff changeset
    13
*
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents: 0
diff changeset
    14
* Description:
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    15
*
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    16
*/
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    17
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    18
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    19
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    20
#include <kernel.h>                 // For Kern
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    21
#include <pn_const.h>               // For PN_OBJ_ROUTING_REQ
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    22
#include <phonetisi.h>              // For ISI_HEADER_OFFSET_...
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    23
#include <commisi.h>                // For COMMON_ISA_...
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    24
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    25
#include "isirouter.h"              // For DISIRouter
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    26
#include "isiroutertrace.h"         // For C_TRACE, ASSERT_RESET.. and fault codes
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    27
#include "misirouterlinkif.h"       // For MISIRouterLinkIf
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    28
#include "isihelpers.h"             // For GET_SENDER_DEV...
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    29
#include "memapi.h"                 // For MemApi
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    30
#include <trxdefs.h>                // For ETrxTest...
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    31
#include "isicltransceiver.h"       // For DISICLTransceiver
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    32
#include <nsisi.h>                  // For PN_NAMESERVICE...
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    33
#include "isirouterservice.h"       // For DIsiRouterService
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    34
#include "isimsgqueue.h"            // For DISIMsgQueue
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    35
#include "iscnokiadefinitions.h"    // For EIscNokiaUsbPhonetLink
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    36
#ifdef USE_MEDIAAPI  
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    37
#include <pn_isimedia_const.h>      // For PN_DEV_PC 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    38
#endif /* USE_MEDIAAPI */
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    39
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    40
// Faults
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    41
enum TISICLTransceiverFaults
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    42
    {
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    43
    EISICLTransceiverMemAllocFailure = 0x01,
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    44
    EISICLTransceiverMemAllocFailure1,
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    45
    EISICLTransceiverMemAllocFailure2,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    46
    EISICLTransceiverMemAllocFailure3,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    47
    EISICLTransceiverMemAllocFailure4,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    48
    EISICLTransceiverMemAllocFailure5,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    49
    EISICLTransceiverMemAllocFailure6,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    50
    EISICLTransceiverMemAllocFailure7,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    51
    EISICLTransceiverMemAllocFailure8,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    52
#ifdef USE_MEDIAAPI 	
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    53
    EISICLTransceiverMemAllocFailure9,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    54
    EISICLTransceiverMemAllocFailure10,  
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    55
#endif /* USE_MEDIAAPI */  
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    56
    EISICLTransceiverNotSupportedMedia,
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    57
    EISICLTransceiverOverTheLimits,
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    58
    EISICLTransceiverNULLPtr,
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    59
    EISICLTransceiverNULLPtr2,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    60
    EISICLTransceiverNULLPtr3,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    61
    EISICLTransceiverNULLPtr4,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    62
    EISICLTransceiverNULLPtr5,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    63
    EISICLTransceiverNULLPtr6,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    64
    EISICLTransceiverNULLPtr7,
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    65
    EISICLTransceiverNotSupportedDevice,
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    66
    EISICLTransceiverDeviceConnection,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    67
    EISICLTransceiverCommIsaEntityNotReachableResp,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    68
    EISICLTransceiverNotThreadContext,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    69
    EISICLTransceiverMutexCreateFailed,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    70
    EISICLTransceiverMutexWaitFailed,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    71
    EISICLTransceiverMutexWaitFailed2,
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    72
    };
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    73
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    74
// Constants
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    75
const TInt KDfcPriority( 5 );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    76
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    77
DMutex* DISICLTransceiver::iDynamicDeviceTableMutex = NULL;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    78
_LIT8( KISICLTransceiverMutex, "ISICLTransceiverMutex" );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    79
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    80
DISICLTransceiver::DISICLTransceiver(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    81
        DISIRouter& aRouter,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    82
        TDfcQue* aThreadPtr
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    83
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    84
    : iShRouter( aRouter )
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    85
    {
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
    86
    C_TRACE( ( _T( "DISICLTransceiver::DISICLTransceiver>" ) ) );
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    87
    ASSERT_RESET_ALWAYS( aThreadPtr, ( EISICLTransceiverNULLPtr7 | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    88
    iShStateChangedDfc = new TDfc( StateChangedDfc, this, aThreadPtr, KDfcPriority );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    89
    ASSERT_RESET_ALWAYS( iShStateChangedDfc, ( EISICLTransceiverMemAllocFailure6 | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    90
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    91
    iRxQueueDfc = new TDfc( RxQueueDfc, this, aThreadPtr, KDfcPriority );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    92
    ASSERT_RESET_ALWAYS( iShStateChangedDfc, ( EISICLTransceiverMemAllocFailure8 | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    93
            
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    94
    DISIDevice* dev = new DISIDevice( PN_DEV_MODEM,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    95
                                      MISIRouterLinkIf::CreateLinkF( this, PN_MEDIA_MODEM_HOST_IF, ETrxSharedMemory)
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    96
                                      );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    97
    ASSERT_RESET_ALWAYS( dev, ( EISICLTransceiverMemAllocFailure3 | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    98
    iShDevices.Append( dev );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
    99
#ifdef USE_MEDIAAPI 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   100
    DISIDevice* dev2 = new DISIDevice( PN_DEV_PC,  // append to dynamic table if needed
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   101
                                       MISIRouterLinkIf::CreateLinkF( this, PN_MEDIA_USB, ETrxUSB )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   102
                                      );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   103
    ASSERT_RESET_ALWAYS( dev2, ( EISICLTransceiverMemAllocFailure9 | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   104
    iShDevices.Append( dev2 );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   105
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   106
    DISIDevice* dev4 = new DISIDevice( PN_DEV_PC,  // append to dynamic table if needed
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   107
                                       MISIRouterLinkIf::CreateLinkF( this, PN_MEDIA_BT, ETrxBT )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   108
                                      );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   109
    ASSERT_RESET_ALWAYS( dev4, ( EISICLTransceiverMemAllocFailure10 | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   110
    iShDevices.Append( dev4 );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   111
 #endif /* USE_MEDIAAPI */
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   112
	  DISIDevice* dev3 = new DISIDevice( PN_DEV_DUMMYIST,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   113
                                       MISIRouterLinkIf::CreateLinkF( this, PN_MEDIA_TEST, ETrxTest )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   114
                                      );                                      
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   115
    ASSERT_RESET_ALWAYS( dev3, ( EISICLTransceiverMemAllocFailure5 | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   116
    iShDevices.Append( dev3 );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   117
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   118
    iRouterService = new DIsiRouterService( *this );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   119
    ASSERT_RESET_ALWAYS( iRouterService, ( EISICLTransceiverMemAllocFailure2 | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   120
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   121
    iRxQueue = new DISIMsgQueue( KISIMainRxQueueSize );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   122
    ASSERT_RESET_ALWAYS( iRxQueue, ( EISICLTransceiverMemAllocFailure7 | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   123
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   124
    TInt err( Kern::MutexCreate( iDynamicDeviceTableMutex, KISICLTransceiverMutex, KMutexOrdGeneral0 ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   125
    ASSERT_RESET_ALWAYS( ( KErrNone == err ), ( EISICLTransceiverMutexCreateFailed | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   126
#ifdef USE_MEDIAAPI 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   127
    iDevPcLastSendTrxId = EAmountOfTrxs;  //put a maxvalue	
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   128
    iDevPcLastActiveTrxId = EAmountOfTrxs;  //put a maxvalue
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   129
#endif /* USE_MEDIAAPI */
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   130
    C_TRACE( ( _T( "DISICLTransceiver::DISICLTransceiver<" ) ) );
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   131
    }
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   132
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   133
DISICLTransceiver::~DISICLTransceiver()
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   134
    {
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   135
    C_TRACE( ( _T( "DISICLTransceiver::~DISICLTransceiver>" ) ) );
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   136
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   137
    iShDevices.ResetAndDestroy();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   138
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   139
    if ( iRouterService )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   140
        {            
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   141
        delete iRouterService;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   142
        iRouterService = NULL;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   143
        }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   144
        
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   145
    if ( iShStateChangedDfc )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   146
        { 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   147
        iShStateChangedDfc->Cancel();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   148
        delete iShStateChangedDfc;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   149
        iShStateChangedDfc = NULL;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   150
        }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   151
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   152
    if( iRxQueue )
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   153
        {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   154
        C_TRACE( ( _T( "DISICLTransceiver::ResetQueues 0x%x iRxQueue 0x%x" ), this, iRxQueue ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   155
        while( iRxQueue->Count() )
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   156
            {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   157
            MemApi::DeallocBlock( iRxQueue->Get() );
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   158
            }
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   159
        }
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   160
        
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   161
    if( iRxQueueDfc )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   162
        {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   163
        C_TRACE( ( _T( "DISIUserChannel::~DISIUserChannel 0x%x iRxQueueDfc 0x%x" ), this, iRxQueueDfc ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   164
        iRxQueueDfc->Cancel();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   165
        delete iRxQueueDfc;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   166
        iRxQueueDfc = NULL;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   167
        }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   168
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   169
    C_TRACE( ( _T( "DISICLTransceiver::~DISICLTransceiver<" ) ) );
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   170
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   171
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   172
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   173
TInt DISICLTransceiver::SendCommIsaEntityNotReachableResp(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   174
        TDes8& aNotDeliveredMessage
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   175
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   176
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   177
    C_TRACE( ( _T( "DISICLTransceiver::SendCommIsaEntityNotReachableResp 0x%x>" ), &aNotDeliveredMessage ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   178
    const TUint8* notDeliveredMsgPtr( aNotDeliveredMessage.Ptr() );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   179
    TInt error = KErrAlreadyExists;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   180
    // Avoid COMM_ISA_ENTITY_NOT_REACHABLE_RESP loop.
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   181
    if( ( notDeliveredMsgPtr[ ISI_HEADER_OFFSET_MESSAGEID ] == COMMON_MESSAGE ) &&
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   182
        ( ( notDeliveredMsgPtr[ ISI_HEADER_OFFSET_SUBMESSAGEID ] == COMM_ISA_ENTITY_NOT_REACHABLE_RESP ) || 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   183
          ( notDeliveredMsgPtr[ ISI_HEADER_OFFSET_SUBMESSAGEID ] == COMM_SERVICE_NOT_IDENTIFIED_RESP ) ) )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   184
        {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   185
        C_TRACE( ( _T( "DISICLTransceiver Not sending another CommIsaEntityNotReachableResp 0x%x 0x%x" ), &aNotDeliveredMessage, notDeliveredMsgPtr[ ISI_HEADER_OFFSET_SUBMESSAGEID ] ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   186
        }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   187
    else
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   188
        {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   189
        // Follows COMM specification: 000.031
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   190
        TUint8 length( ISI_HEADER_SIZE + SIZE_COMMON_MESSAGE_COMM_ISA_ENTITY_NOT_REACHABLE_RESP );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   191
        TDes8& respMsg = MemApi::AllocBlock( length );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   192
        ASSERT_RESET_ALWAYS( length > ISI_HEADER_OFFSET_MESSAGEID, ( EISICLTransceiverOverTheLimits | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   193
        TUint8* respMsgPtr = const_cast<TUint8*>( respMsg.Ptr() );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   194
        // We start to append from transaction id.
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   195
        respMsg.SetLength( ISI_HEADER_OFFSET_TRANSID );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   196
        // Get the header until messageid from prev. message.
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   197
        // Just turn receiver and sender device and object vice versa.
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   198
        respMsgPtr[ ISI_HEADER_OFFSET_MEDIA ] = notDeliveredMsgPtr[ ISI_HEADER_OFFSET_MEDIA ];
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   199
        SET_RECEIVER_DEV( respMsgPtr, GET_SENDER_DEV( aNotDeliveredMessage ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   200
        SET_SENDER_DEV  ( respMsgPtr, GET_RECEIVER_DEV( aNotDeliveredMessage ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   201
        respMsgPtr[ ISI_HEADER_OFFSET_RESOURCEID ] = notDeliveredMsgPtr[ ISI_HEADER_OFFSET_RESOURCEID ];
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   202
        SET_LENGTH( respMsgPtr, ( length - PN_HEADER_SIZE ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   203
        SET_RECEIVER_OBJ( respMsgPtr, GET_SENDER_OBJ( aNotDeliveredMessage ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   204
        SET_SENDER_OBJ( respMsgPtr, GET_RECEIVER_OBJ( aNotDeliveredMessage ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   205
        // Set from undelivered message
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   206
        respMsg.Append( notDeliveredMsgPtr[ ISI_HEADER_OFFSET_TRANSID ] );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   207
        // Message Identifier
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   208
        respMsg.Append( COMMON_MESSAGE );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   209
        // Sub message Identifier.
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   210
        respMsg.Append( COMM_ISA_ENTITY_NOT_REACHABLE_RESP );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   211
        // Not Delivered Message from original message.
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   212
        respMsg.Append( notDeliveredMsgPtr[ ISI_HEADER_OFFSET_MESSAGEID ] );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   213
        // Status
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   214
        respMsg.Append( COMM_ISA_ENTITY_NOT_AVAILABLE );//  different status in a case of device not existing
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   215
        // Filler
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   216
        const TUint8 KFiller( 0x00 );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   217
        respMsg.Append( KFiller );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   218
        // Filler
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   219
        respMsg.Append( KFiller );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   220
        // Filler
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   221
        respMsg.Append( KFiller );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   222
        error = RouteISIMessage( respMsg, EFalse );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   223
        // Programming error in this function if below assert is raised
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   224
        ASSERT_RESET_ALWAYS( KErrNone == error, ( EISICLTransceiverCommIsaEntityNotReachableResp | EDISICLTransceiverTraceId << KClassIdentifierShift ) );        
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   225
        }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   226
    MemApi::DeallocBlock( aNotDeliveredMessage );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   227
    C_TRACE( ( _T( "DISICLTransceiver::SendCommIsaEntityNotReachableResp 0x%x<" ), &aNotDeliveredMessage ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   228
    return error;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   229
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   230
    }
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents: 0
diff changeset
   231
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   232
// This is called in 1...N thread contextes
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   233
void DISICLTransceiver::ReceiveISIMessage(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   234
        const TDesC8& aMessage,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   235
        const TUint8 aTrxId
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   236
        )
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   237
    {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   238
    C_TRACE( ( _T( "DISICLTransceiver::ReceiveMsg 0x%x 0x%x 0x%x>" ), this, &aMessage, aTrxId ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   239
    // Can only be called from thread context.
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   240
    ASSERT_THREAD_CONTEXT_ALWAYS( ( EISICLTransceiverNotThreadContext | EDISIUserChannelTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   241
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   242
    TUint8 txDevId = GET_SENDER_DEV( aMessage.Ptr() );    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   243
    if ( DynamicDevice( txDevId ) )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   244
        {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   245
        TUint8 staticDevId(0);
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   246
        const TInt count( iShDevices.Count() );        
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   247
        TInt index(0);
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   248
        TBool staticDeviceFound(EFalse);
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   249
        MISIRouterLinkIf* Link = NULL;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   250
        while( !staticDeviceFound && ( index < count ) )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   251
            {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   252
            C_TRACE( ( _T( "DISICLTransceiver::ReceiveMsg find static device for trx 0x%x index %d" ), aTrxId, index ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   253
            DISIDevice* tmpDevice = iShDevices[ index ];
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   254
            ASSERT_RESET_ALWAYS( tmpDevice, ( EISICLTransceiverNULLPtr4 | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   255
            tmpDevice->LockDeviceFM();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   256
            Link = tmpDevice->GetLink();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   257
            if( Link->GetTrxId() == aTrxId )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   258
                {                
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   259
                staticDevId = tmpDevice->GetDeviceIdentifier();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   260
                tmpDevice->FreeDeviceFM();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   261
                C_TRACE( ( _T( "DISICLTransceiver::ReceiveMsg static device 0x%x trx 0x%x" ), this, &aMessage, aTrxId ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   262
                staticDeviceFound = ETrue;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   263
                }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   264
            else
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   265
                {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   266
                tmpDevice->FreeDeviceFM();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   267
                }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   268
            index++;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   269
            } 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   270
#ifdef USE_MEDIAAPI 		 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   271
        if ( PN_DEV_PC == GET_SENDER_DEV( aMessage.Ptr() ))
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   272
            {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   273
            C_TRACE( ( _T( "DISICLTransceiver::ReceiveMsg 0x%x 0x%x trx id = %d<" ), this, &aMessage, (Link->GetTrxId())  ) ); 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   274
            iDevPcLastActiveTrxId = iDevPcLastSendTrxId;                  	
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   275
            iDevPcLastSendTrxId =	Link->GetTrxId();                       	    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   276
            }		     
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   277
#endif /* USE_MEDIAAPI */  			
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   278
        UpdateDynamicDeviceTable( txDevId, staticDevId );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   279
        }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   280
    // else static device. No need to save trxId
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents: 0
diff changeset
   281
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   282
    iRxQueue->Add( aMessage );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   283
    iRxQueueDfc->Enque();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   284
    C_TRACE( ( _T( "DISICLTransceiver::ReceiveMsg 0x%x 0x%x 0x%x<" ), this, &aMessage, aTrxId ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   285
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   286
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   287
void DISICLTransceiver::RxQueueDfc(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   288
        TAny* aPtr  // Pointer to this object.
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   289
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   290
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   291
    C_TRACE( ( _T( "DISICLTransceiver::RxQueueDfc ->" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   292
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   293
    DISICLTransceiver& tmp = *reinterpret_cast<DISICLTransceiver*>( aPtr );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   294
    if( tmp.iRxQueue->Count() > 0 )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   295
        {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   296
        TDes8& msg( tmp.iRxQueue->Get() );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   297
        
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   298
        tmp.RouteISIMessage( msg, EFalse );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   299
        // Check here too to avoid unnecessary dfc queuing.
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   300
        if( tmp.iRxQueue->Count() > 0 )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   301
            {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   302
            C_TRACE( ( _T( "DISICLTransceiver::RxQueueDfc enque RxQueueDfc" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   303
            tmp.iRxQueueDfc->Enque();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   304
            }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   305
        }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   306
    C_TRACE( ( _T( "DISICLTransceiver::RxQueueDfc <-" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   307
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   308
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   309
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   310
TInt DISICLTransceiver::RouteISIMessage(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   311
        TDes8& aMessage,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   312
        TBool aDynamicSenderCheckNeeded
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   313
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   314
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   315
    C_TRACE( ( _T( "DISICLTransceiver::RouteISIMessage 0x%x 0x%x> len %d" ), &aMessage, aDynamicSenderCheckNeeded, aMessage.Length() ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   316
    const TUint8* msgPtr = aMessage.Ptr();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   317
    ISIMESSAGE_TRACE( aMessage );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   318
    TInt error( ValidateISIMessage( aMessage ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   319
    if( KErrNone != error )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   320
        {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   321
        TRACE_ASSERT_ALWAYS;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   322
        C_TRACE( ( _T( "DISICLTransceiver::RouteISIMessage invalid message 0x%x" ), &aMessage ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   323
        MemApi::DeallocBlock( aMessage );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   324
        }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   325
    else
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   326
        {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   327
        TBool sendOk( EFalse );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   328
        if ( aDynamicSenderCheckNeeded )// Save dynamic device ids from PN_DEV_OWN
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   329
            {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   330
            C_TRACE( ( _T( "DISICLTransceiver::RouteISIMessage from ISI Router" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   331
            TUint8 txDeviceIdentifier = GET_SENDER_DEV( aMessage );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   332
            if ( DynamicDevice( txDeviceIdentifier ) )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   333
                {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   334
                C_TRACE( ( _T( "DISICLTransceiver::RouteISIMessage from ISI Router Dynamic Dev" ) ) );                
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   335
                UpdateDynamicDeviceTable( txDeviceIdentifier, PN_DEV_OWN );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   336
#ifndef USE_MEDIAAPI 				
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   337
                ASSERT_RESET_ALWAYS( txDeviceIdentifier == PN_DEV_PC, 0xdeaddead );// only supported PN_DEV_PC with EIscNokiaUsbPhonetLink
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   338
#endif /* USE_MEDIAAPI */  					
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   339
                }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   340
            }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   341
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   342
        TUint8 rxDeviceIdentifier = GET_RECEIVER_DEV( aMessage );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   343
        C_TRACE( ( _T( "DISICLTransceiver::RouteISIMessage rxDeviceIdentifier 0x%x" ), rxDeviceIdentifier ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   344
        
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   345
        if ( DynamicDevice( rxDeviceIdentifier ) )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   346
            {            
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   347
            DynamicToStaticDevice( rxDeviceIdentifier );            
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   348
            C_TRACE( ( _T( "DISICLTransceiver::RouteISIMessage rxDeviceIdentifier after 0x%x" ), rxDeviceIdentifier ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   349
            }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   350
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   351
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   352
        if( rxDeviceIdentifier == PN_DEV_OWN )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   353
            {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   354
            C_TRACE( ( _T( "DISICLTransceiver::RouteISIMessage PN_DEV_OWN 0x%x" ), &aMessage ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   355
            TUint16 objId(0xffff);
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   356
#ifndef USE_MEDIAAPI 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   357
            if ( GET_RECEIVER_DEV( aMessage ) == PN_DEV_PC )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   358
                {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   359
                C_TRACE( ( _T( "DISICLTransceiver::RouteISIMessage to PN_DEV_PC in PN_DEV_OWN" )) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   360
                objId = EIscNokiaUsbPhonetLink;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   361
                }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   362
            else
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   363
                {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   364
                objId = GET_RECEIVER_OBJ( aMessage );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   365
                }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   366
#endif /* USE_MEDIAAPI */  					
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   367
#ifdef USE_MEDIAAPI 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   368
            objId = GET_RECEIVER_OBJ( aMessage );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   369
#endif /* USE_MEDIAAPI */  				
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   370
            sendOk = iShRouter.Receive( aMessage, objId );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   371
            C_TRACE( ( _T( "DISICLTransceiver::RouteISIMessage PN_DEV_OWN 0x%x ok %d" ), &aMessage, sendOk ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   372
            }        
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   373
        else
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   374
            {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   375
            C_TRACE( ( _T( "DISICLTransceiver::RouteISIMessage Not PN_DEV_OWN 0x%x" ), &aMessage ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   376
            MISIRouterLinkIf* link = NULL;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   377
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   378
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   379
            const TInt count( iShDevices.Count() );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   380
            for( TInt index( 0 ); index < count; index++ )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   381
                {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   382
                DISIDevice* tmpDevice = iShDevices[ index ];
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   383
                ASSERT_RESET_ALWAYS( tmpDevice, ( EISICLTransceiverNULLPtr4 | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   384
                tmpDevice->LockDeviceFM();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   385
                if( tmpDevice->GetDeviceIdentifier() == rxDeviceIdentifier ) 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   386
                    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   387
                    link = tmpDevice->GetLink();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   388
                    tmpDevice->FreeDeviceFM();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   389
#ifndef USE_MEDIAAPI 					
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   390
                    sendOk = link->Send( aMessage );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   391
                    break;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   392
#endif /* USE_MEDIAAPI */  	
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   393
#ifdef USE_MEDIAAPI 						
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   394
                    if ( GET_RECEIVER_DEV( aMessage ) == PN_DEV_PC )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   395
                        {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   396
                        C_TRACE( ( _T( "DISICLTransceiver::RouteISIMessage PN_DEV_PC %d, %d" ), link->GetTrxId(), iDevPcLastSendTrxId ) ); 	
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   397
                        if(iDevPcLastSendTrxId < EAmountOfTrxs)
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   398
                            {	
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   399
                            if ( link->GetTrxId() ==	iDevPcLastSendTrxId )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   400
                                {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   401
                                if (link->StateConnected())
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   402
                                    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   403
                                    C_TRACE( ( _T( "DISICLTransceiver::RouteISIMessage PN_DEV_PC %d, Msg mediaid 0x%x" ), link->GetTrxId(), msgPtr[ ISI_HEADER_OFFSET_MEDIA ] ) ); 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   404
                                    sendOk = link->Send( aMessage );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   405
                                    break;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   406
                                    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   407
                                }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   408
                            }    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   409
                        else
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   410
                            {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   411
                            break;	
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   412
                            }		   	
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   413
		                 }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   414
                    else
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   415
                    	{    			
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   416
                        sendOk = link->Send( aMessage );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   417
                        break;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   418
                        }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   419
#endif /* USE_MEDIAAPI */  							
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   420
                    }    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   421
                else
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   422
                    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   423
                    tmpDevice->FreeDeviceFM();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   424
                    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   425
                }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   426
            C_TRACE( ( _T( "DISICLTransceiver::RouteISIMessage Not PN_DEV_OWN ok %d" ), &aMessage, sendOk ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   427
            }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   428
        if( !sendOk )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   429
            {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   430
            TRACE_ASSERT_ALWAYS;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   431
            error = SendCommIsaEntityNotReachableResp( aMessage );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   432
            }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   433
        }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   434
    C_TRACE( ( _T( "DISICLTransceiver::RouteISIMessage 0x%x<" ), &aMessage ) );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents: 0
diff changeset
   435
    return error;
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   436
    }
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   437
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   438
void DISICLTransceiver::GetDeviceConnectionStates(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   439
        RArray<TUint8>& aDeviceIdentifierList,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   440
        const TBool aConnectedDevice
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   441
        )
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   442
    {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   443
    C_TRACE( ( _T( "DISICLTransceiver::GetDeviceConnectionStates 0x%x 0x%x>" ), &aDeviceIdentifierList, aConnectedDevice ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   444
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   445
    const TInt count( iShDevices.Count() );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   446
    for( TInt index( 0 ); index < count; index++ )
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   447
        {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   448
        DISIDevice* tmpDevice = iShDevices[ index ];
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   449
        ASSERT_RESET_ALWAYS( tmpDevice, ( EISICLTransceiverNULLPtr3 | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   450
        tmpDevice->LockDeviceFM();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   451
        if( tmpDevice->GetDeviceState() == aConnectedDevice )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   452
            {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   453
            const TUint8 deviceIdentifier( tmpDevice->GetDeviceIdentifier() );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   454
            tmpDevice->FreeDeviceFM();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   455
            aDeviceIdentifierList.Append( deviceIdentifier );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   456
            }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   457
        else
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   458
            {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   459
            tmpDevice->FreeDeviceFM();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   460
            }
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents: 0
diff changeset
   461
        }
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   462
    C_TRACE( ( _T( "DISICLTransceiver::GetDeviceConnectionStates 0x%x 0x%x<" ), &aDeviceIdentifierList, aConnectedDevice ) );
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   463
    }
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   464
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   465
// KErrBadDescriptor, if message length too small
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   466
// KErrUnderFlow, if message length too big.
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   467
// KErrCouldNotConnect, if receiver object is out of scope.
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   468
TInt DISICLTransceiver::ValidateISIMessage(
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   469
        TDes8& aMessage
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   470
        )
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   471
    {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   472
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   473
    C_TRACE( ( _T( "DISICLTransceiver::ValidateISIMessage 0x%x>" ), &aMessage ) );
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   474
    const TUint16 descLength( aMessage.Length() );
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   475
    TInt msgOk( KErrNone );
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   476
    msgOk = ( ISI_HEADER_OFFSET_MESSAGEID >= descLength ) ? KErrBadDescriptor : msgOk;
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   477
    TRACE_ASSERT_INFO( msgOk == KErrNone, msgOk );
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   478
    // Get ISI message length after known that the descriptor is big enough.
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   479
    const TUint8* msgPtr( aMessage.Ptr() );
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   480
    const TUint16 isiMsgLength( GET_LENGTH( msgPtr ) + PN_HEADER_SIZE );
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   481
    // If the descriptor length is less than ISI message length.
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   482
    msgOk = ( ( msgOk == KErrNone && isiMsgLength > descLength ) ? KErrUnderflow : msgOk );
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   483
    TRACE_ASSERT_INFO( msgOk == KErrNone, msgOk );
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   484
    // If the ISI message length is bigger that the largest supported.
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   485
    msgOk = ( ( msgOk == KErrNone && isiMsgLength > KMaxISIMsgSize ) ? KErrUnderflow : msgOk );
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   486
    TRACE_ASSERT_INFO( msgOk == KErrNone, msgOk );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents: 0
diff changeset
   487
    // If the ISI message length with PN_HEADER_SIZE is less or equal than ISI_HEADER_OFFSET_MESSAGEID.
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   488
    msgOk = ( ( msgOk == KErrNone && isiMsgLength <= ISI_HEADER_OFFSET_MESSAGEID ) ? KErrUnderflow : msgOk );
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   489
    TRACE_ASSERT_INFO( msgOk == KErrNone, msgOk );
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   490
    TRACE_ASSERT_INFO( msgOk == KErrNone, isiMsgLength );
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   491
    TRACE_ASSERT_INFO( msgOk == KErrNone, descLength );
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   492
    C_TRACE( ( _T( "DISICLTransceiver::ValidateISIMessage %d<" ), msgOk ) );
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   493
    return msgOk;
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   494
    }
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   495
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   496
// NOTE!! Called with FM held. Not allowed to block or nothing. Not even print traces!
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   497
// Called in N Thread context
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   498
void DISICLTransceiver::StateChanged(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   499
        // None
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   500
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   501
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   502
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   503
    iShStateChangedDfc->Enque();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   504
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   505
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   506
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   507
void DISICLTransceiver::StateChangedDfc(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   508
        TAny* aPtr
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   509
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   510
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   511
    C_TRACE( ( _T( "DISICLTransceiver::StateChangedDfc>" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   512
    DISICLTransceiver* self = reinterpret_cast<DISICLTransceiver*>( aPtr );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   513
    ASSERT_RESET_ALWAYS( self, ( EISICLTransceiverNULLPtr5 | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   514
    self->ReadStateChanges();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   515
    C_TRACE( ( _T( "DISICLTransceiver::StateChangedDfc<" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   516
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   517
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   518
void DISICLTransceiver::ReadStateChanges(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   519
        // None
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   520
        )
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   521
    {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   522
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   523
    C_TRACE( ( _T( "DISICLTransceiver::ReadStateChanges>" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   524
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   525
    const TInt count( iShDevices.Count() );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   526
    for( TInt index( 0 ); index < count; index++ )
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   527
        {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   528
        DISIDevice* tmpDevice = iShDevices[ index ];
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   529
        ASSERT_RESET_ALWAYS( tmpDevice, ( EISICLTransceiverNULLPtr6 | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   530
        tmpDevice->LockDeviceFM();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   531
        const TBool connected = tmpDevice->GetDeviceState();//  tee paremmaksi
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   532
	
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   533
#ifdef USE_MEDIAAPI 		
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   534
        MISIRouterLinkIf* link = NULL;     
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   535
        link = tmpDevice->GetLink();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   536
#endif /* USE_MEDIAAPI */                       	
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   537
        if( connected != tmpDevice->GetDeviceOldState() )
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   538
            {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   539
            tmpDevice->SetDeviceOldState( connected );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   540
            const TUint8 deviceIdentifier = tmpDevice->GetDeviceIdentifier();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   541
            tmpDevice->FreeDeviceFM();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   542
#ifdef USE_MEDIAAPI 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   543
            C_TRACE( ( _T( "DISICLTransceiver::ReadStateChanges trxid 0x%x state changed>" ),link->GetTrxId() ) );   
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   544
            if( (link->GetTrxId() == iDevPcLastSendTrxId) && (!connected) )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   545
                {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   546
                C_TRACE( ( _T( "DISICLTransceiver::ReadStateChanges trxid 0x%x disconneted>" ),link->GetTrxId() ) );   	
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   547
         	      iDevPcLastSendTrxId = iDevPcLastActiveTrxId;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   548
         	      iDevPcLastActiveTrxId = EAmountOfTrxs;  //put a maxvalue	
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   549
                } 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   550
#endif /* USE_MEDIAAPI */   					 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   551
            iRouterService->SendDeviceConnectionStateChangedInd( connected, deviceIdentifier );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   552
            }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   553
        else
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   554
            {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   555
            tmpDevice->FreeDeviceFM();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   556
            }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   557
        }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   558
    C_TRACE( ( _T( "DISICLTransceiver::ReadStateChanges<" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   559
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   560
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   561
TBool DISICLTransceiver::DynamicDevice( const TUint8 aDevId )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   562
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   563
    C_TRACE( ( _T( "DISICLTransceiver::DynamicDevice 0x%x>" ), aDevId ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   564
    TBool dynamicDevice(EFalse);
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   565
    switch( aDevId )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   566
        {        
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   567
        case PN_DEV_MODEM:
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   568
        case PN_DEV_DUMMYIST:
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   569
        case PN_DEV_OWN:
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   570
            {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   571
            //already set as EFalse
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   572
            break;
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   573
            }
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   574
        default:
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   575
            {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   576
            dynamicDevice = ETrue;
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   577
            break;
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   578
            }
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   579
        }
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   580
    C_TRACE( ( _T( "DISICLTransceiver::DynamicDevice 0x%x<" ), dynamicDevice ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   581
    return dynamicDevice;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   582
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   583
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   584
void DISICLTransceiver::UpdateDynamicDeviceTable( const TUint8 aDynamicDevId, const TUint8 aStaticDevId )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   585
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   586
    C_TRACE( ( _T( "DISICLTransceiver::UpdateDynamicDeviceTable 0x%x 0x%x>" ), aDynamicDevId, aStaticDevId) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   587
    TBool deviceExist(EFalse);
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   588
    TInt count(iDynamicDeviceTable.Count());
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   589
    TInt err( Kern::MutexWait( *iDynamicDeviceTableMutex ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   590
    ASSERT_RESET_ALWAYS( ( err == KErrNone ), ( EISICLTransceiverMutexWaitFailed2 | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   591
    for( TUint8 i = 0; i < count; i++ )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   592
        {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   593
        C_TRACE( ( _T( "DISICLTransceiver::UpdateDynamicDeviceTable find dynamic device %d" ), i) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   594
        if( iDynamicDeviceTable[ i ]->iDynamicDevId == aDynamicDevId )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   595
            {                    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   596
            C_TRACE( ( _T( "DISICLTransceiver::UpdateDynamicDeviceTable dyn dev exist i = %d aDynamicDevId 0x%x staticDevId 0x%x previous 0x%x" ), i, iDynamicDeviceTable[ i ]->iDynamicDevId, aStaticDevId, iDynamicDeviceTable[ i ]->iStaticDevId ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   597
            iDynamicDeviceTable[ i ]->iStaticDevId = aStaticDevId;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   598
            deviceExist = ETrue;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   599
            break;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   600
            }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   601
        }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   602
        
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   603
    if ( !deviceExist )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   604
        {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   605
        C_TRACE( ( _T( "DISICLTransceiver::UpdateDynamicDeviceTable new dynamic device added 0x%x 0x%x" ), aDynamicDevId, aStaticDevId ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   606
        iDynamicDeviceTable.Append( new TDynamicDevice( aDynamicDevId, aStaticDevId ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   607
        }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   608
    Kern::MutexSignal( *iDynamicDeviceTableMutex );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   609
    C_TRACE( ( _T( "DISICLTransceiver::UpdateDynamicDeviceTable 0x%x 0x%x<" ), aDynamicDevId, aStaticDevId) );
0
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   610
    }
63b37f68c1ce First Contribution. Vanilla as it came from Nokia
<dalarub>
parents:
diff changeset
   611
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   612
void DISICLTransceiver::DynamicToStaticDevice( TUint8& aRxDev )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   613
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   614
    C_TRACE( ( _T( "DISICLTransceiver::DynamicToStaticDevice aRxDev>" ), &aRxDev ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   615
    TInt err( Kern::MutexWait( *iDynamicDeviceTableMutex ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   616
    ASSERT_RESET_ALWAYS( ( err == KErrNone ), ( EISICLTransceiverMutexWaitFailed | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   617
    for( TUint8 i = 0; i < iDynamicDeviceTable.Count(); i++ )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   618
        {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   619
        if( iDynamicDeviceTable[ i ]->iDynamicDevId == aRxDev )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   620
            {                    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   621
            C_TRACE( ( _T( "DISICLTransceiver::DynamicToStaticDevice dyn dev exist i = %d iDynamicDevId 0x%x iStaticDevId 0x%x" ), i, iDynamicDeviceTable[ i ]->iDynamicDevId, iDynamicDeviceTable[ i ]->iStaticDevId) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   622
            aRxDev = iDynamicDeviceTable[ i ]->iStaticDevId;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   623
            break;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   624
            }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   625
        }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   626
    Kern::MutexSignal( *iDynamicDeviceTableMutex );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   627
    C_TRACE( ( _T( "DISICLTransceiver::DynamicToStaticDevice aRxDev<" ), &aRxDev ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   628
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   629
        
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   630
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   631
DISICLTransceiver::DISIDevice::DISIDevice(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   632
        const TUint8 aDeviceIdentifier,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   633
        MISIRouterLinkIf* aLink
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   634
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   635
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   636
    C_TRACE( ( _T( "DISICLTransceiver::DISIDevice::DISIDevice 0x%x 0x%x 0x%x>" ), aDeviceIdentifier, aLink ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   637
    iShDeviceIdentifier = aDeviceIdentifier;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   638
    iShOldDeviceConnectedState = EFalse;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   639
    ASSERT_RESET_ALWAYS( aLink, ( EISICLTransceiverNULLPtr2 | EDISICLTransceiverTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   640
    iShLink = aLink;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   641
    iShDeviceMutex = new NFastMutex();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   642
    ASSERT_RESET_ALWAYS( iShDeviceMutex, EISICLTransceiverNULLPtr6 | EDISICLTransceiverTraceId << KClassIdentifierShift );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   643
    C_TRACE( ( _T( "DISICLTransceiver::DISIDevice::DISIDevice<" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   644
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   645
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   646
DISICLTransceiver::DISIDevice::~DISIDevice()
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   647
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   648
    C_TRACE( ( _T( "DISICLTransceiver::DISIDevice::~DISIDevice>" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   649
    iShLink->Release();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   650
    iShLink = NULL;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   651
    // If not exists faulted already.
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   652
    delete iShDeviceMutex;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   653
    iShDeviceMutex = NULL;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   654
    C_TRACE( ( _T( "DISICLTransceiver::DISIDevice::~DISIDevice<" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   655
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   656
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   657
MISIRouterLinkIf* DISICLTransceiver::DISIDevice::GetLink()
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   658
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   659
//    C_TRACE( ( _T( "DISICLTransceiver::DISIDevice::GetLink<> 0x%x" ), iShLink ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   660
    return iShLink;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   661
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   662
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   663
TUint8 DISICLTransceiver::DISIDevice::GetDeviceIdentifier()
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   664
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   665
//    C_TRACE( ( _T( "DISICLTransceiver::DISIDevice::GetDeviceIdentifier<> 0x%x" ), iShDeviceIdentifier ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   666
    return iShDeviceIdentifier;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   667
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   668
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   669
TBool DISICLTransceiver::DISIDevice::GetDeviceState()
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   670
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   671
//    C_TRACE( ( _T( "DISICLTransceiver::DISIDevice::GetDeviceState<>" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   672
    return iShLink->StateConnected();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   673
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   674
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   675
TBool DISICLTransceiver::DISIDevice::GetDeviceOldState()
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   676
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   677
//    C_TRACE( ( _T( "DISICLTransceiver::DISIDevice::GetDeviceOldState<> 0x%x" ), iShOldDeviceConnectedState ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   678
    return iShOldDeviceConnectedState;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   679
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   680
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   681
void DISICLTransceiver::DISIDevice::SetDeviceOldState(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   682
        TBool aConnected
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   683
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   684
   {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   685
//   C_TRACE( ( _T( "DISICLTransceiver::DISIDevice::SetDeviceOldState<> 0x%x 0x%x" ), iShOldDeviceConnectedState, aConnected ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   686
   iShOldDeviceConnectedState = aConnected;    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   687
   }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   688
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   689
void DISICLTransceiver::DISIDevice::LockDeviceFM(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   690
        // None
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   691
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   692
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   693
    C_TRACE( ( _T( "DISICLTransceiver::DISIDevice::LockDeviceFM<>" ) ) );    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   694
    NKern::FMWait( iShDeviceMutex );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   695
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   696
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   697
void DISICLTransceiver::DISIDevice::FreeDeviceFM(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   698
        // None
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   699
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   700
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   701
    NKern::FMSignal( iShDeviceMutex );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   702
    C_TRACE( ( _T( "DISICLTransceiver::DISIDevice::FreeDeviceFM<>" ) ) );    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 7
diff changeset
   703
    }