Search documentation of grizzly

# View Source Grizzly.ZWave.DSK (grizzly v7.4.2)

Module for working with the SmartStart and S2 DSKs

# Summary

## Types

dsk_binary()

The DSK binary is the elixir binary string form of the DSK

dsk_string()

The DSK string is the string version of the DSK

t()

## Functions

binary_to_string(dsk_binary)

Take a binary representation of the DSK and change it into the string representation

new(dsk_binary)

Make a new DSK

parse(dsk_string)

Parse a textual representation of a DSK

parse_pin(string)

Parse a DSK PIN

string_to_binary(dsk_string) deprecated

Take a string representation of the DSK and change it into the binary representation

to_pin_string(dsk)

Return the first five digits of a DSK for use as a PIN

to_string(dsk, opts \\ [])

Convert the DSK to a string

zeros()

Generate a DSK that is all zeros

# Types

Link to this type

# dsk_binary()

View Source

    @type dsk_binary() :: <<_::128>>

The DSK binary is the elixir binary string form of the DSK

The format is `<<b1, b2, b3, ... b16>>`

That is 16 bytes.

An example of this would be:

    <<196, 109, 73, 131, 38, 196, 119, 227, 62, 101, 131, 175, 15, 165, 14, 39>>

Link to this type

# dsk_string()

View Source

    @type dsk_string() :: <<_::376>>

The DSK string is the string version of the DSK

The general format is `XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX`

That is 8 blocks of 16 bit integers separated by a dash.

An example of this would be `50285-18819-09924-30691-15973-33711-04005-03623`

Link to this type

# t()

View Source

    @type t() :: %Grizzly.ZWave.DSK{raw: <<_::128>>}

# Functions

Link to this function

# binary_to_string(dsk_binary)

View Source

    @spec binary_to_string(dsk_binary()) :: {:ok, dsk_string()}

Take a binary representation of the DSK and change it into the string representation

Link to this function

# new(dsk_binary)

View Source

    @spec new(binary()) :: t()

Make a new DSK

If less than 16 bytes are passed in, the rest are initialized to zero. Due to how DSKs are constructed, odd length binaries aren't allowed since they should never be possible.

Link to this function

# parse(dsk_string)

View Source

    @spec parse(dsk_string()) :: {:ok, t()} | {:error, :invalid_dsk}

Parse a textual representation of a DSK

Link to this function

# parse_pin(string)

View Source

    @spec parse_pin(String.t() | non_neg_integer()) :: {:ok, t()} | {:error, :invalid_dsk}

Parse a DSK PIN

PINs can also be parsed by `parse/1`. When working with PINs, though, it's nice to be more forgiving and accept PINs as integers or strings without leading zeros.

String examples:

    iex> {:ok, dsk} = DSK.parse_pin("12345"); dsk
    #DSK<12345-00000-00000-00000-00000-00000-00000-00000>

    iex> {:ok, dsk} = DSK.parse_pin("123"); dsk
    #DSK<00123-00000-00000-00000-00000-00000-00000-00000>

Integer examples:

    iex> {:ok, dsk} = DSK.parse_pin(12345); dsk
    #DSK<12345-00000-00000-00000-00000-00000-00000-00000>

    iex> {:ok, dsk} = DSK.parse_pin(123); dsk
    #DSK<00123-00000-00000-00000-00000-00000-00000-00000>

Link to this function

# string_to_binary(dsk_string)

View Source
This function is deprecated. Use DSK.parse/1 instead.

    @spec string_to_binary(dsk_string()) :: {:ok, dsk_binary()} | {:error, :invalid_dsk}

Take a string representation of the DSK and change it into the binary representation

Link to this function

# to_pin_string(dsk)

View Source

    @spec to_pin_string(t()) :: String.t()

Return the first five digits of a DSK for use as a PIN

    iex> {:ok, dsk} = DSK.parse("50285-18819-09924-30691-15973-33711-04005-03623")
    iex> DSK.to_pin_string(dsk)
    "50285"

    iex> {:ok, dsk} = DSK.parse("00001-18819-09924-30691-15973-33711-04005-03623")
    iex> DSK.to_pin_string(dsk)
    "00001"

Link to this function

# to_string(dsk, opts \\ [])

View Source

    @spec to_string(
      t(),
      keyword()
    ) :: String.t()

Convert the DSK to a string

    iex> {:ok, dsk} = DSK.parse("50285-18819-09924-30691-15973-33711-04005-03623")
    iex> DSK.to_string(dsk)
    "50285-18819-09924-30691-15973-33711-04005-03623"

    iex> {:ok, dsk} = DSK.parse("50285-18819-09924-30691-15973-33711-04005-03623")
    iex> DSK.to_string(dsk, delimiter: "")
    "5028518819099243069115973337110400503623"

Options:

- `:delimiter` - character to join the 5 byte sections together (default `"-"`)

Link to this function

# zeros()

View Source

    @spec zeros() :: t()

Generate a DSK that is all zeros

This is useful for placeholder/default DSKs.