static void digitalWrite_global_method(JSVirtualMachine * vm, JSBuiltinInfo * builtin_info, void *instance_context, JSNode * result_return, JSNode * args) { JSInt32 pin; int mode; result_return->type = JS_BOOLEAN; result_return->u.vboolean = 0; if (args->u.vinteger == 2) { pin = js_vm_to_int32(vm, &args[1]); mode = js_vm_to_boolean(vm, &args[2]); switch(pin) { case 0: REG_WRITE(CYGARC_PADR, 0, mode); break; case 1: REG_WRITE(CYGARC_PADR, 1, mode); break; case 2: REG_WRITE(CYGARC_PADR, 2, mode); break; case 3: REG_WRITE(CYGARC_PADR, 3, mode); break; case 4: REG_WRITE(CYGARC_PADR, 4, mode); break; case 5: REG_WRITE(CYGARC_PADR, 5, mode); break; case 6: REG_WRITE(CYGARC_PADR, 6, mode); break; case 7: REG_WRITE(CYGARC_PADR, 7, mode); break; default: return; } result_return->u.vboolean = 1; } }
static void digitalRead_global_method(JSVirtualMachine * vm, JSBuiltinInfo * builtin_info, void *instance_context, JSNode * result_return, JSNode * args) { JSInt32 pin; result_return->type = JS_BOOLEAN; result_return->u.vboolean = 0; if (args->u.vinteger == 1) { pin = js_vm_to_int32(vm, &args[1]); switch(pin) { case 0: result_return->u.vboolean = REG_READ(CYGARC_PADR, 0); break; case 1: result_return->u.vboolean = REG_READ(CYGARC_PADR, 1); break; case 2: result_return->u.vboolean = REG_READ(CYGARC_PADR, 2); break; case 3: result_return->u.vboolean = REG_READ(CYGARC_PADR, 3); break; case 4: result_return->u.vboolean = REG_READ(CYGARC_PADR, 4); break; case 5: result_return->u.vboolean = REG_READ(CYGARC_PADR, 5); break; case 6: result_return->u.vboolean = REG_READ(CYGARC_PADR, 6); break; case 7: result_return->u.vboolean = REG_READ(CYGARC_PADR, 7); break; default: return; } } }
static void parseInt_global_method (JSVirtualMachine *vm, JSBuiltinInfo *builtin_info, void *instance_context, JSNode *result_return, JSNode *args) { JSInt32 base = 0; char *cp, *end; result_return->type = JS_INTEGER; if (args->u.vinteger != 1 && args->u.vinteger != 2) { sprintf_P (vm->error, b_core_string_0); js_vm_error (vm); } if (args[1].type == JS_STRING) cp = js_string_to_c_string (vm, &args[1]); else { JSNode input; /* Convert the input to string. */ js_vm_to_string (vm, &args[1], &input); cp = js_string_to_c_string (vm, &input); } if (args->u.vinteger == 2) { if (args[2].type == JS_INTEGER) base = args[2].u.vinteger; else base = js_vm_to_int32 (vm, &args[2]); } result_return->u.vinteger = strtol (cp, &end, base); js_free (cp); if (cp == end) result_return->type = JS_NAN; }