76 lines
2.7 KiB
Python
76 lines
2.7 KiB
Python
from .pattern import PatternMeta
|
|
|
|
|
|
class MemoryUsage:
|
|
def __init__(self, used: int, free: int, total: int):
|
|
self.used: int = used
|
|
self.free: int = free
|
|
self.total: int = total
|
|
|
|
def to_json(self):
|
|
return {
|
|
"used": self.used, "free": self.free, "total": self.total
|
|
}
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(json["used"], json["free"], json["total"])
|
|
|
|
|
|
class Status:
|
|
def __init__(
|
|
self, ap: int, name: str, group: str, firmware: str, power: bool,
|
|
mac: str, selectedPattern: int, brightness: int, length: int,
|
|
start: int, end: int, fade: int, isReversed: bool, cycle: int,
|
|
uptime: int, memory: MemoryUsage, patterns: list[PatternMeta]
|
|
):
|
|
self.ap: int = ap
|
|
self.name: str = name
|
|
self.group: str = group
|
|
self.firmware: str = firmware
|
|
self.power: bool = power
|
|
self.mac: str = mac
|
|
self.selectedPattern: int = selectedPattern
|
|
self.brightness: int = brightness
|
|
self.length: int = length
|
|
self.start: int = start
|
|
self.end: int = end
|
|
self.fade: int = fade
|
|
self.isReversed: bool = isReversed
|
|
self.cycle: int = cycle
|
|
self.uptime: int = uptime
|
|
self.memory: MemoryUsage = memory
|
|
self.patterns: list[PatternMeta] = patterns
|
|
|
|
def get_current_pattern(self) -> PatternMeta | None:
|
|
return self.get_pattern_by_id(self.selectedPattern)
|
|
|
|
def get_pattern_by_id(self, id: int) -> PatternMeta | None:
|
|
for pattern in self.patterns:
|
|
if pattern.id == id:
|
|
return pattern
|
|
return None
|
|
|
|
def to_json(self):
|
|
return {
|
|
"ap": self.ap, "name": self.name, "group": self.group,
|
|
"firmware": self.firmware, "power": 1 if self.power else 0,
|
|
"mac": self.mac, "selectedPattern": self.selectedPattern,
|
|
"brightness": self.brightness, "length": self.length,
|
|
"start": self.start, "end": self.end, "fade": self.fade,
|
|
"reversed": 1 if self.isReversed else 0, "cycle": self.cycle,
|
|
"uptime": self.uptime, "memory": self.memory.to_json(),
|
|
"patterns": [p.to_json() for p in self.patterns]
|
|
}
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
json["ap"], json["name"], json["group"], json["firmware"],
|
|
json["power"] == 1, json["mac"], json["selectedPattern"],
|
|
json["brightness"], json["length"], json["start"], json["end"],
|
|
json["fade"], json["reversed"] == 1, json["cycle"],
|
|
json["uptime"], MemoryUsage.from_json(json["memory"]),
|
|
[PatternMeta.from_json(p) for p in json["patterns"]]
|
|
)
|