Beispiel #1
0
class NodeInfoCachedReport(Message):
    """Command Class message COMMAND_CLASS_NETWORK_MANAGEMENT_PROXY NODE_INFO_CACHED_REPORT"""

    NAME = "NODE_INFO_CACHED_REPORT"

    class Status(IntEnum):
        """Node info status"""

        OK = 0x00
        NOT_RESPONDING = 0x01
        UNKNOWN = 0x02

    attributes = (
        ("seqNo", uint8_t),
        ("status", enum_t(Status, uint4_t)),
        ("age", uint4_t),
        ("listening", flag_t),
        ("zwaveProtocolSpecific", reserved_t(7)),
        ("optFunc", flag_t),
        ("zwaveProtocolSpecific", reserved_t(7)),
        ("-", reserved_t(8)),
        ("basicDeviceClass", uint8_t),
        ("genericDeviceClass", uint8_t),
        ("specificDeviceClass", uint8_t),
        ("commandClass", bytes_t),
    )
Beispiel #2
0
class Get(Message):
    """Command Class message COMMAND_CLASS_SENSOR_MULTILEVEL SENSOR_MULTILEVEL_GET"""

    NAME = "GET"

    attributes = (
        ("sensorType", SensorType_t),
        ("-", reserved_t(3)),
        ("scale", bits_t(2)),
        ("-", reserved_t(3)),
    )
Beispiel #3
0
class ZipInvNodeSolicitation(Message):
    """
    Command Class Message COMMAND_CLASS_ZIP_ND ZIP_INV_NODE_SOLICITATION
    """

    NAME = "ZIP_INV_NODE_SOLICITATION"
    attributes = (
        ("-", reserved_t(4)),
        ("local", flag_t),
        ("-", reserved_t(3)),
        ("nodeId", uint8_t),
    )
Beispiel #4
0
class MultiChannelEndPointReport(Message):
    """
    Command Class message
    COMMAND_CLASS_NETWORK_MANAGEMENT_PROXY NM_MULTI_CHANNEL_END_POINT_REPORT
    """

    NAME = "NM_MULTI_CHANNEL_END_POINT_REPORT"

    attributes = (
        ("seqNo", uint8_t),
        ("nodeID", uint8_t),
        ("-", reserved_t(8)),
        ("-", reserved_t(1)),
        ("individualEndPoints", uint7_t),
        ("-", reserved_t(1)),
        ("aggregatedEndPoints", uint7_t),
    )
Beispiel #5
0
class ZIPPacketOptionEncapsulationFormatInfo(ZIPPacketOptionData,
                                             AttributesMixin):
    """Zip packet option encapsulation format info"""

    attributes = (
        ("security2SecurityClass", bits_t(8)),
        ("-", reserved_t(7)),
        ("crc16", flag_t),
    )
Beispiel #6
0
class GroupInfoGroupType(DictAttribute):
    """The type for the group property in the GroupInfoReport"""

    attributes = (
        ("groupingIdentifier", uint8_t),
        ("mode", uint8_t),
        ("profile", uint16_t),
        ("-", reserved_t(8)),
        ("eventCode", uint16_t),
    )
Beispiel #7
0
class GroupInfoGet(Message):
    """Command Class message COMMAND_CLASS_VERSION ASSOCIATION_GROUP_INFO_GET"""

    NAME = "GROUP_INFO_GET"
    attributes = (
        ("refreshCache", flag_t),
        ("listMode", flag_t),
        ("-", reserved_t(6)),
        ("groupingIdentifier", uint8_t),
    )
Beispiel #8
0
class ConfigurationSet(Message):
    """Command Class message COMMAND_CLASS_MAILBOX MAILBOX_CONFIGURATION_SET"""

    NAME = "CONFIGURATION_SET"
    attributes = (
        ("-", reserved_t(5)),
        ("mode", Mode_t),
        ("forwardingDestinationIPv6Address", IPv6),
        ("udpPortNumber", uint16_t),
    )
