...
One thing that we still need to figure out is how to appropriately reference an LTE modem in NetworkConfig/WirelessConfig, i.e. how to go from some human readable (and persistent) “modem ID” to the corresponding CDC device path and the interface name. Until then nim
will publish hard-coded wwan0
and cdc-wdm0
values. Maybe user could select the modem by IMEI number? Also, the probing IP (by which wwan
service determines if the connection is working) will be hard-coded to google DNS IP but eventually it will be made configurable (i.e. making all these configurable is out-of-scope for this proposal).
Next a new /run/wwan/<network-uuid>/status.json
with modem state data will be published for each LTE network by wwan
service for zedagent
to read. Status file will contain modification timestamp MD5 checksum of the last applied revision of config.json
. With this, EVE will know when there are no more pending configuration changes, so that it is ready to publish radio state up to the application.
No Format |
---|
{ "protocol": "qmi" | "mbim", "operating-mode": "online" | "radio-off" | etc. "imei": “310170845466094”, "modem-model": "QUECTEL Mobile Broadband Module", "modem-revision": "EC21ECGAR06A04M1G", "config-error": "", "probe-error": "Failed to ping 8.8.8.8 (2 packets transmitted, 0 received, 100% packet loss, time 1029ms)", // modificationMD5 Unix timestampchecksum of config.json (without trailing white-space) applied at the time of publishing this info "config-mtimechecksum": 1629446126"d7548db5594b064f2c9ec0599e84523e" } |
Application Behavior
Application acting as a Local Profile Server for the airplane-mode is expected to behave as follows:
...
nim
will subscribe for zedagent
status updates. If AirplaneMode.Enabled
has changed, nim
will trigger the operations of switching all radios ON/OFF. This actually means to publish the new configuration into wwan
(and later also wlan
) service and (asynchronously) wait for updated state data (acknowledging the latest config using a timestampchecksum). Once wwan
service responds, nim
will publish the new state back into zedagent
using DeviceNetworkStatus
, which will be also extended with the same AirplaneMode
structure (.
RequestedAt
copied from ZedAgentStatus
; .
Enabled
and .
InProgress
updated by nim
). Inside, the per-port NetworkPortStatus
will contain WirelessStatus
. zedagent
will make another POST call to /api/v1/radio
only after it has received DeviceNetworkStatus
with AirplaneMode
of the same timestamp and with InProgress
being false.
...