forked from xiaozhi/xiaozhi-esp32
edit signal display
This commit is contained in:
@@ -112,16 +112,14 @@ const char* Ml307Board::GetNetworkStateIcon() {
|
|||||||
int csq = modem_.GetCsq();
|
int csq = modem_.GetCsq();
|
||||||
if (csq == -1) {
|
if (csq == -1) {
|
||||||
return FONT_AWESOME_SIGNAL_OFF;
|
return FONT_AWESOME_SIGNAL_OFF;
|
||||||
} else if (csq >= 0 && csq <= 9) {
|
} else if (csq >= 0 && csq <= 14) {
|
||||||
return FONT_AWESOME_SIGNAL_1;
|
return FONT_AWESOME_SIGNAL_1;
|
||||||
} else if (csq >= 10 && csq <= 14) {
|
|
||||||
return FONT_AWESOME_SIGNAL_2;
|
|
||||||
} else if (csq >= 15 && csq <= 19) {
|
} else if (csq >= 15 && csq <= 19) {
|
||||||
return FONT_AWESOME_SIGNAL_3;
|
return FONT_AWESOME_SIGNAL_2;
|
||||||
} else if (csq >= 20 && csq <= 24) {
|
} else if (csq >= 20 && csq <= 24) {
|
||||||
return FONT_AWESOME_SIGNAL_4;
|
return FONT_AWESOME_SIGNAL_3;
|
||||||
} else if (csq >= 25 && csq <= 31) {
|
} else if (csq >= 25 && csq <= 31) {
|
||||||
return FONT_AWESOME_SIGNAL_FULL;
|
return FONT_AWESOME_SIGNAL_4;
|
||||||
}
|
}
|
||||||
|
|
||||||
ESP_LOGW(TAG, "Invalid CSQ: %d", csq);
|
ESP_LOGW(TAG, "Invalid CSQ: %d", csq);
|
||||||
|
|||||||
@@ -165,9 +165,9 @@ const char* WifiBoard::GetNetworkStateIcon() {
|
|||||||
return FONT_AWESOME_WIFI_OFF;
|
return FONT_AWESOME_WIFI_OFF;
|
||||||
}
|
}
|
||||||
int8_t rssi = wifi_station.GetRssi();
|
int8_t rssi = wifi_station.GetRssi();
|
||||||
if (rssi >= -55) {
|
if (rssi >= -60) {
|
||||||
return FONT_AWESOME_WIFI;
|
return FONT_AWESOME_WIFI;
|
||||||
} else if (rssi >= -65) {
|
} else if (rssi >= -70) {
|
||||||
return FONT_AWESOME_WIFI_FAIR;
|
return FONT_AWESOME_WIFI_FAIR;
|
||||||
} else {
|
} else {
|
||||||
return FONT_AWESOME_WIFI_WEAK;
|
return FONT_AWESOME_WIFI_WEAK;
|
||||||
|
|||||||
@@ -88,14 +88,16 @@ void Display::Update() {
|
|||||||
auto& board = Board::GetInstance();
|
auto& board = Board::GetInstance();
|
||||||
auto codec = board.GetAudioCodec();
|
auto codec = board.GetAudioCodec();
|
||||||
|
|
||||||
DisplayLockGuard lock(this);
|
{
|
||||||
// 如果静音状态改变,则更新图标
|
DisplayLockGuard lock(this);
|
||||||
if (codec->output_volume() == 0 && !muted_) {
|
// 如果静音状态改变,则更新图标
|
||||||
muted_ = true;
|
if (codec->output_volume() == 0 && !muted_) {
|
||||||
lv_label_set_text(mute_label_, FONT_AWESOME_VOLUME_MUTE);
|
muted_ = true;
|
||||||
} else if (codec->output_volume() > 0 && muted_) {
|
lv_label_set_text(mute_label_, FONT_AWESOME_VOLUME_MUTE);
|
||||||
muted_ = false;
|
} else if (codec->output_volume() > 0 && muted_) {
|
||||||
lv_label_set_text(mute_label_, "");
|
muted_ = false;
|
||||||
|
lv_label_set_text(mute_label_, "");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新电池图标
|
// 更新电池图标
|
||||||
@@ -117,16 +119,24 @@ void Display::Update() {
|
|||||||
icon = levels[battery_level / 20];
|
icon = levels[battery_level / 20];
|
||||||
}
|
}
|
||||||
if (battery_icon_ != icon) {
|
if (battery_icon_ != icon) {
|
||||||
|
DisplayLockGuard lock(this);
|
||||||
battery_icon_ = icon;
|
battery_icon_ = icon;
|
||||||
lv_label_set_text(battery_label_, battery_icon_);
|
lv_label_set_text(battery_label_, battery_icon_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 仅在聊天状态为空闲时,读取网络状态(避免升级时占用 UART 资源)
|
// 升级固件时,不读取 4G 网络状态,避免占用 UART 资源
|
||||||
auto device_state = Application::GetInstance().GetDeviceState();
|
auto device_state = Application::GetInstance().GetDeviceState();
|
||||||
if (device_state == kDeviceStateIdle || device_state == kDeviceStateStarting) {
|
static const std::vector<DeviceState> allowed_states = {
|
||||||
|
kDeviceStateIdle,
|
||||||
|
kDeviceStateStarting,
|
||||||
|
kDeviceStateWifiConfiguring,
|
||||||
|
kDeviceStateListening,
|
||||||
|
};
|
||||||
|
if (std::find(allowed_states.begin(), allowed_states.end(), device_state) != allowed_states.end()) {
|
||||||
icon = board.GetNetworkStateIcon();
|
icon = board.GetNetworkStateIcon();
|
||||||
if (network_icon_ != icon) {
|
if (network_icon_ != icon) {
|
||||||
|
DisplayLockGuard lock(this);
|
||||||
network_icon_ = icon;
|
network_icon_ = icon;
|
||||||
lv_label_set_text(network_label_, network_icon_);
|
lv_label_set_text(network_label_, network_icon_);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user