diff -r a2f12998bb04 -r a249528449c3 localconnectivityservice/modematplugin/src/atcopscmd.cpp --- a/localconnectivityservice/modematplugin/src/atcopscmd.cpp Fri Mar 12 15:46:58 2010 +0200 +++ b/localconnectivityservice/modematplugin/src/atcopscmd.cpp Mon Mar 15 12:43:27 2010 +0200 @@ -732,12 +732,21 @@ break; case ESetSystemNetworkBand: case EManuallyRegisterToNetworkAndChooseAccTech: - // Cannot set the access technology, so set it back to EAccTechNotSet. - // This prevents replying to queries with outdated or incorrect acc tech information. - TRACE_INFO( _L("CATCOPSCmd::RunL() couldn't set system network band, so reset access tech.")); - iAccTech = EAccTechNotSet; - // Fall through to default, because these require an error response. - + if(iRegistrationMode == EModeManualAutomatic) + { + // Manual registration failed, try automatic next. + TRACE_INFO( _L("CATCOPSCmd::RunL() registration mode manual automatic, try automatic.")); + AutomaticNetworkRegistration(); + break; + } + else + { + // Cannot set the access technology, so set it back to EAccTechNotSet. + // This prevents replying to queries with outdated or incorrect acc tech information. + TRACE_INFO( _L("CATCOPSCmd::RunL() couldn't set system network band, so reset access tech.")); + iAccTech = EAccTechNotSet; + // Fall through to default, because these require an error response. + } default: // In all other cases send back an error response. TRACE_INFO( _L("CATCOPSCmd::RunL() reply an error."));