# SPDX-FileCopyrightText: Copyright (c) 2022-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: LicenseRef-NvidiaProprietary # # NVIDIA CORPORATION, its affiliates and licensors retain all intellectual # property and proprietary rights in and to this material, related # documentation and any modifications thereto. Any use, reproduction, # disclosure or distribution of this material and related documentation # without an express license agreement from NVIDIA CORPORATION or # its affiliates is strictly prohibited. from tkinter import StringVar from tkinter.ttk import Label, LabelFrame from ...utils.common import PAttrs, PNames from ...utils.layoutmanager import fill_parent, grid_span, padding from ...utils.subjectobserver import Observer class FanFrame(LabelFrame, Observer): def __init__(self, master=None, **kwargs): self.fan_id = kwargs["fan_id"] kwargs.pop("fan_id") super().__init__(master, text=f"Fan{self.fan_id}", **kwargs) self.create_widgets() self.manage_layout() fill_parent(self) def create_widgets(self): self.pwm_v = StringVar() self.rpm_v = StringVar() self.fan_gov_v = StringVar() self.loop_ctrl_v = StringVar() self.pwm_l = Label(self, textvariable=self.pwm_v) self.rpm_l = Label(self, textvariable=self.rpm_v) self.fan_gov_l = Label(self, textvariable=self.fan_gov_v) self.loop_ctrl_l = Label(self, textvariable=self.loop_ctrl_v) def manage_layout(self): self.pwm_l.grid(row=0, column=0, sticky="W", **grid_span, **padding) self.rpm_l.grid(row=1, column=0, sticky="W", **grid_span, **padding) self.fan_gov_l.grid(row=0, column=1, sticky="E", **grid_span, **padding) self.loop_ctrl_l.grid(row=1, column=1, sticky="E", **grid_span, **padding) def update_data(self, data): fan_name = PNames.FAN_NAMES[self.fan_id - 1] self.pwm_v.set(f"PWM: {data[(fan_name, PAttrs.CURR_PWM)]}") self.rpm_v.set(f"RPM: {data[(fan_name, PAttrs.RPM_MEASURED)]}") self.fan_gov_v.set(f"Governor: {data[(fan_name, PAttrs.FAN_GOVERNOR)]}") self.loop_ctrl_v.set(f"Control: {data[(fan_name, PAttrs.FAN_CONTROL)]}")