Skip to content

Commit 7ce8f73

Browse files
authoredJan 25, 2022
Merge pull request #1471 from FarmBot/tuesday
Add `safe_z` option to Lua move_abs
2 parents 8cce527 + 46cbbdd commit 7ce8f73

File tree

3 files changed

+39
-3
lines changed

3 files changed

+39
-3
lines changed
 

‎lib/os/lua/data_manipulation.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ defmodule FarmbotOS.Lua.DataManipulation do
219219
def photo_grid(args, lua), do: lua_extension(args, lua, "photo_grid")
220220
def api(args, lua), do: lua_extension(args, lua, "api")
221221

222-
defp lua_extension(args, lua, filename) do
222+
def lua_extension(args, lua, filename) do
223223
lua_code = File.read!("#{:code.priv_dir(:farmbot)}/lua/#{filename}.lua")
224224

225225
with {:ok, [result]} <- Lua.raw_eval(lua, lua_code) do

‎lib/os/lua/firmware.ex

+2-2
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ defmodule FarmbotOS.Lua.Firmware do
9999
end
100100
end
101101

102-
def move_absolute([table], lua) when is_list(table) do
103-
move_absolute([table, 100], lua)
102+
def move_absolute([table] = args, lua) when is_list(table) do
103+
FarmbotOS.Lua.DataManipulation.lua_extension(args, lua, "safe_z")
104104
end
105105

106106
def move_absolute([table, speed], lua)

‎priv/lua/safe_z.lua

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
local safe_z = get_fbos_config("safe_z")
2+
3+
function overwrite(axis, num)
4+
return {
5+
kind = "axis_overwrite",
6+
args = {
7+
axis = axis,
8+
axis_operand = {kind = "numeric", args = {number = num}}
9+
}
10+
}
11+
end
12+
13+
return function(input)
14+
local speed = input.speed or 100
15+
local pos = get_position()
16+
if input.safe_z then
17+
cs_eval({
18+
kind = "rpc_request",
19+
args = {label = "safe_z_lua", priority = 500},
20+
body = {
21+
{
22+
kind = "move",
23+
args = {},
24+
body = {
25+
overwrite("x", input.x or pos.x),
26+
overwrite("y", input.y or pos.y),
27+
overwrite("z", input.z or pos.z),
28+
{kind = "safe_z", args = {}}
29+
}
30+
}
31+
}
32+
})
33+
else
34+
return move_absolute(input, speed)
35+
end
36+
end

0 commit comments

Comments
 (0)
Please sign in to comment.