# Network selection

**Detailed Description**

Network Selection Manager provides the interface to get and set network selection mode (Manual or Automatic), scan available networks and set and get preferred networks list.

- *group* Telematics\_network\_selection

    - Typedefs

- using DbCellCauseCodeMask = std::bitset&lt;32&gt;

    - Bitmask containing dubious cell cause code bits, e.g., a value of 0x10 represents low data rate in IMS. Multiple cause codes are possible.

Enums

- enum RatType

    - Defines network RAT type for preferred networks. Each value represents corresponding bit for RatMask bitset.

*Values:*

- enumerator UMTS

    - UMTS

- enumerator LTE

    - LTE

- enumerator LTE

    - 

- enumerator GSM

    - GSM

- enumerator GSM

    - 

- enumerator NR5G

    - NR5G

- enumerator NR5G

    -

- enum NetworkScanStatus

    - Defines the status of the network scan results

*Values:*

- enumerator COMPLETE

    - Network scan is successful and completed. No more indications are expected for the scan request

- enumerator PARTIAL

    - Network scan results are partial, further results are expected in subsequent indication

- enumerator FAILED

    - Network scan failed either due to radio link failure or it is aborted or due to problem in performing incremental search.

- enum NetworkSelectionMode

    - Defines network selection mode

*Values:*

- enumerator UNKNOWN

    - Unknown

- enumerator AUTOMATIC

    - Device registers according to provisioned mcc and mnc

- enumerator MANUAL

    - Device registers to specified network as per provided mcc and mnc

- enum InUseStatus

    - Defines in-use status of network operator

*Values:*

- enumerator UNKNOWN

    - Unknown

- enumerator CURRENT\_SERVING

    - Current serving

- enumerator AVAILABLE

    - Available

- enum RoamingStatus

    - Defines roaming status of network operator

*Values:*

- enumerator UNKNOWN

    - Unknown

- enumerator HOME

    - Home

- enumerator ROAM

    - Roaming

- enum ForbiddenStatus

    - Defines forbidden status of network operator

*Values:*

- enumerator UNKNOWN

    - Unknown

- enumerator FORBIDDEN

    - Forbidden

- enumerator NOT\_FORBIDDEN

    - Not forbidden

- enum PreferredStatus

    - Defines preferred status of network operator

*Values:*

- enumerator UNKNOWN

    - Unknown

- enumerator PREFERRED

    - Preferred

- enumerator NOT\_PREFERRED

    - Not preferred

- enum NetworkScanType

    - Defines Network scan type

*Values:*

- enumerator CURRENT\_RAT\_PREFERENCE

    - Network scan based on current RAT preference

- enumerator USER\_SPECIFIED\_RAT

    - Network scan based on user specified RAT(s)

- enumerator ALL\_RATS

    - Network scan on GSM/WCDMA/LTE/NR5G

- enum DubiousCellCauseCode

    - Defines dubious cell cause codes

*Values:*

- enumerator DUBIOUS\_CELL\_CAUSE\_CEF

    - Connection Establishment Failure

- enumerator DUBIOUS\_CELL\_CAUSE\_RLF

    - Radio Link Failure (RLF) due to poor signal, handover failure, hardware issue etc.

- enumerator DUBIOUS\_CELL\_CAUSE\_PING\_PONG

    - Device frequently switches between two or more cells due to signal fluctuations, device movement between overlapping cell coverage area etc.

- enumerator DUBIOUS\_CELL\_CAUSE\_LOW\_DATA\_RATE\_PS

    - Cell is experiencing low data rates in the packet-switched (PS) domain due to network congestion, interference etc.

- enumerator DUBIOUS\_CELL\_CAUSE\_LOW\_DATA\_RATE\_IMS

    - Cell is experiencing low data rates in the IP Multimedia Subsystem (IMS) domain due to network congestion, interference etc.

- enum NrSubcarrierSpacing

    - Defines NR subcarrier spacing type

