author | mikaruus <mika.a.ruuskanen@nokia.com> |
Wed, 17 Feb 2010 13:58:55 +0200 | |
changeset 7 | fa67e03b87df |
parent 0 | 63b37f68c1ce |
child 9 | 8486d82aef45 |
permissions | -rw-r--r-- |
0 | 1 |
/* |
2 |
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). |
|
3 |
* All rights reserved. |
|
4 |
* This component and the accompanying materials are made available |
|
5 |
* under the terms of the License "Eclipse Public License v1.0" |
|
6 |
* which accompanies this distribution, and is available |
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 |
* |
|
9 |
* Initial Contributors: |
|
10 |
* Nokia Corporation - initial contribution. |
|
11 |
* |
|
12 |
* Contributors: |
|
13 |
* |
|
14 |
* Description: |
|
15 |
* |
|
16 |
*/ |
|
17 |
||
18 |
||
19 |
#include <kernel.h> // For Kern |
|
20 |
#include "isirouter.h" // For DISIRouter |
|
21 |
#include "isiroutertrace.h" // For C_TRACE, ASSERT_RESET.. and fault codes |
|
22 |
#include "isidevice.h" // For DLogicalDevice |
|
23 |
#include "isihelpers.h" // For SET_SENDER_DEV... |
|
24 |
#include "misirouterchannelif.h" // For MISIRouterChannelIf |
|
25 |
#include "isithreadcontainer.h" // For DISIThreadContainer |
|
26 |
#include "isicltransceiver.h" // For DISICLTransceiver |
|
7
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
27 |
#include "misirouterobjectif.h" |
0 | 28 |
|
7
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
29 |
#define PN_DEV_OWN 0x6C //TODO take from real location in future |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
30 |
|
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
31 |
const TInt KDfcPriority( 5 ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
32 |
const TUint32 KCommunicationManagerUID( 0x2002B3D0 ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
33 |
const TUint32 KNameServiceUID( 0x2002A5A1 ); |
0 | 34 |
|
35 |
DISIRouter* DISIRouter::iSelfPtr = NULL; |
|
36 |
||
37 |
// Faults |
|
38 |
enum TISIRouterFaults |
|
39 |
{ |
|
40 |
EISIRouterMemAllocFailure = 0x01, |
|
41 |
EISIRouterMemAllocFailure1, |
|
42 |
EISIRouterMemAllocFailure2, |
|
43 |
EISIRouterNotUniqueUID, |
|
44 |
EISIRouterNULLObjId, |
|
45 |
EISIRouterNULLPtr, |
|
46 |
EISIRouterNULLPtr1, |
|
47 |
EISIRouterNULLPtr2, |
|
48 |
EISIRouterNULLThreadPointer, |
|
49 |
}; |
|
50 |
||
7
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
51 |
|
0 | 52 |
|
53 |
void DISIRouter::Connect( |
|
54 |
const TInt32 aUID, |
|
55 |
TUint8& aObjId, |
|
56 |
MISIRouterChannelIf* aCallback |
|
57 |
) |
|
58 |
{ |
|
59 |
C_TRACE( ( _T( "DISIRouter::Connect %d 0x%x 0x%x>" ), aUID, aObjId, aCallback ) ); |
|
60 |
ASSERT_RESET_ALWAYS( aCallback, ( EISIRouterNULLPtr | EDISIRouterTraceId << KClassIdentifierShift ) ); |
|
61 |
TISIClient* tmp = new TISIClient(); |
|
62 |
ASSERT_RESET_ALWAYS( tmp, ( EISIRouterMemAllocFailure | EDISIRouterTraceId << KClassIdentifierShift ) ); |
|
63 |
tmp->iUID = aUID; |
|
64 |
tmp->iChannel = aCallback; |
|
65 |
||
66 |
TUint8 staticObjId = ReceiveStaticObjId( aUID ); |
|
67 |
NKern::FMWait( iClientTableFastMutex ); |
|
68 |
CheckUIDUniqueness( aUID ); |
|
69 |
if( !staticObjId ) |
|
70 |
{ |
|
71 |
tmp->iObjId = ReserveNewDynamicObjId(); |
|
72 |
ASSERT_RESET_ALWAYS( tmp->iObjId, ( EISIRouterNULLObjId | EDISIRouterTraceId << KClassIdentifierShift ) ); |
|
73 |
} |
|
74 |
else |
|
75 |
{ |
|
76 |
tmp->iObjId = staticObjId; |
|
77 |
} |
|
78 |
iClientTable[ tmp->iObjId ] = tmp; |
|
79 |
NKern::FMSignal( iClientTableFastMutex ); |
|
80 |
aObjId = tmp->iObjId; |
|
81 |
C_TRACE( ( _T( "DISIRouter::Connect %d 0x%x 0x%x<" ), aUID, aObjId, aCallback ) ); |
|
82 |
} |
|
83 |
||
84 |
void DISIRouter::CheckUIDUniqueness( const TInt32 aUID ) |
|
85 |
{ |
|
86 |
// No tracing with mutex |
|
87 |
for( TInt i( KFirstAllowedObjId ); i < KMaxAmountOfObjId; i++ ) |
|
88 |
{ |
|
89 |
if( iClientTable[ i ] && ( iClientTable[ i ]->iUID == aUID ) ) |
|
90 |
{ |
|
91 |
ASSERT_RESET_ALWAYS( 0, ( EISIRouterNotUniqueUID | EDISIRouterTraceId << KClassIdentifierShift ) ); |
|
92 |
} |
|
93 |
} |
|
94 |
} |
|
95 |
||
96 |
TUint8 DISIRouter::ReceiveStaticObjId( const TInt32 aUID ) |
|
97 |
{ |
|
98 |
C_TRACE( ( _T( "DISIRouter::ReceiveStaticObjId 0x%x 0x%x>" ), aUID ) ); |
|
99 |
for( TUint8 i = 0; i < iStaticObjIdTable.Count(); i++ ) |
|
100 |
{ |
|
101 |
if( iStaticObjIdTable[ i ]->iUID == aUID ) |
|
102 |
{ |
|
103 |
C_TRACE( ( _T( "DISIRouter::ReceiveStaticObjId 0x%x 0x%x 0x%x<" ), aUID, iStaticObjIdTable[i]->iUID, iStaticObjIdTable[i]->iObjId ) ); |
|
104 |
return iStaticObjIdTable[i]->iObjId; |
|
105 |
} |
|
106 |
} |
|
107 |
return KNotInitializedId; |
|
108 |
} |
|
109 |
||
110 |
TUint8 DISIRouter::ReserveNewDynamicObjId() |
|
111 |
{ |
|
112 |
// No tracing with mutex |
|
113 |
for( TInt i( KFirstAllowedObjId ); i < KMaxAmountOfObjId; i++ ) |
|
114 |
{ |
|
115 |
if( !iClientTable[ i ] ) |
|
116 |
{ |
|
117 |
TBool reserved( EFalse ); |
|
118 |
for( TUint8 j = 0; j < iStaticObjIdTable.Count(); j++ ) |
|
119 |
{ |
|
120 |
if( j == iStaticObjIdTable[ j ]->iObjId ) |
|
121 |
{ |
|
122 |
reserved = ETrue; |
|
123 |
break; |
|
124 |
} |
|
125 |
} |
|
126 |
if( !reserved ) |
|
127 |
{ |
|
128 |
return i; |
|
129 |
} |
|
130 |
} |
|
131 |
} |
|
132 |
return KNotInitializedId; |
|
133 |
} |
|
134 |
||
135 |
void DISIRouter::Disconnect( |
|
136 |
const TUint8 aObjId |
|
137 |
) |
|
138 |
{ |
|
139 |
C_TRACE( ( _T( "DISIRouter::Disconnect 0x%x>" ), aObjId ) ); |
|
140 |
TISIClient* tmp = iClientTable[ aObjId ]; |
|
141 |
NKern::FMWait( iClientTableFastMutex ); |
|
142 |
iClientTable[ aObjId ] = NULL; |
|
143 |
NKern::FMSignal( iClientTableFastMutex ); |
|
144 |
//Must exist |
|
145 |
delete tmp; |
|
146 |
C_TRACE( ( _T( "DISIRouter::Disconnect 0x%x<" ), aObjId ) ); |
|
147 |
} |
|
148 |
||
149 |
TDfcQue* DISIRouter::GetDfcThread( |
|
150 |
const TISIDfcQThreadType aType |
|
151 |
) |
|
152 |
{ |
|
153 |
C_TRACE( ( _T( "DISIRouter::GetDfcThread<>" ) ) ); |
|
7
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
154 |
Kern::Printf( "ISIRouter::GetDfcThread" ); |
0 | 155 |
return iClientThreadContainer->AllocateThread( aType ); |
156 |
} |
|
157 |
||
158 |
void DISIRouter::FreeDfcThread( TDfcQue* aThread ) |
|
159 |
{ |
|
160 |
C_TRACE( ( _T( "DISIRouter::FreeDfcThread 0x%x>" ), aThread ) ); |
|
7
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
161 |
Kern::Printf( "ISIRouter::FreeDfcThread" ); |
0 | 162 |
iClientThreadContainer->DeallocateThread( aThread ); |
163 |
C_TRACE( ( _T( "DISIRouter::FreeDfcThread 0x%x<" ), aThread ) ); |
|
164 |
} |
|
165 |
||
166 |
MISIChannelRouterIf* MISIChannelRouterIf::GetIf() |
|
167 |
{ |
|
168 |
C_TRACE( ( _T( "MISIChannelRouterIf::GetIf<>" ) ) ); |
|
169 |
return DISIRouter::GetRouter(); |
|
170 |
} |
|
171 |
||
172 |
DISIRouter::DISIRouter( |
|
173 |
// None |
|
174 |
) |
|
175 |
{ |
|
176 |
C_TRACE( ( _T( "DISIRouter::DISIRouter>" ) ) ); |
|
177 |
iClientThreadContainer = new DISIThreadContainer(); |
|
178 |
ASSERT_RESET_ALWAYS( iClientThreadContainer, ( EISIRouterMemAllocFailure1 | EDISIRouterTraceId << KClassIdentifierShift ) ); |
|
179 |
iInitThread = iClientThreadContainer->AllocateThread( MISIChannelRouterIf::EISIKernelMainThread ); |
|
180 |
ASSERT_RESET_ALWAYS( iInitThread, ( EISIRouterNULLThreadPointer | EDISIRouterTraceId << KClassIdentifierShift ) ); |
|
181 |
iInitializeDfc = new TDfc( InitializeDfc, this, iInitThread, KDfcPriority ); |
|
182 |
ASSERT_RESET_ALWAYS( iInitializeDfc, ( EISIRouterMemAllocFailure2 | EDISIRouterTraceId << KClassIdentifierShift ) ); |
|
183 |
iInitializeDfc->Enque(); |
|
184 |
C_TRACE( ( _T( "DISIRouter::DISIRouter<" ) ) ); |
|
185 |
} |
|
186 |
||
187 |
void DISIRouter::InitializeDfc( |
|
188 |
TAny* aPtr |
|
189 |
) |
|
190 |
{ |
|
191 |
C_TRACE( ( _T( "DISIRouter::InitializeDfc>" ) ) ); |
|
192 |
DISIRouter* self = reinterpret_cast<DISIRouter*>( aPtr ); |
|
193 |
self->Initialize(); |
|
194 |
C_TRACE( ( _T( "DISIRouter::InitializeDfc<" ) ) ); |
|
195 |
} |
|
196 |
||
197 |
void DISIRouter::Initialize( |
|
198 |
// None |
|
199 |
) |
|
200 |
{ |
|
201 |
C_TRACE( ( _T( "DISIRouter::Initialize>" ) ) ); |
|
202 |
||
203 |
iCLTransceiver = new DISICLTransceiver( this ); |
|
204 |
ASSERT_RESET_ALWAYS( iCLTransceiver, ( EISIRouterNULLPtr1 | EDISIRouterTraceId << KClassIdentifierShift ) ); //TODO error codes |
|
205 |
iClientTableFastMutex = new NFastMutex(); |
|
206 |
ASSERT_RESET_ALWAYS( iClientTableFastMutex, ( EISIRouterNULLPtr2 | EDISIRouterTraceId << KClassIdentifierShift ) ); |
|
207 |
||
208 |
for( TInt i( 0 ); i < KMaxAmountOfObjId; i++) |
|
209 |
{ |
|
210 |
iClientTable[ i ] = NULL; |
|
211 |
} |
|
212 |
// UID ObjId |
|
213 |
iStaticObjIdTable.Append( new TStaticId( 123, 15 ) ); //NokiaTSY etc... |
|
214 |
iStaticObjIdTable.Append( new TStaticId( 200, 34 ) ); |
|
215 |
||
216 |
iSelfPtr = this; |
|
217 |
iClientThreadContainer->DeallocateThread( iInitThread ); |
|
218 |
C_TRACE( ( _T( "DISIRouter::Initialize<" ) ) ); |
|
219 |
} |
|
220 |
||
221 |
DISIRouter::~DISIRouter( |
|
222 |
// None |
|
223 |
) |
|
224 |
{ |
|
225 |
C_TRACE( ( _T( "DISIRouter::~DISIRouter>" ) ) ); |
|
226 |
iSelfPtr = NULL; |
|
227 |
for( TUint8 i( 0 ); i < iStaticObjIdTable.Count(); i++) |
|
228 |
{ |
|
229 |
delete iStaticObjIdTable[ i ]; |
|
230 |
iStaticObjIdTable[ i ] = NULL; |
|
231 |
} |
|
232 |
iStaticObjIdTable.Reset(); |
|
233 |
for( TInt i( 0 ); i <= KMaxAmountOfObjId; i++) |
|
234 |
{ |
|
235 |
if( iClientTable[ i ] ) |
|
236 |
{ |
|
237 |
delete iClientTable[ i ]; |
|
238 |
iClientTable[ i ] = NULL; |
|
239 |
} |
|
240 |
} |
|
241 |
// All must exist |
|
242 |
iInitializeDfc->Cancel(); |
|
243 |
delete iInitializeDfc; |
|
244 |
iInitializeDfc = NULL; |
|
245 |
delete iClientThreadContainer; |
|
246 |
iClientThreadContainer = NULL; |
|
247 |
delete iCLTransceiver; |
|
248 |
iCLTransceiver = NULL; |
|
249 |
delete iClientTableFastMutex; |
|
250 |
iClientTableFastMutex = NULL; |
|
251 |
C_TRACE( ( _T( "DISIRouter::~DISIRouter<" ) ) ); |
|
252 |
} |
|
253 |
||
254 |
TInt DISIRouter::Send( |
|
255 |
TDes8& aMessage, |
|
256 |
const TUint8 aObjId |
|
257 |
) |
|
258 |
{ |
|
259 |
C_TRACE( ( _T( "DISIRouter::Send 0x%x 0x%x>" ), &aMessage, aObjId ) ); |
|
7
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
260 |
Kern::Printf( "ISIRouter::Send" ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
261 |
|
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
262 |
if( ( aObjId != PN_OBJ_ROUTING_REQ ) |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
263 |
&& ( aObjId != PN_OBJ_EVENT_MULTICAST ) ) |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
264 |
{ |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
265 |
TUint8* messageBlockPtr( const_cast<TUint8*>( aMessage.Ptr() ) ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
266 |
SET_SENDER_DEV( messageBlockPtr, PN_DEV_OWN ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
267 |
SET_SENDER_OBJ( messageBlockPtr, aObjId ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
268 |
} |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
269 |
TInt error = iCLTransceiver->RouteISIMessage( aMessage ); |
0 | 270 |
C_TRACE( ( _T( "DISIRouter::Send 0x%x %d 0x%x<" ), &aMessage, aObjId ) ); |
7
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
271 |
return error; |
0 | 272 |
} |
273 |
||
274 |
TBool DISIRouter::Receive( TDes8& aMessage, const TUint8 aObjId ) |
|
275 |
{ |
|
276 |
C_TRACE( ( _T( "DISIRouter::Receive 0x%x 0x%x>" ), &aMessage, aObjId ) ); |
|
7
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
277 |
TBool error( EFalse ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
278 |
TUint8* messageBlockPtr( const_cast<TUint8*>( aMessage.Ptr() ) ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
279 |
switch( GET_RECEIVER_OBJ( aMessage ) ) |
0 | 280 |
{ |
7
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
281 |
case PN_OBJ_ROUTING_REQ: |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
282 |
{ |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
283 |
C_TRACE( ( _T( "DISIRouter msg to PN_OBJ_ROUTING_REQ: nameservice" ) ) ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
284 |
//route with resource and nameservice |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
285 |
iNameService->Receive( aMessage ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
286 |
C_TRACE( ( _T( "DRouter::HandleIsiMessage to NAMESERVICE<" ) ) ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
287 |
error = ETrue; |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
288 |
break; |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
289 |
} |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
290 |
case PN_OBJ_EVENT_MULTICAST: |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
291 |
{ |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
292 |
C_TRACE( ( _T( "DISIRouter msg to PN_OBJ_EVENT_MULTICAST: communication manager" ) ) ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
293 |
iCommunicationManager->Receive( aMessage ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
294 |
C_TRACE( ( _T( "DRouter::HandleIsiMessage to Communication Manager<" ) ) ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
295 |
error = ETrue; |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
296 |
break; |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
297 |
} |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
298 |
default: |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
299 |
{ //default regular channel |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
300 |
NKern::FMWait( iClientTableFastMutex ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
301 |
if( iClientTable[ aObjId ] ) |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
302 |
{ |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
303 |
NKern::FMSignal( iClientTableFastMutex ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
304 |
( iClientTable[ aObjId ]->iChannel )->ReceiveMsg( aMessage ); //may not be safe, consider receive/delete sync |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
305 |
C_TRACE( ( _T( "DISIRouter::Receive ok 0x%x 0x%x>" ), &aMessage, aObjId ) ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
306 |
error = ETrue; |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
307 |
} |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
308 |
else |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
309 |
{ |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
310 |
NKern::FMSignal( iClientTableFastMutex ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
311 |
C_TRACE( ( _T( "DISIRouter::Receive failed 0x%x 0x%x<" ), &aMessage, aObjId ) ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
312 |
error = EFalse; |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
313 |
} |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
314 |
break; |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
315 |
} |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
316 |
} |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
317 |
return error; |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
318 |
|
0 | 319 |
} |
320 |
||
321 |
DECLARE_STANDARD_EXTENSION() |
|
322 |
{ |
|
323 |
Kern::Printf( "ISI Router extension>" ); |
|
324 |
// Create a container extension |
|
325 |
DISIRouter* extension = new DISIRouter(); |
|
326 |
TRACE_ASSERT( extension ); |
|
327 |
Kern::Printf( "ISI Router extension<" ); |
|
328 |
return extension ? KErrNone : KErrNoMemory; |
|
329 |
} |
|
330 |
||
331 |
DECLARE_EXTENSION_LDD() |
|
332 |
{ |
|
333 |
Kern::Printf( "ISI Router ldd>" ); |
|
334 |
DLogicalDevice* device = new DISIDevice; |
|
335 |
TRACE_ASSERT( device ); |
|
336 |
Kern::Printf( "ISI Router ldd 0x%x<", device ); |
|
337 |
return( device ); |
|
338 |
} |
|
339 |
||
7
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
340 |
//From objectapi |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
341 |
EXPORT_C MISIObjectRouterIf* MISIObjectRouterIf::Connect( const TInt32 aUID, TUint8& aObjId, MISIRouterObjectIf* aCallback ) |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
342 |
{ |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
343 |
C_TRACE( ( _T( "MISIObjectRouterIf::Connect %d 0x%x 0x%x>" ), aUID, aObjId, aCallback ) ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
344 |
|
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
345 |
Kern::Printf( "ISIRouter::Connect" ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
346 |
if( aUID == KNameServiceUID ) |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
347 |
{ |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
348 |
C_TRACE( ( _T( "MISIObjectRouterIf was nameservice" ) ) ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
349 |
DISIRouter::iSelfPtr->iNameService = aCallback; |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
350 |
aObjId = PN_OBJ_ROUTING_REQ; // 0x00 |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
351 |
} |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
352 |
else if( aUID == KCommunicationManagerUID ) |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
353 |
{ |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
354 |
C_TRACE( ( _T( "MISIObjectRouterIf was communicationmanager" ) ) ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
355 |
DISIRouter::iSelfPtr->iCommunicationManager = aCallback; |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
356 |
aObjId = PN_OBJ_EVENT_MULTICAST; // 0x20 |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
357 |
} |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
358 |
else |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
359 |
{ |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
360 |
C_TRACE( ( _T( "MISIObjectRouterIf unknown object api client" ) ) ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
361 |
} |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
362 |
MISIObjectRouterIf* tmp = DISIRouter::iSelfPtr; |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
363 |
C_TRACE( ( _T( "MISIObjectRouterIf::Connect %d 0x%x 0x%x<" ), aUID, aObjId, aCallback ) ); |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
364 |
return tmp; |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
365 |
} |
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
366 |