Exemple #1
0
 def enable_piksi_sim(self):
     print 'ENABLING SIM'
     section = "simulator"
     name = "enabled"
     value = "True"
     msg = MsgSettingsWrite(setting='%s\0%s\0%s\0' % (section, name, value))
     self.send_to_piksi(msg.to_binary())
 def enable_piksi_sim(self):
   print 'ENABLING SIM'
   section = "simulator"
   name    = "enabled"
   value   = "True"
   msg = MsgSettingsWrite(setting='%s\0%s\0%s\0' % (section, name, value))
   self.send_to_piksi(msg.to_binary())
Exemple #3
0
    def main():
        parser = argparse.ArgumentParser(
            description="Swift Navigation SBP Setting Monitor example.")
        parser.add_argument("-H",
                            "--host",
                            required=True,
                            help="specify the host address.")
        parser.add_argument("-p",
                            "--port",
                            default=55556,
                            help="specify the port to use.")
        args = parser.parse_args()

        monitor = SettingMonitor()

        with TCPDriver(args.host, args.port) as driver:
            with Handler(Framer(driver.read, driver.write,
                                verbose=True)) as link:
                driver.flush()
                time.sleep(2)

                # Capture setting messages
                link.add_callback(monitor.capture_setting,
                                  SBP_MSG_SETTINGS_READ_RESP)

                link.add_callback(print_setting, SBP_MSG_SETTINGS_READ_RESP)

                # Disable spectrum analyzer
                link(
                    MsgSettingsWrite(
                        setting=b'%s\0%s\0%s\0' %
                        (b'system_monitor', b'spectrum_analyzer', b'False')))

                # Request the value of the system_monitor:spectrum_analyzer setting
                link(
                    MsgSettingsReadReq(
                        setting=b'%s\0%s\0' %
                        (b'system_monitor', b'spectrum_analyzer')))

                # Wait up to 5 seconds to see the setting we want
                specan_off = monitor.wait_for_setting_value(
                    b'system_monitor', b'spectrum_analyzer', b'False')

                assert (specan_off == True)
                print("Spectrum analyzer turned off!")

                # Request the value of the system_monitor:spectrum_analyzer setting
                link(
                    MsgSettingsReadReq(
                        setting=b'%s\0%s\0' %
                        (b'system_monitor', b'spectrum_analyzer')))

                # Wait up to 5 seconds to see the setting we (don't) want
                specan_off = monitor.wait_for_setting_value(
                    b'system_monitor', b'spectrum_analyzer', b'True')

                assert (specan_off == False)
                print("Spectrum analyzer still off!")
Exemple #4
0
  def enable_piksi_sim(self):
    if not self.framer:
      return False

    section = "simulator"
    name    = "enabled"
    value   = "True"
    msg = MsgSettingsWrite(setting='%s\0%s\0%s\0' % (section, name, value))
    self.framer(msg)
    return True
Exemple #5
0
  def set_base_pos_location(self, lat, lon, alt, save=True):
    '''
    assumes lat, lon, alt are already strings in the decimal degrees
    '''
    if not self.framer:
      return False

    print "module_SBPUDPBroadcast: Setting base pos location: ", lat, lon, alt

    section = "surveyed_position"
    msg = MsgSettingsWrite(setting='%s\0%s\0%s\0' % (section, "surveyed_lat", lat))
    self.framer(msg)
    msg = MsgSettingsWrite(setting='%s\0%s\0%s\0' % (section, "surveyed_lon", lon))
    self.framer(msg)
    msg = MsgSettingsWrite(setting='%s\0%s\0%s\0' % (section, "surveyed_alt", alt))
    self.framer(msg)
    if save:
      msg = MsgSettingsSave()
      self.framer(msg)
    return True
Exemple #6
0
  def disable_piksi_sim(self, save=True):
    if not self.framer:
      return False

    section = "simulator"
    name    = "enabled"
    value   = "False"
    msg = MsgSettingsWrite(setting='%s\0%s\0%s\0' % (section, name, value))
    self.framer(msg)
    if save:
      msg = MsgSettingsSave()
      self.framer(msg)
    return True
