ara::nm coordinates Ethernet link state for Adaptive Applications. Applications declare their network requirement via the ara::nm API. NM keeps the network interface active as long as any application has requested it.
#include <ara/nm/network_handle.h>
ara::nm::NetworkHandle nmHandle(
ara::core::InstanceSpecifier{"SensorApp/Eth0NM"});
// Request network (prevents interface sleep)
nmHandle.RequestBusCommunication();
// App is idle — release requirement
// NM will sleep the interface if no other app holds a request
nmHandle.ReleaseBusCommunication();
// Register state change callback
nmHandle.SetNetworkStateChangeHandler(
[](ara::nm::NetworkMode mode) {
if (mode == ara::nm::NetworkMode::kBusSleep) {
// Interface went to sleep — pause SOME/IP traffic
} else if (mode == ara::nm::NetworkMode::kRequested) {
// Interface woke up — restart SD discovery
}
});