Skip to content

Commit b761e7b

Browse files
author
Teppo Järvelin
committed
Cellular: fixed greentea tests C027 and BG96.
1 parent f9862b8 commit b761e7b

File tree

3 files changed

+87
-51
lines changed

3 files changed

+87
-51
lines changed

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

Lines changed: 50 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -213,30 +213,32 @@ static void test_credentials()
213213

214214
static void test_other()
215215
{
216+
const char* devi = CELLULAR_STRINGIFY(CELLULAR_DEVICE);
216217
TEST_ASSERT(nw->get_3gpp_error() == 0);
217218

218219
CellularNetwork::RateControlExceptionReports reports;
219220
CellularNetwork::RateControlUplinkTimeUnit timeUnit;
220221
int uplinkRate;
221222
// can't test values as they are optional
222223
nsapi_error_t err = nw->get_rate_control(reports, timeUnit, uplinkRate);
223-
tr_error("get_rate_control: %d", err);
224224
TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_DEVICE_ERROR);
225-
#if CELLULAR_DEVICE != QUECTEL_BG96 // QUECTEL_BG96 does not give any specific reason for device error
226-
if (err == NSAPI_ERROR_DEVICE_ERROR) {
227-
TEST_ASSERT(((AT_CellularNetwork *)nw)->get_device_error().errCode == 100 && // 100 == unknown command for modem
228-
((AT_CellularNetwork *)nw)->get_device_error().errType == 3); // 3 == CME error from the modem
225+
if (strcmp(devi, "QUECTEL_BG96") != 0 && strcmp(devi, "TELIT_HE910") != 0) { // QUECTEL_BG96 does not give any specific reason for device error
226+
if (err == NSAPI_ERROR_DEVICE_ERROR) {
227+
TEST_ASSERT(((AT_CellularNetwork *)nw)->get_device_error().errCode == 100 && // 100 == unknown command for modem
228+
((AT_CellularNetwork *)nw)->get_device_error().errType == 3); // 3 == CME error from the modem
229+
}
229230
}
230-
#endif
231231

232232
uplinkRate = -1;
233233
err = nw->get_apn_backoff_timer(uplinkRate);
234-
TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_DEVICE_ERROR);
234+
TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_DEVICE_ERROR || err == NSAPI_ERROR_PARAMETER);
235235
if (err == NSAPI_ERROR_DEVICE_ERROR) {
236-
#if CELLULAR_DEVICE != QUECTEL_BG96 // QUECTEL_BG96 does not give any specific reason for device error
237-
TEST_ASSERT(((AT_CellularNetwork *)nw)->get_device_error().errCode == 100 && // 100 == unknown command for modem
238-
((AT_CellularNetwork *)nw)->get_device_error().errType == 3); // 3 == CME error from the modem
239-
#endif
236+
if (strcmp(devi, "QUECTEL_BG96") != 0 && strcmp(devi, "TELIT_HE910") != 0) { // QUECTEL_BG96 does not give any specific reason for device error
237+
TEST_ASSERT(((AT_CellularNetwork *)nw)->get_device_error().errCode == 100 && // 100 == unknown command for modem
238+
((AT_CellularNetwork *)nw)->get_device_error().errType == 3); // 3 == CME error from the modem
239+
}
240+
} else if (err == NSAPI_ERROR_PARAMETER) {
241+
TEST_ASSERT(uplinkRate == -1);
240242
} else {
241243
TEST_ASSERT(uplinkRate >= 0);
242244
}
@@ -261,25 +263,24 @@ static void test_other()
261263

262264
TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_DEVICE_ERROR);
263265
if (err == NSAPI_ERROR_DEVICE_ERROR) {
264-
#if CELLULAR_DEVICE != TELIT_HE910 // TELIT_HE910 just gives an error and no specific error number so we can't know is this real error or that modem/network does not support the command
265-
TEST_ASSERT(((AT_CellularNetwork *)nw)->get_device_error().errCode == 100 && // 100 == unknown command for modem
266-
((AT_CellularNetwork *)nw)->get_device_error().errType == 3); // 3 == CME error from the modem
267-
#endif
266+
if (strcmp(devi, "TELIT_HE910") != 0) { // TELIT_HE910 just gives an error and no specific error number so we can't know is this real error or that modem/network does not support the command
267+
TEST_ASSERT(((AT_CellularNetwork *)nw)->get_device_error().errCode == 100 && // 100 == unknown command for modem
268+
((AT_CellularNetwork *)nw)->get_device_error().errType == 3); // 3 == CME error from the modem
269+
}
268270
} else {
269271
// should have some values, only not optional are apn and bearer id
270272
CellularNetwork::pdpcontext_params_t *params = params_list.get_head();
271-
TEST_ASSERT(strlen(params->apn) > 0);
272273
TEST_ASSERT(params->bearer_id >= 0)
273274
}
274275

