Packages
grizzly
7.1.0
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 or not to enable firmware upgrades
* `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(),
eeprom_file: Path.t() | nil,
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()]
}
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,
eeprom_file: "/data/zipeeprom.dat",
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: []
@spec new([Supervisor.arg()]) :: t()
def new(opts \\ []) do
struct(__MODULE__, opts)
end
@spec to_zipgateway_config(t(), boolean()) :: Config.t()
def to_zipgateway_config(%__MODULE__{database_file: file} = grizzly_opts, use_database?)
when file == nil or not use_database? do
# Build a zipgateway configuration for zipgateway <7.14.2
Config.new(grizzly_opts)
end
def to_zipgateway_config(%__MODULE__{} = grizzly_opts, true = _use_database?) do
# Build a zipgateway configuration for zipgateway >= 7.14.2. This version
# of zipgateway will exit if an eeprom file is specified
Config.new(%{grizzly_opts | eeprom_file: nil})
end
end