Skip to content

Commit bc8515b

Browse files
Ari Parkkila0xc0170
authored andcommitted
Cellular: Removed get_extended_signal_quality and changed get_signal_quality
1 parent a162589 commit bc8515b

File tree

7 files changed

+32
-99
lines changed

7 files changed

+32
-99
lines changed

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

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -529,24 +529,6 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_ciot_optimization_con
529529
EXPECT_TRUE(pref == CellularNetwork::PREFERRED_UE_OPT_NO_PREFERENCE);
530530
}
531531

532-
TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_extended_signal_quality)
533-
{
534-
EventQueue que;
535-
FileHandle_stub fh1;
536-
ATHandler at(&fh1, que, 0, ",");
537-
538-
AT_CellularNetwork cn(at);
539-
ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR;
540-
int rx = -1, be = -1, rs = -1, ec = -1, rsrq = -1, rsrp = -1;
541-
EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.get_extended_signal_quality(rx, be, rs, ec, rsrq, rsrp));
542-
EXPECT_TRUE(rx == -1 && be == -1 && rs == -1 && ec == -1 && rsrq == -1 && rsrp == -1);
543-
544-
ATHandler_stub::int_value = 5;
545-
ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
546-
EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_extended_signal_quality(rx, be, rs, ec, rsrq, rsrp));
547-
EXPECT_TRUE(rx == 5 && be == 5 && rs == 5 && ec == 5 && rsrq == 5 && rsrp == 5);
548-
}
549-
550532
TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_signal_quality)
551533
{
552534
EventQueue que;
@@ -556,13 +538,14 @@ TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_signal_quality)
556538
AT_CellularNetwork cn(at);
557539
int rs = -1, ber = -1;
558540
ATHandler_stub::nsapi_error_value = NSAPI_ERROR_DEVICE_ERROR;
559-
EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.get_signal_quality(rs, ber));
541+
EXPECT_TRUE(NSAPI_ERROR_DEVICE_ERROR == cn.get_signal_quality(rs, &ber));
560542
EXPECT_TRUE(rs == -1 && ber == -1);
561543

562544
ATHandler_stub::int_value = 1;
563545
ATHandler_stub::nsapi_error_value = NSAPI_ERROR_OK;
564-
EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_signal_quality(rs, ber));
565-
EXPECT_TRUE(rs == -111 && ber == 1);
546+
EXPECT_TRUE(NSAPI_ERROR_OK == cn.get_signal_quality(rs, &ber));
547+
EXPECT_EQ(rs, -111);
548+
EXPECT_EQ(ber, 1);
566549
}
567550

568551
TEST_F(TestAT_CellularNetwork, test_AT_CellularNetwork_get_3gpp_error)

UNITTESTS/stubs/AT_CellularNetwork_stub.cpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -120,12 +120,7 @@ nsapi_error_t AT_CellularNetwork::get_ciot_optimization_config(Supported_UE_Opt
120120
return NSAPI_ERROR_OK;
121121
}
122122

123-
nsapi_error_t AT_CellularNetwork::get_extended_signal_quality(int &rxlev, int &ber, int &rscp, int &ecno, int &rsrq, int &rsrp)
124-
{
125-
return NSAPI_ERROR_OK;
126-
}
127-
128-
nsapi_error_t AT_CellularNetwork::get_signal_quality(int &rssi, int &ber)
123+
nsapi_error_t AT_CellularNetwork::get_signal_quality(int &rssi, int *ber)
129124
{
130125
return NSAPI_ERROR_OK;
131126
}

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

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -180,32 +180,14 @@ static void test_other()
180180
TEST_ASSERT(nw->scan_plmn(operators, uplinkRate) == NSAPI_ERROR_OK);
181181
device->set_timeout(10 * 1000);
182182