275276
int rxlev = -1, ber = -1, rscp = -1, ecno = -1, rsrq = -1, rsrp = -1;
276277
err = nw->get_extended_signal_quality(rxlev, ber, rscp, ecno, rsrq, rsrp);
277278
TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_DEVICE_ERROR);
278279
if (err == NSAPI_ERROR_DEVICE_ERROR) {
279-
#if CELLULAR_DEVICE != QUECTEL_BG96 // QUECTEL_BG96 does not give any specific reason for device error
280-
TEST_ASSERT(((AT_CellularNetwork *)nw)->get_device_error().errCode == 100 && // 100 == unknown command for modem
281-
((AT_CellularNetwork *)nw)->get_device_error().errType == 3); // 3 == CME error from the modem
282-
#endif
280+
if (strcmp(devi, "QUECTEL_BG96") != 0 && strcmp(devi, "TELIT_HE910") != 0) {// QUECTEL_BG96 does not give any specific reason for device error
281+
TEST_ASSERT(((AT_CellularNetwork *)nw)->get_device_error().errCode == 100 && // 100 == unknown command for modem
282+
((AT_CellularNetwork *)nw)->get_device_error().errType == 3); // 3 == CME error from the modem
283+
}
283284
} else {
284285
// we should have some values which are not optional
285286
TEST_ASSERT(rxlev >= 0 && ber >= 0 && rscp >= 0 && ecno >= 0 && rsrq >= 0 && rsrp >= 0);
@@ -305,53 +306,55 @@ static void test_other()
305306
int format = -1;
306307
CellularNetwork::operator_t operator_params;
307308
// all params are optional so can't test operator_params
308-
TEST_ASSERT(nw->get_operator_params(format, operator_params) == NSAPI_ERROR_OK);
309+
err = nw->get_operator_params(format, operator_params);
310+
TEST_ASSERT(err == NSAPI_ERROR_OK);
309311

310312
nsapi_connection_status_t st = nw->get_connection_status();
311313
TEST_ASSERT(st == NSAPI_STATUS_DISCONNECTED);
312314

313315
TEST_ASSERT(nw->set_blocking(true) == NSAPI_ERROR_OK);
314316

315-
#if CELLULAR_DEVICE != QUECTEL_BG96
316-
// QUECTEL_BG96 timeouts with this one, tested with 3 minute timeout
317-
CellularNetwork::operator_names_list op_names;
318-
err = nw->get_operator_names(op_names);
319-
TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_DEVICE_ERROR);
320-
if (err == NSAPI_ERROR_DEVICE_ERROR) {
321-
// if device error then we must check was that really device error or that modem/network does not support the commands
322-
TEST_ASSERT(((AT_CellularNetwork *)nw)->get_device_error().errCode == 4 // 4 == NOT SUPPORTED BY THE MODEM
323-
&& ((AT_CellularNetwork *)nw)->get_device_error().errType == 3); // 3 == CME error from the modem
324-
} else {
325-
CellularNetwork::operator_names_t *opn = op_names.get_head();
326-
TEST_ASSERT(strlen(opn->numeric) > 0);
327-
TEST_ASSERT(strlen(opn->alpha > 0));
317+
if (strcmp(devi, "QUECTEL_BG96") != 0) {
318+
// QUECTEL_BG96 timeouts with this one, tested with 3 minute timeout
319+
CellularNetwork::operator_names_list op_names;
320+
err = nw->get_operator_names(op_names);
321+
TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_DEVICE_ERROR);
322+
if (err == NSAPI_ERROR_DEVICE_ERROR) {
323+
// if device error then we must check was that really device error or that modem/network does not support the commands
324+
TEST_ASSERT(((AT_CellularNetwork *)nw)->get_device_error().errCode == 4 // 4 == NOT SUPPORTED BY THE MODEM
325+
&& ((AT_CellularNetwork *)nw)->get_device_error().errType == 3); // 3 == CME error from the modem
326+
} else {
327+
CellularNetwork::operator_names_t *opn = op_names.get_head();
328+
TEST_ASSERT(strlen(opn->numeric) > 0);
329+
TEST_ASSERT(strlen(opn->alpha) > 0);
330+
}
328331
}
329-
#endif
330332

