author | mikaruus |
Tue, 19 Oct 2010 13:16:20 +0300 | |
changeset 9 | 8486d82aef45 |
parent 7 | fa67e03b87df |
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: |
|
5
8ccc39f9d787
New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
13 |
* |
8ccc39f9d787
New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
14 |
* Description: |
0 | 15 |
* |
16 |
*/ |
|
17 |
||
18 |
#ifndef __ISICLTRANSCEIVER_H__ |
|
19 |
#define __ISICLTRANSCEIVER_H__ |
|
20 |
||
9 | 21 |
#include "misilinkrouterif.h" // For MISILinkRouterIf |
22 |
#include "isiinternaldefs.h" // For KMaxNumOfObjId |
|
23 |
#include "misirouterservicerouterif.h" // For MISIRouterServiceRouterIf |
|
7
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
5
diff
changeset
|
24 |
|
0 | 25 |
class MISIRouterLinkIf; |
26 |
class DISIRouter; |
|
9 | 27 |
class DIsiRouterService; |
28 |
class DISIMsgQueue; |
|
0 | 29 |
|
9 | 30 |
NONSHARABLE_CLASS( DISICLTransceiver ) : public DBase, public MISILinkRouterIf, public MISIRouterServiceRouterIf |
0 | 31 |
{ |
5
8ccc39f9d787
New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
32 |
|
0 | 33 |
public: |
5
8ccc39f9d787
New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
34 |
|
9 | 35 |
DISICLTransceiver( DISIRouter& aRouter, TDfcQue* aThreadPtr ); |
5
8ccc39f9d787
New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
36 |
|
0 | 37 |
~DISICLTransceiver(); |
5
8ccc39f9d787
New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
38 |
|
9 | 39 |
// See comments from MISILinkRouterIf |
40 |
TInt RouteISIMessage( TDes8& aMessage, TBool aDynamicSenderCheckNeeded = ETrue ); |
|
41 |
||
42 |
void ReceiveISIMessage( const TDesC8& aMessage, const TUint8 aTrxId ); |
|
43 |
||
44 |
// See comments from MISILinkRouterIf |
|
45 |
void StateChanged(); |
|
46 |
||
47 |
// From MISIRouterServiceRouterIf |
|
48 |
void GetDeviceConnectionStates( RArray<TUint8>& aDeviceIdentifierList, const TBool aConnectedDevice ); |
|
49 |
||
50 |
private: |
|
51 |
||
52 |
static void StateChangedDfc( TAny* aPtr ); |
|
53 |
||
54 |
static void RxQueueDfc( TAny* aPtr ); |
|
55 |
||
0 | 56 |
TInt ValidateISIMessage( TDes8& aMessage ); |
5
8ccc39f9d787
New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
57 |
|
9 | 58 |
void ReadStateChanges(); |
5
8ccc39f9d787
New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
59 |
|
9 | 60 |
// Responsibility to deallocate the message is transferred. |
61 |
TInt SendCommIsaEntityNotReachableResp( TDes8& aNotDeliveredMessage ); |
|
62 |
||
63 |
TBool DynamicDevice( const TUint8 aDevId ); |
|
64 |
||
65 |
void UpdateDynamicDeviceTable( const TUint8 aDynamicDevId, const TUint8 aStaticDevId ); |
|
66 |
||
67 |
void DynamicToStaticDevice( TUint8& aRxDev ); |
|
5
8ccc39f9d787
New release based on our 2010wk02 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
0
diff
changeset
|
68 |
|
9 | 69 |
NONSHARABLE_CLASS( DISIDevice ) : public DBase |
70 |
{ |
|
71 |
public: |
|
72 |
||
73 |
DISIDevice( const TUint8 aDeviceIdentifier, MISIRouterLinkIf* aLink ); |
|
74 |
~DISIDevice(); |
|
0 | 75 |
|
9 | 76 |
MISIRouterLinkIf* GetLink(); |
77 |
TUint8 GetDeviceIdentifier(); |
|
78 |
TBool GetDeviceState(); |
|
79 |
TBool GetDeviceOldState(); |
|
80 |
void SetDeviceOldState( TBool aConnected ); |
|
81 |
// Shall be called before accessing operations. |
|
82 |
void LockDeviceFM(); |
|
83 |
// Shall be called after accessing operations. |
|
84 |
void FreeDeviceFM(); |
|
85 |
||
86 |
private: |
|
87 |
||
88 |
// Owned, synch internally |
|
89 |
NFastMutex* iShDeviceMutex; |
|
90 |
// Not owned, synch by above mutex. |
|
91 |
MISIRouterLinkIf* iShLink; |
|
92 |
// Synch by above mutex. |
|
93 |
TUint8 iShDeviceIdentifier; |
|
94 |
// Synch by above mutex. |
|
95 |
TBool iShOldDeviceConnectedState; |
|
96 |
||
97 |
}; |
|
98 |
||
99 |
//private: |
|
100 |
NONSHARABLE_CLASS( TDynamicDevice ) |
|
0 | 101 |
{ |
9 | 102 |
public: |
103 |
TDynamicDevice( const TUint8 aDynamicDevId, TUint8 aStaticDevId ){iDynamicDevId = aDynamicDevId; iStaticDevId = aStaticDevId;}; |
|
104 |
TUint8 iDynamicDevId; |
|
105 |
TUint8 iStaticDevId; |
|
0 | 106 |
}; |
107 |
||
9 | 108 |
// Additional coding convention iSh-prefix means a member variable shared between N threads. |
109 |
// Owned, called in N thread context |
|
110 |
RPointerArray<DISIDevice> iShDevices; |
|
111 |
// Called in N thread context |
|
112 |
DISIRouter& iShRouter; |
|
113 |
// Owned, no need to synch only accessed from below DFC function. |
|
114 |
DIsiRouterService* iRouterService; |
|
115 |
// Owned, accessed from N threads no need to synch synch handled internally in TDfc class |
|
116 |
TDfc* iShStateChangedDfc; |
|
7
fa67e03b87df
New release based on our 2010wk08 release
mikaruus <mika.a.ruuskanen@nokia.com>
parents:
5
diff
changeset
|
117 |
|
9 | 118 |
TDfc* iRxQueueDfc; |
119 |
||
120 |
RArray< TDynamicDevice* > iDynamicDeviceTable; |
|
121 |
||
122 |
DISIMsgQueue* iRxQueue; |
|
123 |
||
124 |
static DMutex* iDynamicDeviceTableMutex; |
|
125 |
||
126 |
TUint8 iDevPcLastSendTrxId; |
|
127 |
TUint8 iDevPcLastActiveTrxId; |
|
0 | 128 |
}; |
129 |
||
130 |
#endif /* __ISICLTRANSCEIVER_H__ */ |
|
131 |