connectivitylayer/isce/isinameservice_dll/src/isinameservice.cpp
author mikaruus
Tue, 19 Oct 2010 13:16:20 +0300
changeset 9 8486d82aef45
parent 8 6295dc2169f3
permissions -rw-r--r--
modemadaptation release 2010wk40
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
     1
/*
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
     8
*
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    11
*
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    12
* Contributors:
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    13
*
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    14
* Description:
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    15
*
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    16
*/
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    17
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    18
#include <kernel.h>               // For Kern
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    19
#include "isinameservice.h"       // For DISINameService
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    20
#include "misiobjectrouterif.h"   // For MISIObjectRouterIf
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    21
#include "isinameservicetrace.h"  // For C_TRACE, ASSERT_RESET.. and fault codes
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    22
#include "memapi.h"               // For MemApi
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    23
#include <phonetisi.h>            // For ISI_HEADER_SIZE
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    24
#include <pn_const.h>             // For PN_NAMESERVICE
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    25
#include <nsisi.h>                // For PN
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    26
#include "misiobjectrouterif.h"   // For MISIObjectRouterIf
7
fa67e03b87df New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents: 5
diff changeset
    27
#include "isihelpers.h"           // For SET_RECEIVER_OBJ...
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    28
#include "namerecords.h"          // For DNameRecords
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    29
#include "routerisi.h"            // For PN_ROUTER
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    30
#include <commisi.h>              // For SIZE_COMMON_MESSAGE_COMM_ISA_ENTITY_NOT_REACHABLE_RESP
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    31
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    32
#ifdef ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    33
#include "ape_commgrisi.h"          // For APE_COMMGR
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    34
#define ISCE_INTERNAL_EXTENDED_RESOURCE_ROUTING_SUPPORTED
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    35
//#include "isinameserviceextended.h" // For DISINameServiceExtended
7
fa67e03b87df New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents: 5
diff changeset
    36
#endif
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    37
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    38
// Faults
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    39
enum TISINameServiceFaults
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    40
    {
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    41
    EISINameServiceMemAllocFailure = 0x01,
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    42
    EISINameServiceNullPointer,
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    43
    EISINameServiceNullPointer1,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    44
    EISINameServiceNullPointer2,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    45
    EISINameServiceNullPointer6,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    46
    EISINameServiceNullPointer7,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    47
    EISINameServiceNullPointer8,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    48
    EISINameServiceNullPointer9,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    49
    EISINameServiceNullPointer10,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    50
    EISINameServiceNullPointer11,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    51
    EISINameServiceNullPointer12,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    52
    EISINameServiceNullPointer13,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    53
    EISINameServiceNullPointer14,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    54
    EISINameServiceNullPointer15,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    55
    EISINameServiceNullPointer16,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    56
    EISINameServiceNullPointer17,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    57
    EISINameServiceNullPointer18,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    58
    EISINameServiceNullPointer19,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    59
    EISINameServiceWrongLength,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    60
    EISINameServiceWrongLength1,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    61
    EISINameServiceWrongLength6,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    62
    EISINameServiceWrongLength7,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    63
    EISINameServiceWrongLength8,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    64
    EISINameServiceWrongLength9,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    65
    EISINameServiceWrongLength10,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    66
    EISINameServiceWrongLength11,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    67
    EISINameServiceWrongLength12,
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    68
    EISINameServiceUnknownMessage,
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    69
    EISINameServiceMutexCreateFailed,
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
    70
    EISINameServiceMutexWaitFailed,
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    71
    EISINameServiceSendFailed,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    72
    EISINameServiceFatalError,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    73
#ifdef ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    74
    EISINameServiceWrongLength2,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    75
    EISINameServiceWrongLength3,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    76
    EISINameServiceNullPointer3,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    77
    EISINameServiceNullPointer4,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    78
    EISINameServiceNullPointer5,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    79
    EISINameServiceNameCreateFailed,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    80
    EISINameServiceNameCreateFailed1,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    81
    EISINameServiceNameCreateFailed2,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    82
    EISINameServiceNameCreateFailed3,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    83
    EISINameServiceNameCreateFailed4,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    84
    EISINameServiceNameCreateFailed5,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    85
    EISINameServiceNameCreateFailed6,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    86
    EISINameServiceNameCreateFailed7,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    87
    EISINameServiceNameCreateFailed8,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    88
    EISINameServiceNameCreateFailed9,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    89
    EISINameServiceNameCreateFailed10,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    90
    EISINameServiceNameCreateFailed11,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    91
    EISINameServiceNameCreateFailed12,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    92
    EISINameServiceNameCreateFailed13,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    93
    EISINameServiceNameCreateFailed14,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    94
    EISINameServiceNameCreateFailed15,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    95
    EISINameServiceNameCreateFailed16,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    96
    EISINameServiceNameCreateFailed17,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    97
    EISINameServiceNameCreateFailed18,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    98
    EISINameServiceWrongResponse,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
    99
    EISINameServiceNameExtendedCreateFailed,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   100
    EISINameServiceExtendedNullPointer,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   101
    EISINameServiceNameNotCommgrResource,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   102
    EISINameServiceNameNotCommgrDevice,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   103
    EISINameServiceLookUpForPhoNetAddressAndFlagsFailed,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   104
#endif // ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   105
    };
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   106
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   107
const TUint32 KNameServiceUID( 0x2002A5A1 );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   108
const TUint8 KFiller( 0 );
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   109
const TUint8 KAlwaysAssert( 0x00 );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   110
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   111
const TUint16 KOneMatch( 0x00001 );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   112
7
fa67e03b87df New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents: 5
diff changeset
   113
