diff --git a/lib/aprs/convert.ex b/lib/aprs/convert.ex new file mode 100644 index 0000000..00ced5c --- /dev/null +++ b/lib/aprs/convert.ex @@ -0,0 +1,5 @@ +defmodule Aprs.Convert do + def wind(speed, :ultimeter, :mph), do: speed * 0.0621371192 + + def temp(value, :ultimeter, :f), do: value * 0.1 +end diff --git a/lib/parser.ex b/lib/parser.ex index 7f1ff67..edcfb36 100644 --- a/lib/parser.ex +++ b/lib/parser.ex @@ -3,7 +3,7 @@ defmodule Parser do Main parsing library """ # import Bitwise - alias Aprs.Packet + alias Aprs.{Convert, Packet} alias Parser.Types.{MicE, Position} require Logger @@ -196,9 +196,9 @@ defmodule Parser do |> Enum.map(&hex_decode(&1)) %{ - wind_speed: convert_ultimeter_wind(wind_speed), + wind_speed: Convert.wind(wind_speed, :ultimeter, :mph), wind_direction: wind_direction, - temp_f: convert_ultimeter_temp(temp), + temp_f: Convert.temp(temp, :ultimeter, :f), rain_long_term_total: rain_long_term_total, barrometer: barrometer, barrometer_delta_value: barrometer_delta_value, @@ -508,13 +508,4 @@ defmodule Parser do # defp convert_ultimeter_humidity(hum) do # hum * 10 # end - - defp convert_ultimeter_wind(wind) do - # convert to mph - wind * 0.0621371192 - end - - defp convert_ultimeter_temp(temp) do - temp / 10 - end end diff --git a/test/aprs/convert_test.exs b/test/aprs/convert_test.exs new file mode 100644 index 0000000..d6c381d --- /dev/null +++ b/test/aprs/convert_test.exs @@ -0,0 +1,16 @@ +defmodule Aprs.ConvertTest do + use ExUnit.Case + alias Aprs.Convert + + describe "wind/3" do + test "converts ultimeter mph" do + assert Convert.wind(55, :ultimeter, :mph) == 3.417541556 + end + end + + describe "temp/3" do + test "converts ultimeter f" do + assert Convert.temp(55, :ultimeter, :f) == 5.5 + end + end +end