331-
#if CELLULAR_DEVICE != TELIT_HE910
332-
// TELIT_HE910 just gives an error and no specific error number so we can't know is this real error or that modem/network does not support the command
333-
CellularNetwork::Supported_UE_Opt supported_opt = SUPPORTED_UE_OPT_MAX;
334-
CellularNetwork::Preferred_UE_Opt preferred_opt = PREFERRED_UE_OPT_MAX;
333+
// TELIT_HE910 and QUECTEL_BG96 just gives an error and no specific error number so we can't know is this real error or that modem/network does not support the command
334+
CellularNetwork::Supported_UE_Opt supported_opt = CellularNetwork::SUPPORTED_UE_OPT_MAX;
335+
CellularNetwork::Preferred_UE_Opt preferred_opt = CellularNetwork::PREFERRED_UE_OPT_MAX;
335336
err = nw->get_ciot_optimization_config(supported_opt, preferred_opt);
336337
TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_DEVICE_ERROR);
337338
if (err == NSAPI_ERROR_DEVICE_ERROR) {
338339
// if device error then we must check was that really device error or that modem/network does not support the commands
339-
TEST_ASSERT(((AT_CellularNetwork *)nw)->get_device_error().errCode == 100 && // 100 == unknown command for modem
340-
((AT_CellularNetwork *)nw)->get_device_error().errType == 3); // 3 == CME error from the modem
340+
if (!(strcmp(devi, "TELIT_HE910") == 0 || strcmp(devi, "QUECTEL_BG96") == 0)) {
341+
TEST_ASSERT(((AT_CellularNetwork *)nw)->get_device_error().errCode == 100 && // 100 == unknown command for modem
342+
((AT_CellularNetwork *)nw)->get_device_error().errType == 3); // 3 == CME error from the modem
343+
}
341344
} else {
342-
TEST_ASSERT(supported_opt != SUPPORTED_UE_OPT_MAX);
343-
TEST_ASSERT(preferred_opt != PREFERRED_UE_OPT_MAX);
345+
TEST_ASSERT(supported_opt != CellularNetwork::SUPPORTED_UE_OPT_MAX);
346+
TEST_ASSERT(preferred_opt != CellularNetwork::PREFERRED_UE_OPT_MAX);
344347
}
345348

346349
err = nw->set_ciot_optimization_config(supported_opt, preferred_opt);
347350
TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_DEVICE_ERROR);
348351
if (err == NSAPI_ERROR_DEVICE_ERROR) {
349352
// if device error then we must check was that really device error or that modem/network does not support the commands
350-
TEST_ASSERT(((AT_CellularNetwork *)nw)->get_device_error().errCode == 100 && // 100 == unknown command for modem
351-
((AT_CellularNetwork *)nw)->get_device_error().errType == 3); // 3 == CME error from the modem
353+
if (!(strcmp(devi, "TELIT_HE910") == 0 || strcmp(devi, "QUECTEL_BG96") == 0)) {
354+
TEST_ASSERT(((AT_CellularNetwork *)nw)->get_device_error().errCode == 100 && // 100 == unknown command for modem
355+
((AT_CellularNetwork *)nw)->get_device_error().errType == 3); // 3 == CME error from the modem
356+
}
352357
}
353-
#endif
354-
355358
}
356359

357360
static void test_disconnect()

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

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,22 +57,26 @@ static void wait_for_power(CellularPower *pwr)
5757
TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_UNSUPPORTED);
5858

5959
int sanity_count = 0;
60-
while (pwr->is_device_ready() != NSAPI_ERROR_OK) {
60+
err = pwr->set_at_mode();
61+
while (err != NSAPI_ERROR_OK) {
6162
sanity_count++;
6263
wait(1);
63-
TEST_ASSERT(sanity_count < 20);
64+
TEST_ASSERT(sanity_count < 40);
65+
err = pwr->set_at_mode();
6466
}
6567

66-
err = pwr->set_at_mode();
67-
TEST_ASSERT(err == NSAPI_ERROR_OK);
68+
TEST_ASSERT(pwr->is_device_ready() == NSAPI_ERROR_OK);
6869

6970
pwr->remove_device_ready_urc_cb(&urc_callback);
7071
}
7172

