diff options
author | Dan Williams <dcbw@redhat.com> | 2009-10-06 12:38:21 -0700 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2009-10-06 12:38:21 -0700 |
commit | 01100c1008ffe6b74cf0fdb9cc646503f8c39b1c (patch) | |
tree | 23d13d2a55f27beecc0b143a5533db4ec27083a6 /src | |
parent | 5079b32a09acba15cb0107bbb64c51a16f11b658 (diff) |
gsm: strip command response bits from mfg/model/revision responses
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-generic-gsm.c | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/src/mm-generic-gsm.c b/src/mm-generic-gsm.c index ac78e12b..3becf7f6 100644 --- a/src/mm-generic-gsm.c +++ b/src/mm-generic-gsm.c @@ -18,6 +18,7 @@ #include <stdlib.h> #include <stdio.h> #include <string.h> +#include <ctype.h> #include "mm-generic-gsm.h" #include "mm-modem-gsm-card.h" #include "mm-modem-gsm-network.h" @@ -511,6 +512,21 @@ card_info_invoke (MMCallbackInfo *info) info->error, info->user_data); } +#define GMI_RESP_TAG "+CGMI:" +#define GMM_RESP_TAG "+CGMM:" +#define GMR_RESP_TAG "+CGMR:" + +static const char * +strip_tag (const char *str, const char *tag) +{ + /* Strip the response header, if any */ + if (strncmp (str, tag, strlen (tag)) == 0) + str += strlen (tag); + while (*str && isspace (*str)) + str++; + return str; +} + static void get_version_done (MMSerialPort *port, GString *response, @@ -518,9 +534,10 @@ get_version_done (MMSerialPort *port, gpointer user_data) { MMCallbackInfo *info = (MMCallbackInfo *) user_data; + const char *resp = strip_tag (response->str, GMR_RESP_TAG); if (!error) - mm_callback_info_set_data (info, "card-info-version", g_strdup (response->str), g_free); + mm_callback_info_set_data (info, "card-info-version", g_strdup (resp), g_free); else if (!info->error) info->error = g_error_copy (error); @@ -534,9 +551,10 @@ get_model_done (MMSerialPort *port, gpointer user_data) { MMCallbackInfo *info = (MMCallbackInfo *) user_data; + const char *resp = strip_tag (response->str, GMM_RESP_TAG); if (!error) - mm_callback_info_set_data (info, "card-info-model", g_strdup (response->str), g_free); + mm_callback_info_set_data (info, "card-info-model", g_strdup (resp), g_free); else if (!info->error) info->error = g_error_copy (error); } @@ -548,9 +566,10 @@ get_manufacturer_done (MMSerialPort *port, gpointer user_data) { MMCallbackInfo *info = (MMCallbackInfo *) user_data; + const char *resp = strip_tag (response->str, GMI_RESP_TAG); if (!error) - mm_callback_info_set_data (info, "card-info-manufacturer", g_strdup (response->str), g_free); + mm_callback_info_set_data (info, "card-info-manufacturer", g_strdup (resp), g_free); else info->error = g_error_copy (error); } |