18#include "wasm_export.h"
33#define W(name, fn, sig) { name, (void*)fn, sig, nullptr }
42static inline bool wbuf_ok(wasm_exec_env_t env,
const void* ptr,
size_t len)
44 if (len == 0)
return true;
45 wasm_module_inst_t inst = wasm_runtime_get_module_inst(env);
46 return ptr && wasm_runtime_validate_native_addr(inst,
const_cast<void*
>(ptr),
47 static_cast<uint64_t
>(len));
52static void w_host_log(wasm_exec_env_t, uint32_t level,
const char* tag,
const char* msg)
53{
host_log(
static_cast<uint8_t
>(level), tag, msg); }
89int translate_and_call(wasm_exec_env_t exec_env,
const char* title,
const ui_item_t* items,
90 uint32_t count, uint32_t sel, uint32_t menu,
bool replace)
92 if (count == 0 || !items) {
96 wasm_module_inst_t inst = wasm_runtime_get_module_inst(exec_env);
98 if (!wasm_runtime_validate_native_addr(inst,
const_cast<ui_item_t*
>(items),
99 static_cast<uint64_t
>(count) *
sizeof(
ui_item_t)))
103 for (uint32_t i = 0; i < count; ++i) {
104 native[i] = items[i];
105 uint32_t off =
static_cast<uint32_t
>(
reinterpret_cast<uintptr_t
>(items[i].
label));
106 if (off != 0 && wasm_runtime_validate_app_str_addr(inst, off)) {
107 native[i].label =
static_cast<const char*
>(wasm_runtime_addr_app_to_native(inst, off));
109 native[i].label =
"";
112 return replace ?
host_ui_replace_list(title, native.get(),
static_cast<uint16_t
>(count), sel, menu)
113 :
host_ui_push_list (title, native.get(), static_cast<uint16_t>(count), sel, menu);
118 uint32_t count, uint32_t sel, uint32_t menu)
120 return translate_and_call(exec_env, title, items, count, sel, menu,
false);
124 uint32_t count, uint32_t sel, uint32_t menu)
126 return translate_and_call(exec_env, title, items, count, sel, menu,
true);
140 uint32_t show_action_id)
149 wasm_module_inst_t inst = wasm_runtime_get_module_inst(exec_env);
150 if (!wasm_runtime_validate_native_addr(inst,
const_cast<ui_item_t*
>(item),
sizeof(
ui_item_t)))
153 uint32_t off =
static_cast<uint32_t
>(
reinterpret_cast<uintptr_t
>(item->
label));
154 if (off != 0 && wasm_runtime_validate_app_str_addr(inst, off)) {
155 native.
label =
static_cast<const char*
>(wasm_runtime_addr_app_to_native(inst, off));
166 wasm_module_inst_t inst = wasm_runtime_get_module_inst(exec_env);
167 if (!wasm_runtime_validate_native_addr(inst,
const_cast<ui_item_t*
>(item),
sizeof(
ui_item_t)))
170 uint32_t off =
static_cast<uint32_t
>(
reinterpret_cast<uintptr_t
>(item->
label));
171 if (off != 0 && wasm_runtime_validate_app_str_addr(inst, off)) {
172 native.
label =
static_cast<const char*
>(wasm_runtime_addr_app_to_native(inst, off));
185 const ui_item_t* items, uint32_t count, uint32_t sel)
188 wasm_module_inst_t inst = wasm_runtime_get_module_inst(exec_env);
191 if (!wasm_runtime_validate_native_addr(inst,
const_cast<ui_item_t*
>(items),
192 static_cast<uint64_t
>(count) *
sizeof(
ui_item_t)))
195 for (uint32_t i = 0; i < count; ++i) {
196 native[i] = items[i];
197 uint32_t off =
static_cast<uint32_t
>(
reinterpret_cast<uintptr_t
>(items[i].
label));
198 if (off != 0 && wasm_runtime_validate_app_str_addr(inst, off)) {
199 native[i].
label =
static_cast<const char*
>(wasm_runtime_addr_app_to_native(inst, off));
201 native[i].
label =
"";
210static int32_t
w_host_ui_wink(wasm_exec_env_t, uint32_t count, uint32_t period_ms)
211{
return host_ui_wink(
static_cast<uint8_t
>(count),
static_cast<uint16_t
>(period_ms)); }
214 uint32_t max_len, uint32_t action_id)
218 uint32_t max_len, uint32_t action_id)
222 uint32_t max_attempts, uint32_t action_id)
224 static_cast<uint8_t
>(max_attempts), action_id); }
227 int32_t init, int32_t step,
const char* unit, uint32_t action_id)
231 uint32_t b, uint32_t action_id)
233 static_cast<uint8_t
>(b), action_id); }
247 uint32_t key_action_id, uint32_t widget_action_id)
252 if (!
wbuf_ok(exec_env, w,
sizeof(uint16_t)) || !
wbuf_ok(exec_env, h,
sizeof(uint16_t)))
276 const uint8_t* candidates, uint32_t count,
277 uint8_t* out_font_id)
280 candidates, count, out_font_id);
287 int32_t w,
const char* text, uint32_t align)
289 static_cast<int16_t
>(w), text,
290 static_cast<uint8_t
>(align)); }
293 int32_t w, int32_t h, uint32_t filled)
295 static_cast<int16_t
>(w),
static_cast<int16_t
>(h),
302 int32_t x1, int32_t y1)
304 static_cast<int16_t
>(x1),
static_cast<int16_t
>(y1)); }
307 int32_t r, uint32_t filled)
309 static_cast<int16_t
>(r), filled != 0); }
312 int32_t x1, int32_t y1,
313 int32_t x2, int32_t y2, uint32_t filled)
315 static_cast<int16_t
>(x1),
static_cast<int16_t
>(y1),
316 static_cast<int16_t
>(x2),
static_cast<int16_t
>(y2),
320 int32_t w, int32_t h, int32_t r,
323 static_cast<int16_t
>(w),
static_cast<int16_t
>(h),
324 static_cast<int16_t
>(r), filled != 0); }
327 int32_t w, int32_t h,
328 const uint8_t* data, uint32_t len)
332 static_cast<int16_t
>(w),
static_cast<int16_t
>(h),
341 static_cast<int16_t
>(w)); }
345 static_cast<int16_t
>(h)); }
357 int32_t ox, int32_t oy)
359 static_cast<int16_t
>(oy)); }
362 int32_t dx, int32_t dy)
364 static_cast<int16_t
>(dy)); }
380 int16_t* ox, int16_t* oy)
382 if (!
wbuf_ok(exec_env, ox,
sizeof(int16_t)) || !
wbuf_ok(exec_env, oy,
sizeof(int16_t))) {
389 int16_t* x, int16_t* y,
390 uint16_t* w, uint16_t* h)
392 if (!
wbuf_ok(exec_env, x,
sizeof(int16_t)) || !
wbuf_ok(exec_env, y,
sizeof(int16_t))
393 || !
wbuf_ok(exec_env, w,
sizeof(uint16_t)) || !
wbuf_ok(exec_env, h,
sizeof(uint16_t))) {
401 static_cast<uint8_t
>(max_fps)); }
408 const uint8_t* data, uint32_t len)
410 static_cast<uint16_t
>(frames), data, len); }
413 uint32_t h, uint32_t frames)
415 static_cast<uint16_t
>(h),
static_cast<uint16_t
>(frames)); }
428 uint32_t target_w, uint32_t frame_h)
430 static_cast<uint16_t
>(frame_h)); }
436 const char* text, uint32_t step_px, uint32_t frame_ms)
438 static_cast<int16_t
>(window_w), text,
439 static_cast<uint16_t
>(step_px),
static_cast<uint16_t
>(frame_ms)); }
451 const uint16_t* ms, uint32_t count)
454 && !
wbuf_ok(exec_env, ms,
static_cast<uint64_t
>(count) *
sizeof(uint16_t))) {
461 uint32_t frame_ms, uint32_t repeat, uint32_t done_aid)
462{
return host_sprite_play(sprite,
static_cast<uint8_t
>(mode),
static_cast<uint16_t
>(frame_ms),
463 static_cast<uint16_t
>(repeat), done_aid); }
491 uint32_t count, uint32_t done_aid)
493 static_cast<uint16_t
>(count), done_aid); }
496 int32_t min, int32_t max, int32_t initial, int32_t step)
500 uint32_t max_len,
const char* initial)
522 char* out, uint32_t cap)
536 static_cast<uint16_t
>(repeat_ms)); }
552 size_t len = buf_size;
554 return rc ==
HOST_OK ?
static_cast<int32_t
>(len) : rc;
584 size_t len = buf_size;
586 return rc ==
HOST_OK ?
static_cast<int32_t
>(len) : rc;
595 return rc ==
HOST_OK ?
static_cast<int32_t
>(sz) : rc;
600 size_t len = out_size;
602 return rc ==
HOST_OK ?
static_cast<int32_t
>(len) : rc;
619static int32_t
w_host_sha256(wasm_exec_env_t exec_env,
const uint8_t* data, uint32_t len, uint8_t* out)
626 const uint8_t* data, uint32_t dlen, uint8_t* out)
632static int32_t
w_host_base32_encode(wasm_exec_env_t,
const uint8_t* in, uint32_t in_len,
char* out, uint32_t out_size)
635static int32_t
w_host_base32_decode(wasm_exec_env_t,
const char* in, uint32_t in_len, uint8_t* out, uint32_t out_size)
638static int32_t
w_host_hex_encode(wasm_exec_env_t,
const uint8_t* in, uint32_t in_len,
char* out, uint32_t out_size)
643static int32_t
w_host_http_open(wasm_exec_env_t, uint32_t method,
const char* url, uint32_t timeout)
644{
return host_http_open(
static_cast<uint8_t
>(method), url, timeout); }
660 return rc ==
HOST_OK ?
static_cast<int32_t
>(out_len) : rc;
666 uint32_t port, uint32_t timeout)
668 static_cast<uint16_t
>(port), timeout); }
671 uint32_t len, uint32_t timeout)
675 uint32_t cap, uint32_t timeout)
703 uint8_t* buf, uint32_t buf_size)
705 size_t len = buf_size;
707 return rc ==
HOST_OK ?
static_cast<int32_t
>(len) : rc;
711 const uint8_t* buf, uint32_t len)
739static int32_t
w_host_ecdsa_sign(wasm_exec_env_t exec_env,
const char*
name,
const uint8_t* msg, uint32_t len, uint8_t* sig)
744static int32_t
w_host_eddsa_sign(wasm_exec_env_t exec_env,
const char*
name,
const uint8_t* msg, uint32_t len, uint8_t* sig)
769 if (rc ==
HOST_OK) *out = level ? 1 : 0;
775{
return host_gpio_pwm_start(
static_cast<uint8_t
>(pin), freq,
static_cast<uint16_t
>(duty)); }
782 uint32_t m, uint32_t y, uint32_t action_id)
783{
return host_ui_push_date(title,
static_cast<uint8_t
>(d),
static_cast<uint8_t
>(m),
784 static_cast<uint16_t
>(y), action_id); }
787 uint32_t m, uint32_t action_id)
788{
return host_ui_push_time(title,
static_cast<uint8_t
>(h),
static_cast<uint8_t
>(m), action_id); }
794 uint32_t out_size, uint32_t target)
817 char* mime_out, uint32_t mime_size)
820 const uint8_t* data, uint32_t len, uint32_t
flags)
822static int32_t
w_host_msg_send(wasm_exec_env_t exec_env,
const uint8_t* addr, uint32_t addr_type,
823 const char* mime,
const uint8_t* data, uint32_t len, uint32_t
flags)
850 uint32_t max_version, uint32_t ecc, uint16_t* out_modules)
854 static_cast<uint8_t
>(ecc), out_modules);
857 uint32_t max_version, uint32_t ecc,
858 uint32_t scale, uint32_t quiet,
859 uint8_t* out, uint32_t out_size,
860 uint16_t* stride_out, uint16_t* height_out)
862 if (!
wbuf_ok(exec_env, stride_out,
sizeof(uint16_t)) ||
863 !
wbuf_ok(exec_env, height_out,
sizeof(uint16_t))) {
867 static_cast<uint8_t
>(ecc),
static_cast<uint8_t
>(scale),
868 static_cast<uint8_t
>(quiet), out, out_size,
869 stride_out, height_out);
874 uint16_t* out_w, uint16_t* out_h)
876 if (!
wbuf_ok(exec_env, out_w,
sizeof(uint16_t)) ||
877 !
wbuf_ok(exec_env, out_h,
sizeof(uint16_t))) {
883 uint32_t target_w, uint8_t* out, uint32_t out_size,
884 uint16_t* stride_out, uint16_t* height_out)
886 if (!
wbuf_ok(exec_env, stride_out,
sizeof(uint16_t)) ||
887 !
wbuf_ok(exec_env, height_out,
sizeof(uint16_t))) {
891 out, out_size, stride_out, height_out);
913 int32_t y, int32_t w,
const char* text,
916 static_cast<int16_t
>(w), text,
917 static_cast<uint8_t
>(align)); }
919 const char* text, uint16_t* out_w, uint16_t* out_h)
921 if (!
wbuf_ok(exec_env, out_w,
sizeof(uint16_t)) ||
922 !
wbuf_ok(exec_env, out_h,
sizeof(uint16_t))) {
930 int32_t x1, int32_t y1)
932 static_cast<int16_t
>(x1),
static_cast<int16_t
>(y1)); }
934 int32_t w, int32_t h, uint32_t filled)
936 static_cast<int16_t
>(w),
static_cast<int16_t
>(h),
937 static_cast<uint8_t
>(filled)); }
939 int32_t r, uint32_t filled)
941 static_cast<int16_t
>(r),
static_cast<uint8_t
>(filled)); }
943 int32_t x1, int32_t y1, int32_t x2, int32_t y2,
946 static_cast<int16_t
>(x1),
static_cast<int16_t
>(y1),
947 static_cast<int16_t
>(x2),
static_cast<int16_t
>(y2),
948 static_cast<uint8_t
>(filled)); }
950 int32_t w, int32_t h, int32_t r, uint32_t filled)
952 static_cast<int16_t
>(w),
static_cast<int16_t
>(h),
953 static_cast<int16_t
>(r),
static_cast<uint8_t
>(filled)); }
956 static_cast<int16_t
>(w)); }
959 static_cast<int16_t
>(h)); }
961 int32_t w, int32_t h,
const uint8_t* data, uint32_t len)
963 static_cast<int16_t
>(w),
static_cast<int16_t
>(h), data, len); }
965 uint32_t out_size, uint16_t* stride_out)
971 uint8_t* out, uint32_t out_size, uint32_t* len_out)
984 const uint8_t* data, uint32_t len, uint32_t status_aid)
990 char* feature_out, uint32_t feature_size)
1004 static_cast<uint16_t
>(num),
1005 static_cast<uint8_t
>(format)); }
1008 uint32_t r, uint32_t g, uint32_t b)
1010 static_cast<uint8_t
>(r),
1011 static_cast<uint8_t
>(g),
1012 static_cast<uint8_t
>(b)); }
1015 static_cast<uint8_t
>(g),
1016 static_cast<uint8_t
>(b)); }
1025 const char* label_key,
1033 uint32_t icon, uint32_t action_id)
1040static int32_t
w_host_base64_encode(wasm_exec_env_t,
const uint8_t* in, uint32_t in_len,
char* out, uint32_t out_size)
1042static int32_t
w_host_base64_decode(wasm_exec_env_t,
const char* in, uint32_t in_len, uint8_t* out, uint32_t out_size)
1044static int32_t
w_host_hex_decode(wasm_exec_env_t,
const char* in, uint32_t in_len, uint8_t* out, uint32_t out_size)
1047 const uint8_t* aad, uint32_t aad_len,
1048 const uint8_t* pt, uint32_t pt_len, uint8_t* ct, uint8_t* tag)
1056 const uint8_t* aad, uint32_t aad_len,
1057 const uint8_t* ct, uint32_t ct_len,
const uint8_t* tag, uint8_t* pt)
1074 const uint8_t* data, uint32_t len)
1081 size_t len = *out_len;
1084 *out_len =
static_cast<uint32_t
>(len);
1099 size_t cap = c > 32 ? 32 : c;
1102 *count =
static_cast<uint32_t
>(c);
1110static int32_t
w_host_adc_read(wasm_exec_env_t exec_env, uint32_t pin, uint16_t* raw, uint16_t* mv)
1112 if (!
wbuf_ok(exec_env, raw,
sizeof(uint16_t)) || !
wbuf_ok(exec_env, mv,
sizeof(uint16_t)))
1117static int32_t
w_host_i2c_write(wasm_exec_env_t, uint32_t bus, uint32_t addr,
const uint8_t* data, uint32_t len)
1118{
return host_i2c_write(
static_cast<uint8_t
>(bus),
static_cast<uint8_t
>(addr), data, len); }
1119static int32_t
w_host_i2c_read(wasm_exec_env_t, uint32_t bus, uint32_t addr, uint8_t* data, uint32_t len)
1120{
return host_i2c_read(
static_cast<uint8_t
>(bus),
static_cast<uint8_t
>(addr), data, len); }
1122 const uint8_t* wr, uint32_t wr_len, uint8_t* rd, uint32_t rd_len)
1123{
return host_i2c_write_read(
static_cast<uint8_t
>(bus),
static_cast<uint8_t
>(addr), wr, wr_len, rd, rd_len); }
1124static int32_t
w_host_i2c_scan(wasm_exec_env_t exec_env, uint32_t bus, uint8_t* found, uint32_t* count)
1128 size_t cap = c > 112 ? 112 : c;
1130 int rc =
host_i2c_scan(
static_cast<uint8_t
>(bus), found, &c);
1131 *count =
static_cast<uint32_t
>(c);
1151 size_t cap = l > 16 ? 16 : l;
1154 *len =
static_cast<uint32_t
>(l);
1169{
return host_display_draw_pixel(
static_cast<int16_t
>(x),
static_cast<int16_t
>(y),
static_cast<uint16_t
>(color)); }
1172 static_cast<int16_t
>(x1),
static_cast<int16_t
>(y1),
static_cast<uint16_t
>(color)); }
1175 static_cast<int16_t
>(w),
static_cast<int16_t
>(h),
static_cast<uint16_t
>(color)); }
1178 static_cast<int16_t
>(w),
static_cast<int16_t
>(h),
static_cast<uint16_t
>(color)); }
1181 static_cast<uint8_t
>(size),
static_cast<uint16_t
>(color)); }
1204 size_t nchars = num > 6 ? 6 : num;
1225 size_t cap = c > 32 ? 32 : c;
1228 *count =
static_cast<uint32_t
>(c);
1241 size_t cap = c > 8 ? 8 : c;
1244 *count =
static_cast<uint32_t
>(c);
1252 const uint8_t* data, uint32_t len, uint32_t wr)
1253{
return host_ble_write_char(conn,
static_cast<uint16_t
>(vh), data, len,
static_cast<uint8_t
>(wr)); }
1619 plg_log_error(
"WAMR: PSRAM alloc for host symbol table failed");
1624 if (!wasm_runtime_register_natives(
"cdc",
s_symbols_ram.get(), n)) {
1629 std::snprintf(buf,
sizeof(buf),
"WAMR: %u host imports registered",
static_cast<unsigned>(n));
void plg_log_error(const char *msg)
void plg_log_info(const char *msg)
char name[cdc::hal::ISecureElement::RMEM_NAME_LEN]
void plg_log_warn(const char *msg)
void plg_log_error(const char *msg)
void plg_log_info(const char *msg)
Registers the host API as WAMR native imports under module "cdc".
Shared RAII wrappers for firmware resources.
static constexpr uint16_t MAX_ITEMS
int host_ble_consume_write(uint32_t char_handle, uint8_t *buf, size_t buf_size)
Pull the next queued inbound write for char_handle.
int host_ble_scan_start(uint32_t duration_ms)
Start a central scan for duration_ms milliseconds.
int host_ble_connect(const uint8_t addr[6], uint8_t addr_type)
Connect to a peer. Completion arrives as a BLE_CONNECTED event; read the resulting handle with host_b...
int host_ble_subscribe(uint32_t conn, uint16_t cccd_handle, uint32_t action_id)
Subscribe to notifications on a peer characteristic (by CCCD handle). Each notification fires action_...
int host_ble_send_notification(uint32_t char_handle, const uint8_t *data, size_t len)
Notify subscribers of a value on one of the plugin's characteristics.
int host_ble_discover(uint32_t conn, const uint8_t uuid[16], uint32_t action_id)
Discover the characteristics of one service on a connected peer. Completion fires action_id; read ent...
bool host_ble_scan_done(void)
True when the scan started by host_ble_scan_start() has finished.
int host_ble_read_char(uint32_t conn, uint16_t value_handle, uint32_t action_id)
Start reading a peer characteristic by value handle. Completion fires action_id; read the value with ...
int host_ble_disconnect(uint32_t conn)
Disconnect a connection.
uint16_t host_ble_get_mtu(uint32_t conn)
Usable ATT payload of the current connection (negotiated MTU - 3).
int host_ble_device_name(char *out, size_t out_size)
Copy the local BLE device name into out.
int8_t host_ble_rssi(void)
Signal strength of the active BLE link in dBm, or 0 when idle.
int host_ble_unregister_service(uint32_t service_handle)
Tear down the plugin's registered GATT service.
int host_ble_scan_results(ble_scan_result_t *out, size_t *count)
Read results from the last central scan.
int host_ble_on_write_complete(uint32_t action_id)
Register an action fired on every completed central write.
int host_ble_send_indication(uint32_t char_handle, const uint8_t *data, size_t len)
Indicate (acknowledged notify) a value on a plugin characteristic.
bool host_ble_is_enabled(void)
True when the BLE stack is initialised and advertising or connectable.
int host_ble_consume_notification(uint16_t *value_handle_out, uint8_t *buf, size_t buf_size)
Pull the next queued inbound notification.
int host_ble_subscribe_char(uint32_t conn, uint16_t value_handle, uint32_t action_id)
Subscribe to notifications on a peer characteristic by VALUE handle.
int host_ble_register_service(ble_service_def_t *def, ble_char_def_t *chars, uint32_t num_chars)
Register the plugin's GATT service and its characteristics.
int host_ble_write_char(uint32_t conn, uint16_t value_handle, const uint8_t *data, size_t len, uint8_t with_response)
Write a value to a peer characteristic by value handle.
int host_ble_consume_discovery(ble_remote_char_t *out, size_t *count)
Pull discovered characteristics after a discovery action fires.
int host_ble_mac(uint8_t out[6])
Read the local BLE MAC address.
int host_ble_consume_read(uint8_t *buf, size_t buf_size)
Pull the value delivered by the last read action.
uint32_t host_ble_conn_handle(void)
Current connection handle (central or peripheral), or 0 when idle.
int host_anim_pause(uint32_t handle, bool paused)
Pause (paused != 0) or resume a tween; delay time freezes too.
int host_anim_blink(uint32_t elem_id, uint16_t period_ms, uint16_t count, uint32_t done_action_id)
Convenience: blink an element.
int host_anim_active_count(void)
Number of live tweens plus playing sprites (>= 0).
int host_anim_start(const host_anim_t *cfg)
Start (or queue, when start_after != 0) a tween on an element.
int host_anim_cancel(uint32_t handle)
Cancel a tween and its chained successors; handle 0 cancels all of the canvas's tweens....
int host_anim_state(uint32_t handle)
Query a tween's state.
int host_cmd_consume(char *out, size_t out_size)
Copy the pending command string into out, clearing it.
int host_hex_encode(const uint8_t *in, size_t in_len, char *out, size_t out_size)
Lowercase-hex-encode in into NUL-terminated out.
int host_random_strict(uint8_t *buf, size_t len)
Fill buf with hardware-RNG bytes only; fails without TRNG.
int host_base64_decode(const char *in, size_t in_len, uint8_t *out, size_t out_size)
Base64-decode in into raw bytes in out.
int host_base32_encode(const uint8_t *in, size_t in_len, char *out, size_t out_size)
Base32-encode in into NUL-terminated out.
int host_random(uint8_t *buf, size_t len)
Fill buf with hardware-RNG bytes; may fall back to PRNG.
int host_aes_gcm_decrypt(const uint8_t *key, const uint8_t *iv, const uint8_t *aad, size_t aad_len, const uint8_t *ct, size_t ct_len, const uint8_t tag[16], uint8_t *pt)
AES-256-GCM decrypt and verify.
int host_base64_encode(const uint8_t *in, size_t in_len, char *out, size_t out_size)
Base64-encode in into NUL-terminated out.
int host_aes_gcm_encrypt(const uint8_t *key, const uint8_t *iv, const uint8_t *aad, size_t aad_len, const uint8_t *pt, size_t pt_len, uint8_t *ct, uint8_t tag[16])
AES-256-GCM encrypt.
int host_sha256(const uint8_t *data, size_t len, uint8_t out[32])
SHA-256 hash of data into the 32-byte out.
int host_hmac_sha256(const uint8_t *key, size_t klen, const uint8_t *data, size_t dlen, uint8_t out[32])
HMAC-SHA-256 of data under key into the 32-byte out.
int host_base32_decode(const char *in, size_t in_len, uint8_t *out, size_t out_size)
Base32-decode in into raw bytes in out.
int host_hex_decode(const char *in, size_t in_len, uint8_t *out, size_t out_size)
Hex-decode in (case-insensitive) into raw bytes in out.
int host_event_publish(uint32_t module_event_subtype, uint32_t value)
Publish an EVENT_MODULE_EVENT carrying subtype and value.
int host_event_unsubscribe(uint32_t subscription_id)
Cancel a subscription returned by host_event_subscribe.
int host_event_subscribe(uint32_t event_mask, uint32_t action_id)
Subscribe to one or more events.
int host_ext_feature_register_handler(const char *feature, uint32_t action_id)
Register this plugin as the live handler for a feature it provides.
int host_ext_feature_result(int32_t status_code)
Report the outcome of the job this provider is currently handling.
int host_ext_feature_use(const char *feature, const uint8_t *data, size_t len, uint32_t status_action_id)
Invoke feature with a payload; the provider runs in the foreground.
int host_ext_feature_consume(uint8_t *buf, size_t buf_size, char *feature_out, size_t feature_size)
Pull the payload of the job that fired the current handler action.
int host_ext_feature_available(const char *feature)
Check whether an installed plugin provides feature.
int host_i2c_write(uint8_t bus, uint8_t addr, const uint8_t *data, size_t len)
I2C write transaction.
int host_adc_read(uint8_t pin, uint16_t *raw, uint16_t *millivolt)
Single-shot ADC read.
int host_i2c_scan(uint8_t bus, uint8_t *found_addrs, size_t *count)
Scan the I2C bus for responding addresses.
int host_gpio_write(uint8_t pin, bool level)
Drive a digital output high/low.
int host_gpio_set_direction(uint8_t pin, uint8_t direction)
Configure pin direction (one of GPIO_DIR_*).
int host_gpio_set_pull(uint8_t pin, uint8_t pull)
Configure internal pull resistor (one of GPIO_PULL_*).
int host_sao_eeprom_write(uint16_t offset, const uint8_t *buf, size_t len)
Write to the SAO addon EEPROM at byte offset.
int host_gpio_pwm_start(uint8_t pin, uint32_t freq_hz, uint16_t duty_per_mille)
Start LEDC PWM on pin.
int host_gpio_read(uint8_t pin, bool *level)
Sample a digital input.
int host_i2c_write_read(uint8_t bus, uint8_t addr, const uint8_t *wr, size_t wr_len, uint8_t *rd, size_t rd_len)
I2C write-then-read transaction with repeated start.
int host_gpio_pwm_set_duty(uint8_t pin, uint16_t duty_per_mille)
Update PWM duty without restarting the timer.
int host_gpio_release(uint8_t pin)
Release the pin claim so other plugins can use it.
int host_gpio_pwm_stop(uint8_t pin)
Stop PWM and release the LEDC channel.
int host_sao_eeprom_read(uint16_t offset, uint8_t *buf, size_t len)
Read from the SAO addon EEPROM at byte offset.
int host_i2c_read(uint8_t bus, uint8_t addr, uint8_t *data, size_t len)
I2C read transaction.
int host_http_close(int handle)
Release a request handle.
int host_http_read_chunk(int handle, uint8_t *buf, size_t buf_size, size_t *out_len)
Stream one response chunk into buf.
int host_http_set_body(int handle, const uint8_t *body, size_t len)
Stage a request body before perform().
int host_http_status(int handle)
HTTP response status code, or negative on error.
int host_http_perform(int handle)
Send the request and read response headers.
size_t host_http_content_length(int handle)
Response Content-Length, or 0 when unknown / chunked.
int host_http_set_header(int handle, const char *key, const char *value)
Add a request header before perform().
int host_http_open(uint8_t method, const char *url, uint32_t timeout_ms)
Open an HTTP request.
uint8_t host_i18n_current_language(void)
Active language code (HOST_LANG_*).
int host_i18n_tr_core(const char *key, char *out, uint32_t out_cap)
Translate a core.* key from the firmware string table.
int host_i18n_tr_meta(const char *field, char *out, uint32_t out_cap)
Read a metadata field (name, description, ...) from the plugin manifest.
int host_i18n_tr_key(const char *key, char *out, uint32_t out_cap)
Translate a plugin-local key into the current language.
int host_image_info(const uint8_t *data, size_t len, uint16_t *out_w, uint16_t *out_h)
Decode only the image header to get its dimensions.
int host_image_render(const uint8_t *data, size_t len, uint16_t target_w, uint8_t *out, size_t out_size, uint16_t *out_stride_bytes, uint16_t *out_height_px)
Decode, scale to target_w (aspect preserved) and dither to 1-bpp.
int host_key_consume_next(uint8_t *out_key)
Pop the next queued key press, if any.
bool host_key_pressed(uint8_t key)
True while key is currently held down.
int host_set_resident(bool resident)
Request (true) or drop (false) background residency. Needs the background or autoload capability to h...
int host_lockscreen_alert(const char *text, uint8_t icon, uint32_t action_id)
Raise a persistent Y/N alert over whatever is on screen, lock screen included, that stays until the u...
int host_lockscreen_register_action(const char *label_key, uint32_t action_id)
Publish (or replace) the plugin's lockscreen quick-action.
int host_lockscreen_unregister_action(void)
Remove the plugin's lockscreen quick-action.
void host_log_hex(const char *tag, const char *label, const uint8_t *data, size_t len)
Write a labelled hex dump of a binary buffer at debug level.
void host_log(uint8_t level, const char *tag, const char *msg)
Write a single log line at the given level.
int host_msg_send(const uint8_t addr[6], uint8_t addr_type, const char *mime_type, const uint8_t *data, size_t len, uint32_t flags)
Send a typed payload directly to a known peer address (no picker).
int host_msg_unregister_handler(const char *mime_type)
Drop a previously registered handler.
int host_msg_send_interactive(const char *mime_type, const uint8_t *data, size_t len, uint32_t flags)
Send a typed payload via the firmware-owned interactive peer picker.
int host_msg_consume(uint8_t *buf, size_t buf_size, char *mime_out, size_t mime_size)
Pull the payload delivered by the most recent inbound message action.
int host_msg_register_handler(const char *mime_type, uint32_t action_id)
Register that this plugin handles an incoming MIME type.
int host_net_accept(void)
Take the next accepted connection as a socket handle for host_socket_read/write/close.
int host_net_listen(uint16_t port, uint32_t action_id)
Start a TCP listener on port; fires action_id while clients wait.
int host_net_close(uint16_t port)
Stop the listener (pass 0 or the listening port). Closes pending un-accepted connections.
int host_nvs_list_keys(char *out, size_t *out_len)
Enumerate the keys in the plugin's namespace.
int host_nvs_erase(const char *key)
Delete a single key.
int host_nvs_set_u32(const char *key, uint32_t value)
Write a uint32 value.
int host_nvs_get_blob(const char *key, uint8_t *buf, size_t *len)
Read a binary blob from NVS.
int host_nvs_get_str(const char *key, char *buf, size_t buf_size)
Read a NUL-terminated string.
int host_nvs_get_u32(const char *key, uint32_t *out)
Read a uint32 value.
int host_nvs_erase_all(void)
Erase every key in the plugin's namespace.
int host_nvs_set_blob(const char *key, const uint8_t *buf, size_t len)
Write a binary blob to NVS.
int host_nvs_set_str(const char *key, const char *value)
Write a NUL-terminated string.
int host_pixel_strip_refresh(void)
Push the strip buffer out over the RMT bus.
int host_pixel_strip_clear(void)
Clear every pixel to off (0, 0, 0).
uint16_t host_pixel_strip_length(void)
Number of pixels the strip was initialised with.
int host_pixel_strip_fill(uint8_t r, uint8_t g, uint8_t b)
Fill every pixel with the same RGB colour.
int host_pixel_strip_set(uint16_t index, uint8_t r, uint8_t g, uint8_t b)
Set one pixel's RGB colour in the strip buffer.
int host_pixel_strip_init(uint8_t gpio_pin, uint16_t num_pixels, uint8_t format)
Initialise or reconfigure the global pixel strip.
int host_pixel_strip_deinit(void)
Tear down the global pixel strip.
bool host_pixel_strip_ready(void)
True when the strip has been successfully initialised.
uint8_t host_charge_status(void)
Charger state machine value - one of CHARGE_*.
uint8_t host_power_source(void)
Active power source - one of POWER_SRC_*.
bool host_is_battery_low(void)
True when battery has crossed the low-warning threshold.
bool host_is_battery_critical(void)
True when battery has crossed the critical-shutdown threshold.
void host_set_sleep_inhibit(uint32_t on)
Hold or release a light-sleep inhibitor for the calling plugin. While any inhibitor is held the badge...
bool host_is_usb_connected(void)
True when USB VBUS is detected.
uint16_t host_battery_mv(void)
Battery voltage in millivolts.
uint8_t host_battery_pct(void)
Battery state of charge as 0..100 percent.
int host_qr_render_bitmap(const char *data, uint8_t max_version, uint8_t ecc, uint8_t scale, uint8_t quiet_modules, uint8_t *out, size_t out_size, uint16_t *out_stride_bytes, uint16_t *out_height_px)
Encode data into a packed 1-bpp QR raster.
int host_qr_measure(const char *data, uint8_t max_version, uint8_t ecc, uint16_t *out_modules)
Measure the QR module count for data without rendering.
int host_ecc_delete(const char *name)
Erase the named ECC key and free its pool slot.
int host_se_fw_version(uint8_t *riscv, uint8_t *spect)
Read TROPIC01 firmware versions for the RISC-V CPU and SPECT core.
int host_se_chip_id(uint8_t *serial, size_t *len)
Read the TROPIC01 chip serial / identity blob.
int host_rmem_read_named(const char *name, uint8_t *buf, size_t *len)
Read a named retained-memory slot.
int host_rmem_write_named(const char *name, const uint8_t *buf, size_t len)
Write up to host_rmem_slot_size() bytes into a named rmem slot.
uint16_t host_rmem_slot_size(void)
Maximum payload bytes per rmem slot.
int host_ecc_pubkey(const char *name, uint8_t *pub, uint8_t curve)
Export the public key for the named slot.
int host_ecdsa_sign(const char *name, const uint8_t *msg, size_t len, uint8_t sig[64])
ECDSA-sign msg with the P-256 named key; writes 64-byte raw sig.
bool host_rmem_name_used(const char *name)
True if the named rmem slot currently holds data.
int host_eddsa_sign(const char *name, const uint8_t *msg, size_t len, uint8_t sig[64])
Ed25519-sign msg with the named key; writes 64-byte signature.
int host_rmem_erase_named(const char *name)
Erase the contents of a named rmem slot.
int host_ecc_generate(const char *name, uint8_t curve)
Generate a fresh ECC key for the named slot.
int host_ecc_import(const char *name, const uint8_t *priv, uint8_t curve)
Import an externally-generated private key for the named slot.
bool host_ecc_exists(const char *name)
True when the named ECC key currently holds a key.
int host_socket_read(int handle, uint8_t *out, size_t cap, uint32_t timeout_ms)
Read bytes from the stream / receive a datagram from the connected peer.
int host_socket_close(int handle)
Close a socket handle.
int host_socket_write(int handle, const uint8_t *data, size_t len, uint32_t timeout_ms)
Write bytes to the stream / send a datagram to the connected peer.
int host_socket_open(uint8_t proto, const char *host, uint16_t port, uint32_t timeout_ms)
Open an outbound connection to a single remote endpoint.
int host_sprite_create(uint16_t frame_w, uint16_t frame_h, uint16_t frame_count, const uint8_t *frames, uint32_t len)
Create a sprite from a packed 1-bpp frame sheet in plugin memory.
int host_sprite_set_frame(uint32_t sprite, uint16_t frame)
Jump to a frame. A running playback continues from it.
int host_sprite_play(uint32_t sprite, uint8_t mode, uint16_t frame_ms, uint16_t repeat, uint32_t done_action_id)
Start host-driven playback from frame 0.
int host_sprite_create_from_image(const uint8_t *data, uint32_t len, uint16_t target_w, uint16_t frame_h)
Create a sprite straight from an encoded PNG/JPEG.
int host_sprite_destroy(uint32_t sprite)
Destroy a sprite and reclaim its arena bytes. Recorded draw-sprite commands referencing it are skippe...
int host_sprite_set_frame_durations(uint32_t sprite, const uint16_t *ms, uint16_t count)
Optional per-frame durations in milliseconds.
int host_sprite_set_scale(uint32_t sprite, uint8_t scale)
Integer upscale factor applied whenever the sprite is drawn.
int host_sprite_set_flags(uint32_t sprite, uint8_t flags)
Replace the sprite's flag set (HOST_SPRITE_FLAG_*).
int host_sprite_stop(uint32_t sprite)
Stop playback, keeping the current frame on screen.
int host_sprite_set_mask(uint32_t sprite, const uint8_t *mask, uint32_t len)
Attach a transparency mask plane (same sheet layout and size as the frame data). Mask bit set = pixel...
int host_sprite_create_from_surface(uint32_t surface, uint16_t frame_w, uint16_t frame_h, uint16_t frame_count)
Create a sprite by slicing a surface into a row-major grid of frame_w x frame_h cells.
int host_sprite_get_frame(uint32_t sprite, uint16_t *out)
Read the currently displayed frame index.
int host_str_to_utf8(const char *in, char *out, size_t out_size)
Convert CP437 display bytes in in to a UTF-8 string in out.
int host_str_to_display(const char *in, char *out, size_t out_size, uint32_t target)
Decode HTML entities + UTF-8 in in into single-byte display characters in out.
int host_surface_set_font(uint32_t surface, uint8_t font_id)
Select the font for subsequent text calls (HOST_FONT_* id).
int host_surface_draw_text(uint32_t surface, int16_t x, int16_t y, const char *text)
Draw UTF-8 text with the current font/size at (x, y) baseline-top.
int host_surface_draw_bitmap(uint32_t surface, int16_t x, int16_t y, int16_t w, int16_t h, const uint8_t *data, uint32_t len)
Blit a packed 1-bpp bitmap (MSB-first, set bit = black) at (x, y).
int host_surface_vline(uint32_t surface, int16_t x, int16_t y, int16_t h)
Draw a vertical line of height h.
int host_surface_draw_pixel(uint32_t surface, int16_t x, int16_t y)
Draw a pixel (current shade decides ink: shade > 0 draws black).
int host_surface_draw_sprite(uint32_t surface, int16_t x, int16_t y, uint32_t sprite)
Stamp a sprite's current frame onto a surface at (x, y).
int host_surface_measure_text(uint32_t surface, const char *text, uint16_t *out_w, uint16_t *out_h)
Measure UTF-8 text with the surface's current font/size.
int host_surface_destroy(uint32_t surface)
Destroy a surface and free its memory.
int host_surface_draw_line(uint32_t surface, int16_t x0, int16_t y0, int16_t x1, int16_t y1)
Draw a line.
int host_surface_draw_text_aligned(uint32_t surface, int16_t x, int16_t y, int16_t w, const char *text, uint8_t align)
Draw UTF-8 text aligned within a w-wide box starting at x.
int host_surface_draw_rect(uint32_t surface, int16_t x, int16_t y, int16_t w, int16_t h, uint8_t filled)
Draw a rectangle; filled ones use the current shade.
int host_surface_draw_circle(uint32_t surface, int16_t x, int16_t y, int16_t r, uint8_t filled)
Draw a circle centered at (x, y); filled ones use the current shade.
int host_surface_set_text_color(uint32_t surface, uint8_t inverted)
Draw text white-on-black (inverted != 0) or black-on-white.
int host_surface_draw_triangle(uint32_t surface, int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint8_t filled)
Draw a triangle; filled ones use the current shade.
int host_surface_export(uint32_t surface, uint8_t *out, size_t out_size, uint16_t *out_stride_bytes)
Copy the surface's packed pixel rows into out.
int host_surface_set_shade(uint32_t surface, uint8_t shade)
Set the fill shade for filled shapes: 0 white .. 255 solid black.
int host_surface_clear(uint32_t surface)
Clear a surface to white.
int host_surface_create(uint16_t w, uint16_t h)
Create a w x h surface, cleared to white.
int host_surface_set_text_size(uint32_t surface, uint8_t size)
Set the integer text scale (1..4) for subsequent text calls.
int host_surface_hline(uint32_t surface, int16_t x, int16_t y, int16_t w)
Draw a horizontal line of width w.
int host_surface_draw_round_rect(uint32_t surface, int16_t x, int16_t y, int16_t w, int16_t h, int16_t r, uint8_t filled)
Draw a rounded rectangle with corner radius r.
int host_surface_export_jpg(uint32_t surface, uint8_t quality, uint8_t *out, size_t out_size, uint32_t *out_len)
Encode the surface as a grayscale JPEG.
int host_get_build_profile(char *out, size_t out_size)
Copy the build profile name (e.g. "release", "debug") into out.
uint8_t host_cpu_load(void)
Aggregate CPU load across all cores as 0..100 percent. Sampled on demand from FreeRTOS run-time stats...
bool host_feature_enabled(uint16_t feature_id)
True when the firmware was built with the given feature id enabled.
int host_get_firmware_version(char *out, size_t out_size)
Copy the firmware semver string into out.
int host_local_time(struct host_tm *out)
Fill out with the current local time broken into fields.
bool host_is_time_set(void)
True when the RTC has been synchronised at least once.
uint64_t host_uptime_ms(void)
Monotonic milliseconds since boot.
int64_t host_unix_time(void)
Current Unix timestamp in seconds, or 0 if RTC not set.
int32_t host_timezone_offset(void)
Configured timezone offset from UTC in seconds.
int host_view_canvas_clear_ex(uint32_t flags)
Clear with options: like host_view_canvas_clear, but HOST_CANVAS_CLEAR_KEEP_SPRITES keeps the sprite ...
int host_view_canvas_get_value(uint32_t widget_id, int32_t *out)
Read the integer value of a slider widget.
int host_view_canvas_elem_show(uint32_t elem_id, bool visible)
Show or hide an element (hidden elements are skipped on replay).
int host_view_canvas_draw_round_rect(int16_t x, int16_t y, int16_t w, int16_t h, int16_t r, bool filled)
Draw a rounded rectangle outline or filled, corner radius r.
int host_view_canvas_elem_set_offset(uint32_t elem_id, int16_t ox, int16_t oy)
Set an element's replay offset relative to its recorded coordinates.
int host_view_canvas_elem_remove(uint32_t elem_id)
Remove an element and all draw commands recorded under it.
int host_view_canvas_push(const char *title, uint32_t key_action_id, uint32_t widget_action_id)
Push a new canvas view.
int host_view_canvas_get_focus(uint32_t *out)
Read the currently focused widget id, 0 if none.
int host_view_canvas_hline(int16_t x, int16_t y, int16_t w)
Draw a horizontal line.
int host_view_canvas_vline(int16_t x, int16_t y, int16_t h)
Draw a vertical line.
int host_view_canvas_clear(void)
Clear all draw state and widgets. Equals host_view_canvas_clear_ex(0).
int host_view_canvas_draw_rect(int16_t x, int16_t y, int16_t w, int16_t h, bool filled)
Draw a rectangle outline or filled rectangle.
int host_view_canvas_set_ink(bool white)
Draw subsequent shapes in white instead of black.
int host_view_canvas_elem_move(uint32_t elem_id, int16_t dx, int16_t dy)
Shift an element's replay offset by a delta.
int host_view_canvas_elem_begin(uint32_t elem_id)
Start recording draw calls under element elem_id.
int host_view_canvas_set_text_color(bool inverted)
Switch between normal and inverted (white on black) text.
int host_view_canvas_set_font(uint8_t font_id)
Switch the canvas font to one of the canonical HOST_FONT_* ids.
int host_view_canvas_draw_bitmap(int16_t x, int16_t y, int16_t w, int16_t h, const uint8_t *data, uint32_t len)
Draw a 1-bpp bitmap; set bits render black, unset bits are transparent.
int host_view_canvas_add_button(uint32_t widget_id)
Add a focusable button widget bound to widget_id.
int host_view_canvas_draw_pixel(int16_t x, int16_t y)
Draw a single pixel.
int host_view_canvas_draw_circle(int16_t x, int16_t y, int16_t r, bool filled)
Draw a circle outline or filled circle of radius r centred at (x, y).
int host_view_canvas_marquee(int16_t x, int16_t y, int16_t window_w, const char *text, uint16_t step_px, uint16_t frame_ms)
Record a host-driven text marquee (ticker).
int host_view_canvas_set_focus(uint32_t widget_id)
Move keyboard focus to the given widget.
int host_view_canvas_get_text(uint32_t widget_id, char *out, size_t cap)
Read the text of a text-input widget.
int host_view_canvas_set_text_size(uint8_t size)
Set text size multiplier (Adafruit-GFX semantics).
int host_view_canvas_elem_get_offset(uint32_t elem_id, int16_t *ox, int16_t *oy)
Read an element's current replay offset.
int host_view_canvas_set_key_repeat(uint16_t initial_ms, uint16_t repeat_ms)
Configure key auto-repeat timing for the canvas.
int host_view_canvas_elem_get_bounds(uint32_t elem_id, int16_t *x, int16_t *y, uint16_t *w, uint16_t *h)
Bounding box of an element's recorded commands, offset applied.
int host_view_canvas_elem_end(void)
Stop recording draw calls into an element.
int host_view_canvas_draw_text_aligned(int16_t x, int16_t y, int16_t w, const char *text, uint8_t align)
Draw text within a horizontal box.
int host_view_canvas_set_footer(const char *hint)
Override the footer hint of the canvas.
int host_view_canvas_draw_text(int16_t x, int16_t y, const char *text)
Draw text at (x, y) using the current text size/colour.
int host_view_canvas_set_shade(uint8_t shade)
Set the fill ink for subsequent filled shapes (rect, circle, triangle).
int host_view_canvas_remove_widget(uint32_t widget_id)
Remove a widget previously added to the canvas.
int host_text_pick_font_that_fits(const char *text, int16_t max_width_px, const uint8_t *candidates, uint32_t count, uint8_t *out_font_id)
Pick the largest HOST_FONT_* whose rendered text fits within max_width_px. Candidates are evaluated i...
int host_view_canvas_add_text(uint32_t widget_id, uint16_t max_len, const char *initial)
Add a T9 text input widget bound to widget_id.
int host_view_canvas_set_text(uint32_t widget_id, const char *text)
Set the text of a text-input widget.
int host_view_canvas_elem_set_z(uint32_t elem_id, int8_t z)
Set an element's replay layer (z-order).
int host_view_canvas_draw_triangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, bool filled)
Draw a triangle outline or filled triangle through three points.
int host_view_canvas_set_anim_policy(uint8_t refresh_policy, uint8_t max_fps)
Configure host-driven animation pacing for the current canvas.
int host_view_canvas_set_long_press_action(uint32_t action_id)
Set the action id fired on a canvas long-press.
int host_view_canvas_draw_line(int16_t x0, int16_t y0, int16_t x1, int16_t y1)
Draw a line between two points.
int host_view_canvas_set_value(uint32_t widget_id, int32_t value)
Set the integer value of a slider widget.
int host_view_canvas_get_body_size(uint16_t *w, uint16_t *h)
Read the drawable body region (excluding header/footer).
int host_view_canvas_commit(bool full_refresh)
Flush draw state to the panel.
int host_view_canvas_add_slider(uint32_t widget_id, int32_t min, int32_t max, int32_t initial, int32_t step)
Add an integer slider widget bound to widget_id.
int host_view_canvas_elem_clear(uint32_t elem_id)
Drop only an element's recorded draw commands, keeping the element.
int host_view_canvas_draw_sprite(int16_t x, int16_t y, uint32_t sprite)
Record a draw of a sprite's current frame at (x, y).
int host_display_draw_rect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color)
Draw a rectangle outline.
bool host_display_is_busy(void)
True while the panel is processing a previous refresh.
int host_display_draw_pixel(int16_t x, int16_t y, uint16_t color)
Set a single pixel.
uint16_t host_display_get_backlight(void)
Current backlight level (0 when no display is available).
int host_display_draw_line(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color)
Draw a line between two points.
uint16_t host_display_width(void)
Display width in pixels.
int host_display_set_backlight(uint16_t level)
Set the display backlight level (0 = off .. panel maximum, e.g. 1023). Applied live; NOT persisted to...
int host_display_flush(uint8_t refresh_mode)
Push the framebuffer to the panel using the given refresh mode.
int host_display_fill_rect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color)
Draw a filled rectangle.
int host_display_draw_text(int16_t x, int16_t y, const char *text, uint8_t size, uint16_t color)
Draw text using the default GFX font.
uint16_t host_display_height(void)
Display height in pixels.
int host_display_clear(void)
Clear the framebuffer to background.
int host_ui_set_inactivity(uint32_t timeout_ms, uint32_t action_id)
Arm an inactivity timer for the plugin's current view.
int host_ui_pop(void)
Pop the topmost view.
int host_ui_set_view_lifecycle(uint32_t hide_action_id, uint32_t show_action_id)
Register hide/show callbacks for the plugin's current top view.
int host_ui_remove_list_item(uint16_t index)
Remove the list row at index (partial redraw).
int host_ui_acquire_exclusive(void)
Claim exclusive UI ownership (block other plugins from pushing views).
int host_ui_push_time(const char *title, uint8_t h, uint8_t m, uint32_t action_id)
Show a time-of-day picker.
int host_ui_repaint(void)
Force a repaint of the current view.
int host_ui_set_view_empty(const char *text)
Override the empty-state text shown by an empty list view.
int host_ui_push_message(const char *text, uint8_t icon, uint32_t duration_ms)
Show a blocking message view that auto-dismisses after duration_ms.
int host_ui_view_markdown(const uint8_t *data, uint32_t len)
Render and show Markdown from an in-memory (UTF-8) buffer. No capability required; the buffer is boun...
int host_ui_push_t9_input(const char *title, const char *initial, uint16_t max_len, uint32_t action_id)
Show a T9-style text entry.
int host_ui_push_date(const char *title, uint8_t d, uint8_t m, uint16_t y, uint32_t action_id)
Show a date picker.
int host_ui_push_info(const char *title, const char *body)
Show a scrollable info screen with title and body.
int host_ui_release_exclusive(void)
Release a previously acquired exclusive UI lock.
int host_ui_consume_input_text(char *out, size_t out_size)
Read text input committed by the most recent input view.
int host_ui_consume_input_int(int32_t *out)
Read integer input committed by the most recent input view.
int host_ui_push_context_menu(const char *title, const ui_item_t *items, uint16_t count, uint32_t select_action_id)
Show a context menu. At most 8 items (ContextMenuView::MAX_ITEMS); the menu is scrollable and shows 4...
int host_ui_push_confirm(const char *text, uint8_t icon, uint32_t action_id)
Show a Y/N confirmation.
int host_ui_push_slider(const char *title, int32_t min, int32_t max, int32_t init, int32_t step, const char *unit, uint32_t action_id)
Show an integer slider.
int host_ui_push_color_picker(uint8_t initial_r, uint8_t initial_g, uint8_t initial_b, uint32_t action_id)
Show an RGB color picker.
int host_ui_push_toast(const char *text, uint8_t icon, uint16_t duration_ms)
Show a transient toast overlay.
int host_ui_insert_list_item(uint16_t index, const ui_item_t *item)
Insert a list row at index (partial redraw).
int host_ui_push_pin_entry(const char *title, uint8_t max_len, uint8_t max_attempts, uint32_t action_id)
Show a numeric PIN entry.
int host_ui_pop_to_plugin(void)
Pop back to the plugin's first view.
int host_ui_push_list(const char *title, const ui_item_t *items, uint16_t count, uint32_t select_action_id, uint32_t menu_action_id)
Show a list view.
int host_ui_push_password(const char *title, const char *initial, uint16_t max_len, uint32_t action_id)
Show a password entry (masked T9).
int host_ui_update_list_item(uint16_t index, const ui_item_t *item)
Update one list row in place (partial redraw).
int host_ui_view_image(const uint8_t *data, uint32_t len)
Decode and show an image (PNG/JPEG) from an in-memory buffer, dithered. No capability required; the b...
int host_ui_wink(uint8_t count, uint16_t period_ms)
Blink the backlight as a visual identification signal.
int host_ui_replace_list(const char *title, const ui_item_t *items, uint16_t count, uint32_t select_action_id, uint32_t menu_action_id)
Replace the plugin's top list view in place; falls back to push when none.
int host_ui_set_view_footer(const char *hint)
Override the footer hint of the plugin's current top view.
int host_browser_open(const char *url)
Open a URL in the badge browser (enters the browser and loads it). No capability required.
int host_usb_cdc_write(const uint8_t *data, size_t len)
Write raw bytes to the USB-CDC TX stream.
int host_vcard_received_count(void)
Number of received vCards in the store.
int host_vcard_received_add(const char *vcard, size_t len)
Store a new received vCard.
int host_vcard_received_display(uint16_t index, char *out, size_t out_size)
Copy the display name of the received vCard at sorted position index into out (for list rows).
int host_vcard_set_own(const char *vcard, size_t len)
Set / replace the badge's own vCard.
int host_vcard_received_update(uint16_t index, const char *vcard, size_t len)
Overwrite the received vCard at sorted position index.
int host_vcard_get_own(char *out, size_t out_size)
Copy the badge's own vCard text into out.
int host_vcard_received_delete(uint16_t index)
Delete the received vCard at sorted position index.
int host_vcard_received_get(uint16_t index, char *out, size_t out_size)
Copy the received vCard at sorted position index into out.
int host_fs_view_markdown(const char *name)
Render and show one of the plugin's own Markdown files in the scrollable text viewer.
int host_fs_view_image(const char *name)
Decode and show one of the plugin's own image files (PNG/JPEG) on the e-paper, dithered and scaled to...
int host_fs_view(const char *name)
Open one of the plugin's own files in a scrollable on-screen text viewer (same as opening the file in...
int host_fs_size(const char *name, size_t *out)
Write the byte size of name to *out.
int host_fs_read(const char *name, uint8_t *buf, size_t *len)
Read name into buf.
int host_fs_remove(const char *name)
Delete name.
int host_fs_write(const char *name, const uint8_t *data, size_t len)
Create or overwrite name with len bytes.
int host_fs_list(char *out, size_t *out_len)
Enumerate the plugin's own files.
bool host_wifi_scan_done(void)
True when the scan started by host_wifi_start_scan has finished.
int host_wifi_scan_results(wifi_scan_result_t *out, size_t *count)
Read results from the last completed scan.
int host_wifi_mac(uint8_t out[6])
Read the station MAC address.
int host_wifi_request(uint32_t timeout_ms)
Request the shared WiFi radio and wait up to timeout_ms for join.
int host_wifi_ip(char *out, size_t out_size)
Copy the current IPv4 address as dotted decimal into out.
bool host_wifi_is_connected(void)
True when WiFi STA is associated and has an IP.
int host_wifi_release(void)
Release the WiFi radio held by this plugin.
int8_t host_wifi_rssi(void)
Current AP signal strength in dBm.
int host_wifi_start_scan(void)
Start an asynchronous WiFi scan.
int host_wifi_ssid(char *out, size_t out_size)
Copy the currently joined SSID into out.
CDC Badge OS plugin host API - canonical C ABI contract.
#define HOST_ERR_INVALID_ARG
#define HOST_ERR_NO_MEMORY
std::unique_ptr< T[], CapsFreeDeleter > PsramUniquePtr
PsramUniquePtr< T > psramAlloc(std::size_t count) noexcept
Allocate count elements of T in PSRAM (8-bit capable region).
static int32_t w_host_surface_draw_triangle(wasm_exec_env_t, uint32_t s, int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t x2, int32_t y2, uint32_t filled)
static int32_t w_host_ble_scan_done(wasm_exec_env_t)
static int32_t w_host_view_canvas_clear_ex(wasm_exec_env_t, uint32_t flags)
static int32_t w_host_base32_encode(wasm_exec_env_t, const uint8_t *in, uint32_t in_len, char *out, uint32_t out_size)
static int32_t w_host_view_canvas_clear(wasm_exec_env_t)
static int32_t w_host_nvs_set_blob(wasm_exec_env_t, const char *key, const uint8_t *buf, uint32_t len)
static int32_t w_host_view_canvas_set_value(wasm_exec_env_t, uint32_t widget_id, int32_t value)
static int32_t w_host_ui_update_list_item(wasm_exec_env_t exec_env, uint32_t index, const ui_item_t *item)
static int32_t w_host_ble_send_indication(wasm_exec_env_t, uint32_t ch, const uint8_t *data, uint32_t len)
static int32_t w_host_event_unsubscribe(wasm_exec_env_t, uint32_t sub)
static int32_t w_host_msg_register_handler(wasm_exec_env_t, const char *mime, uint32_t aid)
static int32_t w_host_ecc_generate(wasm_exec_env_t, const char *name, uint32_t curve)
static int32_t w_host_display_clear(wasm_exec_env_t)
static int32_t w_host_is_battery_low(wasm_exec_env_t)
static int32_t w_host_ui_push_toast(wasm_exec_env_t, const char *t, uint32_t icon, uint32_t ms)
static int32_t w_host_surface_draw_text(wasm_exec_env_t, uint32_t s, int32_t x, int32_t y, const char *text)
static uint32_t w_host_pixel_strip_length(wasm_exec_env_t)
static int32_t w_host_hex_encode(wasm_exec_env_t, const uint8_t *in, uint32_t in_len, char *out, uint32_t out_size)
static int32_t w_host_ble_unregister_service(wasm_exec_env_t, uint32_t h)
static int32_t w_host_i2c_read(wasm_exec_env_t, uint32_t bus, uint32_t addr, uint8_t *data, uint32_t len)
static int32_t w_host_ui_pop_to_plugin(wasm_exec_env_t)
static int32_t w_host_str_to_display(wasm_exec_env_t, const char *in, char *out, uint32_t out_size, uint32_t target)
static int32_t w_host_vcard_received_count(wasm_exec_env_t)
static int32_t w_host_msg_unregister_handler(wasm_exec_env_t, const char *mime)
static int32_t w_host_ecc_import(wasm_exec_env_t exec_env, const char *name, const uint8_t *priv, uint32_t curve)
static int32_t w_host_view_canvas_elem_clear(wasm_exec_env_t, uint32_t elem_id)
static int32_t w_host_anim_blink(wasm_exec_env_t, uint32_t elem_id, uint32_t period_ms, uint32_t count, uint32_t done_aid)
static int32_t w_host_surface_set_text_size(wasm_exec_env_t, uint32_t s, uint32_t size)
static int32_t w_host_surface_vline(wasm_exec_env_t, uint32_t s, int32_t x, int32_t y, int32_t h)
static bool wbuf_ok(wasm_exec_env_t env, const void *ptr, size_t len)
static int32_t w_host_ble_consume_read(wasm_exec_env_t, uint8_t *buf, uint32_t size)
static int32_t w_host_vcard_received_update(wasm_exec_env_t, uint32_t index, const char *vcard, uint32_t len)
static int32_t w_host_get_firmware_version(wasm_exec_env_t, char *out, uint32_t out_size)
static int32_t w_host_se_chip_id(wasm_exec_env_t exec_env, uint8_t *serial, uint32_t *len)
static int32_t w_host_vcard_set_own(wasm_exec_env_t, const char *vcard, uint32_t len)
static int32_t w_host_sprite_set_scale(wasm_exec_env_t, uint32_t sprite, uint32_t scale)
static int32_t w_host_ui_push_t9_input(wasm_exec_env_t, const char *title, const char *initial, uint32_t max_len, uint32_t action_id)
static int32_t w_host_image_render(wasm_exec_env_t exec_env, const uint8_t *data, uint32_t len, uint32_t target_w, uint8_t *out, uint32_t out_size, uint16_t *stride_out, uint16_t *height_out)
static int32_t w_host_sprite_play(wasm_exec_env_t, uint32_t sprite, uint32_t mode, uint32_t frame_ms, uint32_t repeat, uint32_t done_aid)
static int32_t w_host_ui_repaint(wasm_exec_env_t)
static int32_t w_host_ble_discover(wasm_exec_env_t, uint32_t conn, const uint8_t *uuid, uint32_t aid)
static int32_t w_host_vcard_received_display(wasm_exec_env_t, uint32_t index, char *out, uint32_t out_size)
static int32_t w_host_view_canvas_draw_circle(wasm_exec_env_t, int32_t x, int32_t y, int32_t r, uint32_t filled)
static int32_t w_host_key_consume_next(wasm_exec_env_t, uint8_t *out)
static int32_t w_host_view_canvas_set_long_press_action(wasm_exec_env_t, uint32_t action_id)
static int32_t w_host_ui_remove_list_item(wasm_exec_env_t, uint32_t index)
static int32_t w_host_surface_draw_bitmap(wasm_exec_env_t, uint32_t s, int32_t x, int32_t y, int32_t w, int32_t h, const uint8_t *data, uint32_t len)
static int32_t w_host_vcard_received_delete(wasm_exec_env_t, uint32_t index)
static int32_t w_host_ble_consume_write(wasm_exec_env_t, uint32_t ch, uint8_t *buf, uint32_t size)
static int32_t w_host_wifi_ssid(wasm_exec_env_t, char *out, uint32_t sz)
static uint32_t w_host_display_width(wasm_exec_env_t)
static int32_t w_host_sha256(wasm_exec_env_t exec_env, const uint8_t *data, uint32_t len, uint8_t *out)
static int32_t w_host_ui_replace_list(wasm_exec_env_t exec_env, const char *title, const ui_item_t *items, uint32_t count, uint32_t sel, uint32_t menu)
static int32_t w_host_nvs_erase(wasm_exec_env_t, const char *key)
static int32_t w_host_gpio_pwm_start(wasm_exec_env_t, uint32_t pin, uint32_t freq, uint32_t duty)
static int32_t w_host_view_canvas_draw_round_rect(wasm_exec_env_t, int32_t x, int32_t y, int32_t w, int32_t h, int32_t r, uint32_t filled)
static int32_t w_host_net_listen(wasm_exec_env_t, uint32_t port, uint32_t action_id)
static int32_t w_host_ble_device_name(wasm_exec_env_t, char *out, uint32_t size)
static int32_t w_host_ui_set_view_footer(wasm_exec_env_t, const char *hint)
static int32_t w_host_sprite_create_from_image(wasm_exec_env_t, const uint8_t *data, uint32_t len, uint32_t target_w, uint32_t frame_h)
static int32_t w_host_view_canvas_elem_remove(wasm_exec_env_t, uint32_t elem_id)
static int32_t w_host_ui_insert_list_item(wasm_exec_env_t exec_env, uint32_t index, const ui_item_t *item)
static int32_t w_host_view_canvas_elem_begin(wasm_exec_env_t, uint32_t elem_id)
static int32_t w_host_msg_send_interactive(wasm_exec_env_t, const char *mime, const uint8_t *data, uint32_t len, uint32_t flags)
static int32_t w_host_view_canvas_draw_pixel(wasm_exec_env_t, int32_t x, int32_t y)
static int32_t w_host_pixel_strip_fill(wasm_exec_env_t, uint32_t r, uint32_t g, uint32_t b)
static int32_t w_host_ble_write_char(wasm_exec_env_t, uint32_t conn, uint32_t vh, const uint8_t *data, uint32_t len, uint32_t wr)
static int32_t w_host_aes_gcm_encrypt(wasm_exec_env_t exec_env, const uint8_t *key, const uint8_t *iv, const uint8_t *aad, uint32_t aad_len, const uint8_t *pt, uint32_t pt_len, uint8_t *ct, uint8_t *tag)
static int32_t w_host_qr_render_bitmap(wasm_exec_env_t exec_env, const char *data, uint32_t max_version, uint32_t ecc, uint32_t scale, uint32_t quiet, uint8_t *out, uint32_t out_size, uint16_t *stride_out, uint16_t *height_out)
static cdc::core::PsramUniquePtr< NativeSymbol > s_symbols_ram
static int32_t w_host_view_canvas_draw_triangle(wasm_exec_env_t, int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t x2, int32_t y2, uint32_t filled)
static int32_t w_host_nvs_set_str(wasm_exec_env_t, const char *key, const char *value)
static int32_t w_host_ui_push_password(wasm_exec_env_t, const char *title, const char *initial, uint32_t max_len, uint32_t action_id)
static int32_t w_host_ble_scan_start(wasm_exec_env_t, uint32_t dur)
static int32_t w_host_nvs_get_str(wasm_exec_env_t, const char *key, char *buf, uint32_t buf_size)
static int32_t w_host_aes_gcm_decrypt(wasm_exec_env_t exec_env, const uint8_t *key, const uint8_t *iv, const uint8_t *aad, uint32_t aad_len, const uint8_t *ct, uint32_t ct_len, const uint8_t *tag, uint8_t *pt)
static int32_t w_host_adc_read(wasm_exec_env_t exec_env, uint32_t pin, uint16_t *raw, uint16_t *mv)
static int32_t w_host_pixel_strip_ready(wasm_exec_env_t)
static int32_t w_host_ui_view_markdown(wasm_exec_env_t env, const uint8_t *data, uint32_t len)
static int32_t w_host_view_canvas_add_text(wasm_exec_env_t, uint32_t widget_id, uint32_t max_len, const char *initial)
static int32_t w_host_ecc_pubkey(wasm_exec_env_t exec_env, const char *name, uint8_t *pub, uint32_t curve)
static int32_t w_host_vcard_received_get(wasm_exec_env_t, uint32_t index, char *out, uint32_t out_size)
static int32_t w_host_view_canvas_set_focus(wasm_exec_env_t, uint32_t widget_id)
static int32_t w_host_wifi_is_connected(wasm_exec_env_t)
static int32_t w_host_http_set_header(wasm_exec_env_t, int32_t h, const char *k, const char *v)
static int32_t w_host_ble_subscribe(wasm_exec_env_t, uint32_t conn, uint32_t cccd, uint32_t aid)
static int32_t w_host_fs_view(wasm_exec_env_t, const char *name)
static int32_t w_host_lockscreen_register_action(wasm_exec_env_t, const char *label_key, uint32_t action_id)
static uint32_t w_host_battery_pct(wasm_exec_env_t)
static uint32_t w_host_battery_mv(wasm_exec_env_t)
static int32_t w_host_ext_feature_consume(wasm_exec_env_t, uint8_t *buf, uint32_t buf_size, char *feature_out, uint32_t feature_size)
static int32_t w_host_lockscreen_alert(wasm_exec_env_t, const char *text, uint32_t icon, uint32_t action_id)
static int32_t w_host_is_usb_connected(wasm_exec_env_t)
static int32_t w_host_gpio_pwm_stop(wasm_exec_env_t, uint32_t pin)
void unregister_host_imports()
Unregister the imports (called from PluginManager::deinit()).
static int32_t w_host_wifi_release(wasm_exec_env_t)
static int32_t w_host_surface_create(wasm_exec_env_t, uint32_t w, uint32_t h)
static int32_t w_host_gpio_write(wasm_exec_env_t, uint32_t pin, int32_t level)
static int32_t w_host_sprite_get_frame(wasm_exec_env_t exec_env, uint32_t sprite, uint16_t *out)
static int32_t w_host_gpio_read(wasm_exec_env_t exec_env, uint32_t pin, int32_t *out)
static int32_t w_host_nvs_get_blob(wasm_exec_env_t, const char *key, uint8_t *buf, uint32_t buf_size)
static int32_t w_host_pixel_strip_set(wasm_exec_env_t, uint32_t idx, uint32_t r, uint32_t g, uint32_t b)
static int32_t w_host_socket_close(wasm_exec_env_t, int32_t h)
static int32_t w_host_anim_state(wasm_exec_env_t, uint32_t handle)
static int32_t w_host_view_canvas_set_text_color(wasm_exec_env_t, uint32_t inverted)
static int32_t w_host_qr_measure(wasm_exec_env_t exec_env, const char *data, uint32_t max_version, uint32_t ecc, uint16_t *out_modules)
static int32_t w_host_set_resident(wasm_exec_env_t, int32_t resident)
static int32_t w_host_ble_scan_results(wasm_exec_env_t exec_env, void *out, uint32_t *count)
static int32_t w_host_anim_start(wasm_exec_env_t exec_env, const host_anim_t *cfg)
static int32_t w_host_vcard_get_own(wasm_exec_env_t, char *out, uint32_t out_size)
static uint32_t w_host_i18n_current_language(wasm_exec_env_t)
static int32_t w_host_view_canvas_push(wasm_exec_env_t, const char *title, uint32_t key_action_id, uint32_t widget_action_id)
static int32_t w_host_random(wasm_exec_env_t, uint8_t *buf, uint32_t len)
static int32_t w_host_rmem_name_used(wasm_exec_env_t, const char *name)
static void w_host_log(wasm_exec_env_t, uint32_t level, const char *tag, const char *msg)
static int32_t w_host_surface_draw_pixel(wasm_exec_env_t, uint32_t s, int32_t x, int32_t y)
static int32_t w_host_view_canvas_set_footer(wasm_exec_env_t, const char *hint)
static uint32_t w_host_cpu_load(wasm_exec_env_t)
static int32_t w_host_display_is_busy(wasm_exec_env_t)
static int32_t w_host_ble_consume_discovery(wasm_exec_env_t exec_env, void *out, uint32_t *count)
static int32_t w_host_pixel_strip_deinit(wasm_exec_env_t)
static int32_t w_host_fs_size(wasm_exec_env_t, const char *name)
static void w_host_log_hex(wasm_exec_env_t, const char *tag, const char *label, const uint8_t *data, uint32_t len)
static int64_t w_host_unix_time(wasm_exec_env_t)
static int32_t w_host_ui_push_color_picker(wasm_exec_env_t, uint32_t r, uint32_t g, uint32_t b, uint32_t action_id)
static int32_t w_host_ecdsa_sign(wasm_exec_env_t exec_env, const char *name, const uint8_t *msg, uint32_t len, uint8_t *sig)
static int32_t w_host_gpio_release(wasm_exec_env_t, uint32_t pin)
static int32_t w_host_surface_set_font(wasm_exec_env_t, uint32_t s, uint32_t font_id)
static int32_t w_host_http_read_chunk(wasm_exec_env_t, int32_t h, uint8_t *buf, uint32_t buf_size)
static int32_t w_host_ext_feature_use(wasm_exec_env_t, const char *feature, const uint8_t *data, uint32_t len, uint32_t status_aid)
static int32_t w_host_rmem_write_named(wasm_exec_env_t, const char *name, const uint8_t *buf, uint32_t len)
static int32_t w_host_view_canvas_get_body_size(wasm_exec_env_t exec_env, uint16_t *w, uint16_t *h)
static int32_t w_host_ble_on_write_complete(wasm_exec_env_t, uint32_t aid)
static int32_t w_host_ui_push_time(wasm_exec_env_t, const char *title, uint32_t h, uint32_t m, uint32_t action_id)
static int32_t w_host_se_fw_version(wasm_exec_env_t exec_env, uint8_t *riscv, uint8_t *spect)
static int32_t w_host_view_canvas_draw_line(wasm_exec_env_t, int32_t x0, int32_t y0, int32_t x1, int32_t y1)
static int32_t w_host_display_set_backlight(wasm_exec_env_t, uint32_t level)
static int32_t w_host_view_canvas_commit(wasm_exec_env_t, uint32_t full_refresh)
static int32_t w_host_surface_destroy(wasm_exec_env_t, uint32_t s)
static int32_t w_host_ui_wink(wasm_exec_env_t, uint32_t count, uint32_t period_ms)
static int32_t w_host_http_close(wasm_exec_env_t, int32_t h)
static int32_t w_host_view_canvas_get_text(wasm_exec_env_t, uint32_t widget_id, char *out, uint32_t cap)
static int32_t w_host_ui_set_view_empty(wasm_exec_env_t, const char *text)
static int32_t w_host_surface_export_jpg(wasm_exec_env_t exec_env, uint32_t s, uint32_t quality, uint8_t *out, uint32_t out_size, uint32_t *len_out)
static int32_t w_host_display_flush(wasm_exec_env_t, uint32_t mode)
static int32_t w_host_ext_feature_register_handler(wasm_exec_env_t, const char *feature, uint32_t aid)
static int32_t w_host_base32_decode(wasm_exec_env_t, const char *in, uint32_t in_len, uint8_t *out, uint32_t out_size)
static int32_t w_host_ui_pop(wasm_exec_env_t)
static int32_t w_host_surface_clear(wasm_exec_env_t, uint32_t s)
static int32_t w_host_view_canvas_marquee(wasm_exec_env_t, int32_t x, int32_t y, int32_t window_w, const char *text, uint32_t step_px, uint32_t frame_ms)
static int32_t w_host_ui_push_date(wasm_exec_env_t, const char *title, uint32_t d, uint32_t m, uint32_t y, uint32_t action_id)
static int32_t w_host_view_canvas_elem_end(wasm_exec_env_t)
static int32_t w_host_eddsa_sign(wasm_exec_env_t exec_env, const char *name, const uint8_t *msg, uint32_t len, uint8_t *sig)
static int32_t w_host_view_canvas_elem_set_offset(wasm_exec_env_t, uint32_t elem_id, int32_t ox, int32_t oy)
static int32_t w_host_browser_open(wasm_exec_env_t, const char *url)
static int32_t w_host_view_canvas_set_key_repeat(wasm_exec_env_t, uint32_t initial_ms, uint32_t repeat_ms)
static int32_t w_host_view_canvas_set_shade(wasm_exec_env_t, uint32_t shade)
static int32_t w_host_surface_draw_circle(wasm_exec_env_t, uint32_t s, int32_t x, int32_t y, int32_t r, uint32_t filled)
static int32_t w_host_anim_active_count(wasm_exec_env_t)
static int32_t w_host_view_canvas_draw_bitmap(wasm_exec_env_t env, int32_t x, int32_t y, int32_t w, int32_t h, const uint8_t *data, uint32_t len)
static int32_t w_host_is_battery_critical(wasm_exec_env_t)
static int32_t w_host_ui_push_info(wasm_exec_env_t, const char *title, const char *body)
static int32_t w_host_ui_release_exclusive(wasm_exec_env_t)
static int32_t w_host_get_build_profile(wasm_exec_env_t, char *out, uint32_t out_size)
static int32_t w_host_view_canvas_draw_rect(wasm_exec_env_t, int32_t x, int32_t y, int32_t w, int32_t h, uint32_t filled)
static int32_t w_host_ble_register_service(wasm_exec_env_t exec_env, void *def, void *chars, uint32_t num)
static int32_t w_host_usb_cdc_write(wasm_exec_env_t, const uint8_t *data, uint32_t len)
static int32_t w_host_sprite_set_mask(wasm_exec_env_t, uint32_t sprite, const uint8_t *mask, uint32_t len)
static int32_t w_host_surface_draw_sprite(wasm_exec_env_t, uint32_t s, int32_t x, int32_t y, uint32_t sprite)
static int32_t w_host_ble_connect(wasm_exec_env_t, const uint8_t *addr, uint32_t type)
static int32_t w_host_fs_read(wasm_exec_env_t, const char *name, uint8_t *buf, uint32_t buf_size)
static int32_t w_host_surface_export(wasm_exec_env_t exec_env, uint32_t s, uint8_t *out, uint32_t out_size, uint16_t *stride_out)
static int32_t w_host_view_canvas_draw_text_aligned(wasm_exec_env_t, int32_t x, int32_t y, int32_t w, const char *text, uint32_t align)
static uint32_t w_host_power_source(wasm_exec_env_t)
static int32_t w_host_sprite_set_flags(wasm_exec_env_t, uint32_t sprite, uint32_t flags)
static int32_t w_host_rmem_read_named(wasm_exec_env_t, const char *name, uint8_t *buf, uint32_t buf_size)
static int32_t w_host_ui_set_view_lifecycle(wasm_exec_env_t, uint32_t hide_action_id, uint32_t show_action_id)
static int32_t w_host_gpio_set_pull(wasm_exec_env_t, uint32_t pin, uint32_t pull)
static int32_t w_host_wifi_request(wasm_exec_env_t, uint32_t t)
static int32_t w_host_i18n_tr_core(wasm_exec_env_t, const char *k, char *o, uint32_t c)
static int32_t w_host_view_canvas_get_value(wasm_exec_env_t exec_env, uint32_t widget_id, int32_t *out)
static int32_t w_host_ble_rssi(wasm_exec_env_t)
static int32_t w_host_ecc_delete(wasm_exec_env_t, const char *name)
static int32_t w_host_nvs_set_u32(wasm_exec_env_t, const char *key, uint32_t value)
static int32_t w_host_ble_disconnect(wasm_exec_env_t, uint32_t conn)
static int32_t w_host_rmem_erase_named(wasm_exec_env_t, const char *name)
static int32_t w_host_fs_list(wasm_exec_env_t, char *out, uint32_t out_size)
static int32_t w_host_view_canvas_draw_text(wasm_exec_env_t, int32_t x, int32_t y, const char *text)
static int32_t w_host_socket_write(wasm_exec_env_t, int32_t h, const uint8_t *data, uint32_t len, uint32_t timeout)
static int32_t w_host_pixel_strip_refresh(wasm_exec_env_t)
static int32_t w_host_display_fill_rect(wasm_exec_env_t, int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color)
static int32_t w_host_fs_remove(wasm_exec_env_t, const char *name)
static int32_t w_host_display_draw_rect(wasm_exec_env_t, int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color)
static int32_t w_host_text_pick_font_that_fits(wasm_exec_env_t, const char *text, int32_t max_width_px, const uint8_t *candidates, uint32_t count, uint8_t *out_font_id)
static int32_t w_host_hmac_sha256(wasm_exec_env_t exec_env, const uint8_t *key, uint32_t klen, const uint8_t *data, uint32_t dlen, uint8_t *out)
static int32_t w_host_view_canvas_elem_set_z(wasm_exec_env_t, uint32_t elem_id, int32_t z)
static int32_t w_host_wifi_mac(wasm_exec_env_t exec_env, uint8_t *out)
static uint64_t w_host_uptime_ms(wasm_exec_env_t)
static int32_t w_host_ecc_exists(wasm_exec_env_t, const char *name)
static int32_t w_host_view_canvas_add_slider(wasm_exec_env_t, uint32_t widget_id, int32_t min, int32_t max, int32_t initial, int32_t step)
static int32_t w_host_base64_encode(wasm_exec_env_t, const uint8_t *in, uint32_t in_len, char *out, uint32_t out_size)
static int32_t w_host_ui_push_list(wasm_exec_env_t exec_env, const char *title, const ui_item_t *items, uint32_t count, uint32_t sel, uint32_t menu)
static int32_t w_host_ext_feature_available(wasm_exec_env_t, const char *feature)
static int32_t w_host_sao_eeprom_read(wasm_exec_env_t, uint32_t off, uint8_t *buf, uint32_t len)
static int32_t w_host_hex_decode(wasm_exec_env_t, const char *in, uint32_t in_len, uint8_t *out, uint32_t out_size)
static int32_t w_host_ui_acquire_exclusive(wasm_exec_env_t)
static int32_t w_host_timezone_offset(wasm_exec_env_t)
static int32_t w_host_view_canvas_set_text(wasm_exec_env_t, uint32_t widget_id, const char *text)
static int32_t w_host_fs_write(wasm_exec_env_t, const char *name, const uint8_t *data, uint32_t len)
static int32_t w_host_surface_set_shade(wasm_exec_env_t, uint32_t s, uint32_t shade)
static int32_t w_host_surface_draw_round_rect(wasm_exec_env_t, uint32_t s, int32_t x, int32_t y, int32_t w, int32_t h, int32_t r, uint32_t filled)
static int32_t w_host_view_canvas_get_focus(wasm_exec_env_t exec_env, uint32_t *out)
static int32_t w_host_i18n_tr_key(wasm_exec_env_t, const char *k, char *o, uint32_t c)
static int32_t w_host_view_canvas_set_ink(wasm_exec_env_t, uint32_t white)
static uint32_t w_host_http_content_length(wasm_exec_env_t, int32_t h)
static int32_t w_host_ble_is_enabled(wasm_exec_env_t)
static int32_t w_host_event_subscribe(wasm_exec_env_t, uint32_t mask, uint32_t action_id)
static int32_t w_host_pixel_strip_clear(wasm_exec_env_t)
static int32_t w_host_gpio_set_direction(wasm_exec_env_t, uint32_t pin, uint32_t dir)
static int32_t w_host_ui_push_confirm(wasm_exec_env_t, const char *text, uint32_t icon, uint32_t action_id)
static int32_t w_host_net_close(wasm_exec_env_t, uint32_t port)
static int32_t w_host_view_canvas_vline(wasm_exec_env_t, int32_t x, int32_t y, int32_t h)
static int32_t w_host_surface_hline(wasm_exec_env_t, uint32_t s, int32_t x, int32_t y, int32_t w)
static int32_t w_host_view_canvas_hline(wasm_exec_env_t, int32_t x, int32_t y, int32_t w)
static int32_t w_host_socket_read(wasm_exec_env_t, int32_t h, uint8_t *out, uint32_t cap, uint32_t timeout)
static int32_t w_host_display_draw_line(wasm_exec_env_t, int32_t x0, int32_t y0, int32_t x1, int32_t y1, uint32_t color)
static int32_t w_host_lockscreen_unregister_action(wasm_exec_env_t)
static int32_t w_host_view_canvas_set_text_size(wasm_exec_env_t, uint32_t size)
static int32_t w_host_display_draw_pixel(wasm_exec_env_t, int32_t x, int32_t y, uint32_t color)
static void w_host_set_sleep_inhibit(wasm_exec_env_t, uint32_t on)
static int32_t w_host_surface_draw_rect(wasm_exec_env_t, uint32_t s, int32_t x, int32_t y, int32_t w, int32_t h, uint32_t filled)
static int32_t w_host_ble_read_char(wasm_exec_env_t, uint32_t conn, uint32_t vh, uint32_t aid)
static int32_t w_host_surface_measure_text(wasm_exec_env_t exec_env, uint32_t s, const char *text, uint16_t *out_w, uint16_t *out_h)
static int32_t w_host_ui_push_slider(wasm_exec_env_t, const char *title, int32_t min, int32_t max, int32_t init, int32_t step, const char *unit, uint32_t action_id)
static int32_t w_host_sprite_create_from_surface(wasm_exec_env_t, uint32_t surface, uint32_t w, uint32_t h, uint32_t frames)
static uint32_t w_host_display_get_backlight(wasm_exec_env_t)
static uint32_t w_host_ble_get_mtu(wasm_exec_env_t, uint32_t conn)
static int32_t w_host_fs_view_markdown(wasm_exec_env_t, const char *name)
static int32_t w_host_gpio_pwm_set_duty(wasm_exec_env_t, uint32_t pin, uint32_t duty)
static int32_t w_host_surface_set_text_color(wasm_exec_env_t, uint32_t s, uint32_t inverted)
static uint32_t w_host_rmem_slot_size(wasm_exec_env_t)
static int32_t w_host_view_canvas_set_font(wasm_exec_env_t, uint32_t font_id)
static int32_t w_host_ui_push_pin_entry(wasm_exec_env_t, const char *title, uint32_t max_len, uint32_t max_attempts, uint32_t action_id)
static int32_t w_host_nvs_get_u32(wasm_exec_env_t exec_env, const char *key, uint32_t *out)
static int32_t w_host_ble_send_notification(wasm_exec_env_t, uint32_t ch, const uint8_t *data, uint32_t len)
static int32_t w_host_fs_view_image(wasm_exec_env_t, const char *name)
static int32_t w_host_view_canvas_elem_show(wasm_exec_env_t, uint32_t elem_id, uint32_t visible)
static int32_t w_host_sprite_stop(wasm_exec_env_t, uint32_t sprite)
static int32_t w_host_ext_feature_result(wasm_exec_env_t, int32_t status_code)
static int32_t w_host_surface_draw_text_aligned(wasm_exec_env_t, uint32_t s, int32_t x, int32_t y, int32_t w, const char *text, uint32_t align)
static int32_t w_host_ble_consume_notification(wasm_exec_env_t exec_env, uint16_t *vh_out, uint8_t *buf, uint32_t size)
static int32_t w_host_nvs_list_keys(wasm_exec_env_t exec_env, char *out, uint32_t *out_len)
static const NativeSymbol s_symbols[]
static int32_t w_host_ble_mac(wasm_exec_env_t exec_env, uint8_t *out)
static int32_t w_host_sprite_set_frame_durations(wasm_exec_env_t exec_env, uint32_t sprite, const uint16_t *ms, uint32_t count)
static int32_t w_host_display_draw_text(wasm_exec_env_t, int32_t x, int32_t y, const char *text, uint32_t size, uint32_t color)
static int32_t w_host_wifi_scan_done(wasm_exec_env_t)
static int32_t w_host_http_status(wasm_exec_env_t, int32_t h)
static int32_t w_host_http_perform(wasm_exec_env_t, int32_t h)
static int32_t w_host_wifi_scan_results(wasm_exec_env_t exec_env, void *out, uint32_t *count)
static int32_t w_host_i2c_write(wasm_exec_env_t, uint32_t bus, uint32_t addr, const uint8_t *data, uint32_t len)
static int32_t w_host_sprite_destroy(wasm_exec_env_t, uint32_t sprite)
static int32_t w_host_i2c_scan(wasm_exec_env_t exec_env, uint32_t bus, uint8_t *found, uint32_t *count)
static int32_t w_host_anim_pause(wasm_exec_env_t, uint32_t handle, uint32_t paused)
static int32_t w_host_view_canvas_remove_widget(wasm_exec_env_t, uint32_t widget_id)
static int32_t w_host_view_canvas_set_anim_policy(wasm_exec_env_t, uint32_t policy, uint32_t max_fps)
static int32_t w_host_is_time_set(wasm_exec_env_t)
static int32_t w_host_msg_send(wasm_exec_env_t exec_env, const uint8_t *addr, uint32_t addr_type, const char *mime, const uint8_t *data, uint32_t len, uint32_t flags)
static int32_t w_host_image_info(wasm_exec_env_t exec_env, const uint8_t *data, uint32_t len, uint16_t *out_w, uint16_t *out_h)
static int32_t w_host_local_time(wasm_exec_env_t exec_env, void *out)
static int32_t w_host_msg_consume(wasm_exec_env_t, uint8_t *buf, uint32_t buf_size, char *mime_out, uint32_t mime_size)
static int32_t w_host_http_open(wasm_exec_env_t, uint32_t method, const char *url, uint32_t timeout)
static int32_t w_host_view_canvas_elem_get_offset(wasm_exec_env_t exec_env, uint32_t elem_id, int16_t *ox, int16_t *oy)
static int32_t w_host_view_canvas_elem_get_bounds(wasm_exec_env_t exec_env, uint32_t elem_id, int16_t *x, int16_t *y, uint16_t *w, uint16_t *h)
static uint32_t w_host_display_height(wasm_exec_env_t)
static int32_t w_host_i2c_write_read(wasm_exec_env_t, uint32_t bus, uint32_t addr, const uint8_t *wr, uint32_t wr_len, uint8_t *rd, uint32_t rd_len)
static int32_t w_host_view_canvas_elem_move(wasm_exec_env_t, uint32_t elem_id, int32_t dx, int32_t dy)
static int32_t w_host_ui_push_message(wasm_exec_env_t, const char *t, uint32_t icon, uint32_t ms)
static int32_t w_host_sprite_create(wasm_exec_env_t, uint32_t w, uint32_t h, uint32_t frames, const uint8_t *data, uint32_t len)
static int32_t w_host_random_strict(wasm_exec_env_t, uint8_t *buf, uint32_t len)
static uint32_t w_host_charge_status(wasm_exec_env_t)
static int32_t w_host_i18n_tr_meta(wasm_exec_env_t, const char *f, char *o, uint32_t c)
static int32_t w_host_ui_consume_input_int(wasm_exec_env_t exec_env, int32_t *out)
static int32_t w_host_ui_consume_input_text(wasm_exec_env_t, char *out, uint32_t out_size)
static int32_t w_host_sao_eeprom_write(wasm_exec_env_t, uint32_t off, const uint8_t *buf, uint32_t len)
static int32_t w_host_ble_subscribe_char(wasm_exec_env_t, uint32_t conn, uint32_t vh, uint32_t aid)
static int32_t w_host_event_publish(wasm_exec_env_t, uint32_t subtype, uint32_t value)
static int32_t w_host_pixel_strip_init(wasm_exec_env_t, uint32_t gpio, uint32_t num, uint32_t format)
static uint32_t w_host_ble_conn_handle(wasm_exec_env_t)
bool register_host_imports()
Register the "cdc" import namespace with WAMR.
static int32_t w_host_cmd_consume(wasm_exec_env_t, char *out, uint32_t out_size)
static int32_t w_host_ui_set_inactivity(wasm_exec_env_t, uint32_t timeout_ms, uint32_t action_id)
static int32_t w_host_feature_enabled(wasm_exec_env_t, uint32_t feature_id)
static int32_t w_host_anim_cancel(wasm_exec_env_t, uint32_t handle)
static int32_t w_host_nvs_erase_all(wasm_exec_env_t)
static int32_t w_host_http_set_body(wasm_exec_env_t, int32_t h, const uint8_t *body, uint32_t len)
static int32_t w_host_vcard_received_add(wasm_exec_env_t, const char *vcard, uint32_t len)
static int32_t w_host_wifi_rssi(wasm_exec_env_t)
static int32_t w_host_key_pressed(wasm_exec_env_t, uint32_t key)
static int32_t w_host_ui_view_image(wasm_exec_env_t env, const uint8_t *data, uint32_t len)
static int32_t w_host_socket_open(wasm_exec_env_t, uint32_t proto, const char *host, uint32_t port, uint32_t timeout)
static int32_t w_host_surface_draw_line(wasm_exec_env_t, uint32_t s, int32_t x0, int32_t y0, int32_t x1, int32_t y1)
static int32_t w_host_sprite_set_frame(wasm_exec_env_t, uint32_t sprite, uint32_t frame)
static int32_t w_host_wifi_start_scan(wasm_exec_env_t)
static int32_t w_host_view_canvas_draw_sprite(wasm_exec_env_t, int32_t x, int32_t y, uint32_t sprite)
static int32_t w_host_wifi_ip(wasm_exec_env_t, char *out, uint32_t sz)
static int32_t w_host_net_accept(wasm_exec_env_t)
static int32_t w_host_ui_push_context_menu(wasm_exec_env_t exec_env, const char *title, const ui_item_t *items, uint32_t count, uint32_t sel)
static int32_t w_host_view_canvas_add_button(wasm_exec_env_t, uint32_t widget_id)
static int32_t w_host_base64_decode(wasm_exec_env_t, const char *in, uint32_t in_len, uint8_t *out, uint32_t out_size)
static int32_t w_host_str_to_utf8(wasm_exec_env_t, const char *in, char *out, uint32_t out_size)
One characteristic of a plugin GATT service (peripheral role).
One characteristic discovered on a connected peer (central role).
One device from a central scan.
A plugin GATT service definition (peripheral role). Always primary.
Tween description for host_anim_start(); zero-init unused fields.