# Path: insteonplm/constants.py
# MESSAGE_FLAG_EXTENDED_0X10 = 0x10
# 
# MESSAGE_TYPE_ALL_LINK_BROADCAST = 6
# 
# MESSAGE_TYPE_ALL_LINK_CLEANUP = 2
# 
# MESSAGE_TYPE_ALL_LINK_CLEANUP_ACK = 3
# 
# MESSAGE_TYPE_ALL_LINK_CLEANUP_NAK = 7
# 
# MESSAGE_TYPE_BROADCAST_MESSAGE = 4
# 
# MESSAGE_TYPE_DIRECT_MESSAGE_ACK = 1
# 
# MESSAGE_TYPE_DIRECT_MESSAGE_NAK = 5


import logging
import binascii
from insteonplm.constants import (
    MESSAGE_FLAG_EXTENDED_0X10,
    MESSAGE_TYPE_ALL_LINK_BROADCAST,
    MESSAGE_TYPE_ALL_LINK_CLEANUP,
    MESSAGE_TYPE_ALL_LINK_CLEANUP_ACK,
    MESSAGE_TYPE_ALL_LINK_CLEANUP_NAK,
    MESSAGE_TYPE_BROADCAST_MESSAGE,
    MESSAGE_TYPE_DIRECT_MESSAGE_ACK,
    MESSAGE_TYPE_DIRECT_MESSAGE_NAK,
)
            return not self.__eq__(other)
        return True

    def matches_pattern(self, other):
        """Test if current message match a patterns or template."""
        if hasattr(other, "messageType"):
            messageTypeIsEqual = False
            if self.messageType is None or other.messageType is None:
                messageTypeIsEqual = True
            else:
                messageTypeIsEqual = self.messageType == other.messageType
            extendedIsEqual = False
            if self.extended is None or other.extended is None:
                extendedIsEqual = True
            else:
                extendedIsEqual = self.extended == other.extended
            return messageTypeIsEqual and extendedIsEqual
        return False

    @classmethod
    def get_properties(cls):
        """Get all properties of the MessageFlags class."""
        property_names = [p for p in dir(cls) if isinstance(getattr(cls, p), property)]
        return property_names

    @property
    def isBroadcast(self):
        """Test if the message is a broadcast message type."""
        return (
            self._messageType & MESSAGE_TYPE_BROADCAST_MESSAGE

# Path: insteonplm/constants.py
# MESSAGE_FLAG_EXTENDED_0X10 = 0x10
# 
# MESSAGE_TYPE_ALL_LINK_BROADCAST = 6
# 
# MESSAGE_TYPE_ALL_LINK_CLEANUP = 2
# 
# MESSAGE_TYPE_ALL_LINK_CLEANUP_ACK = 3
# 
# MESSAGE_TYPE_ALL_LINK_CLEANUP_NAK = 7
# 
# MESSAGE_TYPE_BROADCAST_MESSAGE = 4
# 
# MESSAGE_TYPE_DIRECT_MESSAGE_ACK = 1
# 
# MESSAGE_TYPE_DIRECT_MESSAGE_NAK = 5


# Path: insteonplm/messages/messageFlags.py
import logging
import binascii
from insteonplm.constants import (
    MESSAGE_FLAG_EXTENDED_0X10,
    MESSAGE_TYPE_ALL_LINK_BROADCAST,
    MESSAGE_TYPE_ALL_LINK_CLEANUP,
    MESSAGE_TYPE_ALL_LINK_CLEANUP_ACK,
    MESSAGE_TYPE_ALL_LINK_CLEANUP_NAK,
    MESSAGE_TYPE_BROADCAST_MESSAGE,
    MESSAGE_TYPE_DIRECT_MESSAGE_ACK,
    MESSAGE_TYPE_DIRECT_MESSAGE_NAK,
)

            return not self.__eq__(other)
        return True

    def matches_pattern(self, other):
        """Test if current message match a patterns or template."""
        if hasattr(other, "messageType"):
            messageTypeIsEqual = False
            if self.messageType is None or other.messageType is None:
                messageTypeIsEqual = True
            else:
                messageTypeIsEqual = self.messageType == other.messageType
            extendedIsEqual = False
            if self.extended is None or other.extended is None:
                extendedIsEqual = True
            else:
                extendedIsEqual = self.extended == other.extended
            return messageTypeIsEqual and extendedIsEqual
        return False

    @classmethod
    def get_properties(cls):
        """Get all properties of the MessageFlags class."""
        property_names = [p for p in dir(cls) if isinstance(getattr(cls, p), property)]
        return property_names

    @property
    def isBroadcast(self):
        """Test if the message is a broadcast message type."""
        return (
            self._messageType & MESSAGE_TYPE_BROADCAST_MESSAGE

            == MESSAGE_TYPE_BROADCAST_MESSAGE