aboutsummaryrefslogtreecommitdiff
path: root/src/tests/test-modem-helpers.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/test-modem-helpers.c')
-rw-r--r--src/tests/test-modem-helpers.c412
1 files changed, 412 insertions, 0 deletions
diff --git a/src/tests/test-modem-helpers.c b/src/tests/test-modem-helpers.c
index 92a7af8..946916f 100644
--- a/src/tests/test-modem-helpers.c
+++ b/src/tests/test-modem-helpers.c
@@ -17,6 +17,7 @@
#include <string.h>
#include "mm-modem-helpers.h"
+#include "mm-log.h"
typedef struct {
GPtrArray *solicited_creg;
@@ -711,6 +712,27 @@ test_creg_cgreg_multi2_unsolicited (void *f, gpointer d)
}
static void
+test_cgreg2_x220_unsolicited (void *f, gpointer d)
+{
+ TestData *data = (TestData *) d;
+ const char *reply = "\r\n+CGREG: 2,1, 81ED, 1A9CEB\r\n";
+ const CregResult result = { 1, 0x81ED, 0x1A9CEB, -1, 4, TRUE};
+
+ /* Tests random spaces in response */
+ test_creg_match ("Alcatel One-Touch X220D CGREG=2", FALSE, reply, data, &result);
+}
+
+static void
+test_creg2_s8500_wave_unsolicited (void *f, gpointer d)
+{
+ TestData *data = (TestData *) d;
+ const char *reply = "\r\n+CREG: 2,1,000B,2816, B, C2816\r\n";
+ const CregResult result = { 1, 0x000B, 0x2816, 0, 7, FALSE};
+
+ test_creg_match ("Samsung Wave S8500 CREG=2", FALSE, reply, data, &result);
+}
+
+static void
test_cscs_icon225_support_response (void *f, gpointer d)
{
const char *reply = "\r\n+CSCS: (\"IRA\",\"GSM\",\"UCS2\")\r\n";
@@ -771,6 +793,372 @@ test_cscs_blackberry_support_response (void *f, gpointer d)
g_assert (charsets == MM_MODEM_CHARSET_IRA);
}
+typedef struct {
+ char *devid;
+ char *desc;
+ guint vid;
+ guint pid;
+ const char *ati;
+ const char *ati1;
+ const char *gsn;
+ const char *revision;
+ const char *model;
+ const char *manf;
+} DevidItem;
+
+static DevidItem devids[] = {
+ { "36e7a8e78637fd380b2664507ea5de8fc317d05b",
+ "Huawei E1550",
+ 0x12d1, 0x1001,
+ "\nManufacturer: huawei\n"
+ "Model: E1550\n"
+ "Revision: 11.608.09.01.21\n"
+ "IMEI: 235012412595195\n"
+ "+GCAP: +CGSM,+FCLASS,+DS\n",
+ NULL,
+ "\n235012412595195\n",
+ "\n11.608.09.01.21\n",
+ "\nE1550\n",
+ "\nhuawei\n"
+ },
+ { "33b0fc4a06af5448df656ce12925979acf1cb600",
+ "Huawei EC121",
+ 0x12d1, 0x1411,
+ "\nManufacturer: HUAWEI INCORPORATED\n"
+ "Model: EC121\n"
+ "Revision: 11.100.17.00.114\n"
+ "ESN: +GSN:12de4fa6\n"
+ "+CIS707-A, +MS, +ES, +DS, +FCLASS\n",
+ NULL,
+ "\n12de4fa6\n",
+ "\n11.100.17.00.114\n",
+ "\nEC121\n",
+ "\nHUAWEI INCORPORATED\n"
+ },
+ { "d17f016a402354eaa1e24855f4308fafca9cadb1",
+ "Sierra USBConnect Mercury",
+ 0x1199, 0x6880,
+ "\nManufacturer: Sierra Wireless, Inc.\n"
+ "Model: C885\n"
+ "Revision: J1_0_1_26AP C:/WS/FW/J1_0_1_26AP/MSM7200A/SRC/AMSS 2009/01/30 07:58:06\n"
+ "IMEI: 987866969112306\n"
+ "IMEI SV: 6\n"
+ "FSN: D603478104511\n"
+ "3GPP Release 6\n"
+ "+GCAP: +CGSM,+DS,+ES\n",
+ NULL,
+ "\n987866969112306\n",
+ "\nJ1_0_1_26AP C:/WS/FW/J1_0_1_26AP/MSM7200A/SRC/AMSS 2009/01/30 07:58:06\n",
+ "\nC885\n",
+ "\nSierra Wireless, Inc.\n"
+ },
+ { "345e9eaad7624393aca85cde9bd859edf462414c",
+ "ZTE MF627",
+ 0x19d2, 0x0031,
+ "\nManufacturer: ZTE INCORPORATED\n"
+ "Model: MF627\n"
+ "Revision: BD_3GHAP673A4V1.0.0B02\n"
+ "IMEI: 023589923858188\n"
+ "+GCAP: +CGSM,+FCLASS,+DS\n",
+ NULL,
+ "\n023589923858188\n",
+ "\nBD_3GHAP673A4V1.0.0B02\n",
+ "\nMF627\n",
+ "\nZTE INCORPORATED\n"
+ },
+ { "69fa133a668b6f4dbf39b73500fd153ec240c73f",
+ "Sony-Ericsson MD300",
+ 0x0fce, 0xd0cf,
+ "\nMD300\n",
+ "\nR3A018\n",
+ "\n349583712939483\n",
+ "\nR3A018\n",
+ "\nMD300\n",
+ "\nSony Ericsson\n"
+ },
+ { "3dad89ed7d774938c38188cf29cf1c211e9d360b",
+ "Option iCON 7.2",
+ 0x0af0, 0x6901,
+ "\nManufacturer: Option N.V.\n"
+ "Model: GTM378\n"
+ "Revision: 2.5.21Hd (Date: Jun 17 2008, Time: 12:30:47)\n",
+ NULL,
+ "\n129512359199159,SE393939TS\n",
+ "\n2.5.21Hd (Date: Jun 17 2008, Time: 12:30:47)\n",
+ "\nGTM378\n",
+ "\nOption N.V.\n"
+ },
+ { "b0acccb956c9eaf2076e03697e74bf998dc44179",
+ "ZTE MF622",
+ 0x19d2, 0x0001,
+ NULL,
+ NULL,
+ "\n235251122555115\n",
+ "\n3UKP671M3V1.0.0B08 3UKP671M3V1.0.0B08 1 [Jan 07 2008 16:00:00]\n",
+ "\nMF622\n",
+ "\nZTE INCORPORATED\n"
+ },
+ { "29a5b258f1dc6f50c66a1a9a1ecdde97560799ab",
+ "Option 452",
+ 0x0af0, 0x7901,
+ "\nManufacturer: Option N.V.\n"
+ "Model: GlobeTrotter HSUPA Modem\n"
+ "Revision: 2.12.0.0Hd (Date: Oct 29 2009, Time: 09:56:48)\n",
+ "\nManufacturer: Option N.V.\n"
+ "Model: GlobeTrotter HSUPA Modem\n"
+ "Revision: 2.12.0.0Hd (Date: Oct 29 2009, Time: 09:56:48)\n",
+ "\n000125491259519,PH2155R3TR\n",
+ "\n2.12.0.0Hd (Date: Oct 29 2009, Time: 09:56:48)\n",
+ "\nGlobeTrotter HSUPA Modem\n",
+ "\nOption N.V.\n"
+ },
+ { "c756c67e960e693d5d221e381ea170b60bb9288f",
+ "Novatel XU870",
+ 0x413c, 0x8118,
+ "\nManufacturer: Novatel Wireless Incorporated\n"
+ "Model: DELL XU870 ExpressCard\n"
+ "Revision: 9.5.05.01-02 [2006-10-20 17:19:09]\n"
+ "IMEI: 012051505051501\n"
+ "+GCAP: +CGSM,+DS\n",
+ "\nManufacturer: Novatel Wireless Incorporated\n"
+ "Model: DELL XU870 ExpressCard\n"
+ "Revision: 9.5.05.01-02 [2006-10-20 17:19:09]\n"
+ "IMEI: 012051505051501\n"
+ "+GCAP: +CGSM,+DS\n",
+ "\n012051505051501\n",
+ "\n9.5.05.01-02 [2006-10-20 17:19:09]\n",
+ "\nDELL XU870 ExpressCard\n",
+ "\nNovatel Wireless Incorporated\n"
+ },
+ { "4162ba918ab54b7776bccc3830e6c6b7a6738244",
+ "Zoom 4596",
+ 0x1c9e, 0x9603,
+ "\nManufacturer: Manufacturer\n"
+ "Model: HSPA USB MODEM\n"
+ "Revision: LQA0021.1.1_M573A\n"
+ "IMEI: 239664699635121\n"
+ "+GCAP: +CGSM,+FCLASS,+DS\n",
+ "\nManufacturer: Manufacturer\n"
+ "Model: HSPA USB MODEM\n"
+ "Revision: LQA0021.1.1_M573A\n"
+ "IMEI: 239664699635121\n"
+ "+GCAP: +CGSM,+FCLASS,+DS\n",
+ "\n239664699635121\n",
+ "\nLQA0021.1.1_M573A\n",
+ "\nHSPA USB MODEM\n",
+ "\nManufacturer\n"
+ },
+ { "6d3a2fccd3588943a8962fd1e0d3ba752c706660",
+ "C-MOTECH CDX-650",
+ 0x16d8, 0x6512,
+ "\nManufacturer: C-MOTECH Co., Ltd.\r\r\n"
+ "Model: CDX-650 \r\r\n"
+ "Revision: CDX65UAC03\r\r\n"
+ "Esn: 3B0C4B98\r\r\n"
+ "+GCAP: +CIS707A, +MS, +ES, +DS, +FCLASS\r\n",
+ "\nManufacturer: C-MOTECH Co., Ltd.\r\r\n"
+ "Model: CDX-650 \r\r\n"
+ "Revision: CDX65UAC03\r\r\n"
+ "Esn: 3B0C4B98\r\r\n"
+ "+GCAP: +CIS707A, +MS, +ES, +DS, +FCLASS\r\n",
+ "\n0x3B0C4B98\n",
+ "\nCDX65UAC03 1 [Oct 17 2007 13:30:00]\n",
+ "\nModel CDX-650 \n",
+ "\nC-MOTECH Co., Ltd.\n"
+ },
+ { "cf50da63e6d48beb1d1c3b41d70ef6fa534c3e13",
+ "BUSlink SCWi275u",
+ 0x22b8, 0x3802,
+ "\n144\n",
+ "\n000\n",
+ NULL,
+ "\n\"ADE_05_00_06032300I\"\n",
+ "\n\"GSM900\",\"GSM1800\",\"GSM1900\",\"GSM850\",\"MODEL=I250-000\"\n",
+ "\n\"Motorola CE, Copyright 2000\"\n"
+ },
+ { "2aff568f2b60f3d6f3f6cac708ed5dce77b12b96",
+ "Motorola ROKR E2",
+ 0x22b8, 0x3802,
+ NULL,
+ NULL,
+ "\n\"626936926396996\"\n",
+ "\n\"R564_G_12.00.47P\"\n",
+ "\n\"E2\"\n",
+ "\n\"Motorola\"\n"
+ },
+ { "a7136c6067a43f055ca093cee75cb98ce6c9658e",
+ "Sony-Ericsson W580i",
+ 0x0fce, 0xd089,
+ "\nSony Ericsson W580\n",
+ "\nCXC1123481\n",
+ "\n012505051512505\n",
+ "\nR8BE001 080115 1451 CXC1123481_NAM_1_LA\n",
+ "\nAAC-1052042-BV\n",
+ "\nSony Ericsson\n"
+ },
+ { "b80ee70214bdf9672f2a268ce165ecfd9def5721",
+ "Huawei E226",
+ 0x12d1, 0x1003,
+ "\nManufacturer: huawei\n"
+ "Model: E226\n"
+ "Revision: 11.310.15.00.150\n"
+ "IMEI: 232363662362362\n"
+ "+GCAP: +CGSM,+FCLASS,+DS\n",
+ "\nManufacturer: huawei\n"
+ "Model: E226\n"
+ "Revision: 11.310.15.00.150\n"
+ "IMEI: 232363662362362\n"
+ "+GCAP: +CGSM,+FCLASS,+DS\n",
+ "\n232363662362362\n",
+ "\n11.310.15.00.150\n",
+ "\nE226\n",
+ "\nhuawei\n"
+ },
+ { "d902e1f234863aa107bfc2d0faefbee5ed6901f1",
+ "LG LX265",
+ 0x1004, 0x6000,
+ "\nManufacturer: +GMI: LG Electronics Inc.\n"
+ "Model: +GMI: LG Electronics Inc.+GMM: Model:LG-LX265\n"
+ "Revision: +GMR: LX265V05, 50571\n"
+ "ESN: +GSN: 0x9235EB52\n"
+ "+GCAP: +CIS707-A, +MS, +ES, +DS, +FCLASS\n",
+ "\nManufacturer: +GMI: LG Electronics Inc.\n"
+ "Model: +GMI: LG Electronics Inc.+GMM: Model:LG-LX265\n"
+ "Revision: +GMR: LX265V05, 50571\n"
+ "ESN: +GSN: 0x9235EB52\n"
+ "+GCAP: +CIS707-A, +MS, +ES, +DS, +FCLASS\n",
+ "\n0x9235EB52\n",
+ "\nLX265V05, 50571\n",
+ "\nModel:LG-LX265\n",
+ "\nLG Electronics Inc.\n"
+ },
+ { "543c2920e450e20a46368861fdec3a3b97ba8663",
+ "Nokia 2720a BT",
+ 0x0000, 0x0000,
+ "\nNokia\n",
+ "\n012350150101501\n",
+ "\n012350150101501\n",
+ "\nV 08.62\n"
+ "24-07-09\n"
+ "RM-520\n"
+ "(c) Nokia \n",
+ "\nNokia 2720a-2b\n",
+ "\nNokia\n"
+ },
+ { "6386ffa7a39ced3c9bfd1d693b90975661e54a86",
+ "Gobi 1000",
+ 0x03f0, 0x1f1d,
+ "\nManufacturer: QUALCOMM INCORPORATED\n"
+ "Model: 88\n"
+ "Revision: D1020-SUUAASFA-4352 1 [Apr 14 2008 18:00:00]\n"
+ "IMEI: 239639269236269\n"
+ "+GCAP: +CGSM,+DS\n",
+ "\nManufacturer: QUALCOMM INCORPORATED\n"
+ "Model: 88\n"
+ "Revision: D1020-SUUAASFA-4352 1 [Apr 14 2008 18:00:00]\n"
+ "IMEI: 239639269236269\n"
+ "+GCAP: +CGSM,+DS\n",
+ "\n239639269236269\n",
+ "\nD1020-SUUAASFA-4352 1 [Apr 14 2008 18:00:00]\n",
+ "\n88\n",
+ "\nQUALCOMM INCORPORATED\n"
+ },
+ { NULL }
+};
+
+static void
+test_devid_item (void *f, gpointer d)
+{
+ DevidItem *item = (DevidItem *) d;
+ char *devid;
+
+ g_print ("%s... ", item->desc);
+ devid = mm_create_device_identifier (item->vid,
+ item->pid,
+ item->ati,
+ item->ati1,
+ item->gsn,
+ item->revision,
+ item->model,
+ item->manf);
+ g_assert (devid);
+ if (strcmp (devid, item->devid))
+ g_message ("%s", devid);
+ g_assert (!strcmp (devid, item->devid));
+}
+
+typedef struct {
+ const char *desc;
+ const gint min;
+ const gint max;
+} CindEntry;
+
+static void
+test_cind_results (const char *desc,
+ const char *reply,
+ CindEntry *expected_results,
+ guint32 expected_results_len)
+{
+ guint i;
+ GError *error = NULL;
+ GHashTable *results;
+
+ g_print ("\nTesting %s +CIND response...\n", desc);
+
+ results = mm_parse_cind_test_response (reply, &error);
+ g_assert (results);
+ g_assert (error == NULL);
+
+ g_assert (g_hash_table_size (results) == expected_results_len);
+
+ for (i = 0; i < expected_results_len; i++) {
+ CindEntry *expected = &expected_results[i];
+ CindResponse *compare;
+
+ compare = g_hash_table_lookup (results, expected->desc);
+ g_assert (compare);
+ g_assert_cmpint (i + 1, ==, cind_response_get_index (compare));
+ g_assert_cmpint (expected->min, ==, cind_response_get_min (compare));
+ g_assert_cmpint (expected->max, ==, cind_response_get_max (compare));
+ }
+
+ g_hash_table_destroy (results);
+}
+
+static void
+test_cind_response_linktop_lw273 (void *f, gpointer d)
+{
+ const char *reply = "+CIND: (\"battchg\",(0-5)),(\"signal\",(0-5)),(\"batterywarning\",(0-1)),(\"chargerconnected\",(0-1)),(\"service\",(0-1)),(\"sounder\",(0-1)),(\"message\",(0-1)),()";
+ static CindEntry expected[] = {
+ { "battchg", 0, 5 },
+ { "signal", 0, 5 },
+ { "batterywarning", 0, 1 },
+ { "chargerconnected", 0, 1 },
+ { "service", 0, 1 },
+ { "sounder", 0, 1 },
+ { "message", 0, 1 }
+ };
+
+ test_cind_results ("LW273", reply, &expected[0], ARRAY_LEN (expected));
+}
+
+static void
+test_cind_response_moto_v3m (void *f, gpointer d)
+{
+ const char *reply = "+CIND: (\"Voice Mail\",(0,1)),(\"service\",(0,1)),(\"call\",(0,1)),(\"Roam\",(0-2)),(\"signal\",(0-5)),(\"callsetup\",(0-3)),(\"smsfull\",(0,1))";
+ static CindEntry expected[] = {
+ { "voicemail", 0, 1 },
+ { "service", 0, 1 },
+ { "call", 0, 1 },
+ { "roam", 0, 2 },
+ { "signal", 0, 5 },
+ { "callsetup", 0, 3 },
+ { "smsfull", 0, 1 }
+ };
+
+ test_cind_results ("Motorola V3m", reply, &expected[0], ARRAY_LEN (expected));
+}
+
static TestData *
test_data_new (void)
{
@@ -790,8 +1178,21 @@ test_data_free (TestData *data)
g_free (data);
}
+void
+_mm_log (const char *loc,
+ const char *func,
+ guint32 level,
+ const char *fmt,
+ ...)
+{
+ /* Dummy log function */
+}
+#if GLIB_CHECK_VERSION(2,25,12)
+typedef GTestFixtureFunc TCFunc;
+#else
typedef void (*TCFunc)(void);
+#endif
#define TESTCASE(t, d) g_test_create_case (#t, 0, d, NULL, (TCFunc) t, NULL)
@@ -800,6 +1201,7 @@ int main (int argc, char **argv)
GTestSuite *suite;
TestData *data;
gint result;
+ DevidItem *item = &devids[0];
g_test_init (&argc, &argv, NULL);
@@ -848,12 +1250,14 @@ int main (int argc, char **argv)
g_test_suite_add (suite, TESTCASE (test_creg2_tm506_solicited, data));
g_test_suite_add (suite, TESTCASE (test_creg2_xu870_unsolicited_unregistered, data));
g_test_suite_add (suite, TESTCASE (test_creg2_md400_unsolicited, data));
+ g_test_suite_add (suite, TESTCASE (test_creg2_s8500_wave_unsolicited, data));
g_test_suite_add (suite, TESTCASE (test_cgreg1_solicited, data));
g_test_suite_add (suite, TESTCASE (test_cgreg1_unsolicited, data));
g_test_suite_add (suite, TESTCASE (test_cgreg2_f3607gw_solicited, data));
g_test_suite_add (suite, TESTCASE (test_cgreg2_f3607gw_unsolicited, data));
g_test_suite_add (suite, TESTCASE (test_cgreg2_md400_unsolicited, data));
+ g_test_suite_add (suite, TESTCASE (test_cgreg2_x220_unsolicited, data));
g_test_suite_add (suite, TESTCASE (test_creg_cgreg_multi_unsolicited, data));
g_test_suite_add (suite, TESTCASE (test_creg_cgreg_multi2_unsolicited, data));
@@ -863,6 +1267,14 @@ int main (int argc, char **argv)
g_test_suite_add (suite, TESTCASE (test_cscs_buslink_support_response, data));
g_test_suite_add (suite, TESTCASE (test_cscs_blackberry_support_response, data));
+ g_test_suite_add (suite, TESTCASE (test_cind_response_linktop_lw273, data));
+ g_test_suite_add (suite, TESTCASE (test_cind_response_moto_v3m, data));
+
+ while (item->devid) {
+ g_test_suite_add (suite, TESTCASE (test_devid_item, (gconstpointer) item));
+ item++;
+ }
+
result = g_test_run ();
test_data_free (data);