183-
int rxlev = -1, ber = -1, rscp = -1, ecno = -1, rsrq = -1, rsrp = -1;
184-
err = nw->get_extended_signal_quality(rxlev, ber, rscp, ecno, rsrq, rsrp);
185-
TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_DEVICE_ERROR);
186-
if (err == NSAPI_ERROR_DEVICE_ERROR) {
187-
if (strcmp(devi, "QUECTEL_BG96") != 0 && strcmp(devi, "TELIT_HE910") != 0) {// QUECTEL_BG96 does not give any specific reason for device error
188-
TEST_ASSERT((((AT_CellularNetwork *)nw)->get_device_error().errType == 3) && // 3 == CME error from the modem
189-
((((AT_CellularNetwork *)nw)->get_device_error().errCode == 100) || // 100 == unknown command for modem
190-
(((AT_CellularNetwork *)nw)->get_device_error().errCode == 50))); // 50 == incorrect parameters // seen in wise_1570 for not supported commands
191-
}
192-
} else {
193-
// we should have some values which are not optional
194-
TEST_ASSERT(rxlev >= 0 && ber >= 0 && rscp >= 0 && ecno >= 0 && rsrq >= 0 && rsrp >= 0);
195-
}
196-
197183
int rssi = -1;
198-
ber = -1;
199-
err = nw->get_signal_quality(rssi, ber);
184+
int ber = -1;
185+
err = nw->get_signal_quality(rssi, &ber);
200186
TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_DEVICE_ERROR);
201187
if (err == NSAPI_ERROR_DEVICE_ERROR) {
202188
TEST_ASSERT((((AT_CellularNetwork *)nw)->get_device_error().errType == 3) && // 3 == CME error from the modem
203189
((((AT_CellularNetwork *)nw)->get_device_error().errCode == 100) || // 100 == unknown command for modem
204190
(((AT_CellularNetwork *)nw)->get_device_error().errCode == 50))); // 50 == incorrect parameters // seen in wise_1570 for not supported commands
205-
} else {
206-
// test for values
207-
TEST_ASSERT(rssi >= 0);
208-
TEST_ASSERT(ber >= 0);
209191
}
210192

211193
CellularNetwork::registration_params_t reg_params;

