|
1 // Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies). |
|
2 // All rights reserved. |
|
3 // This component and the accompanying materials are made available |
|
4 // under the terms of the License "Symbian Foundation License v1.0" |
|
5 // which accompanies this distribution, and is available |
|
6 // at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". |
|
7 // |
|
8 // Initial Contributors: |
|
9 // Nokia Corporation - initial contribution. |
|
10 // |
|
11 // Contributors: |
|
12 // |
|
13 // Description: |
|
14 // |
|
15 |
|
16 |
|
17 |
|
18 // INCLUDES |
|
19 #include "ctlbsclientpostp188.h" |
|
20 #include <EPos_CPosModules.h> |
|
21 #include <EPos_CPosModuleUpdate.h> |
|
22 |
|
23 // CONSTANTS |
|
24 const TInt32 KUidNonExistingPsy = 0x01111111; |
|
25 const TInt KMaxMessageSize = 200; |
|
26 |
|
27 // ================= MEMBER FUNCTIONS ======================= |
|
28 |
|
29 // --------------------------------------------------------- |
|
30 // Constructor. |
|
31 // --------------------------------------------------------- |
|
32 CT_LbsClientPosTp188::CT_LbsClientPosTp188(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent) |
|
33 { |
|
34 _LIT(KTestName,"Tp188 - Get Module Status"); |
|
35 SetTestStepName(KTestName); |
|
36 } |
|
37 |
|
38 // --------------------------------------------------------- |
|
39 // Destructor. |
|
40 // --------------------------------------------------------- |
|
41 CT_LbsClientPosTp188::~CT_LbsClientPosTp188() |
|
42 { |
|
43 } |
|
44 |
|
45 // --------------------------------------------------------- |
|
46 // CT_LbsClientPosTp188::StartL |
|
47 // |
|
48 // (other items were commented in a header). |
|
49 // --------------------------------------------------------- |
|
50 // |
|
51 void CT_LbsClientPosTp188::StartL() |
|
52 { |
|
53 SetupPsyL(iUidTestStatusPsy); |
|
54 |
|
55 // Synchronous request to start server. |
|
56 ConnectL(); |
|
57 |
|
58 // Request status information for PSY. |
|
59 TPositionModuleStatus moduleStatus = TPositionModuleStatus(); |
|
60 TInt err = iPosServer.GetModuleStatus(moduleStatus, iUidTestStatusPsy); |
|
61 _LIT(KErrFailStatus1, "1. Error when getting module status, error code = %d"); |
|
62 AssertTrueL(err == KErrNone, KErrFailStatus1, err); |
|
63 |
|
64 iModuleStatus.SetDeviceStatus(TPositionModuleStatus::EDeviceInactive); |
|
65 iModuleStatus.SetDataQualityStatus(TPositionModuleStatus::EDataQualityUnknown); |
|
66 |
|
67 CheckModuleStatusL(moduleStatus); |
|
68 |
|
69 // Disable PSY. |
|
70 CPosModules* db = CPosModules::OpenL(); |
|
71 CleanupStack::PushL(db); |
|
72 CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC(); |
|
73 |
|
74 moduleUpdate->SetUpdateAvailability(EFalse); |
|
75 db->UpdateModuleL(iUidTestStatusPsy, *moduleUpdate); |
|
76 |
|
77 User::After(1000000); |
|
78 |
|
79 // Request status information for PSY. |
|
80 err = iPosServer.GetModuleStatus(moduleStatus, iUidTestStatusPsy); |
|
81 _LIT(KErrFailStatus2, "2. Error when getting module status, error code = %d"); |
|
82 AssertTrueL(err == KErrNone, KErrFailStatus2, err); |
|
83 |
|
84 iModuleStatus.SetDeviceStatus(TPositionModuleStatus::EDeviceDisabled); |
|
85 iModuleStatus.SetDataQualityStatus(TPositionModuleStatus::EDataQualityUnknown); |
|
86 |
|
87 User::After(1000000); |
|
88 |
|
89 CheckModuleStatusL(moduleStatus); |
|
90 |
|
91 // Request status information for a non-existing PSY. |
|
92 TUid aNonExistingUid; |
|
93 aNonExistingUid.iUid = KUidNonExistingPsy; |
|
94 err = iPosServer.GetModuleStatus(moduleStatus, aNonExistingUid); |
|
95 _LIT(KErrFailStatus3, "3. Error when getting module status, error code = %d"); |
|
96 AssertTrueL(err == KErrNotFound, KErrFailStatus3, err); |
|
97 |
|
98 SetupPsyL(iUidTestStatusPsy); |
|
99 |
|
100 // Request to be notified about Module Status Events. |
|
101 TPositionModuleStatusEvent statusEvent; |
|
102 TRequestStatus status = KErrNone; |
|
103 statusEvent.SetRequestedEvents(TPositionModuleStatusEvent::EEventDeviceStatus); // Obligatory to set Requested events, EEventAll works also. |
|
104 iPosServer.NotifyModuleStatusEvent(statusEvent, status, iUidTestStatusPsy); |
|
105 |
|
106 // Open a subsession to PSY. |
|
107 err = OpenPositionerByName(iUidTestStatusPsy); |
|
108 _LIT(KErrFailStatus4, "4. Error when opening module , error code = %d"); |
|
109 AssertTrueL(err == KErrNone, KErrFailStatus4, err); |
|
110 |
|
111 CleanupStack::PopAndDestroy(moduleUpdate); |
|
112 CleanupStack::PopAndDestroy(db); |
|
113 |
|
114 User::WaitForRequest(status); |
|
115 _LIT(KErrFailStatus5, "5. Error in completed request, error code = %d"); |
|
116 AssertTrueL(status.Int() == KErrNone, KErrFailStatus5, err); |
|
117 |
|
118 // Request status information for PSY. |
|
119 err = iPosServer.GetModuleStatus(moduleStatus, iUidTestStatusPsy); |
|
120 _LIT(KErrFailStatus6, "6. Error whe getting module status, error code = %d"); |
|
121 AssertTrueL(err == KErrNone, KErrFailStatus6, err); |
|
122 |
|
123 iModuleStatus.SetDeviceStatus(TPositionModuleStatus::EDeviceReady); |
|
124 iModuleStatus.SetDataQualityStatus(TPositionModuleStatus::EDataQualityNormal); |
|
125 CheckModuleStatusL(moduleStatus); |
|
126 |
|
127 ClosePositioner(); |
|
128 |
|
129 |
|
130 Disconnect(); |
|
131 |
|
132 } |
|
133 |
|
134 // --------------------------------------------------------- |
|
135 // CT_LbsClientPosTp188::CheckModuleStatus |
|
136 // |
|
137 // (other items were commented in a header). |
|
138 // --------------------------------------------------------- |
|
139 // |
|
140 void CT_LbsClientPosTp188::CheckModuleStatusL(const TPositionModuleStatus& aStatus) |
|
141 { |
|
142 TBuf<KMaxMessageSize> buf; |
|
143 _LIT(KStatus,"Checking module status"); |
|
144 INFO_PRINTF1(KStatus); |
|
145 |
|
146 _LIT(KDevSta, "Device Status (EDeviceUnknown = 0, EDeviceError = 1, EDeviceDisabled = 2, EDeviceInactive = 3, EDeviceInitialising = 4, EDeviceStandBy = 5, EDeviceReady = 6, EDeviceActive = 7) : %d"); |
|
147 buf.Format(KDevSta, aStatus.DeviceStatus()); |
|
148 INFO_PRINTF1(buf); |
|
149 buf.Zero(); |
|
150 |
|
151 _LIT(KDatQual, "Data Quality Status (EDataQualityUnknown = 0, EDataQualityLoss = 1, EDataQualityPartial = 2, EDataQualityNormal = 3) : , %d"); |
|
152 buf.Format(KDatQual, aStatus.DataQualityStatus()); |
|
153 INFO_PRINTF1(buf); |
|
154 buf.Zero(); |
|
155 |
|
156 //unused TInt myVar = iModuleStatus.DeviceStatus(); |
|
157 //unused TInt myVar2 = aStatus.DeviceStatus(); |
|
158 |
|
159 if (iModuleStatus.DeviceStatus() != aStatus.DeviceStatus() || |
|
160 iModuleStatus.DataQualityStatus() != aStatus.DataQualityStatus()) |
|
161 { |
|
162 if (iModuleStatus.DeviceStatus() != aStatus.DeviceStatus()) |
|
163 { |
|
164 _LIT(KError, "Status is not correct, Status returned %d Status expected %d"); |
|
165 buf.Format(KError, aStatus.DeviceStatus(), iModuleStatus.DeviceStatus()); |
|
166 LogErrorAndLeaveL(buf); |
|
167 } |
|
168 else |
|
169 { |
|
170 _LIT(KError , "Quality is not correct, Quality returned %d Quality expected"); |
|
171 buf.Format(KError, aStatus.DataQualityStatus(), iModuleStatus.DataQualityStatus()); |
|
172 LogErrorAndLeaveL(KError); |
|
173 } |
|
174 |
|
175 } |
|
176 } |
|
177 |
|
178 // End of file |