7273
static void test_power_interface()
7374
{
75+
const char* devi = CELLULAR_STRINGIFY(CELLULAR_DEVICE);
7476
cellular_device = new CELLULAR_DEVICE(queue);
77+
cellular_device->set_timeout(5000);
7578
CellularPower *pwr = cellular_device->open_power(&cellular_serial);
79+
TEST_ASSERT(pwr != NULL);
7680

7781
nsapi_error_t err = pwr->on();
7882
TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_UNSUPPORTED);
@@ -84,6 +88,24 @@ static void test_power_interface()
8488
TEST_ASSERT(err == NSAPI_ERROR_OK);
8589
wait_for_power(pwr);
8690

91+
err = pwr->opt_power_save_mode(0,0);
92+
TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_DEVICE_ERROR);
93+
if (err == NSAPI_ERROR_DEVICE_ERROR) {
94+
if (!(strcmp(devi, "TELIT_HE910") == 0 || strcmp(devi, "QUECTEL_BG96") == 0)) { // TELIT_HE910 and QUECTEL_BG96 just gives an error and no specific error number so we can't know is this real error or that modem/network does not support the command
95+
TEST_ASSERT(((AT_CellularPower*)pwr)->get_device_error().errCode == 100 && // 100 == unknown command for modem
96+
((AT_CellularPower*)pwr)->get_device_error().errType == 3); // 3 == CME error from the modem
97+
}
98+
}
99+
100+
err = pwr->opt_receive_period(0, CellularPower::EDRXEUTRAN_NB_S1_mode, 3);
101+
TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_DEVICE_ERROR);
102+
if (err == NSAPI_ERROR_DEVICE_ERROR) {
103+
if (!(strcmp(devi, "TELIT_HE910") == 0 || strcmp(devi, "QUECTEL_BG96") == 0)) { // TELIT_HE910 and QUECTEL_BG96 just gives an error and no specific error number so we can't know is this real error or that modem/network does not support the command
104+
TEST_ASSERT(((AT_CellularPower*)pwr)->get_device_error().errCode == 100 && // 100 == unknown command for modem
105+
((AT_CellularPower*)pwr)->get_device_error().errType == 3); // 3 == CME error from the modem
106+
}
107+
}
108+
87109
err = pwr->off();
88110
TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_UNSUPPORTED);
89111
}

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,9 @@ static void test_sim_interface()
9292
CellularSIM *sim = cellular.get_sim();
9393
TEST_ASSERT(sim != NULL);
9494

95+
// set SIM at time out to 3000
96+
cellular.get_device()->set_timeout(3000);
97+
wait(4); // we need to wait for some time so that SIM interface is working in all modules.
9598
// 1. test set_pin
9699
nsapi_error_t err = sim->set_pin(MBED_CONF_APP_CELLULAR_SIM_PIN);
97100
MBED_ASSERT(err == NSAPI_ERROR_OK);
@@ -105,23 +108,31 @@ static void test_sim_interface()
105108
};
106109

107110
// change pin and change it back
111+
wait(1);
108112
err = sim->change_pin(MBED_CONF_APP_CELLULAR_SIM_PIN, pin);
109113
TEST_ASSERT(err == NSAPI_ERROR_OK);
114+
115+
wait(1);
110116
err = sim->change_pin(pin, MBED_CONF_APP_CELLULAR_SIM_PIN);
111117
TEST_ASSERT(err == NSAPI_ERROR_OK);
112118

113119
// 3. test set_pin_query
120+
wait(1);
114121
err = sim->set_pin_query(MBED_CONF_APP_CELLULAR_SIM_PIN, false);
115122
TEST_ASSERT(err == NSAPI_ERROR_OK);
123+
124+
wait(1);
116125
err = sim->set_pin_query(MBED_CONF_APP_CELLULAR_SIM_PIN, true);
117126
TEST_ASSERT(err == NSAPI_ERROR_OK);
118127

128+
wait(1);
119129
// 4. test get_sim_state
120130
CellularSIM::SimState state;
121131
err = sim->get_sim_state(state);
122132
TEST_ASSERT(err == NSAPI_ERROR_OK);
123133
TEST_ASSERT(state == CellularSIM::SimStateReady);
124134

135+
wait(1);
125136
// 5. test get_imsi
126137
char imsi[16] = {0};
127138
err = sim->get_imsi(imsi);

0 commit comments

Comments
 (0)