Esempio n. 1
0
        public void SetLevel(EapiGpioId id, GpioLevelEnum levelEnum)
        {
            GpioCapability gpioCapabilities = GetGpioCapabilities();

            if (!gpioCapabilities.IsOutput(id))
            {
                throw new Exception(id + " is not an output");
            }
            uint bitmask = (uint)(gpioCapabilities.OutputCapabilityMask & (1 << (int)id));

            int newLevelVAlues = (int)ReadGpioRegister();

            if (levelEnum == GpioLevelEnum.EapiGpioHigh)
            {
                newLevelVAlues |= 1 << (int)id;
            }
            else
            {
                newLevelVAlues &= ~(1 << (int)id);
            }

            _logger.Information("SetLevel {0} to {1} =>  bitmask={2}, newLevelVAlues={3}", id, levelEnum, Convert.ToString(bitmask, 2), Convert.ToString(newLevelVAlues, 2));


            uint resultCode = EApiGPIOSetLevel(_eapiIdGpioBank00, bitmask, (uint)(0xffff & newLevelVAlues));

            if (!_eApiStatusCodes.IsSuccess(resultCode))
            {
                throw new Exception("EApiGPIOSetLevel: " + _eApiStatusCodes.GetStatusStringFrom(resultCode));
            }
        }
Esempio n. 2
0
        public void SetAll(GpioLevelEnum levelEnum)
        {
            GpioCapability gpioCapabilities = GetGpioCapabilities();
            uint           bitmask          = gpioCapabilities.OutputCapabilityMask;

            uint newLevelValues = (uint)(levelEnum == GpioLevelEnum.EapiGpioHigh ? 0xffff : 0);

            _logger.Information("SetAll: id={0}, bitmask={1}, new level={2}", _eapiIdGpioBank00, bitmask.ToBinaryString(), newLevelValues.ToBinaryString());

            uint resultCode = EApiGPIOSetLevel(_eapiIdGpioBank00, bitmask, newLevelValues);

            if (!_eApiStatusCodes.IsSuccess(resultCode))
            {
                throw new Exception("EApiGPIOSetLevel: " + _eApiStatusCodes.GetStatusStringFrom(resultCode));
            }
        }