void Device::SetupDevice(bool Debug, int PinNumber, bool Digital, bool Input, int MinValue, int MaxValue, int InitialValue, int StepValue, bool StepDirectionUp, int DelayToChange) { //Serial.println("Device Setup"); pinNumber = PinNumber; digital = Digital; input = Input; maxValue = MaxValue; minValue = MinValue; delayToChangeValue = DelayToChange; lastUpdated = millis(); stepValue = StepValue; stepDirectionUp = StepDirectionUp; currentValue = InitialValue; //Setup PIN Mode pinMode(pinNumber,getPinMode()); }
void resetPinMode(int pin) { if (pin >= 0 && pin < NUM_DIGITAL_PINS) { PinMode mode = getPinMode(pin); switch (mode) { case PinModeUnused: break; case PinModeInput: if (resetPinModeInput != NULL) { resetPinModeInput(pin); } goto change; case PinModeOutput: if (resetPinModeOutput != NULL) { resetPinModeOutput(pin); } goto change; case PinModeInputPullUp: if (resetPinModeInputPullUp != NULL) { resetPinModeInputPullUp(pin); } goto change; case PinModeOutputHigh: if (resetPinModeOutputHigh != NULL) { resetPinModeOutputHigh(pin); } goto change; case PinModeOutputOpenDrain: if (resetPinModeOutputOpenDrain != NULL) { resetPinModeOutputOpenDrain(pin); } goto change; case PinModeAnalogRead: if (resetPinModeAnalogRead != NULL) { resetPinModeAnalogRead(pin); } goto change; case PinModeAnalogWrite: if (resetPinModeAnalogWrite != NULL) { resetPinModeAnalogWrite(pin); } goto change; case PinModeTone: if (resetPinModeTone != NULL) { resetPinModeTone(pin); } goto change; case PinModeServo: if (resetPinModeServo != NULL) { resetPinModeServo(pin); } goto change; case PinModeDac: if (resetPinModeDac != NULL) { resetPinModeDac(pin); } goto change; case PinModeOther: if (resetPinModeOther != NULL) { resetPinModeOther(pin); } change: changePinMode(pin, PinModeUnused); break; default: break; } } }