XMAVLink.Parser (xmavlink v0.4.3)

View Source

Parse a mavlink xml file into an idiomatic Elixir representation:

%{

version: 2,
dialect: 0,
enums: [
  %{
    name: :mav_autopilot,
    description: "Micro air vehicle...",
    entries: [
      %{
        value: 0,
        name: :mav_autopilot_generic,         (use atoms for identifiers)
        description: "Generic autopilot..."
        params: [                             (only used by commands)
          %{
              index: 0,
              description: ""
           },
           ... more entry params
        ]
       },
       ... more enum entries
    ]
   },
  ... more enums
],
messages: [
  %{
    id: 0,
    name: "optical_flow",
    description: "Optical flow...",
    fields: [
      %{
          type: "uint16_t",
          ordinality: 1,
          name: "flow_x",
          units: "dpixels",                   (note: string not atom)
          description: "Flow in pixels..."
       },
       ... more message fields
    ]
   },
  ... more messages
]

}

Summary

Types

entry_description()

@type entry_description() :: %{
  value: integer() | nil,
  name: atom(),
  description: String.t(),
  params: [param_description()]
}

enum_description()

@type enum_description() :: %{
  name: atom(),
  description: String.t(),
  entries: [entry_description()]
}

field_description()

@type field_description() :: %{
  type: String.t(),
  ordinality: integer(),
  omit_arg: boolean(),
  is_extension: boolean(),
  constant_val: String.t() | nil,
  name: String.t(),
  enum: String.t(),
  display: :bitmask | nil,
  print_format: String.t() | nil,
  units: atom() | nil,
  description: String.t()
}

message_description()

@type message_description() :: %{
  id: integer(),
  name: String.t(),
  description: String.t(),
  has_ext_fields: boolean(),
  fields: [field_description()]
}

param_description()

@type param_description() :: %{index: integer(), description: String.t()}

Functions

combine_definitions(list)

merge_enums(as, bs)

xmlAttribute(args \\ [])

(macro)

xmlAttribute(record, args)

(macro)

xmlElement(args \\ [])

(macro)

xmlElement(record, args)

(macro)

xmlText(args \\ [])

(macro)

xmlText(record, args)

(macro)