17 std::span<const enums::ServiceArgType> arg_types)
const {
22#ifdef USE_API_USER_DEFINED_ACTION_METADATA
25 msg.
args.init(arg_types.size());
26 for (
size_t i = 0; i < arg_types.size(); i++) {
27 size_t base = USER_ACTION_HEADER_STRINGS + i * USER_ACTION_ARG_STRINGS;
28 auto &arg = msg.
args.emplace_back();
29 arg.type = arg_types[i];
30 arg.name = this->
str_(base);
31#ifdef USE_API_USER_DEFINED_ACTION_METADATA
32 arg.description = this->
str_(base + 1);
33 arg.example = this->
str_(base + 2);
35#ifdef USE_API_USER_DEFINED_ACTION_OPTIONAL_ARGS
38 arg.optional = d !=
nullptr;
59 std::vector<bool> result;
60 result.reserve(arg.bool_array.size());
61 result.insert(result.end(), arg.bool_array.begin(), arg.bool_array.end());
65 std::vector<int32_t> result;
66 result.reserve(arg.int_array.size());
67 result.insert(result.end(), arg.int_array.begin(), arg.int_array.end());
71 std::vector<float> result;
72 result.reserve(arg.float_array.size());
73 result.insert(result.end(), arg.float_array.begin(), arg.float_array.end());
77 std::vector<std::string> result;
78 result.reserve(arg.string_array.size());
79 result.insert(result.end(), arg.string_array.begin(), arg.string_array.end());
86 return arg.bool_array;
94 return arg.float_array;
99 return arg.string_array;
Fixed-capacity vector - sized once through init() or try_init(); push_back never reallocates This avo...
A string that may live in flash (on ESP8266): pointer and length, with no byte-reading operations.
StringRef is a reference to a string owned by something else.
ProgmemStringRef description
enums::SupportsResponseType supports_response
FixedVector< ListEntitiesServicesArgument > args
ListEntitiesServicesResponse encode_list_service_response_(std::span< const enums::ServiceArgType > arg_types) const
const char *const * strings_
ProgmemStringRef str_(size_t idx) const
Table entry idx as it sits in flash; nullptr gives an empty string.
enums::SupportsResponseType supports_response_
@ SERVICE_ARG_TYPE_INT_ARRAY
@ SERVICE_ARG_TYPE_BOOL_ARRAY
@ SERVICE_ARG_TYPE_STRING
@ SERVICE_ARG_TYPE_STRING_ARRAY
@ SERVICE_ARG_TYPE_FLOAT_ARRAY
float get_execute_arg_value< float >(const ExecuteServiceArgument &arg)
bool get_execute_arg_value< bool >(const ExecuteServiceArgument &arg)
int32_t get_execute_arg_value< int32_t >(const ExecuteServiceArgument &arg)
enums::ServiceArgType to_service_arg_type()
enums::ServiceArgType to_service_arg_type< StringRef >()
StringRef get_execute_arg_value< StringRef >(const ExecuteServiceArgument &arg)
enums::ServiceArgType to_service_arg_type< int32_t >()
enums::ServiceArgType to_service_arg_type< bool >()
enums::ServiceArgType to_service_arg_type< std::string >()
std::string get_execute_arg_value< std::string >(const ExecuteServiceArgument &arg)
T get_execute_arg_value(const ExecuteServiceArgument &arg)
enums::ServiceArgType to_service_arg_type< float >()
const char * progmem_read_ptr(const char *const *addr)