farmbot_os/farmbot_core/lib/celery_script/io_layer.ex

48 lines
2.3 KiB
Elixir

defmodule Farmbot.Core.CeleryScript.IOLayer do
@moduledoc """
Behaviour for all functions a CeleryScript Runtime IO layer needs to
implement.
"""
alias Farmbot.CeleryScript.AST
@type args :: AST.args()
@type body :: AST.body()
# Simple IO
@callback write_pin(args, body) :: :ok | {:error, String.t}
@callback read_pin(args, body) :: :ok | {:error, String.t}
@callback set_servo_angle(args, body) :: :ok | {:error, String.t}
@callback send_message(args, body) :: :ok | {:error, String.t}
@callback move_relative(args, body) :: :ok | {:error, String.t}
@callback home(args, body) :: :ok | {:error, String.t}
@callback find_home(args, body) :: :ok | {:error, String.t}
@callback wait(args, body) :: :ok | {:error, String.t}
@callback toggle_pin(args, body) :: :ok | {:error, String.t}
@callback execute_script(args, body) :: :ok | {:error, String.t}
@callback zero(args, body) :: :ok | {:error, String.t}
@callback calibrate(args, body) :: :ok | {:error, String.t}
@callback take_photo(args, body) :: :ok | {:error, String.t}
@callback config_update(args, body) :: :ok | {:error, String.t}
@callback set_user_env(args, body) :: :ok | {:error, String.t}
@callback install_first_party_farmware(args, body) :: :ok | {:error, String.t}
@callback install_farmware(args, body) :: :ok | {:error, String.t}
@callback uninstall_farmware(args, body) :: :ok | {:error, String.t}
@callback update_farmware(args, body) :: :ok | {:error, String.t}
@callback read_status(args, body) :: :ok | {:error, String.t}
@callback sync(args, body) :: :ok | {:error, String.t}
@callback power_off(args, body) :: :ok | {:error, String.t}
@callback reboot(args, body) :: :ok | {:error, String.t}
@callback factory_reset(args, body) :: :ok | {:error, String.t}
@callback change_ownership(args, body) :: :ok | {:error, String.t}
@callback check_updates(args, body) :: :ok | {:error, String.t}
@callback dump_info(args, body) :: :ok | {:error, String.t}
@callback move_absolute(args, body) :: :ok | {:error, String.t}
# Complex IO.
# @callbcak _if(args, body) :: {:ok, AST.t} | {:error, String.t}
@callback execute(args, body) :: {:ok, AST.t} | {:error, String.t}
# Special IO.
@callback emergency_lock(args, body) :: any
@callback emergency_unlock(args, body) :: any
end