broadband-modem: implement +CCWA URC handling

This commit is contained in:
Aleksander Morgado
2019-07-11 23:00:50 +02:00
parent d9a7b403ee
commit dca00271ce
4 changed files with 94 additions and 3 deletions
+50
View File
@@ -3969,6 +3969,55 @@ test_clip_indication (void)
g_regex_unref (r);
}
/*****************************************************************************/
/* +CCWA URC */
typedef struct {
const gchar *str;
const gchar *number;
guint type;
guint class;
} CcwaUrcTest;
static const CcwaUrcTest ccwa_urc_tests[] = {
{ "\r\n+CCWA: \"123456789\",129,1\r\n", "123456789", 129, 1 },
{ "\r\n+CCWA: \"123456789\",129,1,,0\r\n", "123456789", 129, 1 },
{ "\r\n+CCWA: \"123456789\",129,1,,0,,,\r\n", "123456789", 129, 1 },
};
static void
test_ccwa_indication (void)
{
GRegex *r;
guint i;
r = mm_voice_ccwa_regex_get ();
for (i = 0; i < G_N_ELEMENTS (ccwa_urc_tests); i++) {
GMatchInfo *match_info = NULL;
gchar *number;
guint type;
guint class;
g_assert (g_regex_match (r, ccwa_urc_tests[i].str, 0, &match_info));
g_assert (g_match_info_matches (match_info));
number = mm_get_string_unquoted_from_match_info (match_info, 1);
g_assert_cmpstr (number, ==, ccwa_urc_tests[i].number);
g_assert (mm_get_uint_from_match_info (match_info, 2, &type));
g_assert_cmpuint (type, ==, ccwa_urc_tests[i].type);
g_assert (mm_get_uint_from_match_info (match_info, 3, &class));
g_assert_cmpuint (class, ==, ccwa_urc_tests[i].class);
g_free (number);
g_match_info_free (match_info);
}
g_regex_unref (r);
}
/*****************************************************************************/
typedef struct {
@@ -4281,6 +4330,7 @@ int main (int argc, char **argv)
g_test_suite_add (suite, TESTCASE (test_cesq_response_to_signal, NULL));
g_test_suite_add (suite, TESTCASE (test_clip_indication, NULL));
g_test_suite_add (suite, TESTCASE (test_ccwa_indication, NULL));
g_test_suite_add (suite, TESTCASE (test_parse_uint_list, NULL));