Line data Source code
1 : #pragma once 2 : 3 : #include <AP_RCTelemetry/AP_CRSF_Telem.h> 4 : #include "lua/src/lua.hpp" 5 : 6 : #if AP_CRSF_SCRIPTING_ENABLED 7 : 8 : int lua_CRSF_new_menu(lua_State *L); 9 : int lua_CRSF_get_menu_event(lua_State *L); 10 : int lua_CRSF_peek_menu_event(lua_State *L); 11 : int lua_CRSF_send_response(lua_State *L); 12 : int lua_CRSF_add_parameter(lua_State *L); 13 : int lua_CRSF_add_menu(lua_State *L); 14 : int lua_CRSF_add_root_menu(lua_State *L); 15 : int lua_CRSF_param_data(lua_State *L); 16 : 17 : // wrappers to underlying CRSF menu and parameter types that mean the 18 : // underlying data is always the actual data rather than a copy 19 : class CRSFParameter { 20 : public: 21 0 : CRSFParameter() {} 22 0 : CRSFParameter(AP_CRSF_Telem::ScriptedMenu* m, AP_CRSF_Telem::ScriptedParameter* p) : menu(m), param(p->AP_CRSF_Telem::ScriptedParameter::id) {} 23 : 24 0 : uint8_t id() const { return param; } 25 : // parameter reallocation means that the pointer could change, so index via the menu 26 0 : AP_CRSF_Telem::ScriptedParameter* get_parameter() { return menu->find_parameter(param); } 27 : 28 : private: 29 : AP_CRSF_Telem::ScriptedMenu* menu; 30 : uint8_t param; 31 : }; 32 : 33 : class CRSFMenu { 34 : public: 35 0 : CRSFMenu() {} 36 0 : CRSFMenu(AP_CRSF_Telem::ScriptedMenu* m) : menu(m) {} 37 : 38 0 : uint8_t id() const { return menu->id; } 39 0 : const char* name() const { return menu->name; } 40 0 : uint8_t num_params() const { return menu->num_params; } 41 0 : AP_CRSF_Telem::ScriptedMenu* get_menu() const { return menu; } 42 : AP_CRSF_Telem::ScriptedParameter* add_parameter(uint8_t length, const char* data); 43 : AP_CRSF_Telem::ScriptedMenu* add_menu(const char* menu_name); 44 : 45 : 46 : private: 47 : AP_CRSF_Telem::ScriptedMenu* menu; 48 : }; 49 : 50 : #endif // AP_CRSF_SCRIPTING_ENABLED