Skip to content

Commit 70252f8

Browse files
author
Cruz Monrreal
authored
Merge pull request #8114 from mirelachirica/registration_params_2
Registration parameters as struct
2 parents ab064df + ffb9cdb commit 70252f8

File tree

12 files changed

+370
-205
lines changed

12 files changed

+370
-205
lines changed

UNITTESTS/features/cellular/framework/AT/at_cellularnetwork/at_cellularnetworktest.cpp

Lines changed: 76 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_set_registration)
434434
EXPECT_TRUE(NSAPI_ERROR_OK == cn.set_registration("12345"));
435435
}
436436

437-
TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_registration_status)
437+
TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_registration_params)
438438
{
439439
EventQueue que;
440440
FileHandle_stub fh1;
@@ -443,33 +443,86 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_registration_status)
443443
AT_CellularNetwork cn(at);
444444
ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
445445
ATHandler_stub::int_value = 3;
446-
CellularNetwork::RegistrationStatus stat = CellularNetwork::NotRegistered;
447-
EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_registration_status(CellularNetwork::C_EREG, stat));
448-
EXPECT_TRUE(stat == CellularNetwork::RegistrationDenied);
449-
stat = CellularNetwork::NotRegistered;
450-
EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_registration_status(CellularNetwork::C_GREG, stat));
451-
EXPECT_TRUE(stat == CellularNetwork::RegistrationDenied);
446+
CellularNetwork::registration_params_t reg_params;
447+
CellularNetwork::registration_params_t reg_params_check;
448+
449+
EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_registration_params(CellularNetwork::C_EREG, reg_params));
450+
EXPECT_TRUE(reg_params._status == CellularNetwork::RegistrationDenied);
451+
EXPECT_TRUE(reg_params._act == CellularNetwork::RAT_EGPRS);
452+
EXPECT_TRUE(reg_params._cell_id == -1);
453+
454+
ATHandler_stub::read_string_index = 4;
455+
ATHandler_stub::read_string_table[3] = "00C3";
456+
ATHandler_stub::read_string_table[2] = "1234FFC1";//== cellid and in dec: 305463233
457+
ATHandler_stub::read_string_table[1] = "00100100";
458+
ATHandler_stub::read_string_table[0] = "01000111";
459+
EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_registration_params(CellularNetwork::C_EREG, reg_params));
460+
EXPECT_TRUE(reg_params._cell_id == 305463233);
461+
EXPECT_TRUE(reg_params._active_time == 240);
462+
EXPECT_TRUE(reg_params._periodic_tau == 70 * 60 *60);
463+
ATHandler_stub::read_string_index = kRead_string_table_size;
464+
ATHandler_stub::read_string_value = NULL;
465+
ATHandler_stub::ssize_value = 0;
466+
// Check get_registration_params without specifying the registration type
467+
EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_registration_params(reg_params_check));
468+
EXPECT_TRUE(reg_params_check._status == CellularNetwork::RegistrationDenied);
469+
EXPECT_TRUE(reg_params_check._act == CellularNetwork::RAT_EGPRS);
470+
EXPECT_TRUE(reg_params_check._cell_id == 305463233);
471+
EXPECT_TRUE(reg_params_check._active_time == 240);
472+
EXPECT_TRUE(reg_params_check._periodic_tau == 70 * 60 *60);
473+
474+
reg_params._status = CellularNetwork::NotRegistered;
475+
reg_params._act = CellularNetwork::RAT_GSM;
476+
reg_params._cell_id = 1;
477+
EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_registration_params(CellularNetwork::C_GREG, reg_params));
478+
EXPECT_TRUE(reg_params._status == CellularNetwork::RegistrationDenied);
479+
EXPECT_TRUE(reg_params._act == CellularNetwork::RAT_EGPRS);
480+
EXPECT_TRUE(reg_params._cell_id == -1);
452481

453482
my_AT_CN nw(at);
454-
stat = CellularNetwork::NotRegistered;
455-
EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == nw.get_registration_status(CellularNetwork::C_GREG, stat));
456-
EXPECT_TRUE(stat == CellularNetwork::NotRegistered);
457-
EXPECT_TRUE(NSAPI_ERROR_OK == nw.get_registration_status(CellularNetwork::C_EREG, stat));
458-
EXPECT_TRUE(stat == CellularNetwork::RegistrationDenied);
483+
reg_params._status = CellularNetwork::NotRegistered;
484+
reg_params._act = CellularNetwork::RAT_GSM;
459485

486+
EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == nw.get_registration_params(CellularNetwork::C_GREG, reg_params));
487+
EXPECT_TRUE(reg_params._status == CellularNetwork::NotRegistered);
488+
EXPECT_TRUE(reg_params._act == CellularNetwork::RAT_GSM);
489+
490+
EXPECT_TRUE(NSAPI_ERROR_OK == nw.get_registration_params(CellularNetwork::C_EREG, reg_params));
491+
EXPECT_TRUE(reg_params._status == CellularNetwork::RegistrationDenied);
492+
EXPECT_TRUE(reg_params._act == CellularNetwork::RAT_EGPRS);
460493

