Example #1
0
def mk_definition(defn):
    """Instantiates a struct or SBP message specification from a parsed
  "AST" of a struct or message.

  Parameters
  ----------
  defn : dict

  Returns
  ----------
  A Definition or a specialization of a definition, like a Struct

  """
    assert len(defn) == 1
    identifier, contents = next(iter(defn.items()))
    fs = [mk_field(f) for f in contents.get('fields', [])]
    return sbp.resolve_type(
        sbp.Definition(
            identifier=identifier,
            sbp_id=contents.get('id', None),
            short_desc=contents.get('short_desc', None),
            desc=contents.get('desc', None),
            type_id=contents.get('type'),
            fields=fs,
            public=contents.get('public', True),
            embedded_type=contents.get('embedded_type', False),
        ))
Example #2
0
def mk_field(field):
  """Instantiates a field specification from a parsed "AST" of a
  field.

  Parameters
  ----------
  field : dict

  Returns
  ----------
  A Field or a specialization of a field, like a bitfield.

  """
  assert len(field) == 1
  identifier, contents = field.items()[0]
  contents = dict({'units': '', 'n_with_values': 0}.items() + contents.items())
  return sbp.resolve_type(sbp.Field(identifier=identifier,
                                    type_id=contents.pop('type'),
                                    options=contents))
Example #3
0
def mk_field(field):
  """Instantiates a field specification from a parsed "AST" of a
  field.

  Parameters
  ----------
  field : dict

  Returns
  ----------
  A Field or a specialization of a field, like a bitfield.

  """
  assert len(field) == 1
  identifier, contents = field.items()[0]
  contents = dict({'units': '', 'n_with_values': 0}.items() + contents.items())
  return sbp.resolve_type(sbp.Field(identifier=identifier,
                                    type_id=contents.pop('type'),
                                    options=contents))
Example #4
0
def mk_definition(defn):
  """Instantiates a struct or SBP message specification from a parsed
  "AST" of a struct or message.

  Parameters
  ----------
  defn : dict

  Returns
  ----------
  A Definition or a specialization of a definition, like a Struct

  """
  assert len(defn) == 1
  identifier, contents = defn.items()[0]
  fs = [mk_field(f) for f in contents.get('fields', [])]
  return sbp.resolve_type(sbp.Definition(identifier=identifier,
                                         sbp_id=contents.get('id', None),
                                         short_desc=contents.get('short_desc', None),
                                         desc=contents.get('desc', None),
                                         type_id=contents.get('type'),
                                         fields=fs,
                                         public=contents.get('public', True)))