protected void InitLibAndHandle(int channelIndex)
        {
            if (_i2cHandle != IntPtr.Zero)
            {
                return;
            }

            LibMpsse.Init();

            var config = Config;

            var result = CheckResult(LibMpsse.I2C_OpenChannel(channelIndex, out _i2cHandle));

            if (_i2cHandle == IntPtr.Zero)
            {
                throw new I2CNotConnectedException(FtdiMpsseI2CResult.InvalidAddress);
            }


            result = CheckResult(LibMpsse.I2C_InitChannel(_i2cHandle, ref config));

            Config = config;
        }
 public GpioI2CDevice(I2C_CHANNEL_CONFIG config, int channelIndex) : base(config, channelIndex)
 {
 }
 public GpioI2CDeviceBaseClass(I2C_CHANNEL_CONFIG config, int channelIndex)
 {
     Config = config;
     InitLibAndHandle(channelIndex);
     GpioInit();
 }