12 const std::string& dflt_lang)
14 if (by_lang.empty())
return {};
15 auto it = by_lang.find(dflt_lang);
16 if (it != by_lang.end())
return it->second;
17 return by_lang.begin()->second;
23 if (!mf)
return false;
25 std::string
name = id;
27 if (
auto it = mf->i18n_meta.find(
"name"); it != mf->i18n_meta.end()) {
30 if (
auto it = mf->i18n_meta.find(
"description"); it != mf->i18n_meta.end()) {
37 wasm_bytes =
static_cast<long>(st.st_size);
40 EXT_RAM_BSS_ATTR
static char buf[512];
41 std::snprintf(buf,
sizeof(buf),
42 "%s\n\nVersion: %s\nAuthor: %s\nAPI: %s\nMemory: %u KB\nWASM: %ld B\n\n%s",
46 mf->host_api_level_min.c_str(),
47 static_cast<unsigned>(mf->linear_memory_kb),
Read-only summary of an installed plugin (manifest + size + SHA256).
Discovers, loads, runs and unloads WASM plugins on the badge.
Mounts the FAT-FS partition that holds plugin .wasm + .meta files.
char name[cdc::hal::ISecureElement::RMEM_NAME_LEN]
bool loadForPluginId(const std::string &id)
static PluginManager & instance() noexcept
std::optional< PluginManifest > getManifest(const std::string &id) const
static std::string wasmPath(const std::string &id)
Returns the full VFS path of <id>.wasm.
void init(const char *title, const char *text)
static std::string default_lang_value(const std::map< std::string, std::string > &by_lang, const std::string &dflt_lang)