def _translate(self, element):
     if isinstance(element, KeyDataElement):
         self.__translator.translate_control_packet(
             MultiCastCommand(element.key))
     elif isinstance(element, KeyPayloadDataElement):
         self.__translator.translate_control_packet(
             MultiCastCommand(element.key, element.payload))
    def start_resume_commands(self):
        commands = list()
        # change the retina key it transmits with
        # (based off if its right or left)
        if self._position == self.RIGHT_RETINA:
            key_set_command = self.MANAGEMENT_BIT | self.RIGHT_RETINA_KEY_SET
        else:
            key_set_command = self.MANAGEMENT_BIT | self.LEFT_RETINA_KEY_SET

        # to ensure populations receive the correct packets, this needs to be
        # different based on which retina
        key_set_payload = (self._virtual_chip_x << 24
                           | self._virtual_chip_y << 16)

        commands.append(
            MultiCastCommand(key=key_set_command,
                             payload=key_set_payload,
                             repeat=5,
                             delay_between_repeats=1000))

        # make retina enabled (dependent on if its a left or right retina
        if self._position == self.RIGHT_RETINA:
            enable_command = self.MANAGEMENT_BIT | self.RIGHT_RETINA_ENABLE
        else:
            enable_command = self.MANAGEMENT_BIT | self.LEFT_RETINA_ENABLE
        commands.append(
            MultiCastCommand(key=enable_command,
                             payload=1,
                             repeat=5,
                             delay_between_repeats=1000))

        return commands
    def set_retina_transmission(self,
                                retina_key=RetinaKey.NATIVE_128_X_128,
                                retina_payload=None,
                                time=None):
        """ Set the retina transmission key

        :param retina_key: the new key for the retina
        :param retina_payload: \
            the new payload for the set retina key command packet
        :type retina_payload: enum or None
        :param time: when to transmit this packet
        :return: the command to send
        :rtype: \
            :py:class:`spinn_front_end_common.utility_models.multi_cast_command.MultiCastCommand`
        """

        if retina_key == RetinaKey.FIXED_KEY and retina_payload is None:
            retina_payload = RetinaPayload.EVENTS_IN_PAYLOAD

        if retina_payload is None:
            retina_payload = RetinaPayload.NO_PAYLOAD

        if (retina_key == RetinaKey.FIXED_KEY
                and retina_payload != RetinaPayload.EVENTS_IN_PAYLOAD):
            raise ConfigurationException(
                "If the Retina Key is FIXED_KEY, the payload must be"
                " EVENTS_IN_PAYLOAD")

        return MultiCastCommand(key=self.set_retina_transmission_key,
                                payload=retina_key.value
                                | retina_payload.value,
                                time=time)