461494
ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR;
462-
stat = CellularNetwork::NotRegistered;
463-
EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.get_registration_status(CellularNetwork::C_EREG, stat));
464-
EXPECT_TRUE(stat == -1);
465-
EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.get_registration_status(CellularNetwork::C_GREG, stat));
466-
EXPECT_TRUE(stat == -1);
467-
468-
stat = CellularNetwork::NotRegistered;
469-
EXPECT_TRUE(NSAPI_ERROR_UNSUPPORTED == nw.get_registration_status(CellularNetwork::C_GREG, stat));
470-
EXPECT_TRUE(stat == CellularNetwork::NotRegistered);
471-
EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == nw.get_registration_status(CellularNetwork::C_EREG, stat));
472-
EXPECT_TRUE(stat == -1);
495+
reg_params._status = CellularNetwork::NotRegistered;
496+
reg_params._act = CellularNetwork::RAT_GSM;
497+
reg_params._cell_id = 1;
498+
reg_params._active_time = 2;
499+
reg_params._periodic_tau = 3;
500+
501+
EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.get_registration_params(CellularNetwork::C_EREG, reg_params));
502+
EXPECT_TRUE(reg_params._status == CellularNetwork::StatusNotAvailable);
503+
EXPECT_TRUE(reg_params._act == CellularNetwork::RAT_UNKNOWN);
504+
EXPECT_TRUE(reg_params._cell_id == -1 && reg_params._active_time == -1 && reg_params._periodic_tau == -1);
505+
506+
EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.get_registration_params(CellularNetwork::C_GREG, reg_params));
507+
EXPECT_TRUE(reg_params._status == CellularNetwork::StatusNotAvailable);
508+
EXPECT_TRUE(reg_params._act == CellularNetwork::RAT_UNKNOWN);
509+
EXPECT_TRUE(reg_params._cell_id == -1);
510+
511+
reg_params._status = CellularNetwork::SearchingNetwork;
512+
reg_params._act = CellularNetwork::RAT_GSM;
513+
reg_params._cell_id = 1;
514+
reg_params._active_time = 2;
515+
reg_params._periodic_tau = 3;
516+
517+
EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == nw.get_registration_params(CellularNetwork::C_EREG, reg_params));
518+
EXPECT_TRUE(reg_params._status == CellularNetwork::StatusNotAvailable);
519+
EXPECT_TRUE(reg_params._act == CellularNetwork::RAT_UNKNOWN);
520+
EXPECT_TRUE(reg_params._cell_id == -1 && reg_params._active_time == -1 && reg_params._periodic_tau == -1);
521+
// Check get_registration_params without specifying the registration type
522+
EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_registration_params(reg_params_check));
523+
EXPECT_TRUE(reg_params_check._status == CellularNetwork::StatusNotAvailable);
524+
EXPECT_TRUE(reg_params_check._act == CellularNetwork::RAT_UNKNOWN);
525+
EXPECT_TRUE(reg_params_check._cell_id == -1 && reg_params_check._active_time == -1 && reg_params_check._periodic_tau == -1);
473526
}
474527

475528
TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_network_registering_mode)
@@ -762,19 +815,6 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_set_access_technology)
762815
EXPECT_TRUE(NSAPI_ERROR_OK == my_cn.set_access_technology(CellularNetwork::RAT_GSM_COMPACT));
763816
}
764817

765-
TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_access_technology)
766-
{
767-
EventQueue que;
768-
FileHandle_stub fh1;
769-
ATHandler at(&fh1, que, 0, ",");
770-
771-
AT_CellularNetwork cn(at);
772-
CellularNetwork::RadioAccessTechnology rat;
773-
774-
EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_access_technology(rat));
775-
EXPECT_TRUE(CellularNetwork::RAT_UNKNOWN == rat);
776-
}
777-
778818
TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_scan_plmn)
779819
{
780820
EventQueue que;
@@ -989,34 +1029,6 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_signal_quality)
9891029
EXPECT_TRUE(rs == 1 && ber == 1);
9901030
}
9911031

