Corpus update

mark_as
Rick Carlino 2020-04-17 11:16:43 -05:00
parent 856e19147e
commit bce9f4385f
3 changed files with 220 additions and 24 deletions

View File

@ -22,13 +22,14 @@
{ {
"name": "ALLOWED_MESSAGE_TYPES", "name": "ALLOWED_MESSAGE_TYPES",
"allowed_values": [ "allowed_values": [
"success", "assertion",
"busy", "busy",
"warn", "debug",
"error", "error",
"info",
"fun", "fun",
"debug" "info",
"success",
"warn"
] ]
}, },
{ {
@ -55,6 +56,15 @@
1 1
] ]
}, },
{
"name": "ALLOWED_ASSERTION_TYPES",
"allowed_values": [
"abort",
"recover",
"abort_recover",
"continue"
]
},
{ {
"name": "AllowedPinTypes", "name": "AllowedPinTypes",
"allowed_values": [ "allowed_values": [
@ -89,6 +99,7 @@
"name": "LegalSequenceKind", "name": "LegalSequenceKind",
"allowed_values": [ "allowed_values": [
"_if", "_if",
"assertion",
"calibrate", "calibrate",
"change_ownership", "change_ownership",
"check_updates", "check_updates",
@ -109,7 +120,6 @@
"read_status", "read_status",
"reboot", "reboot",
"remove_farmware", "remove_farmware",
"resource_update",
"send_message", "send_message",
"set_servo_angle", "set_servo_angle",
"set_user_env", "set_user_env",
@ -117,6 +127,7 @@
"take_photo", "take_photo",
"toggle_pin", "toggle_pin",
"update_farmware", "update_farmware",
"update_resource",
"wait", "wait",
"write_pin", "write_pin",
"zero" "zero"
@ -206,7 +217,8 @@
"planned", "planned",
"planted", "planted",
"harvested", "harvested",
"sprouted" "sprouted",
"removed"
] ]
}, },
{ {
@ -214,24 +226,18 @@
"allowed_values": [ "allowed_values": [
"GenericPointer", "GenericPointer",
"ToolSlot", "ToolSlot",
"Plant" "Plant",
"Weed"
] ]
}, },
{ {
"name": "resource_type", "name": "resource_type",
"allowed_values": [ "allowed_values": [
"Device", "Device",
"FarmEvent",
"Image",
"Log",
"Peripheral",
"Plant",
"Point", "Point",
"Regimen", "Plant",
"Sequence",
"Tool",
"ToolSlot", "ToolSlot",
"User", "Weed",
"GenericPointer" "GenericPointer"
] ]
}, },
@ -261,11 +267,13 @@
"z", "z",
"pin_type", "pin_type",
"pointer_id", "pointer_id",
"point_group_id",
"pointer_type", "pointer_type",
"pin_mode", "pin_mode",
"sequence_id", "sequence_id",
"lhs", "lhs",
"op", "op",
"priority",
"channel_name", "channel_name",
"message_type", "message_type",
"tool_id", "tool_id",
@ -273,19 +281,22 @@
"axis", "axis",
"message", "message",
"speed", "speed",
"resource_type" "resource_type",
"assertion_type",
"lua",
"resource"
] ]
}, },
{ {
"name": "LegalKindString", "name": "LegalKindString",
"allowed_values": [ "allowed_values": [
"Assertion",
"If", "If",
"Calibrate", "Calibrate",
"ChangeOwnership", "ChangeOwnership",
"Channel", "Channel",
"CheckUpdates", "CheckUpdates",
"Coordinate", "Coordinate",
"DumpInfo",
"EmergencyLock", "EmergencyLock",
"EmergencyUnlock", "EmergencyUnlock",
"ExecuteScript", "ExecuteScript",
@ -331,7 +342,10 @@
"MoveAbsolute", "MoveAbsolute",
"WritePin", "WritePin",
"ReadPin", "ReadPin",
"ResourceUpdate" "ResourceUpdate",
"Resource",
"UpdateResource",
"PointGroup"
] ]
} }
], ],
@ -394,6 +408,10 @@
{ {
"tag": "identifier", "tag": "identifier",
"name": "identifier" "name": "identifier"
},
{
"tag": "point_group",
"name": "point_group"
} }
] ]
}, },
@ -625,6 +643,15 @@
} }
] ]
}, },
{
"name": "point_group_id",
"allowed_values": [
{
"tag": "integer",
"name": "Integer"
}
]
},
{ {
"name": "pointer_type", "name": "pointer_type",
"allowed_values": [ "allowed_values": [
@ -674,6 +701,15 @@
} }
] ]
}, },
{
"name": "priority",
"allowed_values": [
{
"tag": "integer",
"name": "Integer"
}
]
},
{ {
"name": "channel_name", "name": "channel_name",
"allowed_values": [ "allowed_values": [
@ -745,9 +781,53 @@
"name": "resource_type" "name": "resource_type"
} }
] ]
},
{
"name": "assertion_type",
"allowed_values": [
{
"tag": "ALLOWED_ASSERTION_TYPES",
"name": "ALLOWED_ASSERTION_TYPES"
}
]
},
{
"name": "lua",
"allowed_values": [
{
"tag": "string",
"name": "String"
}
]
},
{
"name": "resource",
"allowed_values": [
{
"tag": "identifier",
"name": "identifier"
},
{
"tag": "resource",
"name": "resource"
}
]
} }
], ],
"nodes": [ "nodes": [
{
"allowed_args": [
"assertion_type",
"_then",
"lua"
],
"allowed_body_types": [],
"name": "assertion",
"tags": [
"*"
],
"docs": ""
},
{ {
"allowed_args": [ "allowed_args": [
"lhs", "lhs",
@ -1151,9 +1231,11 @@
}, },
{ {
"allowed_args": [ "allowed_args": [
"label" "label",
"priority"
], ],
"allowed_body_types": [ "allowed_body_types": [
"assertion",
"calibrate", "calibrate",
"change_ownership", "change_ownership",
"check_updates", "check_updates",
@ -1175,7 +1257,7 @@
"read_status", "read_status",
"reboot", "reboot",
"remove_farmware", "remove_farmware",
"resource_update", "update_resource",
"send_message", "send_message",
"set_servo_angle", "set_servo_angle",
"set_user_env", "set_user_env",
@ -1225,6 +1307,7 @@
"locals" "locals"
], ],
"allowed_body_types": [ "allowed_body_types": [
"assertion",
"calibrate", "calibrate",
"change_ownership", "change_ownership",
"check_updates", "check_updates",
@ -1246,7 +1329,7 @@
"read_status", "read_status",
"reboot", "reboot",
"remove_farmware", "remove_farmware",
"resource_update", "update_resource",
"send_message", "send_message",
"set_servo_angle", "set_servo_angle",
"set_user_env", "set_user_env",
@ -1459,6 +1542,45 @@
"network_user" "network_user"
], ],
"docs": "" "docs": ""
},
{
"allowed_args": [
"resource_type",
"resource_id"
],
"allowed_body_types": [],
"name": "resource",
"tags": [
"network_user"
],
"docs": ""
},
{
"allowed_args": [
"resource"
],
"allowed_body_types": [
"pair"
],
"name": "update_resource",
"tags": [
"function",
"api_writer",
"network_user"
],
"docs": ""
},
{
"allowed_args": [
"point_group_id"
],
"allowed_body_types": [],
"name": "point_group",
"tags": [
"data",
"list_like"
],
"docs": ""
} }
] ]
} }