features/cellular/framework/API/CellularNetwork.h

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -277,27 +277,17 @@ class CellularNetwork {
277277
virtual nsapi_error_t get_ciot_optimization_config(Supported_UE_Opt &supported_opt,
278278
Preferred_UE_Opt &preferred_opt) = 0;
279279

280-
/** Get extended signal quality parameters.
281-
*
282-
* @param rxlev signal strength level
283-
* @param ber bit error rate
284-
* @param rscp signal code power
285-
* @param ecno ratio of the received energy per PN chip to the total received power spectral density
286-
* @param rsrq signal received quality
287-
* @param rsrp signal received power
288-
* @return NSAPI_ERROR_OK on success
289-
* NSAPI_ERROR_DEVICE_ERROR on other failures
290-
*/
291-
virtual nsapi_error_t get_extended_signal_quality(int &rxlev, int &ber, int &rscp, int &ecno, int &rsrq, int &rsrp) = 0;
292-
293280
/** Get signal quality parameters.
294281
*
295-
* @param rssi signal strength level
296-
* @param ber bit error rate
282+
* @param rssi signal strength level as defined in 3GPP TS 27.007, range -113..-51 dBm or SignalQualityUnknown
283+
* @param ber bit error rate as RXQUAL as defined in 3GPP TS 45.008, range 0..7 or SignalQualityUnknown
297284
* @return NSAPI_ERROR_OK on success
298285
* NSAPI_ERROR_DEVICE_ERROR on other failures
299286
*/
300-
virtual nsapi_error_t get_signal_quality(int &rssi, int &ber) = 0;
287+
enum SignalQuality {
288+
SignalQualityUnknown = 99
289+
};
290+
virtual nsapi_error_t get_signal_quality(int &rssi, int *ber = NULL) = 0;
301291

302292
/** Get the last 3GPP error code
303293
* @return see 3GPP TS 27.007 error codes

features/cellular/framework/AT/AT_CellularNetwork.cpp

Lines changed: 16 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -468,49 +468,35 @@ nsapi_error_t AT_CellularNetwork::get_ciot_optimization_config(Supported_UE_Opt
468468
return _at.unlock_return_error();
469469
}
470470

471-
nsapi_error_t AT_CellularNetwork::get_extended_signal_quality(int &rxlev, int &ber, int &rscp, int &ecno, int &rsrq, int &rsrp)
472-
{
473-
_at.lock();
474-
475-
_at.cmd_start("AT+CESQ");
476-
_at.cmd_stop();
477-
478-
_at.resp_start("+CESQ:");
479-
rxlev = _at.read_int();
480-
ber = _at.read_int();
481-
rscp = _at.read_int();
482-
ecno = _at.read_int();
483-
rsrq = _at.read_int();
484-
rsrp = _at.read_int();
485-
_at.resp_stop();
486-
if (rxlev < 0 || ber < 0 || rscp < 0 || ecno < 0 || rsrq < 0 || rsrp < 0) {
487-
_at.unlock();
488-
return NSAPI_ERROR_DEVICE_ERROR;
489-
}
490-
491-
return _at.unlock_return_error();
492-
}
493-
494-
nsapi_error_t AT_CellularNetwork::get_signal_quality(int &rssi, int &ber)
471+
nsapi_error_t AT_CellularNetwork::get_signal_quality(int &rssi, int *ber)
495472
{
496473
_at.lock();
497474

498475
_at.cmd_start("AT+CSQ");
499476
_at.cmd_stop();
500477

501478
_at.resp_start("+CSQ:");
502-
rssi = _at.read_int();
503-
ber = _at.read_int();
479+
int t_rssi = _at.read_int();
480+
int t_ber = _at.read_int();
504481
_at.resp_stop();
505-
if (rssi < 0 || ber < 0) {
482+
if (t_rssi < 0 || t_ber < 0) {
506483
_at.unlock();
507484
return NSAPI_ERROR_DEVICE_ERROR;
508485
}
509486

510-
if (rssi == 99) {
511-
rssi = 0;
487+
// RSSI value is returned in dBm with range from -51 to -113 dBm, see 3GPP TS 27.007
488+
if (t_rssi == 99) {
489+
rssi = SignalQualityUnknown;
512490
} else {
513-
rssi = -113 + 2 * rssi;
491+
rssi = -113 + 2 * t_rssi;
492+
}
493+
494+
if (ber) {
495+
if (t_ber == 99) {
496+
*ber = SignalQualityUnknown;
497+
} else {
498+
*ber = t_ber;
499+
}
514500
}
515501

516502
return _at.unlock_return_error();

features/cellular/framework/AT/AT_CellularNetwork.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,7 @@ class AT_CellularNetwork : public CellularNetwork, public AT_CellularBase {
6969
virtual nsapi_error_t get_ciot_optimization_config(Supported_UE_Opt &supported_opt,
7070
Preferred_UE_Opt &preferred_opt);
7171

72-
virtual nsapi_error_t get_extended_signal_quality(int &rxlev, int &ber, int &rscp, int &ecno, int &rsrq, int &rsrp);
73-
74-
virtual nsapi_error_t get_signal_quality(int &rssi, int &ber);
72+
virtual nsapi_error_t get_signal_quality(int &rssi, int *ber = NULL);
7573

7674
virtual int get_3gpp_error();
7775

features/cellular/framework/device/CellularStateMachine.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -585,9 +585,8 @@ void CellularStateMachine::event()
585585
#if MBED_CONF_MBED_TRACE_ENABLE
586586
if (_network) {
587587
int rssi;
588-
int ber;
589-
if (_network->get_signal_quality(rssi, ber) == NSAPI_ERROR_OK) {
590-
if (rssi == 0) {
588+
if (_network->get_signal_quality(rssi) == NSAPI_ERROR_OK) {
589+
if (rssi == CellularNetwork::SignalQualityUnknown) {
591590
tr_info("RSSI unknown");
592591
} else {
593592
tr_info("RSSI %d dBm", rssi);

0 commit comments

Comments
 (0)