992-
TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_cell_id)
993-
{
994-
EventQueue que;
995-
FileHandle_stub fh1;
996-
ATHandler at(&fh1, que, 0, ",");
997-
998-
AT_CellularNetwork cn(at);
999-
int id = 0;
1000-
EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_cell_id(id));
1001-
EXPECT_TRUE(id == -1);
1002-
1003-
ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR;
1004-
EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_cell_id(id));
1005-
EXPECT_TRUE(id == -1);
1006-
1007-
ATHandler_stub::read_string_index = 2;
1008-
ATHandler_stub::read_string_table[1] = (char *)"00C3";
1009-
ATHandler_stub::read_string_table[0] = (char *)"1234FFC1"; //== cellid and in dec: 305463233
1010-
ATHandler_stub::int_value = 1;
1011-
// Get registration status to modify cell_id
1012-
CellularNetwork::RegistrationType type;
1013-
CellularNetwork::RegistrationStatus status;
1014-
ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
1015-
EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_registration_status(CellularNetwork::C_EREG, status));
1016-
EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_cell_id(id));
1017-
EXPECT_TRUE(id == 305463233);
1018-
}
1019-
10201032
TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_3gpp_error)
10211033
{
10221034
EventQueue que;

UNITTESTS/features/cellular/framework/AT/athandler/athandlertest.cpp

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -579,7 +579,7 @@ TEST_F(TestATHandler, test_ATHandler_read_string)
579579
EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == at.get_last_error());
580580
at.clear_error();
581581
// Device error because empty buffer and attempt to fill_buffer by consume_char('\"')
582-
EXPECT_TRUE(-1 == at.read_string(buf1, 1));
582+
EXPECT_TRUE(0 == at.read_string(buf1, 1));
583583

584584
// *** 1 BYTE ***
585585
at.clear_error();
@@ -599,7 +599,7 @@ TEST_F(TestATHandler, test_ATHandler_read_string)
599599

600600
// *** CRLF ***
601601
at.clear_error();
602-
char table3[] = "\r\ns\r\n\0";
602+
char table3[] = "\r\n,s\r\n\0";
603603
at.flush();
604604
filehandle_stub_table = table3;
605605
filehandle_stub_table_pos = 0;
@@ -670,13 +670,9 @@ TEST_F(TestATHandler, test_ATHandler_read_string)
670670
at.resp_start();
671671
// TO read 1 byte from: "s"OK\r\n -> read "
672672
at.read_bytes(buf5, 1);
673-
// TO read max 1 byte from: s"OK\r\n -> read s
673+
// TO read max 1 byte from: s"OK\r\n -> read s + read to stop_tag(OKCRLF)
674674
EXPECT_TRUE(1 == at.read_string(buf4, 1 + 1/*for NULL*/));
675675

676-
// *** Consume " and run into OKCRLF ***
677-
// TO read max 1 byte from: "OK\r\n -> consume " and find stop tag OKCRLF
678-
EXPECT_TRUE(0 == at.read_string(buf4, 1 + 1/*for NULL*/));
679-
680676
// *** Try to read after stop tag was found ***
681677
// stop tag found do not read further
682678
EXPECT_TRUE(-1 == at.read_string(buf4, 1 + 1/*for NULL*/));
@@ -706,7 +702,7 @@ TEST_F(TestATHandler, test_ATHandler_read_string)
706702
mbed_poll_stub::revents_value = POLLIN;
707703
mbed_poll_stub::int_value = 1;
708704
at.resp_start("s");
709-
// TO read from buffer having only " -> consume " -> trying to read when nothing in buffer
705+
// TO read from buffer having only " -> trying to find delimiter or stop_tag(OKCRLF)
710706
EXPECT_TRUE(-1 == at.read_string(buf4, 5));
711707
EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == at.get_last_error());
712708

@@ -739,6 +735,21 @@ TEST_F(TestATHandler, test_ATHandler_read_string)
739735
// TO read from
740736
EXPECT_TRUE(6 == at.read_string(buf9, 6 + 1/*for NULL*/));
741737

738+
at.clear_error();
739+
char table11[] = "\"1016\",\"39AB\",9\r\n\0";
740+
mbed_poll_stub::int_value = 0;
741+
at.flush();
742+
filehandle_stub_table = table11;
743+
filehandle_stub_table_pos = 0;
744+
mbed_poll_stub::revents_value = POLLIN;
745+
mbed_poll_stub::int_value = 1;
746+
at.resp_start();
747+
EXPECT_TRUE(4 == at.read_string(buf4, 4 + 1/*for NULL*/));
748+
EXPECT_TRUE(!strncmp(buf4, "1016", 4));
749+
EXPECT_TRUE(4 == at.read_string(buf4, 4 + 1/*for NULL*/));
750+
EXPECT_TRUE(!strncmp(buf4, "39AB", 4));
751+
EXPECT_TRUE(9 == at.read_int());
752+
742753
// *** CRLF part of the string ***
743754
at.clear_error();
744755
char table10[] = "\"s\"\r\nOK\r\n\0";

UNITTESTS/features/cellular/framework/common/util/utiltest.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,23 @@ class Testutil : public testing::Test {
3535
};
3636
// *INDENT-ON*
3737

