diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2019-09-16 17:37:56 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2019-10-11 09:24:22 +0000 |
commit | feb6c8264a0b1bb4c68a5dd6cd115b665b982392 (patch) | |
tree | 50ceeb012962956254269dc8a4c1e483b71c3a7d /src | |
parent | 81795f3023a7a03dac5da28fd4b5bf48100a457d (diff) |
broadband-modem: allow disabling +CIND URC setup
Not all modems support correctly +CIND URCs and +CMER settings.
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-broadband-modem.c | 20 | ||||
-rw-r--r-- | src/mm-broadband-modem.h | 3 |
2 files changed, 20 insertions, 3 deletions
diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c index 18207fc0..173c601a 100644 --- a/src/mm-broadband-modem.c +++ b/src/mm-broadband-modem.c @@ -124,6 +124,7 @@ enum { PROP_MODEM_PERIODIC_CALL_LIST_CHECK_DISABLED, PROP_MODEM_CARRIER_CONFIG_MAPPING, PROP_FLOW_CONTROL, + PROP_INDICATORS_DISABLED, PROP_LAST }; @@ -153,6 +154,7 @@ struct _MMBroadbandModemPrivate { gchar *carrier_config_mapping; /* Implementation helpers */ MMModemCharset modem_current_charset; + gboolean modem_cind_disabled; gboolean modem_cind_support_checked; gboolean modem_cind_supported; guint modem_cind_indicator_signal_quality; @@ -3316,14 +3318,14 @@ run_unsolicited_events_setup (GTask *task) ctx = g_task_get_task_data (task); /* CMER on primary port */ - if (!ctx->cmer_primary_done && ctx->cmer_command && ctx->primary) { + if (!ctx->cmer_primary_done && ctx->cmer_command && ctx->primary && !self->priv->modem_cind_disabled) { mm_dbg ("%s +CIND event reporting in primary port...", ctx->enable ? "Enabling" : "Disabling"); ctx->cmer_primary_done = TRUE; command = ctx->cmer_command; port = ctx->primary; } /* CMER on secondary port */ - else if (!ctx->cmer_secondary_done && ctx->cmer_command && ctx->secondary) { + else if (!ctx->cmer_secondary_done && ctx->cmer_command && ctx->secondary && !self->priv->modem_cind_disabled) { mm_dbg ("%s +CIND event reporting in secondary port...", ctx->enable ? "Enabling" : "Disabling"); ctx->cmer_secondary_done = TRUE; command = ctx->cmer_command; @@ -11769,6 +11771,9 @@ set_property (GObject *object, case PROP_FLOW_CONTROL: self->priv->flow_control = g_value_get_flags (value); break; + case PROP_INDICATORS_DISABLED: + self->priv->modem_cind_disabled = g_value_get_boolean (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -11895,6 +11900,9 @@ get_property (GObject *object, case PROP_FLOW_CONTROL: g_value_set_flags (value, self->priv->flow_control); break; + case PROP_INDICATORS_DISABLED: + g_value_set_boolean (value, self->priv->modem_cind_disabled); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -12474,4 +12482,12 @@ mm_broadband_modem_class_init (MMBroadbandModemClass *klass) MM_FLOW_CONTROL_NONE, G_PARAM_READWRITE); g_object_class_install_property (object_class, PROP_FLOW_CONTROL, properties[PROP_FLOW_CONTROL]); + + properties[PROP_INDICATORS_DISABLED] = + g_param_spec_boolean (MM_BROADBAND_MODEM_INDICATORS_DISABLED, + "Disable indicators", + "Avoid explicitly setting up +CIND URCs", + FALSE, + G_PARAM_READWRITE); + g_object_class_install_property (object_class, PROP_INDICATORS_DISABLED, properties[PROP_INDICATORS_DISABLED]); } diff --git a/src/mm-broadband-modem.h b/src/mm-broadband-modem.h index 4625b22a..8042f509 100644 --- a/src/mm-broadband-modem.h +++ b/src/mm-broadband-modem.h @@ -39,7 +39,8 @@ typedef struct _MMBroadbandModem MMBroadbandModem; typedef struct _MMBroadbandModemClass MMBroadbandModemClass; typedef struct _MMBroadbandModemPrivate MMBroadbandModemPrivate; -#define MM_BROADBAND_MODEM_FLOW_CONTROL "broadband-modem-flow-control" +#define MM_BROADBAND_MODEM_FLOW_CONTROL "broadband-modem-flow-control" +#define MM_BROADBAND_MODEM_INDICATORS_DISABLED "broadband-modem-indicators-disabled" struct _MMBroadbandModem { MMBaseModem parent; |