|
1 /* |
|
2 * Copyright (c) 2002-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 "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: This module contains the implementation of CNWGsmMessageHandler |
|
15 * class member functions. |
|
16 * |
|
17 */ |
|
18 |
|
19 |
|
20 |
|
21 // INCLUDE FILES |
|
22 #include "NWHandlingEngine.h" |
|
23 #include "CNWGsmMessageHandler.h" |
|
24 #include "CNWNetworkFailureMonitor.h" |
|
25 #include "NWLogger.h" |
|
26 |
|
27 |
|
28 // CONSTANTS |
|
29 // Number of monitors in Network Handling module and the running |
|
30 // storage slot number in iMonitorContainer pointer array |
|
31 |
|
32 #ifdef RD_PHONE_NG |
|
33 const TInt KNWNetworkFailureMonitor = 4; |
|
34 #else // RD_PHONE_NG |
|
35 const TInt KNWNetworkFailureMonitor = 3; |
|
36 #endif // RD_PHONE_NG |
|
37 |
|
38 |
|
39 // ============================ MEMBER FUNCTIONS ============================== |
|
40 |
|
41 // ---------------------------------------------------------------------------- |
|
42 // CNWGsmMessageHandler::CNWGsmMessageHandler |
|
43 // C++ default constructor can NOT contain any code, that |
|
44 // might leave. |
|
45 // ---------------------------------------------------------------------------- |
|
46 // |
|
47 CNWGsmMessageHandler::CNWGsmMessageHandler( |
|
48 CNWGsmSessionImplementation& aNetworkData, |
|
49 MNWMessageObserver& aMessageObserver, |
|
50 TNWInfo& aNWInfo ) |
|
51 : CNWMessageHandler( aNetworkData, |
|
52 aMessageObserver, |
|
53 aNWInfo ) |
|
54 { |
|
55 NWLOGSTRING( KNWOBJECT, "NW: CNWNetworkViagBaseEngine::CNWGsmMessageHand\ |
|
56 ler() Begin " ); |
|
57 |
|
58 iNetworkInfo.iViagIndicatorType = ENWViagIndicatorTypeNone; |
|
59 iNetworkInfo.iMCNIndicatorType = ENWMCNIndicatorTypeNone; |
|
60 |
|
61 NWLOGSTRING( KNWOBJECT, "NW: CNWNetworkViagBaseEngine::CNWGsmMessageHand\ |
|
62 ler() End " ); |
|
63 } |
|
64 |
|
65 // ---------------------------------------------------------------------------- |
|
66 // CNWGsmMessageHandler::ConstructL |
|
67 // Symbian 2nd phase constructor can leave. |
|
68 // ---------------------------------------------------------------------------- |
|
69 // |
|
70 void CNWGsmMessageHandler::ConstructL() |
|
71 { |
|
72 NWLOGSTRING( KNWOBJECT, |
|
73 "NW: CNWNetworkViagBaseEngine::ConstructL() Begin " ); |
|
74 |
|
75 //Initializes base class member variables |
|
76 BaseConstructL(); |
|
77 |
|
78 iCellReselectionHandler = CNWGsmNetworkCellReselectionHandler::NewL( |
|
79 *this, |
|
80 iPhone, |
|
81 iNetworkInfo, |
|
82 iCustomAPI, |
|
83 iInterNetworkInfo ); |
|
84 |
|
85 // Create CNWNetworkFailureMonitor object and insert it to monitor container. |
|
86 User::LeaveIfError( iMonitorContainer.Insert( |
|
87 ( new ( ELeave ) CNWNetworkFailureMonitor( *this, iPhone, iNetworkInfo, iCustomAPI ) ), |
|
88 KNWNetworkFailureMonitor ) ); |
|
89 |
|
90 NWLOGSTRING( KNWOBJECT, |
|
91 "NW: CNWNetworkViagBaseEngine::ConstructL() End " ); |
|
92 } |
|
93 |
|
94 // ---------------------------------------------------------------------------- |
|
95 // CNWGsmMessageHandler::NewL |
|
96 // Two-phased constructor. |
|
97 // ---------------------------------------------------------------------------- |
|
98 // |
|
99 CNWGsmMessageHandler* CNWGsmMessageHandler::NewL( |
|
100 CNWGsmSessionImplementation& aNetworkData, |
|
101 MNWMessageObserver& aMessageObserver, |
|
102 TNWInfo& aNWInfo ) |
|
103 { |
|
104 NWLOGSTRING( KNWOBJECT, |
|
105 "NW: CNWNetworkViagBaseEngine::NewL() Begin " ); |
|
106 |
|
107 CNWGsmMessageHandler* self = new( ELeave ) CNWGsmMessageHandler( |
|
108 aNetworkData, |
|
109 aMessageObserver, |
|
110 aNWInfo ); |
|
111 |
|
112 CleanupStack::PushL( self ); |
|
113 self->ConstructL(); |
|
114 CleanupStack::Pop( self ); |
|
115 |
|
116 NWLOGSTRING( KNWOBJECT, |
|
117 "NW: CNWNetworkViagBaseEngine::NewL() End " ); |
|
118 |
|
119 return self; |
|
120 } |
|
121 |
|
122 |
|
123 // Destructor |
|
124 CNWGsmMessageHandler::~CNWGsmMessageHandler() |
|
125 { |
|
126 NWLOGSTRING( KNWOBJECT, |
|
127 "NW: CNWNetworkViagBaseEngine::~CNWGsmMessageHandler() Begin " ); |
|
128 |
|
129 delete iCellReselectionHandler; |
|
130 |
|
131 NWLOGSTRING( KNWOBJECT, |
|
132 "NW: CNWNetworkViagBaseEngine::~CNWGsmMessageHandler() End " ); |
|
133 } |
|
134 |
|
135 |
|
136 // ---------------------------------------------------------------------------- |
|
137 // CNWGsmMessageHandler::SendMessage |
|
138 // Reroutes messages to the Client object |
|
139 // The function controls the starting of the monitors other than registration |
|
140 // status monitor. Other monitors are starter when registration status message |
|
141 // is received and phone has not been registered. |
|
142 // (other items were commented in a header). |
|
143 // ---------------------------------------------------------------------------- |
|
144 // |
|
145 void CNWGsmMessageHandler::SendMessage( |
|
146 MNWMessageObserver::TNWMessages aMessage ) // send message |
|
147 { |
|
148 NWLOGSTRING( KNWMESOUT, |
|
149 "NW: CNWGsmMessageHandler::SendMessage() Begin" ); |
|
150 if ( !iIsRegistered && ( aMessage == |
|
151 MNWMessageObserver::ENWMessageNetworkRegistrationStatusChange ) ) |
|
152 { |
|
153 // Start other monitors only after we are successfully |
|
154 // registered to network. |
|
155 iMonitorContainer[ KNWNetworkFailureMonitor ]->Initialise(); |
|
156 } |
|
157 |
|
158 if ( aMessage == MNWMessageObserver::ENWMessageNetworkInfoChange ) |
|
159 { |
|
160 NWLOGSTRING( KNWMESOUT, |
|
161 "NW: CNWGsmMessageHandler::SendMessage: Handle CellReselection" ); |
|
162 iCellReselectionHandler->HandleCellReselection(); |
|
163 |
|
164 CNWMessageHandler::SendMessage( |
|
165 MNWMessageObserver::ENWMessageNetworkCellReselection ); |
|
166 } |
|
167 |
|
168 CNWMessageHandler::SendMessage( aMessage ); |
|
169 |
|
170 NWLOGSTRING( KNWMESOUT, |
|
171 "NW: CNWGsmMessageHandler::SendMessage() End" ); |
|
172 } |
|
173 |
|
174 |
|
175 // ---------------------------------------------------------------------------- |
|
176 // CNWGsmMessageHandler::HandleSubscriberIdChange |
|
177 // Method is called, if subscriber ID ( IMSI code ) is changed. |
|
178 // ---------------------------------------------------------------------------- |
|
179 // |
|
180 void CNWGsmMessageHandler::HandleSubscriberIdChange() |
|
181 { |
|
182 NWLOGSTRING( KNWMESOUT, |
|
183 "NW: CNWGsmMessageHandler::HandleSubscriberIdChange() Begin" ); |
|
184 |
|
185 iCellReselectionHandler->HandleCellReselection(); |
|
186 |
|
187 NWLOGSTRING( KNWMESOUT, |
|
188 "NW: CNWGsmMessageHandler::HandleSubscriberIdChange() End" ); |
|
189 } |
|
190 |
|
191 // ---------------------------------------------------------------------------- |
|
192 // CNWGsmMessageHandler::HandleUpdateReadingStatus |
|
193 // Updates Operator name's read status |
|
194 // ---------------------------------------------------------------------------- |
|
195 // |
|
196 void CNWGsmMessageHandler::HandleUpdateReadingStatus( |
|
197 const TNWRead& aElementFile, TBool aReadStatus ) |
|
198 { |
|
199 NWLOGSTRING( KNWMESOUT, |
|
200 "NW: CNWGsmMessageHandler::HandleUpdateReadingStatus() Begin" ); |
|
201 |
|
202 iCellReselectionHandler->UpdateReadingStatus( aElementFile, aReadStatus ); |
|
203 |
|
204 NWLOGSTRING( KNWMESOUT, |
|
205 "NW: CNWGsmMessageHandler::HandleUpdateReadingStatus() End" ); |
|
206 } |
|
207 |
|
208 // End of File |