public bool RunI2CTest(UnitI2CTest[] I2CTests) { string stdErr; int hr; bool RetVal = true; if (!ConnectProgrammer()) { TestStatusUpdate(MTKTestMessageType.Information, "Error!!!"); Log.PrintLog(this, "Unable to connect to the programmer.", LogDetailLevel.LogRelevant); return(false); } hr = Programmer.SetProtocol(enumInterfaces.I2C, out stdErr); if (!IsSuccess(hr)) { Log.PrintLog(this, "Failed to set I2C protocol: " + stdErr, LogDetailLevel.LogRelevant); RetVal = false; } hr = Programmer.I2C_SetSpeed(enumI2Cspeed.CLK_100K, out stdErr); if (!IsSuccess(hr)) { Log.PrintLog(this, "Failed to set I2C bus clock speed: " + stdErr, LogDetailLevel.LogRelevant); RetVal = false; } hr = Programmer.I2C_ResetBus(out stdErr); if (!IsSuccess(hr)) { Log.PrintLog(this, "Failed to reset I2C bus: " + stdErr, LogDetailLevel.LogRelevant); RetVal = false; } byte[] DevList = new byte[0]; hr = Programmer.I2C_GetDeviceList(out DevList, out stdErr); if (!IsSuccess(hr)) { Log.PrintLog(this, "Failed to get device list: " + stdErr, LogDetailLevel.LogRelevant); RetVal = false; } Log.PrintLog(this, "I2C Bus reinitialized successfully.", LogDetailLevel.LogEverything); for (int i = 0; i < I2CTests.Count(); i++) { bool DeviceFound = false; for (int j = 0; j < DevList.Count(); j++) { if (DevList[j] == (byte)I2CTests[i].Address) { DeviceFound = true; break; } } if (DeviceFound) { if (I2CTests[i].Action == MTKI2CTestType.Write) { hr = Programmer.I2C_SendData(I2CTests[i].Address, I2CTests[i].DataBuffer, out stdErr); if (!IsSuccess(hr)) { Log.PrintLog(this, "Failed I2C write: " + stdErr, LogDetailLevel.LogRelevant); RetVal = false; } } else if (I2CTests[i].Action == MTKI2CTestType.Read) { hr = Programmer.I2C_ReadData(I2CTests[i].Address, I2CTests[i].NumRxBytes, out I2CTests[i].RxDataBuffer, out stdErr); if (!IsSuccess(hr)) { Log.PrintLog(this, "Failed I2C read: " + stdErr, LogDetailLevel.LogRelevant); RetVal = false; } } } else { Log.PrintLog(this, "Cannot find I2C device with address: " + I2CTests[i].Address.ToString("x2").ToUpper(), LogDetailLevel.LogEverything); RetVal = false; } } if (!DisconnectProgrammer()) { TestStatusUpdate(MTKTestMessageType.Information, "Error!!!"); Log.PrintLog(this, "Unable to disconnect from the programmer.", LogDetailLevel.LogRelevant); RetVal = false; } return(RetVal); }
int connected = 0; // DTV private void InitPPCOM(GUI_Settings guiSettings) { int hr; string strVolt; string strError; if (pp != null) { return; //Programmer already started } pp = new PP_ComLib_WrapperClass(); if (!pp.w_IsConnected()) { if (pp.w_ConnectToLatest() == 0) { AppendTextToLog("Detected PSoC Programmer COM object version " + pp.Version()); } else { AppendTextToLog("PSoC Programmer not installed. Please install PSoC Programmer and try again."); //Disconnect from COM-object and unload it pp = null; GC.GetTotalMemory(true); return; } } //Open and Configure MiniProg3 port hr = OpenPort(out strError); if (!SUCCEEDED(hr)) { rtbLog.AppendText("Connect error: " + strError); rtbLog.AppendText("\r\n"); //Disconnect from COM-object and unload it pp = null; GC.GetTotalMemory(true); return; } pp.SetProtocolClock(enumFrequencies.FREQ_03_0, out strError); if (guiSettings.conn == Connector.P10) { pp.SetProtocolConnector(1, out strError); } else { pp.SetProtocolConnector(0, out strError); } pp.SetProtocol(enumInterfaces.SWD_SWV, out strError); if (guiSettings.volt == Voltage.V5_0) { strVolt = "5.0"; } else if (guiSettings.volt == Voltage.V3_3) { strVolt = "3.3"; } else if (guiSettings.volt == Voltage.V2_5) { strVolt = "2.5"; } else if (guiSettings.volt == Voltage.V1_8) { strVolt = "1.8"; } else { strVolt = "EXT"; } if (strVolt != "EXT") { pp.SetPowerVoltage(strVolt, out strError); pp.PowerOn(out strError); } /* Init the event handler for received data */ pp.OnUSB2IIC_DataReceived += new PP_ComLib_Wrapper.PP_ComLib_WrapperClass.DelegateByteArrayParam(pp_USB2IIC_ReceivedData); //object ports; string[] portsStr; hr = pp.GetPorts(out portsStr, out strError); //string[] portsStr = ports as string[]; AppendTextToLog("Connected to '" + portsStr[0] + "' programmer!"); btnConnect.Text = "Disconnect"; // DTV connected = 1; // DTV }