/** * @file Xpl2PhStatus.cpp * @brief Structured PH status message (EV_STATUS_MSG_PH, Appendix B). */ #include "Xpl2PhStatus.h" #include Xpl2PhStatus Xpl2PhStatus::fromParams (const QVariantList ¶ms) { Xpl2PhStatus s; int n = params.size (); if (n < 3) return s; s.controllerId = params[0].toInt (); s.statusLevel = params[1].toInt (); s.printheadId = params[2].toInt (); /* Level 1: fields at indices 3-30 */ if (n > 3) s.temperature = params[3].toFloat (); if (n > 4) s.humidity = params[4].toFloat (); if (n > 5) s.mcuTemperature = params[5].toFloat (); if (n > 6) s.pdsVoltage = params[6].toFloat (); if (n > 7) s.mdsVoltage = params[7].toFloat (); if (n > 8) s.systemVoltage = params[8].toFloat (); if (n > 9) s.eFuseCurrent = params[9].toFloat (); if (n > 10) s.nozzleCurrent = params[10].toFloat (); if (n > 11) s.vdd = params[11].toFloat (); if (n > 12) s.temperatureTrip = params[12].toInt () != 0; if (n > 13) s.pdsOverVoltageTrip = params[13].toInt () != 0; if (n > 14) s.pdsUnderVoltageTrip = params[14].toInt () != 0; if (n > 15) s.pdsSupplyErrorTrip = params[15].toInt () != 0; if (n > 16) s.mdsOverVoltageTrip = params[16].toInt () != 0; if (n > 17) s.mdsUnderVoltageTrip = params[17].toInt () != 0; if (n > 18) s.supplyOverVoltageTrip = params[18].toInt () != 0; if (n > 19) s.supplyUnderVoltageTrip = params[19].toInt () != 0; if (n > 20) s.eFuseOverCurrentTrip = params[20].toInt () != 0; if (n > 21) s.eFuseInputVoltageErrorTrip = params[21].toInt () != 0; if (n > 22) s.eFuseFaultTrip = params[22].toInt () != 0; if (n > 23) s.flashFaultyTrip = params[23].toInt () != 0; if (n > 24) s.flashChecksumErrorTrip = params[24].toInt () != 0; if (n > 25) s.dutyCycle = params[25].toFloat (); if (n > 26) s.pwmFrequency = params[26].toFloat (); if (n > 27) s.drive = params[27].toInt (); if (n > 28) s.nozzleDriveFrequency = params[28].toFloat (); if (n > 29) s.nozzleDriveDutyCycle = params[29].toFloat (); if (n > 30) s.onTimeSeconds = params[30].toInt (); /* Level 2: fields at indices 31-61 */ if (s.statusLevel < 2 || n <= 31) return s; if (n > 31) s.accelerometerId = params[31].toInt (); if (n > 32) s.mcuId = params[32].toString (); if (n > 33) s.flashMemoryId = params[33].toString (); if (n > 34) s.temperatureSensorSerialNumber = params[34].toInt (); if (n > 35) s.mcuHardwareVersion = params[35].toString (); if (n > 36) s.mcuFirmwareVersion = params[36].toString (); if (n > 37) s.mcuFirmwareVariant = params[37].toString (); if (n > 38) s.fpgaHardwareVersion = params[38].toString (); if (n > 39) s.fpgaFirmwareVersion = params[39].toString (); if (n > 40) s.bootloaderVersion = params[40].toString (); if (n > 41) s.maxAllowedTemperature = params[41].toFloat (); if (n > 42) s.pdsVoltageMax = params[42].toFloat (); if (n > 43) s.pdsVoltageMin = params[43].toFloat (); if (n > 44) s.pdsVoltageSetting = params[44].toFloat (); if (n > 45) s.mdsVoltageMax = params[45].toFloat (); if (n > 46) s.mdsVoltageMin = params[46].toFloat (); if (n > 47) s.eFuseCurrentMax = params[47].toFloat (); if (n > 48) s.measuredHardwareVersion = params[48].toString (); if (n > 49) s.gyroX = params[49].toInt (); if (n > 50) s.gyroY = params[50].toInt (); if (n > 51) s.gyroZ = params[51].toInt (); if (n > 52) s.accelerationX = params[52].toInt (); if (n > 53) s.accelerationY = params[53].toInt (); if (n > 54) s.accelerationZ = params[54].toInt (); if (n > 55) s.purge = params[55].toInt (); if (n > 56) s.purgeState = params[56].toInt (); if (n > 57) s.purgeDelay = params[57].toInt (); if (n > 58) s.purgeCounter = params[58].toInt (); if (n > 59) s.cleaningStartPeriod = params[59].toInt (); if (n > 60) s.cleaningEndPeriod = params[60].toInt (); if (n > 61) s.cleaningStepPeriod = params[61].toInt (); if (n > 62) s.cleaningPeriod = params[62].toInt (); return s; }