diff options
Diffstat (limited to 'src/tests/test-modem-helpers.c')
-rw-r--r-- | src/tests/test-modem-helpers.c | 412 |
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); |