# This Python file uses the following encoding: utf-8
"""autogenerated by genpy from sbg_driver/SbgEkfStatus.msg. Do not edit."""
import codecs
import sys
python3 = True if sys.hexversion > 0x03000000 else False
import genpy
import struct


class SbgEkfStatus(genpy.Message):
  _md5sum = "779a904443daf8f46a24dc18bd3bbedb"
  _type = "sbg_driver/SbgEkfStatus"
  _has_header = False  # flag to mark the presence of a Header object
  _full_text = """# SBG Ellipse Messages
# Submessage

# Defines the Kalman filter computation mode (see the table 4 below)
# 0 UNINITIALIZED	The Kalman filter is not initialized and the returned data are all invalid.
# 1 VERTICAL_GYRO	The Kalman filter only rely on a vertical reference to compute roll and pitch angles. Heading and navigation data drift freely.
# 2 AHRS			A heading reference is available, the Kalman filter provides full orientation but navigation data drift freely.
# 3 NAV_VELOCITY	The Kalman filter computes orientation and velocity. Position is freely integrated from velocity estimation.
# 4 NAV_POSITION	Nominal mode, the Kalman filter computes all parameters (attitude, velocity, position). Absolute position is provided. 
uint8 solution_mode 

# True if Attitude data is reliable (Roll/Pitch error < 0,5 deg)
bool attitude_valid

# True if Heading data is reliable (Heading error < 1 deg)
bool heading_valid

# True if Velocity data is reliable (velocity error < 1.5 m/s)
bool velocity_valid

# True if Position data is reliable (Position error < 10m)
bool position_valid

# True if vertical reference is used in solution (data used and valid since 3s)
bool vert_ref_used

# True if magnetometer is used in solution (data used and valid since 3s)
bool mag_ref_used

# True if GPS velocity is used in solution (data used and valid since 3s)
bool gps1_vel_used

# True if GPS Position is used in solution (data used and valid since 3s)
bool gps1_pos_used

# True if GPS Course is used in solution (data used and valid since 3s)
bool gps1_course_used

# True if GPS True Heading is used in solution (data used and valid since 3s)
bool gps1_hdt_used

# True if GPS2 velocity is used in solution (data used and valid since 3s)
bool gps2_vel_used

# True if GPS2 Position is used in solution (data used and valid since 3s)
bool gps2_pos_used

# True if GPS2 Course is used in solution (data used and valid since 3s)
bool gps2_course_used

# True if GPS2 True Heading is used in solution (data used and valid since 3s)
bool gps2_hdt_used

# True if Odometer is used in solution (data used and valid since 3s)
bool odo_used
"""
  __slots__ = ['solution_mode','attitude_valid','heading_valid','velocity_valid','position_valid','vert_ref_used','mag_ref_used','gps1_vel_used','gps1_pos_used','gps1_course_used','gps1_hdt_used','gps2_vel_used','gps2_pos_used','gps2_course_used','gps2_hdt_used','odo_used']
  _slot_types = ['uint8','bool','bool','bool','bool','bool','bool','bool','bool','bool','bool','bool','bool','bool','bool','bool']

  def __init__(self, *args, **kwds):
    """
    Constructor. Any message fields that are implicitly/explicitly
    set to None will be assigned a default value. The recommend
    use is keyword arguments as this is more robust to future message
    changes.  You cannot mix in-order arguments and keyword arguments.

    The available fields are:
       solution_mode,attitude_valid,heading_valid,velocity_valid,position_valid,vert_ref_used,mag_ref_used,gps1_vel_used,gps1_pos_used,gps1_course_used,gps1_hdt_used,gps2_vel_used,gps2_pos_used,gps2_course_used,gps2_hdt_used,odo_used

    :param args: complete set of field values, in .msg order
    :param kwds: use keyword arguments corresponding to message field names
    to set specific fields.
    """
    if args or kwds:
      super(SbgEkfStatus, self).__init__(*args, **kwds)
      # message fields cannot be None, assign default values for those that are
      if self.solution_mode is None:
        self.solution_mode = 0
      if self.attitude_valid is None:
        self.attitude_valid = False
      if self.heading_valid is None:
        self.heading_valid = False
      if self.velocity_valid is None:
        self.velocity_valid = False
      if self.position_valid is None:
        self.position_valid = False
      if self.vert_ref_used is None:
        self.vert_ref_used = False
      if self.mag_ref_used is None:
        self.mag_ref_used = False
      if self.gps1_vel_used is None:
        self.gps1_vel_used = False
      if self.gps1_pos_used is None:
        self.gps1_pos_used = False
      if self.gps1_course_used is None:
        self.gps1_course_used = False
      if self.gps1_hdt_used is None:
        self.gps1_hdt_used = False
      if self.gps2_vel_used is None:
        self.gps2_vel_used = False
      if self.gps2_pos_used is None:
        self.gps2_pos_used = False
      if self.gps2_course_used is None:
        self.gps2_course_used = False
      if self.gps2_hdt_used is None:
        self.gps2_hdt_used = False
      if self.odo_used is None:
        self.odo_used = False
    else:
      self.solution_mode = 0
      self.attitude_valid = False
      self.heading_valid = False
      self.velocity_valid = False
      self.position_valid = False
      self.vert_ref_used = False
      self.mag_ref_used = False
      self.gps1_vel_used = False
      self.gps1_pos_used = False
      self.gps1_course_used = False
      self.gps1_hdt_used = False
      self.gps2_vel_used = False
      self.gps2_pos_used = False
      self.gps2_course_used = False
      self.gps2_hdt_used = False
      self.odo_used = False

  def _get_types(self):
    """
    internal API method
    """
    return self._slot_types

  def serialize(self, buff):
    """
    serialize message into buffer
    :param buff: buffer, ``StringIO``
    """
    try:
      _x = self
      buff.write(_get_struct_16B().pack(_x.solution_mode, _x.attitude_valid, _x.heading_valid, _x.velocity_valid, _x.position_valid, _x.vert_ref_used, _x.mag_ref_used, _x.gps1_vel_used, _x.gps1_pos_used, _x.gps1_course_used, _x.gps1_hdt_used, _x.gps2_vel_used, _x.gps2_pos_used, _x.gps2_course_used, _x.gps2_hdt_used, _x.odo_used))
    except struct.error as se: self._check_types(struct.error("%s: '%s' when writing '%s'" % (type(se), str(se), str(locals().get('_x', self)))))
    except TypeError as te: self._check_types(ValueError("%s: '%s' when writing '%s'" % (type(te), str(te), str(locals().get('_x', self)))))

  def deserialize(self, str):
    """
    unpack serialized message in str into this message instance
    :param str: byte array of serialized message, ``str``
    """
    if python3:
      codecs.lookup_error("rosmsg").msg_type = self._type
    try:
      end = 0
      _x = self
      start = end
      end += 16
      (_x.solution_mode, _x.attitude_valid, _x.heading_valid, _x.velocity_valid, _x.position_valid, _x.vert_ref_used, _x.mag_ref_used, _x.gps1_vel_used, _x.gps1_pos_used, _x.gps1_course_used, _x.gps1_hdt_used, _x.gps2_vel_used, _x.gps2_pos_used, _x.gps2_course_used, _x.gps2_hdt_used, _x.odo_used,) = _get_struct_16B().unpack(str[start:end])
      self.attitude_valid = bool(self.attitude_valid)
      self.heading_valid = bool(self.heading_valid)
      self.velocity_valid = bool(self.velocity_valid)
      self.position_valid = bool(self.position_valid)
      self.vert_ref_used = bool(self.vert_ref_used)
      self.mag_ref_used = bool(self.mag_ref_used)
      self.gps1_vel_used = bool(self.gps1_vel_used)
      self.gps1_pos_used = bool(self.gps1_pos_used)
      self.gps1_course_used = bool(self.gps1_course_used)
      self.gps1_hdt_used = bool(self.gps1_hdt_used)
      self.gps2_vel_used = bool(self.gps2_vel_used)
      self.gps2_pos_used = bool(self.gps2_pos_used)
      self.gps2_course_used = bool(self.gps2_course_used)
      self.gps2_hdt_used = bool(self.gps2_hdt_used)
      self.odo_used = bool(self.odo_used)
      return self
    except struct.error as e:
      raise genpy.DeserializationError(e)  # most likely buffer underfill


  def serialize_numpy(self, buff, numpy):
    """
    serialize message with numpy array types into buffer
    :param buff: buffer, ``StringIO``
    :param numpy: numpy python module
    """
    try:
      _x = self
      buff.write(_get_struct_16B().pack(_x.solution_mode, _x.attitude_valid, _x.heading_valid, _x.velocity_valid, _x.position_valid, _x.vert_ref_used, _x.mag_ref_used, _x.gps1_vel_used, _x.gps1_pos_used, _x.gps1_course_used, _x.gps1_hdt_used, _x.gps2_vel_used, _x.gps2_pos_used, _x.gps2_course_used, _x.gps2_hdt_used, _x.odo_used))
    except struct.error as se: self._check_types(struct.error("%s: '%s' when writing '%s'" % (type(se), str(se), str(locals().get('_x', self)))))
    except TypeError as te: self._check_types(ValueError("%s: '%s' when writing '%s'" % (type(te), str(te), str(locals().get('_x', self)))))

  def deserialize_numpy(self, str, numpy):
    """
    unpack serialized message in str into this message instance using numpy for array types
    :param str: byte array of serialized message, ``str``
    :param numpy: numpy python module
    """
    if python3:
      codecs.lookup_error("rosmsg").msg_type = self._type
    try:
      end = 0
      _x = self
      start = end
      end += 16
      (_x.solution_mode, _x.attitude_valid, _x.heading_valid, _x.velocity_valid, _x.position_valid, _x.vert_ref_used, _x.mag_ref_used, _x.gps1_vel_used, _x.gps1_pos_used, _x.gps1_course_used, _x.gps1_hdt_used, _x.gps2_vel_used, _x.gps2_pos_used, _x.gps2_course_used, _x.gps2_hdt_used, _x.odo_used,) = _get_struct_16B().unpack(str[start:end])
      self.attitude_valid = bool(self.attitude_valid)
      self.heading_valid = bool(self.heading_valid)
      self.velocity_valid = bool(self.velocity_valid)
      self.position_valid = bool(self.position_valid)
      self.vert_ref_used = bool(self.vert_ref_used)
      self.mag_ref_used = bool(self.mag_ref_used)
      self.gps1_vel_used = bool(self.gps1_vel_used)
      self.gps1_pos_used = bool(self.gps1_pos_used)
      self.gps1_course_used = bool(self.gps1_course_used)
      self.gps1_hdt_used = bool(self.gps1_hdt_used)
      self.gps2_vel_used = bool(self.gps2_vel_used)
      self.gps2_pos_used = bool(self.gps2_pos_used)
      self.gps2_course_used = bool(self.gps2_course_used)
      self.gps2_hdt_used = bool(self.gps2_hdt_used)
      self.odo_used = bool(self.odo_used)
      return self
    except struct.error as e:
      raise genpy.DeserializationError(e)  # most likely buffer underfill

