Source code for spinn_front_end_common.interface.interface_functions.tags_loader

from spinn_utilities.progress_bar import ProgressBar
from spinnman.constants import MAX_TAG_ID


[docs]class TagsLoader(object): """ Loads tags onto the machine """ __slots__ = [] def __call__( self, transceiver, tags=None, iptags=None, reverse_iptags=None): """ :param tags: the tags object which contains ip and reverse ip tags. could be none if these are being given in separate lists :param iptags: a list of iptags, given when tags is none :param reverse_iptags: a list of reverse iptags when tags is none. :param transceiver: the transceiver object """ # clear all the tags from the Ethernet connection, as nothing should # be allowed to use it (no two apps should use the same Ethernet # connection at the same time progress = ProgressBar(MAX_TAG_ID, "Clearing tags") for tag_id in progress.over(range(MAX_TAG_ID)): transceiver.clear_ip_tag(tag_id) progress = None if tags is not None: progress = ProgressBar( len(list(tags.ip_tags)) + len(list(tags.reverse_ip_tags)), "Loading Tags") self.load_iptags(tags.ip_tags, transceiver, progress) self.load_reverse_iptags( tags.reverse_ip_tags, transceiver, progress) else: progress = ProgressBar( len(iptags) + len(reverse_iptags), "Loading Tags") self.load_iptags(iptags, transceiver, progress) self.load_reverse_iptags(reverse_iptags, transceiver, progress) progress.end() return True, True
[docs] @staticmethod def load_iptags(iptags, transceiver, progress_bar): """ Loads all the iptags individually. :param iptags: the iptags to be loaded. :param transceiver: the transceiver object :rtype: None """ for ip_tag in iptags: transceiver.set_ip_tag(ip_tag) progress_bar.update()
[docs] @staticmethod def load_reverse_iptags(reverse_ip_tags, transceiver, progress_bar): """ Loads all the reverse iptags individually. :param reverse_ip_tags: the reverse iptags to be loaded :param transceiver: the transceiver object :rtype: None """ for reverse_ip_tag in reverse_ip_tags: transceiver.set_reverse_ip_tag(reverse_ip_tag) progress_bar.update()