diff --git a/libraries/AP_Scripting/docs/docs.lua b/libraries/AP_Scripting/docs/docs.lua index 3ec0f073a76..67e9812074b 100644 --- a/libraries/AP_Scripting/docs/docs.lua +++ b/libraries/AP_Scripting/docs/docs.lua @@ -45,6 +45,11 @@ function micros() end ---@return number|nil -- command param 4 function mission_receive() end +-- Print text, if MAVLink is available the value will be sent with debug severity +-- If no MAVLink the value will be sent over can +-- equivalent to gcs:send_text(7, text) or periph:can_printf(text) +---@param text string|number|integer +function print(text) end -- data flash logging to SD card ---@class logger diff --git a/libraries/AP_Scripting/generator/description/bindings.desc b/libraries/AP_Scripting/generator/description/bindings.desc index 230b4c4453a..b47e877241c 100644 --- a/libraries/AP_Scripting/generator/description/bindings.desc +++ b/libraries/AP_Scripting/generator/description/bindings.desc @@ -760,6 +760,7 @@ userdata uint32_t manual tofloat uint32_t_tofloat 0 global manual dirlist lua_dirlist 1 global manual remove lua_removefile 1 +global manual print lua_print 1 singleton mavlink depends HAL_GCS_ENABLED singleton mavlink manual init lua_mavlink_init 2 diff --git a/libraries/AP_Scripting/lua_bindings.cpp b/libraries/AP_Scripting/lua_bindings.cpp index d734e9f13ca..51d6e519c8e 100644 --- a/libraries/AP_Scripting/lua_bindings.cpp +++ b/libraries/AP_Scripting/lua_bindings.cpp @@ -759,4 +759,14 @@ int lua_get_current_ref() return scripting->get_current_ref(); } +// Simple print to GCS or over CAN +int lua_print(lua_State *L) { + // Only support a single argument + binding_argcheck(L, 1); + + GCS_SEND_TEXT(MAV_SEVERITY_DEBUG, "%s", luaL_checkstring(L, 1)); + + return 0; +} + #endif // AP_SCRIPTING_ENABLED diff --git a/libraries/AP_Scripting/lua_bindings.h b/libraries/AP_Scripting/lua_bindings.h index 07b5403ec32..8eef08bca35 100644 --- a/libraries/AP_Scripting/lua_bindings.h +++ b/libraries/AP_Scripting/lua_bindings.h @@ -19,3 +19,4 @@ int lua_mavlink_receive_chan(lua_State *L); int lua_mavlink_register_rx_msgid(lua_State *L); int lua_mavlink_send_chan(lua_State *L); int lua_mavlink_block_command(lua_State *L); +int lua_print(lua_State *L);