_struct_I = genpy.struct_I
def _get_struct_I():
    global _struct_I
    return _struct_I
_struct_16B = None
def _get_struct_16B():
    global _struct_16B
    if _struct_16B is None:
        _struct_16B = struct.Struct("<16B")
    return _struct_16B

# This Python file uses the following encoding: utf-8
"""autogenerated by genpy from sbg_driver/SbgEkfStatus.msg. Do not edit."""
import codecs
import sys
python3 = True if sys.hexversion > 0x03000000 else False
import genpy
import struct


class SbgEkfStatus(genpy.Message):
  _md5sum = "779a904443daf8f46a24dc18bd3bbedb"
  _type = "sbg_driver/SbgEkfStatus"
  _has_header = False  # flag to mark the presence of a Header object
  _full_text = """# SBG Ellipse Messages
# Submessage

# Defines the Kalman filter computation mode (see the table 4 below)
# 0 UNINITIALIZED	The Kalman filter is not initialized and the returned data are all invalid.
# 1 VERTICAL_GYRO	The Kalman filter only rely on a vertical reference to compute roll and pitch angles. Heading and navigation data drift freely.
# 2 AHRS			A heading reference is available, the Kalman filter provides full orientation but navigation data drift freely.
# 3 NAV_VELOCITY	The Kalman filter computes orientation and velocity. Position is freely integrated from velocity estimation.
# 4 NAV_POSITION	Nominal mode, the Kalman filter computes all parameters (attitude, velocity, position). Absolute position is provided. 
uint8 solution_mode 

# True if Attitude data is reliable (Roll/Pitch error < 0,5 deg)
bool attitude_valid

# True if Heading data is reliable (Heading error < 1 deg)
bool heading_valid

# True if Velocity data is reliable (velocity error < 1.5 m/s)
bool velocity_valid

# True if Position data is reliable (Position error < 10m)
bool position_valid

# True if vertical reference is used in solution (data used and valid since 3s)
bool vert_ref_used

# True if magnetometer is used in solution (data used and valid since 3s)
bool mag_ref_used

# True if GPS velocity is used in solution (data used and valid since 3s)
bool gps1_vel_used

# True if GPS Position is used in solution (data used and valid since 3s)
bool gps1_pos_used

# True if GPS Course is used in solution (data used and valid since 3s)
bool gps1_course_used

# True if GPS True Heading is used in solution (data used and valid since 3s)
bool gps1_hdt_used

# True if GPS2 velocity is used in solution (data used and valid since 3s)
bool gps2_vel_used

# True if GPS2 Position is used in solution (data used and valid since 3s)
bool gps2_pos_used

# True if GPS2 Course is used in solution (data used and valid since 3s)
bool gps2_course_used

# True if GPS2 True Heading is used in solution (data used and valid since 3s)
bool gps2_hdt_used

# True if Odometer is used in solution (data used and valid since 3s)
bool odo_used
"""
  __slots__ = ['solution_mode','attitude_valid','heading_valid','velocity_valid','position_valid','vert_ref_used','mag_ref_used','gps1_vel_used','gps1_pos_used','gps1_course_used','gps1_hdt_used','gps2_vel_used','gps2_pos_used','gps2_course_used','gps2_hdt_used','odo_used']
  _slot_types = ['uint8','bool','bool','bool','bool','bool','bool','bool','bool','bool','bool','bool','bool','bool','bool','bool']

  def __init__(self, *args, **kwds):
    """
    Constructor. Any message fields that are implicitly/explicitly
    set to None will be assigned a default value. The recommend
    use is keyword arguments as this is more robust to future message
    changes.  You cannot mix in-order arguments and keyword arguments.

    The available fields are:
       solution_mode,attitude_valid,heading_valid,velocity_valid,position_valid,vert_ref_used,mag_ref_used,gps1_vel_used,gps1_pos_used,gps1_course_used,gps1_hdt_used,gps2_vel_used,gps2_pos_used,gps2_course_used,gps2_hdt_used,odo_used

    :param args: complete set of field values, in .msg order
    :param kwds: use keyword arguments corresponding to message field names
    to set specific fields.
    """
    if args or kwds:
      super(SbgEkfStatus, self).__init__(*args, **kwds)
      # message fields cannot be None, assign default values for those that are
      if self.solution_mode is None:
        self.solution_mode = 0
      if self.attitude_valid is None:
        self.attitude_valid = False
      if self.heading_valid is None:
        self.heading_valid = False
      if self.velocity_valid is None:
        self.velocity_valid = False
      if self.position_valid is None:
        self.position_valid = False
      if self.vert_ref_used is None:
        self.vert_ref_used = False
      if self.mag_ref_used is None:
        self.mag_ref_used = False
      if self.gps1_vel_used is None:
        self.gps1_vel_used = False
      if self.gps1_pos_used is None:
        self.gps1_pos_used = False
      if self.gps1_course_used is None:
        self.gps1_course_used = False
      if self.gps1_hdt_used is None:
        self.gps1_hdt_used = False
      if self.gps2_vel_used is None:
        self.gps2_vel_used = False
      if self.gps2_pos_used is None:
        self.gps2_pos_used = False
      if self.gps2_course_used is None:
        self.gps2_course_used = False
      if self.gps2_hdt_used is None:
        self.gps2_hdt_used = False
      if self.odo_used is None:
        self.odo_used = False
    else:
      self.solution_mode = 0
      self.attitude_valid = False
      self.heading_valid = False
      self.velocity_valid = False
      self.position_valid = False
      self.vert_ref_used = False
      self.mag_ref_used = False
      self.gps1_vel_used = False
      self.gps1_pos_used = False
      self.gps1_course_used = False
      self.gps1_hdt_used = False
      self.gps2_vel_used = False
      self.gps2_pos_used = False
      self.gps2_course_used = False
      self.gps2_hdt_used = False
      self.odo_used = False

  def _get_types(self):
    """
    internal API method
    """
    return self._slot_types

  def serialize(self, buff):
    """
    serialize message into buffer
    :param buff: buffer, ``StringIO``
    """
    try:
      _x = self
      buff.write(_get_struct_16B().pack(_x.solution_mode, _x.attitude_valid, _x.heading_valid, _x.velocity_valid, _x.position_valid, _x.vert_ref_used, _x.mag_ref_used, _x.gps1_vel_used, _x.gps1_pos_used, _x.gps1_course_used, _x.gps1_hdt_used, _x.gps2_vel_used, _x.gps2_pos_used, _x.gps2_course_used, _x.gps2_hdt_used, _x.odo_used))
    except struct.error as se: self._check_types(struct.error("%s: '%s' when writing '%s'" % (type(se), str(se), str(locals().get('_x', self)))))
    except TypeError as te: self._check_types(ValueError("%s: '%s' when writing '%s'" % (type(te), str(te), str(locals().get('_x', self)))))

  def deserialize(self, str):
    """
    unpack serialized message in str into this message instance
    :param str: byte array of serialized message, ``str``
    """
    if python3:
      codecs.lookup_error("rosmsg").msg_type = self._type
    try:
      end = 0
      _x = self
      start = end
      end += 16
      (_x.solution_mode, _x.attitude_valid, _x.heading_valid, _x.velocity_valid, _x.position_valid, _x.vert_ref_used, _x.mag_ref_used, _x.gps1_vel_used, _x.gps1_pos_used, _x.gps1_course_used, _x.gps1_hdt_used, _x.gps2_vel_used, _x.gps2_pos_used, _x.gps2_course_used, _x.gps2_hdt_used, _x.odo_used,) = _get_struct_16B().unpack(str[start:end])
      self.attitude_valid = bool(self.attitude_valid)
      self.heading_valid = bool(self.heading_valid)
      self.velocity_valid = bool(self.velocity_valid)
      self.position_valid = bool(self.position_valid)
      self.vert_ref_used = bool(self.vert_ref_used)
      self.mag_ref_used = bool(self.mag_ref_used)
      self.gps1_vel_used = bool(self.gps1_vel_used)
      self.gps1_pos_used = bool(self.gps1_pos_used)
      self.gps1_course_used = bool(self.gps1_course_used)
      self.gps1_hdt_used = bool(self.gps1_hdt_used)
      self.gps2_vel_used = bool(self.gps2_vel_used)
      self.gps2_pos_used = bool(self.gps2_pos_used)
      self.gps2_course_used = bool(self.gps2_course_used)
      self.gps2_hdt_used = bool(self.gps2_hdt_used)
      self.odo_used = bool(self.odo_used)
      return self
    except struct.error as e:
      raise genpy.DeserializationError(e)  # most likely buffer underfill


  def serialize_numpy(self, buff, numpy):
    """
    serialize message with numpy array types into buffer
    :param buff: buffer, ``StringIO``
    :param numpy: numpy python module
    """
    try:
      _x = self
      buff.write(_get_struct_16B().pack(_x.solution_mode, _x.attitude_valid, _x.heading_valid, _x.velocity_valid, _x.position_valid, _x.vert_ref_used, _x.mag_ref_used, _x.gps1_vel_used, _x.gps1_pos_used, _x.gps1_course_used, _x.gps1_hdt_used, _x.gps2_vel_used, _x.gps2_pos_used, _x.gps2_course_used, _x.gps2_hdt_used, _x.odo_used))
    except struct.error as se: self._check_types(struct.error("%s: '%s' when writing '%s'" % (type(se), str(se), str(locals().get('_x', self)))))
    except TypeError as te: self._check_types(ValueError("%s: '%s' when writing '%s'" % (type(te), str(te), str(locals().get('_x', self)))))

  def deserialize_numpy(self, str, numpy):
    """
    unpack serialized message in str into this message instance using numpy for array types
    :param str: byte array of serialized message, ``str``
    :param numpy: numpy python module
    """
    if python3:
      codecs.lookup_error("rosmsg").msg_type = self._type
    try:
      end = 0
      _x = self
      start = end
      end += 16
      (_x.solution_mode, _x.attitude_valid, _x.heading_valid, _x.velocity_valid, _x.position_valid, _x.vert_ref_used, _x.mag_ref_used, _x.gps1_vel_used, _x.gps1_pos_used, _x.gps1_course_used, _x.gps1_hdt_used, _x.gps2_vel_used, _x.gps2_pos_used, _x.gps2_course_used, _x.gps2_hdt_used, _x.odo_used,) = _get_struct_16B().unpack(str[start:end])
      self.attitude_valid = bool(self.attitude_valid)
      self.heading_valid = bool(self.heading_valid)
      self.velocity_valid = bool(self.velocity_valid)
      self.position_valid = bool(self.position_valid)
      self.vert_ref_used = bool(self.vert_ref_used)
      self.mag_ref_used = bool(self.mag_ref_used)
      self.gps1_vel_used = bool(self.gps1_vel_used)
      self.gps1_pos_used = bool(self.gps1_pos_used)
      self.gps1_course_used = bool(self.gps1_course_used)
      self.gps1_hdt_used = bool(self.gps1_hdt_used)
      self.gps2_vel_used = bool(self.gps2_vel_used)
      self.gps2_pos_used = bool(self.gps2_pos_used)
      self.gps2_course_used = bool(self.gps2_course_used)
      self.gps2_hdt_used = bool(self.gps2_hdt_used)
      self.odo_used = bool(self.odo_used)
      return self
    except struct.error as e:
      raise genpy.DeserializationError(e)  # most likely buffer underfill

