connectionmonitoring/connmon/connectionmonitor/src/ConnMonIAP.cpp
branchRCL_3
changeset 15 4dc3bb0099b0
parent 8 2e6c4614c58e
child 55 fc7b30ed2058
equal deleted inserted replaced
13:68f0c7cd80ec 15:4dc3bb0099b0
  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             {