mirror of
https://github.com/akuker/RASCSI.git
synced 2026-04-25 14:26:28 +00:00
Add web UI notification for under voltage/throttling events (#1203)
This commit is contained in:
@@ -27,3 +27,11 @@ class ReturnCodes:
|
||||
EXTRACTIMAGE_NO_FILES_SPECIFIED = 91
|
||||
EXTRACTIMAGE_NO_FILES_EXTRACTED = 92
|
||||
EXTRACTIMAGE_COMMAND_ERROR = 93
|
||||
UNDER_VOLTAGE_DETECTED = 100
|
||||
ARM_FREQUENCY_CAPPED = 101
|
||||
CURRENTLY_THROTTLED = 102
|
||||
SOFT_TEMPERATURE_LIMIT_ACTIVE = 103
|
||||
UNDER_VOLTAGE_HAS_OCCURRED = 116
|
||||
ARM_FREQUENCY_CAPPING_HAS_OCCURRED = 117
|
||||
THROTTLING_HAS_OCCURRED = 118
|
||||
SOFT_TEMPERATURE_LIMIT_HAS_OCCURRED = 119
|
||||
|
||||
@@ -9,7 +9,9 @@ from re import findall, match
|
||||
from socket import socket, gethostname, AF_INET, SOCK_DGRAM
|
||||
from pathlib import Path
|
||||
from platform import uname
|
||||
from vcgencmd import Vcgencmd
|
||||
|
||||
from piscsi.return_codes import ReturnCodes
|
||||
from piscsi.common_settings import SHELL_ERROR
|
||||
|
||||
|
||||
@@ -263,3 +265,37 @@ class SysCmds:
|
||||
return process.returncode, process.stdout.decode("utf-8")
|
||||
|
||||
return process.returncode, process.stderr.decode("utf-8")
|
||||
|
||||
@staticmethod
|
||||
def get_throttled(enabled_modes, test_modes):
|
||||
"""
|
||||
Takes (list) enabled_modes & (list) test_modes parameters & returns a
|
||||
tuple of (str) category & (str) message.
|
||||
|
||||
enabled_modes is a list of modes that will be enabled for display if
|
||||
they're triggered. test_modes works similarly to enabled_mode but will
|
||||
ALWAYS display the modes listed for troubleshooting styling.
|
||||
"""
|
||||
vcgcmd = Vcgencmd()
|
||||
t_states = vcgcmd.get_throttled()['breakdown']
|
||||
matched_states = []
|
||||
|
||||
state_msgs = {
|
||||
"0": ("error", ReturnCodes.UNDER_VOLTAGE_DETECTED),
|
||||
"1": ("warning", ReturnCodes.ARM_FREQUENCY_CAPPED),
|
||||
"2": ("error", ReturnCodes.CURRENTLY_THROTTLED),
|
||||
"3": ("warning", ReturnCodes.SOFT_TEMPERATURE_LIMIT_ACTIVE),
|
||||
"16": ("warning", ReturnCodes.UNDER_VOLTAGE_HAS_OCCURRED),
|
||||
"17": ("warning", ReturnCodes.ARM_FREQUENCY_CAPPING_HAS_OCCURRED),
|
||||
"18": ("warning", ReturnCodes.THROTTLING_HAS_OCCURRED),
|
||||
"19": ("warning", ReturnCodes.SOFT_TEMPERATURE_LIMIT_HAS_OCCURRED),
|
||||
}
|
||||
|
||||
for k in t_states:
|
||||
if t_states[k] and k in enabled_modes:
|
||||
matched_states.append(state_msgs[k])
|
||||
|
||||
for t in test_modes:
|
||||
matched_states.append(state_msgs[t])
|
||||
|
||||
return matched_states
|
||||
|
||||
Reference in New Issue
Block a user