void keyboardInit() { extKIrqHandler = 0; kBuffer = 16; int x; /* * set 5-8 lines to input with pull down, * detecting rising edge */ for (x = 5; x <= 8; x++) { setGpioFunct(pinToGpio[x], GPINPUT); setPull(pinToGpio[x], GPDOWN); setDetect(pinToGpio[x], GPENABLE, GPRISE); } /* * turn 1-4 lines high to allow interrupt * to be generated */ for (x = 1; x <= 4; x++) { setGpioFunct(pinToGpio[x], GPOUTPUT); setPin(pinToGpio[x]); setPull(pinToGpio[x], GPDOWN); } /* * sets interrupt controller */ *irqEnable2 = ((1 << 20) | (1 << 19) | (1 << 18) | (1 << 17)); /* * takes care of CPSR */ irqEnable(); return; }
//% help=pins/set-pull weight=3 advanced=true //% blockId=device_set_pull block="set pull|pin %pin|to %pull" //% pin.fieldEditor="gridpicker" pin.fieldOptions.columns=4 //% pin.fieldOptions.tooltips="false" pin.fieldOptions.width="300" void setPull(DigitalPin name, PinPullMode pull) { PinMode m = pull == PinPullMode::PullDown ? PinMode::PullDown : pull == PinPullMode::PullUp ? PinMode::PullUp : PinMode::PullNone; PINOP(setPull(m)); }
bool DisplayStateA::parseSuitableMessage(const CanFrame &frame) { bool update = false; update = setRb (frame[2] & (1 << 7)) || update; update = setRbs (frame[2] & (1 << 6)) || update; update = setVk (frame[2] & (1 << 5)) || update; update = setPull (frame[2] & (1 << 3)) || update; update = setOtpr (frame[2] & (1 << 2)) || update; update = setOc (frame[2] & (1 << 1)) || update; update = setK20 (frame[2] & (1 << 0)) || update; update = setFreq (frame[3] & (1 << 7)) || update; if (frame[3] & (1 << 6)) update = update || setDriveMode (WORKING); else if (frame[2] & (1 << 4)) update = update || setDriveMode (SHUNTING); else update = update || setDriveMode (TRAIN); return update; }