void jshPinOutput(Pin pin, bool value) { if (jshIsPinValid(pin)) { if (!jshGetPinStateIsManual(pin)) jshPinSetState(pin, JSHPINSTATE_GPIO_OUT); jshPinSetValue(pin, value); } else jsExceptionHere(JSET_ERROR, "Invalid pin!"); }
bool jshPinInput(Pin pin) { bool value = false; if (jshIsPinValid(pin)) { if (!jshGetPinStateIsManual(pin)) jshPinSetState(pin, JSHPINSTATE_GPIO_IN); value = jshPinGetValue(pin); } else jsExceptionHere(JSET_ERROR, "Invalid pin!"); return value; }
JshPinFunction jshPinAnalogOutput(Pin pin, JsVarFloat value, JsVarFloat freq, JshAnalogOutputFlags flags) { /* we set the bit field here so that if the user changes the pin state * later on, we can get rid of the IRQs */ if (!jshGetPinStateIsManual(pin)) { BITFIELD_SET(jshPinSoftPWM, pin, 0); jshPinSetState(pin, JSHPINSTATE_GPIO_OUT); } BITFIELD_SET(jshPinSoftPWM, pin, 1); if (freq<=0) freq=50; jstPinPWM(freq, value, pin); return JSH_NOTHING; } // if freq<=0, the default is used