diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2011-11-30 13:29:00 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-03-15 14:14:30 +0100 |
commit | a92e9c59c1c2a4b2078e02d631b04eced68320be (patch) | |
tree | b3cb815289adb68b171eccff6a6d455d42ad163b /src | |
parent | a265798e0d4cf016417c85b7b8cfd288a493148f (diff) |
modem-helpers: provide list of scanned networks in a list of structs
We provide the result of the +COPS=? parsing in a GList of MM3gppNetworkInfo
structures. We avoid the previous hash table, or using a dictionary, as a
list of structs with a predefined set of elements, which should be easier for
plugins wanting to make their own version
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-modem-helpers.c | 175 | ||||
-rw-r--r-- | src/mm-modem-helpers.h | 22 | ||||
-rw-r--r-- | src/tests/test-modem-helpers.c | 376 |
3 files changed, 307 insertions, 266 deletions
diff --git a/src/mm-modem-helpers.c b/src/mm-modem-helpers.c index d046e89e..63bc07dd 100644 --- a/src/mm-modem-helpers.c +++ b/src/mm-modem-helpers.c @@ -25,6 +25,7 @@ #include <ModemManager.h> #include <mm-errors-types.h> +#include <mm-enums-types.h> #include "mm-modem-helpers.h" #include "mm-log.h" @@ -46,10 +47,20 @@ mm_strip_tag (const char *str, const char *cmd) /*************************************************************************/ static void -save_scan_value (GHashTable *hash, const char *key, GMatchInfo *info, guint32 num) +mm_3gpp_network_info_free (MM3gppNetworkInfo *info) { - char *quoted; - size_t len; + g_free (info->operator_long); + g_free (info->operator_short); + g_free (info->operator_code); + g_free (info); +} + +void +mm_3gpp_network_info_list_free (GList *info_list) +{ + g_list_foreach (info_list, (GFunc)mm_3gpp_network_info_free, NULL); + g_list_free (info_list); +} static MMModemAccessTech get_mm_access_tech_from_etsi_access_tech (guint act) @@ -77,11 +88,15 @@ get_mm_access_tech_from_etsi_access_tech (guint act) } } - g_return_if_fail (info != NULL); +static gchar * +get_unquoted_scan_value (GMatchInfo *info, guint32 num) +{ + gchar *quoted; + gsize len; quoted = g_match_info_fetch (info, num); if (!quoted) - return; + return NULL; len = strlen (quoted); @@ -94,24 +109,53 @@ get_mm_access_tech_from_etsi_access_tech (guint act) if (!strlen (quoted)) { g_free (quoted); - return; + return NULL; } - g_hash_table_insert (hash, g_strdup (key), quoted); + return quoted; } -/* If the response was successfully parsed (even if no valid entries were - * found) the pointer array will be returned. - */ -GPtrArray * -mm_gsm_parse_scan_response (const char *reply, GError **error) +static MMModem3gppNetworkAvailability +parse_network_status (const gchar *str) +{ + /* Expecting a value between '0' and '3' inclusive */ + if (!str || + strlen (str) != 1 || + str[0] < '0' || + str[0] > '3') { + mm_warn ("Cannot parse network status: '%s'", str); + return MM_MODEM_3GPP_NETWORK_AVAILABILITY_UNKNOWN; + } + + return (MMModem3gppNetworkAvailability) (str[0] - '0'); +} + +static MMModemAccessTech +parse_access_tech (const gchar *str) +{ + /* Recognized access technologies are between '0' and '7' inclusive... */ + if (!str || + strlen (str) != 1 || + str[0] < '0' || + str[0] > '7') { + mm_warn ("Cannot parse access tech: '%s'", str); + return MM_MODEM_ACCESS_TECH_UNKNOWN; + } + + return get_mm_access_tech_from_etsi_access_tech (str[0] - '0'); +} + +GList * +mm_3gpp_parse_scan_response (const gchar *reply, + GError **error) { - /* Got valid reply */ - GPtrArray *results = NULL; GRegex *r; + GList *info_list = NULL; GMatchInfo *match_info; - GError *err = NULL; gboolean umts_format = TRUE; + GEnumClass *network_availability_class; + GEnumClass *access_tech_class; + GError *inner_error = NULL; g_return_val_if_fail (reply != NULL, NULL); if (error) @@ -140,13 +184,13 @@ mm_gsm_parse_scan_response (const char *reply, GError **error) * +COPS: (2,"","T-Mobile","31026",0),(1,"AT&T","AT&T","310410"),0) */ - r = g_regex_new ("\\((\\d),([^,\\)]*),([^,\\)]*),([^,\\)]*)[\\)]?,(\\d)\\)", G_REGEX_UNGREEDY, 0, &err); - if (err) { - mm_err ("Invalid regular expression: %s", err->message); - g_error_free (err); + r = g_regex_new ("\\((\\d),([^,\\)]*),([^,\\)]*),([^,\\)]*)[\\)]?,(\\d)\\)", G_REGEX_UNGREEDY, 0, &inner_error); + if (inner_error) { + mm_err ("Invalid regular expression: %s", inner_error->message); + g_error_free (inner_error); g_set_error_literal (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, - "Could not parse scan results."); + "Could not parse scan results"); return NULL; } @@ -169,13 +213,13 @@ mm_gsm_parse_scan_response (const char *reply, GError **error) * +COPS: (2,"T - Mobile",,"31026"),(1,"Einstein PCS",,"31064"),(1,"Cingular",,"31041"),,(0,1,3),(0,2) */ - r = g_regex_new ("\\((\\d),([^,\\)]*),([^,\\)]*),([^\\)]*)\\)", G_REGEX_UNGREEDY, 0, &err); - if (err) { - mm_err ("Invalid regular expression: %s", err->message); - g_error_free (err); + r = g_regex_new ("\\((\\d),([^,\\)]*),([^,\\)]*),([^\\)]*)\\)", G_REGEX_UNGREEDY, 0, &inner_error); + if (inner_error) { + mm_err ("Invalid regular expression: %s", inner_error->message); + g_error_free (inner_error); g_set_error_literal (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, - "Could not parse scan results."); + "Could not parse scan results"); return NULL; } @@ -183,39 +227,43 @@ mm_gsm_parse_scan_response (const char *reply, GError **error) umts_format = FALSE; } + network_availability_class = G_ENUM_CLASS (g_type_class_ref (MM_TYPE_MODEM_3GPP_NETWORK_AVAILABILITY)); + access_tech_class = G_ENUM_CLASS (g_type_class_ref (MM_TYPE_MODEM_ACCESS_TECH)); + /* Parse the results */ - results = g_ptr_array_new (); while (g_match_info_matches (match_info)) { - GHashTable *hash; - char *access_tech = NULL; - const char *tmp; + MM3gppNetworkInfo *info; + gchar *tmp; gboolean valid = FALSE; - hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); + info = g_new0 (MM3gppNetworkInfo, 1); + + tmp = get_unquoted_scan_value (match_info, 1); + info->status = parse_network_status (tmp); + g_free (tmp); - save_scan_value (hash, MM_SCAN_TAG_STATUS, match_info, 1); - save_scan_value (hash, MM_SCAN_TAG_OPER_LONG, match_info, 2); - save_scan_value (hash, MM_SCAN_TAG_OPER_SHORT, match_info, 3); - save_scan_value (hash, MM_SCAN_TAG_OPER_NUM, match_info, 4); + info->operator_long = get_unquoted_scan_value (match_info, 2); + info->operator_short = get_unquoted_scan_value (match_info, 3); + info->operator_code = get_unquoted_scan_value (match_info, 4); - /* Only try for access technology with UMTS-format matches */ - if (umts_format) - access_tech = g_match_info_fetch (match_info, 5); - if (access_tech && (strlen (access_tech) == 1)) { - /* Recognized access technologies are between '0' and '6' inclusive... */ - if ((access_tech[0] >= '0') && (access_tech[0] <= '6')) - g_hash_table_insert (hash, g_strdup (MM_SCAN_TAG_ACCESS_TECH), access_tech); - } else - g_free (access_tech); + /* Only try for access technology with UMTS-format matches. + * If none give, assume GSM */ + tmp = (umts_format ? + get_unquoted_scan_value (match_info, 5) : + NULL); + info->access_tech = (tmp ? + parse_access_tech (tmp) : + MM_MODEM_ACCESS_TECH_GSM); + g_free (tmp); /* If the operator number isn't valid (ie, at least 5 digits), * ignore the scan result; it's probably the parameter stuff at the * end of the +COPS response. The regex will sometimes catch this * but there's no good way to ignore it. */ - tmp = g_hash_table_lookup (hash, MM_SCAN_TAG_OPER_NUM); - if (tmp && (strlen (tmp) >= 5)) { + if (info->operator_code && (strlen (info->operator_code) >= 5)) { valid = TRUE; + tmp = info->operator_code; while (*tmp) { if (!isdigit (*tmp) && (*tmp != '-')) { valid = FALSE; @@ -223,13 +271,28 @@ mm_gsm_parse_scan_response (const char *reply, GError **error) } tmp++; } - - if (valid) - g_ptr_array_add (results, hash); } - if (!valid) - g_hash_table_destroy (hash); + if (valid) { + GEnumValue *network_availability; + GEnumValue *access_tech; + + network_availability = g_enum_get_value (network_availability_class, + info->status); + access_tech = g_enum_get_value (access_tech_class, + info->access_tech); + + mm_dbg ("Found network '%s' ('%s','%s'); availability: %s, access tech: %s", + info->operator_code, + info->operator_short ? info->operator_short : "no short name", + info->operator_long ? info->operator_long : "no long name", + network_availability->value_nick, + access_tech->value_nick); + + info_list = g_list_prepend (info_list, info); + } + else + mm_3gpp_network_info_free (info); g_match_info_next (match_info, NULL); } @@ -237,16 +300,10 @@ mm_gsm_parse_scan_response (const char *reply, GError **error) g_match_info_free (match_info); g_regex_unref (r); - return results; -} - -void -mm_gsm_destroy_scan_data (gpointer data) -{ - GPtrArray *results = (GPtrArray *) data; + g_type_class_unref (network_availability_class); + g_type_class_unref (access_tech_class); - g_ptr_array_foreach (results, (GFunc) g_hash_table_destroy, NULL); - g_ptr_array_free (results, TRUE); + return info_list; } /*************************************************************************/ diff --git a/src/mm-modem-helpers.h b/src/mm-modem-helpers.h index 2cec700c..24ad6f53 100644 --- a/src/mm-modem-helpers.h +++ b/src/mm-modem-helpers.h @@ -22,15 +22,19 @@ #include "mm-modem-cdma.h" #include "mm-charsets.h" -#define MM_SCAN_TAG_STATUS "status" -#define MM_SCAN_TAG_OPER_LONG "operator-long" -#define MM_SCAN_TAG_OPER_SHORT "operator-short" -#define MM_SCAN_TAG_OPER_NUM "operator-num" -#define MM_SCAN_TAG_ACCESS_TECH "access-tech" - -GPtrArray *mm_gsm_parse_scan_response (const char *reply, GError **error); - -void mm_gsm_destroy_scan_data (gpointer data); +/* Network scan results expected */ +typedef struct { + MMModem3gppNetworkAvailability status; + gchar *operator_long; + gchar *operator_short; + gchar *operator_code; /* mandatory */ + MMModemAccessTech access_tech; +} MM3gppNetworkInfo; + +void mm_3gpp_network_info_list_free (GList *info_list); + +GList *mm_3gpp_parse_scan_response (const gchar *reply, + GError **error); GPtrArray *mm_gsm_creg_regex_get (gboolean solicited); diff --git a/src/tests/test-modem-helpers.c b/src/tests/test-modem-helpers.c index bcc929ab..2c8b06bd 100644 --- a/src/tests/test-modem-helpers.c +++ b/src/tests/test-modem-helpers.c @@ -24,394 +24,373 @@ typedef struct { GPtrArray *unsolicited_creg; } TestData; -#define MM_SCAN_TAG_STATUS "status" -#define MM_SCAN_TAG_OPER_LONG "operator-long" -#define MM_SCAN_TAG_OPER_SHORT "operator-short" -#define MM_SCAN_TAG_OPER_NUM "operator-num" -#define MM_SCAN_TAG_ACCESS_TECH "access-tech" - -typedef struct { - const char *status; - const char *oper_long; - const char *oper_short; - const char *oper_num; - const char *tech; -} OperEntry; - -#define ARRAY_LEN(i) (sizeof (i) / sizeof (i[0])) - static void -test_cops_results (const char *desc, - const char *reply, - OperEntry *expected_results, +test_cops_results (const gchar *desc, + const gchar *reply, + MM3gppNetworkInfo *expected_results, guint32 expected_results_len) { - guint i; + GList *l; GError *error = NULL; - GPtrArray *results; + GList *results; g_print ("\nTesting %s +COPS response...\n", desc); - results = mm_gsm_parse_scan_response (reply, &error); + results = mm_3gpp_parse_scan_response (reply, &error); g_assert (results); - g_assert (error == NULL); + g_assert_no_error (error); + g_assert_cmpuint (g_list_length (results), ==, expected_results_len); + + for (l = results; l; l = g_list_next (l)) { + MM3gppNetworkInfo *info = l->data; + gboolean found = FALSE; + guint i; + + for (i = 0; !found && i < expected_results_len; i++) { + MM3gppNetworkInfo *expected; - g_assert (results->len == expected_results_len); - - for (i = 0; i < results->len; i++) { - GHashTable *entry = g_ptr_array_index (results, i); - const char *value; - OperEntry *expected = &expected_results[i]; - - value = g_hash_table_lookup (entry, MM_SCAN_TAG_STATUS); - g_assert (value); - g_assert (strcmp (value, expected->status) == 0); - - value = g_hash_table_lookup (entry, MM_SCAN_TAG_OPER_LONG); - if (expected->oper_long) { - g_assert (value); - g_assert (strcmp (value, expected->oper_long) == 0); - } else - g_assert (value == NULL); - - value = g_hash_table_lookup (entry, MM_SCAN_TAG_OPER_SHORT); - if (expected->oper_short) { - g_assert (value); - g_assert (strcmp (value, expected->oper_short) == 0); - } else - g_assert (value == NULL); - - value = g_hash_table_lookup (entry, MM_SCAN_TAG_OPER_NUM); - g_assert (expected->oper_num); - g_assert (value); - g_assert (strcmp (value, expected->oper_num) == 0); - - value = g_hash_table_lookup (entry, MM_SCAN_TAG_ACCESS_TECH); - if (expected->tech) { - g_assert (value); - g_assert (strcmp (value, expected->tech) == 0); - } else - g_assert (value == NULL); + expected = &expected_results[i]; + if (g_str_equal (info->operator_code, expected->operator_code) && + info->access_tech == expected->access_tech) { + found = TRUE; + + g_assert_cmpuint (info->status, ==, expected->status); + + if (expected->operator_long) + g_assert_cmpstr (info->operator_long, ==, expected->operator_long); + else + g_assert (info->operator_long == NULL); + + if (expected->operator_short) + g_assert_cmpstr (info->operator_short, ==, expected->operator_short); + else + g_assert (info->operator_short == NULL); + + g_debug ("info: %s, expected: %s", info->operator_code, expected->operator_code); + } + } + + g_assert (found == TRUE); } - mm_gsm_destroy_scan_data (results); + mm_3gpp_network_info_list_free (results); } static void test_cops_response_tm506 (void *f, gpointer d) { - const char *reply = "+COPS: (2,\"\",\"T-Mobile\",\"31026\",0),(2,\"T - Mobile\",\"T - Mobile\",\"310260\"),2),(1,\"AT&T\",\"AT&T\",\"310410\"),0)"; - static OperEntry expected[] = { - { "2", NULL, "T-Mobile", "31026", "0" }, - { "2", "T - Mobile", "T - Mobile", "310260", "2" }, - { "1", "AT&T", "AT&T", "310410", "0" } + const gchar *reply = "+COPS: (2,\"\",\"T-Mobile\",\"31026\",0),(2,\"T - Mobile\",\"T - Mobile\",\"310260\"),2),(1,\"AT&T\",\"AT&T\",\"310410\"),0)"; + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, NULL, "T-Mobile", "31026", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "T - Mobile", "T - Mobile", "310260", MM_MODEM_ACCESS_TECH_UMTS }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_GSM } }; - test_cops_results ("TM-506", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("TM-506", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_gt3gplus (void *f, gpointer d) { const char *reply = "+COPS: (1,\"T-Mobile US\",\"TMO US\",\"31026\",0),(1,\"Cingular\",\"Cingular\",\"310410\",0),,(0, 1, 3),(0-2)"; - static OperEntry expected[] = { - { "1", "T-Mobile US", "TMO US", "31026", "0" }, - { "1", "Cingular", "Cingular", "310410", "0" }, + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "T-Mobile US", "TMO US", "31026", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "Cingular", "Cingular", "310410", MM_MODEM_ACCESS_TECH_GSM }, }; - test_cops_results ("GlobeTrotter 3G+ (nozomi)", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("GlobeTrotter 3G+ (nozomi)", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_ac881 (void *f, gpointer d) { const char *reply = "+COPS: (1,\"T-Mobile\",\"TMO\",\"31026\",0),(1,\"AT&T\",\"AT&T\",\"310410\",2),(1,\"AT&T\",\"AT&T\",\"310410\",0),,(0,1,2,3,4),)"; - static OperEntry expected[] = { - { "1", "T-Mobile", "TMO", "31026", "0" }, - { "1", "AT&T", "AT&T", "310410", "2" }, - { "1", "AT&T", "AT&T", "310410", "0" }, + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "T-Mobile", "TMO", "31026", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_UMTS }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_GSM }, }; - test_cops_results ("Sierra AirCard 881", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("Sierra AirCard 881", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_gtmax36 (void *f, gpointer d) { const char *reply = "+COPS: (2,\"T-Mobile US\",\"TMO US\",\"31026\",0),(1,\"AT&T\",\"AT&T\",\"310410\",2),(1,\"AT&T\",\"AT&T\",\"310410\",0),,(0, 1,)"; - static OperEntry expected[] = { - { "2", "T-Mobile US", "TMO US", "31026", "0" }, - { "1", "AT&T", "AT&T", "310410", "2" }, - { "1", "AT&T", "AT&T", "310410", "0" }, + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "T-Mobile US", "TMO US", "31026", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_UMTS }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_GSM }, }; - test_cops_results ("Option GlobeTrotter MAX 3.6", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("Option GlobeTrotter MAX 3.6", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_ac860 (void *f, gpointer d) { const char *reply = "+COPS: (2,\"T-Mobile\",\"TMO\",\"31026\",0),(1,\"Cingular\",\"Cinglr\",\"310410\",2),(1,\"Cingular\",\"Cinglr\",\"310410\",0),,)"; - static OperEntry expected[] = { - { "2", "T-Mobile", "TMO", "31026", "0" }, - { "1", "Cingular", "Cinglr", "310410", "2" }, - { "1", "Cingular", "Cinglr", "310410", "0" }, + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "T-Mobile", "TMO", "31026", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "Cingular", "Cinglr", "310410", MM_MODEM_ACCESS_TECH_UMTS }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "Cingular", "Cinglr", "310410", MM_MODEM_ACCESS_TECH_GSM }, }; - test_cops_results ("Sierra AirCard 860", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("Sierra AirCard 860", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_gtm378 (void *f, gpointer d) { const char *reply = "+COPS: (2,\"T-Mobile\",\"T-Mobile\",\"31026\",0),(1,\"AT&T\",\"AT&T\",\"310410\",2),(1,\"AT&T\",\"AT&T\",\"310410\",0),,(0, 1, 3),(0-2)"; - static OperEntry expected[] = { - { "2", "T-Mobile", "T-Mobile", "31026", "0" }, - { "1", "AT&T", "AT&T", "310410", "2" }, - { "1", "AT&T", "AT&T", "310410", "0" }, + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "T-Mobile", "T-Mobile", "31026", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_UMTS }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_GSM }, }; - test_cops_results ("Option GTM378", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("Option GTM378", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_motoc (void *f, gpointer d) { const char *reply = "+COPS: (2,\"T-Mobile\",\"\",\"310260\"),(0,\"Cingular Wireless\",\"\",\"310410\")"; - static OperEntry expected[] = { - { "2", "T-Mobile", NULL, "310260", NULL }, - { "0", "Cingular Wireless", NULL, "310410", NULL }, + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "T-Mobile", NULL, "310260", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_UNKNOWN, "Cingular Wireless", NULL, "310410", MM_MODEM_ACCESS_TECH_GSM }, }; - test_cops_results ("BUSlink SCWi275u (Motorola C-series)", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("BUSlink SCWi275u (Motorola C-series)", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_mf627a (void *f, gpointer d) { const char *reply = "+COPS: (2,\"AT&T@\",\"AT&TD\",\"310410\",0),(3,\"Voicestream Wireless Corporation\",\"VSTREAM\",\"31026\",0),"; - static OperEntry expected[] = { - { "2", "AT&T@", "AT&TD", "310410", "0" }, - { "3", "Voicestream Wireless Corporation", "VSTREAM", "31026", "0" }, + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "AT&T@", "AT&TD", "310410", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_FORBIDDEN, "Voicestream Wireless Corporation", "VSTREAM", "31026", MM_MODEM_ACCESS_TECH_GSM }, }; - test_cops_results ("ZTE MF627 (A)", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("ZTE MF627 (A)", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_mf627b (void *f, gpointer d) { const char *reply = "+COPS: (2,\"AT&Tp\",\"AT&T@\",\"310410\",0),(3,\"\",\"\",\"31026\",0),"; - static OperEntry expected[] = { - { "2", "AT&Tp", "AT&T@", "310410", "0" }, - { "3", NULL, NULL, "31026", "0" }, + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "AT&Tp", "AT&T@", "310410", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_FORBIDDEN, NULL, NULL, "31026", MM_MODEM_ACCESS_TECH_GSM }, }; - test_cops_results ("ZTE MF627 (B)", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("ZTE MF627 (B)", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_e160g (void *f, gpointer d) { const char *reply = "+COPS: (2,\"T-Mobile\",\"TMO\",\"31026\",0),(1,\"AT&T\",\"AT&T\",\"310410\",0),,(0,1,2,3,4),(0,1,2)"; - static OperEntry expected[] = { - { "2", "T-Mobile", "TMO", "31026", "0" }, - { "1", "AT&T", "AT&T", "310410", "0" }, + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "T-Mobile", "TMO", "31026", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_GSM }, }; - test_cops_results ("Huawei E160G", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("Huawei E160G", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_mercury (void *f, gpointer d) { const char *reply = "+COPS: (2,\"\",\"\",\"310410\",2),(1,\"AT&T\",\"AT&T\",\"310410\",0),(1,\"T-Mobile\",\"TMO\",\"31026\",0),,(0,1,2,3,4),(0,1,2)"; - static OperEntry expected[] = { - { "2", NULL, NULL, "310410", "2" }, - { "1", "AT&T", "AT&T", "310410", "0" }, - { "1", "T-Mobile", "TMO", "31026", "0" }, + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, NULL, NULL, "310410", MM_MODEM_ACCESS_TECH_UMTS }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "T-Mobile", "TMO", "31026", MM_MODEM_ACCESS_TECH_GSM }, }; - test_cops_results ("Sierra AT&T USBConnect Mercury", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("Sierra AT&T USBConnect Mercury", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_quicksilver (void *f, gpointer d) { const char *reply = "+COPS: (2,\"AT&T\",\"\",\"310410\",0),(2,\"\",\"\",\"3104100\",2),(1,\"AT&T\",\"\",\"310260\",0),,(0-4),(0-2)"; - static OperEntry expected[] = { - { "2", "AT&T", NULL, "310410", "0" }, - { "2", NULL, NULL, "3104100", "2" }, - { "1", "AT&T", NULL, "310260", "0" }, + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "AT&T", NULL, "310410", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, NULL, NULL, "3104100", MM_MODEM_ACCESS_TECH_UMTS }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", NULL, "310260", MM_MODEM_ACCESS_TECH_GSM }, }; - test_cops_results ("Option AT&T Quicksilver", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("Option AT&T Quicksilver", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_icon225 (void *f, gpointer d) { const char *reply = "+COPS: (2,\"T-Mobile US\",\"TMO US\",\"31026\",0),(1,\"AT&T\",\"AT&T\",\"310410\",0),,(0, 1, 3),(0-2)"; - static OperEntry expected[] = { - { "2", "T-Mobile US", "TMO US", "31026", "0" }, - { "1", "AT&T", "AT&T", "310410", "0" }, + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "T-Mobile US", "TMO US", "31026", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_GSM }, }; - test_cops_results ("Option iCON 225", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("Option iCON 225", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_icon452 (void *f, gpointer d) { const char *reply = "+COPS: (1,\"T-Mobile US\",\"TMO US\",\"31026\",0),(2,\"T-Mobile\",\"T-Mobile\",\"310260\",2),(1,\"AT&T\",\"AT&T\",\"310410\",2),(1,\"AT&T\",\"AT&T\",\"310410\",0),,(0,1,2,3,4),(0,1,2)"; - static OperEntry expected[] = { - { "1", "T-Mobile US", "TMO US", "31026", "0" }, - { "2", "T-Mobile", "T-Mobile", "310260", "2" }, - { "1", "AT&T", "AT&T", "310410", "2" }, - { "1", "AT&T", "AT&T", "310410", "0" } + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "T-Mobile US", "TMO US", "31026", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "T-Mobile", "T-Mobile", "310260", MM_MODEM_ACCESS_TECH_UMTS }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_UMTS }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_GSM } }; - test_cops_results ("Option iCON 452", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("Option iCON 452", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_f3507g (void *f, gpointer d) { const char *reply = "+COPS: (2,\"T - Mobile\",\"T - Mobile\",\"31026\",0),(1,\"AT&T\",\"AT&T\",\"310410\",0),(1,\"AT&T\",\"AT&T\",\"310410\",2)"; - static OperEntry expected[] = { - { "2", "T - Mobile", "T - Mobile", "31026", "0" }, - { "1", "AT&T", "AT&T", "310410", "0" }, - { "1", "AT&T", "AT&T", "310410", "2" } + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "T - Mobile", "T - Mobile", "31026", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_UMTS } }; - test_cops_results ("Ericsson F3507g", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("Ericsson F3507g", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_f3607gw (void *f, gpointer d) { const char *reply = "+COPS: (2,\"T - Mobile\",\"T - Mobile\",\"31026\",0),(1,\"AT&T\",\"AT&T\",\"310410\"),2),(1,\"AT&T\",\"AT&T\",\"310410\"),0)"; - static OperEntry expected[] = { - { "2", "T - Mobile", "T - Mobile", "31026", "0" }, - { "1", "AT&T", "AT&T", "310410", "2" }, - { "1", "AT&T", "AT&T", "310410", "0" } + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "T - Mobile", "T - Mobile", "31026", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_UMTS }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_GSM } }; - test_cops_results ("Ericsson F3607gw", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("Ericsson F3607gw", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_mc8775 (void *f, gpointer d) { const char *reply = "+COPS: (2,\"T-Mobile\",\"T-Mobile\",\"31026\",0),(1,\"AT&T\",\"AT&T\",\"310410\",2),(1,\"AT&T\",\"AT&T\",\"310410\",0),,(0,1,2,3,4),(0,1,2)"; - static OperEntry expected[] = { - { "2", "T-Mobile", "T-Mobile", "31026", "0" }, - { "1", "AT&T", "AT&T", "310410", "2" }, - { "1", "AT&T", "AT&T", "310410", "0" } + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "T-Mobile", "T-Mobile", "31026", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_UMTS }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_GSM } }; - test_cops_results ("Sierra MC8775", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("Sierra MC8775", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_n80 (void *f, gpointer d) { const char *reply = "+COPS: (2,\"T - Mobile\",,\"31026\"),(1,\"Einstein PCS\",,\"31064\"),(1,\"Cingular\",,\"31041\"),,(0,1,3),(0,2)"; - static OperEntry expected[] = { - { "2", "T - Mobile", NULL, "31026", NULL }, - { "1", "Einstein PCS", NULL, "31064", NULL }, - { "1", "Cingular", NULL, "31041", NULL }, + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "T - Mobile", NULL, "31026", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "Einstein PCS", NULL, "31064", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "Cingular", NULL, "31041", MM_MODEM_ACCESS_TECH_GSM }, }; - test_cops_results ("Nokia N80", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("Nokia N80", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_e1550 (void *f, gpointer d) { const char *reply = "+COPS: (2,\"T-Mobile\",\"TMO\",\"31026\",0),(1,\"AT&T\",\"AT&T\",\"310410\",0),,(0,1,2,3,4),(0,1,2)"; - static OperEntry expected[] = { - { "2", "T-Mobile", "TMO", "31026", "0" }, - { "1", "AT&T", "AT&T", "310410", "0" }, + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "T-Mobile", "TMO", "31026", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_GSM }, }; - test_cops_results ("Huawei E1550", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("Huawei E1550", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_mf622 (void *f, gpointer d) { const char *reply = "+COPS: (2,\"T-Mobile\",\"T-Mobile\",\"31026\",0),(1,\"\",\"\",\"310410\",0),"; - static OperEntry expected[] = { - { "2", "T-Mobile", "T-Mobile", "31026", "0" }, - { "1", NULL, NULL, "310410", "0" }, + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "T-Mobile", "T-Mobile", "31026", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, NULL, NULL, "310410", MM_MODEM_ACCESS_TECH_GSM }, }; - test_cops_results ("ZTE MF622", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("ZTE MF622", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_e226 (void *f, gpointer d) { const char *reply = "+COPS: (1,\"\",\"\",\"31026\",0),(1,\"\",\"\",\"310410\",2),(1,\"\",\"\",\"310410\",0),,(0,1,3,4),(0,1,2)"; - static OperEntry expected[] = { - { "1", NULL, NULL, "31026", "0" }, - { "1", NULL, NULL, "310410", "2" }, - { "1", NULL, NULL, "310410", "0" }, + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, NULL, NULL, "31026", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, NULL, NULL, "310410", MM_MODEM_ACCESS_TECH_UMTS }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, NULL, NULL, "310410", MM_MODEM_ACCESS_TECH_GSM }, }; - test_cops_results ("Huawei E226", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("Huawei E226", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_xu870 (void *f, gpointer d) { const char *reply = "+COPS: (0,\"AT&T MicroCell\",\"AT&T MicroCell\",\"310410\",2)\r\n+COPS: (1,\"AT&T MicroCell\",\"AT&T MicroCell\",\"310410\",0)\r\n+COPS: (1,\"T-Mobile\",\"TMO\",\"31026\",0)\r\n"; - static OperEntry expected[] = { - { "0", "AT&T MicroCell", "AT&T MicroCell", "310410", "2" }, - { "1", "AT&T MicroCell", "AT&T MicroCell", "310410", "0" }, - { "1", "T-Mobile", "TMO", "31026", "0" }, + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_UNKNOWN, "AT&T MicroCell", "AT&T MicroCell", "310410", MM_MODEM_ACCESS_TECH_UMTS }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T MicroCell", "AT&T MicroCell", "310410", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "T-Mobile", "TMO", "31026", MM_MODEM_ACCESS_TECH_GSM }, }; - test_cops_results ("Novatel XU870", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("Novatel XU870", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_gtultraexpress (void *f, gpointer d) { const char *reply = "+COPS: (2,\"T-Mobile US\",\"TMO US\",\"31026\",0),(1,\"AT&T\",\"AT&T\",\"310410\",2),(1,\"AT&T\",\"AT&T\",\"310410\",0),,(0,1,2,3,4),(0,1,2)"; - static OperEntry expected[] = { - { "2", "T-Mobile US", "TMO US", "31026", "0" }, - { "1", "AT&T", "AT&T", "310410", "2" }, - { "1", "AT&T", "AT&T", "310410", "0" }, + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "T-Mobile US", "TMO US", "31026", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_UMTS }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_GSM }, }; - test_cops_results ("Option GlobeTrotter Ultra Express", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("Option GlobeTrotter Ultra Express", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_n2720 (void *f, gpointer d) { const char *reply = "+COPS: (2,\"T - Mobile\",,\"31026\",0),\r\n(1,\"AT&T\",,\"310410\",0),,(0,1,3),(0,2)"; - static OperEntry expected[] = { - { "2", "T - Mobile", NULL, "31026", "0" }, - { "1", "AT&T", NULL, "310410", "0" }, + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "T - Mobile", NULL, "31026", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", NULL, "310410", MM_MODEM_ACCESS_TECH_GSM }, }; - test_cops_results ("Nokia 2720", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("Nokia 2720", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_gobi (void *f, gpointer d) { const char *reply = "+COPS: (2,\"T-Mobile\",\"T-Mobile\",\"31026\",0),(1,\"AT&T\",\"AT&T\",\"310410\",2),(1,\"AT&T\",\"AT&T\",\"310410\",0),,(0,1,2,3,4),(0,1,2)"; - static OperEntry expected[] = { - { "2", "T-Mobile", "T-Mobile", "31026", "0" }, - { "1", "AT&T", "AT&T", "310410", "2" }, - { "1", "AT&T", "AT&T", "310410", "0" }, + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "T-Mobile", "T-Mobile", "31026", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_UMTS }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_AVAILABLE, "AT&T", "AT&T", "310410", MM_MODEM_ACCESS_TECH_GSM }, }; - test_cops_results ("Qualcomm Gobi", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("Qualcomm Gobi", reply, &expected[0], G_N_ELEMENTS (expected)); } static void @@ -422,41 +401,41 @@ test_cops_response_sek600i (void *f, gpointer d) * which is which... */ const char *reply = "+COPS: (2,\"blau\",\"\",\"26203\"),(2,\"blau\",\"\",\"26203\"),(3,\"\",\"\",\"26201\"),(3,\"\",\"\",\"26202\"),(3,\"\",\"\",\"26207\"),(3,\"\",\"\",\"26201\"),(3,\"\",\"\",\"26207\")"; - static OperEntry expected[] = { - { "2", "blau", NULL, "26203", NULL }, - { "2", "blau", NULL, "26203", NULL }, - { "3", NULL, NULL, "26201", NULL }, - { "3", NULL, NULL, "26202", NULL }, - { "3", NULL, NULL, "26207", NULL }, - { "3", NULL, NULL, "26201", NULL }, - { "3", NULL, NULL, "26207", NULL }, + static MM3gppNetworkInfo expected[] = { + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "blau", NULL, "26203", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, "blau", NULL, "26203", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_FORBIDDEN, NULL, NULL, "26201", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_FORBIDDEN, NULL, NULL, "26202", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_FORBIDDEN, NULL, NULL, "26207", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_FORBIDDEN, NULL, NULL, "26201", MM_MODEM_ACCESS_TECH_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_FORBIDDEN, NULL, NULL, "26207", MM_MODEM_ACCESS_TECH_GSM }, }; - test_cops_results ("Sony-Ericsson K600i", reply, &expected[0], ARRAY_LEN (expected)); + test_cops_results ("Sony-Ericsson K600i", reply, &expected[0], G_N_ELEMENTS (expected)); } static void test_cops_response_gsm_invalid (void *f, gpointer d) { - const char *reply = "+COPS: (0,1,2,3),(1,2,3,4)"; - GPtrArray *results; + const gchar *reply = "+COPS: (0,1,2,3),(1,2,3,4)"; + GList *results; GError *error = NULL; - results = mm_gsm_parse_scan_response (reply, &error); - g_assert (results != NULL); - g_assert (error == NULL); + results = mm_3gpp_parse_scan_response (reply, &error); + g_assert (results == NULL); + g_assert_no_error (error); } static void test_cops_response_umts_invalid (void *f, gpointer d) { const char *reply = "+COPS: (0,1,2,3,4),(1,2,3,4,5)"; - GPtrArray *results; + GList *results; GError *error = NULL; - results = mm_gsm_parse_scan_response (reply, &error); - g_assert (results != NULL); - g_assert (error == NULL); + results = mm_3gpp_parse_scan_response (reply, &error); + g_assert (results == NULL); + g_assert_no_error (error); } typedef struct { @@ -1178,7 +1157,7 @@ test_cind_response_linktop_lw273 (void *f, gpointer d) { "message", 0, 1 } }; - test_cind_results ("LW273", reply, &expected[0], ARRAY_LEN (expected)); + test_cind_results ("LW273", reply, &expected[0], G_N_ELEMENTS (expected)); } static void @@ -1195,7 +1174,7 @@ test_cind_response_moto_v3m (void *f, gpointer d) { "smsfull", 0, 1 } }; - test_cind_results ("Motorola V3m", reply, &expected[0], ARRAY_LEN (expected)); + test_cind_results ("Motorola V3m", reply, &expected[0], G_N_ELEMENTS (expected)); } static TestData * @@ -1242,6 +1221,7 @@ int main (int argc, char **argv) gint result; DevidItem *item = &devids[0]; + g_type_init (); g_test_init (&argc, &argv, NULL); suite = g_test_get_root (); |