gsm: allow leading zeroes in numbers in CREG/CGREG responses
This commit is contained in:
@@ -224,26 +224,26 @@ mm_gsm_destroy_scan_data (gpointer data)
|
|||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
/* +CREG: <stat> (GSM 07.07 CREG=1 unsolicited) */
|
/* +CREG: <stat> (GSM 07.07 CREG=1 unsolicited) */
|
||||||
#define CREG1 "\\+(CREG|CGREG):\\s*(\\d{1})"
|
#define CREG1 "\\+(CREG|CGREG):\\s*0*([0-9])"
|
||||||
|
|
||||||
/* +CREG: <n>,<stat> (GSM 07.07 CREG=1 solicited) */
|
/* +CREG: <n>,<stat> (GSM 07.07 CREG=1 solicited) */
|
||||||
#define CREG2 "\\+(CREG|CGREG):\\s*(\\d{1}),\\s*(\\d{1})"
|
#define CREG2 "\\+(CREG|CGREG):\\s*0*([0-9]),\\s*0*([0-9])"
|
||||||
|
|
||||||
/* +CREG: <stat>,<lac>,<ci> (GSM 07.07 CREG=2 unsolicited) */
|
/* +CREG: <stat>,<lac>,<ci> (GSM 07.07 CREG=2 unsolicited) */
|
||||||
#define CREG3 "\\+(CREG|CGREG):\\s*(\\d{1}),\\s*([^,\\s]*)\\s*,\\s*([^,\\s]*)"
|
#define CREG3 "\\+(CREG|CGREG):\\s*0*([0-9]),\\s*([^,\\s]*)\\s*,\\s*([^,\\s]*)"
|
||||||
|
|
||||||
/* +CREG: <n>,<stat>,<lac>,<ci> (GSM 07.07 solicited and some CREG=2 unsolicited) */
|
/* +CREG: <n>,<stat>,<lac>,<ci> (GSM 07.07 solicited and some CREG=2 unsolicited) */
|
||||||
#define CREG4 "\\+(CREG|CGREG):\\s*(\\d{1}),\\s*(\\d{1})\\s*,\\s*([^,]*)\\s*,\\s*([^,\\s]*)"
|
#define CREG4 "\\+(CREG|CGREG):\\s*0*([0-9]),\\s*0*([0-9])\\s*,\\s*([^,]*)\\s*,\\s*([^,\\s]*)"
|
||||||
|
|
||||||
/* +CREG: <stat>,<lac>,<ci>,<AcT> (ETSI 27.007 CREG=2 unsolicited) */
|
/* +CREG: <stat>,<lac>,<ci>,<AcT> (ETSI 27.007 CREG=2 unsolicited) */
|
||||||
#define CREG5 "\\+(CREG|CGREG):\\s*(\\d{1})\\s*,\\s*([^,\\s]*)\\s*,\\s*([^,\\s]*)\\s*,\\s*(\\d{1,2})"
|
#define CREG5 "\\+(CREG|CGREG):\\s*0*([0-9])\\s*,\\s*([^,\\s]*)\\s*,\\s*([^,\\s]*)\\s*,\\s*0*([0-9])"
|
||||||
|
|
||||||
/* +CREG: <n>,<stat>,<lac>,<ci>,<AcT> (ETSI 27.007 solicited and some CREG=2 unsolicited) */
|
/* +CREG: <n>,<stat>,<lac>,<ci>,<AcT> (ETSI 27.007 solicited and some CREG=2 unsolicited) */
|
||||||
#define CREG6 "\\+(CREG|CGREG):\\s*(\\d{1}),\\s*(\\d{1})\\s*,\\s*([^,\\s]*)\\s*,\\s*([^,\\s]*)\\s*,\\s*(\\d{1,2})"
|
#define CREG6 "\\+(CREG|CGREG):\\s*0*([0-9]),\\s*0*([0-9])\\s*,\\s*([^,\\s]*)\\s*,\\s*([^,\\s]*)\\s*,\\s*0*([0-9])"
|
||||||
|
|
||||||
/* +CREG: <n>,<stat>,<lac>,<ci>,<AcT?>,<something> (Samsung Wave S8500) */
|
/* +CREG: <n>,<stat>,<lac>,<ci>,<AcT?>,<something> (Samsung Wave S8500) */
|
||||||
/* '<CR><LF>+CREG: 2,1,000B,2816, B, C2816<CR><LF><CR><LF>OK<CR><LF>' */
|
/* '<CR><LF>+CREG: 2,1,000B,2816, B, C2816<CR><LF><CR><LF>OK<CR><LF>' */
|
||||||
#define CREG7 "\\+(CREG|CGREG):\\s*(\\d{1}),\\s*(\\d{1})\\s*,\\s*([^,\\s]*)\\s*,\\s*([^,\\s]*)\\s*,\\s*([^,\\s]*)\\s*,\\s*[^,\\s]*"
|
#define CREG7 "\\+(CREG|CGREG):\\s*0*([0-9]),\\s*0*([0-9])\\s*,\\s*([^,\\s]*)\\s*,\\s*([^,\\s]*)\\s*,\\s*([^,\\s]*)\\s*,\\s*[^,\\s]*"
|
||||||
|
|
||||||
/* +CREG: <stat>,<lac>,<ci>,<AcT>,<RAC> (ETSI 27.007 v9.20 CREG=2 unsolicited with RAC) */
|
/* +CREG: <stat>,<lac>,<ci>,<AcT>,<RAC> (ETSI 27.007 v9.20 CREG=2 unsolicited with RAC) */
|
||||||
#define CREG8 "\\+(CREG|CGREG):\\s*(\\d{1})\\s*,\\s*([^,\\s]*)\\s*,\\s*([^,\\s]*)\\s*,\\s*(\\d{1,2})\\s*,\\s*([^,\\s]*)"
|
#define CREG8 "\\+(CREG|CGREG):\\s*(\\d{1})\\s*,\\s*([^,\\s]*)\\s*,\\s*([^,\\s]*)\\s*,\\s*(\\d{1,2})\\s*,\\s*([^,\\s]*)"
|
||||||
|
@@ -501,6 +501,7 @@ test_creg_match (const char *test,
|
|||||||
GRegex *r = g_ptr_array_index (array, i);
|
GRegex *r = g_ptr_array_index (array, i);
|
||||||
|
|
||||||
if (g_regex_match (r, reply, 0, &info)) {
|
if (g_regex_match (r, reply, 0, &info)) {
|
||||||
|
g_print (" matched with %d\n", i);
|
||||||
regex_num = i + 1;
|
regex_num = i + 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -508,6 +509,10 @@ test_creg_match (const char *test,
|
|||||||
info = NULL;
|
info = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_print (" regex_num (%u) == result->regex_num (%u)\n",
|
||||||
|
regex_num,
|
||||||
|
result->regex_num);
|
||||||
|
|
||||||
g_assert (info != NULL);
|
g_assert (info != NULL);
|
||||||
g_assert (regex_num == result->regex_num);
|
g_assert (regex_num == result->regex_num);
|
||||||
|
|
||||||
@@ -517,6 +522,9 @@ test_creg_match (const char *test,
|
|||||||
g_assert (state == result->state);
|
g_assert (state == result->state);
|
||||||
g_assert (lac == result->lac);
|
g_assert (lac == result->lac);
|
||||||
g_assert (ci == result->ci);
|
g_assert (ci == result->ci);
|
||||||
|
|
||||||
|
g_print (" access_tech (%d) == result->act (%d)\n",
|
||||||
|
access_tech, result->act);
|
||||||
g_assert (access_tech == result->act);
|
g_assert (access_tech == result->act);
|
||||||
g_assert (cgreg == result->cgreg);
|
g_assert (cgreg == result->cgreg);
|
||||||
}
|
}
|
||||||
@@ -632,6 +640,16 @@ test_creg2_xu870_unsolicited_unregistered (void *f, gpointer d)
|
|||||||
test_creg_match ("Novatel XU870 unregistered CREG=2", FALSE, reply, data, &result);
|
test_creg_match ("Novatel XU870 unregistered CREG=2", FALSE, reply, data, &result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_creg2_iridium_solicited (void *f, gpointer d)
|
||||||
|
{
|
||||||
|
TestData *data = (TestData *) d;
|
||||||
|
const char *reply = "+CREG:002,001,\"18d8\",\"ffff\"";
|
||||||
|
const CregResult result = { 1, 0x18D8, 0xFFFF, -1 , 4, FALSE};
|
||||||
|
|
||||||
|
test_creg_match ("Iridium, CREG=2", TRUE, reply, data, &result);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
test_cgreg1_solicited (void *f, gpointer d)
|
test_cgreg1_solicited (void *f, gpointer d)
|
||||||
{
|
{
|
||||||
@@ -1273,6 +1291,7 @@ int main (int argc, char **argv)
|
|||||||
g_test_suite_add (suite, TESTCASE (test_creg2_md400_unsolicited, 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_creg2_s8500_wave_unsolicited, data));
|
||||||
g_test_suite_add (suite, TESTCASE (test_creg2_gobi_weird_solicited, data));
|
g_test_suite_add (suite, TESTCASE (test_creg2_gobi_weird_solicited, data));
|
||||||
|
g_test_suite_add (suite, TESTCASE (test_creg2_iridium_solicited, data));
|
||||||
|
|
||||||
g_test_suite_add (suite, TESTCASE (test_cgreg1_solicited, 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_cgreg1_unsolicited, data));
|
||||||
|
Reference in New Issue
Block a user