public IEnumerable <Sample> GetData() { if (check) { check = false; if (smbus.Available) { int MFR_MODEL = smbus.GetReg(ADDRESS, 0x9a, 2); available = MFR_MODEL == 0x3298; } else { available = false; } } if (available) { int VOUT = smbus.GetReg(ADDRESS, 0x8b, 2); int IOUT = smbus.GetReg(ADDRESS, 0x8c, 2); int POUT = smbus.GetReg(ADDRESS, 0x96, 2); var VID = GetVID(VOUT); var Power = ReadLiteral(POUT); var Current = ReadLiteral(IOUT); yield return(Sample.Voltage("CPU VID", VID, true)); yield return(Sample.Other("CPU Current", Current, true)); yield return(Sample.Other("CPU Power", Power, true)); } }