mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-04-18 22:18:38 -04:00
Split module-utils into smaller components for better dependency management. Fix many dependencies throughout the project. Signed-off-by: Marcin Smoczyński <smoczynski.marcin@gmail.com>
60 lines
1.5 KiB
C++
60 lines
1.5 KiB
C++
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
|
|
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
|
|
|
|
#include "service-cellular/SignalStrength.hpp"
|
|
#include <log/log.hpp>
|
|
|
|
SignalStrength::SignalStrength(int rssi)
|
|
{
|
|
setRssi(rssi);
|
|
}
|
|
|
|
int SignalStrength::rssiTodBm(const int rssi)
|
|
{
|
|
int ret = rssidBm_invalid;
|
|
if (rssi == rssi_invalid || rssi == rssi_tdscmda_invalid) {
|
|
return ret;
|
|
}
|
|
|
|
if (rssi >= rssi_low && rssi <= rssi_max) {
|
|
ret = rssi_low_dBm - rssi * rssi_step;
|
|
}
|
|
else if (rssi >= rssi_tdscmda_low && rssi <= rssi_tdscmda_max) {
|
|
LOG_WARN("TD-SCDMA rssi range - signal strength indicator not fully supported");
|
|
ret = rssi_tdscmda_low_dBm - rssi * rssi_tdscmda_step;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
Store::RssiBar SignalStrength::rssidBmToBar(const int rssidBm)
|
|
{
|
|
using namespace Store;
|
|
|
|
if (rssidBm == rssidBm_invalid) {
|
|
return RssiBar::zero;
|
|
}
|
|
else if (rssidBm >= rssidBm_four_bar_margin) {
|
|
return RssiBar::four;
|
|
}
|
|
else if (rssidBm >= rssidBm_three_bar_margin) {
|
|
return RssiBar::three;
|
|
}
|
|
else if (rssidBm >= rssidBm_two_bar_margin) {
|
|
return RssiBar::two;
|
|
}
|
|
else if (rssidBm >= rssidBm_one_bar_margin) {
|
|
return RssiBar::one;
|
|
}
|
|
else {
|
|
return RssiBar::zero;
|
|
}
|
|
}
|
|
|
|
void SignalStrength::setRssi(const int rssi)
|
|
{
|
|
data.rssi = rssi;
|
|
data.rssidBm = rssiTodBm(data.rssi);
|
|
data.rssiBar = rssidBmToBar(data.rssidBm);
|
|
}
|