Beispiel #9
0
class Get(Message):
    """Command Class message COMMAND_CLASS_METER METER_GET"""

    NAME = "GET"

    attributes = (
        ("rateType", RateType_t),
        ("scale", bits_t(3)),
        ("-", reserved_t(3)),
        ("scale2", uint8_t),
    )
class NodeAddDSKReport(Message):
    """Command Class message COMMAND_CLASS_NETWORK_MANAGEMENT_INCLUSION NODE_ADD_DSK_REPORT"""

    NAME = "NODE_ADD_DSK_REPORT"

    attributes = (
        ("seqNo", uint8_t),
        ("-", reserved_t(4)),
        ("inputDSKLength", uint4_t),
        ("dsk", dsk_t),
    )
class NodeAddKeysReport(Message):
    """Command Class message COMMAND_CLASS_NETWORK_MANAGEMENT_INCLUSION NODE_ADD_KEYS_REPORT"""

    NAME = "NODE_ADD_KEYS_REPORT"

    attributes = (
        ("seqNo", uint8_t),
        ("-", reserved_t(7)),
        ("requestCSA", flag_t),
        ("requestedKeys", enum_t(Keys, uint8_t)),
    )
Beispiel #12
0
class NodeInfoCachedGet(Message):
    """Command Class message COMMAND_CLASS_NETWORK_MANAGEMENT_PROXY NODE_INFO_CACHED_GET"""

    NAME = "NODE_INFO_CACHED_GET"

    attributes = (
        ("seqNo", uint8_t),
        ("-", reserved_t(4)),
        ("maxAge", bits_t(4)),
        ("nodeID", uint8_t),
    )
Beispiel #13
0
class ConfigurationReport(Message):
    """Command Class message COMMAND_CLASS_MAILBOX MAILBOX_CONFIGURATION_REPORT"""

    NAME = "CONFIGURATION_REPORT"
    attributes = (
        ("-", reserved_t(3)),
        ("supportedModes", bits_t(2)),
        ("mode", Mode_t),
        ("mailboxCapacity", uint16_t),
        ("forwardingDestinationIPv6Address", IPv6),
        ("udpPortNumber", uint16_t),
    )
Beispiel #14
0
class ZipKeepAlive(Message):
    """
    Command Class message COMMAND_CLASS_ZIP COMMAND_ZIP_KEEP_ALIVE
    """

    NAME = "ZIP_KEEP_ALIVE"

    attributes = (
        ("ackRequest", flag_t),
        ("ackResponse", flag_t),
        ("_", reserved_t(6)),
    )
Beispiel #15
0
class GroupCommandListGet(Message):
    """
    Command Class message
    COMMAND_CLASS_ASSOCIATION_GRP_INFO ASSOCIATION_GROUP_COMMAND_LIST_GET
    """

    NAME = "GROUP_COMMAND_LIST_GET"
    attributes = (
        ("allowCache", flag_t),
        ("-", reserved_t(7)),
        ("groupingIdentifier", uint8_t),
    )
class NodeAddKeysSet(Message):
    """Command Class message COMMAND_CLASS_NETWORK_MANAGEMENT_INCLUSION NODE_ADD_KEYS_SET"""

    NAME = "NODE_ADD_KEYS_SET"

    attributes = (
        ("seqNo", uint8_t),
        ("-", reserved_t(6)),
        ("grantCSA", flag_t),
        ("accept", flag_t),
        ("grantedKeys", enum_t(Keys, uint8_t)),
    )
Beispiel #17
0
class SupportedScaleReport(Message):
    """
    Command Class message
    COMMAND_CLASS_SENSOR_MULTILEVEL
    SENSOR_MULTILEVEL_SUPPORTED_SCALE_REPORT
    """

    NAME = "SUPPORTED_SCALE_REPORT"
    attributes = (
        ("sensorType", SensorType_t),
        ("-", reserved_t(4)),
        ("scaleBitMask", bits_t(4)),
    )