*Values:*

- enumerator INVALID

    - 

- enumerator SCS\_15

    - Subcarrier spacing 15kHz

- enumerator SCS\_30

    - Subcarrier spacing 30kHz

- enumerator SCS\_60

    - Subcarrier spacing 60kHz

- enumerator SCS\_120

    - Subcarrier spacing 120kHz

- enumerator SCS\_240

    - Subcarrier spacing 240kHz

- struct PreferredNetworkInfo

    - Defines the preferred network information

Public Members

- uint16\_t mcc

    - mobile country code

- uint16\_t mnc

    - mobile network code

- [RatMask](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00033_1ab935ef61ce329a459f2a21ca4ce71805.html#_CPPv4N5telux3tel7RatMaskE) ratMask

    - bit mask denotes which of the radio access technologies are set

- struct OperatorStatus

    - Defines status of network operator

Public Members

- [InUseStatus](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel11InUseStatusE) inUse = [InUseStatus](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel11InUseStatusE)::[UNKNOWN](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel11InUseStatus7UNKNOWNE)

    - In-use status of network operator

- [RoamingStatus](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel13RoamingStatusE) roaming = [RoamingStatus](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel13RoamingStatusE)::[UNKNOWN](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel13RoamingStatus7UNKNOWNE)

    - Roaming status of network operator

- [ForbiddenStatus](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel15ForbiddenStatusE) forbidden = [ForbiddenStatus](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel15ForbiddenStatusE)::[UNKNOWN](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel15ForbiddenStatus7UNKNOWNE)

    - Forbidden status of network operator

- [PreferredStatus](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel15PreferredStatusE) preferred = [PreferredStatus](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel15PreferredStatusE)::[UNKNOWN](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel15PreferredStatus7UNKNOWNE)

    - Preferred status of network operator

- struct NetworkScanInfo

    - Defines Network scan information

Public Members

- [NetworkScanType](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel15NetworkScanTypeE) scanType

    - Network scan type

- [RatMask](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00033_1ab935ef61ce329a459f2a21ca4ce71805.html#_CPPv4N5telux3tel7RatMaskE) ratMask

    - Bit mask denotes which of the radio access technologies are set. ratMask is valid/set only when scanType is provided as NetworkScanType::USER\_SPECIFIED\_RAT

- struct NetworkModeInfo

    - Defines network selection mode information.

Public Members

- [NetworkSelectionMode](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel20NetworkSelectionModeE) mode

    - 

- std::string mcc

    - Mobile Country Code (Applicable only for MANUAL selection mode).

- std::string mnc

    - Mobile Network Code (Applicable only for MANUAL selection mode).

- struct DubiousCellInfo

    - Defines dubious cell information

Public Members

- std::string mcc

    - Mobile country code

- std::string mnc

    - Mobile network code

- unsigned int arfcn

    - Absolute radio-frequency channel number

- unsigned int pci

    - Physical cell identity

- [RFBand](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel6RFBandE) activeBand

    - RF band information for a dubious cell

- [DbCellCauseCodeMask](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00025_1ga8ed390c1a55255df3eed69ca4bbbb501.html#_CPPv4N5telux3tel19DbCellCauseCodeMaskE) causeCodeMask

    - Dubious cell cause code bit mask

- struct NrDubiousCell

    - Defines NR5G dubious cell information

Public Members

- [DubiousCellInfo](https://docs.qualcomm.com/doc/80-PF458-2/topic/struct_a00720.html#_CPPv4N5telux3tel15DubiousCellInfoE) ci

    - NR dubious cell

- unsigned long long cgi = 0

    - Global cell ID

- [NrSubcarrierSpacing](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel19NrSubcarrierSpacingE) spacing

    - NR subcarrier spacing

- struct LteDubiousCell

    - Defines LTE dubious cell information

Public Members

- [DubiousCellInfo](https://docs.qualcomm.com/doc/80-PF458-2/topic/struct_a00720.html#_CPPv4N5telux3tel15DubiousCellInfoE) ci

    - LTE dubious cell

- unsigned int cgi = 0

    - Global cell ID

- class INetworkSelectionManager

    - Network Selection Manager class provides the interface to get and set network selection mode, preferred network list and scan available networks.

Public Functions

- virtual bool isSubsystemReady() = 0

    - Checks the status of network subsystem and returns the result.

Deprecated Use [INetworkSelectionManager::getServiceStatus()](https://docs.qualcomm.com/doc/80-PF458-2/topic/net.html#a00723_1af3d3194a908a54d9acc50afe9e7eaaf5) API.

- Returns:

    - True if network subsystem is ready for service otherwise false.

- virtual std::future&lt;bool&gt; onSubsystemReady() = 0

    - Wait for network subsystem to be ready.

Deprecated Use InitResponseCb in [PhoneFactory::getNetworkSelectionManager](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00736_1a12cac3e4a17d17cf138a6cd632ac3dec) instead, to get notified about subsystem readiness.

- Returns:

    - A future that caller can wait on to be notified when network subsystem is ready.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[ServiceStatus](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common13ServiceStatusE) getServiceStatus() = 0

    - This status indicates whether the [INetworkSelectionManager](https://docs.qualcomm.com/doc/80-PF458-2/topic/net.html#a00723) object is in a usable state.

- Returns:

    - SERVICE\_AVAILABLE - If Serving System manager is ready for service. SERVICE\_UNAVAILABLE - If Serving System manager is temporarily unavailable. SERVICE\_FAILED - If Serving System manager encountered an irrecoverable failure.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) requestNetworkSelectionMode([SelectionModeInfoCb](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00033_1a4f7396fd4812a9400d431ec5414b6673.html#_CPPv4N5telux3tel19SelectionModeInfoCbE) callback) = 0

    - Get current network selection mode (i.e Manual or Automatic) asynchronously.

On platforms with Access control enabled, Caller needs to have TELUX\_TEL\_NETWORK\_SELECTION\_READ permission to invoke this API successfully.

- Parameters:

    - **callback** – **[in]** Callback function to get the response of get network selection mode request.

- Returns:

    - Status of requestNetworkSelectionMode i.e. success or suitable error code.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) setNetworkSelectionMode([NetworkSelectionMode](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel20NetworkSelectionModeE) selectMode, std::string mcc, std::string mnc, [common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00236_1a8f614f0a0eeca90c94dad1967ca93bcd.html#_CPPv4N5telux6common16ResponseCallbackE) callback = nullptr) = 0

    - Set current network selection mode and receive the response asynchronously.

On platforms with Access control enabled, Caller needs to have TELUX\_TEL\_NETWORK\_SELECTION\_OPS permission to invoke this API successfully.

Note

This API is not supported for the NTN network.

- Parameters:

    - - **selectMode** – **[in]** Selection mode for a network i.e. automatic or manual. If selection mode is automatic then MCC and MNC are ignored. If it is manual, client has to explicitly pass MCC and MNC as arguments.
- **callback** – **[in]** Optional callback function to get the response of set network selection mode request.
- **mcc** – **[in]** Mobile Country Code (Applicable only for MANUAL selection mode).
- **mnc** – **[in]** Mobile Network Code (Applicable only for MANUAL selection mode).

- Returns:

    - Status of setNetworkSelectionMode i.e. success or suitable error code.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) requestPreferredNetworks([PreferredNetworksCallback](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00033_1afc868b85b18948314201dbc962af7f15.html#_CPPv4N5telux3tel25PreferredNetworksCallbackE) callback) = 0

    - Get 3GPP preferred network list and static 3GPP preferred network list asynchronously. Higher priority networks appear first in the list. The networks that appear in the 3GPP Preferred Networks list get higher priority than the networks in the static 3GPP preferred networks list.

On platforms with Access control enabled, Caller needs to have TELUX\_TEL\_NETWORK\_SELECTION\_READ permission to invoke this API successfully.

- Parameters:

    - **callback** – **[in]** Callback function to get the response of get preferred networks request.

- Returns:

    - Status of requestPreferredNetworks i.e. success or suitable error code.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) setPreferredNetworks(std::vector&lt;[PreferredNetworkInfo](https://docs.qualcomm.com/doc/80-PF458-2/topic/struct_a00716.html#_CPPv4N5telux3tel20PreferredNetworkInfoE)&gt; preferredNetworksInfo, bool clearPrevious, [common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00236_1a8f614f0a0eeca90c94dad1967ca93bcd.html#_CPPv4N5telux6common16ResponseCallbackE) callback = nullptr) = 0

    - Set 3GPP preferred network list and receive the response asynchronously. It overrides the existing preferred network list. The preferred network list affects network selection selection when automatic registration is performed by the device. Higher priority networks should appear first in the list.

On platforms with Access control enabled, Caller needs to have TELUX\_TEL\_NETWORK\_SELECTION\_OPS permission to invoke this API successfully.

Note

This API is not supported for the NTN network.

- Parameters:

    - - **preferredNetworksInfo** – **[in]** List of 3GPP preferred networks.
- **clearPrevious** – **[in]** If flag is false then new 3GPP preferred network list is appended to existing preferred network list. If flag is true then old list is flushed and new 3GPP preferred network list is added.
- **callback** – **[in]** Callback function to get the response of set preferred network list request.

- Returns:

    - Status of setPreferredNetworks i.e. success or suitable error code.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) performNetworkScan([NetworkScanCallback](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00033_1af518d7c5278d2fe68d2fe856f87f1b8a.html#_CPPv4N5telux3tel19NetworkScanCallbackE) callback) = 0

    - Perform the network scan and returns a list of available networks.

On platforms with Access control enabled, Caller needs to have TELUX\_TEL\_NETWORK\_SELECTION\_OPS permission to invoke this API successfully.

Deprecated Use [INetworkSelectionManager::performNetworkScan](https://docs.qualcomm.com/doc/80-PF458-2/topic/net.html#a00723_1ad64f75ed767aebb2f54076205203cbdc)( [common::ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00236_1a8f614f0a0eeca90c94dad1967ca93bcd.html#a00236_1a8f614f0a0eeca90c94dad1967ca93bcd) callback) API instead

- Parameters:

    - **callback** – **[in]** Callback function to get the response of perform network scan request

- Returns:

    - Status of performNetworkScan i.e. success or suitable error code.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) performNetworkScan([NetworkScanInfo](https://docs.qualcomm.com/doc/80-PF458-2/topic/struct_a00718.html#_CPPv4N5telux3tel15NetworkScanInfoE) info, [common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00236_1a8f614f0a0eeca90c94dad1967ca93bcd.html#_CPPv4N5telux6common16ResponseCallbackE) callback = nullptr) = 0

    - Perform the network scan. The available networks list is returned incrementally as they become available, without waiting for the entire scan to complete through the indication API ([INetworkSelectionListener::onNetworkScanResults](https://docs.qualcomm.com/doc/80-PF458-2/topic/net.html#a00725_1a05fe2195e718d7efaa89e31ecfcfbc20)). The scan status in indication will indicate if its a partial result or complete result.

On platforms with Access control enabled, Caller needs to have TELUX\_TEL\_NETWORK\_SELECTION\_OPS permission to invoke this API successfully.

Note

This API is not supported for the NTN network. To perform network scan on the NTN network, use [telux::satcom::INtnManager::enableCellularScan](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00588_1adf3f166e4e22920c02e83e8811ac0ad1)

- Parameters:

    - - **info** – **[in]** Provides network scan type and if the network scan type is user prefered RAT, includes RAT(s) information. [NetworkScanInfo](https://docs.qualcomm.com/doc/80-PF458-2/topic/net.html#a00718)
- **callback** – **[in]** Callback function to get the response of network scan request

- Returns:

    - Status of performNetworkScan i.e. success or suitable error code.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[ErrorCode](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common9ErrorCodeE) setLteDubiousCell(const std::vector&lt;[LteDubiousCell](https://docs.qualcomm.com/doc/80-PF458-2/topic/struct_a00722.html#_CPPv4N5telux3tel14LteDubiousCellE)&gt; &lteDbCellList) = 0

    - Set a list of LTE dubious cells to expedite the detection of data stalls. It overrides the existing dubious cell list.

Dubious cell parameters are not persistent over device reboot or subsystem restart (SSR) updated via [INetworkSelectionListener::onServiceStatusChange](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00049.html#a00049_1ac61541d5b486809fbadfad455522c785).

On platforms with Access control enabled, Caller needs to have TELUX\_TEL\_SNS\_CONFIG permission to invoke this API successfully.

Note

Eval: This is a new API and is being evaluated. It is subject to change and could break backwards compatibility.

- Parameters:

    - **lteDbCellList** – **[in]** List of LTE dubious cells. [telux::tel::LteDubiousCell](https://docs.qualcomm.com/doc/80-PF458-2/topic/net.html#a00722)

- Returns:

    - Error code which indicates whether the operation succeeded or not.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[ErrorCode](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common9ErrorCodeE) setNrDubiousCell(const std::vector&lt;[NrDubiousCell](https://docs.qualcomm.com/doc/80-PF458-2/topic/struct_a00721.html#_CPPv4N5telux3tel13NrDubiousCellE)&gt; &nrDbCellList) = 0

    - Set a list of NR dubious cells to expedite the detection of data stalls. It overrides the existing dubious cell list.

Dubious cell parameters are not persistent over device reboot or subsystem restart (SSR) updated via [INetworkSelectionListener::onServiceStatusChange](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00049.html#a00049_1ac61541d5b486809fbadfad455522c785).

On platforms with Access control enabled, Caller needs to have TELUX\_TEL\_SNS\_CONFIG permission to invoke this API successfully.

Note

Eval: This is a new API and is being evaluated. It is subject to change and could break backwards compatibility.

- Parameters:

    - **nrDbCellList** – **[in]** List of NR dubious cells. [telux::tel::NrDubiousCell](https://docs.qualcomm.com/doc/80-PF458-2/topic/net.html#a00721)

- Returns:

    - Error code which indicates whether the operation succeeded or not.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[ErrorCode](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common9ErrorCodeE) abortNetworkScan() = 0

    - Abort an ongoing network scan operation that was previously initiated using [telux::tel::INetworkSelectionManager::performNetworkScan](https://docs.qualcomm.com/doc/80-PF458-2/topic/net.html#a00723_1ad64f75ed767aebb2f54076205203cbdc)([NetworkScanInfo](https://docs.qualcomm.com/doc/80-PF458-2/topic/net.html#a00718) info, [common::ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00236_1a8f614f0a0eeca90c94dad1967ca93bcd.html#a00236_1a8f614f0a0eeca90c94dad1967ca93bcd) callback). If no network scan has been initiated prior to this call, the API returns telux::common::ErrorCode::INVALID\_OPERATION, indicating that there is no active scan to abort.

If this API is invoked after calling the deprecated [telux::tel::INetworkSelectionManager::performNetworkScan(NetworkScanCallback callback)](https://docs.qualcomm.com/doc/80-PF458-2/topic/net.html#a00723_1ad64f75ed767aebb2f54076205203cbdc), the deprecated API will receive a callback with telux::common::ErrorCode::ABORTED, indicating that the ongoing operation has been successfully aborted.

On platforms with access control enabled, the caller needs to have the TELUX\_TEL\_NETWORK\_SELECTION\_OPS permission to successfully invoke this API.

Note

Eval: This is a new API and is being evaluated. It is subject to change and could break backwards compatibility.

- Returns:

    - Status of abortNetworkScan i.e. success or suitable error code.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) registerListener(std::weak\_ptr&lt;[INetworkSelectionListener](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00725.html#_CPPv4N5telux3tel25INetworkSelectionListenerE)&gt; listener) = 0

    - Register a listener for specific updates from network access service.

- Parameters:

    - **listener** – **[in]** Pointer of [INetworkSelectionListener](https://docs.qualcomm.com/doc/80-PF458-2/topic/net.html#a00725) object that processes the notification

- Returns:

    - Status of registerListener i.e success or suitable status code.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) deregisterListener(std::weak\_ptr&lt;[INetworkSelectionListener](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00725.html#_CPPv4N5telux3tel25INetworkSelectionListenerE)&gt; listener) = 0

    - Deregister the previously added listener.

- Parameters:

    - **listener** – **[in]** Previously registered [INetworkSelectionListener](https://docs.qualcomm.com/doc/80-PF458-2/topic/net.html#a00725) that needs to be removed

- Returns:

    - Status of removeListener success or suitable status code

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) requestNetworkSelectionMode([SelectionModeResponseCallback](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00033_1afc79808691ad6bff81b0e7877a6fe46b.html#_CPPv4N5telux3tel29SelectionModeResponseCallbackE) callback) = 0

    - Get current network selection mode (i.e Manual or Automatic) asynchronously.

On platforms with Access control enabled, Caller needs to have TELUX\_TEL\_NETWORK\_SELECTION\_READ permission to invoke this API successfully.

Deprecated Use [INetworkSelectionManager::requestNetworkSelectionMode](https://docs.qualcomm.com/doc/80-PF458-2/topic/net.html#a00723_1a7df599520ac4b3953ab8f733cf2723a5)( SelectionModeInfoCb callback) API instead.

- Parameters:

    - **callback** – **[in]** Callback function to get the response of get network selection mode request.

- Returns:

    - Status of requestNetworkSelectionMode i.e. success or suitable error code.

- inline virtual ~INetworkSelectionManager()

    -

- class OperatorInfo

    - Operator Info class provides operator name, MCC, MNC and network status.

Public Functions

- OperatorInfo(std::string networkName, std::string mcc, std::string mnc, [OperatorStatus](https://docs.qualcomm.com/doc/80-PF458-2/topic/struct_a00717.html#_CPPv4N5telux3tel14OperatorStatusE) operatorStatus)

    - 

- OperatorInfo(std::string networkName, std::string mcc, std::string mnc, [RadioTechnology](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel15RadioTechnologyE) rat, [OperatorStatus](https://docs.qualcomm.com/doc/80-PF458-2/topic/struct_a00717.html#_CPPv4N5telux3tel14OperatorStatusE) operatorStatus)

    - 

- std::string getName()

    - Get Operator name or description

- Returns:

    - Operator name.

- std::string getMcc()

    - Get mcc from the operator numeric.

- Returns:

    - MCC.

- std::string getMnc()

    - Get mnc from operator numeric.

- Returns:

    - MNC.

- [RadioTechnology](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel15RadioTechnologyE) getRat()

    - Get radio access technology.

- Returns:

    - Radio access technology(RAT) [RadioTechnology](https://docs.qualcomm.com/doc/80-PF458-2/topic/enum_a00016_1gabd7d7fc7f6ad3a4717bcd782922e480e.html#a00016_1gabd7d7fc7f6ad3a4717bcd782922e480e).

- [OperatorStatus](https://docs.qualcomm.com/doc/80-PF458-2/topic/struct_a00717.html#_CPPv4N5telux3tel14OperatorStatusE) getStatus()

    - Get status of operator.

- Returns:

    - status of the operator [OperatorStatus](https://docs.qualcomm.com/doc/80-PF458-2/topic/net.html#a00717).

Private Members

- std::string networkName\_

    - 

- std::string mcc\_

    - 

- std::string mnc\_

    - 

- [RadioTechnology](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel15RadioTechnologyE) rat\_

    - 

- [OperatorStatus](https://docs.qualcomm.com/doc/80-PF458-2/topic/struct_a00717.html#_CPPv4N5telux3tel14OperatorStatusE) operatorStatus\_

    -

- class INetworkSelectionListener : public [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[IServiceStatusListener](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00049.html#_CPPv4N5telux6common22IServiceStatusListenerE)

    - Listener class for getting network selection mode change notification.

The methods in listener can be invoked from multiple different threads. Client needs to make sure that implementation is thread-safe.

Public Functions

- inline virtual void onSelectionModeChanged([NetworkModeInfo](https://docs.qualcomm.com/doc/80-PF458-2/topic/struct_a00719.html#_CPPv4N5telux3tel15NetworkModeInfoE) info)

    - This function is called whenever network selection mode is changed.

On platforms with Access control enabled, Caller needs to have TELUX\_TEL\_NETWORK\_SELECTION\_READ permission to receive this notification.

- Parameters:

    - **info** – **[in]** Provides NetworkSelectionMode, MCC and MNC. [NetworkModeInfo](https://docs.qualcomm.com/doc/80-PF458-2/topic/net.html#a00719)

- inline virtual void onNetworkScanResults([NetworkScanStatus](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel17NetworkScanStatusE) scanStatus, std::vector&lt;[telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[tel](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3telE)::[OperatorInfo](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00724.html#_CPPv4N5telux3tel12OperatorInfoE)&gt; operatorInfos)

    - This function is called in response to performNetworkScan API. This API will be invoked multiple times in case of partial network scan results. In case of network scan failure and network scan completed this API will not be invoked further.

Note

This API is not supported for the NTN network.

- Parameters:

    - - **scanStatus** – **[in]** Status of the network scan results [NetworkScanStatus](https://docs.qualcomm.com/doc/80-PF458-2/topic/enum_a00025_1ga81b9cacd0fc59852ac20f52e9cdd4f88.html#a00025_1ga81b9cacd0fc59852ac20f52e9cdd4f88)
- **operatorInfos** – **[in]** Operators info with details of network operator name, MCC, MNC, etc. In case of partial network scan results, the operator info will have the information of the new set of operator info along with previous partial network scan results.

- inline virtual void onSelectionModeChanged([NetworkSelectionMode](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel20NetworkSelectionModeE) mode)

    - This function is called whenever network selection mode is changed.

On platforms with Access control enabled, Caller needs to have TELUX\_TEL\_NETWORK\_SELECTION\_READ permission to receive this notification.

Deprecated Use [INetworkSelectionListener::onSelectionModeChanged](https://docs.qualcomm.com/doc/80-PF458-2/topic/net.html#a00725_1a1f7e68cc0aa9f6e6fac86991b89b72cf)( [NetworkModeInfo](https://docs.qualcomm.com/doc/80-PF458-2/topic/net.html#a00719) info) API instead.

- Parameters:

    - **mode** – **[in]** Network selection mode. [NetworkSelectionMode](https://docs.qualcomm.com/doc/80-PF458-2/topic/enum_a00025_1ga1c66ae455987d1f01a35d584866b056c.html#a00025_1ga1c66ae455987d1f01a35d584866b056c)

- inline virtual ~INetworkSelectionListener()

    - Destructor of [INetworkSelectionListener](https://docs.qualcomm.com/doc/80-PF458-2/topic/net.html#a00725)

Last Published: Apr 14, 2026

[Previous Topic
telux::tel::ISubscriptionManager](https://docs.qualcomm.com/bundle/publicresource/80-PF458-2/topics/subscription_management.md) [Next Topic
Serving system](https://docs.qualcomm.com/bundle/publicresource/80-PF458-2/topics/serving_system.md)