aboutsummaryrefslogtreecommitdiff
path: root/src/mm-modem-helpers.c
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2018-09-10 23:36:45 +0200
committerDan Williams <dcbw@redhat.com>2018-09-12 17:15:46 +0000
commit4c669d3bf46da3b4f924968e43fc2edfbfa0b5d7 (patch)
tree26d99b73db7841cd78877cf036ee769b03aef354 /src/mm-modem-helpers.c
parentfc1beefe927adb8d9bed3f554ddfb73a09593630 (diff)
modem-helpers: reuse nicknames for the flow control tags
And check that the string given in the tag is actually a valid one.
Diffstat (limited to 'src/mm-modem-helpers.c')
-rw-r--r--src/mm-modem-helpers.c30
1 files changed, 17 insertions, 13 deletions
diff --git a/src/mm-modem-helpers.c b/src/mm-modem-helpers.c
index 1df64341..01d04eee 100644
--- a/src/mm-modem-helpers.c
+++ b/src/mm-modem-helpers.c
@@ -30,6 +30,7 @@
#include "mm-sms-part.h"
#include "mm-modem-helpers.h"
+#include "mm-helper-enums-types.h"
#include "mm-log.h"
/*****************************************************************************/
@@ -647,22 +648,25 @@ out:
}
MMFlowControl
-mm_parse_flow_control_tag (const gchar *flow_control_tag)
+mm_flow_control_from_string (const gchar *str,
+ GError **error)
{
- MMFlowControl flow_control;
-
- if (g_strcmp0 ("xonxoff", flow_control_tag) == 0)
- flow_control = MM_FLOW_CONTROL_XON_XOFF;
- else if (g_strcmp0 ("rtscts", flow_control_tag) == 0)
- flow_control = MM_FLOW_CONTROL_RTS_CTS;
- else if (g_strcmp0 ("none", flow_control_tag) == 0)
- flow_control = MM_FLOW_CONTROL_NONE;
- else {
- mm_warn ("Cannot parse flow control tag: '%s', setting as unknown", flow_control_tag);
- flow_control = MM_FLOW_CONTROL_UNKNOWN;
+ GFlagsClass *flags_class;
+ guint i;
+
+ flags_class = G_FLAGS_CLASS (g_type_class_ref (MM_TYPE_FLOW_CONTROL));
+
+ for (i = 0; flags_class->values[i].value_nick; i++) {
+ if (!g_ascii_strcasecmp (str, flags_class->values[i].value_nick))
+ return flags_class->values[i].value;
}
- return flow_control;
+ g_set_error (error,
+ MM_CORE_ERROR,
+ MM_CORE_ERROR_INVALID_ARGS,
+ "Couldn't match '%s' with a valid MMFlowControl value",
+ str);
+ return MM_FLOW_CONTROL_UNKNOWN;
}
/*************************************************************************/