_struct_I = genpy.struct_I
def _get_struct_I():
    global _struct_I
    return _struct_I
_struct_16B = None
def _get_struct_16B():
    global _struct_16B
    if _struct_16B is None:
        _struct_16B = struct.Struct("<16B")
    return _struct_16B

# This Python file uses the following encoding: utf-8 autogenerated by genpy from sbg_driver/SbgEkfStatus.msg. Do not edit. # flag to mark the presence of a Header object # SBG Ellipse Messages # Submessage  # Defines the Kalman filter computation mode (see the table 4 below) # 0 UNINITIALIZED	The Kalman filter is not initialized and the returned data are all invalid. # 1 VERTICAL_GYRO	The Kalman filter only rely on a vertical reference to compute roll and pitch angles. Heading and navigation data drift freely. # 2 AHRS			A heading reference is available, the Kalman filter provides full orientation but navigation data drift freely. # 3 NAV_VELOCITY	The Kalman filter computes orientation and velocity. Position is freely integrated from velocity estimation. # 4 NAV_POSITION	Nominal mode, the Kalman filter computes all parameters (attitude, velocity, position). Absolute position is provided.  uint8 solution_mode   # True if Attitude data is reliable (Roll/Pitch error < 0,5 deg) bool attitude_valid  # True if Heading data is reliable (Heading error < 1 deg) bool heading_valid  # True if Velocity data is reliable (velocity error < 1.5 m/s) bool velocity_valid  # True if Position data is reliable (Position error < 10m) bool position_valid  # True if vertical reference is used in solution (data used and valid since 3s) bool vert_ref_used  # True if magnetometer is used in solution (data used and valid since 3s) bool mag_ref_used  # True if GPS velocity is used in solution (data used and valid since 3s) bool gps1_vel_used  # True if GPS Position is used in solution (data used and valid since 3s) bool gps1_pos_used  # True if GPS Course is used in solution (data used and valid since 3s) bool gps1_course_used  # True if GPS True Heading is used in solution (data used and valid since 3s) bool gps1_hdt_used  # True if GPS2 velocity is used in solution (data used and valid since 3s) bool gps2_vel_used  # True if GPS2 Position is used in solution (data used and valid since 3s) bool gps2_pos_used  # True if GPS2 Course is used in solution (data used and valid since 3s) bool gps2_course_used  # True if GPS2 True Heading is used in solution (data used and valid since 3s) bool gps2_hdt_used  # True if Odometer is used in solution (data used and valid since 3s) bool odo_used Constructor. Any message fields that are implicitly/explicitly     set to None will be assigned a default value. The recommend     use is keyword arguments as this is more robust to future message     changes.  You cannot mix in-order arguments and keyword arguments.      The available fields are:        solution_mode,attitude_valid,heading_valid,velocity_valid,position_valid,vert_ref_used,mag_ref_used,gps1_vel_used,gps1_pos_used,gps1_course_used,gps1_hdt_used,gps2_vel_used,gps2_pos_used,gps2_course_used,gps2_hdt_used,odo_used      :param args: complete set of field values, in .msg order     :param kwds: use keyword arguments corresponding to message field names     to set specific fields. # message fields cannot be None, assign default values for those that are internal API method serialize message into buffer     :param buff: buffer, ``StringIO`` unpack serialized message in str into this message instance     :param str: byte array of serialized message, ``str`` # most likely buffer underfill serialize message with numpy array types into buffer     :param buff: buffer, ``StringIO``     :param numpy: numpy python module unpack serialized message in str into this message instance using numpy for array types     :param str: byte array of serialized message, ``str``     :param numpy: numpy python module # most likely buffer underfill