File: data_packet_factory.py

package info (click to toggle)
python-airtouch5py 0.2.10-1.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,052 kB
  • sloc: python: 1,748; makefile: 5
file content (53 lines) | stat: -rw-r--r-- 2,208 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
from airtouch5py.packets.ac_ability import AcAbilityRequestData
from airtouch5py.packets.ac_control import AcControl, AcControlData
from airtouch5py.packets.ac_error_information import AcErrorInformationRequestData
from airtouch5py.packets.ac_status import AcStatusData
from airtouch5py.packets.console_version import ConsoleVersionRequestData
from airtouch5py.packets.datapacket import DataPacket
from airtouch5py.packets.zone_control import ZoneControlData, ZoneControlZone
from airtouch5py.packets.zone_name import ZoneNameRequestData
from airtouch5py.packets.zone_status import ZoneStatusData

ADDRESS = 0x80B0
EXTENDED_ADDRESS = 0x90B0


class DataPacketFactory:
    _id: int

    def __init__(self):
        self._id = 0x01

    def zone_control(self, zones: list[ZoneControlZone]) -> DataPacket:
        self._id = (self._id + 1) % 256
        return DataPacket(ADDRESS, self._id, ZoneControlData(zones))

    def zone_status_request(self) -> DataPacket:
        self._id = (self._id + 1) % 256
        return DataPacket(ADDRESS, self._id, ZoneStatusData([]))

    def ac_control(self, ac: list[AcControl]) -> DataPacket:
        self._id = (self._id + 1) % 256
        return DataPacket(ADDRESS, self._id, AcControlData(ac))

    def ac_status_request(self) -> DataPacket:
        self._id = (self._id + 1) % 256
        return DataPacket(ADDRESS, self._id, AcStatusData([]))

    def ac_ability_request(self, ac_number: int | None = None) -> DataPacket:
        self._id = (self._id + 1) % 256
        return DataPacket(EXTENDED_ADDRESS, self._id, AcAbilityRequestData(ac_number))

    def ac_error_information_request(self, ac_number: int) -> DataPacket:
        self._id = (self._id + 1) % 256
        return DataPacket(
            EXTENDED_ADDRESS, self._id, AcErrorInformationRequestData(ac_number)
        )

    def zone_name_request(self, zone_number: int | None = None) -> DataPacket:
        self._id = (self._id + 1) % 256
        return DataPacket(EXTENDED_ADDRESS, self._id, ZoneNameRequestData(zone_number))

    def console_version_request(self) -> DataPacket:
        self._id = (self._id + 1) % 256
        return DataPacket(EXTENDED_ADDRESS, self._id, ConsoleVersionRequestData())