We instantiate a network = NetworkInterface::get_default_instance();
Then the cellular device driver functionality is accessed through this interface.
The network.disconnect() only deactivates the cellular context but we need to explicit shut the modem down through the NetworkInterface API. That is not available. The power on is available through the cellular state machine.
The issue How to reset Cellular network interface?#10912 advises:
NetworkInterface::disconnect(); // disconnect from cellular network and notify to close sockets CellularDevice::shutdown(); // prepare modem for power off CellularDevice::soft_power_off(); // switch off modem CellularDevice::hard_power_off(); // power supply off to cold boot modem CellularDevice::stop(); // reset cellular state machine NetworkInterface::connect(); // connect to network and notify sockets can be created again I am not sure if accessing the CellularDevice object is possible at the same level where we are allocated the NetworkInterface, or that is a clean method.