auto_api v0.1.0 AutoApi.CapabilityParser View Source

Parse Capability from binary to map and vise versa

Read more https://developers.high-mobility.com/resources/documentation/auto-api/api-structure/capabilities

Link to this section Summary

Functions

Converts capabilities version 5 to binary

Converts capabilities in binary to map

Link to this section Functions

Converts capabilities version 5 to binary

ie> map = %{door_locks: [], trunk_access: [:get_trunk_state, :trunk_state, :open_close_trunk]} ie> AutoApi.CapabilityParser.to_bin(map, :v5) <<0x01, 0x01, 0x00, 0x02, 0x00, 0x20, 0x01, 0x00, 0x05, 0x00, 0x21, 0x00, 0x01, 0x02>>

Converts capabilities in binary to map

ie> bin_caps = <<0x01>> <> <<0x01, 0x00, 0x05, 0x00, 0x20, 0x01, 0x00, 0x02>>
ie> AutoApi.CapabilityParser.to_map(bin_caps)
{:ok, %{door_locks: [:lock_state, :get_lock_state, :lock_unlock_doors]}}

ie> bin_2_caps = <<0x01>> <> <<0x01, 0x00, 0x02, 0x00, 0x20>> <> <<0x01, 0x00, 0x05, 0x00, 0x21, 0x00, 0x01, 0x02>>
ie> AutoApi.CapabilityParser.to_map(bin_2_caps)
{:ok, %{door_locks: [], trunk_access: [:get_trunk_state, :trunk_state, :open_close_trunk]}}

ie> bin_invalid_caps = <<0x01>> <> <<0x01, 0x00, 0x02, 0x00, 0x20, 0x01>>
ie> AutoApi.CapabilityParser.to_map(bin_invalid_caps)
{:error, {:cannot_parse_data, <<1>>}}



ie> bin_caps = <<0x1, 0x0, 0x20, 0x1, 0x1, 0x0, 0x25, 0x2, 0x0, 0x3>>
ie> AutoApi.CapabilityParser.to_map(bin_caps)
%{door_locks: [%{atom: :available, bin: <<1>>, name: "Available", title: ""}], rooftop: [%{bin: <<0x00>>, name: "Unavailable", atom: :unavailable, title: "Dimming"}, %{atom: :no_name, bin: <<0x3>>, name: "0% or 100% Available", title: "Open/Close"}]}