From ef38b81dd6f5e3161811139ed2b611242e006a89 Mon Sep 17 00:00:00 2001 From: Pim Kunis Date: Wed, 24 Jul 2019 22:33:14 +0200 Subject: [PATCH] fetch relay pin from env --- morse/lib/morse.ex | 9 +++++++-- morse/mix.exs | 2 +- ui/config/config.exs | 2 ++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/morse/lib/morse.ex b/morse/lib/morse.ex index 3131b2c..9eb0c9f 100644 --- a/morse/lib/morse.ex +++ b/morse/lib/morse.ex @@ -5,7 +5,6 @@ defmodule Morse do Functions to control the signal lamp connected with GPIO. """ - @relay_pin 17 @sleep_short 200 @sleep_delay 400 @sleep_long 700 @@ -25,7 +24,7 @@ defmodule Morse do end def signal(symbols) do - {:ok, gpio} = GPIO.open(@relay_pin, :output) + {:ok, gpio} = GPIO.open(relay_pin(), :output) GPIO.write(gpio, @off) Process.sleep(@sleep_start) signal_sentence(gpio, String.graphemes(symbols)) @@ -40,10 +39,12 @@ defmodule Morse do defp signal_sentence(gpio, [symbol | rest]) when symbol in [".", "-"] do GPIO.write(gpio, @on) + case symbol do "." -> Process.sleep(@sleep_short) "-" -> Process.sleep(@sleep_long) end + GPIO.write(gpio, @off) Process.sleep(@sleep_delay) @@ -59,4 +60,8 @@ defmodule Morse do defp signal_sentence(_gpio, [symbol | _rest]) do {:error, "Undefined symbol: " <> symbol} end + + defp relay_pin() do + Application.fetch_env!(:morse, :relay_pin) + end end diff --git a/morse/mix.exs b/morse/mix.exs index a4345bf..97e8ffb 100644 --- a/morse/mix.exs +++ b/morse/mix.exs @@ -15,7 +15,7 @@ defmodule Morse.MixProject do def application do [ extra_applications: [:logger], - env: [morse_message: "...---..."] + env: [morse_message: "...---...", relay_pin: 17] ] end diff --git a/ui/config/config.exs b/ui/config/config.exs index 9297b6b..dc1d064 100644 --- a/ui/config/config.exs +++ b/ui/config/config.exs @@ -22,6 +22,8 @@ config :logger, :console, # Use Jason for JSON parsing in Phoenix config :phoenix, :json_library, Jason +config :morse, :relay_pin, 17 + # Import environment specific config. This must remain at the bottom # of this file so it overrides the configuration defined above. import_config "#{Mix.env()}.exs"