feat: include self-reported tx_power in measurement calls
This commit is contained in:
@@ -21,9 +21,10 @@ defmodule Localiser.Localisation.Sensor.Server do
|
||||
{:via, Registry, {Localiser.Registry, {:sensor, sensor_id}}}
|
||||
end
|
||||
|
||||
# Returns %{sensor_id, floor_x, floor_y, distance} for a raw RSSI reading.
|
||||
def measure(sensor_id, rssi) do
|
||||
GenServer.call(via(sensor_id), {:measure, rssi})
|
||||
# Returns %{sensor_id, floor_x, floor_y, distance, rssi, tx_power} for a raw RSSI reading.
|
||||
# tx_power is the beacon-advertised expected RSSI at 1 m (nil if not available).
|
||||
def measure(sensor_id, rssi, tx_power \\ nil) do
|
||||
GenServer.call(via(sensor_id), {:measure, rssi, tx_power})
|
||||
end
|
||||
|
||||
# Returns true if the sensor is currently collecting calibration samples.
|
||||
@@ -66,14 +67,16 @@ defmodule Localiser.Localisation.Sensor.Server do
|
||||
end
|
||||
|
||||
@impl true
|
||||
def handle_call({:measure, rssi}, _from, state) do
|
||||
def handle_call({:measure, rssi, tx_power}, _from, state) do
|
||||
distance = rssi_to_distance(rssi, state.rssi_ref, state.path_loss_exp)
|
||||
|
||||
measurement = %{
|
||||
sensor_id: state.sensor_id,
|
||||
floor_x: state.floor_x,
|
||||
floor_y: state.floor_y,
|
||||
distance: distance
|
||||
distance: distance,
|
||||
rssi: rssi,
|
||||
tx_power: tx_power
|
||||
}
|
||||
|
||||
{:reply, measurement, state}
|
||||
|
||||
Reference in New Issue
Block a user