ついに答えが出ました!
C++ では、libnm-glib を使用して dbus プロキシを操作します。コマンドラインから使用..
gdbus call --system --dest org.freedesktop.ModemManager --object-path /org/freedesktop/ModemManager/Modems/0 --method org.freedesktop.ModemManager.Modem.Gsm.Network.GetSignalQuality
gsm モデムの信号強度を示します。
接続中に MM が信号品質を取得できないと言う場合、それはすべてのコマンドとデータに対して AT ポートが 1 つしかないためです。そのため、AT ポートが接続されている場合、AT コマンドを送信して信号品質を収集することはできません。より多くの AT ポートを備えたより優れたモデムを入手するか、QMI または MBIM を搭載したものなどの非 AT モデムに切り替える必要があります。-- アレクサンダー・モルガド
org.freedesktop.ModemManager.Modem.Gsm.Network.GetSignalQuality
を使用して信号を聞くことができます
gdbus monitor --system --dest org.freedesktop.NetworkManager --object-path /org/freedesktop/NetworkManager/Modems/0
Q. プロキシは、信号強度が変化するたびに非同期で信号を送りますか、それとも ModemManager は定期的にモデムをポーリングして信号品質を取得しますか?
A. 使用しているモデムによって異なります。モデムが未承諾の品質変更指示をサポートしている場合は、それらを使用します。それ以外の場合、MM は 30 秒ごとに信号品質値をポーリングします。インターフェイスのプロパティ値は、新しい値を取得すると (多かれ少なかれ) 更新されます。-- アレクサンダー・モルガド