Пример #1
0
    def physical_to_logical(self, addr: LcnAddr) -> LcnAddr:
        """Convert the physical segment id of an address to the logical one.

        :param    addr:    The module's/group's address
        :type     addr:    :class:`~LcnAddr`

        :returns:    The module's/group's address
        :rtype:      :class:`~LcnAddr`
        """
        return LcnAddr(
            self.local_seg_id if addr.get_seg_id() == 0 else addr.get_seg_id(),
            addr.get_id(),
            addr.is_group(),
        )
Пример #2
0
    def generate_address_header(addr: LcnAddr, local_seg_id: int,
                                wants_ack: bool) -> str:
        """Generate a PCK command address header.

        :param    addr:   The module's/group's address
        :type     addr:   :class:`~LcnAddr`
        :param    int     local_seg_id:    The local segment id
        :param    bool    wants_ack:      Is an acknowledge requested.

        :return:    The PCK address header string.
        :rtype:     str
        """
        return ">{:s}{:03d}{:03d}{:s}".format(
            "G" if addr.is_group() else "M",
            addr.get_physical_seg_id(local_seg_id),
            addr.get_id(),
            "!" if wants_ack else ".",
        )