author | mikaruus |
Tue, 19 Oct 2010 13:16:20 +0300 | |
changeset 9 | 8486d82aef45 |
parent 8 | 6295dc2169f3 |
permissions | -rw-r--r-- |
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 | 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 | 28 |
#include "namerecords.h" // For DNameRecords |
29 |
#include "routerisi.h" // For PN_ROUTER |
|
30 |
#include <commisi.h> // For SIZE_COMMON_MESSAGE_COMM_ISA_ENTITY_NOT_REACHABLE_RESP |
|
31 |
||
32 |
#ifdef ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE |
|
33 |
#include "ape_commgrisi.h" // For APE_COMMGR |
|
34 |
#define ISCE_INTERNAL_EXTENDED_RESOURCE_ROUTING_SUPPORTED |
|
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 | 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 | 43 |
EISINameServiceNullPointer1, |
44 |
EISINameServiceNullPointer2, |
|
45 |
EISINameServiceNullPointer6, |
|
46 |
EISINameServiceNullPointer7, |
|
47 |
EISINameServiceNullPointer8, |
|
48 |
EISINameServiceNullPointer9, |
|
49 |
EISINameServiceNullPointer10, |
|
50 |
EISINameServiceNullPointer11, |
|
51 |
EISINameServiceNullPointer12, |
|
52 |
EISINameServiceNullPointer13, |
|
53 |
EISINameServiceNullPointer14, |
|
54 |
EISINameServiceNullPointer15, |
|
55 |
EISINameServiceNullPointer16, |
|
56 |
EISINameServiceNullPointer17, |
|
57 |
EISINameServiceNullPointer18, |
|
58 |
EISINameServiceNullPointer19, |
|
59 |
EISINameServiceWrongLength, |
|
60 |
EISINameServiceWrongLength1, |
|
61 |
EISINameServiceWrongLength6, |
|
62 |
EISINameServiceWrongLength7, |
|
63 |
EISINameServiceWrongLength8, |
|
64 |
EISINameServiceWrongLength9, |
|
65 |
EISINameServiceWrongLength10, |
|
66 |
EISINameServiceWrongLength11, |
|
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 | 71 |
EISINameServiceSendFailed, |
72 |
EISINameServiceFatalError, |
|
73 |
#ifdef ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE |
|
74 |
EISINameServiceWrongLength2, |
|
75 |
EISINameServiceWrongLength3, |
|
76 |
EISINameServiceNullPointer3, |
|
77 |
EISINameServiceNullPointer4, |
|
78 |
EISINameServiceNullPointer5, |
|
79 |
EISINameServiceNameCreateFailed, |
|
80 |
EISINameServiceNameCreateFailed1, |
|
81 |
EISINameServiceNameCreateFailed2, |
|
82 |
EISINameServiceNameCreateFailed3, |
|
83 |
EISINameServiceNameCreateFailed4, |
|
84 |
EISINameServiceNameCreateFailed5, |
|
85 |
EISINameServiceNameCreateFailed6, |
|
86 |
EISINameServiceNameCreateFailed7, |
|
87 |
EISINameServiceNameCreateFailed8, |
|
88 |
EISINameServiceNameCreateFailed9, |
|
89 |
EISINameServiceNameCreateFailed10, |
|
90 |
EISINameServiceNameCreateFailed11, |
|
91 |
EISINameServiceNameCreateFailed12, |
|
92 |
EISINameServiceNameCreateFailed13, |
|
93 |
EISINameServiceNameCreateFailed14, |
|
94 |
EISINameServiceNameCreateFailed15, |
|
95 |
EISINameServiceNameCreateFailed16, |
|
96 |
EISINameServiceNameCreateFailed17, |
|
97 |
EISINameServiceNameCreateFailed18, |
|
98 |
EISINameServiceWrongResponse, |
|
99 |
EISINameServiceNameExtendedCreateFailed, |
|
100 |
EISINameServiceExtendedNullPointer, |
|
101 |
EISINameServiceNameNotCommgrResource, |
|
102 |
EISINameServiceNameNotCommgrDevice, |
|
103 |
EISINameServiceLookUpForPhoNetAddressAndFlagsFailed, |
|
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 | 109 |
const TUint8 KAlwaysAssert( 0x00 ); |
110 |
||
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 | 116 |
const TUint8 KEightBitShift( 8 ); |
117 |
const TUint8 KSixteenBitShift( 16 ); |
|
118 |
const TUint8 KDeviceIdentifierPhoNetAddressShift( KEightBitShift ); |
|
119 |
const TUint16 KUninitializedPhoNetAddress( 0x0000 ); |
|
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 | 129 |
ASSERT_RESET_ALWAYS( ( iNameRecords ), |
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 | 132 |
ASSERT_RESET_ALWAYS( ( KErrNone == err ), |
133 |
( EISINameServiceMutexCreateFailed | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
134 |
iRouter = MISIObjectRouterIf::GetIf(); |
|
135 |
ASSERT_RESET_ALWAYS( ( iRouter ), |
|
136 |
( EISINameServiceNullPointer | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
137 |
iRouter->Connect( KNameServiceUID, iObjId, this ); |
|
138 |
C_TRACE( ( _T( "DISINameService::DISINameService 0x%x" ), iObjId ) ); |
|
139 |
ASSERT_RESET_ALWAYS( ( iObjId == PN_OBJ_ROUTING_REQ ), |
|
140 |
( EISINameServiceFatalError | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
141 |
// Starting from here we add the PN_ROUTER object 'statically' to Name Service |
|
142 |
TUint32 name = PN_ROUTER; |
|
143 |
TUint16 phonetAddr = ( ( PN_DEV_OWN << KDeviceIdentifierPhoNetAddressShift ) | KRouterObjId ); |
|
144 |
TUint8 flags = PN_NAME_NOCHG; |
|
145 |
err = iNameRecords->AddName( name, phonetAddr, flags ); |
|
146 |
#ifdef ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE |
|
147 |
iISINameServiceExtended = new DISINameServiceExtended( this ); |
|
148 |
ASSERT_RESET_ALWAYS( ( iISINameServiceExtended ), ( EISINameServiceNameExtendedCreateFailed | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
149 |
#endif // ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE |
|
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 | 164 |
#ifdef ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE |
165 |
if( iISINameServiceExtended ) |
|
166 |
{ |
|
167 |
delete iISINameServiceExtended; |
|
168 |
iISINameServiceExtended = NULL; |
|
169 |
} |
|
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 | 174 |
void DISINameService::Receive( |
175 |
const TDesC8& aMessage |
|
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 | 179 |
// This to be signaled (and only) when send back. |
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 | 182 |
TUint32 resource = GetResourceUsedInMessage( aMessage ); |
183 |
if( resource == PN_NAMESERVICE |
|
184 |
) |
|
185 |
{ |
|
186 |
C_TRACE( ( _T( "DISINameService::Receive to PN_NAMESERVICE" ) ) ); |
|
187 |
HandlePnsNameMessage( aMessage ); |
|
188 |
} |
|
5
8ccc39f9d787
New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff
changeset
|
189 |
|
9 | 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 | 193 |
C_TRACE( ( _T( "DISINameService::Receive to Resource : 0x%x" ),resource ) ); |
194 |
TUint16 phoNetAddress( KUninitializedPhoNetAddress ); |
|
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 | 198 |
// Change phonet addr to current message from table entries. |
199 |
msgPtr[ ISI_HEADER_OFFSET_RECEIVERDEVICE ] = (TUint8) ( phoNetAddress >> KEightBitShift ); |
|
200 |
msgPtr[ ISI_HEADER_OFFSET_RECEIVEROBJECT ] = (TUint8) ( phoNetAddress ); |
|
201 |
TDes8* messagePtr = reinterpret_cast<TDes8*>( const_cast<TDesC8*>( &aMessage ) ); |
|
202 |
C_TRACE( ( _T( "DISINameService message to recDev: 0x%x recObj: 0x%x" ), msgPtr[ ISI_HEADER_OFFSET_RECEIVERDEVICE ], msgPtr[ ISI_HEADER_OFFSET_RECEIVEROBJECT ] ) ); |
|
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 | 207 |
C_TRACE( ( _T( "DISINameService::Receive no Resource found : 0x%x" ), resource ) ); |
208 |
||
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 | 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 | 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 | 216 |
|
217 |
void DISINameService::HandleNameQueryReq( |
|
218 |
const TDesC8& aPnsNameQueryReq |
|
219 |
) |
|
5
8ccc39f9d787
New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff
changeset
|
220 |
{ |
9 | 221 |
C_TRACE( ( _T( "DISINameService::HandleNameQueryReq 0x%x>" ) ,&aPnsNameQueryReq ) ); |
222 |
const TUint8* msgPtr = aPnsNameQueryReq.Ptr(); |
|
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 | 226 |
RArray <TNameTableEntry*> nameTable; |
227 |
iNameRecords->NameQuery( name, mask, &nameTable ); |
|
228 |
TUint32 count( nameTable.Count() ); |
|
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 | 234 |
ASSERT_RESET_ALWAYS( respPtr, ( EISINameServiceNullPointer7 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
235 |
SetIsiHeaderForResp( respMsg, aPnsNameQueryReq, PNS_NAME_QUERY_RESP ); |
|
236 |
PUTB16( &respPtr[ ISI_HEADER_SIZE + PNS_NAME_QUERY_RESP_OFFSET_TOTALMATCHES ], count ); |
|
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 | 240 |
TUint16 index( ISI_HEADER_SIZE + PNS_NAME_QUERY_RESP_OFFSET_NAMEENTRYTBL ); |
241 |
C_TRACE( ( _T( "DISINameService::HandleNameQueryReq 0x%x entry count %d" ) ,&aPnsNameQueryReq, count ) ); |
|
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 | 244 |
ASSERT_RESET_ALWAYS( ( respMsg.Length() > index + PN_NAME_SRV_ITEM_STR_OFFSET_RESERVED ), |
245 |
( EISINameServiceWrongLength7 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
246 |
TNameTableEntry* tmp = ( nameTable )[ i ]; |
|
247 |
if ( ( (TUint8)( tmp->iPhonetAddress ) == PN_OBJ_ROUTING_REQ ) && |
|
248 |
( tmp->iName == name ) ) |
|
249 |
{ |
|
250 |
TRACE_ASSERT_ALWAYS( KAlwaysAssert ); |
|
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] ); |
|
252 |
} |
|
253 |
PUTB32( &respPtr[ index + PN_NAME_SRV_ITEM_STR_OFFSET_NAME ], tmp->iName ); |
|
254 |
respPtr[ index + PN_NAME_SRV_ITEM_STR_OFFSET_DEV ] = (TUint8)( tmp->iPhonetAddress >> KEightBitShift ); |
|
255 |
respPtr[ index + PN_NAME_SRV_ITEM_STR_OFFSET_OBJ ] = (TUint8)( tmp->iPhonetAddress ); |
|
256 |
respPtr[ index + PN_NAME_SRV_ITEM_STR_OFFSET_FLAGS ] = tmp->iFlags; |
|
257 |
respPtr[ index + PN_NAME_SRV_ITEM_STR_OFFSET_RESERVED ] = KFiller; |
|
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 | 260 |
SendToRouter( respMsg ); |
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 | 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 | 266 |
void DISINameService::HandleNameRemoveReq( |
267 |
const TDesC8& aPnsNameRemoveReq |
|
268 |
) |
|
5
8ccc39f9d787
New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff
changeset
|
269 |
{ |
9 | 270 |
C_TRACE( ( _T( "DISINameService::HandleNameRemoveReq 0x%x>" ), &aPnsNameRemoveReq ) ); |
271 |
const TUint8* msgPtr = aPnsNameRemoveReq.Ptr(); |
|
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 | 274 |
TUint16 phonetAddress( KUninitializedPhoNetAddress ); |
275 |
TUint8 flags( 0x00 ); |
|
276 |
// Need to get these values in here to guarantee that they are the same in IND if needed. |
|
277 |
TInt error = iNameRecords->LookupNamePhonetAddressAndFlags( name, &phonetAddress, &flags ); |
|
278 |
TRACE_ASSERT_ALWAYS( ( KErrNone == error ) ); |
|
279 |
const TUint8 err = iNameRecords->RemoveName( name ); |
|
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 | 285 |
ASSERT_RESET_ALWAYS( respPtr, ( EISINameServiceNullPointer9 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
286 |
ASSERT_RESET_ALWAYS( ( respMsg.Length() > ISI_HEADER_SIZE + PNS_NAME_REMOVE_RESP_OFFSET_REASON ), |
|
287 |
( EISINameServiceWrongLength6 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
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 | 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 | 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 | 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 | 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 | 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 | 304 |
SendToRouter( respMsg ); |
5
8ccc39f9d787
New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff
changeset
|
305 |
} |
9 | 306 |
TDes8* block = reinterpret_cast<TDes8*>( const_cast<TDesC8*>(&aPnsNameRemoveReq) ); |
307 |
MemApi::DeallocBlock( *block ); |
|
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 | 311 |
void DISINameService::SendToRouter( |
312 |
TDes8& aMessage |
|
313 |
) |
|
5
8ccc39f9d787
New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff
changeset
|
314 |
{ |
9 | 315 |
C_TRACE( ( _T( "DISINameService::SendToRouter 0x%x>" ), &aMessage ) ); |
316 |
FreeNameServiceDMutex(); |
|
317 |
TInt value = iRouter->Send( aMessage, iObjId ); |
|
318 |
ASSERT_RESET_ALWAYS( value == KErrNone, ( EISINameServiceSendFailed | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
319 |
C_TRACE( ( _T( "DISINameService::SendToRouter 0x%x<" ), &aMessage ) ); |
|
320 |
} |
|
321 |
||
322 |
void DISINameService::HandlePnsNameMessage( const TDesC8& aMessage ) |
|
323 |
{ |
|
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 | 330 |
C_TRACE( ( _T( "DISINameService::HandlePnsNameMessage PNS_NAME_QUERY_REQ" ) ) ); |
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 | 336 |
C_TRACE( ( _T( "DISINameService::HandlePnsNameMessage PNS_NAME_ADD_REQ" ) ) ); |
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 | 342 |
C_TRACE( ( _T( "DISINameService::HandlePnsNameMessage PNS_NAME_REMOVE_REQ" ) ) ); |
343 |
HandleNameRemoveReq( aMessage ); |
|
344 |
break; |
|
345 |
} |
|
346 |
case COMMON_MESSAGE: |
|
347 |
{ |
|
348 |
C_TRACE( ( _T( "DISINameService::HandlePnsNameMessage COMMON_MESSAGE" ) ) ); |
|
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 | 354 |
TRACE_ASSERT_ALWAYS( KAlwaysAssert ); |
355 |
TDes8& commonMessage = reinterpret_cast<TDes8&>( const_cast<TDesC8&>( aMessage ) ); |
|
356 |
SendCommServiceNotIdentifiedResp( commonMessage ); |
|
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 | 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 | 362 |
|
363 |
void DISINameService::HandleNameAddReq( |
|
364 |
const TDesC8& aPnsNameAddReq |
|
365 |
) |
|
366 |
{ |
|
367 |
C_TRACE( ( _T( "DISINameService::HandleNameAddReq 0x%x>" ), &aPnsNameAddReq ) ); |
|
368 |
TInt err( KErrArgument ); |
|
369 |
TUint16 respMsgLength( ISI_HEADER_SIZE + SIZE_PNS_NAME_ADD_RESP ); |
|
370 |
TDes8& respMsg = MemApi::AllocBlock( respMsgLength ); |
|
371 |
respMsg.SetLength( respMsgLength ); |
|
372 |
TUint8* respPtr = const_cast<TUint8*>( respMsg.Ptr() ); |
|
373 |
const TUint8* msgPtr = const_cast<TUint8*>( aPnsNameAddReq.Ptr() ); |
|
374 |
SetIsiHeaderForResp( respMsg, aPnsNameAddReq, PNS_NAME_ADD_RESP ); |
|
375 |
if( msgPtr[ ISI_HEADER_OFFSET_SENDERDEVICE ] == PN_DEV_OWN ) |
|
376 |
{ |
|
377 |
C_TRACE( ( _T( "DISINameService::HandleNameAddReq PNS_NAME_ADD_REQ from this device" ) ) ); |
|
378 |
TUint32 name = GETB32( &msgPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_REQ_OFFSET_NAMEENTRY ] ); |
|
379 |
TUint16 phonetAddr = GETB16( &msgPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_REQ_OFFSET_NAMEENTRY + PN_NAME_SRV_ITEM_STR_OFFSET_DEV ] ); |
|
380 |
TUint8 flags = msgPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_REQ_OFFSET_NAMEENTRY + PN_NAME_SRV_ITEM_STR_OFFSET_FLAGS ]; |
|
381 |
err = iNameRecords->AddName( name, phonetAddr, flags ); |
|
382 |
respPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_RESP_OFFSET_REASON ] = err; |
|
383 |
SendToRouter( respMsg ); |
|
384 |
if( err == PN_NAME_OK ) |
|
385 |
{ |
|
386 |
TxPnsNameAddInd( aPnsNameAddReq, name, phonetAddr, flags ); |
|
387 |
} |
|
388 |
// No need for else as state is not changed and indication is not needed to send. |
|
389 |
} |
|
390 |
else |
|
391 |
{ |
|
392 |
C_TRACE( ( _T( "DISINameService::HandleNameAddReq PNS_NAME_ADD_REQ from other device" ) ) ); |
|
393 |
respPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_RESP_OFFSET_REASON ] = PN_NAME_NOT_ALLOWED; |
|
394 |
SendToRouter( respMsg ); |
|
395 |
} |
|
396 |
TDes8* block = reinterpret_cast<TDes8*>( const_cast<TDesC8*>(&aPnsNameAddReq) ); |
|
397 |
MemApi::DeallocBlock( *block ); |
|
398 |
C_TRACE( ( _T( "DISINameService::HandleNameAddReq 0x%x<" ), &aPnsNameAddReq ) ); |
|
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 | 405 |
C_TRACE( ( _T( "MISICommunicationManagerIf::IsValidResource 0x%x>" ), &aMessage ) ); |
406 |
DISINameService* self = DISINameService::GetISINameServiceF(); |
|
407 |
TBool found = self->HandleResourceValidationCheck( aMessage ); |
|
408 |
C_TRACE( ( _T( "MISICommunicationManagerIf::IsValidResource 0x%x %d<" ), &aMessage, found ) ); |
|
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 | 412 |
EXPORT_C TUint8 MISICommunicationManagerIf::GetDeviceIdentifierByResource( |
413 |
const TUint32 aResourceIdentifier |
|
414 |
) |
|
415 |
{ |
|
416 |
C_TRACE( ( _T( "MISICommunicationManagerIf::GetDeviceIdentifierByResource 0x%x>" ), aResourceIdentifier ) ); |
|
417 |
DISINameService* self = DISINameService::GetISINameServiceF(); |
|
418 |
TUint8 deviceIdentifier = self->GetDeviceIdByResource( aResourceIdentifier ); |
|
419 |
C_TRACE( ( _T( "MISICommunicationManagerIf::GetDeviceIdentifierByResource 0x%x 0x%x<" ), aResourceIdentifier, deviceIdentifier ) ); |
|
420 |
return deviceIdentifier; |
|
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 | 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 | 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 | 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 | 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 | 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 | 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 | 475 |
C_TRACE( ( _T( "DISINameService::SendCommIsaEntityNotReachableResp 0x%x<" ), &aMsg ) ); |
476 |
} |
|
477 |
||
478 |
void DISINameService::HandleCommonMessage( |
|
479 |
const TDesC8& aCommonMessage |
|
480 |
) |
|
481 |
{ |
|
482 |
||
483 |
C_TRACE( ( _T( "DISINameService::HandleCommonMessage 0x%x>" ), &aCommonMessage ) ); |
|
484 |
TDes8& commonMessage = reinterpret_cast<TDes8&>( const_cast<TDesC8&>(aCommonMessage) ); |
|
485 |
const TUint8 subMessageIdentifier = commonMessage.Ptr()[ ISI_HEADER_OFFSET_SUBMESSAGEID ]; |
|
486 |
switch( subMessageIdentifier ) |
|
487 |
{ |
|
488 |
case COMM_ISA_ENTITY_NOT_REACHABLE_RESP: |
|
489 |
{ |
|
490 |
const TUint8 notDeliveredMessageIndex = ( ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_ISA_ENTITY_NOT_REACHABLE_RESP_OFFSET_NOTDELIVEREDMESSAGEID ); |
|
491 |
const TUint8 notDeliveredMessageIdentifier = commonMessage.Ptr()[ notDeliveredMessageIndex ]; |
|
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. |
|
493 |
C_TRACE( ( _T( "DISINameService::HandleCommonMessage COMM_ISA_ENTITY_NOT_REACHABLE_RESP not delivered message 0x%x" ), notDeliveredMessageIdentifier ) ); |
|
494 |
TRACE_ASSERT_ALWAYS( KAlwaysAssert ); |
|
495 |
// Dellocate here, because this is not sending a reply at all to avoid never ending loop. |
|
496 |
MemApi::DeallocBlock( commonMessage ); |
|
497 |
// Signal here because it does not send a reply. |
|
498 |
FreeNameServiceDMutex(); |
|
499 |
break; |
|
500 |
} |
|
501 |
case COMM_ISI_VERSION_GET_REQ: |
|
502 |
{ |
|
503 |
C_TRACE( ( _T( "DISINameService::HandleCommonMessage version get req" ) ) ); |
|
504 |
SendCommIsiVersionGetResp( commonMessage ); |
|
505 |
break; |
|
506 |
} |
|
507 |
default: |
|
508 |
{ |
|
509 |
C_TRACE( ( _T( "DISINameService::HandleCommonMessage unknown common message" ) ) ); |
|
510 |
TRACE_ASSERT_ALWAYS( KAlwaysAssert ); |
|
511 |
SendCommServiceNotIdentifiedResp( commonMessage ); |
|
512 |
break; |
|
513 |
} |
|
514 |
} |
|
515 |
C_TRACE( ( _T( "DISINameService::HandleCommonMessage 0x%x<" ), &aCommonMessage ) ); |
|
516 |
} |
|
517 |
||
518 |
void DISINameService::SendCommServiceNotIdentifiedResp( |
|
519 |
TDes8& aCommServiceNotIdentifiedReq |
|
520 |
) |
|
521 |
{ |
|
522 |
C_TRACE( ( _T( "DISINameService::SendCommServiceNotIdentifiedResp 0x%x>" ), &aCommServiceNotIdentifiedReq ) ); |
|
523 |
TUint8 length( ISI_HEADER_SIZE + SIZE_COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP ); |
|
524 |
TDes8& respMsg = MemApi::AllocBlock( length ); |
|
525 |
respMsg.SetLength(ISI_HEADER_SIZE + SIZE_COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP ); |
|
526 |
TUint8* ptr( const_cast<TUint8*>( respMsg.Ptr() ) ); |
|
527 |
ASSERT_RESET_ALWAYS( ptr, ( EISINameServiceNullPointer1 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
528 |
ASSERT_RESET_ALWAYS( ( respMsg.Length() >= (ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP_OFFSET_FILLERBYTE2) ), |
|
529 |
( EISINameServiceWrongLength | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
530 |
const TUint8* msgPtr( aCommServiceNotIdentifiedReq.Ptr() ); |
|
531 |
SetIsiHeaderForCommonResp( respMsg, aCommServiceNotIdentifiedReq ); |
|
532 |
ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP_OFFSET_SUBMESSAGEID ] = COMM_SERVICE_NOT_IDENTIFIED_RESP; |
|
533 |
ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP_OFFSET_NOTSERVEDMESSAGEID ] = msgPtr[ ISI_HEADER_OFFSET_MESSAGEID ]; |
|
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; |
|
535 |
ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP_OFFSET_NOTSERVEDSUBMESSAGEID ] = msgPtr[ ISI_HEADER_OFFSET_SUBMESSAGEID ]; |
|
536 |
ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP_OFFSET_FILLERBYTE1 ] = KFiller; |
|
537 |
ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP_OFFSET_FILLERBYTE2 ] = KFiller; |
|
538 |
SendToRouter( respMsg ); |
|
539 |
MemApi::DeallocBlock( aCommServiceNotIdentifiedReq ); |
|
540 |
C_TRACE( ( _T( "DISINameService::SendCommServiceNotIdentifiedResp 0x%x<" ), &aCommServiceNotIdentifiedReq ) ); |
|
541 |
} |
|
542 |
||
543 |
void DISINameService::SendCommIsiVersionGetResp( |
|
544 |
TDes8& aCommIsiVersionGetReq |
|
545 |
) |
|
546 |
{ |
|
547 |
C_TRACE( ( _T( "DISINameService::SendCommIsiVersionGetResp 0x%x>" ), &aCommIsiVersionGetReq ) ); |
|
548 |
TUint8 length( ISI_HEADER_SIZE + SIZE_COMMON_MESSAGE_COMM_ISI_VERSION_GET_RESP ); |
|
549 |
TDes8& respMsg = MemApi::AllocBlock( length ); |
|
550 |
respMsg.SetLength(ISI_HEADER_SIZE + SIZE_COMMON_MESSAGE_COMM_ISI_VERSION_GET_RESP); |
|
551 |
TUint8* ptr( const_cast<TUint8*>( respMsg.Ptr() ) ); |
|
552 |
ASSERT_RESET_ALWAYS( ptr, ( EISINameServiceNullPointer2 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
553 |
ASSERT_RESET_ALWAYS( ( respMsg.Length() >= (ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_ISI_VERSION_GET_RESP_OFFSET_FILLERBYTE3) ), |
|
554 |
( EISINameServiceWrongLength1 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
555 |
const TUint8* msgPtr( aCommIsiVersionGetReq.Ptr() ); |
|
556 |
SetIsiHeaderForCommonResp( respMsg, aCommIsiVersionGetReq ); |
|
557 |
ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_ISI_VERSION_GET_RESP_OFFSET_SUBMESSAGEID ] = COMM_ISI_VERSION_GET_RESP; |
|
558 |
ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_ISI_VERSION_GET_RESP_OFFSET_ISIVERSIONZZZ ] = NAME_SERVICE_ISI_VERSION_Z; |
|
559 |
ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_ISI_VERSION_GET_RESP_OFFSET_ISIVERSIONYYY ] = NAME_SERVICE_ISI_VERSION_Y; |
|
560 |
ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_ISI_VERSION_GET_RESP_OFFSET_FILLERBYTE1 ] = KFiller; |
|
561 |
ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_ISI_VERSION_GET_RESP_OFFSET_FILLERBYTE2 ] = KFiller; |
|
562 |
ptr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_ISI_VERSION_GET_RESP_OFFSET_FILLERBYTE3 ] = KFiller; |
|
563 |
SendToRouter( respMsg ); |
|
564 |
MemApi::DeallocBlock( aCommIsiVersionGetReq ); |
|
565 |
C_TRACE( ( _T( "DISINameService::SendCommIsiVersionGetResp 0x%x<" ), &aCommIsiVersionGetReq ) ); |
|
566 |
} |
|
567 |
||
568 |
void DISINameService::LockNameServiceDMutex() |
|
569 |
{ |
|
570 |
C_TRACE( ( _T( "DISINameService::LockNameServiceDMutex 0x%x>" ), &iNameServiceMutex ) ); |
|
571 |
TInt err( Kern::MutexWait( *iNameServiceMutex ) ); |
|
572 |
ASSERT_RESET_ALWAYS( ( KErrNone == err ), ( EISINameServiceMutexWaitFailed | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
573 |
C_TRACE( ( _T( "DISINameService::LockNameServiceDMutex 0x%x<" ), &iNameServiceMutex ) ); |
|
574 |
} |
|
575 |
||
576 |
void DISINameService::FreeNameServiceDMutex() |
|
577 |
{ |
|
578 |
C_TRACE( ( _T( "DISINameService::FreeNameServiceDMutex 0x%x>" ), &iNameServiceMutex ) ); |
|
579 |
Kern::MutexSignal( *iNameServiceMutex ); |
|
580 |
C_TRACE( ( _T( "DISINameService::FreeNameServiceDMutex 0x%x<" ), &iNameServiceMutex ) ); |
|
581 |
} |
|
582 |
||
583 |
TBool DISINameService::HandleResourceValidationCheck( |
|
584 |
const TDesC8& aMessage |
|
585 |
) |
|
586 |
{ |
|
587 |
C_TRACE( ( _T( "DISINameService::HandleResourceValidationCheck 0x%x>" ), &aMessage ) ); |
|
588 |
LockNameServiceDMutex(); |
|
589 |
TUint8* msgPtr = const_cast<TUint8*>( aMessage.Ptr() ); |
|
590 |
TUint16 phonetAddress( KUninitializedPhoNetAddress ); |
|
591 |
// Extended resource identifier support for NameService |
|
592 |
TUint32 resource = GetResourceUsedInMessage( aMessage ); |
|
593 |
iNameRecords->LookupPhonetAddress( resource, &phonetAddress ); |
|
594 |
FreeNameServiceDMutex(); |
|
595 |
TBool found( EFalse ); |
|
596 |
TUint16 phonetAddressFromMsg = ( ( GET_SENDER_DEV( msgPtr ) << KDeviceIdentifierPhoNetAddressShift ) | GET_SENDER_OBJ( msgPtr ) ); |
|
597 |
if( phonetAddress == phonetAddressFromMsg ) |
|
598 |
{ |
|
599 |
C_TRACE( ( _T( "DISINameService::IsValidResource phonetAddress found 0x%x" ), phonetAddress ) ); |
|
600 |
found = ETrue; |
|
601 |
} |
|
602 |
// No need for else, assert tells that somebody violates indication sending |
|
603 |
TRACE_ASSERT( found ); |
|
604 |
C_TRACE( ( _T( "DISINameService::HandleResourceValidationCheck 0x%x %d<" ), &aMessage, found ) ); |
|
605 |
return found; |
|
606 |
} |
|
607 |
||
608 |
// Extended resource identifier support for NameService |
|
609 |
TUint32 DISINameService::GetResourceUsedInMessage( |
|
610 |
const TDesC8& aMessageToBeResourceRouted |
|
611 |
) |
|
612 |
{ |
|
613 |
C_TRACE( ( _T( "DISINameService::GetResourceUsedInMessage 0x%x>" ), &aMessageToBeResourceRouted ) ); |
|
614 |
const TUint8* msgPtr( aMessageToBeResourceRouted.Ptr() ); |
|
615 |
ASSERT_RESET_ALWAYS( ( msgPtr ), |
|
616 |
( EISINameServiceNullPointer11 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
617 |
TUint32 resource = msgPtr[ ISI_HEADER_OFFSET_RESOURCEID ]; |
|
618 |
#ifdef ISCE_INTERNAL_EXTENDED_RESOURCE_ROUTING_SUPPORTED |
|
619 |
// Extended Resource Routing |
|
620 |
if( PN_PREFIX == msgPtr[ ISI_HEADER_OFFSET_RESOURCEID ] ) |
|
621 |
{ |
|
622 |
C_TRACE( ( _T( "DISINameService::GetResourceUsedInMessage 0x%x extended resource 0x%x" ), &aMessageToBeResourceRouted, resource ) ); |
|
623 |
resource = ( resource | (TUint32)( msgPtr[ ISI_HEADER_OFFSET_TYPE ] << KEightBitShift ) ); |
|
624 |
resource = ( resource | (TUint32)( msgPtr[ ISI_HEADER_OFFSET_SUBTYPE ] << KSixteenBitShift ) ); |
|
625 |
} |
|
626 |
||
627 |
#endif // ISCE_INTERNAL_EXTENDED_RESOURCE_ROUTING_SUPPORTED |
|
628 |
// No need for else as first 8 bits are already used. |
|
629 |
C_TRACE( ( _T( "DISINameService::GetResourceUsedInMessage 0x%x resource 0x%x<" ), &aMessageToBeResourceRouted, resource ) ); |
|
630 |
return resource; |
|
631 |
} |
|
632 |
||
633 |
TUint8 DISINameService::GetDeviceIdByResource( |
|
634 |
const TUint32 aResourceIdentifier |
|
635 |
) |
|
636 |
{ |
|
637 |
C_TRACE( ( _T( "DISINameService::GetDeviceIdByResource 0x%x>" ), aResourceIdentifier ) ); |
|
638 |
TUint8 deviceIdentifier = PN_DEV_OWN; |
|
639 |
#ifdef ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE |
|
640 |
C_TRACE( ( _T( "DISINameService::GetDeviceIdByResource 0x%x ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE" ), aResourceIdentifier ) ); |
|
641 |
LockNameServiceDMutex(); |
|
642 |
TUint16 phonetAddress( KUninitializedPhoNetAddress ); |
|
643 |
TUint32 result = iNameRecords->LookupPhonetAddress( aResourceIdentifier, &phonetAddress ); |
|
644 |
FreeNameServiceDMutex(); |
|
645 |
if( result == KErrNone ) |
|
646 |
{ |
|
647 |
C_TRACE( ( _T( "DISINameService::GetDeviceIdByResource 0x%x old device 0x%x phonetAddress 0x%x" ), aResourceIdentifier, deviceIdentifier, phonetAddress ) ); |
|
648 |
deviceIdentifier = ( (TUint8)( phonetAddress >> KEightBitShift ) ); |
|
649 |
C_TRACE( ( _T( "DISINameService::GetDeviceIdByResource 0x%x new device 0x%x phonetAddress 0x%x" ), aResourceIdentifier, deviceIdentifier, phonetAddress ) ); |
|
650 |
} |
|
651 |
#endif // ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE |
|
652 |
// No need for else as going to default |
|
653 |
C_TRACE( ( _T( "DISINameService::GetDeviceIdByResource 0x%x 0x%x<" ), aResourceIdentifier, deviceIdentifier ) ); |
|
654 |
return deviceIdentifier; |
|
655 |
} |
|
656 |
||
657 |
void DISINameService::TxPnsNameAddInd( |
|
658 |
const TDesC8& aPnsNameAddReq, |
|
659 |
const TUint32 aName, |
|
660 |
const TUint16 aPhoNetAddress, |
|
661 |
const TUint8 aFlags |
|
662 |
) |
|
663 |
{ |
|
664 |
C_TRACE( ( _T( "DISINameService::TxPnsNameAddInd 0x%x>" ), &aPnsNameAddReq ) ); |
|
665 |
LockNameServiceDMutex(); |
|
666 |
const TUint8* msgPtr( aPnsNameAddReq.Ptr() ); |
|
667 |
ASSERT_RESET_ALWAYS( msgPtr, |
|
668 |
( EISINameServiceNullPointer13 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
669 |
TUint32 msgLength = ( ISI_HEADER_SIZE + SIZE_PNS_NAME_ADD_IND ); |
|
670 |
TDes8& indMsg = MemApi::AllocBlock( msgLength ); |
|
671 |
indMsg.SetLength( msgLength ); |
|
672 |
ASSERT_RESET_ALWAYS( ( indMsg.Length() > ( ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_NAMEENTRYTBL + PN_NAME_SRV_ITEM_STR_OFFSET_RESERVED ) ), |
|
673 |
( EISINameServiceWrongLength8 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
674 |
TUint8* indPtr = const_cast<TUint8*>( indMsg.Ptr() ); |
|
675 |
SetIsiHeaderForIndication( indMsg, aPnsNameAddReq, PNS_NAME_ADD_IND ); |
|
676 |
PUTB16( &indPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_TOTALMATCHES ], KOneMatch ); |
|
677 |
PUTB16( &indPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_MATCHESINMSG ], KOneMatch ); |
|
678 |
indPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_RESERVED1 ] = KFiller; |
|
679 |
indPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_RESERVED2 ] = KFiller; |
|
680 |
PUTB32( &indPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_NAMEENTRYTBL + PN_NAME_SRV_ITEM_STR_OFFSET_NAME ], aName ); |
|
681 |
PUTB16( &indPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_NAMEENTRYTBL + PN_NAME_SRV_ITEM_STR_OFFSET_DEV ], aPhoNetAddress ); |
|
682 |
indPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_NAMEENTRYTBL + PN_NAME_SRV_ITEM_STR_OFFSET_FLAGS ] = aFlags; |
|
683 |
indPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_NAMEENTRYTBL + PN_NAME_SRV_ITEM_STR_OFFSET_RESERVED ] = KFiller; |
|
684 |
SendToRouter( indMsg ); |
|
685 |
||
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 | 689 |
void DISINameService::TxPnsNameRemoveInd( |
690 |
const TDesC8& aPnsNameRemoveReq, |
|
691 |
const TUint32 aName, |
|
692 |
const TUint16 aPhoNetAddress, |
|
693 |
const TUint8 aFlags |
|
694 |
) |
|
695 |
{ |
|
696 |
C_TRACE( ( _T( "DISINameService::TxPnsNameRemoveInd 0x%x>" ), &aPnsNameRemoveReq ) ); |
|
697 |
LockNameServiceDMutex(); |
|
698 |
const TUint8* msgPtr( aPnsNameRemoveReq.Ptr() ); |
|
699 |
ASSERT_RESET_ALWAYS( msgPtr, |
|
700 |
( EISINameServiceNullPointer14 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
701 |
TUint32 msgLength = ( ISI_HEADER_SIZE + SIZE_PNS_NAME_REMOVE_IND ); |
|
702 |
TDes8& indMsg = MemApi::AllocBlock( msgLength ); |
|
703 |
indMsg.SetLength( msgLength ); |
|
704 |
ASSERT_RESET_ALWAYS( ( indMsg.Length() > ( ISI_HEADER_SIZE + PNS_NAME_REMOVE_IND_OFFSET_NAMEENTRYTBL + PN_NAME_SRV_ITEM_STR_OFFSET_FLAGS ) ), |
|
705 |
( EISINameServiceWrongLength8 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
706 |
TUint8* indPtr = const_cast<TUint8*>( indMsg.Ptr() ); |
|
707 |
ASSERT_RESET_ALWAYS( indPtr, ( EISINameServiceNullPointer10 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
708 |
SetIsiHeaderForIndication( indMsg, aPnsNameRemoveReq, PNS_NAME_REMOVE_IND ); |
|
709 |
C_TRACE( ( _T( "DISINameService::TxPnsNameRemoveInd 0x%x name 0x%x phonetAddress 0x%x flags 0x%x" ), &aPnsNameRemoveReq, aName, aPhoNetAddress, aFlags ) ); |
|
710 |
PUTB16( &indPtr[ ISI_HEADER_SIZE + PNS_NAME_REMOVE_IND_OFFSET_TOTALMATCHES ], KOneMatch ); |
|
711 |
PUTB16( &indPtr[ ISI_HEADER_SIZE + PNS_NAME_REMOVE_IND_OFFSET_MATCHESINMSG ], KOneMatch ); |
|
712 |
indPtr[ ISI_HEADER_SIZE + PNS_NAME_REMOVE_IND_OFFSET_RESERVED1 ] = KFiller; |
|
713 |
indPtr[ ISI_HEADER_SIZE + PNS_NAME_REMOVE_IND_OFFSET_RESERVED2 ] = KFiller; |
|
714 |
PUTB32( &indPtr[ ISI_HEADER_SIZE + PNS_NAME_REMOVE_IND_OFFSET_NAMEENTRYTBL + PN_NAME_SRV_ITEM_STR_OFFSET_NAME ], aName ); |
|
715 |
PUTB16( &indPtr[ ISI_HEADER_SIZE + PNS_NAME_REMOVE_IND_OFFSET_NAMEENTRYTBL + PN_NAME_SRV_ITEM_STR_OFFSET_DEV ], aPhoNetAddress ); |
|
716 |
indPtr[ ISI_HEADER_SIZE + PNS_NAME_REMOVE_IND_OFFSET_NAMEENTRYTBL + PN_NAME_SRV_ITEM_STR_OFFSET_FLAGS ] = aFlags; |
|
717 |
SendToRouter( indMsg ); |
|
718 |
C_TRACE( ( _T( "DISINameService::TxPnsNameRemoveInd 0x%x<" ), &aPnsNameRemoveReq ) ); |
|
719 |
} |
|
5
8ccc39f9d787
New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
diff
changeset
|
720 |
|
9 | 721 |
DISINameService* DISINameService::GetISINameServiceF( |
722 |
// None |
|
723 |
) |
|
724 |
{ |
|
725 |
ASSERT_RESET_ALWAYS( iThisptr, |
|
726 |
( EISINameServiceNullPointer12 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
727 |
return iThisptr; |
|
728 |
} |
|
729 |
||
730 |
DNameRecords* DISINameService::GetNameRecordsF( |
|
731 |
// None |
|
732 |
) |
|
733 |
{ |
|
734 |
ASSERT_RESET_ALWAYS( iNameRecords, |
|
735 |
( EISINameServiceNullPointer15 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
736 |
return iNameRecords; |
|
737 |
} |
|
738 |
||
739 |
void DISINameService::SetIsiHeaderForResp( |
|
740 |
const TDesC8& aResponseMessage, |
|
741 |
const TDesC8& aRequestMessage, |
|
742 |
const TUint8 aResponseMessageIdentifier |
|
743 |
) |
|
744 |
{ |
|
745 |
C_TRACE( ( _T( "DISINameService::SetIsiHeaderForResp 0x%x 0x%x 0x%x>" ), &aResponseMessage, &aRequestMessage, aResponseMessageIdentifier ) ); |
|
746 |
const TUint8* reqMsgPtr = aRequestMessage.Ptr(); |
|
747 |
ASSERT_RESET_ALWAYS( reqMsgPtr, ( EISINameServiceNullPointer16 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
748 |
TUint8* respMsgPtr = const_cast<TUint8*>( aResponseMessage.Ptr() ); |
|
749 |
ASSERT_RESET_ALWAYS( respMsgPtr, ( EISINameServiceNullPointer17 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
750 |
ASSERT_RESET_ALWAYS( ( aResponseMessage.Length() > ISI_HEADER_OFFSET_MESSAGEID ), |
|
751 |
( EISINameServiceWrongLength9 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
752 |
ASSERT_RESET_ALWAYS( ( aRequestMessage.Length() > ISI_HEADER_OFFSET_TRANSID ), |
|
753 |
( EISINameServiceWrongLength10 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
754 |
respMsgPtr[ ISI_HEADER_OFFSET_MEDIA ] = reqMsgPtr[ ISI_HEADER_OFFSET_MEDIA ]; |
|
755 |
SET_RECEIVER_DEV( respMsgPtr, GET_SENDER_DEV( reqMsgPtr ) ); |
|
756 |
SET_SENDER_DEV( respMsgPtr, PN_DEV_OWN ); |
|
757 |
respMsgPtr[ ISI_HEADER_OFFSET_RESOURCEID ] = PN_NAMESERVICE; |
|
758 |
SET_LENGTH( respMsgPtr, ( aResponseMessage.Length() - PN_HEADER_SIZE ) ); |
|
759 |
SET_RECEIVER_OBJ( respMsgPtr, GET_SENDER_OBJ( reqMsgPtr ) ); |
|
760 |
SET_SENDER_OBJ( respMsgPtr, PN_OBJ_ROUTER ); |
|
761 |
respMsgPtr[ ISI_HEADER_OFFSET_TRANSID ] = reqMsgPtr[ ISI_HEADER_OFFSET_TRANSID ]; |
|
762 |
respMsgPtr[ ISI_HEADER_OFFSET_MESSAGEID ] = aResponseMessageIdentifier; |
|
763 |
C_TRACE( ( _T( "DISINameService::SetIsiHeaderForResp 0x%x 0x%x 0x%x<" ), &aResponseMessage, &aRequestMessage, aResponseMessageIdentifier ) ); |
|
764 |
} |
|
765 |
||
766 |
void DISINameService::SetIsiHeaderForCommonResp( |
|
767 |
const TDesC8& aResponseMessage, |
|
768 |
const TDesC8& aRequestMessage |
|
769 |
) |
|
770 |
{ |
|
771 |
C_TRACE( ( _T( "DISINameService::SetIsiHeaderForCommonResp 0x%x 0x%x>" ), &aResponseMessage, &aRequestMessage ) ); |
|
772 |
const TUint8* reqMsgPtr = aRequestMessage.Ptr(); |
|
773 |
ASSERT_RESET_ALWAYS( reqMsgPtr, ( EISINameServiceNullPointer18 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
774 |
TUint8* respMsgPtr = const_cast<TUint8*>( aResponseMessage.Ptr() ); |
|
775 |
ASSERT_RESET_ALWAYS( respMsgPtr, ( EISINameServiceNullPointer19 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
776 |
ASSERT_RESET_ALWAYS( ( aResponseMessage.Length() > ISI_HEADER_OFFSET_MESSAGEID ), |
|
777 |
( EISINameServiceWrongLength11 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
778 |
ASSERT_RESET_ALWAYS( ( aRequestMessage.Length() > ISI_HEADER_OFFSET_TRANSID ), |
|
779 |
( EISINameServiceWrongLength12 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
780 |
respMsgPtr[ ISI_HEADER_OFFSET_MEDIA ] = ( reqMsgPtr[ ISI_HEADER_OFFSET_MEDIA ] ); |
|
781 |
SET_RECEIVER_DEV( respMsgPtr, GET_SENDER_DEV( reqMsgPtr ) ); |
|
782 |
SET_SENDER_DEV( respMsgPtr, PN_DEV_OWN ); |
|
783 |
respMsgPtr[ ISI_HEADER_OFFSET_RESOURCEID ] = ( reqMsgPtr[ ISI_HEADER_OFFSET_RESOURCEID ] ); |
|
784 |
SET_LENGTH( respMsgPtr, ( aResponseMessage.Length() - PN_HEADER_SIZE ) ); |
|
785 |
SET_RECEIVER_OBJ( respMsgPtr, GET_SENDER_OBJ( reqMsgPtr ) ); |
|
786 |
SET_SENDER_OBJ( respMsgPtr, GET_RECEIVER_OBJ( reqMsgPtr ) ); |
|
787 |
respMsgPtr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP_OFFSET_TRANSACTIONID ] = ( reqMsgPtr[ ISI_HEADER_OFFSET_TRANSID ] ); |
|
788 |
respMsgPtr[ ISI_HEADER_SIZE + COMMON_MESSAGE_COMM_SERVICE_NOT_IDENTIFIED_RESP_OFFSET_MESSAGEID ] = COMMON_MESSAGE; |
|
789 |
C_TRACE( ( _T( "DISINameService::SetIsiHeaderForCommonResp 0x%x 0x%x<" ), &aResponseMessage, &aRequestMessage ) ); |
|
790 |
} |
|
791 |
||
792 |
void DISINameService::SetIsiHeaderForIndication( |
|
793 |
const TDesC8& aIndicationToModify, |
|
794 |
const TDesC8& aPnsNameRequest, |
|
795 |
const TUint8 aIndicationMessageIdentifier |
|
796 |
) |
|
797 |
{ |
|
798 |
C_TRACE( ( _T( "DISINameService::aIndicationToModify 0x%x 0x%x 0x%x>" ), &aIndicationToModify, &aPnsNameRequest, aIndicationMessageIdentifier ) ); |
|
799 |
const TUint8* reqMsgPtr = aPnsNameRequest.Ptr(); |
|
800 |
ASSERT_RESET_ALWAYS( reqMsgPtr, ( EISINameServiceNullPointer18 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
801 |
TUint8* indMsgPtr = const_cast<TUint8*>( aIndicationToModify.Ptr() ); |
|
802 |
ASSERT_RESET_ALWAYS( indMsgPtr, ( EISINameServiceNullPointer19 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
803 |
ASSERT_RESET_ALWAYS( ( aIndicationToModify.Length() > ISI_HEADER_OFFSET_MESSAGEID ), |
|
804 |
( EISINameServiceWrongLength11 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
805 |
ASSERT_RESET_ALWAYS( ( aPnsNameRequest.Length() > ISI_HEADER_OFFSET_TRANSID ), |
|
806 |
( EISINameServiceWrongLength12 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
807 |
indMsgPtr[ ISI_HEADER_OFFSET_MEDIA ] = PN_MEDIA_ROUTING_REQ; |
|
808 |
SET_RECEIVER_DEV( indMsgPtr, GET_SENDER_DEV( reqMsgPtr ) ); |
|
809 |
SET_SENDER_DEV( indMsgPtr, PN_DEV_OWN ); |
|
810 |
indMsgPtr[ ISI_HEADER_OFFSET_RESOURCEID ] = PN_NAMESERVICE; |
|
811 |
SET_LENGTH( indMsgPtr, ( aIndicationToModify.Length() - PN_HEADER_SIZE ) ); |
|
812 |
SET_RECEIVER_OBJ( indMsgPtr, PN_OBJ_EVENT_MULTICAST ); |
|
813 |
SET_SENDER_OBJ( indMsgPtr, PN_OBJ_ROUTER ); |
|
814 |
indMsgPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_UTID ] = 0x00; |
|
815 |
indMsgPtr[ ISI_HEADER_SIZE + PNS_NAME_ADD_IND_OFFSET_SUBFUNCTION ]= aIndicationMessageIdentifier; |
|
816 |
C_TRACE( ( _T( "DISINameService::aIndicationToModify 0x%x 0x%x 0x%x<" ), &aIndicationToModify, &aPnsNameRequest, aIndicationMessageIdentifier ) ); |
|
817 |
} |
|
818 |
DISINameServiceExtended::DISINameServiceExtended( |
|
819 |
DISINameService* aNameService |
|
820 |
) |
|
821 |
{ |
|
822 |
C_TRACE( ( _T( "DISINameServiceExtended::DISINameServiceExtended 0x%x>" ), iISINameService ) ); |
|
823 |
iISINameService = aNameService; |
|
824 |
ASSERT_RESET_ALWAYS( iISINameService, ( EISINameServiceExtendedNullPointer | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
825 |
AddModemResources(); |
|
826 |
//AddPnDevDspMainResources(); |
|
827 |
// iShNameAddIndSubscriptionState = ENotSubscribed; |
|
828 |
||
829 |
// |
|
830 |
// flag: ISCE_INTERNAL_WIDER_NAME_SERVICE_IN_USE |
|
831 |
// |
|
832 |
// |
|
833 |
// - Extended Resource routing supported by Symbian SW Name Service (Design Change) |
|
834 |
// - PN_COMMGR by default routed to RAPU, by device id 0x6c routed to Symbian SW PN_COMMGR (Design Change) |
|
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 |
|
836 |
// - PN_NAMESERVICE by default routed to RAPU by device id 0x6c routed to Symbian SW PN_NAMESERVICE |
|
837 |
// - Symbian SW wider name service subscribes PNS_NAME_ADD_INDs from RAPU through Symbian SW PN_APE_COMMGR (REQ, RESP) |
|
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) |
|
839 |
// - Communication Manager calls ::GetDeviceIdentifierByResouce to get appropriate device identifier to indication subscription |
|
840 |
// |
|
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 |
|
842 |
||
843 |
C_TRACE( ( _T( "DISINameServiceExtended::DISINameServiceExtended 0x%x<" ), iISINameService ) ); |
|
844 |
} |
|
845 |
||
846 |
DISINameServiceExtended::~DISINameServiceExtended( |
|
847 |
// None |
|
848 |
) |
|
849 |
{ |
|
850 |
C_TRACE( ( _T( "DISINameServiceExtended::~DISINameServiceExtended<>" ) ) ); |
|
851 |
} |
|
852 |
void DISINameServiceExtended::AddModemResources( |
|
853 |
// None |
|
854 |
) |
|
855 |
{ |
|
856 |
C_TRACE( ( _T( "DISINameServiceExtended::AddModemResources>" ) ) ); |
|
857 |
TUint8 err( PN_NAME_OK ); |
|
858 |
TUint8 flags = PN_NAME_NOCHG; |
|
859 |
TUint16 phonetAddressModemRoutingReq = ( ( PN_DEV_MODEM << KDeviceIdentifierPhoNetAddressShift ) | PN_OBJ_ROUTING_REQ ); |
|
860 |
||
861 |
DNameRecords* nameRecords = iISINameService->GetNameRecordsF(); |
|
862 |
||
863 |
err = nameRecords->AddName( PN_SMS, phonetAddressModemRoutingReq, flags ); |
|
864 |
ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed1 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
865 |
||
866 |
err = nameRecords->AddName( PN_SS, phonetAddressModemRoutingReq, flags ); |
|
867 |
ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed2 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
868 |
||
869 |
err = nameRecords->AddName( PN_CSD, phonetAddressModemRoutingReq, flags ); |
|
870 |
ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed3 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
871 |
||
872 |
err = nameRecords->AddName( PN_GPDS, phonetAddressModemRoutingReq, flags ); |
|
873 |
ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed4 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
874 |
||
875 |
err = nameRecords->AddName( PN_GSS, phonetAddressModemRoutingReq, flags ); |
|
876 |
ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed5 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
877 |
||
878 |
err = nameRecords->AddName( PN_UICC, phonetAddressModemRoutingReq, flags ); |
|
879 |
ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed6 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
880 |
||
881 |
err = nameRecords->AddName( PN_AT_MODEM, phonetAddressModemRoutingReq, flags ); |
|
882 |
ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed7 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
883 |
||
884 |
err = nameRecords->AddName( PN_MODEM_LCS, phonetAddressModemRoutingReq, flags ); |
|
885 |
ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed8 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
886 |
||
887 |
err = nameRecords->AddName( PN_MODEM_TEST, phonetAddressModemRoutingReq, flags ); |
|
888 |
ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed9 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
889 |
||
890 |
err = nameRecords->AddName( PN_MODEM_NVD, phonetAddressModemRoutingReq, flags ); |
|
891 |
ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed10 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
892 |
||
893 |
err = nameRecords->AddName( PN_MODEM_MCE, phonetAddressModemRoutingReq, flags ); |
|
894 |
ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed11 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
895 |
||
896 |
err = nameRecords->AddName( PN_MODEM_INFO, phonetAddressModemRoutingReq, flags ); |
|
897 |
ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed12 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
898 |
||
899 |
err = nameRecords->AddName( PN_MODEM_NETWORK, phonetAddressModemRoutingReq, flags ); |
|
900 |
ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed13 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
901 |
||
902 |
err = nameRecords->AddName( PN_MODEM_CALL, phonetAddressModemRoutingReq, flags ); |
|
903 |
ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed14 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
904 |
||
905 |
err = nameRecords->AddName( PN_WCDMA_RF_TEST, phonetAddressModemRoutingReq, flags ); |
|
906 |
ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed15 | EDISINameServiceTraceId << KClassIdentifierShift ) ); // EISINameServiceNameCreateFailed15... |
|
907 |
||
908 |
err = nameRecords->AddName( PN_GSM_RF_TEST, phonetAddressModemRoutingReq, flags ); |
|
909 |
ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed16 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
910 |
||
911 |
err = nameRecords->AddName( PN_RF_HAL, phonetAddressModemRoutingReq, flags ); |
|
912 |
ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed17 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
913 |
||
914 |
err = nameRecords->AddName( PN_COMMON_RF_TEST, phonetAddressModemRoutingReq, flags ); |
|
915 |
ASSERT_RESET_ALWAYS( ( PN_NAME_OK == err ), ( EISINameServiceNameCreateFailed18 | EDISINameServiceTraceId << KClassIdentifierShift ) ); |
|
916 |
||
917 |
C_TRACE( ( _T( "DISINameServiceExtended::AddModemResources<" ) ) ); |
|
918 |
} |