Beispiel #18
0
class GatewayPeerSet(Message):
    """
    Command Class Message COMMAND_CLASS_ZIP_GATEWAY GATEWAY_PEER_SET
    """

    NAME = "GATEWAY_PEER_SET"
    attributes = (
        ("peerProfile", uint8_t),
        ("ipv6", IPv6),
        ("port", uint16_t),
        ("-", reserved_t(2)),
        ("peerNameLength", bits_t(6)),
    )
Beispiel #19
0
class BulkReport(Message):
    """Command Class message COMMAND_CLASS_CONFIGURATION CONFIGURATION_BULK_REPORT_V2"""

    NAME = "BULK_REPORT"
    attributes = (
        ("parameterOffset", uint16_t),
        ("numberOfParameters", uint8_t),
        ("reportsToFollow", uint8_t),
        ("default", flag_t),
        ("handshake", flag_t),
        ("-", reserved_t(3)),
        ("size", Size_t),
        ("parameter", bytes_t),
    )
Beispiel #20
0
class MultiChannelCapabilityGet(Message):
    """
    Command Class message
    COMMAND_CLASS_NETWORK_MANAGEMENT_PROXY NM_MULTI_CHANNEL_CAPABILITY_GET
    """

    NAME = "NM_MULTI_CHANNEL_CAPABILITY_GET"

    attributes = (
        ("seqNo", uint8_t),
        ("nodeID", uint8_t),
        ("-", reserved_t(1)),
        ("endPoint", uint7_t),
    )
Beispiel #21
0
class Report(Message):
    """Command Class message COMMAND_CLASS_CONFIGURATION CONFIGURATION_REPORT"""

    NAME = "REPORT"

    attributes = (
        ("parameterNumber", uint8_t),
        ("-", reserved_t(5)),
        ("size", Size_t),
        ("value", int),
    )

    def parse_value(self, stream: BitStreamReader):  # pylint: disable=invalid-name
        """Decode the value from the report"""
        return int.from_bytes(stream.value(self.size), "big", signed=False)
class NodeAddStatus(Message):
    """Command Class message COMMAND_CLASS_NETWORK_MANAGEMENT_INCLUSION NODE_ADD_STATUS"""
    class Status(IntEnum):
        """Add node status"""

        NODE_FOUND = 0x02  # Note, not part of NodeAddStatus, only in Serial Api
        ADD_SLAVE = 0x03  # Note, not part of NodeAddStatus, only in Serial Api
        PROTOCOL_DONE = 0x05  # Note, not part of NodeAddStatus, only in Serial Api
        DONE = 0x06
        FAILED = 0x07
        SECURITY_FAILED = 0x09

    NAME = "NODE_ADD_STATUS"

    attributes = (
        ("seqNo", uint8_t),
        ("status", enum_t(Status, uint8_t)),
        ("-", reserved_t(8)),
        ("newNodeID", uint8_t),
        ("nodeInfoLength", uint8_t),
        ("listening", flag_t),
        ("zwaveProtocolSpecific", reserved_t(7)),
        ("optFunc", flag_t),
        ("zwaveProtocolSpecific", reserved_t(7)),
        ("basicDeviceClass", uint8_t),
        ("genericDeviceClass", uint8_t),
        ("specificDeviceClass", uint8_t),
        ("commandClass", list),
    )

    def parse_commandClass(self, stream: BitStreamReader):  # pylint: disable=invalid-name
        """Parse the length prefixed command"""
        length = self.nodeInfoLength - 7
        if length > stream.bytesLeft():
            return list(stream.remaining())
        return list(stream.value(length))
Beispiel #23
0
class ZipNodeAdvertisement(Message):
    """
    Command Class message COMMAND_CLASS_ZIP_ND ZIP_NODE_ADVERTISEMENT
    """

    NAME = "ZIP_NODE_ADVERTISEMENT"

    attributes = (
        ("-", reserved_t(5)),
        ("local", flag_t),
        ("validity", bits_t(2)),
        ("nodeId", uint8_t),
        ("ipv6", IPv6),
        ("homeId", HomeID),
    )
