diff --git a/src/shell/control_center/bluetooth_tab.cpp b/src/shell/control_center/bluetooth_tab.cpp index 532c52659..b6f734a28 100644 --- a/src/shell/control_center/bluetooth_tab.cpp +++ b/src/shell/control_center/bluetooth_tab.cpp @@ -75,6 +75,36 @@ namespace { return DeviceBucket::Available; } + int signalPercentFromRssi(std::int16_t rssi) { + constexpr int kWeakRssi = -100; + constexpr int kStrongRssi = -40; + constexpr int kRange = kStrongRssi - kWeakRssi; + const int clamped = std::clamp(static_cast(rssi), kWeakRssi, kStrongRssi); + return ((clamped - kWeakRssi) * 100 + kRange / 2) / kRange; + } + + std::unique_ptr makeMetricPill(const char* glyphName, std::string text, float scale) { + auto pill = std::make_unique(); + pill->setDirection(FlexDirection::Horizontal); + pill->setAlign(FlexAlign::Center); + pill->setGap(Style::spaceXs * 0.5f * scale); + + auto glyph = std::make_unique(); + glyph->setGlyph(glyphName); + glyph->setGlyphSize(Style::fontSizeCaption * scale); + glyph->setColor(colorSpecFromRole(ColorRole::OnSurfaceVariant)); + pill->addChild(std::move(glyph)); + + auto label = std::make_unique