DISINameService* DISINameService::iThisptr = NULL;
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   114
DMutex* DISINameService::iNameServiceMutex = NULL;
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   115
_LIT8( KNameServiceMutex, "KNameServiceMutex" );
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   116
const TUint8 KEightBitShift( 8 );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   117
const TUint8 KSixteenBitShift( 16 );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   118
const TUint8 KDeviceIdentifierPhoNetAddressShift( KEightBitShift );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   119
const TUint16 KUninitializedPhoNetAddress( 0x0000 );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   120
const TUint8 KRouterObjId( 0xFA ); // Only internally agreed inside isi router
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   121
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   122
DISINameService::DISINameService(
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   123
        // None
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   124
        )
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   125
    : iObjId( 0x00 )
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   126
    {
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   127
    C_TRACE( ( _T( "DISINameService::DISINameService 0x%x 0x%x>" ), iObjId, iRouter ) );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   128
    iNameRecords = new DNameRecords();
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   129
    ASSERT_RESET_ALWAYS( ( iNameRecords ), 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   130
                         ( EISINameServiceMemAllocFailure | EDISINameServiceTraceId << KClassIdentifierShift ) );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   131
    TInt err( Kern::MutexCreate( iNameServiceMutex, KNameServiceMutex, KMutexOrdGeneral0 ) );
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   132
    ASSERT_RESET_ALWAYS( ( KErrNone == err ), 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   133
                         ( EISINameServiceMutexCreateFailed | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   134
    iRouter = MISIObjectRouterIf::GetIf();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   135
    ASSERT_RESET_ALWAYS( ( iRouter ),
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   136
                         ( EISINameServiceNullPointer | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   137
    iRouter->Connect( KNameServiceUID, iObjId, this );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   138
    C_TRACE( ( _T( "DISINameService::DISINameService 0x%x" ), iObjId ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   139
    ASSERT_RESET_ALWAYS( ( iObjId == PN_OBJ_ROUTING_REQ ), 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   140
                         ( EISINameServiceFatalError | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   141
    // Starting from here we add the PN_ROUTER object 'statically' to Name Service
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   142
    TUint32 name = PN_ROUTER;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   143
    TUint16 phonetAddr = ( ( PN_DEV_OWN << KDeviceIdentifierPhoNetAddressShift ) | KRouterObjId );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   144
    TUint8 flags = PN_NAME_NOCHG;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   145
    err = iNameRecords->AddName( name, phonetAddr, flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   146
#ifdef ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   147
    iISINameServiceExtended = new DISINameServiceExtended( this );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   148
    ASSERT_RESET_ALWAYS( ( iISINameServiceExtended ), ( EISINameServiceNameExtendedCreateFailed | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   149
#endif // ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   150
    iThisptr = this;
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   151
    C_TRACE( ( _T( "DISINameService::DISINameService 0x%x 0x%x<" ), iObjId, iRouter ) );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   152
    }
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   153
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   154
DISINameService::~DISINameService(
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   155
        // None
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   156
        )
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   157
    {
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   158
    C_TRACE( ( _T( "DISINameService::~DISINameService>" ) ) );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   159
    if( iNameRecords )
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   160
        {
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   161
        delete iNameRecords;
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   162
        iNameRecords = NULL;
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   163
        }
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   164
#ifdef ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   165
    if( iISINameServiceExtended )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   166
        {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   167
        delete iISINameServiceExtended;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   168
        iISINameServiceExtended = NULL;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   169
        }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   170
#endif
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   171
    C_TRACE( ( _T( "DISINameService::~DISINameService<" ) ) );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   172
    }
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   173
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   174
void DISINameService::Receive(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   175
        const TDesC8& aMessage
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   176
        )
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   177
    {
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   178
    C_TRACE( ( _T( "DISINameService::Receive 0x%x>" ), &aMessage ) );
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   179
    // This to be signaled (and only) when send back.
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   180
    LockNameServiceDMutex();
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   181
    TUint8* msgPtr( (TUint8*)aMessage.Ptr() );
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   182
    TUint32 resource = GetResourceUsedInMessage( aMessage );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   183
    if( resource == PN_NAMESERVICE 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   184
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   185
        {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   186
        C_TRACE( ( _T( "DISINameService::Receive to PN_NAMESERVICE" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   187
        HandlePnsNameMessage( aMessage );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   188
        }
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   189
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   190
    // Messages which are to be Resource routed.
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   191
    else
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   192
        {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   193
        C_TRACE( ( _T( "DISINameService::Receive to Resource : 0x%x" ),resource  ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   194
        TUint16 phoNetAddress( KUninitializedPhoNetAddress );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   195
        TInt32 error = iNameRecords->LookupPhonetAddress( resource, &phoNetAddress );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   196
        if( KErrNone == error  )
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   197
            {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   198
            // Change phonet addr to current message from table entries.
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   199
            msgPtr[ ISI_HEADER_OFFSET_RECEIVERDEVICE ] = (TUint8) ( phoNetAddress >> KEightBitShift );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   200
            msgPtr[ ISI_HEADER_OFFSET_RECEIVEROBJECT ] = (TUint8) ( phoNetAddress );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   201
            TDes8* messagePtr = reinterpret_cast<TDes8*>( const_cast<TDesC8*>( &aMessage ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   202
            C_TRACE( ( _T( "DISINameService message to recDev: 0x%x recObj: 0x%x" ), msgPtr[ ISI_HEADER_OFFSET_RECEIVERDEVICE ], msgPtr[ ISI_HEADER_OFFSET_RECEIVEROBJECT ] ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   203
            SendToRouter( *messagePtr );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   204
            }
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   205
        else
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   206
            {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   207
            C_TRACE( ( _T( "DISINameService::Receive no Resource found : 0x%x" ), resource  ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   208
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   209
            TRACE_ASSERT_ALWAYS( KAlwaysAssert );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   210
            BuildAndSendCommIsaEntityNotReachableResp(aMessage);
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   211
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   212
            }
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   213
        }
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   214
    C_TRACE( ( _T( "DISINameService::Receive 0x%x<" ), &aMessage ) );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   215
    }
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   216
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   217
void DISINameService::HandleNameQueryReq(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   218
        const TDesC8& aPnsNameQueryReq
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   219
        )
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   220
    {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   221
    C_TRACE( ( _T( "DISINameService::HandleNameQueryReq 0x%x>" ) ,&aPnsNameQueryReq ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   222
    const TUint8* msgPtr = aPnsNameQueryReq.Ptr();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   223
    ASSERT_RESET_ALWAYS( msgPtr, ( EISINameServiceNullPointer6 | EDISINameServiceTraceId << KClassIdentifierShift ) );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   224
    TUint32 name = GETB32( &msgPtr[ ISI_HEADER_SIZE + PNS_NAME_QUERY_REQ_OFFSET_NAME ] );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   225
    TUint32 mask = GETB32( &msgPtr[ ISI_HEADER_SIZE + PNS_NAME_QUERY_REQ_OFFSET_BITMASK ] );
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   226
    RArray <TNameTableEntry*> nameTable;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   227
    iNameRecords->NameQuery( name, mask, &nameTable );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   228
    TUint32 count( nameTable.Count() );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   229
    // Hoks! not needed ISI_HEADER_SIZE because in below resp contains assumption that there is one entry always.
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   230
    TUint16 msgLength = ( SIZE_PNS_NAME_QUERY_RESP + ( count * SIZE_PN_NAME_SRV_ITEM_STR ) );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   231
    TDes8& respMsg = MemApi::AllocBlock( msgLength );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   232
    respMsg.SetLength( msgLength );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   233
    TUint8* respPtr = const_cast<TUint8*>( respMsg.Ptr() );
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   234
    ASSERT_RESET_ALWAYS( respPtr, ( EISINameServiceNullPointer7 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   235
    SetIsiHeaderForResp( respMsg, aPnsNameQueryReq, PNS_NAME_QUERY_RESP );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   236
    PUTB16( &respPtr[ ISI_HEADER_SIZE + PNS_NAME_QUERY_RESP_OFFSET_TOTALMATCHES ], count );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   237
    PUTB16( &respPtr[ ISI_HEADER_SIZE + PNS_NAME_QUERY_RESP_OFFSET_MATCHESINMSG ], count );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   238
    respPtr[ ISI_HEADER_SIZE + PNS_NAME_QUERY_RESP_OFFSET_RESERVED1 ] = KFiller;
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   239
    respPtr[ ISI_HEADER_SIZE + PNS_NAME_QUERY_RESP_OFFSET_RESERVED2 ] = KFiller;
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   240
    TUint16 index( ISI_HEADER_SIZE + PNS_NAME_QUERY_RESP_OFFSET_NAMEENTRYTBL );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   241
    C_TRACE( ( _T( "DISINameService::HandleNameQueryReq 0x%x entry count %d" ) ,&aPnsNameQueryReq, count ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   242
    for( TInt i( 0 ); i < count; i++ )
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   243
        {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   244
        ASSERT_RESET_ALWAYS( ( respMsg.Length() > index + PN_NAME_SRV_ITEM_STR_OFFSET_RESERVED ),
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   245
                             ( EISINameServiceWrongLength7 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   246
        TNameTableEntry* tmp = ( nameTable )[ i ];
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   247
        if ( ( (TUint8)( tmp->iPhonetAddress ) == PN_OBJ_ROUTING_REQ ) && 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   248
             ( tmp->iName == name ) )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   249
            {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   250
            TRACE_ASSERT_ALWAYS( KAlwaysAssert );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   251
            Kern::Printf("PNS_NAME_QUERY_REQ NOTE! Obj Id 0 not valid!! name 0x%08x txDev 0x%02x txObj 0x%02x", name, msgPtr[ISI_HEADER_OFFSET_SENDERDEVICE], msgPtr[ISI_HEADER_OFFSET_SENDEROBJECT] );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   252
            }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   253
        PUTB32( &respPtr[ index + PN_NAME_SRV_ITEM_STR_OFFSET_NAME ],  tmp->iName );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   254
        respPtr[ index + PN_NAME_SRV_ITEM_STR_OFFSET_DEV ] = (TUint8)( tmp->iPhonetAddress >> KEightBitShift );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   255
        respPtr[ index + PN_NAME_SRV_ITEM_STR_OFFSET_OBJ ] = (TUint8)( tmp->iPhonetAddress );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   256
        respPtr[ index + PN_NAME_SRV_ITEM_STR_OFFSET_FLAGS ] = tmp->iFlags;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   257
        respPtr[ index + PN_NAME_SRV_ITEM_STR_OFFSET_RESERVED ] = KFiller;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   258
        index += SIZE_PN_NAME_SRV_ITEM_STR;
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   259
        }
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   260
    SendToRouter( respMsg );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   261
    TDes8* block = reinterpret_cast<TDes8*>( const_cast<TDesC8*>(&aPnsNameQueryReq) );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   262
    MemApi::DeallocBlock( *block );
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   263
    C_TRACE( ( _T( "DISINameService::HandleNameQueryReq 0x%x<" ) ,&aPnsNameQueryReq  ) );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   264
    }
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   265
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   266
void DISINameService::HandleNameRemoveReq(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   267
        const TDesC8& aPnsNameRemoveReq
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   268
        )
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   269
    {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   270
    C_TRACE( ( _T( "DISINameService::HandleNameRemoveReq 0x%x>" ), &aPnsNameRemoveReq ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   271
    const TUint8* msgPtr = aPnsNameRemoveReq.Ptr();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   272
    ASSERT_RESET_ALWAYS( msgPtr, ( EISINameServiceNullPointer8 | EDISINameServiceTraceId << KClassIdentifierShift ) );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   273
    TUint32 name = GETB32( &msgPtr[ ISI_HEADER_SIZE + PNS_NAME_REMOVE_REQ_OFFSET_NAME ] );
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   274
    TUint16 phonetAddress( KUninitializedPhoNetAddress );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   275
    TUint8 flags( 0x00 );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   276
    // Need to get these values in here to guarantee that they are the same in IND if needed.
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   277
    TInt error = iNameRecords->LookupNamePhonetAddressAndFlags( name, &phonetAddress, &flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   278
    TRACE_ASSERT_ALWAYS( ( KErrNone == error ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   279
    const TUint8 err = iNameRecords->RemoveName( name );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   280
    C_TRACE( ( _T( "DISINameService::HandleNameRemoveReq PNS_NAME_REMOVE_RESP name 0x%x err 0x%x" ), name, err ) );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   281
    TUint16 msgLength( ISI_HEADER_SIZE + SIZE_PNS_NAME_REMOVE_RESP );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   282
    TDes8& respMsg = MemApi::AllocBlock( msgLength );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   283
    respMsg.SetLength( msgLength );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   284
    TUint8* respPtr = const_cast<TUint8*>( respMsg.Ptr() );
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   285
    ASSERT_RESET_ALWAYS( respPtr, ( EISINameServiceNullPointer9 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   286
    ASSERT_RESET_ALWAYS( ( respMsg.Length() > ISI_HEADER_SIZE + PNS_NAME_REMOVE_RESP_OFFSET_REASON ),
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   287
                         ( EISINameServiceWrongLength6 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   288
    SetIsiHeaderForResp( respMsg, aPnsNameRemoveReq, PNS_NAME_REMOVE_RESP );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   289
    if( msgPtr[ ISI_HEADER_OFFSET_SENDERDEVICE ] == PN_DEV_OWN )
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   290
        {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   291
        C_TRACE( ( _T( "DISINameService::HandleNameRemoveReq from own device err 0x%x" ) ) );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   292
        respPtr[ ISI_HEADER_SIZE + PNS_NAME_REMOVE_RESP_OFFSET_REASON ] = err;
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   293
        SendToRouter( respMsg );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   294
        if( PN_NAME_OK == err )
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   295
            {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   296
            TxPnsNameRemoveInd( aPnsNameRemoveReq, name, phonetAddress, flags );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   297
            }
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   298
        // No need to send indication if removal did not succeed as state is the same.
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   299
        }
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   300
    else
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   301
        {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   302
        C_TRACE( ( _T( "DISINameService::HandleNameRemoveReq PNS_NAME_REMOVE_REQ from other device not allowed" ) ) );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   303
        respPtr[ ISI_HEADER_SIZE + PNS_NAME_REMOVE_RESP_OFFSET_REASON ] = PN_NAME_NOT_ALLOWED;
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   304
        SendToRouter( respMsg );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   305
        }
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   306
    TDes8* block = reinterpret_cast<TDes8*>( const_cast<TDesC8*>(&aPnsNameRemoveReq) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   307
    MemApi::DeallocBlock( *block );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   308
    C_TRACE( ( _T( "DISINameService::HandleNameRemoveReq 0x%x<" ), &aPnsNameRemoveReq ) );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   309
    }
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   310
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   311
void DISINameService::SendToRouter(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   312
        TDes8& aMessage
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   313
        )
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   314
    {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   315
    C_TRACE( ( _T( "DISINameService::SendToRouter 0x%x>" ), &aMessage ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   316
    FreeNameServiceDMutex();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   317
    TInt value = iRouter->Send( aMessage, iObjId );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   318
    ASSERT_RESET_ALWAYS( value == KErrNone, ( EISINameServiceSendFailed | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   319
    C_TRACE( ( _T( "DISINameService::SendToRouter 0x%x<" ), &aMessage ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   320
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   321
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   322
void DISINameService::HandlePnsNameMessage( const TDesC8& aMessage )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   323
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   324
    C_TRACE( ( _T( "DISINameService::HandlePnsNameMessage 0x%x>" ), &aMessage ) );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   325
    const TUint8* msgPtr( aMessage.Ptr() );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   326
    switch( msgPtr[ ISI_HEADER_OFFSET_MESSAGEID ] )
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   327
        {
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   328
        case PNS_NAME_QUERY_REQ:
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   329
            {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   330
            C_TRACE( ( _T( "DISINameService::HandlePnsNameMessage PNS_NAME_QUERY_REQ" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   331
            HandleNameQueryReq( aMessage );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   332
            break;
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   333
            }
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   334
        case PNS_NAME_ADD_REQ:
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   335
            {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   336
            C_TRACE( ( _T( "DISINameService::HandlePnsNameMessage PNS_NAME_ADD_REQ" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   337
            HandleNameAddReq( aMessage );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   338
            break;
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   339
            }
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   340
        case PNS_NAME_REMOVE_REQ:
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   341
            {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   342
            C_TRACE( ( _T( "DISINameService::HandlePnsNameMessage PNS_NAME_REMOVE_REQ" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   343
            HandleNameRemoveReq( aMessage );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   344
            break;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   345
            }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   346
        case COMMON_MESSAGE:
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   347
            {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   348
            C_TRACE( ( _T( "DISINameService::HandlePnsNameMessage COMMON_MESSAGE" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   349
            HandleCommonMessage( aMessage );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   350
            break;
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   351
            }
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   352
        default:
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   353
            {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   354
            TRACE_ASSERT_ALWAYS( KAlwaysAssert );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   355
            TDes8& commonMessage = reinterpret_cast<TDes8&>( const_cast<TDesC8&>( aMessage ) );    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   356
            SendCommServiceNotIdentifiedResp( commonMessage );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   357
            C_TRACE( ( _T( "DISINameService::HandlePnsNameMessage unknown NAMESERVICE message" )  ) );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   358
            }
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   359
        }
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   360
    C_TRACE( ( _T( "DISINameService::HandlePnsNameMessage 0x%x<" ), &aMessage ) );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   361
    }
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   362
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   363
void DISINameService::HandleNameAddReq(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   364
        const TDesC8& aPnsNameAddReq
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   365
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   366
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   367
    C_TRACE( ( _T( "DISINameService::HandleNameAddReq 0x%x>" ), &aPnsNameAddReq ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   368
    TInt err( KErrArgument );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   369
    TUint16 respMsgLength( ISI_HEADER_SIZE + SIZE_PNS_NAME_ADD_RESP );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   370
    TDes8& respMsg = MemApi::AllocBlock( respMsgLength );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   371
    respMsg.SetLength( respMsgLength );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   372
    TUint8* respPtr = const_cast<TUint8*>( respMsg.Ptr() );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   373
    const TUint8* msgPtr = const_cast<TUint8*>( aPnsNameAddReq.Ptr() );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   374
    SetIsiHeaderForResp( respMsg, aPnsNameAddReq, PNS_NAME_ADD_RESP );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   375
    if( msgPtr[ ISI_HEADER_OFFSET_SENDERDEVICE ] == PN_DEV_OWN )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   376
        {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   377
        C_TRACE( ( _T( "DISINameService::HandleNameAddReq PNS_NAME_ADD_REQ from this device" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   378
        TUint32 name = GETB32( &msgPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_REQ_OFFSET_NAMEENTRY ] );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   379
        TUint16 phonetAddr = GETB16( &msgPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_REQ_OFFSET_NAMEENTRY + PN_NAME_SRV_ITEM_STR_OFFSET_DEV ] );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   380
        TUint8 flags = msgPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_REQ_OFFSET_NAMEENTRY + PN_NAME_SRV_ITEM_STR_OFFSET_FLAGS ];
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   381
        err = iNameRecords->AddName( name, phonetAddr, flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   382
        respPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_RESP_OFFSET_REASON ] = err;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   383
        SendToRouter( respMsg );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   384
        if( err == PN_NAME_OK )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   385
            {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   386
            TxPnsNameAddInd( aPnsNameAddReq, name, phonetAddr, flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   387
            }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   388
        // No need for else as state is not changed and indication is not needed to send.
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   389
        }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   390
    else
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   391
        {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   392
        C_TRACE( ( _T( "DISINameService::HandleNameAddReq PNS_NAME_ADD_REQ from other device" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   393
        respPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_RESP_OFFSET_REASON ] = PN_NAME_NOT_ALLOWED;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   394
        SendToRouter( respMsg );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   395
        }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   396
    TDes8* block = reinterpret_cast<TDes8*>( const_cast<TDesC8*>(&aPnsNameAddReq) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   397
    MemApi::DeallocBlock( *block );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   398
    C_TRACE( ( _T( "DISINameService::HandleNameAddReq 0x%x<" ), &aPnsNameAddReq ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   399
    }
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   400
7
fa67e03b87df New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents: 5
diff changeset
   401
EXPORT_C TBool MISICommunicationManagerIf::IsValidResource(
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   402
        const TDesC8& aMessage
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   403
        )
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   404
    {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   405
    C_TRACE( ( _T( "MISICommunicationManagerIf::IsValidResource 0x%x>" ), &aMessage ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   406
    DISINameService* self = DISINameService::GetISINameServiceF();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   407
    TBool found = self->HandleResourceValidationCheck( aMessage );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   408
    C_TRACE( ( _T( "MISICommunicationManagerIf::IsValidResource 0x%x %d<" ), &aMessage, found ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   409
    return found;
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   410
    }
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   411
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   412
EXPORT_C TUint8 MISICommunicationManagerIf::GetDeviceIdentifierByResource(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   413
        const TUint32 aResourceIdentifier
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   414
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   415
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   416
    C_TRACE( ( _T( "MISICommunicationManagerIf::GetDeviceIdentifierByResource 0x%x>" ), aResourceIdentifier ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   417
    DISINameService* self = DISINameService::GetISINameServiceF();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   418
    TUint8 deviceIdentifier = self->GetDeviceIdByResource( aResourceIdentifier );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   419
    C_TRACE( ( _T( "MISICommunicationManagerIf::GetDeviceIdentifierByResource 0x%x 0x%x<" ), aResourceIdentifier, deviceIdentifier ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   420
    return deviceIdentifier;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   421
    }
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   422
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   423
DECLARE_STANDARD_EXTENSION()
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   424
    {
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   425
    Kern::Printf( "ISI Name Service extension>" );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   426
    // Create a container extension
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   427
    DISINameService* extension = new DISINameService();
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   428
    TRACE_ASSERT( extension );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   429
    Kern::Printf( "ISI Name Service extension<" );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   430
    return extension ? KErrNone : KErrNoMemory;
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   431
    }
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   432
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   433
void DISINameService::BuildAndSendCommIsaEntityNotReachableResp(
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   434
        const TDesC8& aMsg
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   435
        )
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   436
    {
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   437
    C_TRACE( ( _T( "DISINameService::ConstructCommIsaEntityNotReachableResp 0x%x>" ), &aMsg ) );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   438
    // Make channel opening request followinfg COMM specification: 000.026
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   439
    TUint8 length( ISI_HEADER_SIZE + SIZE_COMMON_MESSAGE_COMM_ISA_ENTITY_NOT_REACHABLE_RESP );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   440
    TDes8& tempPtr = MemApi::AllocBlock( length );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   441
    ASSERT_RESET_ALWAYS( &tempPtr, EISINameServiceMemAllocFailure  ); //lisää jotakin infoa jotta löytyy ilman tracea...pelkän luvun perusteella??
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   442
    TUint8* ptr = const_cast<TUint8*>( tempPtr.Ptr() );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   443
    // We start to append from transaction id.
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   444
    tempPtr.SetLength( SIZE_COMMON_MESSAGE_COMM_ISA_ENTITY_NOT_REACHABLE_RESP );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   445
    // Get the header until messageid from prev. message.
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   446
    // Just turn receiver and sender device and object vice versa.
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   447
    const TUint8* msgTmpPtr( aMsg.Ptr() );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   448
    ptr[ ISI_HEADER_OFFSET_MEDIA ] = msgTmpPtr[ ISI_HEADER_OFFSET_MEDIA ];
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   449
    SET_RECEIVER_DEV( ptr, GET_SENDER_DEV( aMsg ) );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   450
    SET_SENDER_DEV  ( ptr, GET_RECEIVER_DEV( aMsg ) );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   451
    ptr[ ISI_HEADER_OFFSET_RESOURCEID ] = msgTmpPtr[ ISI_HEADER_OFFSET_RESOURCEID ];
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   452
    SET_LENGTH( ptr, length - PN_HEADER_SIZE );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   453
    SET_RECEIVER_OBJ( ptr, GET_SENDER_OBJ( aMsg ) );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   454
    SET_SENDER_OBJ( ptr, GET_RECEIVER_OBJ( aMsg ) );
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   455
    // Transactionid. 
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   456
    tempPtr.Append( msgTmpPtr[ ISI_HEADER_OFFSET_TRANSID ] );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   457
    // Message ID
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   458
    tempPtr.Append( COMMON_MESSAGE ); // 0xF0
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   459
    // Sub message ID.
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   460
    tempPtr.Append( COMM_ISA_ENTITY_NOT_REACHABLE_RESP ); // 0x14
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   461
    // Not Delivered Message from original req.
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   462
    tempPtr.Append( msgTmpPtr[ ISI_HEADER_OFFSET_MESSAGEID ] );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   463
    // Status - COMM_ISA_ENTITY_NOT_EXISTING
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   464
    tempPtr.Append( COMM_ISA_ENTITY_NOT_EXISTING); //0x01
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   465
    // Filler
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   466
    tempPtr.Append( KFiller );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   467
    // Filler
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   468
    tempPtr.Append( KFiller );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   469
    // Filler
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   470
    tempPtr.Append( KFiller );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   471
    //send data to router for handling
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   472
    SendToRouter( tempPtr );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   473
    TDes8* block = reinterpret_cast<TDes8*>( const_cast<TDesC8*>(&aMsg) );
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   474
    MemApi::DeallocBlock( *block );
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   475
    C_TRACE( ( _T( "DISINameService::SendCommIsaEntityNotReachableResp 0x%x<" ), &aMsg ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   476
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   477
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   478
void DISINameService::HandleCommonMessage(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   479
        const TDesC8& aCommonMessage
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   480
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   481
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   482
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   483
    C_TRACE( ( _T( "DISINameService::HandleCommonMessage 0x%x>" ), &aCommonMessage ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   484
    TDes8& commonMessage = reinterpret_cast<TDes8&>( const_cast<TDesC8&>(aCommonMessage) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   485
    const TUint8 subMessageIdentifier = commonMessage.Ptr()[ ISI_HEADER_OFFSET_SUBMESSAGEID ];
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   486
    switch( subMessageIdentifier )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   487
        {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   488
        case COMM_ISA_ENTITY_NOT_REACHABLE_RESP:
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   489
            {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   490
            const TUint8 notDeliveredMessageIndex = ( ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_ISA_ENTITY_NOT_REACHABLE_RESP_OFFSET_NOTDELIVEREDMESSAGEID );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   491
            const TUint8 notDeliveredMessageIdentifier = commonMessage.Ptr()[ notDeliveredMessageIndex ];
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   492
            // If some of name service _RESP worryig behaviour from client. If _IND it does not matter so much, although unsubscription for indications is not working then.
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   493
            C_TRACE( ( _T( "DISINameService::HandleCommonMessage COMM_ISA_ENTITY_NOT_REACHABLE_RESP not delivered message 0x%x" ), notDeliveredMessageIdentifier ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   494
            TRACE_ASSERT_ALWAYS( KAlwaysAssert );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   495
            // Dellocate here, because this is not sending a reply at all to avoid never ending loop.
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   496
            MemApi::DeallocBlock( commonMessage );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   497
            // Signal here because it does not send a reply.
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   498
            FreeNameServiceDMutex();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   499
            break;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   500
            }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   501
        case COMM_ISI_VERSION_GET_REQ:
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   502
            {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   503
            C_TRACE( ( _T( "DISINameService::HandleCommonMessage version get req" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   504
            SendCommIsiVersionGetResp( commonMessage );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   505
            break;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   506
            }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   507
        default:
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   508
            {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   509
            C_TRACE( ( _T( "DISINameService::HandleCommonMessage unknown common message" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   510
            TRACE_ASSERT_ALWAYS( KAlwaysAssert );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   511
            SendCommServiceNotIdentifiedResp( commonMessage );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   512
            break;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   513
            }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   514
        }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   515
    C_TRACE( ( _T( "DISINameService::HandleCommonMessage 0x%x<" ), &aCommonMessage ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   516
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   517
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   518
void DISINameService::SendCommServiceNotIdentifiedResp(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   519
        TDes8& aCommServiceNotIdentifiedReq
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   520
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   521
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   522
    C_TRACE( ( _T( "DISINameService::SendCommServiceNotIdentifiedResp 0x%x>" ), &aCommServiceNotIdentifiedReq ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   523
    TUint8 length( ISI_HEADER_SIZE + SIZE_COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   524
    TDes8& respMsg = MemApi::AllocBlock( length );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   525
    respMsg.SetLength(ISI_HEADER_SIZE + SIZE_COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   526
    TUint8* ptr( const_cast<TUint8*>( respMsg.Ptr() ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   527
    ASSERT_RESET_ALWAYS( ptr, ( EISINameServiceNullPointer1 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   528
    ASSERT_RESET_ALWAYS( ( respMsg.Length() >= (ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP_OFFSET_FILLERBYTE2) ),
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   529
                         ( EISINameServiceWrongLength | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   530
    const TUint8* msgPtr( aCommServiceNotIdentifiedReq.Ptr() );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   531
    SetIsiHeaderForCommonResp( respMsg, aCommServiceNotIdentifiedReq );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   532
    ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP_OFFSET_SUBMESSAGEID ] = COMM_SERVICE_NOT_IDENTIFIED_RESP;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   533
    ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP_OFFSET_NOTSERVEDMESSAGEID ] = msgPtr[ ISI_HEADER_OFFSET_MESSAGEID ];
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   534
    ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP_OFFSET_FILLERBYTE1 ] = KFiller;// ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP_OFFSET_MESSAGEEXTENSION ] = KNoExtension;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   535
    ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP_OFFSET_NOTSERVEDSUBMESSAGEID ] = msgPtr[ ISI_HEADER_OFFSET_SUBMESSAGEID ];
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   536
    ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP_OFFSET_FILLERBYTE1 ] = KFiller;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   537
    ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP_OFFSET_FILLERBYTE2 ] = KFiller;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   538
    SendToRouter( respMsg  );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   539
    MemApi::DeallocBlock( aCommServiceNotIdentifiedReq );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   540
    C_TRACE( ( _T( "DISINameService::SendCommServiceNotIdentifiedResp 0x%x<" ), &aCommServiceNotIdentifiedReq ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   541
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   542
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   543
void DISINameService::SendCommIsiVersionGetResp(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   544
        TDes8& aCommIsiVersionGetReq
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   545
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   546
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   547
    C_TRACE( ( _T( "DISINameService::SendCommIsiVersionGetResp 0x%x>" ), &aCommIsiVersionGetReq ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   548
    TUint8 length( ISI_HEADER_SIZE + SIZE_COMMON_MESSAGE_COMM_ISI_VERSION_GET_RESP );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   549
    TDes8& respMsg = MemApi::AllocBlock( length );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   550
    respMsg.SetLength(ISI_HEADER_SIZE + SIZE_COMMON_MESSAGE_COMM_ISI_VERSION_GET_RESP);
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   551
    TUint8* ptr( const_cast<TUint8*>( respMsg.Ptr() ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   552
    ASSERT_RESET_ALWAYS( ptr, ( EISINameServiceNullPointer2 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   553
    ASSERT_RESET_ALWAYS( ( respMsg.Length() >= (ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_ISI_VERSION_GET_RESP_OFFSET_FILLERBYTE3) ),
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   554
                         ( EISINameServiceWrongLength1 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   555
    const TUint8* msgPtr( aCommIsiVersionGetReq.Ptr() );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   556
    SetIsiHeaderForCommonResp( respMsg, aCommIsiVersionGetReq );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   557
    ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_ISI_VERSION_GET_RESP_OFFSET_SUBMESSAGEID ] = COMM_ISI_VERSION_GET_RESP;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   558
    ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_ISI_VERSION_GET_RESP_OFFSET_ISIVERSIONZZZ ] = NAME_SERVICE_ISI_VERSION_Z;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   559
    ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_ISI_VERSION_GET_RESP_OFFSET_ISIVERSIONYYY ] = NAME_SERVICE_ISI_VERSION_Y;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   560
    ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_ISI_VERSION_GET_RESP_OFFSET_FILLERBYTE1 ] = KFiller;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   561
    ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_ISI_VERSION_GET_RESP_OFFSET_FILLERBYTE2 ] = KFiller;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   562
    ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_ISI_VERSION_GET_RESP_OFFSET_FILLERBYTE3 ] = KFiller;    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   563
    SendToRouter( respMsg  );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   564
    MemApi::DeallocBlock( aCommIsiVersionGetReq );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   565
    C_TRACE( ( _T( "DISINameService::SendCommIsiVersionGetResp 0x%x<" ), &aCommIsiVersionGetReq ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   566
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   567
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   568
void DISINameService::LockNameServiceDMutex()
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   569
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   570
    C_TRACE( ( _T( "DISINameService::LockNameServiceDMutex 0x%x>" ), &iNameServiceMutex ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   571
    TInt err( Kern::MutexWait( *iNameServiceMutex ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   572
    ASSERT_RESET_ALWAYS( ( KErrNone == err ), ( EISINameServiceMutexWaitFailed | EDISINameServiceTraceId << KClassIdentifierShift ) );        
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   573
    C_TRACE( ( _T( "DISINameService::LockNameServiceDMutex 0x%x<" ), &iNameServiceMutex ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   574
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   575
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   576
void DISINameService::FreeNameServiceDMutex()
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   577
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   578
    C_TRACE( ( _T( "DISINameService::FreeNameServiceDMutex 0x%x>" ), &iNameServiceMutex ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   579
    Kern::MutexSignal( *iNameServiceMutex );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   580
    C_TRACE( ( _T( "DISINameService::FreeNameServiceDMutex 0x%x<" ), &iNameServiceMutex ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   581
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   582
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   583
TBool DISINameService::HandleResourceValidationCheck(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   584
        const TDesC8& aMessage
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   585
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   586
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   587
    C_TRACE( ( _T( "DISINameService::HandleResourceValidationCheck 0x%x>" ), &aMessage ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   588
    LockNameServiceDMutex();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   589
    TUint8* msgPtr = const_cast<TUint8*>( aMessage.Ptr() );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   590
    TUint16 phonetAddress( KUninitializedPhoNetAddress );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   591
    // Extended resource identifier support for NameService
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   592
    TUint32 resource = GetResourceUsedInMessage( aMessage );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   593
    iNameRecords->LookupPhonetAddress( resource, &phonetAddress );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   594
    FreeNameServiceDMutex();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   595
    TBool found( EFalse );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   596
    TUint16 phonetAddressFromMsg = ( ( GET_SENDER_DEV( msgPtr ) << KDeviceIdentifierPhoNetAddressShift ) | GET_SENDER_OBJ( msgPtr ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   597
    if( phonetAddress == phonetAddressFromMsg )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   598
        {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   599
        C_TRACE( ( _T( "DISINameService::IsValidResource phonetAddress found 0x%x" ), phonetAddress ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   600
        found = ETrue;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   601
        }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   602
    // No need for else, assert tells that somebody violates indication sending
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   603
    TRACE_ASSERT( found );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   604
    C_TRACE( ( _T( "DISINameService::HandleResourceValidationCheck 0x%x %d<" ), &aMessage, found ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   605
    return found;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   606
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   607
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   608
// Extended resource identifier support for NameService
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   609
TUint32 DISINameService::GetResourceUsedInMessage(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   610
        const TDesC8& aMessageToBeResourceRouted
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   611
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   612
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   613
    C_TRACE( ( _T( "DISINameService::GetResourceUsedInMessage 0x%x>" ), &aMessageToBeResourceRouted ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   614
    const TUint8* msgPtr( aMessageToBeResourceRouted.Ptr() );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   615
    ASSERT_RESET_ALWAYS( ( msgPtr ), 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   616
                         ( EISINameServiceNullPointer11 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   617
    TUint32 resource = msgPtr[ ISI_HEADER_OFFSET_RESOURCEID ];
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   618
#ifdef ISCE_INTERNAL_EXTENDED_RESOURCE_ROUTING_SUPPORTED
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   619
    // Extended Resource Routing
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   620
    if( PN_PREFIX == msgPtr[ ISI_HEADER_OFFSET_RESOURCEID ] )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   621
        {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   622
        C_TRACE( ( _T( "DISINameService::GetResourceUsedInMessage 0x%x extended resource 0x%x" ), &aMessageToBeResourceRouted, resource ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   623
        resource = ( resource | (TUint32)( msgPtr[ ISI_HEADER_OFFSET_TYPE ] << KEightBitShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   624
        resource = ( resource | (TUint32)( msgPtr[ ISI_HEADER_OFFSET_SUBTYPE ] << KSixteenBitShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   625
        }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   626
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   627
#endif // ISCE_INTERNAL_EXTENDED_RESOURCE_ROUTING_SUPPORTED
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   628
    // No need for else as first 8 bits are already used.
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   629
    C_TRACE( ( _T( "DISINameService::GetResourceUsedInMessage 0x%x resource 0x%x<" ), &aMessageToBeResourceRouted, resource ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   630
    return resource;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   631
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   632
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   633
TUint8 DISINameService::GetDeviceIdByResource(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   634
        const TUint32 aResourceIdentifier
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   635
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   636
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   637
    C_TRACE( ( _T( "DISINameService::GetDeviceIdByResource 0x%x>" ), aResourceIdentifier ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   638
    TUint8 deviceIdentifier = PN_DEV_OWN;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   639
#ifdef ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   640
    C_TRACE( ( _T( "DISINameService::GetDeviceIdByResource 0x%x ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE" ), aResourceIdentifier ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   641
    LockNameServiceDMutex();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   642
    TUint16 phonetAddress( KUninitializedPhoNetAddress );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   643
    TUint32 result = iNameRecords->LookupPhonetAddress( aResourceIdentifier, &phonetAddress );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   644
    FreeNameServiceDMutex();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   645
    if( result == KErrNone )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   646
        {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   647
        C_TRACE( ( _T( "DISINameService::GetDeviceIdByResource 0x%x old device 0x%x phonetAddress 0x%x" ), aResourceIdentifier, deviceIdentifier, phonetAddress ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   648
        deviceIdentifier = ( (TUint8)( phonetAddress >> KEightBitShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   649
        C_TRACE( ( _T( "DISINameService::GetDeviceIdByResource 0x%x new device 0x%x phonetAddress 0x%x" ), aResourceIdentifier, deviceIdentifier, phonetAddress ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   650
        }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   651
#endif // ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE  
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   652
    // No need for else as going to default
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   653
    C_TRACE( ( _T( "DISINameService::GetDeviceIdByResource 0x%x 0x%x<" ), aResourceIdentifier, deviceIdentifier ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   654
    return deviceIdentifier;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   655
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   656
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   657
void DISINameService::TxPnsNameAddInd(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   658
        const TDesC8& aPnsNameAddReq,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   659
        const TUint32 aName,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   660
        const TUint16 aPhoNetAddress,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   661
        const TUint8 aFlags
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   662
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   663
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   664
    C_TRACE( ( _T( "DISINameService::TxPnsNameAddInd 0x%x>" ), &aPnsNameAddReq ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   665
    LockNameServiceDMutex();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   666
    const TUint8* msgPtr( aPnsNameAddReq.Ptr() );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   667
    ASSERT_RESET_ALWAYS( msgPtr,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   668
                       ( EISINameServiceNullPointer13 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   669
    TUint32 msgLength = ( ISI_HEADER_SIZE + SIZE_PNS_NAME_ADD_IND );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   670
    TDes8& indMsg = MemApi::AllocBlock( msgLength );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   671
    indMsg.SetLength( msgLength );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   672
    ASSERT_RESET_ALWAYS( ( indMsg.Length() > ( ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_NAMEENTRYTBL + PN_NAME_SRV_ITEM_STR_OFFSET_RESERVED ) ),
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   673
                         ( EISINameServiceWrongLength8 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   674
    TUint8* indPtr = const_cast<TUint8*>( indMsg.Ptr() );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   675
    SetIsiHeaderForIndication( indMsg, aPnsNameAddReq, PNS_NAME_ADD_IND );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   676
    PUTB16( &indPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_TOTALMATCHES ], KOneMatch );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   677
    PUTB16( &indPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_MATCHESINMSG ], KOneMatch );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   678
    indPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_RESERVED1 ] = KFiller;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   679
    indPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_RESERVED2 ] = KFiller;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   680
    PUTB32( &indPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_NAMEENTRYTBL + PN_NAME_SRV_ITEM_STR_OFFSET_NAME ], aName );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   681
    PUTB16( &indPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_NAMEENTRYTBL + PN_NAME_SRV_ITEM_STR_OFFSET_DEV ], aPhoNetAddress );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   682
    indPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_NAMEENTRYTBL + PN_NAME_SRV_ITEM_STR_OFFSET_FLAGS ] = aFlags;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   683
    indPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_NAMEENTRYTBL + PN_NAME_SRV_ITEM_STR_OFFSET_RESERVED ] = KFiller;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   684
    SendToRouter( indMsg );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   685
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   686
    C_TRACE( ( _T( "DISINameService::TxPnsNameAddInd 0x%x<" ), &aPnsNameAddReq ) );
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   687
    }
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   688
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   689
void DISINameService::TxPnsNameRemoveInd(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   690
        const TDesC8& aPnsNameRemoveReq,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   691
        const TUint32 aName,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   692
        const TUint16 aPhoNetAddress,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   693
        const TUint8 aFlags
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   694
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   695
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   696
    C_TRACE( ( _T( "DISINameService::TxPnsNameRemoveInd 0x%x>" ), &aPnsNameRemoveReq ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   697
    LockNameServiceDMutex();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   698
    const TUint8* msgPtr( aPnsNameRemoveReq.Ptr() );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   699
    ASSERT_RESET_ALWAYS( msgPtr,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   700
                       ( EISINameServiceNullPointer14 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   701
    TUint32 msgLength = ( ISI_HEADER_SIZE + SIZE_PNS_NAME_REMOVE_IND );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   702
    TDes8& indMsg = MemApi::AllocBlock( msgLength );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   703
    indMsg.SetLength( msgLength );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   704
    ASSERT_RESET_ALWAYS( ( indMsg.Length() > ( ISI_HEADER_SIZE + PNS_NAME_REMOVE_IND_OFFSET_NAMEENTRYTBL + PN_NAME_SRV_ITEM_STR_OFFSET_FLAGS ) ),
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   705
                         ( EISINameServiceWrongLength8 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   706
    TUint8* indPtr = const_cast<TUint8*>( indMsg.Ptr() );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   707
    ASSERT_RESET_ALWAYS( indPtr, ( EISINameServiceNullPointer10 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   708
    SetIsiHeaderForIndication( indMsg, aPnsNameRemoveReq, PNS_NAME_REMOVE_IND );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   709
    C_TRACE( ( _T( "DISINameService::TxPnsNameRemoveInd 0x%x name 0x%x phonetAddress 0x%x flags 0x%x" ), &aPnsNameRemoveReq, aName, aPhoNetAddress, aFlags ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   710
    PUTB16( &indPtr[ ISI_HEADER_SIZE + PNS_NAME_REMOVE_IND_OFFSET_TOTALMATCHES ], KOneMatch );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   711
    PUTB16( &indPtr[ ISI_HEADER_SIZE + PNS_NAME_REMOVE_IND_OFFSET_MATCHESINMSG ], KOneMatch );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   712
    indPtr[ ISI_HEADER_SIZE + PNS_NAME_REMOVE_IND_OFFSET_RESERVED1 ] = KFiller;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   713
    indPtr[ ISI_HEADER_SIZE + PNS_NAME_REMOVE_IND_OFFSET_RESERVED2 ] = KFiller;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   714
    PUTB32( &indPtr[ ISI_HEADER_SIZE + PNS_NAME_REMOVE_IND_OFFSET_NAMEENTRYTBL + PN_NAME_SRV_ITEM_STR_OFFSET_NAME ], aName );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   715
    PUTB16( &indPtr[ ISI_HEADER_SIZE + PNS_NAME_REMOVE_IND_OFFSET_NAMEENTRYTBL + PN_NAME_SRV_ITEM_STR_OFFSET_DEV ], aPhoNetAddress );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   716
    indPtr[ ISI_HEADER_SIZE + PNS_NAME_REMOVE_IND_OFFSET_NAMEENTRYTBL + PN_NAME_SRV_ITEM_STR_OFFSET_FLAGS ] = aFlags;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   717
    SendToRouter( indMsg );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   718
    C_TRACE( ( _T( "DISINameService::TxPnsNameRemoveInd 0x%x<" ), &aPnsNameRemoveReq ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   719
    }
5
8ccc39f9d787 New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff changeset
   720
9
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   721
DISINameService* DISINameService::GetISINameServiceF(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   722
        // None
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   723
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   724
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   725
    ASSERT_RESET_ALWAYS( iThisptr,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   726
                       ( EISINameServiceNullPointer12 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   727
    return iThisptr;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   728
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   729
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   730
DNameRecords* DISINameService::GetNameRecordsF(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   731
        // None
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   732
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   733
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   734
    ASSERT_RESET_ALWAYS( iNameRecords,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   735
                       ( EISINameServiceNullPointer15 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   736
    return iNameRecords;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   737
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   738
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   739
void DISINameService::SetIsiHeaderForResp(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   740
        const TDesC8& aResponseMessage,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   741
        const TDesC8& aRequestMessage,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   742
        const TUint8 aResponseMessageIdentifier
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   743
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   744
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   745
    C_TRACE( ( _T( "DISINameService::SetIsiHeaderForResp 0x%x 0x%x 0x%x>" ), &aResponseMessage, &aRequestMessage, aResponseMessageIdentifier ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   746
    const TUint8* reqMsgPtr = aRequestMessage.Ptr();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   747
    ASSERT_RESET_ALWAYS( reqMsgPtr, ( EISINameServiceNullPointer16 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   748
    TUint8* respMsgPtr = const_cast<TUint8*>( aResponseMessage.Ptr() );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   749
    ASSERT_RESET_ALWAYS( respMsgPtr, ( EISINameServiceNullPointer17 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   750
    ASSERT_RESET_ALWAYS( ( aResponseMessage.Length() > ISI_HEADER_OFFSET_MESSAGEID ),
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   751
                         ( EISINameServiceWrongLength9 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   752
    ASSERT_RESET_ALWAYS( ( aRequestMessage.Length() > ISI_HEADER_OFFSET_TRANSID ),
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   753
                         ( EISINameServiceWrongLength10 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   754
    respMsgPtr[ ISI_HEADER_OFFSET_MEDIA ] = reqMsgPtr[ ISI_HEADER_OFFSET_MEDIA ];
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   755
    SET_RECEIVER_DEV( respMsgPtr, GET_SENDER_DEV( reqMsgPtr ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   756
    SET_SENDER_DEV( respMsgPtr, PN_DEV_OWN );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   757
    respMsgPtr[ ISI_HEADER_OFFSET_RESOURCEID ] = PN_NAMESERVICE;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   758
    SET_LENGTH( respMsgPtr, ( aResponseMessage.Length() - PN_HEADER_SIZE ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   759
    SET_RECEIVER_OBJ( respMsgPtr, GET_SENDER_OBJ( reqMsgPtr ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   760
    SET_SENDER_OBJ( respMsgPtr, PN_OBJ_ROUTER );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   761
    respMsgPtr[ ISI_HEADER_OFFSET_TRANSID ] = reqMsgPtr[ ISI_HEADER_OFFSET_TRANSID ];
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   762
    respMsgPtr[ ISI_HEADER_OFFSET_MESSAGEID ] = aResponseMessageIdentifier;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   763
    C_TRACE( ( _T( "DISINameService::SetIsiHeaderForResp 0x%x 0x%x 0x%x<" ), &aResponseMessage, &aRequestMessage, aResponseMessageIdentifier ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   764
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   765
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   766
void DISINameService::SetIsiHeaderForCommonResp(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   767
        const TDesC8& aResponseMessage,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   768
        const TDesC8& aRequestMessage
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   769
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   770
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   771
    C_TRACE( ( _T( "DISINameService::SetIsiHeaderForCommonResp 0x%x 0x%x>" ), &aResponseMessage, &aRequestMessage ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   772
    const TUint8* reqMsgPtr = aRequestMessage.Ptr();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   773
    ASSERT_RESET_ALWAYS( reqMsgPtr, ( EISINameServiceNullPointer18 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   774
    TUint8* respMsgPtr = const_cast<TUint8*>( aResponseMessage.Ptr() );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   775
    ASSERT_RESET_ALWAYS( respMsgPtr, ( EISINameServiceNullPointer19 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   776
    ASSERT_RESET_ALWAYS( ( aResponseMessage.Length() > ISI_HEADER_OFFSET_MESSAGEID ),
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   777
                         ( EISINameServiceWrongLength11 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   778
    ASSERT_RESET_ALWAYS( ( aRequestMessage.Length() > ISI_HEADER_OFFSET_TRANSID ),
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   779
                         ( EISINameServiceWrongLength12 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   780
    respMsgPtr[ ISI_HEADER_OFFSET_MEDIA ] = ( reqMsgPtr[ ISI_HEADER_OFFSET_MEDIA ] );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   781
    SET_RECEIVER_DEV( respMsgPtr, GET_SENDER_DEV( reqMsgPtr ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   782
    SET_SENDER_DEV( respMsgPtr, PN_DEV_OWN );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   783
    respMsgPtr[ ISI_HEADER_OFFSET_RESOURCEID ] = ( reqMsgPtr[ ISI_HEADER_OFFSET_RESOURCEID ] );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   784
    SET_LENGTH( respMsgPtr, ( aResponseMessage.Length() - PN_HEADER_SIZE ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   785
    SET_RECEIVER_OBJ( respMsgPtr, GET_SENDER_OBJ( reqMsgPtr ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   786
    SET_SENDER_OBJ( respMsgPtr, GET_RECEIVER_OBJ( reqMsgPtr ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   787
    respMsgPtr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP_OFFSET_TRANSACTIONID ] = ( reqMsgPtr[ ISI_HEADER_OFFSET_TRANSID ] );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   788
    respMsgPtr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP_OFFSET_MESSAGEID ] = COMMON_MESSAGE;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   789
    C_TRACE( ( _T( "DISINameService::SetIsiHeaderForCommonResp 0x%x 0x%x<" ), &aResponseMessage, &aRequestMessage ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   790
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   791
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   792
void DISINameService::SetIsiHeaderForIndication(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   793
        const TDesC8& aIndicationToModify,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   794
        const TDesC8& aPnsNameRequest,
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   795
        const TUint8 aIndicationMessageIdentifier
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   796
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   797
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   798
    C_TRACE( ( _T( "DISINameService::aIndicationToModify 0x%x 0x%x 0x%x>" ), &aIndicationToModify, &aPnsNameRequest, aIndicationMessageIdentifier ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   799
    const TUint8* reqMsgPtr = aPnsNameRequest.Ptr();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   800
    ASSERT_RESET_ALWAYS( reqMsgPtr, ( EISINameServiceNullPointer18 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   801
    TUint8* indMsgPtr = const_cast<TUint8*>( aIndicationToModify.Ptr() );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   802
    ASSERT_RESET_ALWAYS( indMsgPtr, ( EISINameServiceNullPointer19 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   803
    ASSERT_RESET_ALWAYS( ( aIndicationToModify.Length() > ISI_HEADER_OFFSET_MESSAGEID ),
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   804
                         ( EISINameServiceWrongLength11 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   805
    ASSERT_RESET_ALWAYS( ( aPnsNameRequest.Length() > ISI_HEADER_OFFSET_TRANSID ),
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   806
                         ( EISINameServiceWrongLength12 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   807
    indMsgPtr[ ISI_HEADER_OFFSET_MEDIA ] = PN_MEDIA_ROUTING_REQ;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   808
    SET_RECEIVER_DEV( indMsgPtr, GET_SENDER_DEV( reqMsgPtr ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   809
    SET_SENDER_DEV( indMsgPtr, PN_DEV_OWN );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   810
    indMsgPtr[ ISI_HEADER_OFFSET_RESOURCEID ] = PN_NAMESERVICE;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   811
    SET_LENGTH( indMsgPtr, ( aIndicationToModify.Length() - PN_HEADER_SIZE ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   812
    SET_RECEIVER_OBJ( indMsgPtr, PN_OBJ_EVENT_MULTICAST );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   813
    SET_SENDER_OBJ( indMsgPtr, PN_OBJ_ROUTER );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   814
    indMsgPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_UTID ] = 0x00;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   815
    indMsgPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_SUBFUNCTION ]= aIndicationMessageIdentifier;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   816
    C_TRACE( ( _T( "DISINameService::aIndicationToModify 0x%x 0x%x 0x%x<" ), &aIndicationToModify, &aPnsNameRequest, aIndicationMessageIdentifier ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   817
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   818
DISINameServiceExtended::DISINameServiceExtended(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   819
        DISINameService* aNameService
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   820
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   821
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   822
    C_TRACE( ( _T( "DISINameServiceExtended::DISINameServiceExtended 0x%x>" ), iISINameService ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   823
    iISINameService = aNameService;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   824
    ASSERT_RESET_ALWAYS( iISINameService, ( EISINameServiceExtendedNullPointer | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   825
    AddModemResources();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   826
    //AddPnDevDspMainResources();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   827
    // iShNameAddIndSubscriptionState = ENotSubscribed;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   828
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   829
    //
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   830
    // flag: ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   831
    // 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   832
    //
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   833
    // - Extended Resource routing supported by Symbian SW Name Service (Design Change)
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   834
    // - PN_COMMGR by default routed to RAPU, by device id 0x6c routed to Symbian SW PN_COMMGR (Design Change)
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   835
    //     - Internally in ISCE PN_COMMGR name is handled : [0] PN_COMMGR, [1] deviceidentifier, [2] don't care, [3] don't care only visible in NameRecords table
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   836
    // - PN_NAMESERVICE by default routed to RAPU by device id 0x6c routed to Symbian SW PN_NAMESERVICE
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   837
    // - Symbian SW wider name service subscribes PNS_NAME_ADD_INDs from RAPU through Symbian SW PN_APE_COMMGR (REQ, RESP)
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   838
    // - Symbian SW Name Service contains: Symbian SW Resources added with PNS_NAME_ADD_REQ dev id PN_DEV_OWN (Phonet address 0x6c[own for all], TD MODEM Resources (Phonet address 0x6000), PN_DSP_MAIN, Symbian SW Resource stored in RAPU Name Service (dynamically added after PNS_NAME_ADD_IND received PhoNet address as got from indication), other messages are routed to RAPU (Design Change)
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   839
    // - Communication Manager calls ::GetDeviceIdentifierByResouce to get appropriate device identifier to indication subscription
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   840
    //
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   841
    // worry later the usage of shared resource such as PN_COMMGR, PN_NAME_SERVICE etc.. others that shall pop up due to missing ISA system design, use rxdev from message vs. nametable entry to differentiate them
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   842
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   843
    C_TRACE( ( _T( "DISINameServiceExtended::DISINameServiceExtended 0x%x<" ), iISINameService ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   844
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   845
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   846
DISINameServiceExtended::~DISINameServiceExtended(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   847
        // None
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   848
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   849
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   850
    C_TRACE( ( _T( "DISINameServiceExtended::~DISINameServiceExtended<>" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   851
    }
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   852
void DISINameServiceExtended::AddModemResources(
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   853
        // None
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   854
        )
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   855
    {
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   856
    C_TRACE( ( _T( "DISINameServiceExtended::AddModemResources>" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   857
    TUint8 err( PN_NAME_OK );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   858
    TUint8 flags = PN_NAME_NOCHG;
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   859
    TUint16 phonetAddressModemRoutingReq = ( ( PN_DEV_MODEM << KDeviceIdentifierPhoNetAddressShift ) | PN_OBJ_ROUTING_REQ );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   860
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   861
    DNameRecords* nameRecords = iISINameService->GetNameRecordsF();
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   862
	
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   863
    err = nameRecords->AddName( PN_SMS, phonetAddressModemRoutingReq, flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   864
    ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed1 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   865
        
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   866
    err = nameRecords->AddName( PN_SS, phonetAddressModemRoutingReq, flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   867
    ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed2 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   868
        
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   869
    err = nameRecords->AddName( PN_CSD, phonetAddressModemRoutingReq, flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   870
    ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed3 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   871
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   872
    err = nameRecords->AddName( PN_GPDS, phonetAddressModemRoutingReq, flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   873
    ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed4 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   874
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   875
    err = nameRecords->AddName( PN_GSS, phonetAddressModemRoutingReq, flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   876
    ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed5 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   877
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   878
    err = nameRecords->AddName( PN_UICC, phonetAddressModemRoutingReq, flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   879
    ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed6 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   880
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   881
    err = nameRecords->AddName( PN_AT_MODEM, phonetAddressModemRoutingReq, flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   882
    ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed7 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   883
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   884
    err = nameRecords->AddName( PN_MODEM_LCS, phonetAddressModemRoutingReq, flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   885
    ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed8 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   886
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   887
    err = nameRecords->AddName( PN_MODEM_TEST, phonetAddressModemRoutingReq, flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   888
    ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed9 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   889
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   890
    err = nameRecords->AddName( PN_MODEM_NVD, phonetAddressModemRoutingReq, flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   891
    ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed10 | EDISINameServiceTraceId << KClassIdentifierShift ) ); 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   892
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   893
    err = nameRecords->AddName( PN_MODEM_MCE, phonetAddressModemRoutingReq, flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   894
    ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed11 | EDISINameServiceTraceId << KClassIdentifierShift ) ); 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   895
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   896
    err = nameRecords->AddName( PN_MODEM_INFO, phonetAddressModemRoutingReq, flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   897
    ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed12 | EDISINameServiceTraceId << KClassIdentifierShift ) ); 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   898
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   899
    err = nameRecords->AddName( PN_MODEM_NETWORK, phonetAddressModemRoutingReq, flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   900
    ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed13 | EDISINameServiceTraceId << KClassIdentifierShift ) ); 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   901
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   902
    err = nameRecords->AddName( PN_MODEM_CALL, phonetAddressModemRoutingReq, flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   903
    ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed14 | EDISINameServiceTraceId << KClassIdentifierShift ) ); 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   904
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   905
    err = nameRecords->AddName( PN_WCDMA_RF_TEST, phonetAddressModemRoutingReq, flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   906
    ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed15 | EDISINameServiceTraceId << KClassIdentifierShift ) ); // EISINameServiceNameCreateFailed15...  
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   907
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   908
    err = nameRecords->AddName( PN_GSM_RF_TEST, phonetAddressModemRoutingReq, flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   909
    ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed16 | EDISINameServiceTraceId << KClassIdentifierShift ) ); 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   910
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   911
    err = nameRecords->AddName( PN_RF_HAL, phonetAddressModemRoutingReq, flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   912
    ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed17 | EDISINameServiceTraceId << KClassIdentifierShift ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   913
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   914
    err = nameRecords->AddName( PN_COMMON_RF_TEST, phonetAddressModemRoutingReq, flags );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   915
    ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed18 | EDISINameServiceTraceId << KClassIdentifierShift ) ); 
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   916
    
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   917
    C_TRACE( ( _T( "DISINameServiceExtended::AddModemResources<" ) ) );
8486d82aef45 modemadaptation release 2010wk40
mikaruus
parents: 8
diff changeset
   918
    }