# Request and set operating mode

This sample application demonstrates how to request and set Operating mode of device

1. Implement ResponseCallback interface to receive subsystem initialization status

std::promise<telux::common::ServiceStatus> cbProm = std::promise<telux::common::ServiceStatus>();
    void initResponseCb(telux::common::ServiceStatus status) {
       if(subSystemsStatus == SERVICE_AVAILABLE) {
          std::cout << Phone Manager subsystem is ready << std::endl;
       } else if(subSystemsStatus == SERVICE_FAILED) {
          std::cout << Phone Manager subsystem initialization failed << std::endl;
       }
       cbProm.set_value(status);
    }
    Copy to clipboard

2. Get the PhoneFactory and PhoneManager instance

auto &phoneFactory = PhoneFactory::getInstance();
    auto phoneManager = phoneFactory.getPhoneManager(initResponseCb);
    if(phoneManager == NULL) {
       std::cout << " Failed to get Phone Manager instance" << std::endl;
       return -1;
    }
    Copy to clipboard

3. Wait for Phone Manager subsystem to be ready

telux::common::ServiceStatus status = cbProm.get_future().get();
    if(status != SERVICE_AVAILABLE) {
       std::cout << Unable to initialize Phone Manager subsystem << std::endl;
       return -1;
    }
    Copy to clipboard

4. Implement IPhoneListener interface to receive service state change notifications

class MyPhoneListener : public telux::tel::IPhoneListener {
    public:
        void onRadioStateChanged(int phoneId, telux::tel::RadioState radiostate) {
        }
       ~MyPhoneListener() {
       }
    }
    Copy to clipboard

4.1 Instantiate MyPhoneListener

auto myPhoneListener = std::make_shared<MyPhoneListener>();
    Copy to clipboard

5. Register for phone info updates

phoneManager->registerListener(myPhoneListener);
    Copy to clipboard

6. Implement IOperatingModeCallback interface and instantiate MyOperatingModeCallback

std::promise<bool> callbackPromise;
    telux::tel::OperatingMode operatingMode;
    class MyOperatingModeCallback : public telux::tel::IOperatingModeCallback {
    public:
       void operatingModeResponse(OperatingMode mode, telux::common::ErrorCode error) {
         if(error == ErrorCode::SUCCESS) {
             std::cout << "requestOperatingMode response successful" << std::endl;
             std::cout << "Operating Mode: " << mode << std::endl;
             operatingMode = static_cast<telux::tel::OperatingMode>(mode);
         } else {
             std::cout << "requestOperatingMode is failed, errorCode: " << static_cast<int>(error) << std::endl;
         }
       }
       callbackPromise.set_value(true);
    };
    
    auto myOperatingModeCallback = std::make_shared<MyOperatingModeCallback>();
    
    void setOperatingModeResponse(telux::common::ErrorCode error) {
         std::cout << "Set Operating Mode is :, errorCode: " << static_cast<int>(error)
             << std::endl;
    }
    Copy to clipboard

7. Request the operating mode of device and set the operating mode to ONLINE, if the operating mode is OFFLINE to perform any operations on the phone

phoneManager->requestOperatingMode(myOperatingModeCallback);
    if ((callbackPromise.get_future().get()) &&
        (telux::tel::operatingMode == telux::tel::OperatingMode::OFFLINE )) {
         phoneManager->setOperatingMode(telux::tel::OperatingMode::ONLINE, &setOperatingModeResponse);
    }
    Copy to clipboard

Last Published: Mar 31, 2026

[Previous Topic
Request voice service state updates](https://docs.qualcomm.com/bundle/publicresource/80-PF458-9/topics/request_voice_service_state.md) [Next Topic
Request service domain preference](https://docs.qualcomm.com/bundle/publicresource/80-PF458-9/topics/serving_system.md)