View File

@ -0,0 +1,74 @@
defmodule FarmbotCeleryScript.Compiler.DataControl do
alias FarmbotCeleryScript.Compiler
# compiles coordinate
# Coordinate should return a vec3
def coordinate(%{args: %{x: x, y: y, z: z}}, env) do
quote location: :keep do
FarmbotCeleryScript.SysCalls.coordinate(
unquote(Compiler.compile_ast(x, env)),
unquote(Compiler.compile_ast(y, env)),
unquote(Compiler.compile_ast(z, env))
)
end
end
# compiles point
def point(%{args: %{pointer_type: type, pointer_id: id}}, env) do
quote location: :keep do
FarmbotCeleryScript.SysCalls.point(
unquote(Compiler.compile_ast(type, env)),
unquote(Compiler.compile_ast(id, env))
)
end
end
# compile a named pin
def named_pin(%{args: %{pin_id: id, pin_type: type}}, env) do
quote location: :keep do
FarmbotCeleryScript.SysCalls.named_pin(
unquote(Compiler.compile_ast(type, env)),
unquote(Compiler.compile_ast(id, env))
)
end
end
def tool(%{args: %{tool_id: tool_id}}, env) do
quote location: :keep do
FarmbotCeleryScript.SysCalls.get_toolslot_for_tool(
unquote(Compiler.compile_ast(tool_id, env))
)
end
end
def resource_update(
%{
args: %{
resource_type: kind,
resource_id: id,
label: label,
value: value
},
body: body
},
env
) do
initial = %{label => value}
# Technically now body isn't supported by this node.
extra =
Map.new(body, fn %{args: %{label: label, data_value: value}} ->
{label, value}
end)
# Make sure the initial stuff higher most priority
params = Map.merge(extra, initial)
quote do
FarmbotCeleryScript.SysCalls.resource_update(
unquote(Compiler.compile_ast(kind, env)),
unquote(Compiler.compile_ast(id, env)),
unquote(Macro.escape(params))
)
end
end
end

View File

@ -4,7 +4,7 @@ defmodule FarmbotCeleryScript.Corpus.NodeTest do
test "inspect" do test "inspect" do
a = a =
"Sequence(version, locals) [calibrate, change_ownership, check_updates, emergency_lock, emergency_unlock, execute, execute_script, factory_reset, find_home, flash_firmware, home, install_farmware, install_first_party_farmware, _if, move_absolute, move_relative, power_off, read_pin, read_status, reboot, remove_farmware, update_resource, send_message, set_servo_angle, set_user_env, sync, take_photo, toggle_pin, update_farmware, wait, write_pin, zero]" "Sequence(version, locals) [assertion, calibrate, change_ownership, check_updates, emergency_lock, emergency_unlock, execute, execute_script, factory_reset, find_home, flash_firmware, home, install_farmware, install_first_party_farmware, _if, move_absolute, move_relative, power_off, read_pin, read_status, reboot, remove_farmware, update_resource, send_message, set_servo_angle, set_user_env, sync, take_photo, toggle_pin, update_farmware, wait, write_pin, zero]"
b = inspect(Corpus.sequence()) b = inspect(Corpus.sequence())
assert a == b assert a == b