Raspberry.IO.InterIntegratedCircuit.I2cDriver.SetPinMode C# (CSharp) Method

SetPinMode() private method

private SetPinMode ( uint pin, uint mode ) : bool
pin uint
mode uint
return bool
        private bool SetPinMode(uint pin, uint mode)
        {
            // Function selects are 10 pins per 32 bit word, 3 bits per pin
            var paddr = gpioAddress + (int) (Interop.BCM2835_GPFSEL0 + 4*(pin/10));
            var shift = (pin%10)*3;
            var mask = Interop.BCM2835_GPIO_FSEL_MASK << (int) shift;
            var value = mode << (int) shift;

            var existing = ReadUInt32(paddr) & mask;
            if (existing != value)
            {
                //Console.WriteLine($"existing is {x} masked:{x & mask} vs mask:{mask} value:{value}");
                WriteUInt32Mask(paddr, value, mask);
                return true;
            }
            else
            {
                return false;
            }
        }