diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2021-11-20 22:40:32 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2021-12-11 12:53:37 +0100 |
commit | c76da3bed99590fbdd18381b00e3a8352f566f0d (patch) | |
tree | c0082fc3b89217e9fc00e462a75bb6b59336514a /src/mm-sim-mbim.c | |
parent | 83ebc2b4a8ba80bbd291aabb4ee9c9410cac71da (diff) |
broadband-modem-mbim,sim-mbim: support subscriber ready status from MBIMEx 3.0
Whenever MBIMEx v3.0 is enabled, the logic should parse the response
and indication messages using the updated format.
Diffstat (limited to 'src/mm-sim-mbim.c')
-rw-r--r-- | src/mm-sim-mbim.c | 44 |
1 files changed, 32 insertions, 12 deletions
diff --git a/src/mm-sim-mbim.c b/src/mm-sim-mbim.c index 68ead3fb..dd08c275 100644 --- a/src/mm-sim-mbim.c +++ b/src/mm-sim-mbim.c @@ -103,18 +103,38 @@ subscriber_ready_status_ready (MbimDevice *device, g_assert (!self->priv->iccid_error); response = mbim_device_command_finish (device, res, &self->priv->preload_error); - if (response && - mbim_message_response_get_result (response, MBIM_MESSAGE_TYPE_COMMAND_DONE, &self->priv->preload_error) && - mbim_message_subscriber_ready_status_response_parse ( - response, - NULL, /* ready_state */ - &self->priv->imsi, - &raw_iccid, - NULL, /* ready_info */ - NULL, /* telephone_numbers_count */ - NULL, /* telephone_numbers */ - &self->priv->preload_error)) { - self->priv->iccid = mm_3gpp_parse_iccid (raw_iccid, &self->priv->iccid_error); + if (response && mbim_message_response_get_result (response, MBIM_MESSAGE_TYPE_COMMAND_DONE, &self->priv->preload_error)) { + if (mbim_device_check_ms_mbimex_version (device, 3, 0)) { + if (!mbim_message_ms_basic_connect_v3_subscriber_ready_status_response_parse ( + response, + NULL, /* ready_state */ + NULL, /* flags */ + &self->priv->imsi, + &raw_iccid, + NULL, /* ready_info */ + NULL, /* telephone_numbers_count */ + NULL, /* telephone_numbers */ + &self->priv->preload_error)) + g_prefix_error (&self->priv->preload_error, "Failed processing MBIMEx v3.0 subscriber ready status response: "); + else + mm_obj_dbg (self, "processed MBIMEx v3.0 subscriber ready status response"); + } else { + if (!mbim_message_subscriber_ready_status_response_parse ( + response, + NULL, /* ready_state */ + &self->priv->imsi, + &raw_iccid, + NULL, /* ready_info */ + NULL, /* telephone_numbers_count */ + NULL, /* telephone_numbers */ + &self->priv->preload_error)) + g_prefix_error (&self->priv->preload_error, "Failed processing subscriber ready status response: "); + else + mm_obj_dbg (self, "processed subscriber ready status response"); + } + + if (raw_iccid) + self->priv->iccid = mm_3gpp_parse_iccid (raw_iccid, &self->priv->iccid_error); } /* At this point we just complete, as all the info and errors have already |