static void invoke_cb(struct user_data *ud, const char *name, v7_val_t ev) { struct v7 *v7 = ud->v7; v7_val_t met = v7_get(v7, ud->ws, name, ~0); if (!v7_is_undefined(met)) { sj_invoke_cb1(v7, met, ev); } }
size_t sj_uart_recv_cb(void *ctx, const char *d, size_t len) { struct user_data *ud = (struct user_data *) ctx; v7_val_t s, cb = ud->cb; size_t want = ud->want; if (len < want || v7_is_undefined(ud->cb)) return 0; ud->cb = v7_create_undefined(); ud->want = 0; s = v7_create_string(ud->v7, d, want, 1); sj_invoke_cb1(ud->v7, cb, s); return want; }
static int notify_js(enum js_update_status us, const char *info) { #ifndef CS_DISABLE_JS if (!v7_is_undefined(s_updater_notify_cb)) { if (info == NULL) { sj_invoke_cb1(s_v7, s_updater_notify_cb, v7_mk_number(s_v7, us)); } else { sj_invoke_cb2(s_v7, s_updater_notify_cb, v7_mk_number(s_v7, us), v7_mk_string(s_v7, info, ~0, 1)); }; return 1; } #else (void) us; (void) info; #endif return 0; }
void sj_wifi_scan_done(const char **ssids, void *arg) { struct wifi_cb_arg *cba = (struct wifi_cb_arg *) arg; struct v7 *v7 = cba->v7; v7_val_t res = v7_mk_undefined(); const char **p; v7_own(v7, &res); if (ssids != NULL) { res = v7_mk_array(v7); for (p = ssids; *p != NULL; p++) { v7_array_push(v7, res, v7_mk_string(v7, *p, strlen(*p), 1)); } } /* Free the struct in case callback launches a new scan. */ cba->v7 = NULL; v7_disown(v7, &cba->v); sj_invoke_cb1(v7, cba->v, res); v7_disown(v7, &res); }
void sj_wifi_scan_done(const char **ssids) { struct v7 *v7 = s_v7; v7_val_t cb = v7_get(v7, s_wifi, "_scb", ~0); v7_val_t res = v7_create_undefined(); const char **p; if (!v7_is_function(cb)) return; v7_own(v7, &res); if (ssids != NULL) { res = v7_create_array(v7); for (p = ssids; *p != NULL; p++) { v7_array_push(v7, res, v7_create_string(v7, *p, strlen(*p), 1)); } } else { res = v7_create_undefined(); } sj_invoke_cb1(v7, cb, res); v7_disown(v7, &res); v7_set(v7, s_wifi, "_scb", ~0, V7_PROPERTY_DONT_ENUM | V7_PROPERTY_HIDDEN, v7_create_undefined()); }
void sj_http_success_callback(struct v7 *v7, v7_val_t cb, const char *data, size_t data_len) { sj_invoke_cb1(v7, cb, v7_create_string(v7, data, data_len, 1)); }
void sj_wifi_on_change_js(enum sj_wifi_status event, void *arg) { struct wifi_cb_arg *cba = (struct wifi_cb_arg *) arg; if (v7_is_callable(cba->v7, cba->v)) { sj_invoke_cb1(cba->v7, cba->v, v7_mk_number(cba->v7, event)); } }
void sj_wifi_on_change_callback(enum sj_wifi_status event) { struct v7 *v7 = s_v7; v7_val_t cb = v7_get(v7, s_wifi, "_ccb", ~0); if (v7_is_undefined(cb) || v7_is_null(cb)) return; sj_invoke_cb1(s_v7, cb, v7_create_number(event)); }