...
In order to decrease the latency, we propose to use a separate and shorter time period of 5 seconds for the airplane-mode POST API. And in order to simplify the interaction between the application and EVE and to avoid race conditions, EVE will not POST radio state while the configuration change is still in-progress (even if it exceeds the regular 5sec time interval). Radio state information published while a state change is ongoing wouldn’t have much sense/validity anyway.
The actual radio on/off operation will be done by wwan
service using QMI
/ MBIM
protocol as opposed to modem-specific AT commands. As it has been already mentioned, there are CLI tools available for both protocols that allow to change and read the radio power state.
Out of Scope
For the time being it is not required by the customer to apply the airplane mode for WiFi adapters. This proposal therefore covers radio on/off switch for cellular modems only.
Implementation of the application providing the user with the airplane mode on/off button (i.e. the Local profile server) is out of scope of this document as well. Here we only describe the interface between the application and EVE OS and describe the implementation changes needed to be done on the EVE side.
...
Where the radio request will carry a binary-encoded protobuf message containing the actual state of every radio:
...
Where ZCellularModuleInfo
, ZSimcardInfo
and ZCellularProvider
are defined in api/proto/evecommoninfo/wirelessinfo.proto
as follows:
No Format |
---|
enum ZSimcardState { Z_SIMCARD_STATE_INVALID = 0; Z_SIMCARD_STATE_ASSIGNED = 1; Z_SIMCARD_STATE_PROVISIONED = 2; Z_SIMCARD_STATE_ACTIVE = 3; Z_SIMCARD_STATE_SUSPENDED = 4; Z_SIMCARD_STATE_CANCELLED = 5; } message ZSimcardInfo { // Name is a SIM card identifier. For example ICCID if available. // Guaranteed to be unique only in the scope of the edge node. string name = 1; // Reference to ZCellularModuleInfo.name string cellularModuleName = 2; string imsi = 3; string iccid = 4; ZSimcardState state = 5; } message ZCellularModuleInfo { // Name is a module identifier. For example IMEI if available. // Guaranteed to be unique only in the scope of the edge node. string name = 1; string imei = 2; string firmwareVersion = 3; string model = 4; ZCellularOperatingState operatingState = 5; ZCellularControlProtocol controlProtocol = 6; } enum ZCellularOperatingState { OPERATING_STATE_UNSPECIFIED = 0; OPERATING_STATE_OFFLINE = 1; OPERATING_STATE_RADIO_OFF = 2; // AKA airplane mode OPERATING_STATE_ONLINE = 3; OPERATING_STATE_ONLINE_AND_CONNECTED = 4; OPERATING_STATE_UNRECOGNIZED = 5; } enum ZCellularControlProtocol { CONTROL_PROTOCOL_UNSPECIFIED = 0; CONTROL_PROTOCOL_QMI = 1; CONTROL_PROTOCOL_MBIM = 2; } message ZCellularProvider { // Public land mobile network code. string plmn = 1; string description = 2; // True if this is the provider currently being used. bool currentServing = 3; bool roaming = 4; } |
...