public static int I2CSpeed(uint value) { lock (locker) { if ((value <= MAXI2CSPEED) && (value >= MINI2CSPEED) && DeviceOpen) { int rtval = MCP2221.M_Mcp2221_SetSpeed(mHandle, value); if (rtval != MCP2221.M_E_NO_ERR) { return(I2C_BAD_SETSPEED); } } return(I2C_NO_ERROR); } }
private static int OpenbyIndex() { int rtval; uint nDev = 0; DeviceInfo.LibraryVersion = MCP2221.M_Mcp2221_GetLibraryVersion(); rtval = MCP2221.M_Mcp2221_GetConnectedDevices(vid, pid, ref nDev); if (rtval == MCP2221.M_E_NO_ERR) { mHandle = MCP2221.M_Mcp2221_OpenByIndex(vid, pid, nDev - 1); rtval = MCP2221.M_Mcp2221_GetLastError(); if (rtval == MCP2221.M_E_NO_ERR) { DeviceInfo.Manufacture = MCP2221.M_Mcp2221_GetManufacturerDescriptor(mHandle); DeviceInfo.Product = MCP2221.M_Mcp2221_GetProductDescriptor(mHandle); DeviceInfo.Serial = MCP2221.M_Mcp2221_GetSerialNumberDescriptor(mHandle); DeviceInfo.FactorySN = MCP2221.M_Mcp2221_GetFactorySerialNumber(mHandle); DeviceInfo.HardwareVer = MCP2221.M_Mcp2221_GetHardwareRevision(mHandle); DeviceInfo.FirmwareRev = MCP2221.M_Mcp2221_GetFirmwareRevision(mHandle); rtval = MCP2221.M_Mcp2221_GetLastError(); if (rtval == MCP2221.M_E_NO_ERR) { int rval = MCP2221.M_Mcp2221_SetSpeed(mHandle, i2cspeed); int loop = 100; while (rval != MCP2221.M_E_NO_ERR) { MCP2221.M_Mcp2221_I2cCancelCurrentTransfer(mHandle); MCP2221.M_Mcp2221_Reset(mHandle); MCP2221.M_Mcp2221_GetConnectedDevices(vid, pid, ref nDev); mHandle = MCP2221.M_Mcp2221_OpenByIndex(vid, pid, nDev - 1); rval = MCP2221.M_Mcp2221_SetSpeed(mHandle, i2cspeed); loop--; if (loop == 0) { break; } } } } } return(rtval); }