1179 // |
1179 // |
1180 TInt CConnMonIAP::GetBearerInfo( const TUint aConnectionId, TBearerInfo& aBearerInfo ) |
1180 TInt CConnMonIAP::GetBearerInfo( const TUint aConnectionId, TBearerInfo& aBearerInfo ) |
1181 { |
1181 { |
1182 LOGENTRFN("CConnMonIAP::GetBearerInfo()") |
1182 LOGENTRFN("CConnMonIAP::GetBearerInfo()") |
1183 TInt err( KErrNone ); |
1183 TInt err( KErrNone ); |
|
1184 TBool getBearerCalled( EFalse ); |
1184 |
1185 |
1185 // Find connection matching the given Id |
1186 // Find connection matching the given Id |
1186 TInt index = Index( aConnectionId ); |
1187 TInt index = Index( aConnectionId ); |
1187 if ( index < 0 ) |
1188 if ( index < 0 ) |
1188 { |
1189 { |
1197 LOGIT("GetBearerInfo: EBearerInfoUnknown") |
1198 LOGIT("GetBearerInfo: EBearerInfoUnknown") |
1198 err = GetBearer( |
1199 err = GetBearer( |
1199 aConnectionId, |
1200 aConnectionId, |
1200 iConnInfos[index].iBearer, |
1201 iConnInfos[index].iBearer, |
1201 iConnInfos[index].iBearerInfo ); |
1202 iConnInfos[index].iBearerInfo ); |
|
1203 getBearerCalled = ETrue; |
1202 } |
1204 } |
1203 if ( KErrNone == err ) |
1205 if ( KErrNone == err ) |
1204 { |
1206 { |
1205 // Bearer is never unknown for the external connections but |
1207 // Bearer is never unknown for the external connections but |
1206 // sometimes it is not valid (e.g. CSD/HSCSD) until connection |
1208 // sometimes it is not valid (e.g. CSD/HSCSD) until connection |
1242 iConnInfos[index].iBearerInfo.iBearer == EBearerInfoWCDMA || |
1244 iConnInfos[index].iBearerInfo.iBearer == EBearerInfoWCDMA || |
1243 iConnInfos[index].iBearerInfo.iBearer == EBearerInfoHSDPA || |
1245 iConnInfos[index].iBearerInfo.iBearer == EBearerInfoHSDPA || |
1244 iConnInfos[index].iBearerInfo.iBearer == EBearerInfoHSUPA || |
1246 iConnInfos[index].iBearerInfo.iBearer == EBearerInfoHSUPA || |
1245 iConnInfos[index].iBearerInfo.iBearer == EBearerInfoHSxPA ) ) |
1247 iConnInfos[index].iBearerInfo.iBearer == EBearerInfoHSxPA ) ) |
1246 { |
1248 { |
1247 // CSD/HSCSD info could change after the first query also |
1249 // If GetBearer() was just called, no need to do it again. |
1248 // GPRS/EdgeGPRS/WCDMA info can change. |
1250 if ( !getBearerCalled ) |
1249 TInt bearer( EBearerUnknown ); |
1251 { |
1250 TBearerInfo bearerInfo; |
1252 // CSD/HSCSD info could change after the first query also |
1251 |
1253 // GPRS/EdgeGPRS/WCDMA info can change. |
1252 LOGIT("GetBearerInfo: GetBearer() 2nd query") |
1254 TInt bearer( EBearerUnknown ); |
1253 err = GetBearer( aConnectionId, bearer, bearerInfo ); |
1255 TBearerInfo bearerInfo; |
1254 if ( ( KErrNone == err ) && ( bearerInfo.iBearer != EBearerInfoUnknown ) ) |
1256 |
1255 { |
1257 LOGIT("GetBearerInfo: GetBearer() 2nd query") |
1256 iConnInfos[index].iBearer = bearer; |
1258 err = GetBearer( aConnectionId, bearer, bearerInfo ); |
1257 iConnInfos[index].iBearerInfo = bearerInfo; |
1259 if ( ( KErrNone == err ) && ( bearerInfo.iBearer != EBearerInfoUnknown ) ) |
|
1260 { |
|
1261 iConnInfos[index].iBearer = bearer; |
|
1262 iConnInfos[index].iBearerInfo = bearerInfo; |
|
1263 } |
1258 } |
1264 } |
1259 } |
1265 } |
1260 } |
1266 } |
1261 if ( KErrNone == err ) |
1267 if ( KErrNone == err ) |
1262 { |
1268 { |