Beispiel #24
0
class Set(Message):
    """Command Class message COMMAND_CLASS_CONFIGURATION CONFIGURATION_SET"""

    NAME = "SET"

    attributes = (
        ("parameterNumber", uint8_t),
        ("default", flag_t),
        ("-", reserved_t(4)),
        ("size", Size_t),
        ("value", int),
    )

    def compose_value(self, stream: BitStreamWriter):  # pylint: disable=invalid-name
        """Write the value to the bitstream. The value is variable size"""
        stream.addBytes(self.value, self.size, False)
class NodeRemove(Message):
    """Command Class message COMMAND_CLASS_NETWORK_MANAGEMENT_INCLUSION NODE_REMOVE"""

    NAME = "NODE_REMOVE"

    class Mode(IntEnum):
        """Remove node mode"""

        ANY = 0x01
        STOP = 0x05

    attributes = (
        ("seqNo", uint8_t),
        ("-", reserved_t(8)),
        ("mode", enum_t(Mode, uint8_t)),
    )
Beispiel #26
0
class Get(Message):
    """Command Class message COMMAND_CLASS_SUPERVISION SUPERVISION_GET"""

    NAME = "SUPERVISION_GET"

    attributes = (
        ("statusUpdates", flag_t),
        ("-", reserved_t(1)),
        ("sessionID", bits_t(6)),
        ("command", Message),
    )

    @staticmethod
    def parse_command(stream: BitStreamReader):  # pylint: disable=invalid-name
        """Parse the length prefixed command"""
        length = stream.byte()
        return Message.decode(stream.value(length))
Beispiel #27
0
class MultiChannelCapabilityReport(Message):
    """
    Command Class message
    COMMAND_CLASS_NETWORK_MANAGEMENT_PROXY NM_MULTI_CHANNEL_CAPABILITY_REPORT
    """

    NAME = "NM_MULTI_CHANNEL_CAPABILITY_REPORT"

    attributes = (
        ("seqNo", uint8_t),
        ("nodeID", uint8_t),
        ("commandClassLength", uint8_t),
        ("-", reserved_t(1)),
        ("endPoint", uint7_t),
        ("genericDeviceClass", uint8_t),
        ("specificDeviceClass", uint8_t),
        ("commandClass", bytes_t),
    )
class NodeAdd(Message):
    """Command Class message COMMAND_CLASS_NETWORK_MANAGEMENT_INCLUSION NODE_ADD"""

    NAME = "NODE_ADD"

    class Mode(IntEnum):
        """Node add mode"""

        ANY = 0x01
        STOP = 0x05
        ANY_S2 = 0x07

    attributes = (
        ("seqNo", uint8_t),
        ("-", reserved_t(8)),
        ("mode", enum_t(Mode, uint8_t)),
        ("txOptions", uint8_t),
    )
Beispiel #29
0
class ListIterationReport(Message):
    """
    Command Class message
    COMMAND_CLASS_NODE_PROVISIONING
    COMMAND_NODE_PROVISIONING_LIST_ITERATION_REPORT
    """

    NAME = "LIST_ITERATION_REPORT"

    attributes = (
        ("seqNo", uint8_t),
        ("remainingCount", uint8_t),
        ("-", reserved_t(3)),
        ("dskLengthN", uint5_t),
        ("dsk", dsk_t),
        ("metaDataExtension", MetadataExtension),
    )

    def parse_dsk(self, stream: BitStreamReader):  # pylint: disable=invalid-name
        """Parse attribute dsk"""
        return dsk_t.deserializeN(stream, self.dskLengthN)
Beispiel #30
0
class Queue(Message):
    """Command Class message COMMAND_CLASS_MAILBOX MAILBOX_QUEUE"""

    class Operation(IntEnum):
        """Mailbox Queue Operation enum"""

        PUSH = 0x00
        POP = 0x01
        WAITING = 0x02
        PING = 0x03
        ACK = 0x04
        NACK = 0x05
        QUEUE_FULL = 0x06

    NAME = "QUEUE"
    attributes = (
        ("-", reserved_t(4)),
        ("last", flag_t),
        ("operation", enum_t(Operation, uint3_t)),
        ("queueHandle", uint8_t),
        ("mailboxEntry", bytes_t),
    )