# Network selection

**Detailed Description**

This section contains APIs related to data network configuration.

- *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 ratMask

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

- struct OperatorStatus

    - Defines status of network operator

Public Members

- InUseStatus inUse = InUseStatus::UNKNOWN

    - In-use status of network operator

- RoamingStatus roaming = RoamingStatus::UNKNOWN

    - Roaming status of network operator

- ForbiddenStatus forbidden = ForbiddenStatus::UNKNOWN

    - Forbidden status of network operator

- PreferredStatus preferred = PreferredStatus::UNKNOWN

    - Preferred status of network operator

- struct NetworkScanInfo

    - Defines Network scan information

Public Members

- NetworkScanType scanType

    - Network scan type

- RatMask 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 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 activeBand

    - RF band information for a dubious cell

- DbCellCauseCodeMask causeCodeMask

    - Dubious cell cause code bit mask

- struct NrDubiousCell

    - Defines NR5G dubious cell information

Public Members

- DubiousCellInfo ci

    - NR dubious cell

- unsigned long long cgi = 0

    - Global cell ID

- NrSubcarrierSpacing spacing

    - NR subcarrier spacing

- struct LteDubiousCell

    - Defines LTE dubious cell information

Public Members

- DubiousCellInfo 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() 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 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::common::ServiceStatus getServiceStatus() = 0

    - This status indicates whether the INetworkSelectionManager 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::common::Status requestNetworkSelectionMode(SelectionModeInfoCb 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::common::Status setNetworkSelectionMode(NetworkSelectionMode selectMode, std::string mcc, std::string mnc, common::ResponseCallback 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::common::Status requestPreferredNetworks(PreferredNetworksCallback 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::common::Status setPreferredNetworks(std::vector&lt;PreferredNetworkInfo&gt; preferredNetworksInfo, bool clearPrevious, common::ResponseCallback 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::common::Status performNetworkScan(NetworkScanCallback 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( common::ResponseCallback 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::common::Status performNetworkScan(NetworkScanInfo info, common::ResponseCallback 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). 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

- Parameters:

    - - **info** – **[in]** Provides network scan type and if the network scan type is user prefered RAT, includes RAT(s) information. NetworkScanInfo
- **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::common::ErrorCode setLteDubiousCell(const std::vector&lt;LteDubiousCell&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.

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

- Returns:

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

- virtual telux::common::ErrorCode setNrDubiousCell(const std::vector&lt;NrDubiousCell&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.

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

- Returns:

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

- virtual telux::common::ErrorCode abortNetworkScan() = 0

    - Abort an ongoing network scan operation that was previously initiated using telux::tel::INetworkSelectionManager::performNetworkScan(NetworkScanInfo info, common::ResponseCallback 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), 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::common::Status registerListener(std::weak\_ptr&lt;INetworkSelectionListener&gt; listener) = 0

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

- Parameters:

    - **listener** – **[in]** Pointer of INetworkSelectionListener object that processes the notification

- Returns:

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

- virtual telux::common::Status deregisterListener(std::weak\_ptr&lt;INetworkSelectionListener&gt; listener) = 0

    - Deregister the previously added listener.

- Parameters:

    - **listener** – **[in]** Previously registered INetworkSelectionListener that needs to be removed

- Returns:

    - Status of removeListener success or suitable status code

- virtual telux::common::Status requestNetworkSelectionMode(SelectionModeResponseCallback 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( 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 operatorStatus)

    - 

- OperatorInfo(std::string networkName, std::string mcc, std::string mnc, RadioTechnology rat, OperatorStatus 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 getRat()

    - Get radio access technology.

- Returns:

    - Radio access technology(RAT) RadioTechnology.

- OperatorStatus getStatus()

    - Get status of operator.

- Returns:

    - status of the operator OperatorStatus.

Private Members

- std::string networkName\_

    - 

- std::string mcc\_

    - 

- std::string mnc\_

    - 

- RadioTechnology rat\_

    - 

- OperatorStatus operatorStatus\_

    -

- class INetworkSelectionListener : public telux::common::IServiceStatusListener

    - 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 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

- inline virtual void onNetworkScanResults(NetworkScanStatus scanStatus, std::vector&lt;telux::tel::OperatorInfo&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
- **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 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( NetworkModeInfo info) API instead.

- Parameters:

    - **mode** – **[in]** Network selection mode. NetworkSelectionMode

- inline virtual ~INetworkSelectionListener()

    - Destructor of INetworkSelectionListener

Last Published: Apr 14, 2026

Previous Topic
 
Data Next Topic

Diagnostics