示例#4
0
 def poll_individual_sensor_continuously(
         self, sensor_id, time_in_ms, time=None):
     return MultiCastCommand(
         key=self.poll_individual_sensor_continuously_key,
         payload=((sensor_id << _PAYLOAD_SENSOR_ID_OFFSET) |
                  (time_in_ms << _PAYLOAD_OFFSET_FOR_SENSOR_TIME)),
         time=time)
    def pause_stop_commands(self):
        # disable retina
        disable_command = self._MANAGEMENT_BIT | (self._RIGHT_RETINA_DISABLE
                                                  if self.__is_right else
                                                  self._LEFT_RETINA_DISABLE)

        return [
            MultiCastCommand(disable_command,
                             payload=0,
                             repeat=5,
                             delay_between_repeats=1000)
        ]
 def push_bot_led_set_frequency(self, frequency, time=None):
     self._check_for_pushbot_mode()
     return MultiCastCommand(key=self.push_bot_led_set_frequency_key,
                             payload=frequency,
                             time=time)
 def push_bot_led_total_period(self, total_period, time=None):
     self._check_for_pushbot_mode()
     return MultiCastCommand(key=self.push_bot_led_total_period_key,
                             payload=total_period,
                             time=time)
 def push_bot_led_front_active_time(self, active_time, time=None):
     self._check_for_pushbot_mode()
     return MultiCastCommand(key=self.push_bot_led_front_active_time_key,
                             payload=active_time,
                             time=time)
 def poll_sensors_once(self, sensor_id, time=None):
     return MultiCastCommand(
         key=self.poll_sensors_once_key,
         payload=(sensor_id << _PAYLOAD_SENSOR_ID_OFFSET),
         time=time)
 def push_bot_speaker_set_melody(self, melody, time=None):
     self._check_for_pushbot_mode()
     return MultiCastCommand(key=self.push_bot_speaker_set_melody_key,
                             payload=melody,
                             time=time)
 def bias_values(self, bias_id, bias_value, time=None):
     return MultiCastCommand(key=self.bias_values_key,
                             payload=((bias_id << 0) | (bias_value << 8)),
                             time=time)
 def master_slave_set_master_clock_active(self, time=None):
     return MultiCastCommand(
         key=self.master_slave_key,
         payload=_PAYLOAD_MASTER_SLAVE_SET_MASTER_CLOCK_ACTIVE,
         time=time)
 def pwm_pin_output_timer_c_channel_1_ratio(self, timer_period, time=None):
     return MultiCastCommand(
         key=self.pwm_pin_output_timer_c_channel_1_ratio_key,
         payload=timer_period,
         time=time)
 def reset_retina(self, time=None):
     return MultiCastCommand(key=self.reset_retina_key, time=time)
 def generic_motor1_raw_output_leak_to_0(self, pwm_signal, time=None):
     return MultiCastCommand(
         key=self.generic_motor1_raw_output_leak_to_0_key,
         payload=pwm_signal,
         time=time)
 def pwm_pin_output_timer_c_duration(self, timer_period, time=None):
     return MultiCastCommand(key=self.pwm_pin_output_timer_c_duration_key,
                             payload=timer_period,
                             time=time)
 def generic_motor0_raw_output_permanent(self, pwm_signal, time=None):
     return MultiCastCommand(
         key=self.generic_motor0_raw_output_permanent_key,
         payload=pwm_signal,
         time=time)
 def generic_motor_total_period(self, time_in_ms, time=None):
     return MultiCastCommand(key=self.generic_motor_total_period_key,
                             payload=time_in_ms,
                             time=time)
 def generic_motor_disable(self, time=None):
     return MultiCastCommand(key=self.enable_disable_motor_key,
                             payload=0,
                             time=time)
 def push_bot_motor_1_permanent(self, velocity, time=None):
     self._check_for_pushbot_mode()
     return MultiCastCommand(key=self.push_bot_motor_1_permanent_key,
                             payload=velocity,
                             time=time)
 def set_output_pattern_for_payload(self, payload, time=None):
     return MultiCastCommand(key=self.set_output_pattern_for_payload_key,
                             payload=payload,
                             time=time)
 def push_bot_motor_1_leaking_towards_zero(self, velocity, time=None):
     self._check_for_pushbot_mode()
     return MultiCastCommand(
         key=self.push_bot_motor_1_leaking_towards_zero_key,
         payload=velocity,
         time=time)
 def remove_payload_logic_to_current_output(self, payload, time=None):
     return MultiCastCommand(
         key=self.remove_payload_logic_to_current_output_key,
         payload=payload,
         time=time)
示例#24
0
 def _translate(self, label, key, payload=None):
     translator = self.__translators[label]
     if payload is None:
         translator.translate_control_packet(MultiCastCommand(key))
     else:
         translator.translate_control_packet(MultiCastCommand(key, payload))
 def set_payload_pins_to_high_impedance(self, payload, time=None):
     return MultiCastCommand(
         key=self.set_payload_pins_to_high_impedance_key,
         payload=payload,
         time=time)
 def query_state_of_io_lines(self, time=None):
     return MultiCastCommand(key=self.query_state_of_io_lines_key,
                             time=time)
 def turn_off_sensor_reporting(self, sensor_id, time=None):
     return MultiCastCommand(
         key=self.turn_off_sensor_reporting_key,
         payload=(sensor_id << _PAYLOAD_SENSOR_ID_OFFSET),
         time=time)