Exemple #7
0
    def write(self, section, setting, value, write_retries=DEFAULT_WRITE_RETRIES,
              confirm_retries=DEFAULT_CONFIRM_RETRIES, verbose=False):
        """Write setting by name and confirm set

        Notes: Caller does not raise an exception, but RuntimeError may be raised when write unsuccessful

        Args:
            section(str): string of section name
            setting(str): string of setting name
            value(str): value to set
            verbose(bool): Echo settings to sdout

        Returns:
            None

        """

        attempts = 0
        while (attempts < write_retries):
            if verbose:
                print("Attempting to write:section={}|setting={}|value={}".format(section, setting, value))
            attempts += 1
            reply = {'status': 0}

            def cb(msg, **metadata):
                reply['status'] = msg.status

            self.link.add_callback(cb, SBP_MSG_SETTINGS_WRITE_RESP)
            self.link(MsgSettingsWrite(setting=b'%s\0%s\0%s\0'
                      % (section.encode(KEY_ENCODING), setting.encode(KEY_ENCODING),
                         value.encode(VALUE_ENCODING))))
            if self._confirm_write(section, setting, value, verbose=verbose, retries=confirm_retries):
                self.link.remove_callback(cb, SBP_MSG_SETTINGS_WRITE_RESP)
                return
            if reply['status'] == 1:
                raise RuntimeError("Unable to write setting \"{}\" in section \"{}\" "
                                   "with value \"{}\": Setting value rejected.".format(setting, section,
                                                                                       value))
            elif reply['status'] == 2:
                raise RuntimeError("Unable to write setting \"{}\" in section \"{}\"."
                                   "Setting does not exist.".format(setting, section))
            elif reply['status'] > 0:
                raise RuntimeError("Unknown setting write status response")
            else:
                continue

        raise RuntimeError("Unable to write setting \"{}\" in section \"{}\" "
                           "with value \"{}\" after {} attempts. Setting "
                           "may be read-only or the value could be out of bounds.".format(setting, section,
                                                                                          value, write_retries))
        self.link.remove_callback(cb, SBP_MSG_SETTINGS_WRITE_RESP)
Exemple #8
0
  def toggle_base_pos_broadcast(self, value=False, save=True):
    if not self.framer:
      return False

    section = "surveyed_position"
    name    = "broadcast"
    settingValue   = "False"
    
    if value:
      settingValue = "True"

    print "module_SBPUDPBroadcast: Broadcast base pos location: ", settingValue

    msg = MsgSettingsWrite(setting='%s\0%s\0%s\0' % (section, name, settingValue))
    self.framer(msg)
    if save:
      msg = MsgSettingsSave()
      self.framer(msg)
    return True
def write(source, section, setting, value):
    '''
    Writes the value of a given setting to the Multi.

    Args:
        source: Handler object
        section: section of the settings
        settings: setting to be set
        value: set values

    Returns:
        None
    '''

    write_retries = 5
    attempts = 0

    # print('Writing: section={}, setting={}, value={}'.format(section,
    #       setting, value))

    while (attempts < write_retries):
        attempts += 1

        reply = {'status': 0}

        def cb(msg, **metadata):
            reply['status'] = msg.status

        source.add_callback(cb, SBP_MSG_SETTINGS_WRITE_RESP)

        source(
            MsgSettingsWrite(
                setting='{}\0{}\0{}\0'.format(section, setting, value)))
        if confirm_write(source, section, setting, value):
            source.remove_callback(cb, SBP_MSG_SETTINGS_WRITE_RESP)
            break
Exemple #10
0
 def set(self, section, name, value):
     self.link(
         MsgSettingsWrite(setting='%s\0%s\0%s\0' % (section, name, value)))
Exemple #11
0
 def write(self, section, setting, value):
     self.link(
         MsgSettingsWrite(setting='%s\0%s\0%s\0' %
                          (section, setting, value)))