# 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,
)
            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
        )

    @property
    def isDirect(self):
        """Test if the message is a direct message type."""
        direct = self._messageType == 0x00
        if self.isDirectACK or self.isDirectNAK:
            direct = True
        return direct

    @property
    def isDirectACK(self):
        """Test if the message is a direct ACK message type."""

# 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,
)

            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
        )

    @property
    def isDirect(self):
        """Test if the message is a direct message type."""
        direct = self._messageType == 0x00
        if self.isDirectACK or self.isDirectNAK:
            direct = True
        return direct

    @property
    def isDirectACK(self):
        """Test if the message is a direct ACK message type."""

        return self._messageType == MESSAGE_TYPE_DIRECT_MESSAGE_ACK