telit: fix AT#BND parsing for LE910C1-EUX
Some modems, like LE910C1-EUX, express the LTE part of #BND output in HEX format, but currently the MM parser for such case is limited to modems that have "ext_4g_bands". This commits use the new MMTelitModel info to decide how to parse #BND command output. Fixes #487
This commit is contained in:
committed by
Aleksander Morgado
parent
30a35e6dc3
commit
c208d33e5b
@@ -39,6 +39,7 @@ typedef struct {
|
||||
gboolean modem_is_3g;
|
||||
gboolean modem_is_4g;
|
||||
gboolean modem_alternate_3g_bands;
|
||||
gboolean modem_has_4g_bands_hex_format;
|
||||
gboolean modem_ext_4g_bands;
|
||||
guint mm_bands_len;
|
||||
MMModemBand mm_bands [MAX_BANDS_LIST_LEN];
|
||||
@@ -46,14 +47,14 @@ typedef struct {
|
||||
|
||||
static BndResponseTest supported_band_mapping_tests [] = {
|
||||
{
|
||||
"#BND: (0-3)", TRUE, FALSE, FALSE, FALSE, FALSE, 4,
|
||||
"#BND: (0-3)", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, 4,
|
||||
{ MM_MODEM_BAND_EGSM,
|
||||
MM_MODEM_BAND_DCS,
|
||||
MM_MODEM_BAND_PCS,
|
||||
MM_MODEM_BAND_G850 }
|
||||
},
|
||||
{
|
||||
"#BND: (0-3),(0,2,5,6)", TRUE, TRUE, FALSE, FALSE, FALSE, 7,
|
||||
"#BND: (0-3),(0,2,5,6)", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, 7,
|
||||
{ MM_MODEM_BAND_EGSM,
|
||||
MM_MODEM_BAND_DCS,
|
||||
MM_MODEM_BAND_PCS,
|
||||
@@ -63,7 +64,7 @@ static BndResponseTest supported_band_mapping_tests [] = {
|
||||
MM_MODEM_BAND_UTRAN_8 }
|
||||
},
|
||||
{
|
||||
"#BND: (0,3),(0,2,5,6)", TRUE, TRUE, FALSE, FALSE, FALSE, 7,
|
||||
"#BND: (0,3),(0,2,5,6)", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, 7,
|
||||
{ MM_MODEM_BAND_EGSM,
|
||||
MM_MODEM_BAND_DCS,
|
||||
MM_MODEM_BAND_PCS,
|
||||
@@ -73,7 +74,7 @@ static BndResponseTest supported_band_mapping_tests [] = {
|
||||
MM_MODEM_BAND_UTRAN_8 }
|
||||
},
|
||||
{
|
||||
"#BND: (0,2),(0,2,5,6)", TRUE, TRUE, FALSE, FALSE, FALSE, 6,
|
||||
"#BND: (0,2),(0,2,5,6)", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, 6,
|
||||
{ MM_MODEM_BAND_EGSM,
|
||||
MM_MODEM_BAND_DCS,
|
||||
MM_MODEM_BAND_G850,
|
||||
@@ -82,7 +83,7 @@ static BndResponseTest supported_band_mapping_tests [] = {
|
||||
MM_MODEM_BAND_UTRAN_8 }
|
||||
},
|
||||
{
|
||||
"#BND: (0,2),(0-4,5,6)", TRUE, TRUE, FALSE, FALSE, FALSE, 7,
|
||||
"#BND: (0,2),(0-4,5,6)", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, 7,
|
||||
{ MM_MODEM_BAND_EGSM,
|
||||
MM_MODEM_BAND_DCS,
|
||||
MM_MODEM_BAND_G850,
|
||||
@@ -92,7 +93,7 @@ static BndResponseTest supported_band_mapping_tests [] = {
|
||||
MM_MODEM_BAND_UTRAN_8 }
|
||||
},
|
||||
{
|
||||
"#BND: (0-3),(0,2,5,6),(1-1)", TRUE, TRUE, TRUE, FALSE, FALSE, 8,
|
||||
"#BND: (0-3),(0,2,5,6),(1-1)", TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, 8,
|
||||
{ MM_MODEM_BAND_EGSM,
|
||||
MM_MODEM_BAND_DCS,
|
||||
MM_MODEM_BAND_PCS,
|
||||
@@ -103,7 +104,7 @@ static BndResponseTest supported_band_mapping_tests [] = {
|
||||
MM_MODEM_BAND_EUTRAN_1 }
|
||||
},
|
||||
{
|
||||
"#BND: (0),(0),(1-3)", TRUE, TRUE, TRUE, FALSE, FALSE, 5,
|
||||
"#BND: (0),(0),(1-3)", TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, 5,
|
||||
{ MM_MODEM_BAND_EGSM,
|
||||
MM_MODEM_BAND_DCS,
|
||||
MM_MODEM_BAND_UTRAN_1,
|
||||
@@ -111,13 +112,13 @@ static BndResponseTest supported_band_mapping_tests [] = {
|
||||
MM_MODEM_BAND_EUTRAN_2 }
|
||||
},
|
||||
{
|
||||
"#BND: (0),(0),(1-3)", FALSE, FALSE, TRUE, FALSE, FALSE, 2,
|
||||
"#BND: (0),(0),(1-3)", FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, 2,
|
||||
{ MM_MODEM_BAND_EUTRAN_1,
|
||||
MM_MODEM_BAND_EUTRAN_2 }
|
||||
},
|
||||
/* 3G alternate band settings: default */
|
||||
{
|
||||
"#BND: (0),(0,2,5,6,12,25)", FALSE, TRUE, FALSE, FALSE, FALSE, 5,
|
||||
"#BND: (0),(0,2,5,6,12,25)", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, 5,
|
||||
{ MM_MODEM_BAND_UTRAN_1,
|
||||
MM_MODEM_BAND_UTRAN_5,
|
||||
MM_MODEM_BAND_UTRAN_8,
|
||||
@@ -126,7 +127,7 @@ static BndResponseTest supported_band_mapping_tests [] = {
|
||||
},
|
||||
/* 3G alternate band settings: alternate */
|
||||
{
|
||||
"#BND: (0),(0,2,5,6,12,13)", FALSE, TRUE, FALSE, TRUE, FALSE, 4,
|
||||
"#BND: (0),(0,2,5,6,12,13)", FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, 4,
|
||||
{ MM_MODEM_BAND_UTRAN_1,
|
||||
MM_MODEM_BAND_UTRAN_3,
|
||||
MM_MODEM_BAND_UTRAN_5,
|
||||
@@ -136,7 +137,7 @@ static BndResponseTest supported_band_mapping_tests [] = {
|
||||
* 168695967: 0xA0E189F: 0000 1010 0000 1110 0001 1000 1001 1111
|
||||
*/
|
||||
{
|
||||
"#BND: (0-5),(0),(1-168695967)", TRUE, FALSE, TRUE, FALSE, FALSE, 17,
|
||||
"#BND: (0-5),(0),(1-168695967)", TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, 17,
|
||||
{ MM_MODEM_BAND_EGSM,
|
||||
MM_MODEM_BAND_DCS,
|
||||
MM_MODEM_BAND_PCS,
|
||||
@@ -157,7 +158,7 @@ static BndResponseTest supported_band_mapping_tests [] = {
|
||||
},
|
||||
/* 4G ext band settings: devices such as LN920 */
|
||||
{
|
||||
"#BND: (0),(0),(1003100185A),(42)", FALSE, TRUE, TRUE, FALSE, TRUE, 13,
|
||||
"#BND: (0),(0),(1003100185A),(42)", FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, 13,
|
||||
{ MM_MODEM_BAND_UTRAN_1,
|
||||
MM_MODEM_BAND_EUTRAN_2,
|
||||
MM_MODEM_BAND_EUTRAN_4,
|
||||
@@ -171,6 +172,22 @@ static BndResponseTest supported_band_mapping_tests [] = {
|
||||
MM_MODEM_BAND_EUTRAN_41,
|
||||
MM_MODEM_BAND_EUTRAN_66,
|
||||
MM_MODEM_BAND_EUTRAN_71 }
|
||||
},
|
||||
/* 4G band in hex format: devices such as LE910C1-EUX */
|
||||
{
|
||||
"#BND: (0),(0,5,6,13,15,23),(80800C5)", TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, 11,
|
||||
{
|
||||
MM_MODEM_BAND_EGSM,
|
||||
MM_MODEM_BAND_DCS,
|
||||
MM_MODEM_BAND_UTRAN_1,
|
||||
MM_MODEM_BAND_UTRAN_3,
|
||||
MM_MODEM_BAND_UTRAN_8,
|
||||
MM_MODEM_BAND_EUTRAN_1,
|
||||
MM_MODEM_BAND_EUTRAN_3,
|
||||
MM_MODEM_BAND_EUTRAN_7,
|
||||
MM_MODEM_BAND_EUTRAN_8,
|
||||
MM_MODEM_BAND_EUTRAN_20,
|
||||
MM_MODEM_BAND_EUTRAN_28 }
|
||||
}
|
||||
};
|
||||
|
||||
@@ -189,6 +206,7 @@ test_parse_supported_bands_response (void)
|
||||
supported_band_mapping_tests[i].modem_is_3g,
|
||||
supported_band_mapping_tests[i].modem_is_4g,
|
||||
supported_band_mapping_tests[i].modem_alternate_3g_bands,
|
||||
supported_band_mapping_tests[i].modem_has_4g_bands_hex_format,
|
||||
&modem_ext_4g_bands,
|
||||
NULL,
|
||||
&error);
|
||||
@@ -205,18 +223,18 @@ test_parse_supported_bands_response (void)
|
||||
|
||||
static BndResponseTest current_band_mapping_tests [] = {
|
||||
{
|
||||
"#BND: 0", TRUE, FALSE, FALSE, FALSE, FALSE, 2,
|
||||
"#BND: 0", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, 2,
|
||||
{ MM_MODEM_BAND_EGSM,
|
||||
MM_MODEM_BAND_DCS }
|
||||
},
|
||||
{
|
||||
"#BND: 0,5", TRUE, TRUE, FALSE, FALSE, FALSE, 3,
|
||||
"#BND: 0,5", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, 3,
|
||||
{ MM_MODEM_BAND_EGSM,
|
||||
MM_MODEM_BAND_DCS,
|
||||
MM_MODEM_BAND_UTRAN_8 }
|
||||
},
|
||||
{
|
||||
"#BND: 1,3", TRUE, TRUE, FALSE, FALSE, FALSE, 5,
|
||||
"#BND: 1,3", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, 5,
|
||||
{ MM_MODEM_BAND_EGSM,
|
||||
MM_MODEM_BAND_PCS,
|
||||
MM_MODEM_BAND_UTRAN_1,
|
||||
@@ -224,38 +242,38 @@ static BndResponseTest current_band_mapping_tests [] = {
|
||||
MM_MODEM_BAND_UTRAN_5 }
|
||||
},
|
||||
{
|
||||
"#BND: 2,7", TRUE, TRUE, FALSE, FALSE, FALSE, 3,
|
||||
"#BND: 2,7", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, 3,
|
||||
{ MM_MODEM_BAND_DCS,
|
||||
MM_MODEM_BAND_G850,
|
||||
MM_MODEM_BAND_UTRAN_4 }
|
||||
},
|
||||
{
|
||||
"#BND: 3,0,1", TRUE, TRUE, TRUE, FALSE, FALSE, 4,
|
||||
"#BND: 3,0,1", TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, 4,
|
||||
{ MM_MODEM_BAND_PCS,
|
||||
MM_MODEM_BAND_G850,
|
||||
MM_MODEM_BAND_UTRAN_1,
|
||||
MM_MODEM_BAND_EUTRAN_1 }
|
||||
},
|
||||
{
|
||||
"#BND: 0,0,3", TRUE, FALSE, TRUE, FALSE, FALSE, 4,
|
||||
"#BND: 0,0,3", TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, 4,
|
||||
{ MM_MODEM_BAND_EGSM,
|
||||
MM_MODEM_BAND_DCS,
|
||||
MM_MODEM_BAND_EUTRAN_1,
|
||||
MM_MODEM_BAND_EUTRAN_2 }
|
||||
},
|
||||
{
|
||||
"#BND: 0,0,3", FALSE, FALSE, TRUE, FALSE, FALSE, 2,
|
||||
"#BND: 0,0,3", FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, 2,
|
||||
{ MM_MODEM_BAND_EUTRAN_1,
|
||||
MM_MODEM_BAND_EUTRAN_2 }
|
||||
},
|
||||
/* 3G alternate band settings: default */
|
||||
{
|
||||
"#BND: 0,12", FALSE, TRUE, FALSE, FALSE, FALSE, 1,
|
||||
"#BND: 0,12", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, 1,
|
||||
{ MM_MODEM_BAND_UTRAN_6 }
|
||||
},
|
||||
/* 3G alternate band settings: alternate */
|
||||
{
|
||||
"#BND: 0,12", FALSE, TRUE, FALSE, TRUE, FALSE, 4,
|
||||
"#BND: 0,12", FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, 4,
|
||||
{ MM_MODEM_BAND_UTRAN_1,
|
||||
MM_MODEM_BAND_UTRAN_3,
|
||||
MM_MODEM_BAND_UTRAN_5,
|
||||
@@ -265,7 +283,7 @@ static BndResponseTest current_band_mapping_tests [] = {
|
||||
* 168695967: 0xA0E189F: 0000 1010 0000 1110 0001 1000 1001 1111
|
||||
*/
|
||||
{
|
||||
"#BND: 5,0,168695967", TRUE, FALSE, TRUE, FALSE, FALSE, 17,
|
||||
"#BND: 5,0,168695967", TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, 17,
|
||||
{ MM_MODEM_BAND_EGSM,
|
||||
MM_MODEM_BAND_DCS,
|
||||
MM_MODEM_BAND_PCS,
|
||||
@@ -286,7 +304,7 @@ static BndResponseTest current_band_mapping_tests [] = {
|
||||
},
|
||||
/* 4G ext band settings: devices such as LN920 */
|
||||
{
|
||||
"#BND: 0,0,1003100185A,42", FALSE, TRUE, TRUE, FALSE, TRUE, 13,
|
||||
"#BND: 0,0,1003100185A,42", FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, 13,
|
||||
{ MM_MODEM_BAND_UTRAN_1,
|
||||
MM_MODEM_BAND_EUTRAN_2,
|
||||
MM_MODEM_BAND_EUTRAN_4,
|
||||
@@ -317,6 +335,7 @@ test_parse_current_bands_response (void)
|
||||
current_band_mapping_tests[i].modem_is_3g,
|
||||
current_band_mapping_tests[i].modem_is_4g,
|
||||
current_band_mapping_tests[i].modem_alternate_3g_bands,
|
||||
supported_band_mapping_tests[i].modem_has_4g_bands_hex_format,
|
||||
current_band_mapping_tests[i].modem_ext_4g_bands,
|
||||
NULL,
|
||||
&error);
|
||||
|
||||
Reference in New Issue
Block a user