farmbot_os/farmbot_core/lib/asset_storage/settings/firmware_config.ex

116 lines
3.5 KiB
Elixir

defmodule Farmbot.Asset.Settings.FirmwareConfig do
@moduledoc false
import Farmbot.Asset.Settings.Helpers
require Farmbot.Logger
@keys ~W(pin_guard_4_time_out
pin_guard_1_active_state
encoder_scaling_y
movement_invert_2_endpoints_x
movement_min_spd_y
pin_guard_2_time_out
movement_timeout_y
movement_home_at_boot_y
movement_home_spd_z
movement_invert_endpoints_z
pin_guard_1_pin_nr
movement_invert_endpoints_y
movement_max_spd_y
movement_home_up_y
encoder_missed_steps_decay_z
movement_home_spd_y
encoder_use_for_pos_x
movement_step_per_mm_x
movement_home_at_boot_z
movement_steps_acc_dec_z
pin_guard_5_pin_nr
movement_invert_motor_z
movement_max_spd_x
movement_enable_endpoints_y
movement_enable_endpoints_z
movement_stop_at_home_x
movement_axis_nr_steps_y
pin_guard_1_time_out
movement_home_at_boot_x
pin_guard_2_pin_nr
encoder_scaling_z
param_e_stop_on_mov_err
encoder_enabled_x
pin_guard_2_active_state
encoder_missed_steps_decay_y
movement_home_up_z
movement_enable_endpoints_x
movement_step_per_mm_y
pin_guard_3_pin_nr
param_mov_nr_retry
movement_stop_at_home_z
pin_guard_4_active_state
movement_steps_acc_dec_y
movement_home_spd_x
movement_keep_active_x
pin_guard_3_time_out
movement_keep_active_y
encoder_scaling_x
movement_invert_2_endpoints_z
encoder_missed_steps_decay_x
movement_timeout_z
encoder_missed_steps_max_z
movement_min_spd_z
encoder_enabled_y
encoder_type_y
movement_home_up_x
pin_guard_3_active_state
movement_invert_motor_x
movement_keep_active_z
movement_max_spd_z
movement_secondary_motor_invert_x
movement_stop_at_max_x
movement_steps_acc_dec_x
pin_guard_4_pin_nr
encoder_type_x
movement_invert_2_endpoints_y
encoder_invert_y
movement_axis_nr_steps_x
movement_stop_at_max_z
movement_invert_endpoints_x
encoder_invert_z
encoder_use_for_pos_z
pin_guard_5_active_state
movement_step_per_mm_z
encoder_enabled_z
movement_secondary_motor_x
pin_guard_5_time_out
movement_min_spd_x
encoder_type_z
movement_stop_at_max_y
encoder_use_for_pos_y
encoder_missed_steps_max_y
movement_timeout_x
movement_stop_at_home_y
movement_axis_nr_steps_z
encoder_invert_x
encoder_missed_steps_max_x
movement_invert_motor_y)
def download(new, old) do
new = Map.take(new, @keys)
for k <- @keys do
if old[k] != new[k] do
try do
apply_kv(k, new[k], old[k])
rescue
_ -> Farmbot.Logger.error 1, "Failed to apply Firmware Config: #{k}"
end
end
end
:ok
end
def log(key, new, old) do
Farmbot.Logger.info 3, "Firmware Config #{key} updated: #{new || "NULL"} => #{old || "NULL"}"
end
for key <- @keys do
fw_float(unquote(key))
end
end