38+
TEST_F(Testutil, test_util_binary_str_to_uint)
39+
{
40+
char binary_str[]="011001011101101000";
41+
uint32_t value = binary_str_to_uint(binary_str, strlen(binary_str) + 1);
42+
EXPECT_TRUE(value == 104296);
43+
value = binary_str_to_uint(binary_str, strlen(binary_str));
44+
EXPECT_TRUE(value == 104296);
45+
value = binary_str_to_uint(binary_str, strlen(binary_str) - 1);
46+
EXPECT_TRUE(value == 52148);
47+
value = binary_str_to_uint(binary_str, strlen(binary_str) - 3);
48+
EXPECT_TRUE(value == 13037);
49+
value = binary_str_to_uint(binary_str + 5, strlen(binary_str) - 5);
50+
EXPECT_TRUE(value == 5992);
51+
EXPECT_TRUE(0 == binary_str_to_uint(NULL, 5));
52+
EXPECT_TRUE(0 == binary_str_to_uint(binary_str, 0));
53+
}
54+
3855
TEST_F(Testutil, test_util_uint_to_binary_string)
3956
{
4057
char str[33];

UNITTESTS/stubs/AT_CellularNetwork_stub.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -111,12 +111,12 @@ nsapi_error_t AT_CellularNetwork::set_registration(const char *plmn)
111111
return NSAPI_ERROR_OK;
112112
}
113113

114-
nsapi_error_t AT_CellularNetwork::get_registration_status(RegistrationType type, RegistrationStatus &status)
114+
nsapi_error_t AT_CellularNetwork::get_registration_params(RegistrationType type, registration_params_t &reg_params)
115115
{
116116
return NSAPI_ERROR_OK;
117117
}
118118

119-
nsapi_error_t AT_CellularNetwork::get_cell_id(int &cell_id)
119+
nsapi_error_t AT_CellularNetwork::get_registration_params(registration_params_t &reg_params)
120120
{
121121
return NSAPI_ERROR_OK;
122122
}
@@ -186,12 +186,6 @@ nsapi_error_t AT_CellularNetwork::set_access_technology(RadioAccessTechnology op
186186
return NSAPI_ERROR_OK;
187187
}
188188

189-
nsapi_error_t AT_CellularNetwork::get_access_technology(RadioAccessTechnology &rat)
190-
{
191-
rat = RAT_CATM1;
192-
return NSAPI_ERROR_OK;
193-
}
194-
195189
nsapi_error_t AT_CellularNetwork::scan_plmn(operList_t &operators, int &opsCount)
196190
{
197191
return NSAPI_ERROR_OK;

features/cellular/TESTS/api/cellular_network/main.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,11 @@ static bool get_network_registration(CellularNetwork::RegistrationType type,
102102
CellularNetwork::RegistrationStatus &status, bool &is_registered)
103103
{
104104
is_registered = false;
105-
nsapi_error_t err = nw->get_registration_status(type, status);
105+
CellularNetwork::registration_params_t reg_params;
106+
nsapi_error_t err = nw->get_registration_params(type, reg_params);
106107
TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_UNSUPPORTED);
107108

109+
status = reg_params._status;
108110
switch (status) {
109111
case CellularNetwork::RegisteredRoaming:
110112
case CellularNetwork::RegisteredHomeNetwork:
@@ -312,9 +314,10 @@ static void test_other()
312314
TEST_ASSERT(ber >= 0);
313315
}
314316

315-
int cell_id = -5;
316-
TEST_ASSERT(nw->get_cell_id(cell_id) == NSAPI_ERROR_OK);
317-
TEST_ASSERT(cell_id != -5);
317+
CellularNetwork::registration_params_t reg_params;
318+
reg_params._cell_id = -5;
319+
TEST_ASSERT(nw->get_registration_params(reg_params) == NSAPI_ERROR_OK);
320+
TEST_ASSERT(reg_params._cell_id != -5);
318321

319322
int format = -1;
320323
CellularNetwork::operator_t operator_params;

features/cellular/easy_cellular/CellularConnectionFSM.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,13 +223,15 @@ bool CellularConnectionFSM::get_network_registration(CellularNetwork::Registrati
223223
{
224224
is_registered = false;
225225
bool is_roaming = false;
226-
nsapi_error_t err = _network->get_registration_status(type, status);
226+
CellularNetwork::registration_params_t reg_params;
227+
nsapi_error_t err = _network->get_registration_params(type, reg_params);
227228
if (err != NSAPI_ERROR_OK) {
228229
if (err != NSAPI_ERROR_UNSUPPORTED) {
229230
tr_warn("Get network registration failed (type %d)!", type);
230231
}
231232
return false;
232233
}
234+
status = reg_params._status;
233235
switch (status) {
234236
case CellularNetwork::RegisteredRoaming:
235237
is_roaming = true;

0 commit comments

Comments
 (0)