From e94703e7dd698516a5a4f0c270183be6625c49f1 Mon Sep 17 00:00:00 2001 From: Peter Hall <33176108+IamPete1@users.noreply.github.com> Date: Mon, 23 Oct 2023 21:24:06 +0100 Subject: [PATCH] Generator: Lua: allow strings --- generator/mavgen_lua.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/generator/mavgen_lua.py b/generator/mavgen_lua.py index ae07c72dc..d563de8b5 100644 --- a/generator/mavgen_lua.py +++ b/generator/mavgen_lua.py @@ -56,7 +56,10 @@ def generate(basename, xml): mavlink_msg_file.write("%s.fields = {\n" % m.name) for i in range(0, len(m.ordered_fields)): field = m.ordered_fields[i] - if (field.array_length > 0): + if ((field.type == 'char') and (field.array_length > 0)): + # Convert char array to lua string + mavlink_msg_file.write(" { \"%s\", \" 0): mavlink_msg_file.write(" { \"%s\", \"<%s\", %s },\n" % (field.name, unpack_types.get(field.type), field.array_length)) else: mavlink_msg_file.write(" { \"%s\", \"<%s\" },\n" % (field.name, unpack_types.get(field.type))) @@ -122,6 +125,11 @@ def generate(basename, xml): end else result[v[1]], offset = string.unpack(v[2], message, offset) + if string.sub(v[2],2,2) == 'c' then + -- Got string, unpack includes 0 values to the set length + -- this is annoying, so remove them + result[v[1]] = string.gsub(result[v[1]], "\0", "") + end end end