Packages
grizzly
8.15.3
9.1.4
9.1.2
9.1.1
9.1.0
9.0.0
8.15.3
8.15.2
8.15.1
8.15.0
8.14.0
8.13.0
8.12.0
8.11.3
8.11.2
8.11.1
8.11.0
8.10.0
8.9.0
8.8.1
8.8.0
8.7.1
8.7.0
8.6.12
8.6.11
8.6.10
8.6.9
8.6.8
8.6.7
retired
8.6.6
8.6.5
8.6.4
8.6.3
8.6.2
8.6.1
8.6.0
8.5.3
8.5.2
8.5.1
8.5.0
8.4.0
8.3.0
8.2.3
8.2.2
8.2.1
8.2.0
8.1.0
8.0.1
8.0.0
7.4.3
7.4.2
7.4.1
7.4.0
7.3.0
7.2.0
7.1.4
7.1.3
7.1.2
7.1.1
7.1.0
7.0.4
7.0.3
7.0.2
7.0.1
7.0.0
6.8.8
6.8.7
6.8.6
6.8.5
6.8.4
6.8.3
6.8.2
6.8.1
6.8.0
6.7.1
6.7.0
6.6.1
6.6.0
6.5.1
6.5.0
6.4.0
6.3.0
6.2.0
6.1.1
6.1.0
6.0.1
6.0.0
5.4.1
5.4.0
5.3.0
5.2.8
5.2.7
5.2.6
5.2.5
5.2.4
5.2.3
5.2.2
5.2.1
5.2.0
5.1.2
5.1.1
5.1.0
5.0.2
5.0.1
5.0.0
4.0.1
4.0.0
3.0.0
2.1.0
2.0.0
1.0.1
1.0.0
0.22.7
0.22.6
0.22.5
0.22.4
0.22.3
0.22.2
0.22.1
0.22.0
0.21.1
0.21.0
0.20.2
0.20.1
0.20.0
0.19.1
0.19.0
0.18.3
0.18.2
0.18.1
0.18.0
0.17.7
0.17.6
0.17.5
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.2
0.16.1
0.16.0
0.15.11
0.15.10
0.15.9
0.15.8
0.15.7
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.0
0.12.3
0.12.2
0.12.1
0.12.0
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.0
0.9.0-rc.4
0.9.0-rc.3
0.9.0-rc.2
0.9.0-rc.1
0.9.0-rc.0
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.0
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.0
0.4.3
0.4.2
Elixir Z-Wave library
Current section
Files
Jump to
Current section
Files
lib/grizzly/options.ex
defmodule Grizzly.Options do
@moduledoc """
Grizzly config options.
"""
alias Grizzly.{Supervisor, Trace, ZWaveFirmware}
alias Grizzly.ZIPGateway.Config
require Logger
@typedoc """
Options for configuring Z-Wave module firmware upgrades.
* `enabled` - whether firmware upgrades should run automatically after Grizzly
starts (with a delay of 1 minute). Defaults to `false`.
* `specs` - a list of firmware upgrade specifications. If multiple specs match,
the first will be applied. See `Grizzly.ZWaveFirmware.UpgradeSpec`.
* `chip_series` - the Z-Wave module chip type. See `t:Grizzly.ZWaveFirmware.chip_series/0`.
* `module_reset_fun` - a function that performs a hard rest of the Z-Wave module.
Used to detect whether the module is stuck at the bootloader due to a previous
failed upgrade. See `t:Grizzly.ZWaveFirmware.module_reset_fun/0`.
"""
@type zwave_firmware_options :: %{
enabled: boolean(),
specs: [ZWaveFirmware.UpgradeSpec.t()],
chip_series: ZWaveFirmware.chip_series(),
module_reset_fun: ZWaveFirmware.module_reset_fun()
}
@typedoc """
See Grizzly.Supervisor
"""
@type t() :: %__MODULE__{
transport: module(),
run_zipgateway: boolean(),
serial_port: String.t(),
zipgateway_binary: Path.t(),
zipgateway_config_path: Path.t(),
zipgateway_port: :inet.port_number(),
manufacturer_id: non_neg_integer() | nil,
hardware_version: byte() | nil,
product_id: byte() | nil,
product_type: byte() | nil,
serial_log: Path.t() | nil,
tun_script: Path.t(),
lan_ip: :inet.ip_address(),
pan_ip: :inet.ip_address(),
inclusion_handler: Grizzly.handler() | nil,
firmware_update_handler: Grizzly.handler() | nil,
unsolicited_destination: {:inet.ip_address(), :inet.port_number()},
associations_file: Path.t(),
max_associations_per_group: non_neg_integer(),
database_file: Path.t() | nil,
indicator_handler: (Grizzly.Indicator.event() -> :ok),
rf_region: Supervisor.rf_region() | nil,
power_level: {Supervisor.tx_power(), Supervisor.measured_power()} | nil,
status_reporter: module(),
zwave_firmware: zwave_firmware_options(),
zw_programmer_path: Path.t(),
inclusion_adapter: module(),
extra_config: String.t() | nil,
trace_options: [Trace.trace_opt()],
background_rssi_monitor: [Grizzly.BackgroundRSSIMonitor.opt()],
storage_adapter: {module(), term()},
storage_options: PropertyTable.options()
}
defstruct run_zipgateway: true,
serial_port: "/dev/ttyUSB0",
zipgateway_binary: "/usr/sbin/zipgateway",
zipgateway_config_path: "/tmp/zipgateway.cfg",
transport: Grizzly.Transports.DTLS,
zipgateway_port: 41230,
manufacturer_id: nil,
hardware_version: nil,
product_id: nil,
product_type: nil,
serial_log: nil,
tun_script: "./zipgateway.tun",
pan_ip: {0xFD00, 0xBBBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
lan_ip: {0xFD00, 0xAAAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
inclusion_handler: nil,
firmware_update_handler: nil,
unsolicited_destination: {{0xFD00, 0xAAAA, 0, 0, 0, 0, 0, 0x0002}, 41230},
associations_file: nil,
max_associations_per_group: 1,
database_file: "/data/zipgateway.db",
indicator_handler: nil,
rf_region: nil,
power_level: nil,
status_reporter: Grizzly.StatusReporter.Console,
zwave_firmware: %{
enabled: false,
zw_programmer_path: "/usr/bin/zw_programmer",
specs: []
},
zw_programmer_path: "/usr/bin/zw_programmer",
inclusion_adapter: Grizzly.Inclusions.ZWaveAdapter,
extra_config: nil,
trace_options: [],
background_rssi_monitor: [],
storage_adapter: {Grizzly.Storage.PropertyTable, Grizzly.Storage},
storage_options: []
@spec new([Supervisor.arg()]) :: t()
def new(opts \\ []) do
struct(__MODULE__, opts)
end
@spec to_zipgateway_config(t()) :: Config.t()
def to_zipgateway_config(%__MODULE__{} = grizzly_opts) do
Config.new(grizzly_opts)
end
end