[PATCH] [PATCH v2] [TELIT] implemented set current bands

Aleksander Morgado aleksander at aleksander.es
Thu Mar 10 13:19:51 UTC 2016


On Thu, Mar 10, 2016 at 12:41 PM, Carlo Lobrano <c.lobrano at gmail.com> wrote:
> ---
>
> Hello,
>
> I fixed the usage of mm_base_at_command_finish and the other changes
> required in the previous code review. Hope everything is fine now.
>

Looks like this version of the patch is introducing quite some
unrelated reindentations?

Also, ExecStart modified in ModemManager.service.in? :)


> Thanks,
> Carlo
>
> ---
>  data/ModemManager.service.in                      |   2 +-
>  plugins/telit/mm-broadband-modem-telit.c          | 294 +++++++++++++++-------
>  plugins/telit/mm-modem-helpers-telit.c            |  85 +++++++
>  plugins/telit/mm-modem-helpers-telit.h            |   1 +
>  plugins/telit/tests/test-mm-modem-helpers-telit.c | 191 ++++++++++++++
>  5 files changed, 484 insertions(+), 89 deletions(-)
>
> diff --git a/data/ModemManager.service.in b/data/ModemManager.service.in
> index 9fe3a3b..81923e8 100644
> --- a/data/ModemManager.service.in
> +++ b/data/ModemManager.service.in
> @@ -5,7 +5,7 @@ After=syslog.target
>  [Service]
>  Type=dbus
>  BusName=org.freedesktop.ModemManager1
> -ExecStart=@sbindir@/ModemManager
> +ExecStart=@sbindir@/ModemManager --debug --log-level=DEBUG --log-file=/tmp/modemmanager.log
>  StandardError=null
>  Restart=on-abort
>
> diff --git a/plugins/telit/mm-broadband-modem-telit.c b/plugins/telit/mm-broadband-modem-telit.c
> index 0127314..47a4d7b 100644
> --- a/plugins/telit/mm-broadband-modem-telit.c
> +++ b/plugins/telit/mm-broadband-modem-telit.c
> @@ -30,6 +30,7 @@
>  #include "mm-base-modem-at.h"
>  #include "mm-iface-modem.h"
>  #include "mm-iface-modem-3gpp.h"
> +#include "mm-common-helpers.h"
>  #include "mm-broadband-modem-telit.h"
>  #include "mm-modem-helpers-telit.h"
>
> @@ -43,6 +44,121 @@ G_DEFINE_TYPE_EXTENDED (MMBroadbandModemTelit, mm_broadband_modem_telit, MM_TYPE
>                          G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_3GPP, iface_modem_3gpp_init));
>
>  /*****************************************************************************/
> +/* Set current bands (Modem interface) */
> +
> +static gboolean
> +modem_set_current_bands_finish (MMIfaceModem *self,
> +                                GAsyncResult *res,
> +                                GError **error)
> +{
> +    return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error);
> +}
> +
> +static void
> +modem_set_current_bands_ready (MMIfaceModem *self,
> +                               GAsyncResult *res,
> +                               GSimpleAsyncResult *simple)
> +{
> +    GError *error = NULL;
> +
> +    mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, &error);
> +    if (error) {
> +        g_simple_async_result_take_error (simple, error);
> +    } else {
> +        g_simple_async_result_set_op_res_gboolean (simple, TRUE);
> +    }
> +
> +    g_simple_async_result_complete (simple);
> +    g_object_unref (simple);
> +}
> +
> +static void
> +modem_set_current_bands (MMIfaceModem *self,
> +                         GArray *bands_array,
> +                         GAsyncReadyCallback callback,
> +                         gpointer user_data)
> +{
> +    gchar *cmd;
> +    gint flag2g;
> +    gint flag3g;
> +    gint flag4g;
> +    gboolean is_2g;
> +    gboolean is_3g;
> +    gboolean is_4g;
> +    GSimpleAsyncResult *res;
> +
> +    mm_telit_get_band_flag (bands_array, &flag2g, &flag3g, &flag4g);
> +
> +    is_2g = mm_iface_modem_is_2g (self);
> +    is_3g = mm_iface_modem_is_3g (self);
> +    is_4g = mm_iface_modem_is_4g (self);
> +
> +    if (is_2g && flag2g == -1) {
> +        g_simple_async_report_error_in_idle (G_OBJECT (self),
> +                                             callback,
> +                                             user_data,
> +                                             MM_CORE_ERROR,
> +                                             MM_CORE_ERROR_NOT_FOUND,
> +                                             "None or invalid 2G bands combination in the provided list");
> +        return;
> +    }
> +
> +    if (is_3g && flag3g == -1) {
> +        g_simple_async_report_error_in_idle (G_OBJECT (self),
> +                                             callback,
> +                                             user_data,
> +                                             MM_CORE_ERROR,
> +                                             MM_CORE_ERROR_NOT_FOUND,
> +                                             "None or invalid 3G bands combination in the provided list");
> +        return;
> +    }
> +
> +    if (is_4g && flag4g == -1) {
> +        g_simple_async_report_error_in_idle (G_OBJECT (self),
> +                                             callback,
> +                                             user_data,
> +                                             MM_CORE_ERROR,
> +                                             MM_CORE_ERROR_NOT_FOUND,
> +                                             "None or invalid 4G bands combination in the provided list");
> +        return;
> +    }
> +
> +    cmd = NULL;
> +    if (is_2g && !is_3g && !is_4g)
> +        cmd = g_strdup_printf ("AT#BND=%d", flag2g);
> +    else if (is_2g && is_3g && !is_4g)
> +        cmd = g_strdup_printf ("AT#BND=%d,%d", flag2g, flag3g);
> +    else if (is_2g && is_3g && is_4g)
> +        cmd = g_strdup_printf ("AT#BND=%d,%d,%d", flag2g, flag3g, flag4g);
> +    else if (!is_2g && !is_3g && is_4g)
> +        cmd = g_strdup_printf ("AT#BND=0,0,%d", flag4g);
> +    else if (!is_2g && is_3g && is_4g)
> +        cmd = g_strdup_printf ("AT#BND=0,%d,%d", flag3g, flag4g);
> +    else if (is_2g && !is_3g && is_4g)
> +        cmd = g_strdup_printf ("AT#BND=%d,0,%d", flag2g, flag4g);
> +    else {
> +        g_simple_async_report_error_in_idle (G_OBJECT (self),
> +                                             callback,
> +                                             user_data,
> +                                             MM_CORE_ERROR,
> +                                             MM_CORE_ERROR_FAILED,
> +                                             "Unexpectd error: could not compose AT#BND command");
> +        return;
> +    }
> +    res = g_simple_async_result_new (G_OBJECT (self),
> +                                     callback,
> +                                     user_data,
> +                                     modem_set_current_bands);
> +    mm_base_modem_at_command (MM_BASE_MODEM (self),
> +                              cmd,
> +                              20,
> +                              FALSE,
> +                              (GAsyncReadyCallback)modem_set_current_bands_ready,
> +                              res);
> +    g_free (cmd);
> +}
> +
> +/*****************************************************************************/
>  /* Load current bands (Modem interface) */
>
>  typedef struct {
> @@ -72,7 +188,7 @@ modem_load_bands_finish (MMIfaceModem *self,
>          return NULL;
>
>      return (GArray *) g_array_ref (g_simple_async_result_get_op_res_gpointer (
> -                                       G_SIMPLE_ASYNC_RESULT (res)));
> +                                                                              G_SIMPLE_ASYNC_RESULT (res)));
>  }
>
>  static void
> @@ -209,7 +325,7 @@ modem_load_unlock_retries_finish (MMIfaceModem *self,
>          return NULL;
>
>      return (MMUnlockRetries*) g_object_ref (g_simple_async_result_get_op_res_gpointer (
> -                                                G_SIMPLE_ASYNC_RESULT (res)));
> +                                                                                       G_SIMPLE_ASYNC_RESULT (res)));
>  }
>
>  static void
> @@ -436,20 +552,20 @@ response_processor_psnt_ignore_at_errors (MMBaseModem *self,
>      mode = strchr (psnt, ',');
>      if (mode) {
>          switch (atoi (++mode)) {
> -        case 0:
> -            *result = g_variant_new_uint32 (MM_MODEM_ACCESS_TECHNOLOGY_GPRS);
> -            return TRUE;
> -        case 1:
> -            *result = g_variant_new_uint32 (MM_MODEM_ACCESS_TECHNOLOGY_EDGE);
> -            return TRUE;
> -        case 2:
> -            *result = g_variant_new_uint32 (MM_MODEM_ACCESS_TECHNOLOGY_UMTS);
> -            return TRUE;
> -        case 3:
> -            *result = g_variant_new_uint32 (MM_MODEM_ACCESS_TECHNOLOGY_HSDPA);
> -            return TRUE;
> -        default:
> -            break;
> +            case 0:
> +                *result = g_variant_new_uint32 (MM_MODEM_ACCESS_TECHNOLOGY_GPRS);
> +                return TRUE;
> +            case 1:
> +                *result = g_variant_new_uint32 (MM_MODEM_ACCESS_TECHNOLOGY_EDGE);
> +                return TRUE;
> +            case 2:
> +                *result = g_variant_new_uint32 (MM_MODEM_ACCESS_TECHNOLOGY_UMTS);
> +                return TRUE;
> +            case 3:
> +                *result = g_variant_new_uint32 (MM_MODEM_ACCESS_TECHNOLOGY_HSDPA);
> +                return TRUE;
> +            default:
> +                break;
>          }
>      }
>
> @@ -484,17 +600,17 @@ response_processor_service_ignore_at_errors (MMBaseModem *self,
>      mode = strchr (service, ',');
>      if (mode) {
>          switch (atoi (++mode)) {
> -        case 1:
> -            *result = g_variant_new_uint32 (MM_MODEM_ACCESS_TECHNOLOGY_1XRTT);
> -            return TRUE;
> -        case 2:
> -            *result = g_variant_new_uint32 (MM_MODEM_ACCESS_TECHNOLOGY_EVDO0);
> -            return TRUE;
> -        case 3:
> -            *result = g_variant_new_uint32 (MM_MODEM_ACCESS_TECHNOLOGY_EVDOA);
> -            return TRUE;
> -        default:
> -            break;
> +            case 1:
> +                *result = g_variant_new_uint32 (MM_MODEM_ACCESS_TECHNOLOGY_1XRTT);
> +                return TRUE;
> +            case 2:
> +                *result = g_variant_new_uint32 (MM_MODEM_ACCESS_TECHNOLOGY_EVDO0);
> +                return TRUE;
> +            case 3:
> +                *result = g_variant_new_uint32 (MM_MODEM_ACCESS_TECHNOLOGY_EVDOA);
> +                return TRUE;
> +            default:
> +                break;
>          }
>      }
>
> @@ -519,12 +635,12 @@ load_access_technologies (MMIfaceModem *self,
>  {
>      mm_dbg ("loading access technology (Telit)...");
>      mm_base_modem_at_sequence (
> -        MM_BASE_MODEM (self),
> -        access_tech_commands,
> -        NULL, /* response_processor_context */
> -        NULL, /* response_processor_context_free */
> -        callback,
> -        user_data);
> +                               MM_BASE_MODEM (self),
> +                               access_tech_commands,
> +                               NULL, /* response_processor_context */
> +                               NULL, /* response_processor_context_free */
> +                               callback,
> +                               user_data);
>  }
>
>  /*****************************************************************************/
> @@ -549,11 +665,11 @@ setup_flow_control (MMIfaceModem *self,
>      guint flow_control = 1; /* Default flow control: XON/XOFF */
>
>      switch (mm_base_modem_get_product_id (MM_BASE_MODEM (self)) & 0xFFFF) {
> -    case 0x0021:
> -        flow_control = 2; /* Telit IMC modems support only RTS/CTS mode */
> -        break;
> -    default:
> -        break;
> +        case 0x0021:
> +            flow_control = 2; /* Telit IMC modems support only RTS/CTS mode */
> +            break;
> +        default:
> +            break;
>      }
>
>      cmd = g_strdup_printf ("+IFC=%u,%u", flow_control, flow_control);
> @@ -604,32 +720,32 @@ load_current_modes_finish (MMIfaceModem *self,
>
>      *preferred = MM_MODEM_MODE_NONE;
>      switch (a) {
> -    case 12:
> -        *allowed = MM_MODEM_MODE_2G;
> -        return TRUE;
> -    case 22:
> -        *allowed = MM_MODEM_MODE_3G;
> -        return TRUE;
> -    case 25:
> -        if (mm_iface_modem_is_3gpp_lte (self))
> -            *allowed = (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G | MM_MODEM_MODE_4G);
> -        else
> +        case 12:
> +            *allowed = MM_MODEM_MODE_2G;
> +            return TRUE;
> +        case 22:
> +            *allowed = MM_MODEM_MODE_3G;
> +            return TRUE;
> +        case 25:
> +            if (mm_iface_modem_is_3gpp_lte (self))
> +                *allowed = (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G | MM_MODEM_MODE_4G);
> +            else
> +                *allowed = (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G);
> +            return TRUE;
> +        case 28:
> +            *allowed = MM_MODEM_MODE_4G;
> +            return TRUE;
> +        case 29:
>              *allowed = (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G);
> -        return TRUE;
> -    case 28:
> -        *allowed = MM_MODEM_MODE_4G;
> -        return TRUE;
> -    case 29:
> -        *allowed = (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G);
> -        return TRUE;
> -    case 30:
> -        *allowed = (MM_MODEM_MODE_2G | MM_MODEM_MODE_4G);
> -        return TRUE;
> -    case 31:
> -        *allowed = (MM_MODEM_MODE_3G | MM_MODEM_MODE_4G);
> -        return TRUE;
> -    default:
> -        break;
> +            return TRUE;
> +        case 30:
> +            *allowed = (MM_MODEM_MODE_2G | MM_MODEM_MODE_4G);
> +            return TRUE;
> +        case 31:
> +            *allowed = (MM_MODEM_MODE_3G | MM_MODEM_MODE_4G);
> +            return TRUE;
> +        default:
> +            break;
>      }
>
>      g_set_error (error,
> @@ -740,12 +856,12 @@ set_current_modes (MMIfaceModem *self,
>
>      command = g_strdup_printf ("AT+WS46=%d", ws46_mode);
>      mm_base_modem_at_command (
> -        MM_BASE_MODEM (self),
> -        command,
> -        10,
> -        FALSE,
> -        (GAsyncReadyCallback)ws46_set_ready,
> -        result);
> +                              MM_BASE_MODEM (self),
> +                              command,
> +                              10,
> +                              FALSE,
> +                              (GAsyncReadyCallback)ws46_set_ready,
> +                              result);
>      g_free (command);
>  }
>
> @@ -839,12 +955,12 @@ load_supported_modes (MMIfaceModem *self,
>  {
>      /* Run parent's loading */
>      iface_modem_parent->load_supported_modes (
> -        MM_IFACE_MODEM (self),
> -        (GAsyncReadyCallback)parent_load_supported_modes_ready,
> -        g_simple_async_result_new (G_OBJECT (self),
> -                                   callback,
> -                                   user_data,
> -                                   load_supported_modes));
> +                                              MM_IFACE_MODEM (self),
> +                                              (GAsyncReadyCallback)parent_load_supported_modes_ready,
> +                                              g_simple_async_result_new (G_OBJECT (self),
> +                                                                         callback,
> +                                                                         user_data,
> +                                                                         load_supported_modes));
>  }
>
>  /*****************************************************************************/
> @@ -855,7 +971,7 @@ modem_3gpp_enable_unsolicited_events_finish (MMIfaceModem3gpp *self,
>                                               GAsyncResult *res,
>                                               GError **error)
>  {
> -   /* Ignore errors */
> +    /* Ignore errors */
>      mm_base_modem_at_sequence_full_finish (MM_BASE_MODEM (self),
>                                             res,
>                                             NULL,
> @@ -877,24 +993,24 @@ modem_3gpp_enable_unsolicited_events (MMIfaceModem3gpp *self,
>                                        gpointer user_data)
>  {
>      mm_base_modem_at_sequence_full (
> -        MM_BASE_MODEM (self),
> -        mm_base_modem_peek_port_secondary (MM_BASE_MODEM (self)),
> -        unsolicited_enable_sequence,
> -        NULL,  /* response_processor_context */
> -        NULL,  /* response_processor_context_free */
> -        NULL,  /* cancellable */
> -        callback,
> -        user_data);
> +                                    MM_BASE_MODEM (self),
> +                                    mm_base_modem_peek_port_secondary (MM_BASE_MODEM (self)),
> +                                    unsolicited_enable_sequence,
> +                                    NULL,  /* response_processor_context */
> +                                    NULL,  /* response_processor_context_free */
> +                                    NULL,  /* cancellable */
> +                                    callback,
> +                                    user_data);
>  }
>
>  /*****************************************************************************/
>
>  MMBroadbandModemTelit *
>  mm_broadband_modem_telit_new (const gchar *device,
> -                             const gchar **drivers,
> -                             const gchar *plugin,
> -                             guint16 vendor_id,
> -                             guint16 product_id)
> +                              const gchar **drivers,
> +                              const gchar *plugin,
> +                              guint16 vendor_id,
> +                              guint16 product_id)
>  {
>      return g_object_new (MM_TYPE_BROADBAND_MODEM_TELIT,
>                           MM_BASE_MODEM_DEVICE, device,
> @@ -915,6 +1031,8 @@ iface_modem_init (MMIfaceModem *iface)
>  {
>      iface_modem_parent = g_type_interface_peek_parent (iface);
>
> +    iface->set_current_bands = modem_set_current_bands;
> +    iface->set_current_bands_finish = modem_set_current_bands_finish;
>      iface->load_current_bands = modem_load_current_bands;
>      iface->load_current_bands_finish = modem_load_bands_finish;
>      iface->load_supported_bands = modem_load_supported_bands;
> diff --git a/plugins/telit/mm-modem-helpers-telit.c b/plugins/telit/mm-modem-helpers-telit.c
> index ae7f8e7..80065fb 100644
> --- a/plugins/telit/mm-modem-helpers-telit.c
> +++ b/plugins/telit/mm-modem-helpers-telit.c
> @@ -26,6 +26,91 @@
>  #include "mm-modem-helpers.h"
>  #include "mm-modem-helpers-telit.h"
>
> +
> +/*****************************************************************************/
> +/* Set current bands helpers */
> +
> +void
> +mm_telit_get_band_flag (GArray *bands_array,
> +                        gint *flag2g,
> +                        gint *flag3g,
> +                        gint *flag4g)
> +{
> +    guint mask_2g = 0;
> +    guint mask3g = 0;
> +    guint mask4g = 0;
> +    guint found4g = FALSE;
> +    guint i;
> +
> +    for (i = 0; i < bands_array->len; i++) {
> +        MMModemBand band = g_array_index(bands_array, MMModemBand, i);
> +
> +        if (flag2g != NULL &&
> +            band > MM_MODEM_BAND_UNKNOWN && band <= MM_MODEM_BAND_G850) {
> +            mask_2g += 1 << band;
> +        }
> +
> +        if (flag3g != NULL &&
> +            band >= MM_MODEM_BAND_U2100 && band <= MM_MODEM_BAND_U2600) {
> +            mask3g += 1 << band;
> +        }
> +
> +         if (flag4g != NULL &&
> +             band >= MM_MODEM_BAND_EUTRAN_I && band <= MM_MODEM_BAND_EUTRAN_XLIV) {
> +             mask4g += 1 << (band - MM_MODEM_BAND_EUTRAN_I);
> +             found4g = TRUE;
> +        }
> +    }
> +
> +    /* Get 2G flag */
> +    if (flag2g != NULL) {
> +        if (mask_2g == ((1 << MM_MODEM_BAND_EGSM) + (1 << MM_MODEM_BAND_DCS)))
> +            *flag2g = 0;
> +        else if (mask_2g == ((1 << MM_MODEM_BAND_EGSM) + (1 << MM_MODEM_BAND_PCS)))
> +            *flag2g = 1;
> +        else if (mask_2g == ((1 << MM_MODEM_BAND_G850) + (1 << MM_MODEM_BAND_DCS)))
> +            *flag2g = 2;
> +        else if (mask_2g == ((1 << MM_MODEM_BAND_G850) + (1 << MM_MODEM_BAND_PCS)))
> +            *flag2g = 3;
> +        else
> +            *flag2g = -1;
> +    }
> +
> +    /* Get 3G flag */
> +    if (flag3g != NULL) {
> +        if (mask3g == (1 << MM_MODEM_BAND_U2100))
> +            *flag3g = 0;
> +        else if (mask3g == (1 << MM_MODEM_BAND_U1900))
> +            *flag3g = 1;
> +        else if (mask3g == (1 << MM_MODEM_BAND_U850))
> +            *flag3g = 2;
> +        else if (mask3g == ((1 << MM_MODEM_BAND_U2100) +
> +                            (1 << MM_MODEM_BAND_U1900) +
> +                            (1 << MM_MODEM_BAND_U850)))
> +            *flag3g = 3;
> +        else if (mask3g == ((1 << MM_MODEM_BAND_U1900) +
> +                            (1 << MM_MODEM_BAND_U850)))
> +            *flag3g = 4;
> +        else if (mask3g == (1 << MM_MODEM_BAND_U900))
> +            *flag3g = 5;
> +        else if (mask3g == ((1 << MM_MODEM_BAND_U2100) +
> +                            (1 << MM_MODEM_BAND_U900)))
> +            *flag3g = 6;
> +        else if (mask3g == (1 << MM_MODEM_BAND_U17IV))
> +            *flag3g = 7;
> +        else
> +            *flag3g = -1;
> +    }
> +
> +    /* 4G flag correspond to the mask */
> +    if (flag4g != NULL) {
> +        if (found4g)
> +            *flag4g = mask4g;
> +        else
> +            *flag4g = -1;
> +    }
> +}
> +
>  /*****************************************************************************/
>  /* +CSIM response parser */
>
> diff --git a/plugins/telit/mm-modem-helpers-telit.h b/plugins/telit/mm-modem-helpers-telit.h
> index a7e250e..75bd6ad 100644
> --- a/plugins/telit/mm-modem-helpers-telit.h
> +++ b/plugins/telit/mm-modem-helpers-telit.h
> @@ -97,4 +97,5 @@ gboolean mm_telit_update_2g_bands(gchar *band_list, GMatchInfo **match_info, GAr
>  gboolean mm_telit_update_3g_bands(gchar *band_list, GMatchInfo **match_info, GArray **bands, GError **error);
>  gboolean mm_telit_update_4g_bands(GArray** bands, GMatchInfo *match_info, GError **error);
>
> +void mm_telit_get_band_flag (GArray *bands_array, gint *flag_2g, gint *flag_3g, gint *flag_4g);
>  #endif  /* MM_MODEM_HELPERS_TELIT_H */
> diff --git a/plugins/telit/tests/test-mm-modem-helpers-telit.c b/plugins/telit/tests/test-mm-modem-helpers-telit.c
> index cac10fb..bfdde89 100644
> --- a/plugins/telit/tests/test-mm-modem-helpers-telit.c
> +++ b/plugins/telit/tests/test-mm-modem-helpers-telit.c
> @@ -313,8 +313,196 @@ test_parse_current_bands_response (void) {
>      }
>  }
>
> +static void
> +test_telit_get_2g_bnd_flag (void)
> +{
> +    GArray *bands_array;
> +    gint flag2g;
> +    MMModemBand egsm = MM_MODEM_BAND_EGSM;
> +    MMModemBand dcs = MM_MODEM_BAND_DCS;
> +    MMModemBand pcs = MM_MODEM_BAND_PCS;
> +    MMModemBand g850 = MM_MODEM_BAND_G850;
> +
> +    /* Test Flag 0 */
> +    bands_array = g_array_sized_new (FALSE, FALSE, sizeof (MMModemBand), 2);
> +    g_array_append_val (bands_array, egsm);
> +    g_array_append_val (bands_array, dcs);
> +
> +    mm_telit_get_band_flag (bands_array, &flag2g, NULL, NULL);
> +    g_assert_cmpuint (flag2g, ==, 0);
> +    g_array_free (bands_array, TRUE);
> +
> +    /* Test flag 1 */
> +    bands_array = g_array_sized_new (FALSE, FALSE, sizeof (MMModemBand), 2);
> +    g_array_append_val (bands_array, egsm);
> +    g_array_append_val (bands_array, pcs);
> +
> +    mm_telit_get_band_flag (bands_array, &flag2g, NULL, NULL);
> +    g_assert_cmpuint (flag2g, ==, 1);
> +    g_array_free (bands_array, TRUE);
> +
> +    /* Test flag 2 */
> +    bands_array = g_array_sized_new (FALSE, FALSE, sizeof (MMModemBand), 2);
> +    g_array_append_val (bands_array, g850);
> +    g_array_append_val (bands_array, dcs);
> +
> +    mm_telit_get_band_flag (bands_array, &flag2g, NULL, NULL);
> +    g_assert_cmpuint (flag2g, ==, 2);
> +    g_array_free (bands_array, TRUE);
> +
> +    /* Test flag 3 */
> +    bands_array = g_array_sized_new (FALSE, FALSE, sizeof (MMModemBand), 2);
> +    g_array_append_val (bands_array, g850);
> +    g_array_append_val (bands_array, pcs);
> +
> +    mm_telit_get_band_flag (bands_array, &flag2g, NULL, NULL);
> +    g_assert_cmpuint (flag2g, ==, 3);
> +    g_array_free (bands_array, TRUE);
> +
> +    /* Test invalid band array */
> +    bands_array = g_array_sized_new (FALSE, FALSE, sizeof (MMModemBand), 2);
> +    g_array_append_val (bands_array, g850);
> +    g_array_append_val (bands_array, egsm);
> +
> +    mm_telit_get_band_flag (bands_array, &flag2g, NULL, NULL);
> +    g_assert_cmpuint (flag2g, ==, -1);
> +    g_array_free (bands_array, TRUE);
> +}
>
>
> +static void
> +test_telit_get_3g_bnd_flag (void)
> +{
> +    GArray *bands_array;
> +    MMModemBand u2100 = MM_MODEM_BAND_U2100;
> +    MMModemBand u1900 = MM_MODEM_BAND_U1900;
> +    MMModemBand u850 = MM_MODEM_BAND_U850;
> +    MMModemBand u900 = MM_MODEM_BAND_U900;
> +    MMModemBand u17iv = MM_MODEM_BAND_U17IV;
> +    MMModemBand u17ix = MM_MODEM_BAND_U17IX;
> +    gint flag;
> +
> +    /* Test flag 0 */
> +    flag = -1;
> +    bands_array = g_array_sized_new (FALSE, FALSE, sizeof (MMModemBand), 1);
> +    g_array_append_val (bands_array, u2100);
> +
> +    mm_telit_get_band_flag (bands_array, NULL, &flag, NULL);
> +    g_assert_cmpint (flag, ==, 0);
> +    g_array_free (bands_array, TRUE);
> +
> +    /* Test flag 1 */
> +    flag = -1;
> +    bands_array = g_array_sized_new (FALSE, FALSE, sizeof (MMModemBand), 1);
> +    g_array_append_val (bands_array, u1900);
> +
> +    mm_telit_get_band_flag (bands_array, NULL, &flag, NULL);
> +    g_assert_cmpint (flag, ==, 1);
> +    g_array_free (bands_array, TRUE);
> +
> +    /* Test flag 2 */
> +    flag = -1;
> +    bands_array = g_array_sized_new (FALSE, FALSE, sizeof (MMModemBand), 1);
> +    g_array_append_val (bands_array, u850);
> +
> +    mm_telit_get_band_flag (bands_array, NULL, &flag, NULL);
> +    g_assert_cmpint (flag, ==, 2);
> +    g_array_free (bands_array, TRUE);
> +
> +    /* Test flag 3 */
> +    flag = -1;
> +    bands_array = g_array_sized_new (FALSE, FALSE, sizeof (MMModemBand), 3);
> +    g_array_append_val (bands_array, u2100);
> +    g_array_append_val (bands_array, u1900);
> +    g_array_append_val (bands_array, u850);
> +
> +    mm_telit_get_band_flag (bands_array, NULL, &flag, NULL);
> +    g_assert_cmpint (flag, ==, 3);
> +    g_array_free (bands_array, TRUE);
> +
> +    /* Test flag 4 */
> +    flag = -1;
> +    bands_array = g_array_sized_new (FALSE, FALSE, sizeof (MMModemBand), 2);
> +    g_array_append_val (bands_array, u1900);
> +    g_array_append_val (bands_array, u850);
> +
> +    mm_telit_get_band_flag (bands_array, NULL, &flag, NULL);
> +    g_assert_cmpint (flag, ==, 4);
> +    g_array_free (bands_array, TRUE);
> +
> +    /* Test flag 5 */
> +    flag = -1;
> +    bands_array = g_array_sized_new (FALSE, FALSE, sizeof (MMModemBand), 1);
> +    g_array_append_val (bands_array, u900);
> +
> +    mm_telit_get_band_flag (bands_array, NULL, &flag, NULL);
> +    g_assert_cmpint (flag, ==, 5);
> +    g_array_free (bands_array, TRUE);
> +
> +    /* Test flag 6 */
> +    flag = -1;
> +    bands_array = g_array_sized_new (FALSE, FALSE, sizeof (MMModemBand), 2);
> +    g_array_append_val (bands_array, u2100);
> +    g_array_append_val (bands_array, u900);
> +
> +    mm_telit_get_band_flag (bands_array, NULL, &flag, NULL);
> +    g_assert_cmpint (flag, ==, 6);
> +    g_array_free (bands_array, TRUE);
> +
> +    /* Test flag 7 */
> +    flag = -1;
> +    bands_array = g_array_sized_new (FALSE, FALSE, sizeof (MMModemBand), 1);
> +    g_array_append_val (bands_array, u17iv);
> +
> +    mm_telit_get_band_flag (bands_array, NULL, &flag, NULL);
> +    g_assert_cmpint (flag, ==, 7);
> +    g_array_free (bands_array, TRUE);
> +
> +    /* Test invalid band array */
> +    flag = -1;
> +    bands_array = g_array_sized_new (FALSE, FALSE, sizeof (MMModemBand), 1);
> +    g_array_append_val (bands_array, u17ix);
> +
> +    mm_telit_get_band_flag (bands_array, NULL, &flag, NULL);
> +    g_assert_cmpint (flag, ==, -1);
> +    g_array_free (bands_array, TRUE);
> +}
> +
> +static void
> +test_telit_get_4g_bnd_flag (void)
> +{
> +    GArray *bands_array;
> +    MMModemBand eutran_i = MM_MODEM_BAND_EUTRAN_I;
> +    MMModemBand eutran_ii = MM_MODEM_BAND_EUTRAN_II;
> +    MMModemBand egsm = MM_MODEM_BAND_EGSM;
> +    gint flag = -1;
> +
> +    /* Test flag 1 */
> +    bands_array = g_array_sized_new (FALSE, FALSE, sizeof (MMModemBand), 1);
> +    g_array_append_val (bands_array, eutran_i);
> +
> +    mm_telit_get_band_flag (bands_array, NULL, NULL, &flag);
> +    g_assert_cmpint (flag, ==, 1);
> +    g_array_free (bands_array, TRUE);
> +
> +    /* Test flag 3 */
> +    bands_array = g_array_sized_new (FALSE, FALSE, sizeof (MMModemBand), 2);
> +    g_array_append_val (bands_array, eutran_i);
> +    g_array_append_val (bands_array, eutran_ii);
> +
> +    mm_telit_get_band_flag (bands_array, NULL, NULL, &flag);
> +    g_assert_cmpint (flag, ==, 3);
> +    g_array_free (bands_array, TRUE);
> +
> +    /* Test invalid bands array */
> +    bands_array = g_array_sized_new (FALSE, FALSE, sizeof (MMModemBand), 1);
> +    g_array_append_val (bands_array, egsm);
> +
> +    mm_telit_get_band_flag (bands_array, NULL, NULL, &flag);
> +    g_assert_cmpint (flag, ==, -1);
> +    g_array_free (bands_array, TRUE);
> +}
> +
>  int main (int argc, char **argv)
>  {
>      setlocale (LC_ALL, "");
> @@ -327,5 +515,8 @@ int main (int argc, char **argv)
>      g_test_add_func ("/MM/telit/bands/supported/parse_band_flag", test_parse_band_flag_str);
>      g_test_add_func ("/MM/telit/bands/supported/parse_bands_response", test_parse_supported_bands_response);
>      g_test_add_func ("/MM/telit/bands/current/parse_bands_response", test_parse_current_bands_response);
> +    g_test_add_func ("/MM/telit/bands/current/set_bands/2g", test_telit_get_2g_bnd_flag);
> +    g_test_add_func ("/MM/telit/bands/current/set_bands/3g", test_telit_get_3g_bnd_flag);
> +    g_test_add_func ("/MM/telit/bands/current/set_bands/4g", test_telit_get_4g_bnd_flag);
>      return g_test_run ();
>  }
> --
> 2.1.4
>
> _______________________________________________
> ModemManager-devel mailing list
> ModemManager-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/modemmanager-devel



-- 
Aleksander
https://aleksander.es


More information about the ModemManager-devel mailing list