diff --git a/lib/vintage_net_qmi/connection.ex b/lib/vintage_net_qmi/connection.ex index 5e26d8f..5f947c4 100644 --- a/lib/vintage_net_qmi/connection.ex +++ b/lib/vintage_net_qmi/connection.ex @@ -111,6 +111,16 @@ defmodule VintageNetQMI.Connection do stats_with_timestamp ) + :telemetry.execute( + [ + :vintage_net_qmi, + :connection, + :statistics + ], + stats, + %{ifname: state.ifname} + ) + {:noreply, state} end diff --git a/lib/vintage_net_qmi/signal_monitor.ex b/lib/vintage_net_qmi/signal_monitor.ex index 1cca27a..1884b8c 100644 --- a/lib/vintage_net_qmi/signal_monitor.ex +++ b/lib/vintage_net_qmi/signal_monitor.ex @@ -34,7 +34,17 @@ defmodule VintageNetQMI.SignalMonitor do @impl GenServer def handle_info(:signal_check, state) do - :ok = get_signal_stats(state) + case NetworkAccess.get_signal_strength(state.qmi) do + {:ok, %{rssi_reports: [rssi_data]}} -> + rssi_data + |> to_rssi() + |> Map.put(:rssi, rssi_data.rssi) + |> post_signal_rssi(state) + |> execute_telemetry_event(state) + + {:error, _reason} -> + Logger.debug("[VintageNetQMI] unable to get signal strength, retrying.") + end send_msgs([:signal_check], state.interval) @@ -55,24 +65,16 @@ defmodule VintageNetQMI.SignalMonitor do {:noreply, state} end - defp get_signal_stats(state) do - {:ok, %{rssi_reports: [rssi_data]}} = NetworkAccess.get_signal_strength(state.qmi) - - rssi_data - |> to_rssi() - |> Map.put(:rssi, rssi_data.rssi) - |> post_signal_rssi(state) - |> execute_telemetry_event(state) - end - defp to_rssi(%{rssi: rssi}) do ASUCalculator.from_lte_rssi(rssi) end - defp post_signal_rssi(%{asu: asu, dbm: dbm, bars: bars}, ifname) do - post_property(ifname, "signal_asu", asu) - post_property(ifname, "signal_dbm", dbm) - post_property(ifname, "signal_4bars", bars) + defp post_signal_rssi(%{asu: asu, dbm: dbm, bars: bars} = rssi, state) do + post_property(state.ifname, "signal_asu", asu) + post_property(state.ifname, "signal_dbm", dbm) + post_property(state.ifname, "signal_4bars", bars) + + rssi end defp post_band_and_channel_info(