plugins,telit: refactor functions dealing with #BND

Currently functions dealing with #BND request

- mm_telit_parse_bnd_query_response
- mm_telit_parse_bnd_test_response
- mm_telit_build_bnd_request

have all a long list of arguments configuring how to deal with the BND
string.

This commit reworks this list of arguments into a single new structure
"MMTelitBNDParseConfig" with the following advantages

- shorter list of arguments for the above functions
- future changes to this arguments will be transparent for the functions
  above that only pass the values
- one single point where the structure is created: a new function
  mm_shared_telit_get_bnd_parse_config.
This commit is contained in:
Carlo Lobrano
2022-09-29 07:03:37 +00:00
parent 99cde83942
commit a55384d7b0
5 changed files with 132 additions and 166 deletions
+32 -31
View File
@@ -134,6 +134,21 @@ mm_shared_telit_store_revision (MMSharedTelit *self,
priv->software_package_version = g_strdup (revision);
}
void
mm_shared_telit_get_bnd_parse_config (MMIfaceModem *self, MMTelitBNDParseConfig *config)
{
Private *priv;
priv = get_private (MM_SHARED_TELIT (self));
config->modem_is_2g = mm_iface_modem_is_2g (self);
config->modem_is_3g = mm_iface_modem_is_3g (self);
config->modem_is_4g = mm_iface_modem_is_4g (self);
config->modem_alternate_3g_bands = priv->alternate_3g_bands;
config->modem_has_hex_format_4g_bands = is_bnd_4g_format_hex (MM_BASE_MODEM(self), priv->software_package_version);
config->modem_ext_4g_bands = priv->ext_4g_bands;
}
/*****************************************************************************/
/* Load current mode (Modem interface) */
@@ -241,16 +256,13 @@ load_supported_bands_ready (MMBaseModem *self,
g_task_return_error (task, error);
else {
GArray *bands;
MMTelitBNDParseConfig config;
bands = mm_telit_parse_bnd_test_response (response,
mm_iface_modem_is_2g (MM_IFACE_MODEM (self)),
mm_iface_modem_is_3g (MM_IFACE_MODEM (self)),
mm_iface_modem_is_4g (MM_IFACE_MODEM (self)),
priv->alternate_3g_bands,
is_bnd_4g_format_hex (self, priv->software_package_version),
&priv->ext_4g_bands,
self,
&error);
mm_shared_telit_get_bnd_parse_config (MM_IFACE_MODEM (self), &config);
bands = mm_telit_parse_bnd_test_response (response, &config, self, &error);
/* update ext_4g_bands regardless the bands value */
priv->ext_4g_bands = config.modem_ext_4g_bands;
if (!bands)
g_task_return_error (task, error);
else {
@@ -338,25 +350,17 @@ load_current_bands_ready (MMBaseModem *self,
{
const gchar *response;
GError *error = NULL;
Private *priv;
priv = get_private (MM_SHARED_TELIT (self));
response = mm_base_modem_at_command_finish (self, res, &error);
if (!response)
g_task_return_error (task, error);
else {
GArray *bands;
MMTelitBNDParseConfig config;
bands = mm_telit_parse_bnd_query_response (response,
mm_iface_modem_is_2g (MM_IFACE_MODEM (self)),
mm_iface_modem_is_3g (MM_IFACE_MODEM (self)),
mm_iface_modem_is_4g (MM_IFACE_MODEM (self)),
priv->alternate_3g_bands,
is_bnd_4g_format_hex (self, priv->software_package_version),
priv->ext_4g_bands,
self,
&error);
mm_shared_telit_get_bnd_parse_config (MM_IFACE_MODEM (self), &config);
bands = mm_telit_parse_bnd_query_response (response, &config, self, &error);
if (!bands)
g_task_return_error (task, error);
else
@@ -454,15 +458,16 @@ set_current_bands_at (MMIfaceModem *self,
{
GError *error = NULL;
gchar *cmd;
Private *priv;
GArray *bands_array;
priv = get_private (MM_SHARED_TELIT (self));
MMTelitBNDParseConfig config;
bands_array = g_task_get_task_data (task);
g_assert (bands_array);
if (bands_array->len == 1 && g_array_index (bands_array, MMModemBand, 0) == MM_MODEM_BAND_ANY) {
Private *priv;
priv = get_private (MM_SHARED_TELIT (self));
if (!priv->supported_bands) {
g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
"Couldn't build ANY band settings: unknown supported bands");
@@ -472,13 +477,8 @@ set_current_bands_at (MMIfaceModem *self,
bands_array = priv->supported_bands;
}
cmd = mm_telit_build_bnd_request (bands_array,
mm_iface_modem_is_2g (self),
mm_iface_modem_is_3g (self),
mm_iface_modem_is_4g (self),
priv->alternate_3g_bands,
priv->ext_4g_bands,
&error);
mm_shared_telit_get_bnd_parse_config (self, &config);
cmd = mm_telit_build_bnd_request (bands_array, &config, &error);
if (!cmd) {
g_task_return_error (task, error);
g_object_unref (task);
@@ -783,3 +783,4 @@ mm_shared_telit_get_type (void)
return shared_telit_type;
}