Index: .gitignore =================================================================== diff -u -r6210028a421d6259963bf172efbe4f23abfecf2f -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- .gitignore (.../.gitignore) (revision 6210028a421d6259963bf172efbe4f23abfecf2f) +++ .gitignore (.../.gitignore) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -1,5 +1,6 @@ *.autosave /common +/scripts tags scripts/denali resources/settings Index: AlarmMapping.csv =================================================================== diff -u -rcf61c7736f11f4b75a4e2df803f29bdc7769db53 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- AlarmMapping.csv (.../AlarmMapping.csv) (revision cf61c7736f11f4b75a4e2df803f29bdc7769db53) +++ AlarmMapping.csv (.../AlarmMapping.csv) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -98,7 +98,7 @@ 97,"DG fill conductivity out of range." 98,"HD battery communication fault." 99,"HD syringe pump stall alarm." - 100,"HD no cartridge self-test timeout." + 100,"Available for use." 101,"UI POST HD communication failure." 102,"DG heat disinfect temperature gradient out of range." 103,"HD invalid calibration CRC." @@ -164,17 +164,17 @@ 163,"HD sees primary load cell for reservoir 1 change too much too fast." 164,"HD sees primary load cell for reservoir 2 change too much too fast." 165,"HD in treatment rinseback operation timeout." - 166,"Available for use." + 166,"Test alarm, clear top only." 167,"HD cartridge door opened alarm." - 168,"Available for use." + 168,"Test alarm, clear top only." 169,"DG Dialysate flow rate out of maximum range." 170,"HD syringe empty alarm." 171,"HD syringe pump occlusion alarm." 172,"HD syringe pump not enough Heparin alarm." 173,"HD RTC configuration error." 174,"HD RTC or timer accuracy failure." 175,"HD pump direction status error." - 176,"HD dialysate temperature above high safety range." + 176,"Test alarm, clear top only." 177,"DG software fault.\nSoftware found itself in an unexpected state." 178,"HD communication timeout." 179,"DG FPGA communication down for too long." @@ -235,7 +235,7 @@ 234,"DG inlet water pressure in high range." 235,"HD in treatment stopped sub-mode after rinseback completed (no escalation)." 236,"HD needs new cartridge to be installed." - 237,"HD prime saline dialyzer time out alarm." + 237,"Available for useALARM_ID_AVAILABLE_13." 238,"HD no cartridge loaded or installed improperly alarm." 239,"HD fail to remove cartridge alarm." 240,"DG bicarb conductivity out of range during bicarb pump check alarm." @@ -260,7 +260,7 @@ 259,"HD temperatures out of range." 260,"HD UI POST Application Integrity (Sha256Sum) failure." 261,"HD UI POST CANBus failure." - 262,"HD UI POST Display failure." + 262,"Alarm Id available." 263,"HD UI POST Touch failure." 264,"HD UI POST SD-Card failure." 265,"HD UI POST RTC failure." @@ -283,7 +283,7 @@ 282,"Bicarbonate concentration bottle low volume alarm." 283,"DG load cells weight out of range." 284,"DG load cells primary/back up drift out of range." - 285,"Available for use." + 285,"HD processor is in RO permeate sample mode." 286,"DG concentrate cap not in proper position." 287,"HD processor clock speed checks against FPGA clock failure." 288,"HD load cells primary/back up drift out of range." @@ -292,7 +292,7 @@ 291,"HD processor is in Disinfect Flush mode." 292,"HD processor is in Disinfect Heat mode." 293,"HD processor is in Disinfect Chemical mode." - 294,"Available for use." + 294,"HD processor is in Disinfect active cool mode." 295,"HD UI POST CloudSync failure." 296,"DG TDi sensors FPGA fault." 297,"DG TRo sensors FPGA fault." Index: cppcheck.err =================================================================== diff -u -rcf61c7736f11f4b75a4e2df803f29bdc7769db53 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- cppcheck.err (.../cppcheck.err) (revision cf61c7736f11f4b75a4e2df803f29bdc7769db53) +++ cppcheck.err (.../cppcheck.err) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -1,63 +1,54 @@ -05/31/2023 2:53 +07/18/2023 3:05 Behrouz NematiPour sources/canbus/MessageAcknowModel.h:58:9: performance: When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don't explicitly write them to the initialization list. You could avoid assigning '_sequence' a value by passing the value to the constructor in the initialization list. [useInitializationList] _sequence = vSequence ; ^ sources/canbus/MessageAcknowModel.h:59:9: performance: When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don't explicitly write them to the initialization list. You could avoid assigning '_frameList' a value by passing the value to the constructor in the initialization list. [useInitializationList] _frameList = vFrameList ; ^ -sources/device/DeviceModels.h:50:21: style: Consider using std::accumulate algorithm instead of a raw loop. [useStlAlgorithm] - mString += QString(",%1").arg(param.toString()); - ^ -sources/storage/FileHandler.h:102:14: style: Condition '!createFolder' is always false [knownConditionTrueFalse] +sources/storage/FileHandler.h:107:14: style: Condition '!createFolder' is always false [knownConditionTrueFalse] if ( ! createFolder ) { if ( ! dstDir.exists() ) { err = eDstFolderNotExist ; goto lErr; }} ^ -sources/storage/FileHandler.h:95:35: note: Assignment 'createFolder=true', assigned value is 1 +sources/storage/FileHandler.h:99:35: note: Assignment 'createFolder=true', assigned value is 1 bool createFolder = true; ^ -sources/storage/FileHandler.h:102:14: note: Condition '!createFolder' is always false +sources/storage/FileHandler.h:107:14: note: Condition '!createFolder' is always false if ( ! createFolder ) { if ( ! dstDir.exists() ) { err = eDstFolderNotExist ; goto lErr; }} ^ -sources/ApplicationPost.cpp:113:9: style: Condition '!ok' is always false [knownConditionTrueFalse] +sources/storage/FileHandler.h:96:17: style: Local variable 'totalSize' shadows outer function [shadowFunction] + qint64 totalSize = 0; + ^ +sources/storage/FileHandler.h:77:21: note: Shadowed declaration + static quint64 totalSize(const QFileInfoList &vFileInfoList); + ^ +sources/storage/FileHandler.h:96:17: note: Shadow variable + qint64 totalSize = 0; + ^ +sources/device/DeviceModels.h:50:21: style: Consider using std::accumulate algorithm instead of a raw loop. [useStlAlgorithm] + mString += QString(",%1").arg(param.toString()); + ^ +sources/storage/FileHandler.h:91:33: style: Variable 'err' is assigned a value that is never used. [unreadVariable] + FileCopyError_Enums err = eOK; + ^ +sources/ApplicationPost.cpp:115:9: style: Condition '!ok' is always false [knownConditionTrueFalse] if (! ok) emit didFail(Gui::GuiAlarmID::ALARM_ID_HD_UI_POST_FAILURE_DISPLAY); ^ -sources/ApplicationPost.cpp:111:15: note: Assignment 'ok=true', assigned value is 1 +sources/ApplicationPost.cpp:113:15: note: Assignment 'ok=true', assigned value is 1 bool ok = true; ^ -sources/ApplicationPost.cpp:113:9: note: Condition '!ok' is always false +sources/ApplicationPost.cpp:115:9: note: Condition '!ok' is always false if (! ok) emit didFail(Gui::GuiAlarmID::ALARM_ID_HD_UI_POST_FAILURE_DISPLAY); ^ -sources/ApplicationPost.cpp:208:9: style: Condition '!ok' is always false [knownConditionTrueFalse] - if (! ok) emit didFail(Gui::GuiAlarmID::ALARM_ID_HD_UI_POST_FAILURE_ETHERNET); - ^ -sources/ApplicationPost.cpp:206:15: note: Assignment 'ok=true', assigned value is 1 - bool ok = true; - ^ -sources/ApplicationPost.cpp:208:9: note: Condition '!ok' is always false - if (! ok) emit didFail(Gui::GuiAlarmID::ALARM_ID_HD_UI_POST_FAILURE_ETHERNET); - ^ -sources/ApplicationPost.cpp:222:9: style: Condition '!ok' is always false [knownConditionTrueFalse] +sources/ApplicationPost.cpp:253:9: style: Condition '!ok' is always false [knownConditionTrueFalse] if (! ok) emit didFail(Gui::GuiAlarmID::ALARM_ID_HD_UI_POST_FAILURE_SOUND); ^ -sources/ApplicationPost.cpp:220:15: note: Assignment 'ok=true', assigned value is 1 +sources/ApplicationPost.cpp:251:15: note: Assignment 'ok=true', assigned value is 1 bool ok = true; ^ -sources/ApplicationPost.cpp:222:9: note: Condition '!ok' is always false +sources/ApplicationPost.cpp:253:9: note: Condition '!ok' is always false if (! ok) emit didFail(Gui::GuiAlarmID::ALARM_ID_HD_UI_POST_FAILURE_SOUND); ^ -sources/storage/FileHandler.h:92:17: style: Local variable 'totalSize' shadows outer function [shadowFunction] - qint64 totalSize = 0; - ^ -sources/storage/FileHandler.h:75:21: note: Shadowed declaration - static quint64 totalSize(const QFileInfoList &vFileInfoList); - ^ -sources/storage/FileHandler.h:92:17: note: Shadow variable - qint64 totalSize = 0; - ^ -sources/storage/FileHandler.h:87:33: style: Variable 'err' is assigned a value that is never used. [unreadVariable] - FileCopyError_Enums err = eOK; - ^ -sources/MainTimer.cpp:69:16: style: The scope of the variable 'oH' can be reduced. Warning: Be careful when fixing this message, especially when there are inner loops. Here is an example where cppcheck will write that the scope for 'i' can be reduced: +sources/MainTimer.cpp:78:16: style: The scope of the variable 'oH' can be reduced. Warning: Be careful when fixing this message, especially when there are inner loops. Here is an example where cppcheck will write that the scope for 'i' can be reduced: void f(int x) { int i = 0; @@ -72,7 +63,7 @@ When you see this message it is always safe to reduce the variable scope 1 level. [variableScope] static int oH,oM,oS; int cH,cM,cS; ^ -sources/MainTimer.cpp:69:19: style: The scope of the variable 'oM' can be reduced. Warning: Be careful when fixing this message, especially when there are inner loops. Here is an example where cppcheck will write that the scope for 'i' can be reduced: +sources/MainTimer.cpp:78:19: style: The scope of the variable 'oM' can be reduced. Warning: Be careful when fixing this message, especially when there are inner loops. Here is an example where cppcheck will write that the scope for 'i' can be reduced: void f(int x) { int i = 0; @@ -87,7 +78,7 @@ When you see this message it is always safe to reduce the variable scope 1 level. [variableScope] static int oH,oM,oS; int cH,cM,cS; ^ -sources/MainTimer.cpp:69:22: style: The scope of the variable 'oS' can be reduced. Warning: Be careful when fixing this message, especially when there are inner loops. Here is an example where cppcheck will write that the scope for 'i' can be reduced: +sources/MainTimer.cpp:78:22: style: The scope of the variable 'oS' can be reduced. Warning: Be careful when fixing this message, especially when there are inner loops. Here is an example where cppcheck will write that the scope for 'i' can be reduced: void f(int x) { int i = 0; @@ -102,33 +93,36 @@ When you see this message it is always safe to reduce the variable scope 1 level. [variableScope] static int oH,oM,oS; int cH,cM,cS; ^ -sources/cloudsync/CloudSyncController.cpp:420:13: style: Consider using std::accumulate algorithm instead of a raw loop. [useStlAlgorithm] +sources/cloudsync/CloudSyncController.cpp:431:13: style: Consider using std::accumulate algorithm instead of a raw loop. [useStlAlgorithm] buf += item.toString(); ^ -sources/cloudsync/CloudSyncController.cpp:226:27: style: Variable 'error' is assigned a value that is never used. [unreadVariable] +sources/cloudsync/CloudSyncController.cpp:239:27: style: Variable 'error' is assigned a value that is never used. [unreadVariable] Errors_Enum error = eError_Unknown; ^ -sources/cloudsync/CloudSyncController.cpp:250:27: style: Variable 'error' is assigned a value that is never used. [unreadVariable] +sources/cloudsync/CloudSyncController.cpp:263:27: style: Variable 'error' is assigned a value that is never used. [unreadVariable] Errors_Enum error = eError_Unknown; ^ -sources/cloudsync/CloudSyncController.cpp:523:27: style: Variable 'error' is assigned a value that is never used. [unreadVariable] +sources/cloudsync/CloudSyncController.cpp:534:27: style: Variable 'error' is assigned a value that is never used. [unreadVariable] Errors_Enum error = eError_Unknown; ^ -sources/cloudsync/CloudSyncController.cpp:572:27: style: Variable 'error' is assigned a value that is never used. [unreadVariable] +sources/cloudsync/CloudSyncController.cpp:589:27: style: Variable 'error' is assigned a value that is never used. [unreadVariable] Errors_Enum error = eError_Unknown; ^ -sources/cloudsync/CloudSyncController.cpp:581:51: style: Variable 'error' is assigned a value that is never used. [unreadVariable] +sources/cloudsync/CloudSyncController.cpp:598:51: style: Variable 'error' is assigned a value that is never used. [unreadVariable] if ( isDuplicate(messageID, data) ) { error = eError_Duplicate; args = { messageID }; ok = false; return ok; } // TODO: goto lErr; } don't log it just ignore and return false. ^ -sources/cloudsync/CloudSyncController.cpp:581:76: style: Variable 'args' is assigned a value that is never used. [unreadVariable] +sources/cloudsync/CloudSyncController.cpp:598:76: style: Variable 'args' is assigned a value that is never used. [unreadVariable] if ( isDuplicate(messageID, data) ) { error = eError_Duplicate; args = { messageID }; ok = false; return ok; } // TODO: goto lErr; } don't log it just ignore and return false. ^ -sources/cloudsync/CloudSyncController.cpp:603:27: style: Variable 'error' is assigned a value that is never used. [unreadVariable] +sources/cloudsync/CloudSyncController.cpp:620:27: style: Variable 'error' is assigned a value that is never used. [unreadVariable] Errors_Enum error = eError_Unknown; ^ -sources/cloudsync/CloudSyncController.cpp:667:27: style: Variable 'error' is assigned a value that is never used. [unreadVariable] +sources/cloudsync/CloudSyncController.cpp:684:27: style: Variable 'error' is assigned a value that is never used. [unreadVariable] Errors_Enum error = eError_Unknown; ^ +sources/device/DeviceView.h:68:32: style: The condition 'vData.mAccepted || !vData.mAccepted && vData.mReason!=0' is equivalent to 'vData.mAccepted || vData.mReason!=0'. [redundantCondition] + return vData.mAccepted || (!vData.mAccepted && vData.mReason != 0 ); + ^ sources/model/MAbstractDynamic.h:80:5: warning: Member variable 'MAbstractDynamic::_data' is not initialized in the constructor. [uninitMemberVar] MAbstractDynamic () { } ^ @@ -423,13 +417,13 @@ sources/storage/Logger.cpp:43:5: performance: When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don't explicitly write them to the initialization list. You could avoid assigning '_logFileNamePrefix' a value by passing the value to the constructor in the initialization list. [useInitializationList] _logFileNamePrefix = QFileInfo(qApp->applicationFilePath()).baseName(); ^ -sources/storage/Logger.cpp:244:10: style: Condition 'ok' is always true [knownConditionTrueFalse] +sources/storage/Logger.cpp:243:10: style: Condition 'ok' is always true [knownConditionTrueFalse] if ( ok && ! setLogPath(LogType::eLogAppED) ) ok = false; ^ -sources/storage/Logger.cpp:243:15: note: Assignment 'ok=true', assigned value is 1 +sources/storage/Logger.cpp:242:15: note: Assignment 'ok=true', assigned value is 1 bool ok = true; ^ -sources/storage/Logger.cpp:244:10: note: Condition 'ok' is always true +sources/storage/Logger.cpp:243:10: note: Condition 'ok' is always true if ( ok && ! setLogPath(LogType::eLogAppED) ) ok = false; ^ sources/storage/Logger.cpp:189:17: style: The scope of the variable 'notified' can be reduced. Warning: Be careful when fixing this message, especially when there are inner loops. Here is an example where cppcheck will write that the scope for 'i' can be reduced: @@ -447,6 +441,9 @@ When you see this message it is always safe to reduce the variable scope 1 level. [variableScope] static bool notified = false; ^ +sources/storage/Settings.cpp:34:13: style: Variable 'err' is assigned a value that is never used. [unreadVariable] + int err = Settings::Settings_Error::eError_None; + ^ sources/storage/TreatmentLog.cpp:487:10: style: Condition '!ok' is always false [knownConditionTrueFalse] if ( ! ok ) { ^ @@ -471,7 +468,7 @@ sources/view/settings/VNetworkModel.cpp:280:9: style: Consider using std::find_if algorithm instead of a raw loop. [useStlAlgorithm] { ^ -sources/view/settings/VSettings.cpp:184:17: style: Consider using std::accumulate algorithm instead of a raw loop. [useStlAlgorithm] +sources/view/settings/VSettings.cpp:199:17: style: Consider using std::accumulate algorithm instead of a raw loop. [useStlAlgorithm] keyList += keys.join(""); ^ unittests/tst_messaging.cpp:294:18: style: Variable 'msg.actionId' is reassigned a value before the old one has been used. [redundantAssignment] @@ -486,9 +483,6 @@ unittests/tst_views.cpp:711:26: style: Variable 'action' is assigned a value that is never used. [unreadVariable] GuiActionType action = GuiActionType::ID_AdjustParametersValidationRsp; ^ -sources/AlarmGenerator.cpp:72:0: style: The function 'ALARM_ID_UI_POST_FAILURE_SDCARD' is never used. [unusedFunction] - -^ unittests/tst_views.cpp:406:0: style: The function 'VCreateTreatment_check_init' is never used. [unusedFunction] ^ @@ -525,12 +519,24 @@ unittests/tst_views.cpp:35:0: style: The function 'VTreatmentAdjustmentsResponse_text_WAReason' is never used. [unusedFunction] ^ +sources/view/settings/VSettings.cpp:316:0: style: The function 'checkServicePasswordSet' is never used. [unusedFunction] + +^ unittests/tst_canbus.cpp:312:0: style: The function 'cleanup' is never used. [unusedFunction] ^ unittests/tst_acknow.cpp:164:0: style: The function 'cleanupTestCase' is never used. [unusedFunction] ^ +sources/utility/encryption.cpp:28:0: style: The function 'cryptClose' is never used. [unusedFunction] + +^ +sources/utility/encryption.cpp:22:0: style: The function 'cryptFormat' is never used. [unusedFunction] + +^ +sources/utility/encryption.cpp:16:0: style: The function 'cryptOpen' is never used. [unusedFunction] + +^ sources/view/hd/adjustment/pretreatment/VPreTreatmentAdjustmentPatientConnectionBegin.cpp:49:0: style: The function 'doBegin' is never used. [unusedFunction] ^ @@ -576,13 +582,13 @@ sources/view/hd/adjustment/disinfect/VDisinfectAdjustDisinfect.cpp:147:0: style: The function 'doDisinfectROPermeate' is never used. [unusedFunction] ^ -sources/gui/GuiView.cpp:250:0: style: The function 'doExportListInsert' is never used. [unusedFunction] +sources/gui/GuiView.cpp:256:0: style: The function 'doExportListInsert' is never used. [unusedFunction] ^ -sources/gui/GuiView.cpp:293:0: style: The function 'doExportListPercent' is never used. [unusedFunction] +sources/gui/GuiView.cpp:299:0: style: The function 'doExportListPercent' is never used. [unusedFunction] ^ -sources/gui/GuiView.cpp:281:0: style: The function 'doExportListSelect' is never used. [unusedFunction] +sources/gui/GuiView.cpp:287:0: style: The function 'doExportListSelect' is never used. [unusedFunction] ^ sources/view/VTreatmentCreate(legacy).cpp:504:0: style: The function 'doGetPrescriptionParameterValues' is never used. [unusedFunction] @@ -591,15 +597,27 @@ sources/view/settings/VDateTime.cpp:44:0: style: The function 'doInit' is never used. [unusedFunction] ^ -sources/device/DeviceView.cpp:89:0: style: The function 'doInitBluetoothPairedQuery' is never used. [unusedFunction] +sources/device/DeviceView.cpp:130:0: style: The function 'doInitBluetoothPairedQuery' is never used. [unusedFunction] ^ -sources/device/DeviceView.cpp:65:0: style: The function 'doInitBluetoothPairedReset' is never used. [unusedFunction] +sources/device/DeviceView.cpp:105:0: style: The function 'doInitBluetoothPairedReset' is never used. [unusedFunction] ^ -sources/device/DeviceView.cpp:32:0: style: The function 'doInitBrightness' is never used. [unusedFunction] +sources/device/DeviceView.cpp:33:0: style: The function 'doInitBrightness' is never used. [unusedFunction] ^ +sources/device/DeviceView.cpp:67:0: style: The function 'doInitCryptSetup' is never used. [unusedFunction] + +^ +sources/device/DeviceView.cpp:219:0: style: The function 'doInitDecommission' is never used. [unusedFunction] + +^ +sources/device/DeviceView.cpp:190:0: style: The function 'doInitFactoryReset' is never used. [unusedFunction] + +^ +sources/device/DeviceView.cpp:155:0: style: The function 'doInitRootSSHAccess' is never used. [unusedFunction] + +^ sources/view/hd/adjustment/pretreatment/VPreTreatmentAdjustmentInitTreatment.cpp:49:0: style: The function 'doInitiate' is never used. [unusedFunction] ^ @@ -687,10 +705,10 @@ sources/view/hd/alarm/VAlarmStatus.cpp:201:0: style: The function 'instructionValues' is never used. [unusedFunction] ^ -sources/view/settings/VSettings.cpp:286:0: style: The function 'isPasswordMatch' is never used. [unusedFunction] +sources/view/settings/VSettings.cpp:256:0: style: The function 'isPasswordValid' is never used. [unusedFunction] ^ -sources/view/settings/VSettings.cpp:241:0: style: The function 'isPasswordValid' is never used. [unusedFunction] +sources/view/settings/VSettings.cpp:298:0: style: The function 'isServicePasswordMatch' is never used. [unusedFunction] ^ unittests/tst_logging.cpp:66:0: style: The function 'logDatum' is never used. [unusedFunction] @@ -717,16 +735,16 @@ sources/bluetooth/BluetoothInterface.cpp:1207:0: style: The function 'mimic' is never used. [unusedFunction] ^ -sources/storage/FileHandler.cpp:167:0: style: The function 'moveFolder' is never used. [unusedFunction] +sources/utility/encryption.cpp:34:0: style: The function 'mkfsExt4' is never used. [unusedFunction] ^ -unittests/tst_logging.cpp:149:0: style: The function 'readUnknown' is never used. [unusedFunction] +sources/storage/FileHandler.cpp:168:0: style: The function 'moveFolder' is never used. [unusedFunction] ^ -sources/storage/FileHandler.cpp:208:0: style: The function 'removeFiles' is never used. [unusedFunction] +unittests/tst_logging.cpp:149:0: style: The function 'readUnknown' is never used. [unusedFunction] ^ -sources/storage/FileHandler.cpp:188:0: style: The function 'removeFolder' is never used. [unusedFunction] +sources/storage/FileHandler.cpp:209:0: style: The function 'removeFiles' is never used. [unusedFunction] ^ sources/bluetooth/BluetoothInterface.cpp:1287:0: style: The function 'requestBattery' is never used. [unusedFunction] @@ -747,9 +765,12 @@ unittests/tst_logging.cpp:142:0: style: The function 'setLogPath_T' is never used. [unusedFunction] ^ -sources/MainTimer.cpp:116:0: style: The function 'timerEvent' is never used. [unusedFunction] +sources/MainTimer.cpp:137:0: style: The function 'timerEvent' is never used. [unusedFunction] ^ +sources/storage/FileHandler.cpp:301:0: style: The function 'tmpUsable' is never used. [unusedFunction] + +^ unittests/tst_acknow.cpp:62:0: style: The function 'tst_AcknowModel_Init' is never used. [unusedFunction] ^ @@ -1308,7 +1329,7 @@ unittests/tst_utilities.cpp:204:0: style: The function 'tst_toStringList_RemoveDuplicate' is never used. [unusedFunction] ^ -sources/view/settings/VSettings.cpp:290:0: style: The function 'updatePassword' is never used. [unusedFunction] +sources/view/settings/VSettings.cpp:311:0: style: The function 'updateServicePassword' is never used. [unusedFunction] ^ sources/wifi/WifiInterface.cpp:936:0: style: The function 'variantListToSecurityTypes' is never used. [unusedFunction] Index: cppcheck.log =================================================================== diff -u -rcf61c7736f11f4b75a4e2df803f29bdc7769db53 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- cppcheck.log (.../cppcheck.log) (revision cf61c7736f11f4b75a4e2df803f29bdc7769db53) +++ cppcheck.log (.../cppcheck.log) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -1,1535 +1,1542 @@ -05/31/2023 2:53 +07/18/2023 3:05 Behrouz NematiPour Checking main.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking main.cpp: Q_PROPERTY=1;Q_ENUM=1... -1/219 files checked 1% done +1/220 files checked 1% done Checking sources/AlarmGenerator.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/AlarmGenerator.cpp: Q_PROPERTY=1;Q_ENUM=1... -2/219 files checked 1% done +2/220 files checked 1% done Checking sources/ApplicationController.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/ApplicationController.cpp: Q_PROPERTY=1;Q_ENUM=1... -3/219 files checked 3% done +3/220 files checked 3% done Checking sources/ApplicationPost.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/ApplicationPost.cpp: Q_PROPERTY=1;Q_ENUM=1... -4/219 files checked 3% done +4/220 files checked 4% done Checking sources/MainTimer.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/MainTimer.cpp: Q_PROPERTY=1;Q_ENUM=1... -5/219 files checked 4% done +5/220 files checked 4% done Checking sources/Threads.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/Threads.cpp: Q_PROPERTY=1;Q_ENUM=1... -6/219 files checked 4% done +6/220 files checked 4% done Checking sources/bluetooth/BluetoothInterface.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/bluetooth/BluetoothInterface.cpp: Q_PROPERTY=1;Q_ENUM=1... -7/219 files checked 9% done +7/220 files checked 9% done Checking sources/canbus/CanInterface.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/canbus/CanInterface.cpp: Q_PROPERTY=1;Q_ENUM=1... -8/219 files checked 10% done +8/220 files checked 10% done Checking sources/canbus/FrameInterface.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/canbus/FrameInterface.cpp: Q_PROPERTY=1;Q_ENUM=1... -9/219 files checked 11% done +9/220 files checked 11% done Checking sources/canbus/MessageAcknowModel.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/canbus/MessageAcknowModel.cpp: Q_PROPERTY=1;Q_ENUM=1... -10/219 files checked 11% done +10/220 files checked 11% done Checking sources/canbus/MessageBuilder.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/canbus/MessageBuilder.cpp: Q_PROPERTY=1;Q_ENUM=1... -11/219 files checked 12% done +11/220 files checked 13% done Checking sources/canbus/MessageDispatcher.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/canbus/MessageDispatcher.cpp: Q_PROPERTY=1;Q_ENUM=1... -12/219 files checked 15% done +12/220 files checked 15% done Checking sources/canbus/MessageInterpreter.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/canbus/MessageInterpreter.cpp: Q_PROPERTY=1;Q_ENUM=1... -13/219 files checked 19% done +13/220 files checked 19% done Checking sources/cloudsync/CloudSyncController.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/cloudsync/CloudSyncController.cpp: Q_PROPERTY=1;Q_ENUM=1... -14/219 files checked 22% done +14/220 files checked 22% done Checking sources/device/DeviceController.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/device/DeviceController.cpp: Q_PROPERTY=1;Q_ENUM=1... -15/219 files checked 24% done +15/220 files checked 25% done Checking sources/device/DeviceError.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/device/DeviceError.cpp: Q_PROPERTY=1;Q_ENUM=1... -16/219 files checked 25% done +16/220 files checked 25% done Checking sources/device/DeviceModels.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/device/DeviceModels.cpp: Q_PROPERTY=1;Q_ENUM=1... -17/219 files checked 25% done +17/220 files checked 26% done Checking sources/device/DeviceView.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/device/DeviceView.cpp: Q_PROPERTY=1;Q_ENUM=1... -18/219 files checked 25% done +18/220 files checked 27% done Checking sources/gui/GuiController.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/gui/GuiController.cpp: Q_PROPERTY=1;Q_ENUM=1... -19/219 files checked 26% done +19/220 files checked 28% done Checking sources/gui/GuiGlobals.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/gui/GuiGlobals.cpp: Q_PROPERTY=1;Q_ENUM=1... -20/219 files checked 27% done +20/220 files checked 28% done Checking sources/gui/GuiView.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/gui/GuiView.cpp: Q_PROPERTY=1;Q_ENUM=1... -21/219 files checked 28% done +21/220 files checked 29% done Checking sources/model/MAbstract.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/MAbstract.cpp: Q_PROPERTY=1;Q_ENUM=1... -22/219 files checked 28% done +22/220 files checked 29% done Checking sources/model/MAbstractDynamic.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/MAbstractDynamic.cpp: Q_PROPERTY=1;Q_ENUM=1... -23/219 files checked 28% done +23/220 files checked 30% done Checking sources/model/confirm/MDuetConfirmHDi.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/confirm/MDuetConfirmHDi.cpp: Q_PROPERTY=1;Q_ENUM=1... -24/219 files checked 28% done +24/220 files checked 30% done Checking sources/model/dg/adjustment/settings/MAdjustDGCleaningUsageResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/adjustment/settings/MAdjustDGCleaningUsageResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -25/219 files checked 29% done +25/220 files checked 30% done Checking sources/model/dg/adjustment/settings/MAdjustDGDateTimeResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/adjustment/settings/MAdjustDGDateTimeResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -26/219 files checked 29% done +26/220 files checked 30% done Checking sources/model/dg/adjustment/settings/MAdjustDGSerialNumberResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/adjustment/settings/MAdjustDGSerialNumberResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -27/219 files checked 29% done +27/220 files checked 30% done Checking sources/model/dg/adjustment/settings/MAdjustDGServiceDatesResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/adjustment/settings/MAdjustDGServiceDatesResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -28/219 files checked 29% done +28/220 files checked 30% done Checking sources/model/dg/adjustment/settings/MAdjustDGVersionsResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/adjustment/settings/MAdjustDGVersionsResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -29/219 files checked 29% done +29/220 files checked 31% done Checking sources/model/dg/adjustment/settings/MDuetRoWaterDG.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/adjustment/settings/MDuetRoWaterDG.cpp: Q_PROPERTY=1;Q_ENUM=1... -30/219 files checked 29% done +30/220 files checked 31% done Checking sources/model/dg/data/MDGAccelerometerData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/data/MDGAccelerometerData.cpp: Q_PROPERTY=1;Q_ENUM=1... -31/219 files checked 30% done +31/220 files checked 31% done Checking sources/model/dg/data/MDGConductivityData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/data/MDGConductivityData.cpp: Q_PROPERTY=1;Q_ENUM=1... -32/219 files checked 30% done +32/220 files checked 31% done Checking sources/model/dg/data/MDGDebugText.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/data/MDGDebugText.cpp: Q_PROPERTY=1;Q_ENUM=1... -33/219 files checked 30% done +33/220 files checked 31% done Checking sources/model/dg/data/MDGDrainPumpData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/data/MDGDrainPumpData.cpp: Q_PROPERTY=1;Q_ENUM=1... -34/219 files checked 30% done +34/220 files checked 32% done Checking sources/model/dg/data/MDGGeneralEvent.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/data/MDGGeneralEvent.cpp: Q_PROPERTY=1;Q_ENUM=1... -35/219 files checked 30% done +35/220 files checked 32% done Checking sources/model/dg/data/MDGHeatersData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/data/MDGHeatersData.cpp: Q_PROPERTY=1;Q_ENUM=1... -36/219 files checked 31% done +36/220 files checked 32% done Checking sources/model/dg/data/MDGLoadCellReadingsData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/data/MDGLoadCellReadingsData.cpp: Q_PROPERTY=1;Q_ENUM=1... -37/219 files checked 31% done +37/220 files checked 32% done Checking sources/model/dg/data/MDGOperationModeData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/data/MDGOperationModeData.cpp: Q_PROPERTY=1;Q_ENUM=1... -38/219 files checked 31% done +38/220 files checked 32% done Checking sources/model/dg/data/MDGPressuresData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/data/MDGPressuresData.cpp: Q_PROPERTY=1;Q_ENUM=1... -39/219 files checked 31% done +39/220 files checked 32% done Checking sources/model/dg/data/MDGROPumpData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/data/MDGROPumpData.cpp: Q_PROPERTY=1;Q_ENUM=1... -40/219 files checked 31% done +40/220 files checked 32% done Checking sources/model/dg/data/MDGReservoirData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/data/MDGReservoirData.cpp: Q_PROPERTY=1;Q_ENUM=1... -41/219 files checked 31% done +41/220 files checked 33% done Checking sources/model/dg/data/MDGTemperaturesData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/data/MDGTemperaturesData.cpp: Q_PROPERTY=1;Q_ENUM=1... -42/219 files checked 32% done +42/220 files checked 33% done Checking sources/model/dg/data/MDGValvesStatesData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/data/MDGValvesStatesData.cpp: Q_PROPERTY=1;Q_ENUM=1... -43/219 files checked 32% done +43/220 files checked 33% done Checking sources/model/dg/data/post/MDGPostFinalResultData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/data/post/MDGPostFinalResultData.cpp: Q_PROPERTY=1;Q_ENUM=1... -44/219 files checked 32% done +44/220 files checked 34% done Checking sources/model/dg/data/post/MDGPostSingleResultData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/data/post/MDGPostSingleResultData.cpp: Q_PROPERTY=1;Q_ENUM=1... -45/219 files checked 32% done +45/220 files checked 34% done Checking sources/model/dg/data/pretreatment/MDGFilterFlushData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/dg/data/pretreatment/MDGFilterFlushData.cpp: Q_PROPERTY=1;Q_ENUM=1... -46/219 files checked 32% done +46/220 files checked 34% done Checking sources/model/hd/adjustment/MAdjustPowerOff.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/MAdjustPowerOff.cpp: Q_PROPERTY=1;Q_ENUM=1... -47/219 files checked 33% done +47/220 files checked 34% done Checking sources/model/hd/adjustment/disinfect/MDisinfectAdjustModeResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/disinfect/MDisinfectAdjustModeResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -48/219 files checked 33% done +48/220 files checked 34% done Checking sources/model/hd/adjustment/disinfect/MDisinfectAdjustStartResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/disinfect/MDisinfectAdjustStartResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -49/219 files checked 33% done +49/220 files checked 34% done Checking sources/model/hd/adjustment/posttreatment/MPostTreatmentAdjustDisposablesRemovalConfirmResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/posttreatment/MPostTreatmentAdjustDisposablesRemovalConfirmResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -50/219 files checked 33% done +50/220 files checked 34% done Checking sources/model/hd/adjustment/posttreatment/MPostTreatmentAdjustTreatmentLogResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/posttreatment/MPostTreatmentAdjustTreatmentLogResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -51/219 files checked 34% done +51/220 files checked 35% done Checking sources/model/hd/adjustment/pretreatment/MPreTreatmentAdjustDisposablesConfirmResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/pretreatment/MPreTreatmentAdjustDisposablesConfirmResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -52/219 files checked 34% done +52/220 files checked 35% done Checking sources/model/hd/adjustment/pretreatment/MPreTreatmentAdjustDisposablesPrimeResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/pretreatment/MPreTreatmentAdjustDisposablesPrimeResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -53/219 files checked 34% done +53/220 files checked 35% done Checking sources/model/hd/adjustment/pretreatment/MPreTreatmentAdjustInitTreatmentResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/pretreatment/MPreTreatmentAdjustInitTreatmentResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -54/219 files checked 34% done +54/220 files checked 35% done Checking sources/model/hd/adjustment/pretreatment/MPreTreatmentAdjustParametersValidationResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/pretreatment/MPreTreatmentAdjustParametersValidationResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -55/219 files checked 35% done +55/220 files checked 36% done Checking sources/model/hd/adjustment/pretreatment/MPreTreatmentAdjustPatientConnectionBeginResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/pretreatment/MPreTreatmentAdjustPatientConnectionBeginResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -56/219 files checked 35% done +56/220 files checked 36% done Checking sources/model/hd/adjustment/pretreatment/MPreTreatmentAdjustPatientConnectionConfirmResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/pretreatment/MPreTreatmentAdjustPatientConnectionConfirmResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -57/219 files checked 35% done +57/220 files checked 36% done Checking sources/model/hd/adjustment/pretreatment/MPreTreatmentAdjustStartTreatmentResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/pretreatment/MPreTreatmentAdjustStartTreatmentResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -58/219 files checked 35% done +58/220 files checked 36% done Checking sources/model/hd/adjustment/pretreatment/MPreTreatmentAdjustUltrafiltrationInitResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/pretreatment/MPreTreatmentAdjustUltrafiltrationInitResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -59/219 files checked 35% done +59/220 files checked 36% done Checking sources/model/hd/adjustment/pretreatment/MPreTreatmentAdjustWaterSampleResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/pretreatment/MPreTreatmentAdjustWaterSampleResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -60/219 files checked 35% done +60/220 files checked 36% done Checking sources/model/hd/adjustment/settings/MAdjustHDAlarmVolumeResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/settings/MAdjustHDAlarmVolumeResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -61/219 files checked 35% done +61/220 files checked 36% done Checking sources/model/hd/adjustment/settings/MAdjustHDDateTimeResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/settings/MAdjustHDDateTimeResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -62/219 files checked 35% done +62/220 files checked 37% done Checking sources/model/hd/adjustment/settings/MAdjustHDSerialNumberResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/settings/MAdjustHDSerialNumberResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -63/219 files checked 35% done +63/220 files checked 37% done Checking sources/model/hd/adjustment/settings/MAdjustHDServiceDatesResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/settings/MAdjustHDServiceDatesResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -64/219 files checked 36% done +64/220 files checked 37% done Checking sources/model/hd/adjustment/settings/MAdjustHDServiceModeResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/settings/MAdjustHDServiceModeResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -65/219 files checked 36% done +65/220 files checked 37% done Checking sources/model/hd/adjustment/settings/MAdjustHDVersionsRequest.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/settings/MAdjustHDVersionsRequest.cpp: Q_PROPERTY=1;Q_ENUM=1... -66/219 files checked 36% done +66/220 files checked 37% done Checking sources/model/hd/adjustment/settings/MAdjustHDVersionsResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/settings/MAdjustHDVersionsResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -67/219 files checked 36% done +67/220 files checked 37% done Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustBloodDialysateResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustBloodDialysateResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -68/219 files checked 36% done +68/220 files checked 37% done Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustDurationResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustDurationResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -69/219 files checked 36% done +69/220 files checked 37% done Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustEndResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustEndResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -70/219 files checked 36% done +70/220 files checked 38% done Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustHeparinResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustHeparinResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -71/219 files checked 36% done +71/220 files checked 38% done Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustPressuresLimitsResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustPressuresLimitsResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -72/219 files checked 37% done +72/220 files checked 38% done Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustRecirculateResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustRecirculateResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -73/219 files checked 37% done +73/220 files checked 38% done Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustRinsebackResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustRinsebackResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -74/219 files checked 37% done +74/220 files checked 38% done Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustSalineResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustSalineResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -75/219 files checked 37% done +75/220 files checked 38% done Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustUltrafiltrationConfirmResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustUltrafiltrationConfirmResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -76/219 files checked 37% done +76/220 files checked 38% done Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustUltrafiltrationEditResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustUltrafiltrationEditResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -77/219 files checked 37% done +77/220 files checked 39% done Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustUltrafiltrationStateResponse.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/adjustment/treatment/MTreatmentAdjustUltrafiltrationStateResponse.cpp: Q_PROPERTY=1;Q_ENUM=1... -78/219 files checked 37% done +78/220 files checked 39% done Checking sources/model/hd/alarm/MAlarmActiveList.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/alarm/MAlarmActiveList.cpp: Q_PROPERTY=1;Q_ENUM=1... -79/219 files checked 38% done +79/220 files checked 39% done Checking sources/model/hd/alarm/MAlarmCleared.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/alarm/MAlarmCleared.cpp: Q_PROPERTY=1;Q_ENUM=1... -80/219 files checked 38% done +80/220 files checked 39% done Checking sources/model/hd/alarm/MAlarmClearedCondition.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/alarm/MAlarmClearedCondition.cpp: Q_PROPERTY=1;Q_ENUM=1... -81/219 files checked 38% done +81/220 files checked 39% done Checking sources/model/hd/alarm/MAlarmMapping.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/alarm/MAlarmMapping.cpp: Q_PROPERTY=1;Q_ENUM=1... -82/219 files checked 45% done +82/220 files checked 46% done Checking sources/model/hd/alarm/MAlarmStatusData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/alarm/MAlarmStatusData.cpp: Q_PROPERTY=1;Q_ENUM=1... -83/219 files checked 45% done +83/220 files checked 46% done Checking sources/model/hd/alarm/MAlarmTriggered.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/alarm/MAlarmTriggered.cpp: Q_PROPERTY=1;Q_ENUM=1... -84/219 files checked 45% done +84/220 files checked 46% done Checking sources/model/hd/data/MHDAccelerometerData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/MHDAccelerometerData.cpp: Q_PROPERTY=1;Q_ENUM=1... -85/219 files checked 45% done +85/220 files checked 46% done Checking sources/model/hd/data/MHDAirBubbleData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/MHDAirBubbleData.cpp: Q_PROPERTY=1;Q_ENUM=1... -86/219 files checked 46% done +86/220 files checked 46% done Checking sources/model/hd/data/MHDAirTrapData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/MHDAirTrapData.cpp: Q_PROPERTY=1;Q_ENUM=1... -87/219 files checked 46% done +87/220 files checked 47% done Checking sources/model/hd/data/MHDBloodLeakData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/MHDBloodLeakData.cpp: Q_PROPERTY=1;Q_ENUM=1... -88/219 files checked 46% done +88/220 files checked 47% done Checking sources/model/hd/data/MHDDebugText.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/MHDDebugText.cpp: Q_PROPERTY=1;Q_ENUM=1... -89/219 files checked 46% done +89/220 files checked 47% done Checking sources/model/hd/data/MHDGeneralEvent.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/MHDGeneralEvent.cpp: Q_PROPERTY=1;Q_ENUM=1... -90/219 files checked 46% done +90/220 files checked 47% done Checking sources/model/hd/data/MHDOperationModeData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/MHDOperationModeData.cpp: Q_PROPERTY=1;Q_ENUM=1... -91/219 files checked 46% done +91/220 files checked 47% done Checking sources/model/hd/data/MHDSyringePumpData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/MHDSyringePumpData.cpp: Q_PROPERTY=1;Q_ENUM=1... -92/219 files checked 46% done +92/220 files checked 47% done Checking sources/model/hd/data/MTreatmentRangesData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/MTreatmentRangesData.cpp: Q_PROPERTY=1;Q_ENUM=1... -93/219 files checked 46% done +93/220 files checked 47% done Checking sources/model/hd/data/post/MHDPostFinalResultData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/post/MHDPostFinalResultData.cpp: Q_PROPERTY=1;Q_ENUM=1... -94/219 files checked 47% done +94/220 files checked 47% done Checking sources/model/hd/data/post/MHDPostSingleResultData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/post/MHDPostSingleResultData.cpp: Q_PROPERTY=1;Q_ENUM=1... -95/219 files checked 47% done +95/220 files checked 47% done Checking sources/model/hd/data/post/MUIPostFinalResultHDRequest.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/post/MUIPostFinalResultHDRequest.cpp: Q_PROPERTY=1;Q_ENUM=1... -96/219 files checked 47% done +96/220 files checked 48% done Checking sources/model/hd/data/posttreatment/MPostTreatmentStatesData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/posttreatment/MPostTreatmentStatesData.cpp: Q_PROPERTY=1;Q_ENUM=1... -97/219 files checked 47% done +97/220 files checked 48% done Checking sources/model/hd/data/pretreatment/MPreTreatmentDisposablesPrimeData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/pretreatment/MPreTreatmentDisposablesPrimeData.cpp: Q_PROPERTY=1;Q_ENUM=1... -98/219 files checked 47% done +98/220 files checked 48% done Checking sources/model/hd/data/pretreatment/MPreTreatmentSelfTestDryData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/pretreatment/MPreTreatmentSelfTestDryData.cpp: Q_PROPERTY=1;Q_ENUM=1... -99/219 files checked 47% done +99/220 files checked 48% done Checking sources/model/hd/data/pretreatment/MPreTreatmentSelfTestNoCartridgeData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/pretreatment/MPreTreatmentSelfTestNoCartridgeData.cpp: Q_PROPERTY=1;Q_ENUM=1... -100/219 files checked 47% done +100/220 files checked 48% done Checking sources/model/hd/data/pretreatment/MPreTreatmentStatesData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/pretreatment/MPreTreatmentStatesData.cpp: Q_PROPERTY=1;Q_ENUM=1... -101/219 files checked 47% done +101/220 files checked 48% done Checking sources/model/hd/data/treatment/MTreatmentBloodFlowData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/treatment/MTreatmentBloodFlowData.cpp: Q_PROPERTY=1;Q_ENUM=1... -102/219 files checked 48% done +102/220 files checked 48% done Checking sources/model/hd/data/treatment/MTreatmentBloodPrimeData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/treatment/MTreatmentBloodPrimeData.cpp: Q_PROPERTY=1;Q_ENUM=1... -103/219 files checked 48% done +103/220 files checked 49% done Checking sources/model/hd/data/treatment/MTreatmentDialysateFlowData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/treatment/MTreatmentDialysateFlowData.cpp: Q_PROPERTY=1;Q_ENUM=1... -104/219 files checked 48% done +104/220 files checked 49% done Checking sources/model/hd/data/treatment/MTreatmentHeparinData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/treatment/MTreatmentHeparinData.cpp: Q_PROPERTY=1;Q_ENUM=1... -105/219 files checked 48% done +105/220 files checked 49% done Checking sources/model/hd/data/treatment/MTreatmentOutletFlowData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/treatment/MTreatmentOutletFlowData.cpp: Q_PROPERTY=1;Q_ENUM=1... -106/219 files checked 48% done +106/220 files checked 49% done Checking sources/model/hd/data/treatment/MTreatmentPressureOcclusionData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/treatment/MTreatmentPressureOcclusionData.cpp: Q_PROPERTY=1;Q_ENUM=1... -107/219 files checked 48% done +107/220 files checked 49% done Checking sources/model/hd/data/treatment/MTreatmentRecirculateData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/treatment/MTreatmentRecirculateData.cpp: Q_PROPERTY=1;Q_ENUM=1... -108/219 files checked 49% done +108/220 files checked 49% done Checking sources/model/hd/data/treatment/MTreatmentRinsebackData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/treatment/MTreatmentRinsebackData.cpp: Q_PROPERTY=1;Q_ENUM=1... -109/219 files checked 49% done +109/220 files checked 50% done Checking sources/model/hd/data/treatment/MTreatmentSalineData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/treatment/MTreatmentSalineData.cpp: Q_PROPERTY=1;Q_ENUM=1... -110/219 files checked 49% done +110/220 files checked 50% done Checking sources/model/hd/data/treatment/MTreatmentStatesData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/treatment/MTreatmentStatesData.cpp: Q_PROPERTY=1;Q_ENUM=1... -111/219 files checked 49% done +111/220 files checked 50% done Checking sources/model/hd/data/treatment/MTreatmentStopData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/treatment/MTreatmentStopData.cpp: Q_PROPERTY=1;Q_ENUM=1... -112/219 files checked 49% done +112/220 files checked 50% done Checking sources/model/hd/data/treatment/MTreatmentTimeData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/treatment/MTreatmentTimeData.cpp: Q_PROPERTY=1;Q_ENUM=1... -113/219 files checked 49% done +113/220 files checked 50% done Checking sources/model/hd/data/treatmentlog/MTreatmentLogAlarmData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/treatmentlog/MTreatmentLogAlarmData.cpp: Q_PROPERTY=1;Q_ENUM=1... -114/219 files checked 49% done +114/220 files checked 50% done Checking sources/model/hd/data/treatmentlog/MTreatmentLogAvrgeData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/treatmentlog/MTreatmentLogAvrgeData.cpp: Q_PROPERTY=1;Q_ENUM=1... -115/219 files checked 50% done +115/220 files checked 50% done Checking sources/model/hd/data/treatmentlog/MTreatmentLogEventData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/hd/data/treatmentlog/MTreatmentLogEventData.cpp: Q_PROPERTY=1;Q_ENUM=1... -116/219 files checked 50% done +116/220 files checked 50% done Checking sources/model/settings/MBluetooth.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/settings/MBluetooth.cpp: Q_PROPERTY=1;Q_ENUM=1... -117/219 files checked 50% done +117/220 files checked 51% done Checking sources/model/settings/MSettings.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/settings/MSettings.cpp: Q_PROPERTY=1;Q_ENUM=1... -118/219 files checked 50% done +118/220 files checked 51% done Checking sources/model/ui/data/MUIBloodPressureData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/model/ui/data/MUIBloodPressureData.cpp: Q_PROPERTY=1;Q_ENUM=1... -119/219 files checked 50% done +119/220 files checked 51% done Checking sources/storage/FileHandler.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/storage/FileHandler.cpp: Q_PROPERTY=1;Q_ENUM=1... -120/219 files checked 52% done +120/220 files checked 53% done Checking sources/storage/Logger.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/storage/Logger.cpp: Q_PROPERTY=1;Q_ENUM=1... -121/219 files checked 53% done +121/220 files checked 54% done Checking sources/storage/Settings.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/storage/Settings.cpp: Q_PROPERTY=1;Q_ENUM=1... -122/219 files checked 54% done +122/220 files checked 55% done Checking sources/storage/StorageGlobals.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/storage/StorageGlobals.cpp: Q_PROPERTY=1;Q_ENUM=1... -123/219 files checked 54% done +123/220 files checked 56% done Checking sources/storage/TreatmentLog.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/storage/TreatmentLog.cpp: Q_PROPERTY=1;Q_ENUM=1... -124/219 files checked 56% done +124/220 files checked 57% done Checking sources/utility/crc.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/utility/crc.cpp: Q_PROPERTY=1;Q_ENUM=1... -125/219 files checked 56% done +125/220 files checked 57% done +Checking sources/utility/encryption.cpp ... +Defines:Q_PROPERTY=1;Q_ENUM=1 +Undefines: +Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ +Platform:Native +Checking sources/utility/encryption.cpp: Q_PROPERTY=1;Q_ENUM=1... +126/220 files checked 58% done Checking sources/utility/format.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/utility/format.cpp: Q_PROPERTY=1;Q_ENUM=1... -126/219 files checked 57% done +127/220 files checked 58% done Checking sources/utility/types.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/utility/types.cpp: Q_PROPERTY=1;Q_ENUM=1... -127/219 files checked 57% done +128/220 files checked 58% done Checking sources/view/VAdjustmentResponseBase.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/VAdjustmentResponseBase.cpp: Q_PROPERTY=1;Q_ENUM=1... -128/219 files checked 57% done +129/220 files checked 58% done Checking sources/view/VEventSpy.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/VEventSpy.cpp: Q_PROPERTY=1;Q_ENUM=1... -129/219 files checked 58% done +130/220 files checked 59% done Checking sources/view/VGeneralEvent.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/VGeneralEvent.cpp: Q_PROPERTY=1;Q_ENUM=1... -130/219 files checked 58% done +131/220 files checked 59% done Checking sources/view/VTreatmentCreate(legacy).cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/VTreatmentCreate(legacy).cpp: Q_PROPERTY=1;Q_ENUM=1... -131/219 files checked 60% done +132/220 files checked 61% done Checking sources/view/VTreatmentCreate.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/VTreatmentCreate.cpp: Q_PROPERTY=1;Q_ENUM=1... -132/219 files checked 61% done +133/220 files checked 62% done Checking sources/view/confirm/VConfirm.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/confirm/VConfirm.cpp: Q_PROPERTY=1;Q_ENUM=1... -133/219 files checked 61% done +134/220 files checked 63% done Checking sources/view/dg/data/VDGAccelerometerData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/dg/data/VDGAccelerometerData.cpp: Q_PROPERTY=1;Q_ENUM=1... -134/219 files checked 61% done +135/220 files checked 63% done Checking sources/view/dg/data/VDGConductivityData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/dg/data/VDGConductivityData.cpp: Q_PROPERTY=1;Q_ENUM=1... -135/219 files checked 61% done +136/220 files checked 63% done Checking sources/view/dg/data/VDGDrainPumpData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/dg/data/VDGDrainPumpData.cpp: Q_PROPERTY=1;Q_ENUM=1... -136/219 files checked 62% done +137/220 files checked 63% done Checking sources/view/dg/data/VDGHeatersData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/dg/data/VDGHeatersData.cpp: Q_PROPERTY=1;Q_ENUM=1... -137/219 files checked 62% done +138/220 files checked 63% done Checking sources/view/dg/data/VDGLoadCellReadingsData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/dg/data/VDGLoadCellReadingsData.cpp: Q_PROPERTY=1;Q_ENUM=1... -138/219 files checked 62% done +139/220 files checked 63% done Checking sources/view/dg/data/VDGOperationModeData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/dg/data/VDGOperationModeData.cpp: Q_PROPERTY=1;Q_ENUM=1... -139/219 files checked 62% done +140/220 files checked 63% done Checking sources/view/dg/data/VDGPressuresData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/dg/data/VDGPressuresData.cpp: Q_PROPERTY=1;Q_ENUM=1... -140/219 files checked 62% done +141/220 files checked 63% done Checking sources/view/dg/data/VDGROPumpData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/dg/data/VDGROPumpData.cpp: Q_PROPERTY=1;Q_ENUM=1... -141/219 files checked 62% done +142/220 files checked 63% done Checking sources/view/dg/data/VDGReservoirData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/dg/data/VDGReservoirData.cpp: Q_PROPERTY=1;Q_ENUM=1... -142/219 files checked 62% done +143/220 files checked 63% done Checking sources/view/dg/data/VDGTemperaturesData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/dg/data/VDGTemperaturesData.cpp: Q_PROPERTY=1;Q_ENUM=1... -143/219 files checked 62% done +144/220 files checked 63% done Checking sources/view/dg/data/VDGValvesStatesData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/dg/data/VDGValvesStatesData.cpp: Q_PROPERTY=1;Q_ENUM=1... -144/219 files checked 62% done +145/220 files checked 64% done Checking sources/view/dg/data/post/VDGPOSTData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/dg/data/post/VDGPOSTData.cpp: Q_PROPERTY=1;Q_ENUM=1... -145/219 files checked 62% done +146/220 files checked 64% done Checking sources/view/dg/data/pretreatment/VDGFilterFlushData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/dg/data/pretreatment/VDGFilterFlushData.cpp: Q_PROPERTY=1;Q_ENUM=1... -146/219 files checked 63% done +147/220 files checked 64% done Checking sources/view/hd/adjustment/common/VCommonAdjustmentVitals.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/common/VCommonAdjustmentVitals.cpp: Q_PROPERTY=1;Q_ENUM=1... -147/219 files checked 63% done +148/220 files checked 64% done Checking sources/view/hd/adjustment/disinfect/VDisinfectAdjustDisinfect.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/disinfect/VDisinfectAdjustDisinfect.cpp: Q_PROPERTY=1;Q_ENUM=1... -148/219 files checked 64% done +149/220 files checked 65% done Checking sources/view/hd/adjustment/posttreatment/VPostTreatmentAdjustDisposablesRemovalConfirm.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/posttreatment/VPostTreatmentAdjustDisposablesRemovalConfirm.cpp: Q_PROPERTY=1;Q_ENUM=1... -149/219 files checked 64% done +150/220 files checked 65% done Checking sources/view/hd/adjustment/posttreatment/VPostTreatmentAdjustPatientDisconnectionConfirm.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/posttreatment/VPostTreatmentAdjustPatientDisconnectionConfirm.cpp: Q_PROPERTY=1;Q_ENUM=1... -150/219 files checked 64% done +151/220 files checked 65% done Checking sources/view/hd/adjustment/posttreatment/VPostTreatmentAdjustTreatmentLog.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/posttreatment/VPostTreatmentAdjustTreatmentLog.cpp: Q_PROPERTY=1;Q_ENUM=1... -151/219 files checked 64% done +152/220 files checked 65% done Checking sources/view/hd/adjustment/pretreatment/VPreTreatmentAdjustmentConsumablesConfirm.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/pretreatment/VPreTreatmentAdjustmentConsumablesConfirm.cpp: Q_PROPERTY=1;Q_ENUM=1... -152/219 files checked 64% done +153/220 files checked 65% done Checking sources/view/hd/adjustment/pretreatment/VPreTreatmentAdjustmentDisposablesConfirm.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/pretreatment/VPreTreatmentAdjustmentDisposablesConfirm.cpp: Q_PROPERTY=1;Q_ENUM=1... -153/219 files checked 64% done +154/220 files checked 66% done Checking sources/view/hd/adjustment/pretreatment/VPreTreatmentAdjustmentDisposablesPrime.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/pretreatment/VPreTreatmentAdjustmentDisposablesPrime.cpp: Q_PROPERTY=1;Q_ENUM=1... -154/219 files checked 65% done +155/220 files checked 66% done Checking sources/view/hd/adjustment/pretreatment/VPreTreatmentAdjustmentInitTreatment.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/pretreatment/VPreTreatmentAdjustmentInitTreatment.cpp: Q_PROPERTY=1;Q_ENUM=1... -155/219 files checked 65% done +156/220 files checked 66% done Checking sources/view/hd/adjustment/pretreatment/VPreTreatmentAdjustmentPatientConnectionBegin.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/pretreatment/VPreTreatmentAdjustmentPatientConnectionBegin.cpp: Q_PROPERTY=1;Q_ENUM=1... -156/219 files checked 65% done +157/220 files checked 66% done Checking sources/view/hd/adjustment/pretreatment/VPreTreatmentAdjustmentPatientConnectionConfirm.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/pretreatment/VPreTreatmentAdjustmentPatientConnectionConfirm.cpp: Q_PROPERTY=1;Q_ENUM=1... -157/219 files checked 65% done +158/220 files checked 66% done Checking sources/view/hd/adjustment/pretreatment/VPreTreatmentAdjustmentStartTreatment.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/pretreatment/VPreTreatmentAdjustmentStartTreatment.cpp: Q_PROPERTY=1;Q_ENUM=1... -158/219 files checked 65% done +159/220 files checked 66% done Checking sources/view/hd/adjustment/pretreatment/VPreTreatmentAdjustmentUltrafiltrationInit.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/pretreatment/VPreTreatmentAdjustmentUltrafiltrationInit.cpp: Q_PROPERTY=1;Q_ENUM=1... -159/219 files checked 65% done +160/220 files checked 66% done Checking sources/view/hd/adjustment/pretreatment/VPreTreatmentAdjustmentWaterSample.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/pretreatment/VPreTreatmentAdjustmentWaterSample.cpp: Q_PROPERTY=1;Q_ENUM=1... -160/219 files checked 66% done +161/220 files checked 67% done Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentDuration.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentDuration.cpp: Q_PROPERTY=1;Q_ENUM=1... -161/219 files checked 66% done +162/220 files checked 67% done Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentEnd.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentEnd.cpp: Q_PROPERTY=1;Q_ENUM=1... -162/219 files checked 66% done +163/220 files checked 67% done Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentFlows.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentFlows.cpp: Q_PROPERTY=1;Q_ENUM=1... -163/219 files checked 66% done +164/220 files checked 67% done Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentHeparin.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentHeparin.cpp: Q_PROPERTY=1;Q_ENUM=1... -164/219 files checked 66% done +165/220 files checked 67% done Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentPressuresLimits.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentPressuresLimits.cpp: Q_PROPERTY=1;Q_ENUM=1... -165/219 files checked 66% done +166/220 files checked 67% done Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentRecirculate.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentRecirculate.cpp: Q_PROPERTY=1;Q_ENUM=1... -166/219 files checked 66% done +167/220 files checked 67% done Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentRinseback.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentRinseback.cpp: Q_PROPERTY=1;Q_ENUM=1... -167/219 files checked 66% done +168/220 files checked 68% done Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentSaline.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentSaline.cpp: Q_PROPERTY=1;Q_ENUM=1... -168/219 files checked 67% done +169/220 files checked 68% done Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentUltrafiltrationConfirm.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentUltrafiltrationConfirm.cpp: Q_PROPERTY=1;Q_ENUM=1... -169/219 files checked 67% done +170/220 files checked 68% done Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentUltrafiltrationEdit.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentUltrafiltrationEdit.cpp: Q_PROPERTY=1;Q_ENUM=1... -170/219 files checked 67% done +171/220 files checked 68% done Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentUltrafiltrationState.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/adjustment/treatment/VTreatmentAdjustmentUltrafiltrationState.cpp: Q_PROPERTY=1;Q_ENUM=1... -171/219 files checked 67% done +172/220 files checked 68% done Checking sources/view/hd/alarm/VAlarmActiveList.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/alarm/VAlarmActiveList.cpp: Q_PROPERTY=1;Q_ENUM=1... -172/219 files checked 67% done +173/220 files checked 69% done Checking sources/view/hd/alarm/VAlarmStatus.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/alarm/VAlarmStatus.cpp: Q_PROPERTY=1;Q_ENUM=1... -173/219 files checked 68% done +174/220 files checked 69% done Checking sources/view/hd/data/VHDAccelerometerData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/VHDAccelerometerData.cpp: Q_PROPERTY=1;Q_ENUM=1... -174/219 files checked 68% done +175/220 files checked 69% done Checking sources/view/hd/data/VHDAirBubbleData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/VHDAirBubbleData.cpp: Q_PROPERTY=1;Q_ENUM=1... -175/219 files checked 68% done +176/220 files checked 69% done Checking sources/view/hd/data/VHDAirTrapData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/VHDAirTrapData.cpp: Q_PROPERTY=1;Q_ENUM=1... -176/219 files checked 68% done +177/220 files checked 69% done Checking sources/view/hd/data/VHDBloodLeakData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/VHDBloodLeakData.cpp: Q_PROPERTY=1;Q_ENUM=1... -177/219 files checked 69% done +178/220 files checked 70% done Checking sources/view/hd/data/VHDOperationModeData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/VHDOperationModeData.cpp: Q_PROPERTY=1;Q_ENUM=1... -178/219 files checked 69% done +179/220 files checked 70% done Checking sources/view/hd/data/VHDSyringePumpData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/VHDSyringePumpData.cpp: Q_PROPERTY=1;Q_ENUM=1... -179/219 files checked 69% done +180/220 files checked 70% done Checking sources/view/hd/data/VTreatmentRanges.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/VTreatmentRanges.cpp: Q_PROPERTY=1;Q_ENUM=1... -180/219 files checked 70% done +181/220 files checked 71% done Checking sources/view/hd/data/post/VHDPOSTData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/post/VHDPOSTData.cpp: Q_PROPERTY=1;Q_ENUM=1... -181/219 files checked 70% done +182/220 files checked 71% done Checking sources/view/hd/data/posttreatment/VPostTreatmentStatesData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/posttreatment/VPostTreatmentStatesData.cpp: Q_PROPERTY=1;Q_ENUM=1... -182/219 files checked 70% done +183/220 files checked 71% done Checking sources/view/hd/data/pretreatment/VPreTreatmentDisposablesPrimeData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/pretreatment/VPreTreatmentDisposablesPrimeData.cpp: Q_PROPERTY=1;Q_ENUM=1... -183/219 files checked 70% done +184/220 files checked 71% done Checking sources/view/hd/data/pretreatment/VPreTreatmentSelfTestDryData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/pretreatment/VPreTreatmentSelfTestDryData.cpp: Q_PROPERTY=1;Q_ENUM=1... -184/219 files checked 70% done +185/220 files checked 71% done Checking sources/view/hd/data/pretreatment/VPreTreatmentSelfTestNoCartridgeData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/pretreatment/VPreTreatmentSelfTestNoCartridgeData.cpp: Q_PROPERTY=1;Q_ENUM=1... -185/219 files checked 70% done +186/220 files checked 71% done Checking sources/view/hd/data/pretreatment/VPreTreatmentStatesData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/pretreatment/VPreTreatmentStatesData.cpp: Q_PROPERTY=1;Q_ENUM=1... -186/219 files checked 72% done +187/220 files checked 72% done Checking sources/view/hd/data/treatment/VHDTreatmentStatesData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/treatment/VHDTreatmentStatesData.cpp: Q_PROPERTY=1;Q_ENUM=1... -187/219 files checked 73% done +188/220 files checked 73% done Checking sources/view/hd/data/treatment/VTreatmentBloodFlow.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/treatment/VTreatmentBloodFlow.cpp: Q_PROPERTY=1;Q_ENUM=1... -188/219 files checked 73% done +189/220 files checked 74% done Checking sources/view/hd/data/treatment/VTreatmentBloodPrimeData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/treatment/VTreatmentBloodPrimeData.cpp: Q_PROPERTY=1;Q_ENUM=1... -189/219 files checked 73% done +190/220 files checked 74% done Checking sources/view/hd/data/treatment/VTreatmentDialysateFlow.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/treatment/VTreatmentDialysateFlow.cpp: Q_PROPERTY=1;Q_ENUM=1... -190/219 files checked 73% done +191/220 files checked 74% done Checking sources/view/hd/data/treatment/VTreatmentHeparinData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/treatment/VTreatmentHeparinData.cpp: Q_PROPERTY=1;Q_ENUM=1... -191/219 files checked 73% done +192/220 files checked 74% done Checking sources/view/hd/data/treatment/VTreatmentPressureOcclusion.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/treatment/VTreatmentPressureOcclusion.cpp: Q_PROPERTY=1;Q_ENUM=1... -192/219 files checked 73% done +193/220 files checked 74% done Checking sources/view/hd/data/treatment/VTreatmentRecirculateData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/treatment/VTreatmentRecirculateData.cpp: Q_PROPERTY=1;Q_ENUM=1... -193/219 files checked 73% done +194/220 files checked 74% done Checking sources/view/hd/data/treatment/VTreatmentRinsebackData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/treatment/VTreatmentRinsebackData.cpp: Q_PROPERTY=1;Q_ENUM=1... -194/219 files checked 73% done +195/220 files checked 74% done Checking sources/view/hd/data/treatment/VTreatmentSalineData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/treatment/VTreatmentSalineData.cpp: Q_PROPERTY=1;Q_ENUM=1... -195/219 files checked 73% done +196/220 files checked 74% done Checking sources/view/hd/data/treatment/VTreatmentStopData.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/treatment/VTreatmentStopData.cpp: Q_PROPERTY=1;Q_ENUM=1... -196/219 files checked 73% done +197/220 files checked 74% done Checking sources/view/hd/data/treatment/VTreatmentTime.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/treatment/VTreatmentTime.cpp: Q_PROPERTY=1;Q_ENUM=1... -197/219 files checked 73% done +198/220 files checked 74% done Checking sources/view/hd/data/treatment/VTreatmentUltrafiltration.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/hd/data/treatment/VTreatmentUltrafiltration.cpp: Q_PROPERTY=1;Q_ENUM=1... -198/219 files checked 73% done +199/220 files checked 74% done Checking sources/view/settings/VAdjustmentAlarmVolume.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/settings/VAdjustmentAlarmVolume.cpp: Q_PROPERTY=1;Q_ENUM=1... -199/219 files checked 74% done +200/220 files checked 74% done Checking sources/view/settings/VAdjustmentDGCleaningUsage.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/settings/VAdjustmentDGCleaningUsage.cpp: Q_PROPERTY=1;Q_ENUM=1... -200/219 files checked 74% done +201/220 files checked 75% done Checking sources/view/settings/VAdjustmentServiceDates.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/settings/VAdjustmentServiceDates.cpp: Q_PROPERTY=1;Q_ENUM=1... -201/219 files checked 74% done +202/220 files checked 75% done Checking sources/view/settings/VAdjustmentServiceMode.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/settings/VAdjustmentServiceMode.cpp: Q_PROPERTY=1;Q_ENUM=1... -202/219 files checked 74% done +203/220 files checked 75% done Checking sources/view/settings/VAdjustmentVersions.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/settings/VAdjustmentVersions.cpp: Q_PROPERTY=1;Q_ENUM=1... -203/219 files checked 74% done +204/220 files checked 75% done Checking sources/view/settings/VBluetooth.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/settings/VBluetooth.cpp: Q_PROPERTY=1;Q_ENUM=1... -204/219 files checked 76% done +205/220 files checked 76% done Checking sources/view/settings/VCloudSync.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/settings/VCloudSync.cpp: Q_PROPERTY=1;Q_ENUM=1... -205/219 files checked 76% done +206/220 files checked 76% done Checking sources/view/settings/VDateTime.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/settings/VDateTime.cpp: Q_PROPERTY=1;Q_ENUM=1... -206/219 files checked 76% done +207/220 files checked 77% done Checking sources/view/settings/VDuetRoWaterDG.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/settings/VDuetRoWaterDG.cpp: Q_PROPERTY=1;Q_ENUM=1... -207/219 files checked 76% done +208/220 files checked 77% done Checking sources/view/settings/VNetworkModel.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/settings/VNetworkModel.cpp: Q_PROPERTY=1;Q_ENUM=1... -208/219 files checked 77% done +209/220 files checked 78% done Checking sources/view/settings/VSettings.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/view/settings/VSettings.cpp: Q_PROPERTY=1;Q_ENUM=1... -209/219 files checked 78% done +210/220 files checked 79% done Checking sources/wifi/WifiInterface.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking sources/wifi/WifiInterface.cpp: Q_PROPERTY=1;Q_ENUM=1... -210/219 files checked 81% done +211/220 files checked 82% done Checking unittests/tst_acknow.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking unittests/tst_acknow.cpp: Q_PROPERTY=1;Q_ENUM=1... -211/219 files checked 81% done +212/220 files checked 82% done Checking unittests/tst_canbus.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking unittests/tst_canbus.cpp: Q_PROPERTY=1;Q_ENUM=1... -212/219 files checked 82% done +213/220 files checked 83% done Checking unittests/tst_initializations.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking unittests/tst_initializations.cpp: Q_PROPERTY=1;Q_ENUM=1... -213/219 files checked 82% done +214/220 files checked 83% done Checking unittests/tst_logging.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking unittests/tst_logging.cpp: Q_PROPERTY=1;Q_ENUM=1... -214/219 files checked 83% done +215/220 files checked 83% done Checking unittests/tst_messaging.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking unittests/tst_messaging.cpp: Q_PROPERTY=1;Q_ENUM=1... -215/219 files checked 85% done +216/220 files checked 85% done Checking unittests/tst_models.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking unittests/tst_models.cpp: Q_PROPERTY=1;Q_ENUM=1... -216/219 files checked 96% done +217/220 files checked 96% done Checking unittests/tst_threads.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking unittests/tst_threads.cpp: Q_PROPERTY=1;Q_ENUM=1... -217/219 files checked 97% done +218/220 files checked 97% done Checking unittests/tst_utilities.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking unittests/tst_utilities.cpp: Q_PROPERTY=1;Q_ENUM=1... -218/219 files checked 97% done +219/220 files checked 97% done Checking unittests/tst_views.cpp ... Defines:Q_PROPERTY=1;Q_ENUM=1 Undefines: Includes: -I.//sources/ -I.//sources/bluetooth/ -I.//sources/canbus/ -I.//sources/cloudsync/ -I.//sources/device/ -I.//sources/gui/ -I.//sources/model/ -I.//sources/storage/ -I.//sources/utility/ -I.//sources/view/ -I.//sources/wifi/ -I.//unittests/ Platform:Native Checking unittests/tst_views.cpp: Q_PROPERTY=1;Q_ENUM=1... -219/219 files checked 100% done +220/220 files checked 100% done Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `cpplint.py'. Fisheye: No comparison available. Pass `N' to diff? Index: denali.pro =================================================================== diff -u -r9b54c54dbe75f2bd6d04ea73d48e1247682002e8 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- denali.pro (.../denali.pro) (revision 9b54c54dbe75f2bd6d04ea73d48e1247682002e8) +++ denali.pro (.../denali.pro) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -1,6 +1,7 @@ QT += qml quick serialbus concurrent charts bluetooth CONFIG += c++17 warn_on # CONFIG += disable-desktop +# QMAKE_CXX = clazy QMAKE_CXXFLAGS += -Wall -Werror -Wextra -Wimplicit-fallthrough=3 # -save-temps # see .ii # -Wpedantic -Wconversion -Wshadow # these can't always be used, since it gives errors in Qt library. @@ -373,7 +374,8 @@ \ # Utility sources/utility/crc.h \ sources/utility/format.h \ - sources/utility/types.h + sources/utility/types.h \ + sources/utility/encryption.h SOURCES += \ \ # common @@ -634,7 +636,8 @@ \ # Utility sources/utility/crc.cpp \ sources/utility/format.cpp \ - sources/utility/types.cpp + sources/utility/types.cpp \ + sources/utility/encryption.cpp RESOURCES += \ denali.qrc Index: denali.pro.user =================================================================== diff -u -rcf61c7736f11f4b75a4e2df803f29bdc7769db53 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- denali.pro.user (.../denali.pro.user) (revision cf61c7736f11f4b75a4e2df803f29bdc7769db53) +++ denali.pro.user (.../denali.pro.user) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -1,6 +1,6 @@ - + EnvironmentId @@ -270,7 +270,7 @@ Qt4ProjectManager.Qt4RunConfiguration:/home/denali/Projects/application/denali.pro /home/denali/Projects/application/denali.pro - --disable-alarm-no-minimize + -K false true true Index: denali.qrc =================================================================== diff -u -rd6231fa108bd5854e6c34f1c713872e5b8d6767d -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- denali.qrc (.../denali.qrc) (revision d6231fa108bd5854e6c34f1c713872e5b8d6767d) +++ denali.qrc (.../denali.qrc) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -18,6 +18,13 @@ sources/gui/qml/pages/settings/SettingsBluetoothCuff.qml sources/gui/qml/pages/settings/SettingsExportLogs.qml sources/gui/qml/pages/settings/SettingsDeviceRegistration.qml + sources/gui/qml/pages/settings/SettingsInformation.qml + sources/gui/qml/pages/settings/SettingsROInput.qml + sources/gui/qml/pages/settings/SettingsRootSSHAccess.qml + sources/gui/qml/pages/settings/SettingsServicePassword.qml + sources/gui/qml/pages/settings/SettingsManufacturingSetup.qml + sources/gui/qml/pages/settings/SettingsFactoryReset.qml + sources/gui/qml/pages/settings/SettingsDecommission.qml sources/gui/qml/dialogs/PowerOff.qml @@ -55,7 +62,8 @@ resources/images/Busy.png resources/images/BusyDone.png resources/images/BusyFail.png - resources/images/eject.png + resources/images/EjectEnabled.png + resources/images/EjectDisabled.png resources/images/eye.png resources/images/Omron-bp7000.png resources/images/chevron-left.png Index: main.cpp =================================================================== diff -u -r6d76149dca70e879f33bf6ed44203d0d06bc523a -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- main.cpp (.../main.cpp) (revision 6d76149dca70e879f33bf6ed44203d0d06bc523a) +++ main.cpp (.../main.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -41,6 +41,7 @@ #include "Compatible.h" // Project +#include "FileHandler.h" #include "MainTimer.h" #include "CanInterface.h" #include "FrameInterface.h" @@ -90,8 +91,8 @@ bool gDisableSDCFailLogStop = false ; bool gDisableCloudSyncFailStop = false ; -bool gEnableCheckInLog = false ; -bool gEnableAcknowLog = false ; +bool gDisableCheckInLog = false ; +bool gDisableAcknowLog = false ; bool gConsoleoutLogs = false ; bool gConsoleoutFrameInterface = false ; @@ -100,8 +101,12 @@ bool gEnableDryDemo = false ; QString gActiveCANBus = "can0"; +bool gEnableManufacturing = false ; +bool gUseRootHome = false ; + QString gParserErrorText = ""; + /*! * \page CommandLineSwitches Denali Command Line Switches * \verbatim @@ -199,7 +204,7 @@ QCoreApplication::translate("main", "Disable unhandled messages report as an error in the log")); parser.addOption(optionDisableUnhandledReport); - // --- -d : enable-dialin-unhandled + // --- -d : disable-dialin-unhandled QCommandLineOption optionDisableDialinUnhandled( QStringList() << "d" << "disable-dialin-unhandled", QCoreApplication::translate("main", "Disable the Dialin messages logged as unhandled")); @@ -229,17 +234,17 @@ QCoreApplication::translate("main", "disable-cloudsync-fail-stop")); parser.addOption(optionDisableCloudSyncFailStop); - // --- -k : enable-Check-in-log (keep-alive) - QCommandLineOption optionEnableCheckInLog( - QStringList() << "k" << "enable-check-in-log", - QCoreApplication::translate("main", "Enables Check-In Log")); - parser.addOption(optionEnableCheckInLog); + // --- -k : disable-Check-in-log (keep-alive) + QCommandLineOption optionDisableCheckInLog( + QStringList() << "k" << "disable-check-in-log", + QCoreApplication::translate("main", "Disables Check-In Log")); + parser.addOption(optionDisableCheckInLog); - // --- -K : enable-acknow-log (Acknowledge) - QCommandLineOption optionEnableAcknowLog( - QStringList() << "K" << "enable-acknow-log", - QCoreApplication::translate("main", "Enables Acknowledgment Log")); - parser.addOption(optionEnableAcknowLog); + // --- -K : disable-acknow-log (Acknowledge) + QCommandLineOption optionDisableAcknowLog( + QStringList() << "K" << "disable-acknow-log", + QCoreApplication::translate("main", "Disables Acknowledgment Log")); + parser.addOption(optionDisableAcknowLog); // --- -D : enable-dry-demo QCommandLineOption optionEnableDryDemo( @@ -254,6 +259,18 @@ QCoreApplication::translate("main", "CANBus")); parser.addOption(optionActiveCANBus); + // --- -E : enable-manufacturing + QCommandLineOption optionEnableManufacturing( + QStringList() << "E" << "enable-manufacturing", + QCoreApplication::translate("main", "Enables the manufacturing mode to configure the system for the first time.")); + parser.addOption(optionEnableManufacturing); + + // --- -R : use-root-home + QCommandLineOption optionUseRootHome( + QStringList() << "R" << "use-root-home", + QCoreApplication::translate("main", "In case the application is not in Manufacturing Setup but needs to use root home folder for configurations.")); + parser.addOption(optionUseRootHome); + // --- parse command lines if ( ! parser.parse(qApp->arguments()) ) { gParserErrorText = parser.errorText(); @@ -271,11 +288,14 @@ gDisableSDCFailLogStop = parser.isSet(optionDisableSDCardFailLogStop ); gDisableCloudSyncFailStop = parser.isSet(optionDisableCloudSyncFailStop ); - gEnableCheckInLog = parser.isSet(optionEnableCheckInLog ); - gEnableAcknowLog = parser.isSet(optionEnableAcknowLog ); + gDisableCheckInLog = parser.isSet(optionDisableCheckInLog ); + gDisableAcknowLog = parser.isSet(optionDisableAcknowLog ); gEnableDryDemo = parser.isSet(optionEnableDryDemo ); + gEnableManufacturing = parser.isSet(optionEnableManufacturing ); + gUseRootHome = parser.isSet(optionUseRootHome ); + if ( parser.isSet(optionActiveCANBus ) ) { QString value = parser.value(optionActiveCANBus); if ( ! value.startsWith("-") && // if a value is not given for the switch then the next switch becomes the value of the previous one @@ -352,6 +372,37 @@ QCoreApplication::setApplicationVersion(version); } +/*! + * \brief lockdown + * \details runs the lockdown shellscript as a detached process + * and ment to be executed just before the application quits + * and only when application running in manufacturing mode. + * Must not stop application shutdown in any way. + * If any error happens it only logs. + */ +void lockdown() { + // there are two setup scenarios: + // only during setup mode which is -E (manufacturing setup) application is running under the root user permissions + // and all the files are copied to the /home/root/ te later be copied to secured locations + // and that will be done by lockdown.sh script running within application after the user is done with the setup and QUIT s the application. + if ( gEnableManufacturing ) { + QString scriptName = Storage::Device_Lockdown; + quint16 errorCode; + QString errorText; + errorCode = Device::DeviceError::checkScript (scriptName, Storage::Device_Lockdown ); + errorText = Device::DeviceError::deviceErrorText( static_cast(errorCode), 1); + qDebug() << errorText; // since we are in the manufacturing mode it is possible to probably take a look at the serial, if not that is being logged. +#ifdef BUILD_FOR_TARGET + Storage::FileHandler::write("/home/root/lockdown.log" , errorText, false); +#else + Storage::FileHandler::write("/home/denali/lockdown.log" , errorText, false); +#endif + if ( ! errorCode ) { + QProcess::startDetached( scriptName, { qApp->applicationName() + ":" + QString::number(qApp->applicationPid()) }); + } + } +} + #ifdef UNIT_TEST #include TEST_CLASS_INCLUDE QTEST_MAIN(TEST_CLASS_NAME) @@ -394,7 +445,7 @@ commandlineParse(); // SYSTEM TEST FOR INSTRUCTIONS WHEN THERE IS NO PORT AVAILABLE - // Storage::FileHandler::copyFolder(QString(Storage::USB_Mount_Point) + "Instructions", QString(Storage::Settings_Path_Name)); + // Storage::FileHandler::copyFolder(QString(Storage::USB_Mount_Point) + "Instructions", QString(Storage::Settings_Path())); //! - Translation initialization QTranslator translator; @@ -447,7 +498,6 @@ //! - Initializing Application Controller _ApplicationController.init(Threads::_Application_Thread); - _ApplicationController.initSettings(); ////! - Initializing GUI Controller _GuiController.init(Threads::_Gui_Thread); @@ -482,6 +532,8 @@ Gui::_viewer->deleteLater(); + lockdown(); + return app_exec; } #endif Index: resources/images/eject.png =================================================================== diff -u -r1a8e9578b27bb3877116675d0b2361ce4f5b5539 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 Binary files differ Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/autostart'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/bluetooth_main.conf'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/bluetooth_paired_clear.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/bluetooth_paired_query.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/brightness_get.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/brightness_set.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/date_time_set.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/export_logs.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/globals.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/run.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/setup.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/start.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/wifi_disconnect_network.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/wifi_generate_wpa_supplicant.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/wifi_read_dns.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/wifi_read_gateway.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/wifi_read_ip_settings.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/wifi_read_network_info.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/wifi_request_auto_assigned_ip.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/wifi_reset_adapter.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/wifi_reset_interface.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/wifi_save_dhcp_interface.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/wifi_save_static_interface_assignments.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/wifi_scan_for_networks.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/wifi_set_auto_assigned_ip.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/wifi_set_dns.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/wifi_set_gateway.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/wifi_set_static_ip.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/wifi_set_subnetmask.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/wifi_start_wpa_supplicant.sh'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6c6f1f5d466badd9b4fd67be7c907234c342b2a2 refers to a dead (removed) revision in file `scripts/wifi_test_internet.sh'. Fisheye: No comparison available. Pass `N' to diff? Index: sources/AlarmGenerator.cpp =================================================================== diff -u -r28845c70151c3fb6f1a8e92c82da0232b6ca854a -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/AlarmGenerator.cpp (.../AlarmGenerator.cpp) (revision 28845c70151c3fb6f1a8e92c82da0232b6ca854a) +++ sources/AlarmGenerator.cpp (.../AlarmGenerator.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -64,22 +64,6 @@ return data; } -/*! - * \brief AlarmGenerator::ALARM_ID_UI_POST_FAILURE_SDCARD - * \details generates the ALARM_ID_UI_POST_FAILURE_SDCARD alarm. - * \return The AlarmStatusData filled with appropriate data for the alarm. - */ -const AlarmStatusData AlarmGenerator::ALARM_ID_UI_POST_FAILURE_SDCARD() -{ - AlarmStatusData data; - data.mState = GuiAlarmPriority::ALARM_PRIORITY_HIGH; // Alarm priority - data.mTop = GuiAlarmID::ALARM_ID_HD_UI_POST_FAILURE_SDCARD; // Alarm ID - data.mMuteTimeout = 0; // Alarm timeout - data.mEscalatesIn = 0; // Alarm Escalate Time Period - data.mFlags = setBits(NO_BUTTON); // No button since there is no HD to communicate. - return data; -} - const AlarmStatusData AlarmGenerator::ALARM_ID_NO_ALARM() { AlarmStatusData data; Index: sources/AlarmGenerator.h =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/AlarmGenerator.h (.../AlarmGenerator.h) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/AlarmGenerator.h (.../AlarmGenerator.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -57,7 +57,6 @@ // static const AlarmStatusData (); // is the enum from GuiAlarmID like ALARM_ID_HD_COMM_TIMEOUT static const AlarmStatusData ALARM_ID_HD_COMM_TIMEOUT(); - static const AlarmStatusData ALARM_ID_UI_POST_FAILURE_SDCARD(); static const AlarmStatusData ALARM_ID_NO_ALARM(); }; Index: sources/ApplicationController.cpp =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/ApplicationController.cpp (.../ApplicationController.cpp) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/ApplicationController.cpp (.../ApplicationController.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -90,6 +90,8 @@ void ApplicationController::initConnections() { + connect(&_post , SIGNAL( didEthernet (bool)), + this , SLOT(onPOSTEthernet (bool))); connect(&_post , SIGNAL( didWiFi (bool)), this , SLOT(onPOSTWiFi (bool))); connect(&_post , SIGNAL( didBluetooth(bool)), @@ -108,6 +110,8 @@ // From GUI connect(&_GuiController , SIGNAL(didActionTransmit(GuiActionType, const QVariantList &)), this , SLOT( onActionTransmit(GuiActionType, const QVariantList &))); + connect(&_GuiController , SIGNAL(didQuitApplication()), + this , SLOT( onQuitApplication())); // From HD/DG connect(&_MessageDispatcher, SIGNAL(didActionReceive(GuiActionType, const QVariantList &)), @@ -134,6 +138,10 @@ connect(&_DeviceController , SIGNAL(didSDCardSpaceTooLow(quint8)), this , SLOT( onSDCardSpaceTooLow(quint8))); + // Configuration Partition + connect(&_DeviceController , SIGNAL(didCryptSetupMount(bool)), + this , SLOT( onCryptSetupMount(bool))); + connect(&_GuiController , SIGNAL(didExportLog (const GuiStringIndexMap &)), this , SLOT( onExportLog (const GuiStringIndexMap &))); connect(&_GuiController , SIGNAL(didExportService (const GuiStringIndexMap &)), @@ -146,9 +154,6 @@ connect(&_Logger , SIGNAL(didExportStat (quint32, const QString &, quint8)), this , SLOT( onExportStat (quint32, const QString &, quint8))); - // Settings - move to application thread - connect(this, SIGNAL(didSettingsInit()), - this, SLOT( onSettingsInit())); connect(&_settingsWatcher, SIGNAL(finished ()), this , SLOT(onSettingsUpdate())); @@ -502,31 +507,30 @@ } // disabled coco end + +void ApplicationController::postDoneRequest() +{ + AdjustUIPostFinalResultRequestData data; + data.mResult = _post.isDone(); + emit didAdjustment(data); +} + /*! * \brief ApplicationController::initSettings * \details The external method available to request for initializing the settings * To start the task in Application Tread, emits a signal which will call a slot to take care of the execution. */ void ApplicationController::initSettings() { - // this emit guaranties that the slot will be called in the application thread - // also the signal is private so it will be used internally only. - emit didSettingsInit({}); -} - -/*! - * \brief ApplicationController::onSettingsInit - * \details The slot which will be called to start the settings initialization in Application thread. - * This method also initializes the Settings model singleton object to let it live in the Application thread. - * To start the setting initialization QConcurrent is used with QFuture to signal the Application when it's done. - */ -void ApplicationController::onSettingsInit() -{ // That is enough to call to the I function here to create the object in the thread that Settings is leaving in, // which currently is Application_Thread, since the Settings is created in that thread. _Settings; - QFuture mFuture = QtConcurrent::run(this, &ApplicationController::settingsInit); + QFuture mFuture = QtConcurrent::run([=](){ // made the call a lambda to make sure there is no function to accidentally being called, out of thread [developer safety]. + //TODO The Settings shall be the Singleton SettingsController and modify the MSettings like the others. + Storage::Settings settings; + settings.read(); + }); _settingsWatcher.setFuture(mFuture); } @@ -539,21 +543,40 @@ { onActionReceive(SettingsData()); + /// POST /// // call initialization functions when setting's ready. _Settings.datetimeFormat(); + emit didSettingsDone( ); // MessageDispatcher -> MessageInterpreter : updateUnhandledMessages + emit didPOSTPass (_post.isDone( )); // GuiController -> GuiView : didPOSTPass(bool) - emit didSettingsDone(); + // HD POST request + postDoneRequest ( ); + versionsRequest (_post.isDone( )); + // UI is done, let's keep in touch + emit didKeepAliveBegin(); } /*! + * \brief ApplicationController::onPOSTEthernet + * \details sends the Ethernet mac to device controller + */ +void ApplicationController::onPOSTEthernet(bool vPass) { + emit didPOSTEthernet (vPass); + emit didPOSTEthernetData(_post.macEthernet()); +} + +/*! * \brief ApplicationController::onPOSTWiFi * \details Starts the WiFi Interface */ void ApplicationController::onPOSTWiFi(bool vPass) { if (vPass) { _WifiInterface.doStart(); } - emit didPOSTWiFi(vPass); + emit didPOSTWireless (vPass); + emit didPOSTWirelessData(_post.macWireless()); + + //DEBUG qDebug() << " ---------- " << _post.macWireless(); } /*! @@ -567,8 +590,9 @@ } else { _BluetoothInterface.doNotifyStatePOSTError(); - emit didPOSTBluetooth(vPass); } + emit didPOSTBluetooth (vPass); + emit didPOSTBluetoothData (_post.macBluetooth()); } /*! @@ -577,7 +601,8 @@ */ void ApplicationController::onPOSTCloudSync(bool vPass) { - emit didPOSTCloudSync(vPass); + emit didPOSTCloudSync (vPass); + emit didPOSTCloudSyncData("000.000.000.000" /*_post.netCloudSync*/); // not needed and post is not getting it yet.[ApplicationController => DeviceController] } /*! @@ -593,15 +618,21 @@ * \brief ApplicationController::onPOSTDone * \details Sends the POST Final message */ -void ApplicationController::onPOSTDone(bool vPass) { - AdjustUIPostFinalResultRequestData data; - data.mResult = vPass; - emit didAdjustment(data); - LOG_DEBUG("ApplicationPost Done"); +void ApplicationController::onPOSTDone(bool /*vPass*/) { + LOG_DEBUG("ApplicationPOST Done"); - versionsRequest(vPass); + /// in manufacturing mode the configurations must reside in /root/home + /// therefore the settings can be initialized after POST. + if ( gEnableManufacturing ) initSettings(); } +void ApplicationController::onQuitApplication() +{ + //DEBUG qDebug() << metaObject()->className() << __FUNCTION__ << QThread::currentThread(); + emit didQuitApplication(); + qApp->quit(); +} + /*! * \brief ApplicationController::versionsRequest * \details Sends a version request @@ -616,17 +647,6 @@ } /*! - * \brief ApplicationController::settingsInit - * \details The Settings read function is called in this method. - * This callback function for the QCuncurrnent run. - */ -void ApplicationController::settingsInit() -{ - Storage::Settings settings; - settings.read(); -} - -/*! * \brief ApplicationController::onstartPOST * \details The POST entry point * - Sends the first async check-in to the HD to let HD know it can start it's POST and UI is ready to communicate. @@ -637,6 +657,16 @@ */ void ApplicationController::onstartPOST() { LOG_DEBUG("ApplicationPost Start"); - emit didActionTransmit(GuiActionType::ID_KeepAlive, {}); _post.start(); } + +/*! + * \brief ApplicationController::onCryptSetupMount + * \details It is the slot to handle _DeviceController::didCryptSetupMount signal. + * Tels the settings start initate. + */ +void ApplicationController::onCryptSetupMount(bool /*vPass*/) +{ + // if ( vPass ) // it needs more investigation + initSettings(); +} Index: sources/ApplicationController.h =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/ApplicationController.h (.../ApplicationController.h) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/ApplicationController.h (.../ApplicationController.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -73,13 +73,14 @@ void initThread(QThread &vThread); void quitThread(); + void initSetttings(); + void keepAlive(); void createFakeSequencedLongMessage (QVariantList &vData, const int vFakeDataLen); void createFakeSeqAtBeginLongMessage(QVariantList &vData, const int vFakeDataLen); - void settingsInit(); - + void postDoneRequest(); void versionsRequest(bool vPass); private slots: // Should be private for thread safety and is connected internally. @@ -97,6 +98,8 @@ void onSDCardSpaceChange(bool vReady, qint64 vTotal, qint64 vAvailable, quint8 vPercent); void onSDCardSpaceTooLow(quint8 vAvailablePercent); + void onCryptSetupMount (bool vPass); + void onExportLog (const GuiStringIndexMap &vExportList); void onExportService (const GuiStringIndexMap &vExportList); void onExportTreatment (const GuiStringIndexMap &vExportList); @@ -105,21 +108,29 @@ void onFailedTransmit(Sequence seq); - void onSettingsInit(); void onSettingsUpdate(); + void onPOSTEthernet (bool vPass); void onPOSTWiFi (bool vPass); void onPOSTBluetooth (bool vPass); void onPOSTCloudSync (bool vPass); void onPOSTFail (Gui::GuiAlarmID vAlarmID); void onPOSTDone (bool vPass); + void onQuitApplication (); + signals: - void didPOSTWiFi (bool vPass); + void didPOSTEthernet (bool vPass); + void didPOSTWireless (bool vPass); void didPOSTBluetooth (bool vPass); void didPOSTCloudSync (bool vPass); + void didPOSTEthernetData (const QString &vMacAddress); + void didPOSTWirelessData (const QString &vMacAddress); + void didPOSTBluetoothData (const QString &vMacAddress); + void didPOSTCloudSyncData (const QString &vNetAddress); + signals: void didActionReceive (GuiActionType vAction, const QVariantList &vData); // UI <= HD/DG void didActionTransmit(GuiActionType vAction, const QVariantList &vData); // UI => HD/DG @@ -148,6 +159,26 @@ * \details This signal will be emitted when the settings are read and ready to be used. */ void didSettingsDone (); + /*! + * \brief didPOSTPass + * \details This signal will be emitted when UI is done with the POST and will let other layers to know the result. + * As an example the Manufacturing will not start if the POST failed since it needs POST info for the Encrypted partition. + * \param vPass - true if passed. + */ + void didPOSTPass (bool vPass); + /*! + * \brief didKeepAliveBegin + * \details this signal will be emitted by ApplicationController + * when it is done with all the messaging and has nothing to say + * just to keep the conversation alive and let HD know UI is alive. + */ + void didKeepAliveBegin (); + /*! + * \brief didQuitApplication + * \details this signal is a placeholder for any farther notification to any class which needs to close itself. + * it will be used to let the other classes to stop and move to main thread. + */ + void didQuitApplication (); // Device Signal/Slots DEVICE_APP_BRIDGE_DEFINITION_LIST @@ -157,7 +188,6 @@ ACTION_RECEIVE_MODEL_BRIDGE_DEFINITIONS ACTION_RECEIVE_PRIVATE_SLOT_NOEMIT(UIPostFinalResultHDRequestData) { - onPOSTDone(_post.isDone()); emit didActionReceive(vData); } Index: sources/ApplicationPost.cpp =================================================================== diff -u -r7c86f3854db9ad02d95681203198d75a0d65c9fa -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/ApplicationPost.cpp (.../ApplicationPost.cpp) (revision 7c86f3854db9ad02d95681203198d75a0d65c9fa) +++ sources/ApplicationPost.cpp (.../ApplicationPost.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -36,7 +36,7 @@ */ void ApplicationPost::start() { - QString postLogFileName = qApp->applicationDirPath() + "/" + Storage::POST_LOG; + QString postLogFileName = QDir::tempPath() + "/" + Storage::POST_LOG; if (Storage::FileHandler::read(postLogFileName, _content)) { _isShaSum = checkShaSum (); _isCANBus = checkCANBus (); @@ -64,6 +64,8 @@ isWiFi () && isBluetooth () && isCloudSync () && + // isEthernet () && // it is being executed to get the information but is not part of the POST failure. + // isSound () && isYearCheck () ; } @@ -155,13 +157,46 @@ } /*! + * \brief ApplicationPost::checkEthernet + * \details Checks the Ethernet driver is loaded and functional. + * \return false if there is an issue [Removed from the PRS (always true)]. + */ +bool ApplicationPost::checkEthernet() +{ + bool ok = false; + int posDev = -1; + int posMac = -1; + QString section = ""; + posDev = _content.indexOf( _devEthernet ); if ( posDev < 0 ) goto lOut; + section = _content.mid(posDev, _macAppearLen); + posMac = section.indexOf(_macEthernetLabel); if ( posMac < 0 ) goto lOut; + _macEthernet = section.mid(posMac + _macEthernetLabel.length(), _macAddrssLen).toUpper(); if ( _macEthernet.isEmpty() ) goto lOut; + ok = true; + +lOut: + if (! ok) emit didFail(Gui::GuiAlarmID::ALARM_ID_HD_UI_POST_FAILURE_ETHERNET); + emit didEthernet(ok); + return ok; +} + +/*! * \brief ApplicationPost::checkWiFi * \details Checks the WiFi driver is loaded and functional * \return false if there is an issue. */ bool ApplicationPost::checkWiFi() { - bool ok = _content.contains(_postmsg_wifi + _postmsg_postfix_passed); + bool ok = false; + int posDev = -1; + int posMac = -1; + QString section = ""; + posDev = _content.indexOf( _devWireless ); if ( posDev < 0 ) goto lOut; + section = _content.mid(posDev, _macAppearLen); + posMac = section.indexOf(_macWirelessLabel); if ( posMac < 0 ) goto lOut; + _macWireless = section.mid(posMac + _macWirelessLabel.length(), _macAddrssLen).toUpper(); if ( _macWireless.isEmpty() ) goto lOut; + ok = _content.contains(_postmsg_wifi + _postmsg_postfix_passed); + +lOut: if (! ok) emit didFail(Gui::GuiAlarmID::ALARM_ID_HD_UI_POST_FAILURE_WIFI); emit didWiFi(ok); return ok; @@ -174,7 +209,17 @@ */ bool ApplicationPost::checkBluetooth() { - bool ok = _content.contains(_postmsg_bluetooth + _postmsg_postfix_passed); + bool ok = false; + int posDev = -1; + int posMac = -1; + QString section = ""; + posDev = _content.indexOf( _devBluetooth ); if ( posDev < 0 ) goto lOut; + section = _content.mid(posDev, _macAppearLen); + posMac = section.indexOf(_macBluetoothLabel); if ( posMac < 0 ) goto lOut; + _macBluetooth = section.mid(posMac + _macBluetoothLabel.length(), _macAddrssLen).toUpper(); if ( _macBluetooth.isEmpty() ) goto lOut; + ok = _content.contains(_postmsg_bluetooth + _postmsg_postfix_passed); + +lOut: if (! ok) emit didFail(Gui::GuiAlarmID::ALARM_ID_HD_UI_POST_FAILURE_BLUETOOTH); emit didBluetooth(ok); return ok; @@ -197,20 +242,6 @@ } /*! - * \brief ApplicationPost::checkEthernet - * \details Checks the Ethernet driver is loaded and functional. - * \return false if there is an issue [Removed from the PRS (always true)]. - */ -bool ApplicationPost::checkEthernet() -{ - bool ok = true; - // do the test : we are not using this for now since it has been removed from the PRS. - if (! ok) emit didFail(Gui::GuiAlarmID::ALARM_ID_HD_UI_POST_FAILURE_ETHERNET); - emit didEthernet(ok); - return ok; -} - -/*! * \brief ApplicationPost::checkSound * \details Checks the sound driver is loaded. * \return false if there is an issue [No Implementation yet (always true)]. Index: sources/ApplicationPost.h =================================================================== diff -u -r7c86f3854db9ad02d95681203198d75a0d65c9fa -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/ApplicationPost.h (.../ApplicationPost.h) (revision 7c86f3854db9ad02d95681203198d75a0d65c9fa) +++ sources/ApplicationPost.h (.../ApplicationPost.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -70,6 +70,18 @@ const QString _postmsg_shasum = "App shasum" ; // POSTMSG_SHASUM="App shasum" const QString _postmsg_cloudsync = "CloudSync" ; // POSTMSG_CLOUDSYNC="CloudSync" + const quint8 _macAddrssLen = 17 ; // ff:ff:ff:ff:ff:ff + const quint8 _macAppearLen = 200 ; // the mac address shall be found within the next 200 characters. + const QString _devEthernet = "eth0:" ; + const QString _devWireless = "wlan0:" ; + const QString _devBluetooth = "hci0:" ; + const QString _macEthernetLabel = "link/ether " ; // the last space is important + const QString _macWirelessLabel = "link/ether " ; // the last space is important + const QString _macBluetoothLabel = "BD Address: "; // the last space is important + QString _macEthernet = "" ; + QString _macWireless = "" ; + QString _macBluetooth = "" ; + const int _yearMinimum = 2022 ; // The year to check for minimum // tests // Severity @@ -101,20 +113,24 @@ bool checkYear (); public: - bool isShaSum () { return _isShaSum ; } - bool isCANBus () { return _isCANBus ; } - bool isDisplay () { return _isDisplay ; } - bool isTouch () { return _isTouch ; } - bool isSDCard () { return _isSDCard ; } - bool isRtc () { return _isRtc ; } - bool isWiFi () { return _isWiFi ; } - bool isBluetooth () { return _isBluetooth ; } - bool isCloudSync () { return _isCloudSync ; } - bool isEthernet () { return _isEthernet ; } - bool isSound () { return _isSound ; } - bool isYearCheck () { return _isYearCheck ; } - bool isDone () { return _isDone ; } + bool isShaSum () const { return _isShaSum ; } + bool isCANBus () const { return _isCANBus ; } + bool isDisplay () const { return _isDisplay ; } + bool isTouch () const { return _isTouch ; } + bool isSDCard () const { return _isSDCard ; } + bool isRtc () const { return _isRtc ; } + bool isWiFi () const { return _isWiFi ; } + bool isBluetooth () const { return _isBluetooth ; } + bool isCloudSync () const { return _isCloudSync ; } + bool isEthernet () const { return _isEthernet ; } + bool isSound () const { return _isSound ; } + bool isYearCheck () const { return _isYearCheck ; } + bool isDone () const { return _isDone ; } + QString macEthernet () const { return _macEthernet ; } + QString macWireless () const { return _macWireless ; } + QString macBluetooth () const { return _macBluetooth ; } + public: explicit ApplicationPost(QObject *parent = nullptr); void start(); Index: sources/MainTimer.cpp =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/MainTimer.cpp (.../MainTimer.cpp) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/MainTimer.cpp (.../MainTimer.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -19,7 +19,7 @@ //Project #include "Logger.h" -//#include "FileHandler.h" +#include "ApplicationController.h" /*! * \brief MainTimer::MainTimer @@ -42,15 +42,24 @@ if (gFakeInterval) { startTimer(gFakeInterval); } - // disabled coco end - else { - startTimer(_interval); - } + + initConnections(); LOG_DEBUG(tr("%1 Initialized").arg(metaObject()->className())); return true; } /*! + * \brief ApplicationController::initConnections + * \details Initializes the required signal/slot connection between this class and other objects + * to be able to communicate. + */ +void MainTimer::initConnections() +{ + connect(&_ApplicationController , SIGNAL(didKeepAliveBegin()), + this , SLOT( onKeepAliveBegin())); +} + +/*! * \brief MainTimer::quit * \details Does nothing for now */ @@ -107,6 +116,18 @@ } /*! + * \brief MainTimer::onKeepAliveBegin + * \details the handler for the signal didKeepAliveBegin + * comming from ApplicationController + */ +void MainTimer::onKeepAliveBegin() +{ + if ( ! gFakeInterval ) { + startTimer(_interval); + } +} + +/*! * \brief MainTimer::timerEvent * \details This event handler has been re-implemented in here * to receive timer events for the object Index: sources/MainTimer.h =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/MainTimer.h (.../MainTimer.h) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/MainTimer.h (.../MainTimer.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -36,12 +36,18 @@ static const int _interval = 1000; //ms + void initConnections(); + public: bool init(); void quit(); private: bool isDateChanged(bool vIncludeTime = false); + +private slots: + void onKeepAliveBegin(); + signals: void didTimeout(); void didDateChange(); Index: sources/Threads.cpp =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/Threads.cpp (.../Threads.cpp) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/Threads.cpp (.../Threads.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -49,6 +49,7 @@ { // Logger : This is required for Signal/Slots in threading. qRegisterMetaType("LogType"); + qRegisterMetaType("Logger::LogType"); // CanInterface : This is required for Signal/Slots in threading. qRegisterMetaType("QCanBusFrame"); Index: sources/canbus/CanInterface.cpp =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/canbus/CanInterface.cpp (.../CanInterface.cpp) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/canbus/CanInterface.cpp (.../CanInterface.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -194,6 +194,8 @@ return false; } // disabled coco end + _canDevice->setConfigurationParameter(QCanBusDevice::CanFdKey , _canFDKey ); + _canDevice->setConfigurationParameter(QCanBusDevice::BitRateKey , _canBitRate ); return true; } Index: sources/canbus/CanInterface.h =================================================================== diff -u -raf8d98b36b427e2b5f4d6659fcf3b58ee79eab6a -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/canbus/CanInterface.h (.../CanInterface.h) (revision af8d98b36b427e2b5f4d6659fcf3b58ee79eab6a) +++ sources/canbus/CanInterface.h (.../CanInterface.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -56,6 +56,7 @@ const char *_canType = "socketcan"; QString _canInterface = gActiveCANBus; // can0 by default, can be altered by -A(--active-can-bus) const int _canBitRate = 250000; + const bool _canFDKey = false; // member variables QCanBusDevice *_canDevice = nullptr; Index: sources/canbus/MessageDispatcher.cpp =================================================================== diff -u -r159f2bb0317c7c3c0336e4cb80c7fef3f87e329a -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/canbus/MessageDispatcher.cpp (.../MessageDispatcher.cpp) (revision 159f2bb0317c7c3c0336e4cb80c7fef3f87e329a) +++ sources/canbus/MessageDispatcher.cpp (.../MessageDispatcher.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -839,7 +839,7 @@ bool mNeedsAcknow = needsAcknow(vActionId); if (mNeedsAcknow) { mSequence = -mSequence; - if ( gEnableAcknowLog ) { + if ( ! gDisableAcknowLog ) { LOG_APPED(tr("UI,Ack Req, Sq:%1, ID:%2").arg(mSequence).arg(Format::toHexString(vActionId))); } #ifdef DEBUG_ACKBACK_HD_TO_UI @@ -913,7 +913,7 @@ bool ok = false; if ( mActionId == GuiActionType::ID_Acknow ) { ok = true; - if ( gEnableAcknowLog ) { + if ( ! gDisableAcknowLog ) { LOG_APPED(tr("%1,Ack Bak, Sq:%2").arg(vSrcText).arg(mSequence)); } #ifdef DEBUG_ACKBACK_HD_TO_UI @@ -942,7 +942,7 @@ if (mSequence < 0) { ok = true; - if ( gEnableAcknowLog ) { + if ( ! gDisableAcknowLog ) { LOG_APPED(tr("%1,Ack Req, Sq:%2, ID:%3").arg(vSrcText).arg(mSequence).arg(Format::toHexString(mActionId))); } #ifdef DEBUG_ACKBACK_HD_TO_UI @@ -952,7 +952,7 @@ QString dstText; Can_Id dstID = MessageInterpreter::identifyDestination(vMessage.can_id, &dstText); actionTransmit(GuiActionType::ID_Acknow, {}, -mSequence, dstID); - if ( gEnableAcknowLog ) { + if ( ! gDisableAcknowLog ) { LOG_APPED(tr("UI,Ack Bak, Sq:%1, Dst:%2").arg(-mSequence).arg(dstText)); } #ifdef DEBUG_ACKBACK_HD_TO_UI Index: sources/canbus/MessageInterpreter.cpp =================================================================== diff -u -r159f2bb0317c7c3c0336e4cb80c7fef3f87e329a -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 159f2bb0317c7c3c0336e4cb80c7fef3f87e329a) +++ sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -212,9 +212,9 @@ if ( length ) { // this message has a variable length vPayload = Format::fromVariant(vData.first()); } - if ( gEnableCheckInLog ) + if ( ! gDisableCheckInLog ) { LOG_APPED_UI(QString("CheckIn")); - + } break; case Gui::GuiActionType::ID_RawData: // len: 255, can have any len @@ -223,6 +223,7 @@ } LOG_APPED_UI(QString("RawData")); break; + // Generic Confirm case Gui::GuiActionType::ID_DuetConfirmUIr : INTERPRET_TRANSMIT_MESSAGE(DuetConfirmUIrData ); break; // RO Water Index: sources/cloudsync/CloudSyncController.cpp =================================================================== diff -u -r6d76149dca70e879f33bf6ed44203d0d06bc523a -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/cloudsync/CloudSyncController.cpp (.../CloudSyncController.cpp) (revision 6d76149dca70e879f33bf6ed44203d0d06bc523a) +++ sources/cloudsync/CloudSyncController.cpp (.../CloudSyncController.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -103,6 +103,9 @@ connect(&_ApplicationController , SIGNAL(didPOSTCloudSync(bool)), this , SLOT( onPOSTCloudSync(bool))); + connect(&_DeviceController , SIGNAL(didCryptSetupMount(bool)), + this , SLOT( onCryptSetupMount(bool))); + connect(&_DeviceController , SIGNAL(didWatchFileChange (const QString &)), this , SLOT( onWatchFileChange (const QString &))); connect(&_MessageDispatcher , SIGNAL(didActionReceive (GuiActionType , const QVariantList &)), @@ -193,10 +196,20 @@ void CloudSyncController::onPOSTCloudSync(bool vPass) { _postPass = vPass; - testReady(); } /*! + * \brief CloudSyncController::onCryptSetupMount + * \details This the handler for the DeviceController::onCryptSetupMount() + */ +void CloudSyncController::onCryptSetupMount(bool vPass) +{ + if ( vPass ) { + testReady(); + } +} + +/*! * \brief CloudSyncController::onWatchFileChange * \details This slot will be called when the Device Controller identifies any changes in the watched files. * \param vFile - watched file @@ -347,9 +360,8 @@ case eError_LogFolder : text = tr( "CS The log folder cannot be created." ) ; break; case eError_LogFileInp : text = tr( "CS Error writing to the input file." ) ; break; case eError_CredentialFile : text = tr( "CS The credentials file does not exist." ) ; break; - case eError_CredentialMake : text = tr( "CS The credentials folder make failed." ) ; break; - case eError_CredentialCopy : text = tr( "CS The credentials file copy failed." ) ; break; - case eError_CredentialRemove: text = tr( "CS The credentials file remove failed." ) ; break; + case eError_CredentialPath : text = tr( "CS The credentials folder is incorrect." ) ; break; + case eError_CredentialCount : text = tr( "CS No credential file name provided." ) ; break; case eError_CredentialEmpty : text = tr( "CS The credentials folder is empty." ) ; break; case eError_TxCodeNoParam : text = tr( "CS No Treatment Code provided." ) ; break; case eError_TxCodeEmpty : text = tr( "CS The provided Treatment Code is empty." ) ; break; @@ -392,9 +404,8 @@ case eError_LogFolder : ; break; case eError_LogFileInp : ; break; case eError_CredentialFile : info = QString( "[%1:%2]" ).arg( vErrorID ).arg( item(0) ) ; break; - case eError_CredentialMake : info = QString( "[%1:%2]" ).arg( vErrorID ).arg( item(0) ) ; break; - case eError_CredentialCopy : info = QString( "[%1:%2]" ).arg( vErrorID ).arg( item(0) ) ; break; - case eError_CredentialRemove: info = QString( "[%1:%2]" ).arg( vErrorID ).arg( item(0) ) ; break; + case eError_CredentialPath : info = QString( "[%1:%2]" ).arg( vErrorID ).arg( item(0) ) ; break; + case eError_CredentialCount : info = QString( "[%1:%2]" ).arg( vErrorID ).arg( item(0) ) ; break; case eError_CredentialEmpty : info = QString( "[%1:%2]" ).arg( vErrorID ).arg( item(0) ) ; break; case eError_TxCodeNoParam : info = QString( "[%1:%2]" ).arg( vErrorID ).arg( item(0) ) ; break; case eError_TxCodeEmpty : info = QString( "[%1:%2]" ).arg( vErrorID ).arg( item(0) ) ; break; @@ -528,11 +539,17 @@ // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // writing the message into the buffer. LOG_APPED_UI( vInpBuff ); + if(!QFile::exists(_date_inp_File)){ + Storage::FileHandler::makeFolder(_location); + } if ( ! Storage::FileHandler::write(_date_inp_File, vInpBuff + "\n") ) { error = eError_LogFileInp; args = { _date_inp_File }; ok = false; goto lErr; } return ok; lErr: - toLog(error, args); + // don't send the error back to the CS + // it calls this same function if the error is in this function + // and creates a loop + LOG_DEBUG(toText(error) + " " + toInfo(error, args)); return ok; } @@ -668,8 +685,6 @@ qint32 messageID = UI2CS(static_cast( eMessageID_TxReport )); if ( ! isRegistered() ) { error = eError_NotRegistered ; args = { vFileName }; ok = false; goto lErr; } - - sendCredentialsSend(); // TODO: This has to be removed later, it is a workaround for Cloud issue, during our talk with KBM. sendUIBuff(makeUIBuff( messageID , { vFileName } )); return; @@ -692,7 +707,6 @@ case eMessageID_DeviceInfo : ok = sendDeviceInfo ( ); break; case eMessageID_CredentialsSave : ok = sendCredentialsSave( vMessage ); break; - case eMessageID_CredentialsSend : ok = sendCredentialsSend( ); break; case eMessageID_ResetFactory : ok = sendResetFactory ( ); break; case eMessageID_DeviceState : ok = sendDeviceState ( ); break; @@ -726,7 +740,6 @@ bool CloudSyncController::sendDeviceState() { bool ok = false; - sendCredentialsSend(); // TODO: This has to be removed later, it is a workaround for Cloud issue, during our talk with KBM. ok = sendUIHistory(eMessageID_DeviceState); return ok; } @@ -764,37 +777,24 @@ /*! * \brief CloudSyncController::sendCredentialsSave - * \details saves the credentials files which their location have been sent. + * \details validates the credentials files which their sent location. * \param vMessage - the message received from CloudSync - * \return true on successfully saving the files. + * \return true on successfully validate the files. */ bool CloudSyncController::sendCredentialsSave( const Message &vMessage) { bool ok = true; QString destination = QString(Storage::CloudSync_Base_Path_Name) + Storage::CloudSync_Credentials_Folder_Name; - // create the destination folder if does not exist. - if ( ! Storage::FileHandler::makeFolder( destination ) ) { toLog(eError_CredentialMake , { }); ok = false; goto lOut; } - // file existence has been separated from copy remove to avoid partial copy. + if ( ! vMessage.params.count() ) { toLog(eError_CredentialCount , { }); ok = false; goto lOut; } for ( auto fileName : vMessage.params ) { - if ( ! QFileInfo::exists(fileName) ) { toLog(eError_CredentialFile , {fileName }); ok = false; goto lOut; } + QFileInfo fileinfo(fileName); + if ( ! fileinfo.exists() ) { toLog(eError_CredentialFile , {fileName }); ok = false; goto lOut; } + if ( fileinfo.absolutePath() != destination ) { toLog(eError_CredentialPath , {fileName }); ok = false; goto lOut; } } + // no need to call for isRegistered() function, we are testing for the count, location, and existence. - if ( ok ) { - for ( auto sourceFile : vMessage.params ) { - QString fileName = QFileInfo(sourceFile).fileName(); - // NOTE: If a file with the name newName already exists, copy() returns false (i.e., QFile will not overwrite it). - // For the current scenario it is ideal, since that folder will turn RO after the successful registration and copying the files and reboot. - if ( ! QFile::copy (sourceFile, destination + fileName) ) { toLog(eError_CredentialCopy , {fileName }); ok = false; goto lOut; } - } - // if all the copies are successful then remove them. - for ( auto sourceFile : vMessage.params ) { - QString fileName = QFileInfo(sourceFile).fileName(); - if ( ! QFile::remove(sourceFile ) ) { toLog(eError_CredentialRemove , {fileName }); ok = false; goto lOut; } - } - } - lOut: if ( ok ) sendCredentialsResponse(); emit didRegisterDone(ok); @@ -803,27 +803,6 @@ } /*! - * \brief CloudSyncController::sendSaveCredentials - * \details saves the credentials files which their location have been sent. - * \param vMessage - the message received from CloudSync - * \return true on successfully saving the files. - */ -bool CloudSyncController::sendCredentialsSend() -{ - bool ok = true; - qint32 messageID = UI2CS(eMessageID_CredentialsSend); - QString source = QString(Storage::CloudSync_Base_Path_Name) + Storage::CloudSync_Credentials_Folder_Name; - QString destination = QStandardPaths::writableLocation(QStandardPaths::TempLocation) + "/" + Storage::CloudSync_Credentials_Folder_Name; - - if ( Storage::FileHandler::copyFolder(source, destination) != 0 ) { toLog(eError_CredentialCopy , {destination }); ok = false; goto lOut; } - ok = sendUIBuff({QString("%1").arg( messageID ), "1", destination}); - -lOut: - emit didRegisterStart(ok); - return ok; -} - -/*! * \brief CloudSyncController::sendCredentialsResponse * \return send the confirmation of the credential save on the device from UI to CS to let CS know when to delete them. */ @@ -854,7 +833,7 @@ if ( mTxCode.isEmpty() ) { toLog(eError_TxCodeEmpty , {}); ok = false; goto lOut; } emit didTxCodeReceive ( mTxCode ); - qDebug() << " ---------- " << mTxCode; + //DEBUG qDebug() << " ---------- " << mTxCode; lOut: return ok; Index: sources/cloudsync/CloudSyncController.h =================================================================== diff -u -r6d76149dca70e879f33bf6ed44203d0d06bc523a -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/cloudsync/CloudSyncController.h (.../CloudSyncController.h) (revision 6d76149dca70e879f33bf6ed44203d0d06bc523a) +++ sources/cloudsync/CloudSyncController.h (.../CloudSyncController.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -16,7 +16,6 @@ // Qt #include -#include #include // Project @@ -106,11 +105,10 @@ eError_LogFolder = 962, eError_LogFileInp = 963, - eError_CredentialMake = 964, // the UI vault folder for cloudsync credentials can't be created. + eError_CredentialPath = 964, // the UI vault folder for cloudsync credentials is not what is expected. eError_CredentialFile = 965, // the credential files sent to UI can't be find or read or doesn't exist.. - eError_CredentialCopy = 966, // the credential files sent to UI can't be copied to UI vault. - eError_CredentialRemove = 967, // the credential files sent to UI can't be removed. - eError_CredentialEmpty = 968, // the UI folder doesn't have credential files. + eError_CredentialCount = 966, // No credential file sent to UI in the message. + eError_CredentialEmpty = 967, // the UI folder doesn't have credential files. eError_TxCodeNoParam = 969, // the received Tx Code not provided eError_TxCodeEmpty = 970, // the received Tx Code is empty @@ -153,8 +151,8 @@ eMessageID_DeviceRegister = 1, // [ UI(1001) -> CS( ) ] Device Registration Request eMessageID_DeviceInfo = 2, // [ CS(2002) <-> UI(1002) ] Device information Request - eMessageID_CredentialsSave = 3, // [ CS(2003) -> UI( ) ] Save Credentials Request - eMessageID_CredentialsSend = 4, // [ CS(2004) <-> UI(1004) ] Send Credentials Request + eMessageID_CredentialsSave = 3, // [ CS(2003) <-> UI(1003) ] Save Credentials Request/Response + // Removed CredentialsSend = 4, // [ CS(2004) <-> UI(1004) ] Send Credentials Request eMessageID_ResetFactory = 5, // [ CS(2005) <-> UI(1005) ] Reset Factory Request // Deployment eMessageID_DeviceState = 6, // [ CS(2006) <-> UI(1006) ] Device State Request @@ -205,6 +203,7 @@ void onTxPending (const QString &vFileName ); void onInitComplete (); void onPOSTCloudSync (bool vPass ); + void onCryptSetupMount (bool vPass ); signals: void didInitComplete (); @@ -272,7 +271,6 @@ bool sendResetFactory (); // eMessageID_ResetFactory bool sendCredentialsSave (const Message &vMessage); // eMessageID_SaveCredentials - bool sendCredentialsSend (); // eMessageID_SendCredentials bool sendCredentialsResponse(); bool sendTxCodeDisplay (const Message &vMessage); // eMessageID_TxCodeDisplay Index: sources/device/DeviceController.cpp =================================================================== diff -u -r7c86f3854db9ad02d95681203198d75a0d65c9fa -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/device/DeviceController.cpp (.../DeviceController.cpp) (revision 7c86f3854db9ad02d95681203198d75a0d65c9fa) +++ sources/device/DeviceController.cpp (.../DeviceController.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -30,6 +30,8 @@ #include "ApplicationController.h" #include "FileHandler.h" #include "DeviceModels.h" +#include "Settings.h" +#include "encryption.h" // namespace using namespace Model; @@ -106,8 +108,20 @@ connect(&_fileSystemWatcher , SIGNAL( fileChanged(const QString &)), this , SLOT( onWatchFileChanged(const QString &))); + connect(&_ApplicationController , SIGNAL(didPOSTEthernetData (const QString &)), + this , SLOT( onPOSTEthernetData (const QString &))); + connect(&_ApplicationController , SIGNAL(didPOSTWirelessData (const QString &)), + this , SLOT( onPOSTWirelessData (const QString &))); + connect(&_ApplicationController , SIGNAL(didPOSTBluetoothData (const QString &)), + this , SLOT( onPOSTBluetoothData (const QString &))); + connect(&_ApplicationController , SIGNAL(didPOSTCloudSyncData (const QString &)), + this , SLOT( onPOSTCloudSyncData (const QString &))); + DEVICE_DEV_INIT_CONNECTIONS_LIST + connect(this, SIGNAL(didEventThreadChange()), + this, SLOT( onEventThreadChange())); + } /*! @@ -126,6 +140,8 @@ connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(quit())); _thread->start(); moveToThread(_thread); + + emit didEventThreadChange( QPrivateSignal() ); } /*! @@ -157,7 +173,7 @@ { // disabled coco begin validated: Needed User Interaction so tested manually // This function cannot be tested on any device other than target - // because only on device the usb is /dev/sdX# and others are mmblk___ + // because only on device the usb is /dev/sdX# and others are mmcblk___ // but on VM and normal Linuxes all drives are /dev/sdX# and cannot be identified as USB. // And the difference between how USB is detected and sd-card is that // for the USB we need to look into /dev/sdX# @@ -228,21 +244,19 @@ */ void DeviceController::usbCheck() { - // disabled coco begin validated: Needed User Interaction so tested manually QString device = ""; usbSpaceCheck(); if (usbSeek(device)) { - if (! _umounted ) { + if (! _umounted ) { // avoid to mount the USB which has just been unmounted usbMount(device); - } else { + } else { // the umount is requested? usbUmount(USB_Mount_Point); } } else { if ( ! _removed ) { usbRemove(); } } - // disabled coco end } /*! @@ -256,7 +270,7 @@ static bool mOIsReady = false; bool mCIsReady = false; static bool mOIsReadOnly = false; bool mCIsReadOnly = false; static qint64 mOAvailable = 0; qint64 mCAvailable = 0; - static quint8 mOPercent = 0; quint8 mCPercent = 0; + static quint8 mOPercent = 0; quint8 mCPercent = 0; qint64 mCTotal = 0; @@ -394,29 +408,10 @@ * \param vDevice - USB device to be mounted (e.g. /dev/sda1) * \return true on successful mount */ -bool DeviceController::usbMount(const QString &vDevice) +void DeviceController::usbMount(const QString &vDevice) { - // disabled coco begin validated: This needs user interaction to plug-in the USB device - // has been tested manually - bool ok; - _usbDrive = vDevice.toLatin1().constData(); - ok = ::mount(_usbDrive, USB_Mount_Point, USB_File_System, - MS_SYNCHRONOUS | - MS_NOEXEC | // Disallow program execution - MS_NODEV | - MS_NOSUID , // Setting this option on a file system prevents users from introducing privileged programs onto the system and allowing non-root users to execute them. - "") == 0; - if (ok) { - _mounted = true; - _removed = false; - LOG_DEBUG(QString("USB flash drive %1 has been mounted on %2").arg(vDevice).arg(USB_Mount_Point)); - emit didUSBDriveMount(); - } else { - usbError(vDevice); - } - return ok; + usbMountReq(vDevice); } -// disabled coco end /*! * \brief DeviceController::usbUmount @@ -425,23 +420,10 @@ * \param vDevice - USB device to be unmounted (e.g. /dev/sda1) * \return true on successful unmount */ -bool DeviceController::usbUmount(const QString &vDevice) +void DeviceController::usbUmount(const QString &vDevice) { - // disabled coco begin validated: This needs user interaction to plug-out the USB device - // has been tested manually - bool ok; - ok = ::umount(vDevice.toLatin1().constData()) == 0; - if (ok) { - _mounted = false; - LOG_DEBUG(QString("USB drive %2 unmounted").arg(vDevice)); - emit didUSBDriveUmount(); - } else { - // the error is irrelevant, commented out for now - //usbError(vDevice); - } - return ok; + usbMountReq(vDevice, false); } -// disabled coco end /*! * \brief DeviceController::usbRemove @@ -477,15 +459,16 @@ vModel._data.mAccepted = false ; vModel._data.mReason = vError ; vModel._data.mMessage = DeviceError::deviceErrorText(vError, vError); - LOG_APPED(src + vModel._data.mMessage + " " + vExtraLogInfo); + LOG_APPED(" ," + src + vModel._data.mMessage + " " + vExtraLogInfo); emit didAttributeResponse(vModel._data); return true; } return false; } +///////////////////////////////////////////// DeviceBrightness /*! - * \brief DeviceController::doBrightness + * \brief DeviceController::onAttributeRequest * \details Sets the brightness level * \param vBrightness */ @@ -548,6 +531,150 @@ } } + +///////////////////////////////////////////// DeviceRootSSHAccess +/*! + * \brief DeviceController::onAttributeRequest + * \details Sets the RootSSHAccess + * \param vRootSSHAccess + */ +void DeviceController::onAttributeRequest(const DeviceRootSSHAccessRequestData &vData) +{ + // ----- initializing the member variable models + _deviceRootSSHAccessRequest._data = vData; + LOG_APPED( _deviceRootSSHAccessRequest.toString()); + + // ----- check that script exists. + QString script; + if ( checkError( DeviceError::checkScript(script, vData.mIsGet ? RootSSHAccess_Get : RootSSHAccess_Set), _deviceRootSSHAccessResponse, script) ) + return; + + // ----- check if the process is not running + if ( _processRootSSHAccess.state() != QProcess::NotRunning ) { + checkError(DeviceError::eDevice_Scripts_Error_IsRunning, _deviceRootSSHAccessResponse); + return; + } + + // ----- run the process + + TimedProcess *timedProcess = new TimedProcess(&_processRootSSHAccess, script, 1000, { _deviceRootSSHAccessRequest._data.mRootSSHAccess ? "YES": "no" }); + timedProcess->start(); +} + +/*! + * \brief DeviceController::onProcessRootSSHAccessExitCode + * \details Called when the process to set the RootSSHAccess has finished + * \param vExitCode (int) the exit code + * \note exit code -> 0 : set Accept [MBase] -> Log -> emit + * !0 : set Attrib [MBrgh] -> Log -> emit + * 1 - get an error when in onAttributeRequest : scriptErrorText([Gui Enum ]) + * 2 - get an error when in onProcessRootSSHAccessExitCode : scriptErrorText([vExitCode]) + * 3 - get no error when in onProcessRootSSHAccessExitCode : MDeviceResponse.toString() + * - in case 3 the specific model _data has to be filled prior to the toString to have it in the log. + */ +void DeviceController::onProcessRootSSHAccessExitCode(int vExitCode, QProcess::ExitStatus) +{ + if ( ! checkError(static_cast(vExitCode), _deviceRootSSHAccessResponse, _deviceRootSSHAccessResponse.toString()) ) { // has no error + if (_deviceRootSSHAccessRequest._data.mIsGet) { + bool ok = false; + bool rootSSHAccess = _processRootSSHAccess.readLine().toUInt(&ok); + if ( ok ) { + _deviceRootSSHAccessResponse._data.mMessage = _deviceRootSSHAccessResponse.toString(); + _deviceRootSSHAccessResponse._data.mRootSSHAccess = rootSSHAccess; + } + else { + checkError(DeviceError::eDevice_Scripts_Error_Incorrect_Rsp, _deviceRootSSHAccessResponse, _deviceRootSSHAccessResponse.toString()); + return; + } + } + else { + _deviceRootSSHAccessResponse._data.mMessage = _deviceRootSSHAccessResponse.toString(); + _deviceRootSSHAccessResponse._data.mRootSSHAccess = _deviceRootSSHAccessRequest._data.mRootSSHAccess; + } + LOG_APPED(_deviceRootSSHAccessResponse._data.mMessage); + emit didAttributeResponse(_deviceRootSSHAccessResponse._data); + } + else { + // the error in this case is handled in the checkError + } +} + +///////////////////////////////////////////// DeviceCryptSetup +/*! + * \brief DeviceController::onAttributeRequest + * \details Calls the CryptSetup script with the model data DeviceCryptSetupRequestData + * \param vData - the model data + */ +void DeviceController::onAttributeRequest(const DeviceCryptSetupRequestData &vData) +{ + //DEBUG qDebug() << " ---------- " << vData.mCommand << vData.mPassword; + + _deviceCryptSetupRequest._data = vData; + + // ----- check that script exists. + QString script; + if ( checkError( DeviceError::checkScript(script, Crypt_Setup), _deviceCryptSetupResponse, script) ) + return; + + // ----- check if the process is not running + if ( _processCryptSetup.state() != QProcess::NotRunning ) { + checkError(DeviceError::eDevice_Scripts_Error_IsRunning, _deviceCryptSetupResponse); + return; + } + + + // ----- run the process + int timeout = 10000; + TimedProcess *timedProcess = new TimedProcess(&_processCryptSetup, script, timeout, { _deviceCryptSetupRequest._data.mCommand }); + _processCryptSetup.setEnvironment(QProcess::systemEnvironment() << QString("PASSWORD=%1").arg(_deviceCryptSetupRequest._data.mPassword)); + timedProcess->start(); + + // Update UI with a response + MDeviceCryptSetupResponse model; + model._data.mAccepted = false; + model._data.mMessage = tr("Encrypted Partition %1 started.").arg(_deviceCryptSetupRequest._data.mCommand); + emit didAttributeResponse(model.data()); +} + +/*! + * \brief DeviceController::onProcessCryptSetupExitCode + * \param vExitCode + * \param vStatus + */ +void DeviceController::onProcessCryptSetupExitCode(int vExitCode, QProcess::ExitStatus vStatus) +{ + // The Exit code in this script is not used. + // any other checking is done by UI Software at the moment this script is called. + // The only thing matters is the pared device info in text and it will be empty string if error happens. + MDeviceCryptSetupResponse model; + QByteArray deviceInfo = _processCryptSetup.readAll(); + if ( vStatus ) vExitCode = Device::DeviceError::eDevice_Scripts_Error_Status; + else deviceInfo = _processCryptSetup.readAll(); + model.fromByteArray( deviceInfo, &vExitCode ); + // DEBUG: qDebug() << model._data.mEchoInfo; + emit didAttributeResponse(model.data()); + LOG_APPED_UI(model.data().mMessage); + + if ( _deviceCryptSetupRequest._data.mCommand == "mount" ) emit didCryptSetupMount(model._data.mAccepted); + + // move the configuration files if the encrypted partition creation was successful. + if ( _deviceCryptSetupRequest._data.mCommand != "setup" ) return; + if ( ! model._data.mAccepted ) return; + QString msg = ""; + int err = 0 ; + //TODO The Settings shall be the Singleton SettingsController and modify the MSettings like the others. + Storage::Settings settings; + err = settings.configurationsMove(&msg); + if ( err ) { + model._data.mAccepted = false ; + model._data.mReason = err ; + model._data.mMessage = msg ; + emit didAttributeResponse(model.data()); + LOG_APPED_UI(model.data().mMessage); + } +} + +///////////////////////////////////////////// DeviceBluetoothPaired void DeviceController::onAttributeRequest(const DeviceBluetoothPairedResetRequestData &) { // ----- check that script exists. @@ -575,9 +702,10 @@ else deviceInfo = _processBluetoothPairedReset.readAll(); model.fromByteArray( deviceInfo, &vExitCode ); LOG_APPED_UI(model.data().mMessage); - didAttributeResponse(model.data()); + emit didAttributeResponse(model.data()); } +///////////////////////////////////////////// DeviceBluetoothPairedQuery void DeviceController::onAttributeRequest(const DeviceBluetoothPairedQueryRequestData &) { // ----- check that script exists. @@ -598,15 +726,15 @@ void DeviceController::onProcessBluetoothPairedQueryExitCode(int vExitCode, QProcess::ExitStatus vStatus) { - // The Exit code in this script is not used and is not used. + // The Exit code in this script is not used. // any other checking is done by UI Software at the moment this script is called. // The only thing matters is the pared device info in text and it will be empty string if error happens. MDeviceBluetoothPairedQueryResponse model; QByteArray deviceInfo; if ( vStatus ) vExitCode = Device::DeviceError::eDevice_Scripts_Error_Status; else deviceInfo = _processBluetoothPairedQuery.readAll(); model.fromByteArray( deviceInfo, &vExitCode ); - didAttributeResponse(model.data()); + emit didAttributeResponse(model.data()); LOG_APPED_UI(model.data().mMessage); } @@ -657,3 +785,287 @@ { emit didWatchFileChange(vFile); } + +/*! + * \brief DeviceController::onEventThreadChange + * \details The signal handler for the DeviceController(this)::didEventThreadChange + * to start checking for the Encrypted partition readyness. + */ +void DeviceController::onEventThreadChange() +{ + //DEBUG qDebug() << " ---------- " << __FUNCTION__ << QThread::currentThread()->objectName() << QThread::currentThread() << qApp->thread(); + if ( QThread::currentThread() != &Threads::_DeviceController_Thread ) { + qCritical() << " ***** Device controller thread not initialized correctly ***** "; + return; + } + _hasThread = true; + checkConfugurationMountReady(); +} + +/*! + * \brief DeviceController::onPOSTEthernetData + * \details Collects the ethernet mac address + * when it is ready after the POST is done for the Ethernet + * \param vMacAddress - The Ethernet MAC address + */ +void DeviceController::onPOSTEthernetData(const QString &vMacAddress) { + _macEthernet = vMacAddress; + emit didPOSTEthernetData (vMacAddress); +} + +/*! + * \brief DeviceController::onPOSTWirelessData + * \details Collects the wireless mac address + * when it is ready after the POST is done for the Wireless connection + * \param vMacAddress - The Wireless MAC address + */ +void DeviceController::onPOSTWirelessData(const QString &vMacAddress) { + _macWireless = vMacAddress; + + encryption::varSalt(vMacAddress); + _hasSalt = ! vMacAddress.trimmed().isEmpty(); + checkConfugurationMountReady(); + + emit didPOSTWirelessData (vMacAddress); +} + +/*! + * \brief DeviceController::onPOSTBluetoothData + * \details Collects the bluetooth mac address + * when it is ready after the POST is done for the Bluetooth + * \param vMacAddress - The Bluetooth MAC address + */ +void DeviceController::onPOSTBluetoothData(const QString &vMacAddress) { + _macBluetooth = vMacAddress; + emit didPOSTBluetoothData (vMacAddress); +} + +/*! + * \brief DeviceController::onPOSTCloudSyncData + * \details Collects the CloudSync Network Address + * when it is ready after the POST is done for the CloudSync + * \param vNetAddress - *** Not defined yet and is a placeholder for later use *** + */ +void DeviceController::onPOSTCloudSyncData(const QString &vNetAddress) { + _netCloudSync = vNetAddress; + emit didPOSTCloudSyncData (vNetAddress); +} + +/*! + * \brief DeviceController::checkConfugurationMountReady + * \details Cheks if the system is ready to mount the encrypted partition. + * The object has to be on its own thread and the salt for the decryption has to be ready. + */ +void DeviceController::checkConfugurationMountReady() +{ + /// in manufacturing the system is logged with root and configurations are in /home/root + /// therefore no need to mount the cononfiguraiton partition. + /// also for in manufacturing the partition is being set up + /// and is less steps for setup if the partition is not mounted. + if ( gEnableManufacturing ) return; + + + if ( ! ( _hasThread && _hasSalt ) ) return; + + DeviceCryptSetupRequestData data; + data.mCommand = "mount"; + bool ok = false; + data.mPassword = encryption::configurationsPassword( ok ); + if ( ! ok ) { // not enough infromation to create a secure passowrd + // status(tr("Not enough secure information provided")); + } + else { + onAttributeRequest(data); + } + + // I_AM_HERE + // HERE move the settings read from ApplicationController to here + // here is when the DeviceController is moved to its thread + // and now can start mounting the encrypted partition + // and then read the settings. + // TODO don't forget to check for the required configurations files and parameters in the settings class. + // and take care of the security flag in the Storage class. +} + +///////////////////////////////////////////// DeviceFactoryReset +void DeviceController::onAttributeRequest(const DeviceFactoryResetRequestData &vData) +{ + _deviceFactoryResetRequest._data = vData; + + // ----- check that script exists. + QString script; + if ( checkError( DeviceError::checkScript(script, Factory_Reset), _deviceFactoryResetResponse, script) ) + return; + + // ----- check if the process is not running + if ( _processFactoryReset.state() != QProcess::NotRunning ) { + checkError(DeviceError::eDevice_Scripts_Error_IsRunning, _deviceFactoryResetResponse); + return; + } + + + // ----- run the process + int timeout_ms = 10000; + TimedProcess *timedProcess = new TimedProcess(&_processFactoryReset, script, timeout_ms); + timedProcess->start(); + + MDeviceFactoryResetResponse model; + model._data.mAccepted = false; // will indirectly set the property factoryResetEnabled + model._data.mMessage = tr("Factory Reset started."); + didAttributeResponse(model.data()); +} + +/*! + * \brief DeviceController::onProcessFactoryResetExitCode + * \param vExitCode - the script exit code. + * \param vStatus - the script echoed message. + */ +void DeviceController::onProcessFactoryResetExitCode(int vExitCode, QProcess::ExitStatus vStatus) +{ + // The Exit code in this script is not used. + // any other checking is done by UI Software at the moment this script is called. + // The only thing matters is the paired device info in text and it will be empty string if error happens. + MDeviceFactoryResetResponse model; + QByteArray deviceInfo = _processFactoryReset.readAll(); + if ( vStatus ) vExitCode = Device::DeviceError::eDevice_Scripts_Error_Status; + else deviceInfo = _processFactoryReset.readAll(); + model.fromByteArray( deviceInfo, &vExitCode ); + // DEBUG: qDebug() << model._data.mMessage << deviceInfo; + didAttributeResponse(model.data()); + LOG_APPED_UI(model.data().mMessage); +} + +///////////////////////////////////////////// DeviceDecommission +void DeviceController::onAttributeRequest(const DeviceDecommissionRequestData &vData) +{ + _deviceDecommissionRequest._data = vData; + + // ----- check that script exists. + QString script; + if ( checkError( DeviceError::checkScript(script, Device_Decommission), _deviceDecommissionResponse, script) ) + return; + + // ----- check if the process is not running + if ( _processDecommission.state() != QProcess::NotRunning ) { + checkError(DeviceError::eDevice_Scripts_Error_IsRunning, _deviceDecommissionResponse); + return; + } + + + // ----- run the process + int timeout_ms = 10000; + TimedProcess *timedProcess = new TimedProcess(&_processDecommission, script, timeout_ms, { CloudSyncPath }); + _processDecommission.setEnvironment(QProcess::systemEnvironment() << QString("PASSWORD=%1").arg(_deviceDecommissionRequest._data.mPassword)); + timedProcess->start(); + + MDeviceDecommissionResponse model; + model._data.mAccepted = false; // will indirectly set the property decommissionEnabled + model._data.mMessage = tr("Decommissioning started."); + didAttributeResponse(model.data()); +} + +/*! + * \brief DeviceController::onProcessDecommissionExitCode + * \param vExitCode + * \param vStatus + */ +void DeviceController::onProcessDecommissionExitCode(int vExitCode, QProcess::ExitStatus vStatus) +{ + // The Exit code in this script is not used. + // any other checking is done by UI Software at the moment this script is called. + // The only thing matters is the paired device info in text and it will be empty string if error happens. + MDeviceDecommissionResponse model; + QByteArray deviceInfo = _processDecommission.readAll(); + if ( vStatus ) vExitCode = Device::DeviceError::eDevice_Scripts_Error_Status; + else deviceInfo = _processDecommission.readAll(); + model.fromByteArray( deviceInfo, &vExitCode ); + // DEBUG: qDebug() << model._data.mMessage << deviceInfo; + didAttributeResponse(model.data()); + LOG_APPED_UI(model.data().mMessage); +} + +///////////////////////////////////////////// DeviceUSBMounting +void DeviceController::onAttributeRequest(const DeviceUSBMountRequestData &vData) +{ + Q_UNUSED(vData) + usbMountReq(vData.usbDevice, vData.isMountRequest); +} + +/*! + * \brief DeviceController::usbMountReq + * \details Calls the Usb unmount/mount script + * \param vIsMount - indicate if the request is for mounting or unmounting + * \param vDevice - the path to the USB device + */ +void DeviceController::usbMountReq(const QString &vDevice, bool vIsMount) +{ + qDebug() << __FUNCTION__ << vDevice << vIsMount; + _deviceUSBMountRequest._data.isMountRequest = vIsMount ; + _deviceUSBMountRequest._data.usbDevice = vDevice ; // not necessary, but to be consistent + + // ----- check that script exists. + QString script; + if ( checkError( DeviceError::checkScript(script, (vIsMount ? USB_Mount : USB_Unmount )), _deviceUSBMountResponse, script) ) + return; + + // ----- check if the process is not running + if ( _processUSBMount.state() != QProcess::NotRunning ) { + checkError(DeviceError::eDevice_Scripts_Error_IsRunning, _deviceUSBMountResponse); + return; + } + + // ----- run the process + int timeout_ms = 5000; + TimedProcess *timedProcess = new TimedProcess(&_processUSBMount, script, timeout_ms, {vDevice, USB_Mount_Point, USB_File_System}); + timedProcess->start(); + + MDeviceUSBMountResponse model; + model._data.mAccepted = false; + model._data.mMessage = vIsMount ? tr("USB unmount started.") : tr("USB mount started"); + didAttributeResponse(model.data()); +} + +/*! + * \brief DeviceController::onProcessUSBMountExitCode + * \param vExitCode + * \param vStatus + */ +void DeviceController::onProcessUSBMountExitCode(int vExitCode, QProcess::ExitStatus vStatus) +{ + MDeviceUSBMountResponse model; + QByteArray deviceInfo = _processUSBMount.readAll(); + if ( vStatus ) vExitCode = Device::DeviceError::eDevice_Scripts_Error_Status; + else deviceInfo = _processUSBMount.readAll(); + model.fromByteArray( deviceInfo, &vExitCode ); + didAttributeResponse(model.data()); + + // Re-evaluate the USB space available - need to call this here to avoid + // visual lag caused by waiting to call this function on the timer timeout + usbSpaceCheck(); + + bool ok = ! vStatus; + QString usbDevice = _deviceUSBMountRequest._data.usbDevice; + if(_deviceUSBMountRequest._data.isMountRequest) { // *** USB Mount + if ( ok ) { + _mounted = true; + _removed = false; + LOG_DEBUG(QString("USB flash drive %1 has been mounted on %2").arg(usbDevice).arg(USB_Mount_Point)); + emit didUSBDriveMount(); + } else { + usbError(usbDevice); + } + } else { // *** USB Unmount + if ( ok ) { + _mounted = false; + // _umounted = true; // I think it might be needed, but needs more testing. + LOG_DEBUG(QString("USB drive %2 unmounted").arg(usbDevice)); + emit didUSBDriveUmount(); + } else { + // the error is irrelevant, commented out for now + // usbError(usbDrive); + } + } + + // log error and exit + return; +} Index: sources/device/DeviceController.h =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/device/DeviceController.h (.../DeviceController.h) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/device/DeviceController.h (.../DeviceController.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -46,6 +46,7 @@ int _timeout = 0; QProcess *_process = nullptr; QString _command = ""; + QStringList _arguments = {}; private slots: void onFinish(int) { @@ -55,14 +56,14 @@ deleteLater(); } public: - TimedProcess(QProcess *vProcess, const QString &vCommand, int vTimeout) - : QObject(), _timeout(vTimeout), _process(vProcess), _command(vCommand) { + TimedProcess(QProcess *vProcess, const QString &vCommand, int vTimeout, QStringList vArguments = {}) + : QObject(), _timeout(vTimeout), _process(vProcess), _command(vCommand), _arguments(vArguments) { connect(_process, SIGNAL( finished(int)), this , SLOT(onFinish (int))); } void start() { _pid = startTimer(_timeout); - _process->start(_command, QStringList()); + _process->start(_command, _arguments); } protected: @@ -99,7 +100,6 @@ bool _mounted = false; bool _umounted = false; bool _removed = false; - const char *_usbDrive = ""; const int _interval = 1000; // in ms const qint8 _minRequiredAvailableSpacePercent = 10; @@ -109,6 +109,14 @@ QFileSystemWatcher _fileSystemWatcher; + QString _macEthernet = ""; + QString _macWireless = ""; + QString _macBluetooth = ""; + QString _netCloudSync = ""; + + bool _hasThread = false; + bool _hasSalt = false; + //TODO: all of these should use the TimesProcess (instead of QProcess) // to be able to kill the process automatically after the set time out. DEVICE_DEV_DEFINITION_LIST @@ -123,6 +131,25 @@ private slots: void onScreenshot(const QImage &vImage, const QString &vFileName); + void onUSBDriveUmount(); + void onWatchFileChanged(const QString &vFile); + + + void onEventThreadChange (); + + /*! + * \brief didPOSTData + * \details These signals will be emitted when UI is done with the POST and will let DeviceView update its property(ies). + * \param vMacEthernet - Ethernet Mac Adress + * \param vMacWireless - Wireless Mac Adress + * \param vMacBluetooth - Bluetooth Mac Adress + * \param vNetCloudSync - CloudSync IP Adress + */ + void onPOSTEthernetData (const QString &vMacAddress); + void onPOSTWirelessData (const QString &vMacAddress); + void onPOSTBluetoothData (const QString &vMacAddress); + void onPOSTCloudSyncData (const QString &vNetAddress); + protected: void timerEvent(QTimerEvent *) override; @@ -142,6 +169,8 @@ bool addWatch(const QString &vFilePath); + void checkConfugurationMountReady(); + signals: /*! * \brief didScreenshot @@ -201,29 +230,41 @@ */ void didSDCardSpaceTooLow(quint8 vAvailablePercent); - void didActionReceive( const DeviceBrightnessResponseData &vBrightness ); + void didActionReceive( const DeviceBrightnessResponseData &vBrightness ); + void didActionReceive( const DeviceRootSSHAccessResponseData &vRootSSHAccess); void didWatchFileChange(const QString &vFile); -private slots: - // ----- USB - void usbCheck(); + /*! + * \brief didEventThreadChange + * \details this signal will be emitted when the curr + */ + void didEventThreadChange (QPrivateSignal); - bool usbMount (const QString &vDevice); - bool usbUmount(const QString &vDevice); - void usbRemove(); - void usbError (const QString &vDevice); + void didPOSTEthernetData (const QString &vMacAddress); + void didPOSTWirelessData (const QString &vMacAddress); + void didPOSTBluetoothData (const QString &vMacAddress); + void didPOSTCloudSyncData (const QString &vNetAddress); - void onUSBDriveUmount(); + /*! + * \brief didCryptSetupMount + * \details will be emitted when decrypting the configuration partition is. + * to notify the ApplicationController to call initSettings + */ + void didCryptSetupMount ( bool vPass ); - void onWatchFileChanged(const QString &vFile); +private: + // ----- USB + void usbCheck (); + void usbError (const QString &vDevice ); + void usbMountReq(const QString &vDevice, bool vIsMount = true ); + void usbMount (const QString &vDevice ); + void usbUmount (const QString &vDevice ); + void usbRemove (); - // ----- SDCard void sdcardSpaceCheck(); + void usbSpaceCheck(); - // ----- USBDrive - void usbSpaceCheck(); - SAFE_CALL_EX(doAddWatch, const QString &) }; } Index: sources/device/DeviceError.cpp =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/device/DeviceError.cpp (.../DeviceError.cpp) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/device/DeviceError.cpp (.../DeviceError.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -43,6 +43,8 @@ QT_TR_NOOP("The Bluetooth cuff pair query error." ), // eDevice_BCuff_Error_Query QT_TR_NOOP("No paired Bluetooth cuff found." ), // eDevice_BCuff_Error_Query_Empty QT_TR_NOOP("The Bluetooth cuff pair invalid address." ), // eDevice_BCuff_Error_Query_Addr + + QT_TR_NOOP("The Encrypted Partition error." ), // eDevice_CryptSetup_Error }; /*! @@ -56,7 +58,7 @@ DeviceError::Scripts_Error_Enum DeviceError::checkScript(QString &vScript, const QString &vShellScript) { DeviceError::Scripts_Error_Enum err = DeviceError::eDevice_OK; - vScript = _scriptsFolder + vShellScript; + vScript = Storage::Scripts_Path_Name() + vShellScript; QFileInfo info(vScript); if ( ! info.exists () ) { err = DeviceError::eDevice_Scripts_Error_NotFound ; goto lOut; } if ( ! info.isExecutable() ) { err = DeviceError::eDevice_Scripts_Error_NotExecutable ; goto lOut; } Index: sources/device/DeviceError.h =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/device/DeviceError.h (.../DeviceError.h) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/device/DeviceError.h (.../DeviceError.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -38,7 +38,7 @@ public: enum Scripts_Error_Enum { - eDevice_OK = 0 , + eDevice_OK = 0 , // The scripts can use the exit code of each commands they execute and the assumption is most of Linux commands exit codes are less than 1000. // so any error less that 1000 will be identified as device error @@ -62,6 +62,11 @@ eDevice_BCuff_Error_Query_Empty , eDevice_BCuff_Error_Query_Addr , + eDevice_CryptSetup_Error , + eDevice_FactoryReset_Error , + eDevice_Decommission_Error , + eDevice_USBMount_Error , + eDevice_Error_End }; Index: sources/device/DeviceGlobals.h =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/device/DeviceGlobals.h (.../DeviceGlobals.h) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/device/DeviceGlobals.h (.../DeviceGlobals.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -19,12 +19,6 @@ // Project #include "StorageGlobals.h" -namespace Device { - -const QString _scriptsFolder = Storage::Scripts_Path_Name; - -} - /* DEVICE ATTRIBUTE PROPERTY DEFINITION */ // The FLC in vATTRIBUTEFLC means First Letter Capital #define ATTRIBUTE( vTYPE, vATTRIBUTE, vDEFAULT, vATTRIBUTEFLC) \ @@ -174,42 +168,79 @@ DEVICE_DEV_PARENT ( Brightness ) \ DEVICE_DEV_PARENT ( BluetoothPairedReset ) \ DEVICE_DEV_PARENT ( BluetoothPairedQuery ) \ + DEVICE_DEV_PARENT ( CryptSetup ) \ + DEVICE_DEV_PARENT ( RootSSHAccess ) \ + DEVICE_DEV_PARENT ( FactoryReset ) \ + DEVICE_DEV_PARENT ( Decommission ) \ + DEVICE_DEV_PARENT ( USBMount ) \ #define DEVICE_DEV_INIT_CONNECTIONS_LIST \ DEVICE_DEV_INIT_CONNECTIONS ( Brightness ) \ DEVICE_DEV_INIT_CONNECTIONS ( BluetoothPairedReset ) \ DEVICE_DEV_INIT_CONNECTIONS ( BluetoothPairedQuery ) \ + DEVICE_DEV_INIT_CONNECTIONS ( CryptSetup ) \ + DEVICE_DEV_INIT_CONNECTIONS ( RootSSHAccess ) \ + DEVICE_DEV_INIT_CONNECTIONS ( FactoryReset ) \ + DEVICE_DEV_INIT_CONNECTIONS ( Decommission ) \ + DEVICE_DEV_INIT_CONNECTIONS ( USBMount ) \ #define DEVICE_DEV_DEFINITION_LIST \ DEVICE_DEV_DEFINITION ( Brightness ) \ DEVICE_DEV_DEFINITION ( BluetoothPairedReset ) \ DEVICE_DEV_DEFINITION ( BluetoothPairedQuery ) \ + DEVICE_DEV_DEFINITION ( CryptSetup ) \ + DEVICE_DEV_DEFINITION ( RootSSHAccess ) \ + DEVICE_DEV_DEFINITION ( FactoryReset ) \ + DEVICE_DEV_DEFINITION ( Decommission ) \ + DEVICE_DEV_DEFINITION ( USBMount ) \ + /* ---------------------------- APP */ #define DEVICE_APP_INIT_CONNECTIONS_LIST \ DEVICE_APP_INIT_CONNECTIONS ( Brightness ) \ DEVICE_APP_INIT_CONNECTIONS ( BluetoothPairedReset ) \ DEVICE_APP_INIT_CONNECTIONS ( BluetoothPairedQuery ) \ + DEVICE_APP_INIT_CONNECTIONS ( CryptSetup ) \ + DEVICE_APP_INIT_CONNECTIONS ( RootSSHAccess ) \ + DEVICE_APP_INIT_CONNECTIONS ( FactoryReset ) \ + DEVICE_APP_INIT_CONNECTIONS ( Decommission ) \ #define DEVICE_APP_BRIDGE_DEFINITION_LIST \ DEVICE_APP_BRIDGE_DEFINITION( Brightness ) \ DEVICE_APP_BRIDGE_DEFINITION( BluetoothPairedReset ) \ DEVICE_APP_BRIDGE_DEFINITION( BluetoothPairedQuery ) \ + DEVICE_APP_BRIDGE_DEFINITION( CryptSetup ) \ + DEVICE_APP_BRIDGE_DEFINITION( RootSSHAccess ) \ + DEVICE_APP_BRIDGE_DEFINITION( FactoryReset ) \ + DEVICE_APP_BRIDGE_DEFINITION( Decommission ) \ + DEVICE_APP_BRIDGE_DEFINITION( USBMount ) \ /* ---------------------------- GUI */ #define DEVICE_GUI_BRIDGE_DEFINITION_LIST \ DEVICE_GUI_BRIDGE_DEFINITION( Brightness ) \ DEVICE_GUI_BRIDGE_DEFINITION( BluetoothPairedReset ) \ DEVICE_GUI_BRIDGE_DEFINITION( BluetoothPairedQuery ) \ + DEVICE_GUI_BRIDGE_DEFINITION( CryptSetup ) \ + DEVICE_GUI_BRIDGE_DEFINITION( RootSSHAccess ) \ + DEVICE_GUI_BRIDGE_DEFINITION( FactoryReset ) \ + DEVICE_GUI_BRIDGE_DEFINITION( Decommission ) \ #define DEVICE_GUI_INIT_CONNECTIONS_LIST \ DEVICE_GUI_INIT_CONNECTIONS ( Brightness ) \ DEVICE_GUI_INIT_CONNECTIONS ( BluetoothPairedReset ) \ DEVICE_GUI_INIT_CONNECTIONS ( BluetoothPairedQuery ) \ + DEVICE_GUI_INIT_CONNECTIONS ( CryptSetup ) \ + DEVICE_GUI_INIT_CONNECTIONS ( RootSSHAccess ) \ + DEVICE_GUI_INIT_CONNECTIONS ( FactoryReset ) \ + DEVICE_GUI_INIT_CONNECTIONS ( Decommission ) \ /* ---------------------------- VIEW */ #define DEVICE_VIEW_INIT_CONNECTIONS_LIST \ DEVICE_VIEW_INIT_CONNECTIONS( Brightness ) \ DEVICE_VIEW_INIT_CONNECTIONS( BluetoothPairedReset ) \ DEVICE_VIEW_INIT_CONNECTIONS( BluetoothPairedQuery ) \ + DEVICE_VIEW_INIT_CONNECTIONS( CryptSetup ) \ + DEVICE_VIEW_INIT_CONNECTIONS( RootSSHAccess ) \ + DEVICE_VIEW_INIT_CONNECTIONS( FactoryReset ) \ + DEVICE_VIEW_INIT_CONNECTIONS( Decommission ) \ Index: sources/device/DeviceModels.cpp =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/device/DeviceModels.cpp (.../DeviceModels.cpp) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/device/DeviceModels.cpp (.../DeviceModels.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -52,6 +52,36 @@ } /*! + * \brief MDeviceCryptSetupResponse::fromByteArray + * \details Checks the response and sets up the mode data. + * \param vExitCode - Passed script exit code + * \return true if passed. + */ +bool MDeviceCryptSetupResponse::fromByteArray(const QByteArray &vByteArray, int *vExitCode) +{ + // initialize data + int error = 0; + _data.mAccepted = false; + + // check if the vExitCode passed and it has a value other than zero + if ( vExitCode && *vExitCode ){ _data.mReason = Device::DeviceError::eDevice_CryptSetup_Error; error = *vExitCode; } + else _data.mReason = Device::DeviceError::eDevice_OK; + + // if vExitCode is not zero go to error since the data is no longer valid + if ( _data.mReason ) goto lError; // non-zero Exit code + + // Now everything is good to extract the data + _data.mAccepted = true; + _data.mMessage = QObject::tr("The Encrypt Partition Command Complete."); goto lOut ; // normal return + +lError: + _data.mMessage = Device::DeviceError::deviceErrorText(static_cast(_data.mReason), error) + "\n" + vByteArray; + +lOut: + return _data.mAccepted; +} + +/*! * \brief MDeviceBluetoothPairedQueryResponse::fromByteArray * \details Checks the script returned value and * converts the returning paired device information from the process into the response model. @@ -160,3 +190,95 @@ _data.mBrightnessPercent = HW2UI[ vSysVal ]; return Device::DeviceError::eDevice_OK; } + + +/*! + * \brief MDeviceFactoryResetResponse::fromByteArray + * \details Checks the response and sets up the mode data. + * \param vExitCode - Passed script exit code + * \return true if passed. + */ +bool MDeviceFactoryResetResponse::fromByteArray(const QByteArray &vByteArray, int *vExitCode) +{ + // initialize data + int error = 0; + _data.mAccepted = false; + + // check if the vExitCode passed and it has a value other than zero + if ( vExitCode && *vExitCode ){ _data.mReason = Device::DeviceError::eDevice_FactoryReset_Error; error = *vExitCode; } + else _data.mReason = Device::DeviceError::eDevice_OK; + + // if vExitCode is not zero go to error since the data is no longer valid + if ( _data.mReason ) goto lError; // non-zero Exit code + + // Now everything is good to extract the data + _data.mAccepted = true; + _data.mMessage = QObject::tr("The Factory Reset Command Complete."); goto lOut ; // normal return + +lError: + _data.mMessage = Device::DeviceError::deviceErrorText(static_cast(_data.mReason), error) + "\n" + vByteArray; + +lOut: + return _data.mAccepted; +} + + +/*! + * \brief MDeviceDecommissionResponse::fromByteArray + * \details Checks the response and sets up the mode data. + * \param vExitCode - Passed script exit code + * \return true if passed. + */ +bool MDeviceDecommissionResponse::fromByteArray(const QByteArray &vByteArray, int *vExitCode) +{ + // initialize data + int error = 0; + _data.mAccepted = false; + + // check if the vExitCode passed and it has a value other than zero + if ( vExitCode && *vExitCode ){ _data.mReason = Device::DeviceError::eDevice_FactoryReset_Error; error = *vExitCode; } + else _data.mReason = Device::DeviceError::eDevice_OK; + + // if vExitCode is not zero go to error since the data is no longer valid + if ( _data.mReason ) goto lError; // non-zero Exit code + + // Now everything is good to extract the data + _data.mAccepted = true; + _data.mMessage = QObject::tr("The Decommissioning Command Complete."); goto lOut ; // normal return + +lError: + _data.mMessage = Device::DeviceError::deviceErrorText(static_cast(_data.mReason), error) + "\n" + vByteArray; + +lOut: + return _data.mAccepted; +} + +/*! + * \brief MDeviceUSBMountResponse::fromByteArray + * \details Checks the response and sets up the mode data. + * \param vExitCode - Passed script exit code + * \return true if passed. + */ +bool MDeviceUSBMountResponse::fromByteArray(const QByteArray &vByteArray, int *vExitCode) +{ + // initialize data + int error = 0; + _data.mAccepted = false; + + // check if the vExitCode passed and it has a value other than zero + if ( vExitCode && *vExitCode ){ _data.mReason = Device::DeviceError::eDevice_USBMount_Error; error = *vExitCode; } + else _data.mReason = Device::DeviceError::eDevice_OK; + + // if vExitCode is not zero go to error since the data is no longer valid + if ( _data.mReason ) goto lError; // non-zero Exit code + + // Now everything is good to extract the data + _data.mAccepted = true; + _data.mMessage = QObject::tr("The USB (un)mount Command Complete."); goto lOut ; // normal return + +lError: + _data.mMessage = Device::DeviceError::deviceErrorText(static_cast(_data.mReason), error) + "\n" + vByteArray; + +lOut: + return _data.mAccepted; +} Index: sources/device/DeviceModels.h =================================================================== diff -u -r7c86f3854db9ad02d95681203198d75a0d65c9fa -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/device/DeviceModels.h (.../DeviceModels.h) (revision 7c86f3854db9ad02d95681203198d75a0d65c9fa) +++ sources/device/DeviceModels.h (.../DeviceModels.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -79,6 +79,7 @@ }; +// ---------- MDeviceBrightness ---------- // /*! * \brief The MDeviceBrightnessRequest class * \details The model for the device brightness value modification request. @@ -212,10 +213,165 @@ bool fromByteArray(const QByteArray &vByteArray, int *vExitCode = nullptr) override; }; -} +// ---------- MDeviceCryptSetup ---------- // +/*! + * \brief The MDeviceCryptSetupRequest class + * \details The model for the CryptSetup script call. + */ +class MDeviceCryptSetupRequest : public MDeviceRequestBase { +public: + struct Data { + QString mCommand = ""; + QString mPassword = ""; + } _data; + QString toString() { + return MDeviceRequestBase::toString("DeviceCryptSetup", { }); + } +}; +/*! + * \brief The MDeviceCryptSetupResponse class + * \details The model for the CryptSetup script call returned value / response. + */ +class MDeviceCryptSetupResponse : public MDeviceResponseBase { +public: + struct Data : MDeviceResponseBase::Data { + } _data; + QVariantList parameters ( ) const override { return { }; } + QString infoText ( ) const override { return QString("DeviceCryptSetup"); } + Data data ( ) const { return _data; } + bool fromByteArray(const QByteArray &vByteArray, int *vExitCode = nullptr) override; +}; + +// ---------- MDeviceRootSSHAccess ---------- // +/*! + * \brief The MDeviceRootSSHAccessRequest class + * \details The model for the device RootSSHAccess value modification request. + */ +class MDeviceRootSSHAccessRequest : public MDeviceRequestBase { +public: + struct Data { + bool mRootSSHAccess = false; + bool mIsGet = true ; + } _data; + + QString toString() { + return MDeviceRequestBase::toString("RootSSHAccess", { _data.mRootSSHAccess }); + } +}; + +/*! + * \brief The MDeviceRootSSHAccessResponse class + * \details The model for the device RootSSHAccess value request. + */ +class MDeviceRootSSHAccessResponse : public MDeviceResponseBase { +public: + struct Data : MDeviceResponseBase::Data { + bool mRootSSHAccess = false; + } _data; + + QVariantList parameters () const override { return { _data.mRootSSHAccess }; } + QString infoText () const override { return QString("RootSSHAccess"); } + Data data () const { return _data; } +}; + + + +// ---------- MDeviceFactoryReset ---------- // +/*! + * \brief The MDeviceFactoryResetRequest class + * \details The model for the factory reset script call. + */ +class MDeviceFactoryResetRequest : public MDeviceRequestBase { +public: + struct Data { + } _data; + + QString toString() { + return MDeviceRequestBase::toString("FactoryReset", { }); + } +}; + +/*! + * \brief The MDeviceFactoryResetResponse class + * \details The model for the factory reset script call returned value / response. + */ +class MDeviceFactoryResetResponse : public MDeviceResponseBase { +public: + struct Data : MDeviceResponseBase::Data { + } _data; + QVariantList parameters ( ) const override { return { }; } + QString infoText ( ) const override { return QString("DeviceFactoryReset"); } + Data data ( ) const { return _data; } + bool fromByteArray(const QByteArray &vByteArray, int *vExitCode = nullptr) override; +}; + + +// ---------- MDeviceDecommission ---------- // +/*! + * \brief The MDeviceDecommissionRequest class + * \details The model for the decommission script call. + */ +class MDeviceDecommissionRequest : public MDeviceRequestBase { +public: + struct Data { + QString mPassword = ""; + } _data; + + QString toString() { + return MDeviceRequestBase::toString("Decommission", { }); + } +}; + +/*! + * \brief The MDeviceDecommissionResponse class + * \details The model for the decommission script call returned value / response. + */ +class MDeviceDecommissionResponse : public MDeviceResponseBase { +public: + struct Data : MDeviceResponseBase::Data { + } _data; + QVariantList parameters ( ) const override { return { }; } + QString infoText ( ) const override { return QString("DeviceDecommission"); } + Data data ( ) const { return _data; } + bool fromByteArray(const QByteArray &vByteArray, int *vExitCode = nullptr) override; +}; + +// ---------- MDeviceUSBMount ---------- // +/*! + * \brief The MDeviceUSBMountRequest class + * \details The model for the usb unmount/mount script call. + */ +class MDeviceUSBMountRequest : public MDeviceRequestBase { +public: + struct Data { + bool isMountRequest = true; + QString usbDevice = "" ; + } _data; + + QString toString() { + return MDeviceRequestBase::toString("UsbMount", { _data.usbDevice, _data.isMountRequest }); + } +}; + +/*! + * \brief The MDeviceUSBMountResponse class + * \details The model for the usb mount/unmount script call returned value / response. + */ +class MDeviceUSBMountResponse : public MDeviceResponseBase { +public: + struct Data : MDeviceResponseBase::Data { + } _data; + QVariantList parameters ( ) const override { return { }; } + QString infoText ( ) const override { return QString("DeviceUsbMount"); } + Data data ( ) const { return _data; } + bool fromByteArray(const QByteArray &vByteArray, int *vExitCode = nullptr) override; +}; +} + typedef Model::MDeviceResponseBase ::Data DeviceResponseBaseData ; + typedef Model::MDeviceBrightnessRequest ::Data DeviceBrightnessRequestData ; typedef Model::MDeviceBrightnessResponse::Data DeviceBrightnessResponseData ; @@ -224,3 +380,18 @@ typedef Model::MDeviceBluetoothPairedQueryRequest ::Data DeviceBluetoothPairedQueryRequestData ; typedef Model::MDeviceBluetoothPairedQueryResponse::Data DeviceBluetoothPairedQueryResponseData; + +typedef Model::MDeviceCryptSetupRequest ::Data DeviceCryptSetupRequestData ; +typedef Model::MDeviceCryptSetupResponse::Data DeviceCryptSetupResponseData; + +typedef Model::MDeviceRootSSHAccessRequest ::Data DeviceRootSSHAccessRequestData ; +typedef Model::MDeviceRootSSHAccessResponse::Data DeviceRootSSHAccessResponseData ; + +typedef Model::MDeviceFactoryResetRequest ::Data DeviceFactoryResetRequestData ; +typedef Model::MDeviceFactoryResetResponse::Data DeviceFactoryResetResponseData; + +typedef Model::MDeviceDecommissionRequest ::Data DeviceDecommissionRequestData ; +typedef Model::MDeviceDecommissionResponse::Data DeviceDecommissionResponseData; + +typedef Model::MDeviceUSBMountRequest ::Data DeviceUSBMountRequestData ; +typedef Model::MDeviceUSBMountResponse::Data DeviceUSBMountResponseData; Index: sources/device/DeviceView.cpp =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/device/DeviceView.cpp (.../DeviceView.cpp) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/device/DeviceView.cpp (.../DeviceView.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -20,6 +20,7 @@ #include "ApplicationController.h" #include "GuiController.h" #include "GuiGlobals.h" +#include "encryption.h" VIEW_DEF_CLASS(VDevice) @@ -62,6 +63,45 @@ response(true); } +// ================================================= Crypt Setup +void VDevice::doInitCryptSetup() { + // Nothing for now. +} + +void VDevice::cryptSetupRequest(const QString &vCommand) { + // DEBUG : qDebug() << "HERE Request" << vValue; + cryptSetupEnabled(false); + + DeviceCryptSetupRequestData data; + data.mCommand = vCommand; + bool ok = false; + data.mPassword = encryption::configurationsPassword( ok ); + if ( ! ok ) { // not enough infromation to create a secure passowrd + status(tr("Not enough secure information provided")); + } + else { + emit didAttributeRequest(data); + } +} + +void VDevice::onAttributeResponse(const DeviceCryptSetupResponseData &vData) { + // DEBUG : qDebug() << "HERE Response" << vData.mBrightnessPercent; + // this has to be called to let Gui to set to old value that device controller provided. + // this response is not updating the cryptsetup attribute. + // cryptsetup attribute will containe the command to be sent to the cryptsetup script + // and the retrurned message can be the model message in vData.mMessage + status(vData.mMessage); + + accepted(vData.mAccepted); + reason (vData.mReason ); + + cryptSetupEnabled(isCompleteResponse(vData)); + + // has to be the last one + response(true); +} + +// ================================================= Bluetooth Paired Reset void VDevice::doInitBluetoothPairedReset() { // DEBUG : qDebug() << "HERE Init"; DeviceBluetoothPairedResetRequestData data; @@ -86,6 +126,7 @@ response(true); } +// ================================================= Bluetooth Paired Query void VDevice::doInitBluetoothPairedQuery() { // DEBUG : qDebug() << "HERE Init"; DeviceBluetoothPairedQueryRequestData data; @@ -109,3 +150,104 @@ emit bluetoothPairedQueryChanged(vData.mInfo); response(true); } + +// ================================================= RootSSHAccess +void VDevice::doInitRootSSHAccess() { + // DEBUG : qDebug() << "HERE Request" << vValue; + DeviceRootSSHAccessRequestData data; + data.mIsGet = true; + emit didAttributeRequest(data); +} + +void VDevice::rootSSHAccessRequest(const bool &vValue) { + // DEBUG : qDebug() << "HERE Request" << vValue; + DeviceRootSSHAccessRequestData data; + data.mIsGet = false; + data.mRootSSHAccess = vValue; + emit didAttributeRequest(data); +} + +void VDevice::onAttributeResponse(const DeviceRootSSHAccessResponseData &vData) { + // DEBUG : qDebug() << "HERE Response" << vData.mBrightnessPercent; + if ( vData.mAccepted ) { + rootSSHAccess(vData.mRootSSHAccess); + status(""); + } + else { + // this has to be called to let Gui to set to old value that device controller provided. + emit rootSSHAccessChanged(vData.mRootSSHAccess); + status(vData.mMessage); + } + + accepted(vData.mAccepted); + reason (vData.mReason ); + + // has to be the last one + response(true); +} + +// ================================================= Factory Reset +void VDevice::doInitFactoryReset() { + // Nothing for now. +} + +void VDevice::factoryResetRequest(const QString &vCommand) { + Q_UNUSED(vCommand) + // DEBUG : qDebug() << "HERE Request" << vCommand; + + factoryResetEnabled(false); + + DeviceFactoryResetRequestData data; + emit didAttributeRequest(data); +} + +void VDevice::onAttributeResponse(const DeviceFactoryResetResponseData &vData) { + // QDEBUG : qDebug() << "HERE Response " << Q_FUNC_INFO << " accepted: " << vData.mAccepted; + // this has to be called to let Gui to set to old value that device controller provided. + status(vData.mMessage); + + accepted(vData.mAccepted); + reason (vData.mReason ); + + factoryResetEnabled(isCompleteResponse(vData)); + + // has to be the last one + response(true); +} + +// ================================================= Decommission +void VDevice::doInitDecommission() { + // Nothing for now. +} + +void VDevice::decommissionRequest(const QString &vCommand) { + Q_UNUSED(vCommand) + // DEBUG : qDebug() << "HERE Request" << vCommand; + + decommissionEnabled(true); + + DeviceDecommissionRequestData data; + bool ok = false; + data.mPassword = encryption::configurationsPassword( ok ); + if ( ! ok ) { // not enough infromation to create a secure passowrd + status(tr("Not enough secure information provided")); + } + else { + emit didAttributeRequest(data); + } + emit didAttributeRequest(data); +} + +void VDevice::onAttributeResponse(const DeviceDecommissionResponseData &vData) { + //QDEBUG : qDebug() << "HERE Response " << Q_FUNC_INFO << " accepted: "<< vData.mAccepted << vData.mReason; + // this has to be called to let Gui to set to old value that device controller provided. + status(vData.mMessage); + + accepted(vData.mAccepted); + reason (vData.mReason ); + + decommissionEnabled(isCompleteResponse(vData)); + + // has to be the last one + response(true); +} Index: sources/device/DeviceView.h =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/device/DeviceView.h (.../DeviceView.h) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/device/DeviceView.h (.../DeviceView.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -47,6 +47,25 @@ ATTRIBUTE ( quint8 , bluetoothPairedReset, 0, BluetoothPairedReset ) ATTRIBUTE ( QStringList , bluetoothPairedQuery, {}, BluetoothPairedQuery ) + ATTRIBUTE ( QString , cryptSetup , "", CryptSetup ) + PROPERTY ( bool , cryptSetupEnabled , true ) + + ATTRIBUTE ( bool , rootSSHAccess , false, RootSSHAccess ) + + ATTRIBUTE ( QString , factoryReset , "", FactoryReset ) + PROPERTY ( bool , factoryResetEnabled , true ) + + ATTRIBUTE ( QString , decommission , "", Decommission ) + PROPERTY ( bool , decommissionEnabled , true ) + VIEW_DEC_CLASS(VDevice) + +private: + bool isCompleteResponse(Model::MDeviceResponseBase::Data vData) { + // Either the script exited successfully or the script failed and the reason is provided + // There are situations that the script is using the attribute response to update the UI + // but it is not the final/completed response + return vData.mAccepted || (!vData.mAccepted && vData.mReason != 0 ); + } }; } Index: sources/gui/GuiController.cpp =================================================================== diff -u -raf8d98b36b427e2b5f4d6659fcf3b58ee79eab6a -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/gui/GuiController.cpp (.../GuiController.cpp) (revision af8d98b36b427e2b5f4d6659fcf3b58ee79eab6a) +++ sources/gui/GuiController.cpp (.../GuiController.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -101,6 +101,10 @@ connect(&_ApplicationController, SIGNAL(didFailedTransmit(Sequence)), this , SLOT( onFailedTransmit(Sequence))); + // POST result + connect(&_ApplicationController, SIGNAL(didPOSTPass(bool)), + this , SLOT( onPOSTPass(bool))); + // Device Signal/Slots DEVICE_GUI_INIT_CONNECTIONS_LIST @@ -288,10 +292,6 @@ void GuiController::onSDCardStateChange(bool vIsReady, bool vIsReadOnly) { //DEBUG:0: qDebug() << " ***** GuiController " << Storage::SDCard_Base_Path_Name << vIsReady << vIsReadOnly << gDisableSDCFailLogStop; - - //TODO : May probably need to send the following alarm in case the SD-Card fails after successful post and stop logging as well. - // emit didActionTransmit(GuiActionType::ID_AlarmTriggered, {GuiAlarmID::ALARM_ID_UI_POST_FAILURE_SDCARD ,0,0,0,0,0,0,0}); - emit didSDCardStateChange(vIsReady, vIsReadOnly); } @@ -371,3 +371,22 @@ AlarmStatusData data = AlarmGenerator::ALARM_ID_HD_COMM_TIMEOUT(); emit didActionReceive(data); } + +/*! + * \brief GuiController::onPOSTPass + * \details Passes on the Post status + * \param vPass - True if passed + */ +void GuiController::onPOSTPass(bool vPass) +{ + emit didPOSTPass(vPass); +} + +/*! + * \brief GuiController::doQuitApplication + * \details emit the didQuitApplication signal to ask ApplicationController to Quit the application gracefully. + */ +void GuiController::doQuitApplication() +{ + emit didQuitApplication(); +} Index: sources/gui/GuiController.h =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/gui/GuiController.h (.../GuiController.h) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/gui/GuiController.h (.../GuiController.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -74,6 +74,7 @@ void doExportLog (const GuiStringIndexMap &vExportList); // UI => OS void doExportService (const GuiStringIndexMap &vExportList); // UI => OS void doExportTreatment (const GuiStringIndexMap &vExportList); // UI => OS + void doQuitApplication (); private slots: // Should be private for thread safety and is connected internally. void onActionReceive (GuiActionType vAction, const QVariantList &vData); // UI <= HD/DG @@ -90,6 +91,8 @@ void onExportStat (quint32 vIndex, const QString &vFileName, quint8 vPercent); void onFailedTransmit(Sequence seq); + void onPOSTPass (bool vPass); + signals: void didActionReceive (GuiActionType vAction, const QVariantList &vData); // UI <= HD/DG void didActionTransmit(GuiActionType vAction, const QVariantList &vData); // UI => HD/DG @@ -109,6 +112,10 @@ void didExport (); void didExportStat (quint32 vIndex, const QString &vFileName, quint8 vPercent); + void didPOSTPass (bool vPass); + + void didQuitApplication (); + // Device controller signal slots connection DEVICE_GUI_BRIDGE_DEFINITION_LIST Index: sources/gui/GuiView.cpp =================================================================== diff -u -r552f811f7ba3b62ecbaa6eab9343b90e3f790c12 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/gui/GuiView.cpp (.../GuiView.cpp) (revision 552f811f7ba3b62ecbaa6eab9343b90e3f790c12) +++ sources/gui/GuiView.cpp (.../GuiView.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -49,6 +49,8 @@ // It should be defined in the class which wants to connect to signal. connect(this , SIGNAL(didActionTransmit(GuiActionType,const QVariantList &)), &_GuiController, SLOT( doActionTransmit(GuiActionType,const QVariantList &))); + connect(this , SIGNAL(didQuitApplication()), + &_GuiController, SLOT( doQuitApplication())); // From UI : USB drive umount connect(this , SIGNAL(didUSBDriveUmount()), @@ -78,6 +80,9 @@ &_GuiController, SLOT( doExportService (const GuiStringIndexMap &))); connect(this , SIGNAL(didExportTreatment (const GuiStringIndexMap &)), &_GuiController, SLOT( doExportTreatment (const GuiStringIndexMap &))); + + connect(&_GuiController, SIGNAL(didPOSTPass (bool)), + this , SLOT( onPOSTPass (bool))); } /*! @@ -281,7 +286,7 @@ */ bool GuiView::doExportListSelect(quint32 vIndex) { - bool contains = _exportList.contains(vIndex);; + bool contains = _exportList.contains(vIndex); return contains; } @@ -387,3 +392,17 @@ // TODO to be removed when model added for export log return Storage::FileHandler::isPathSymLink(vFilePath); } + +void GuiView::onPOSTPass(bool vPass) +{ + manufactMode( gEnableManufacturing && vPass ); + postPass(vPass); +} + +/*! + * \brief GuiView::doQuitApplication + * \details emit the didQuitApplication signal to ask ApplicationController to Quit the application gracefully. + */ +void GuiView::doQuitApplication() { + emit didQuitApplication(); +} Index: sources/gui/GuiView.h =================================================================== diff -u -r552f811f7ba3b62ecbaa6eab9343b90e3f790c12 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/gui/GuiView.h (.../GuiView.h) (revision 552f811f7ba3b62ecbaa6eab9343b90e3f790c12) +++ sources/gui/GuiView.h (.../GuiView.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -78,8 +78,13 @@ PROPERTY(GuiStringIndexMap , exportList , {}) READONLY(GuiUint08IndexMap , exportListPercent , {}) - READONLY(bool , dryDemoMode , gEnableDryDemo ) + READONLY(bool , dryDemoMode , gEnableDryDemo ) + READONLY(bool , manufactSetup , gEnableManufacturing ) + READONLY(bool , manufactMode , false ) + TRIGGER (bool , postPass , false ) + + public: explicit GuiView(QObject *parent = nullptr); @@ -100,6 +105,7 @@ void onSDCardSpaceTooLow(quint8 vAvailablePercent); void onSDCardSpaceChange(bool vReady, qint64 vTotal, qint64 vAvailable, quint8 vPercent); + void onPOSTPass (bool vPass); public slots: // is public since will be used in the UI and is in the same thread. void doActionTransmit(GuiActionType vAction, const QVariantList &vData); // UI => HD/DG @@ -118,6 +124,7 @@ bool isPathSymLink (const QString vFilePath ); + void doQuitApplication(); signals: void didActionReceive (GuiActionType vAction, const QVariantList &vData); // UI <= HD/DG void didActionTransmit(GuiActionType vAction, const QVariantList &vData); // UI => HD/DG @@ -132,5 +139,7 @@ void didExportTreatment (const GuiStringIndexMap &vExportList); void didExport (); void didExportStat (quint32 vIndex, const QString &vFileName, quint8 vPercent); + + void didQuitApplication (); }; } Index: sources/gui/qml/components/MainMenu.qml =================================================================== diff -u -ra1386c22cd8c011a3fc1dc8dac2136cbee7890c2 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/gui/qml/components/MainMenu.qml (.../MainMenu.qml) (revision a1386c22cd8c011a3fc1dc8dac2136cbee7890c2) +++ sources/gui/qml/components/MainMenu.qml (.../MainMenu.qml) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -39,6 +39,7 @@ property bool hasLogo : false property int currentIndex : 0 property string currentTitle : titles[currentIndex] + property bool disable : false /*! * \brief Emits when a menu item pressed @@ -167,10 +168,11 @@ // hidden animation to hide the menu nicely. Behavior on y { PropertyAnimation { /*duration: 500; easing.type: Easing.OutBounce*/ } } onHiddenChanged: { + let isHidden = hidden || disable if ( position === MainMenu.Position.Top ) { - y = hidden ? - Variables.mainMenuHeight : 0 + y = isHidden ? - Variables.mainMenuHeight : 0 } else { - y = Variables.applicationHeight - (hidden ? 0 : Variables.mainMenuHeight) + y = Variables.applicationHeight - (isHidden ? 0 : Variables.mainMenuHeight) } } } Index: sources/gui/qml/components/TextEntry.qml =================================================================== diff -u -r6d76149dca70e879f33bf6ed44203d0d06bc523a -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/gui/qml/components/TextEntry.qml (.../TextEntry.qml) (revision 6d76149dca70e879f33bf6ed44203d0d06bc523a) +++ sources/gui/qml/components/TextEntry.qml (.../TextEntry.qml) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -54,12 +54,13 @@ function doFocus( vFocus ) { if ( vFocus ) { - //TODO: Not sure why if there is no cursor all should be selected, - // tested and couln't find anything, disabled for now. - // was causeing on disabling the WiFi Static IP entry. - // if ( ! _root.hasCursor ) { - // _input.selectAll() - // } + // if has cursor (is editable), by clicking on the entry the keyboard shall pop up + // since the MouseArea is covering the entry, user can't move the cursur to delete one specific character, + // all will be selected to overwrite the entire text for easy modification. + // it was better if the keyboard has the cursor arrows + if ( _root.hasCursor ) { + _input.selectAll() + } _keyboard.setVisible(true) } } @@ -112,7 +113,10 @@ } MouseArea { - visible : ! hasCursor + // if it has cursor since it is possible to have only one entry. + // then just click on the entry will not do anything and we need a mouse area to display the keyboard + // if in any case the keyboard becomes hidden to make the rest of the screen visible. + visible : hasCursor anchors.fill: parent propagateComposedEvents: true onClicked: { Index: sources/gui/qml/components/USBButton.qml =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/gui/qml/components/USBButton.qml (.../USBButton.qml) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/gui/qml/components/USBButton.qml (.../USBButton.qml) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -31,7 +31,8 @@ width : Variables.iconsDiameter height : Variables.iconsDiameter anchors.centerIn: parent - source : "qrc:/images/iEject" + source : disabled ? "qrc:/images/iEjectDisabled" + : "qrc:/images/iEjectEnabled" } text.font.pixelSize: Fonts.fontPixelButton * 0.75 onPressed : { Index: sources/gui/qml/compounds/TouchGrid.qml =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/gui/qml/compounds/TouchGrid.qml (.../TouchGrid.qml) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/gui/qml/compounds/TouchGrid.qml (.../TouchGrid.qml) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -53,10 +53,27 @@ property int colCount : itemsText.length > rowCount ? Math.ceil(itemsText.length / rowCount) : 1 readonly property int titleTopMargin: 110 + readonly property alias itemsVisibleCount : _private.itemsVisibleCount + signal itemClicked(int vIndex) + QtObject { id: _private + property int itemsVisibleCount : 0 + } + + height: parent.height + onItemsVisibleChanged: { + let count = 0 + for ( let itemVisible of itemsVisible ) { + if ( itemVisible ) { + count++ + } + } + _private.itemsVisibleCount = count + } + function undef(vValue, vOtherwise) { if ( vValue === undefined ) { return vOtherwise @@ -72,7 +89,7 @@ columns : _root.colCount rows : _root.rowCount rowSpacing : 25 - columnSpacing : 100 + columnSpacing : itemsVisibleCount > rowCount ? 100 : 0 Repeater { model : _root.itemsText TouchRect { id: _touchItem Index: sources/gui/qml/globals/Fonts.qml =================================================================== diff -u -r159f2bb0317c7c3c0336e4cb80c7fef3f87e329a -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/gui/qml/globals/Fonts.qml (.../Fonts.qml) (revision 159f2bb0317c7c3c0336e4cb80c7fef3f87e329a) +++ sources/gui/qml/globals/Fonts.qml (.../Fonts.qml) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -24,7 +24,7 @@ */ QtObject { readonly property int fontPixelButton : 24 - readonly property int fontPixelTitle : 42 + readonly property int fontPixelTitle : 40 // Changed to 40 to match with the Alarm messaging body font size readonly property int fontPixelSection : 36 readonly property int fontPixelDialogText : 22 Index: sources/gui/qml/main.qml =================================================================== diff -u -r159f2bb0317c7c3c0336e4cb80c7fef3f87e329a -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/gui/qml/main.qml (.../main.qml) (revision 159f2bb0317c7c3c0336e4cb80c7fef3f87e329a) +++ sources/gui/qml/main.qml (.../main.qml) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -259,16 +259,18 @@ function isManager () { _mainMenu.itemPressed(1) } function isSettings () { _mainMenu.itemPressed(2) } - hidden: true // it should be hidden by default since the landing screen changed to init and it does not have the main menu untill the POST passes. - titles : [ qsTr("Treatment") , qsTr("Manager") , qsTr("Settings") ] - visibleItems : [ true , false , true ] - Component.onCompleted: { + disable : _GuiView.manufactSetup + hidden : true // it should be hidden by default since the landing screen changed to init and it does not have the main menu until the POST passes. + titles : [ qsTr("Treatment") , qsTr("Manager") , qsTr("Settings") ] + visibleItems : [ true , false , true ] + Component.onCompleted : { _settingsStack.visible = false _managerStack .visible = false _mainStack .visible = true } onItemPressed: { + if ( disable ) return _mainStack .visible = vIndex == 0 _managerStack .visible = vIndex == 1 _settingsStack.visible = vIndex == 2 Index: sources/gui/qml/pages/MainStack.qml =================================================================== diff -u -r828e0b187e2fa3f75d769938bede41ef34683493 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/gui/qml/pages/MainStack.qml (.../MainStack.qml) (revision 828e0b187e2fa3f75d769938bede41ef34683493) +++ sources/gui/qml/pages/MainStack.qml (.../MainStack.qml) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -38,6 +38,8 @@ // DEBUG: this property can mostly be used for debugging to get pass the initial screen property var initialItem: _postModeScreen + property var _startupScreen: _GuiView.manufactSetup ? _settingsStack : _mainHome + stackView.initialItem : _root.initialItem // Standby / Disinfection @@ -56,12 +58,6 @@ // Post Treatment PostTreatmentStack { id: _postTreatmentStack } - ScreenItem { id: _faultModeScreen - // we recently decided to not change the screen on fault and stay on current(whatever are we on currently) screen. - PlaceHolderText { screenName: qsTr("FAULT MODE") } - onVisibleChanged: if (visible) _mainMenu.hidden = true - } - ScreenItem { id: _serviceModeScreen PlaceHolderText { screenName: qsTr("SERVICE MODE") } onVisibleChanged: if (visible) _mainMenu.hidden = true @@ -134,7 +130,7 @@ // "vHDOperationMode.fault" , vHDOperationMode .fault , // "vHDOperationMode.opMode" , vHDOperationMode .opMode ) if ( vSettings.noCANBus ) { - page( _mainHome , + page( _startupScreen , vHDOperationMode.fault || // in fault mode vHDOperationMode.init || // in initial post mode vHDOperationMode.opMode === 0 // has not even been initialized , which most probably is the case. @@ -148,13 +144,13 @@ function onIsManagerChanged ( vValue ) { if( vValue ) _mainMenu.isManager () } function onIsSettingsChanged ( vValue ) { if( vValue ) _mainMenu.isSettings () } - function onFaultChanged ( vValue ) { page( _mainHome , vValue )} - function onServiceChanged ( vValue ) { page( _serviceModeScreen , vValue )} + function onFaultChanged ( vValue ) { page( _startupScreen , vValue )} + function onServiceChanged ( vValue ) { } function onInitChanged ( vValue ) { page( _postModeScreen , vValue && ! vSettings.noCANBus ) if( vValue ) vHDPOSTData.reset() // better to reset on vinit = true because the rest makes the screen animation to run } - function onHomeChanged ( vValue ) { page( _mainHome , vValue )} + function onHomeChanged ( vValue ) { page( _startupScreen , vValue )} function onStandbyChanged ( vValue ) { /* It depends on the subModes of the standBy. Handled by onHome. */ } function onStandbyStartChanged ( vValue ) { /* It depends on the subModes of the standBy. Handled by onHome. */ } function onStandbyWaitTreatmentChanged ( vValue ) { /* It depends on the subModes of the standBy. Handled by onHome. */ } Index: sources/gui/qml/pages/UserConfirmation.qml =================================================================== diff -u -rd949be21f2a9badd0978dddaaf436f6805de28dc -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/gui/qml/pages/UserConfirmation.qml (.../UserConfirmation.qml) (revision d949be21f2a9badd0978dddaaf436f6805de28dc) +++ sources/gui/qml/pages/UserConfirmation.qml (.../UserConfirmation.qml) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -29,86 +29,96 @@ SettingsBase { id: _root objectName : "UserConfirmation" // SquishQt testability - property bool isPassword : false - property bool showPasswordReEntryField : false - readonly property string password : _password.textInput.text - readonly property string passwordReEntry : _passwordReEntry.textInput.text - property alias message : _message.text + property bool isPassword : false + property bool passwordChangeMode : false + readonly property string passwordCurrent : _passwordCurrent.textInput.text + readonly property string passwordUpdated : _passwordUpdated.textInput.text + readonly property string passwordConfirm : _passwordConfirm.textInput.text + property alias message : _message.text - function clearPasswordReEntry() { - _passwordReEntry.textInput.text = "" + function clearPasswordCurrnet() { _passwordCurrent.textInput.text = "" } + function clearPasswordUpdated() { _passwordUpdated.textInput.text = "" } + function clearPasswordReEntry() { _passwordConfirm.textInput.text = "" } + function clearPasswords () { + clearPasswordCurrnet() + clearPasswordUpdated() + clearPasswordReEntry() } - function clearPassword() { - _password.textInput.text = "" - } + firstFocusInput : isPassword ? _passwordCurrent : undefined - firstFocusInput : isPassword ? _password : undefined - TextEntry { id : _password - clip : true - visible : _root.isPassword - textInput .width : 450 - nextInput : _passwordReEntry + Column { + visible: isPassword + anchors { - top : parent.top - topMargin : { - if(_root.showPasswordReEntryField) { - return topMarginContent + 120 - _passwordReEntry.height - } else { - return topMarginContent + 120 // moved a little down to be more on center and close to keyboard top edge. - } + top : parent.top + horizontalCenter : parent.horizontalCenter + topMargin : passwordChangeMode ? 0 : 120 + } + + PasswordEntry { id: _passwordCurrent + label.text : ! passwordChangeMode ? "" : qsTr("Current") + label.width : ! passwordChangeMode ? 0 : labelWidth + nextInput : _passwordUpdated + anchors { + top : parent.top + topMargin : topMarginContent + horizontalCenter : parent.horizontalCenter } - horizontalCenter: parent.horizontalCenter } - textInput.inputMethodHints : Qt.ImhNone - textInput.echoMode : TextInput.Password - } - Image { id : _showPassword - visible : _password.visible - anchors.left : _password.right - anchors.leftMargin : Variables.minVGap - anchors.verticalCenter : _password.verticalCenter - width : Variables.iconsDiameter - height : Variables.iconsDiameter - source : "qrc:/images/iEye" - } + PasswordEntry { id: _passwordUpdated + visible : passwordChangeMode + label.text : qsTr("New") + nextInput : _passwordConfirm + anchors { + top : _passwordCurrent.bottom + horizontalCenter : parent.horizontalCenter + } + } - MouseArea { - anchors.fill: _showPassword - anchors.margins: -20 - onPressed : _password.textInput.echoMode = TextInput.Normal - onReleased : _password.textInput.echoMode = TextInput.Password + PasswordEntry { id: _passwordConfirm + visible : passwordChangeMode + label.text : qsTr("Confirm") + anchors { + top : _passwordUpdated.bottom + horizontalCenter : parent.horizontalCenter + } + } } + component PasswordEntry : Item { + property alias textInput : _passwordEntry.textInput + property alias nextInput : _passwordEntry.nextInput + property alias label : _passwordEntry.label + property int labelWidth : 150 - TextEntry { id : _passwordReEntry - clip : true - visible : _root.showPasswordReEntryField - textInput .width : 450 - anchors { - top : _password.bottom - topMargin : height/2 // moved a little down to be more on center and close to keyboard top edge. - horizontalCenter: _password.horizontalCenter + height : 70 + label.width : labelWidth + + TextEntry { id: _passwordEntry + clip : true + textInput .width : 450 + textInput.inputMethodHints : Qt.ImhNone + textInput.echoMode : TextInput.Password + anchors.horizontalCenter : parent.horizontalCenter } - textInput.inputMethodHints : Qt.ImhNone - textInput.echoMode : TextInput.Password - } - Image { id : _showPasswordReEntryImage - visible : _passwordReEntry.visible - anchors.left : _passwordReEntry.right - anchors.leftMargin : Variables.minVGap - anchors.verticalCenter : _passwordReEntry.verticalCenter - width : Variables.iconsDiameter - height : Variables.iconsDiameter - source : "qrc:/images/iEye" - } + Image { + visible : _passwordEntry.visible + anchors.left : _passwordEntry.right + anchors.leftMargin : Variables.minVGap + anchors.verticalCenter : _passwordEntry.verticalCenter + width : Variables.iconsDiameter + height : Variables.iconsDiameter + source : "qrc:/images/iEye" - MouseArea { - anchors.fill: _showPasswordReEntryImage - anchors.margins: -20 - onPressed : _passwordReEntry.textInput.echoMode = TextInput.Normal - onReleased : _passwordReEntry.textInput.echoMode = TextInput.Password + MouseArea { + anchors.fill: parent + anchors.margins: -20 + onPressed : _passwordEntry.textInput.echoMode = TextInput.Normal + onReleased : _passwordEntry.textInput.echoMode = TextInput.Password + } + } } Text { id : _message Index: sources/gui/qml/pages/settings/SettingsBluetoothCuff.qml =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/gui/qml/pages/settings/SettingsBluetoothCuff.qml (.../SettingsBluetoothCuff.qml) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/gui/qml/pages/settings/SettingsBluetoothCuff.qml (.../SettingsBluetoothCuff.qml) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -27,9 +27,10 @@ * \brief SettingsBluetoothCuff is used to scan for Omron Bluetooth Cuff * devices and to let user to connect to it to be able to read the Vital measurements. */ -SettingsBase { id: _root - itemIndex : SettingsStack.Bluetooth +SettingsBase { id: _root + itemIndex : SettingsStack.Bluetooth confirmVisible : false + Image { id: _image width : 640 height : 480 Index: sources/gui/qml/pages/settings/SettingsDateTime.qml =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/gui/qml/pages/settings/SettingsDateTime.qml (.../SettingsDateTime.qml) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/gui/qml/pages/settings/SettingsDateTime.qml (.../SettingsDateTime.qml) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -27,7 +27,8 @@ * \brief SettingsDateTimeSet is used to adjust the * date and time on the device */ -SettingsBase { id: _root +SettingsBase { id: _root + itemIndex : SettingsStack.SetDateTime labelWidth : 275 entryWidth : 100 Index: sources/gui/qml/pages/settings/SettingsDeviceRegistration.qml =================================================================== diff -u -r6d76149dca70e879f33bf6ed44203d0d06bc523a -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/gui/qml/pages/settings/SettingsDeviceRegistration.qml (.../SettingsDeviceRegistration.qml) (revision 6d76149dca70e879f33bf6ed44203d0d06bc523a) +++ sources/gui/qml/pages/settings/SettingsDeviceRegistration.qml (.../SettingsDeviceRegistration.qml) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -29,10 +29,10 @@ * \brief SettingsWiFi * The settings screen to setup the WiFi connection */ -SettingsBase { id: _root +SettingsBase { id: _root itemIndex : SettingsStack.DeviceRegistration - confirmVisible : false + confirmVisible : false labelWidth : 150 entryWidth : 350 Index: sources/gui/qml/pages/settings/SettingsExportLogs.qml =================================================================== diff -u -r552f811f7ba3b62ecbaa6eab9343b90e3f790c12 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/gui/qml/pages/settings/SettingsExportLogs.qml (.../SettingsExportLogs.qml) (revision 552f811f7ba3b62ecbaa6eab9343b90e3f790c12) +++ sources/gui/qml/pages/settings/SettingsExportLogs.qml (.../SettingsExportLogs.qml) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -37,7 +37,8 @@ /*! * \brief SettingsExportLogs is used to Export logs, and display the SD-Card and USB device informaiton and list of files. */ -SettingsBase { id: _root +SettingsBase { id: _root + itemIndex : SettingsStack.ExportLogs //////////////////////////////////////////////////////////////////////////////// // FIXME: The model being used here is the QML FileListModel. // @@ -80,7 +81,6 @@ readonly property var typeFilterClr : [] - itemIndex : SettingsStack.ExportLogs confirmVisible : false function refreshModels() { Index: sources/gui/qml/pages/settings/SettingsStack.qml =================================================================== diff -u -r159f2bb0317c7c3c0336e4cb80c7fef3f87e329a -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/gui/qml/pages/settings/SettingsStack.qml (.../SettingsStack.qml) (revision 159f2bb0317c7c3c0336e4cb80c7fef3f87e329a) +++ sources/gui/qml/pages/settings/SettingsStack.qml (.../SettingsStack.qml) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -15,7 +15,6 @@ // Qt import QtQuick 2.12 -import QtQuick.Controls 2.12 // Switch // Project import Gui.Actions 0.1 @@ -45,76 +44,95 @@ VolumeBrightness , WiFi , Bluetooth , - ExportLogs , - SetDateTime , - Language , - Services , DGCleaning , DGScheduling , + ServicePassword , + SetDateTime , + ExportLogs , + Language , RoInput , Calibration , + DeviceConfiguration , DeviceRegistration , SWUpdate , - FactoryReset + RootSSHAccess , + FactoryReset , + Decommission } property var itemsText : [ - qsTr("Information" ), // Information - qsTr("Volume And Brightness" ), // VolumeBrightness - qsTr("Wi-Fi" ), // WiFi - qsTr("Bluetooth Cuff" ), // Bluetooth - qsTr("Export Logs" ), // ExportLogs - qsTr("Set Date And Time" ), // SetDateTime - qsTr("Set Language" ), // Language - qsTr("Service" ), // Service - qsTr("DG Cleaning" ), // DGCleaning - qsTr("DG Scheduling" ), // DGScheduling - qsTr("Water Input Mode" ), // RoInput - qsTr("Calibration " ), // Calibration - qsTr("Device Registration" ), // DeviceRegistration - qsTr("Software Update" ), // SWUpdate - qsTr("Factory Reset" ), // FactoryReset + qsTr("Information" ), // Information + qsTr("Volume And Brightness" ), // VolumeBrightness + qsTr("Wi-Fi" ), // WiFi + qsTr("Bluetooth Cuff" ), // Bluetooth + qsTr("DG Cleaning" ), // DGCleaning + qsTr("DG Scheduling" ), // DGScheduling + qsTr("Service" ), // servicePassword + qsTr("Set Date And Time" ), // SetDateTime + qsTr("Export Logs" ), // ExportLogs + qsTr("Set Language" ), // Language + qsTr("Water Input Mode" ), // RoInput + qsTr("Calibration" ), // Calibration + qsTr("Device Configuration" ), // Device Configuration + qsTr("Device Registration" ), // DeviceRegistration + qsTr("Software Update" ), // SWUpdate + qsTr("Enable Root SSH" ), // RootSSHAccess + qsTr("Factory Reset" ), // FactoryReset + qsTr("Decommissioning" ), // Decommission ] property var itemsEnabled : [ - true , // Information - true , // VolumeBrightness - true , // WiFi - true , // Bluetooth - true , // ExportLogs - true , // SetDateTime - false , // Language - true , // Service - true , // DGCleaning - true , // DGScheduling - true , // RoInput - false , // Calibration - true , // DeviceRegistration - false , // SWUpdate - false , // FactoryReset + true , // Information + true , // VolumeBrightness + true , // WiFi + true , // Bluetooth + true , // DGCleaning + true , // DGScheduling + true , // ServicePassword + true , // SetDateTime + true , // ExportLogs + false , // Language + true , // RoInput + false , // Calibration + _GuiView.manufactMode , // Device Configuration + true , // DeviceRegistration + false , // SWUpdate + serviceMode , // RootSSHAccess + serviceMode , // FactoryReset + serviceMode , // Decommission ] property var itemsVisible : [ - true , // Information - true , // VolumeBrightness - true , // WiFi - true , // Bluetooth - true , // ExportLogs - serviceMode , // SetDateTime - false /* serviceMode phase 1B */ , // Language - ! serviceMode , // Service - true , // DGCleaning - false /* serviceMode phase 1B */ , // DGScheduling - true , // RoInput - false /* serviceMode phase 1B */ , // Calibration - true , // DeviceRegistration // FIXME: On the normal setting menu for now for development. - false /* serviceMode phase 1B */ , // SWUpdate - false /* serviceMode phase 1B */ , // FactoryReset + true , // Information + true , // VolumeBrightness + true , // WiFi + true , // Bluetooth + ! _GuiView.manufactSetup , // DGCleaning + false /* serviceMode phase 1B */ , // DGScheduling + ! serviceMode && ! _GuiView.manufactSetup , // ServicePassword + serviceMode , // SetDateTime + true , // ExportLogs + false /* serviceMode phase 1 */ , // Language + ! _GuiView.manufactSetup , // RoInput + false /* serviceMode phase 1 */ , // Calibration + _GuiView.manufactMode && serviceMode , // Device Configuration // && serviceMode added to make sure the service mode is confirmed by HD + _GuiView.manufactMode && serviceMode , // DeviceRegistration // && serviceMode added to make sure the service mode is confirmed by HD + false /* serviceMode phase 1 */ , // SWUpdate + serviceMode , // RootSSHAccess + serviceMode , // FactoryReset + serviceMode , // Decommission ] SettingsHome { id : _settingsHome - title : serviceMode ? qsTr("Service") : qsTr("Device Settings") + title : _GuiView.manufactSetup ? qsTr("Manufacturing Setup") : serviceMode ? qsTr("Service") : qsTr("Device Settings") backVisible : false confirmVisible : serviceMode - confirmText.text: qsTr("SHUTDOWN") - onConfirmClicked: _GuiView.doActionTransmit(GuiActions.ID_PowerOff, GuiActions.NoData) + confirmText.text: _GuiView.manufactSetup ? qsTr("QUIT") : qsTr("SHUTDOWN") + onConfirmClicked: { + if ( _GuiView.manufactSetup ) { + _GuiView.doQuitApplication() + } + else { + _GuiView.doActionTransmit(GuiActions.ID_PowerOff, GuiActions.NoData) + } + } itemsText : _root.itemsText itemsEnabled : _root.itemsEnabled itemsVisible : _root.itemsVisible @@ -147,7 +165,7 @@ push( _settingsDGScheduling ) break - case SettingsStack.Services: + case SettingsStack.ServicePassword: push(_servicePassword) _servicePassword.setFocus() break @@ -166,225 +184,59 @@ push( _settingsRoInput ) break + case SettingsStack.DeviceConfiguration: + push( _settingsDeviceConfiguration ) + break + case SettingsStack.DeviceRegistration: push( _settingsDeviceRegistration ) break - default: - console.debug("Unknown Index", vIndex) + case SettingsStack.RootSSHAccess: + vDevice.doInitRootSSHAccess() + push( _SettingsRootSSHAccess) break - } - } - } - SettingsBase { id: _settingsInformation - itemIndex : SettingsStack.Information - confirmVisible : false - onVisibleChanged: { - if ( visible ) { - vAdjustmentVersions .doAdjustment() - vAdjustmentServiceDates .doAdjustment() - } - } + case SettingsStack.FactoryReset: + push( _serviceFactoryReset ) + break - TouchGrid { - anchors.centerIn: parent - colCount : 2 - colSpacing : 50 - rowCount : 8 - rowSpacing : 0 - itemHeight : 50 - itemWidth : 550 - touchable : false - itemsHasLine: [ - 0, // title C1 - 1,1,1,1,1,1,1, - 0, // title C2 - 1,1,1,1, - ] - itemsValueLeftMargin: 300 - itemsValue : [ - "" , - Qt .application.version, - vAdjustmentVersions .hdVerDevice , - vAdjustmentVersions .hdVerFPGA , - vAdjustmentVersions .hdSerial , - vAdjustmentVersions .dgVerDevice , - vAdjustmentVersions .dgVerFPGA , - vAdjustmentVersions .dgSerial , - "", - vAdjustmentServiceDates .hdLastServiceDate , - vAdjustmentServiceDates .hdNextServiceDate , - vAdjustmentServiceDates .dgLastServiceDate , - vAdjustmentServiceDates .dgNextServiceDate , - ] - itemsText : [ - qsTr("Versions" ), // col1 title - qsTr("UI Version" ), - qsTr("HD Version" ), - qsTr("HD FPGA Version" ), - qsTr("HD Serial Number" ), - qsTr("DG Version" ), - qsTr("DG FPGA Version" ), - qsTr("DG Serial Number" ), + case SettingsStack.Decommission: + push( _serviceDecommission ) + break - qsTr("Service" ), // col2 title - qsTr("HD Last Service Date" ), - qsTr("HD Next Service Date" ), - qsTr("DG Last Service Date" ), - qsTr("DG Next Service Date" ), - - ] - } - } - - SettingsVolumeBrightness { id: _settingsVolumeBrightness - itemIndex : SettingsStack.VolumeBrightness - } - - SettingsDateTime { id: _settingsDateTime - itemIndex : SettingsStack.SetDateTime - } - - SettingsWiFi { id: _settingsWiFi - itemIndex : SettingsStack.WiFi - } - - SettingsBluetoothCuff { id: _settingsBluetooth - } - - SettingsDGCleaning { id: _settingsDGCleaning - itemIndex : SettingsStack.DGCleaning - } - - SettingsDGScheduling { id: _settingsDGScheduling - itemIndex : SettingsStack.DGScheduling - } - - SettingsExportLogs { id: _settingsExportLogs - itemIndex : SettingsStack.ExportLogs - } - - SettingsBase { id: _settingsRoInput - confirmVisible : false - itemIndex : SettingsStack.RoInput - - - Row { id: _settingsRoInputRow - anchors.centerIn: parent - - Text { id : _settingsRoInputLabel - text : qsTr("Pure Water Mode") - width : 300 - height : _settingsRoInputSwitch.height - color : Colors.white - font.pixelSize: Fonts.fontPixelButton - verticalAlignment : Text.AlignVCenter - horizontalAlignment : Text.AlignLeft + default: + console.debug("Unknown Index", vIndex) + break } - - Switch { id: _settingsRoInputSwitch - property bool active: true - - checked : vDuetRoWaterDG.status - - width : 85 - height : 85 - - indicator: Rectangle { - implicitWidth : Variables.sliderCircleDiameter * 1.7 - implicitHeight : Variables.sliderCircleDiameter - ( Variables.progressbarHandlerBorderWidth * 2 ) - radius : implicitHeight - anchors.centerIn: parent - color : _settingsRoInputSwitch.checked ? Colors.backgroundButtonSelect : Colors.createTreatmentInactive - border.color : _settingsRoInputSwitch.checked ? Colors.borderButton : Colors.createTreatmentInactive - Rectangle { - property real diameter : Variables.sliderCircleDiameter - x: _settingsRoInputSwitch.checked ? parent.width - width : 0 - anchors.verticalCenter: parent.verticalCenter - width : diameter - height : diameter - radius : diameter - color : _settingsRoInputSwitch.active ? Colors.highlightProgressBar : Colors.createTreatmentInactive - border { - width: Variables.progressbarHandlerBorderWidth - color: Colors.textMain - } - } - } - - contentItem: Text { - width : parent.width - height : parent.height - text : _settingsRoInputSwitch.checked ? qsTr("ON") : qsTr("OFF") - font.pixelSize: Fonts.fontPixelButton - color : _settingsRoInputSwitch.active ? Colors.textMain : Colors.textDisableButton - verticalAlignment : Text.AlignTop - horizontalAlignment : Text.AlignHCenter - } - } } - - Connections { target: _settingsRoInputSwitch - function onClicked() { - vDuetRoWaterDG.doAdjustment ( _settingsRoInputSwitch.checked ) - } - } - Connections { target: vDuetRoWaterDG - function onAdjustmentTriggered(vValue) { - if ( vDuetRoWaterDG.adjustment_Accepted ) { - _settingsRoInput.notificationText = "" - } - else { - _settingsRoInput.notificationText = vDuetRoWaterDG.notification // adjustment_ReasonText - } - vSettings.roWaterMode = vDuetRoWaterDG.status - } - } } - SettingsDeviceRegistration { id: _settingsDeviceRegistration } + SettingsInformation { id: _settingsInformation } + SettingsVolumeBrightness { id: _settingsVolumeBrightness } + SettingsWiFi { id: _settingsWiFi } + SettingsBluetoothCuff { id: _settingsBluetooth } + SettingsDGCleaning { id: _settingsDGCleaning } + SettingsDGScheduling { id: _settingsDGScheduling } + SettingsServicePassword { id: _servicePassword } + SettingsDateTime { id: _settingsDateTime } + SettingsExportLogs { id: _settingsExportLogs } + SettingsROInput { id: _settingsRoInput } + SettingsManufacturingSetup { id: _settingsDeviceConfiguration } + SettingsDeviceRegistration { id: _settingsDeviceRegistration } + SettingsRootSSHAccess { id: _SettingsRootSSHAccess } + SettingsFactoryReset { id: _serviceFactoryReset } + SettingsDecommission { id: _serviceDecommission } - UserConfirmation { id: _servicePassword - property bool isPassword_Accepted : false - property bool isDefaultPasswordSet : (vSettings.servicePass != "") - - itemIndex : SettingsStack.Services - title : isDefaultPasswordSet ? qsTr("Service Password") : qsTr("Set Service Password") - isPassword: true - showPasswordReEntryField: !isDefaultPasswordSet - onBackClicked : { - clearPassword() - if(!isDefaultPasswordSet){ - clearPasswordReEntry() - } - _settingsHome.notificationText = "" - } - onConfirmClicked: { - isPassword_Accepted = false - let password = _servicePassword.password - if ( !isDefaultPasswordSet ) { - let passwordReEntry = _servicePassword.passwordReEntry - if ( password != passwordReEntry ) { _servicePassword.notificationText = qsTr("Mismatched Password Entry"); return } - if (!vSettings.isPasswordValid(password)) { _servicePassword.notificationText = qsTr("Malformed Password Entry" ); return } - - vSettings.updatePassword(password) - _servicePassword.isPassword_Accepted = true - _servicePassword.notificationText = "" - clearPasswordReEntry() - } else { - if (!vSettings.isPasswordMatch(password)) { _servicePassword.notificationText = qsTr("Incorrect service password"); return } - - _servicePassword.isPassword_Accepted = true - _servicePassword.notificationText = "" - vAdjustmentServiceMode.doAdjustment() - if ( vSettings.noCANBus ) { // if NoCANBus is set don't wait for HD and go to service mode. - gotoServiceMode(true) - } - } - clearPassword() - pop() // pop back to settings screen and wait for the HD-OpMode change to Service_Mode to update the settings screen. - } + function gotoServiceMode( vservice ) { + //DEBUG console.log (" 0 ---------- ", _GuiView.manufactMode, _GuiView.manufactSetup, vservice, stackView.initialItem, stackView.currentItem, stackView.depth) + if ( ! _servicePassword.isPassword_Accepted ) return + serviceMode = vservice + if ( vservice ) + _mainMenu.hidden = true + else + if ( _settingsHome.visible ) + _mainMenu.hidden = false } Connections { target: vAdjustmentServiceMode @@ -398,25 +250,32 @@ } } - function gotoServiceMode( vservice ) { - if ( ! _servicePassword.isPassword_Accepted ) return - serviceMode = vservice - if ( vservice ) - _mainMenu.hidden = true - else - if ( _settingsHome.visible ) - _mainMenu.hidden = false - } - - Connections { target: vHDOperationMode function onServiceChanged ( vValue ) { gotoServiceMode( vValue )} function onStandbyWaitDisinfectChanged ( vValue ) { page( _settingsHome , vValue )} } + Connections { target: _GuiView + function onManufactModeChanged( vPass ) { + if ( _GuiView.manufactMode ) { + vSettings.checkServicePasswordSet() + stackView.initialItem = _servicePassword + } + else { + stackView.initialItem = _settingsHome + } + push(stackView.initialItem) + + //DEBUG console.log (" 1 ---------- ", _GuiView.manufactMode, _GuiView.manufactSetup, vPass, stackView.initialItem, stackView.currentItem, stackView.depth) + if ( _GuiView.manufactSetup ) { + _settingsHome.notificationText = vPass ? "" : qsTr("Application POST Failed") + } + } + } + onVisibleChanged: { if (visible) { - _mainMenu.hidden = serviceMode + _mainMenu.hidden = serviceMode || _GuiView.manufactSetup } else { stackView.initialItem = null Index: sources/gui/qml/pages/settings/SettingsVolumeBrightness.qml =================================================================== diff -u -r7c86f3854db9ad02d95681203198d75a0d65c9fa -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/gui/qml/pages/settings/SettingsVolumeBrightness.qml (.../SettingsVolumeBrightness.qml) (revision 7c86f3854db9ad02d95681203198d75a0d65c9fa) +++ sources/gui/qml/pages/settings/SettingsVolumeBrightness.qml (.../SettingsVolumeBrightness.qml) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -27,7 +27,9 @@ * \brief SettingsVolumeBrightness is used to adjust the * volume (alarm/system), brightness on the device */ -SettingsBase { id: _root +SettingsBase { id: _root + itemIndex : SettingsStack.VolumeBrightness + readonly property int spacing: 50 confirmVisible : false @@ -78,7 +80,6 @@ text: qsTr("Alarm Volume") } Slider { id : _alarmVolume - property bool postInit: true anchors.verticalCenter: parent.verticalCenter width : 500 step : 1 // no zero @@ -89,32 +90,18 @@ onReleased : { vAdjustmentAlarmVolume.doAdjustment( _alarmVolume.value ) } - Connections { target: vSettings - function onAlarmVolumeChanged ( vValue ) { - if ( _alarmVolume.postInit ) { - vAdjustmentAlarmVolume.doAdjustment( vSettings.alarmVolume ) - } - _alarmVolume.postInit = false - _alarmVolume.reset(vSettings.alarmVolume) - } - } Connections { target: vAdjustmentAlarmVolume - // in case the value is rejecte it will be set to the previous value - // also the init value shall be set when navigate to the screen function onAdjustmentTriggered ( vValue ) { - _alarmVolume.postInit = false if ( vAdjustmentAlarmVolume.adjustment_Accepted ) { - vSettings.alarmVolume = vAdjustmentAlarmVolume.hdAlarmVolume + vSettings .alarmVolume = vAdjustmentAlarmVolume.hdAlarmVolume _root.notificationText = "" } else { _root.notificationText = vAdjustmentAlarmVolume.adjustment_ReasonText } + // regardless of the rejection or acceptance the value will be sent from C++ to be adjusted. + _alarmVolume.reset ( vAdjustmentAlarmVolume.hdAlarmVolume ) } - function onHdAlarmVolumeChanged ( vValue ) { - _alarmVolume.postInit = false - _alarmVolume.reset(vAdjustmentAlarmVolume.hdAlarmVolume) - } } } Label { Index: sources/gui/qml/pages/settings/SettingsWiFi.qml =================================================================== diff -u -r28845c70151c3fb6f1a8e92c82da0232b6ca854a -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/gui/qml/pages/settings/SettingsWiFi.qml (.../SettingsWiFi.qml) (revision 28845c70151c3fb6f1a8e92c82da0232b6ca854a) +++ sources/gui/qml/pages/settings/SettingsWiFi.qml (.../SettingsWiFi.qml) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -28,7 +28,8 @@ * \brief SettingsWiFi * The settings screen to setup the WiFi connection */ -SettingsBase { id: _root +SettingsBase { id: _root + itemIndex : SettingsStack.WiFi property var ipValidator: RegExpValidator { regExp:/^(([01]?[0-9]?[0-9]|2([0-4][0-9]|5[0-5]))\.){3}([01]?[0-9]?[0-9]|2([0-4][0-9]|5[0-5]))$/ @@ -53,7 +54,7 @@ firstFocusInput : _ipAddress notificationText: vNetwork.status onConfirmClicked: { - vDateTime.doConfirm( + vNetwork.doConfirm( _ipAddress .textInput.text , _gateway .textInput.text , _subnetmask .textInput.text , @@ -229,8 +230,8 @@ title : isPassword ? qsTr("Join") + separator + ssid + spaceSeparator + qsTr("Password") : qsTr("Disconnect") + separator + ssid onConfirmClicked : { if ( isPassword ) { - if( password.length > 0 ) { - vNetwork.doJoinNetwork ( macAddress, password ) + if( passwordCurrent.length > 0 ) { + vNetwork.doJoinNetwork ( macAddress, passwordCurrent ) pop() } } else { Index: sources/main.h =================================================================== diff -u -r159f2bb0317c7c3c0336e4cb80c7fef3f87e329a -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/main.h (.../main.h) (revision 159f2bb0317c7c3c0336e4cb80c7fef3f87e329a) +++ sources/main.h (.../main.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -91,16 +91,19 @@ extern bool gDisableSDCFailLogStop ; extern bool gDisableCloudSyncFailStop ; -extern bool gEnableCheckInLog ; -extern bool gEnableAcknowLog ; +extern bool gDisableCheckInLog ; +extern bool gDisableAcknowLog ; extern bool gConsoleoutLogs ; extern bool gConsoleoutFrameInterface ; extern bool gConsoleoutCanInterface ; extern bool gEnableDryDemo ; extern QString gActiveCANBus ; +extern bool gEnableManufacturing ; +extern bool gUseRootHome ; + //--------------------------------------------------------------------------------// //--------------------------------------------------------------------------------// #define SKIPPER_DEF(X) \ Index: sources/model/MModel.h =================================================================== diff -u -r159f2bb0317c7c3c0336e4cb80c7fef3f87e329a -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/model/MModel.h (.../MModel.h) (revision 159f2bb0317c7c3c0336e4cb80c7fef3f87e329a) +++ sources/model/MModel.h (.../MModel.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -285,6 +285,16 @@ REGISTER_METATYPE( DeviceBluetoothPairedResetResponseData ) \ REGISTER_METATYPE( DeviceBluetoothPairedQueryRequestData ) \ REGISTER_METATYPE( DeviceBluetoothPairedQueryResponseData ) \ + REGISTER_METATYPE( DeviceCryptSetupRequestData ) \ + REGISTER_METATYPE( DeviceCryptSetupResponseData ) \ + REGISTER_METATYPE( DeviceRootSSHAccessRequestData ) \ + REGISTER_METATYPE( DeviceRootSSHAccessResponseData ) \ + REGISTER_METATYPE( DeviceFactoryResetRequestData ) \ + REGISTER_METATYPE( DeviceFactoryResetResponseData ) \ + REGISTER_METATYPE( DeviceDecommissionRequestData ) \ + REGISTER_METATYPE( DeviceDecommissionResponseData ) \ + REGISTER_METATYPE( DeviceUSBMountRequestData ) \ + REGISTER_METATYPE( DeviceUSBMountResponseData ) \ /* Settings */ \ REGISTER_METATYPE( SettingsData ) \ REGISTER_METATYPE( WifiNetworkData ) \ Index: sources/model/hd/alarm/MAlarmMapping.cpp =================================================================== diff -u -r4e39a33a3cb77b2fc5c81eda6f5ffcf995ba82b1 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/model/hd/alarm/MAlarmMapping.cpp (.../MAlarmMapping.cpp) (revision 4e39a33a3cb77b2fc5c81eda6f5ffcf995ba82b1) +++ sources/model/hd/alarm/MAlarmMapping.cpp (.../MAlarmMapping.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -7,7 +7,7 @@ * * \file MAlarmMapping.cpp * \author (last) Behrouz NematiPour - * \date (last) 17-Jul-2023 + * \date (last) 18-Jul-2023 * \author (original) Behrouz NematiPour * \date (original) 03-May-2021 * Index: sources/storage/FileHandler.cpp =================================================================== diff -u -r552f811f7ba3b62ecbaa6eab9343b90e3f790c12 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/storage/FileHandler.cpp (.../FileHandler.cpp) (revision 552f811f7ba3b62ecbaa6eab9343b90e3f790c12) +++ sources/storage/FileHandler.cpp (.../FileHandler.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -23,6 +23,7 @@ // Project // #include "Logger.h" // logger should not be used in this class. +#include "StorageGlobals.h" // namespace using namespace Storage; @@ -265,7 +266,6 @@ */ bool FileHandler::isMounted(const QString &vPath, bool *vIsReadOnly) { - // disabled coco begin validated: Needed User Interaction to make the device not ready so tested manually bool mounted = false; // removing the extra '/' from the vPath if there is to be able to compare to the root path of the storage QString path = vPath.trimmed(); @@ -289,9 +289,36 @@ } return mounted; } -// disabled coco end /*! + * \brief FileHandler::tmpUsable + * \details Checks if the temp folder is available for read and write to file and directory + * \note This function will only chek the temp folder usability once + * and next call will just return the first result, + * assuming that the temp file situation is not going to change and is stable. + * \return true on success + */ +bool FileHandler::tmpUsable() +{ + static bool ok = false; + static bool tested = false; + if ( tested ) return ok; + + QString tmp = Storage::Standard_tmp; + QString tmpTestFolder = tmp + "tmp_test_folder" ; + QString tmpTestFile = tmp + "tmp_test_file" ; + QString tmpTestContent = "tmp_test_content"; + QDir dir(tmp); + if ( ! dir.exists() ) { ok = false; goto lOut; } + if ( ! FileHandler::makeFolder (tmpTestFolder )) { ok = false; goto lOut; } + if ( ! FileHandler::write (tmpTestFile , tmpTestContent )) { ok = false; goto lOut; } + if ( ! FileHandler::read (tmpTestFolder, tmpTestContent )) { ok = false; goto lOut; } +lOut: + tested = true; + return ok; +} + +/*! * \brief FileHandler::find * \details The function to find files. * It mainly been implemented to find the files are using some amount of total storage in the vPath by percentage, Index: sources/storage/FileHandler.h =================================================================== diff -u -r552f811f7ba3b62ecbaa6eab9343b90e3f790c12 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/storage/FileHandler.h (.../FileHandler.h) (revision 552f811f7ba3b62ecbaa6eab9343b90e3f790c12) +++ sources/storage/FileHandler.h (.../FileHandler.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -38,7 +38,6 @@ */ class FileHandler { - static void errOut(const QString &vMessage); public: enum FileCopyError_Enums { @@ -58,6 +57,8 @@ }; public: + static void errOut (const QString &vMessage); + static bool write (const QString &vFileName, const QString &vContent, bool vAppend = true ); static bool read (const QString &vFileName, QString &vContent, bool vAppend = false); static bool read (const QString &vFileName, QJsonObject &vContent, QJsonParseError *error = nullptr); @@ -69,6 +70,7 @@ static bool makeFolder (const QString &vFolder); static bool isMounted (const QString &vPath, bool *vIsReadOnly = nullptr); + static bool tmpUsable (); static QFileInfoList find(const QString &vPath, QStringList vNameFilters, quint8 vRetainPercent); static QFileInfoList find(const QString &vPath, QStringList vNameFilters); Index: sources/storage/Logger.cpp =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/storage/Logger.cpp (.../Logger.cpp) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/storage/Logger.cpp (.../Logger.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -146,6 +146,9 @@ this , SLOT( onSDCardStateChange(bool, bool))); connect(&_DeviceController, SIGNAL( didSDCardSpaceChange(bool, qint64, qint64, quint8)), this , SLOT( onSDCardSpaceChange(bool, qint64, qint64, quint8))); + + connect(&_DeviceController, SIGNAL(didCryptSetupMount(bool)), + this , SLOT( onCryptSetupMount(bool))); } /*! @@ -175,14 +178,11 @@ */ void Logger::quitThread() { - // disabled coco begin validated: Application termination is not correctly done in coco!!! - // it has been tested and works perfectly fine in normal run. if (! _thread) return; // runs in thread moveToThread(qApp->thread()); // validated } -// disabled coco end void Logger::onLog(const QString &vContent, LogType vLogType, bool vTimestamp) { @@ -205,11 +205,8 @@ void Logger::checkLogPath() { setLogBasePath(); // try to use /media/sd_card on device - // disabled coco begin validated: It can only happen if the file system is read-only for any reason. - // it has been tested and works perfectly fine in normal run. if (! setLogPath()) { // check and create log folders & if unsuccessful then - // disabled coco end - setLogBasePath(true); // try to use application folder + setLogBasePath(true); // try to use temp folder setLogPath ( ); // check and create log folders // Note: it may require to check for write access regarding device setup } } @@ -219,14 +216,16 @@ * \details Tries to the set the log path to the default log path (Log_Base_Path_Name) * Will set the application folder as the base log path if cannot set the log path to the default. * Will log the event in that case. - * \param vUseApplicationDirPath + * \param vUseTempPath */ -void Logger::setLogBasePath(bool vUseApplicationDirPath) +void Logger::setLogBasePath(bool vUseTempPath) { - if (vUseApplicationDirPath) { - _dir.setPath(qApp->applicationDirPath()); + if (vUseTempPath) { + _dir.setPath(Storage::Standard_tmp); // NOTE: Do not use LOG_XXXXX, At this moment Logger has not been initialized yet - qDebug() << QString("Application path used for events logging (%1)").arg(_dir.path()); + QString msg = QString("temp location used for events logging (%1)").arg(_dir.path()); + //DEBUG qDebug() << msg; + FileHandler::errOut(msg); } else { _dir.setPath(SDCard_Base_Path_Name); @@ -243,11 +242,34 @@ bool ok = true; if ( ok && ! setLogPath(LogType::eLogAppED) ) ok = false; if ( ok && ! setLogPath(LogType::eLogDebug) ) ok = false; - if ( ok && ! setLogPath(LogType::eLogTrtmt) ) ok = false; return ok; } /*! + * \brief Logger::onCryptSetupMount + * \details the handlet for the _DeviceController::didCryptSetupMount + * to set the treatment fodler when the encrypted parttion is ready + * and successfully decrypted and mounted. + * It checks to make sure the folder exist and is able to be written and read. + */ +void Logger::onCryptSetupMount(bool /*vPass*/) +{ + LogType vLogType = LogType::eLogTrtmt; + QString basePath = Storage::Settings_Path(); + + // use the Settings path first (/var/configurations (Encrypted Partition)) + if ( ! QDir (basePath ).exists( )) { basePath = Storage::Standard_tmp; goto lOut; } + if ( ! FileHandler::makeFolder (basePath + Storage::Log_Folder_Treatment )) { basePath = Storage::Standard_tmp; goto lOut; } + if ( ! FileHandler::makeFolder (basePath + Storage::Log_Folder_Pending )) { basePath = Storage::Standard_tmp; goto lOut; } + +lOut: + _logPathNames[vLogType] = basePath + Storage::Log_Folder_Treatment; + emit didLogPathSet(vLogType, _logPathNames[vLogType]); + + FileHandler::errOut(tr("The '%1' folder selected for the treatment reports").arg(_logPathNames[vLogType])); +} + +/*! * \brief Logger::setLogPath * \details Sets the log path for the log type vLogType * Creates the folder if not exists. @@ -257,6 +279,10 @@ bool Logger::setLogPath(LogType vLogType) { bool ok = false; + // treatment logs moved to the encrypted partition/configurations. + // it handled in onCryptSetupMount + if (vLogType == LogType::eLogTrtmt ) return true; + _logPathNames[vLogType] = _dir.path() + "/" + _logBasePathNames[vLogType]; ok = FileHandler::makeFolder(_logPathNames[vLogType]); if ( ok ) emit didLogPathSet(vLogType, _logPathNames[vLogType]); @@ -511,12 +537,9 @@ */ void Logger::onRemoveLogs() { - // disabled coco begin validated: This needs user interaction to export to USB device - // has been tested manually LOG_DEBUG(tr("Remove Logs Ended: %1").arg(_removeLogsWatcher.result())); emit didRemoveLogs(false); } -// disabled coco end void Logger::onSDCardStateChange(bool vReady, bool vReadonly) { Index: sources/storage/Logger.h =================================================================== diff -u -raf8d98b36b427e2b5f4d6659fcf3b58ee79eab6a -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/storage/Logger.h (.../Logger.h) (revision af8d98b36b427e2b5f4d6659fcf3b58ee79eab6a) +++ sources/storage/Logger.h (.../Logger.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -167,7 +167,7 @@ private: // ----- setting up void checkLogPath (); - void setLogBasePath (bool vUseApplicationDirPath = false); + void setLogBasePath (bool vUseTempPath = false); bool setLogPath (); bool setLogPath (LogType vLogType); public: @@ -195,6 +195,8 @@ private slots: // this slot is thread safe and can be called from outside but preferred not to. bool concurrentRemoveLogs(); void onRemoveLogs(); + void onCryptSetupMount (bool vPass); + signals: /*! * \brief didRemoveLogs Index: sources/storage/Settings.cpp =================================================================== diff -u -ra6586ea871f21a08e7d50552983360fb5e344b3a -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/storage/Settings.cpp (.../Settings.cpp) (revision a6586ea871f21a08e7d50552983360fb5e344b3a) +++ sources/storage/Settings.cpp (.../Settings.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -31,8 +31,10 @@ bool Settings::isValid(const QString &vSettingFile) { + int err = Settings::Settings_Error::eError_None; if (! QFileInfo::exists(vSettingFile)) { - LOG_DEBUG("Setting file " + vSettingFile + " does not exist."); + err = Settings::Settings_Error::eError_SettingNotExists; + LOG_DEBUG(errorMessage(err).arg(vSettingFile)); return false; } return true; @@ -44,7 +46,7 @@ * \return QString configuration/settings file name */ QString Settings::fileName(const QString &vCategory) { - return QString("%1%2.%3").arg(Storage::Settings_Path_Name).arg(vCategory).arg(_settingsExt); + return QString("%1%2.%3").arg(Storage::Settings_Path()).arg(vCategory).arg(_settingsExt); } /*! @@ -53,17 +55,19 @@ */ int Settings::read() { + int err = Settings::Settings_Error::eError_None; QStringList fileFilter = QStringList() << QString("*.%1").arg(_settingsExt); - QFileInfoList settingFiles = FileHandler::find (Storage::Settings_Path_Name, fileFilter); - QStringList settingFolders = FileHandler::subFolders(Storage::Settings_Path_Name); + QFileInfoList settingFiles = FileHandler::find (Storage::Settings_Path(), fileFilter); + QStringList settingFolders = FileHandler::subFolders(Storage::Settings_Path()); if ( ! settingFolders.count() ) { - LOG_DEBUG(QObject::tr("No setting folder in the %1").arg(Storage::Settings_Path_Name)); - return 1; // TODO : Define an error enum when completed + err = Settings::Settings_Error::eError_No_SettingsFolder; + LOG_DEBUG(errorMessage(err).arg(Storage::Settings_Path())); + return err; } for ( QString &settingFolder : settingFolders ) { - QString folder = settingFolder.prepend(Storage::Settings_Path_Name); + QString folder = settingFolder.prepend(Storage::Settings_Path()); settingFiles += FileHandler::find(folder, fileFilter); } // DEBUG: @@ -73,8 +77,9 @@ // QFileInfo("/home/denali/Projects/application/resources/settings/Alarms/Alarms.conf") // }; if ( ! settingFiles.count() ) { - LOG_DEBUG(QObject::tr("No setting files in the %1").arg(Storage::Settings_Path_Name)); - return 2; // TODO : Define an error enum when completed + err = Settings::Settings_Error::eError_No_SettingsFile; + LOG_DEBUG(errorMessage(err).arg(Storage::Settings_Path())); + return err; } QList details; @@ -87,7 +92,7 @@ detail.content = file.readAll().trimmed(); if (detail.content.isEmpty()) continue; detail.location = settingFile.absolutePath() + "/"; - detail.category = QString(detail.location + settingFile.baseName()).remove(Storage::Settings_Path_Name); + detail.category = QString(detail.location + settingFile.baseName()).remove(Storage::Settings_Path()); details += detail; } } @@ -161,7 +166,7 @@ // DEBUG: qDebug() << group << line; } } - return 0; + return err; } /*! @@ -177,20 +182,23 @@ // << vValue; QString mFileName = fileName(vCategory); QString mContent; + int err = Settings_Error::eError_None; // -------------------------------------------------------------------------------------------------------------- //Note: the configuration files which can be saved, are like settings and should not have duplicate values. // as an example the Alarm volume can't have two separate duplicate entry in the settings. // -------------------------------------------------------------------------------------------------------------- _Settings.add(vCategory, vGroup, vKey, vValue, false); QString mPath = QFileInfo(mFileName).absolutePath(); if ( mPath.trimmed().isEmpty() ) { - LOG_DEBUG("The settings path is empty."); - return 1; // TODO: define enum + err = Settings_Error::eError_PathEmpty; + LOG_DEBUG(errorMessage(err)); + return err; } if ( ! FileHandler::makeFolder(mPath) ) { - LOG_DEBUG(QString("The settings path %1 can't be created.").arg(mPath)); - return 2; // TODO: define enum + err = Settings_Error::eError_MkDir; + LOG_DEBUG(errorMessage(err).arg(mPath)); + return err; } for ( const auto &group : _Settings.groups(vCategory) ) { @@ -201,9 +209,38 @@ } if ( ! FileHandler::write(mFileName,mContent, false) ) { - LOG_DEBUG(QString("The settings file %1 can't be written.").arg(mFileName)); - return 3; // TODO: define enum + err = Settings_Error::eError_Write; + LOG_DEBUG(errorMessage(err).arg(mFileName)); + return err; } - return 0; + return err; } + +/*! + * \brief Settings::configurationsMove + * \details After the encrypted partition is ready the configuration files are moved from the root home to denali home. + * \param vMessage + * \return + */ +int Settings::configurationsMove(QString *vMessage) +{ + int err = Settings_Error::eError_None ; + Location_Enum loc = Location_Enum ::eInit; + QString src = Settings::location(Location_Enum ::eInit ) ; + QString dst = Settings::location(Location_Enum ::eSecured ) ; + QString msg = ""; + if ( ! Settings ::configurationsPOST(loc )) { msg = errorMessage(err ); LOG_DEBUG(msg); err = Settings_Error::eError_POST ; goto lOut; } + if ( ! FileHandler ::makeFolder ( dst )) { msg = errorMessage(err ); LOG_DEBUG(msg); err = Settings_Error::eError_MkDir ; goto lOut; } + for( QString dir : FileHandler::subFolders(src)) { + QString sub = src + dir; + if ( FileHandler ::copyFolder (sub, dst )) { msg = errorMessage(err, dir); LOG_DEBUG(msg); err = Settings_Error::eError_Copy ; goto lOut; } + if ( FileHandler ::removeFolder (sub )) { msg = errorMessage(err, dir); LOG_DEBUG(msg); err = Settings_Error::eError_Remove ; goto lOut; } + } + + Storage::Settings_Secured(); + +lOut: + if ( vMessage ) { *vMessage = msg; } + return err; +} Index: sources/storage/Settings.h =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/storage/Settings.h (.../Settings.h) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/storage/Settings.h (.../Settings.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -51,7 +51,46 @@ QString content; }; +// TODO make this the SettingsError class +// { Class SettingsError +public: + enum Settings_Error { + eError_None , + eError_POST , + eError_PathEmpty , + eError_MkDir , + eError_Write , + eError_Copy , + eError_Remove , + eError_No_SettingsFolder , + eError_No_SettingsFile , + eError_SettingNotExists , + }; private: + const QHash settingsError_Message { // no translation for the error. My experience shows the error messages if translated is not useful for serviceability and debugging. + { eError_None , "" }, + { eError_POST , "The configuration source check failed." }, + { eError_PathEmpty , "The settings path is empty." }, + { eError_MkDir , "The configuration folder '%1' cannot be created." }, + { eError_Write , "The settings file %1 can't be written." }, + { eError_Copy , "The configuration folder '%1' cannot be copied." }, + { eError_Remove , "The configuration folder '%1' cannot be removed." }, + { eError_No_SettingsFolder , "No settings folder in the %1 path found." }, + { eError_No_SettingsFile , "No settings file in the %1 folder found." }, + { eError_SettingNotExists , "The setting file %1 doesn't exists." }, + }; +public: + const QString errorMessage(int vErr, QString vArg1 = "", QString vArg2 = "") { + if ( settingsError_Message.contains(vErr) ) { + if ( ! vArg1.isEmpty() ) return QString(settingsError_Message[vErr]).arg(vArg1); + if ( ! vArg2.isEmpty() ) return QString(settingsError_Message[vErr]).arg(vArg1).arg(vArg2); + /* default */ return QString(settingsError_Message[vErr]); + } + return "[unknown]"; + } +// } Class SettingsError + +private: const QString makeSetting(const char *vPath, const char *vFile) { QString literal(_settingsFormat); return QString(literal.arg(vPath).arg(vFile).arg(_settingsExt)); @@ -66,9 +105,6 @@ public: Settings() {} - int read(); - int save(const QString &vCategory, const QString &vGroup, const QString &vKey, const QString &vValue); - enum Category_Enum { eInstructions , eConfigurationsDataList , // TODO: the category for this conf is not used. may need to be merged into the Settings, but since it is list, It needs a little more thought. @@ -85,6 +121,16 @@ eKeyCancel , }; + enum Location_Enum { + eInit , + eSecured , + }; + + int read (); + int save (const QString &vCategory, const QString &vGroup, const QString &vKey, const QString &vValue); + int configurationsMove ( QString *vMessage = nullptr); + int configurationsPOST (Location_Enum vLoc = Location_Enum::eSecured) { Q_UNUSED(vLoc); return true; } + static QString category(Category_Enum vCategory) { switch (vCategory) { // NOTE: don't use default case eInstructions : return Storage::Settings_Category_Instructions ; @@ -107,6 +153,14 @@ return ""; } + static QString location(Location_Enum vLoc) { + switch (vLoc) { // NOTE: don't use default + case eInit : return Storage::Settings_Path_Init; + case eSecured : return Storage::Settings_Path_Name; + } + return Storage::Settings_Path_Name; + } + static bool isCategoryInstructions (const QString &vCategory) { return vCategory == category( eInstructions ); } static bool isCategoryConfigurationsDataList (const QString &vCategory) { return vCategory == category( eConfigurationsDataList ); } static bool isCategoryAlarms (const QString &vCategory) { return vCategory == category( eAlarms ); } Index: sources/storage/StorageGlobals.cpp =================================================================== diff -u -rbff1a7d681ce1928f39c79428958a5eb1625080c -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/storage/StorageGlobals.cpp (.../StorageGlobals.cpp) (revision bff1a7d681ce1928f39c79428958a5eb1625080c) +++ sources/storage/StorageGlobals.cpp (.../StorageGlobals.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -13,10 +13,15 @@ * */ // Qt +#include #include // Project #include "StorageGlobals.h" + +extern bool gEnableManufacturing ; +extern bool gUseRootHome ; + /*! * \brief Storage * \details The container of the constant global variable withing Storage namespace members. @@ -28,6 +33,8 @@ /****** TO BE CONSISTENT, ALWAYS INCLUDE '/' AT THE END OF ALL THE FOLDER/DIR/PATH IN HERE ******/ + const char *Standard_tmp = "/tmp/"; + const char *POST_LOG = "post.log"; // this file shall reside in the home folder where the application stored. // USB @@ -60,13 +67,20 @@ #endif // Screenshot store folder -const char *Screenshot_Base_Path_Name = "Screenshots/"; // this is the base path which will use the USB_Mount_Point to store the screenshots. + const char *Screenshot_Base_Path_Name = "Screenshots/"; // this is the base path which will use the USB_Mount_Point to store the screenshots. // Settings + static bool settings_secured = false; + const char *Settings_Path () { return gUseRootHome ? Settings_Path_Init : ( gEnableManufacturing ? ( settings_secured ? Settings_Path_Name: Settings_Path_Init ) : Settings_Path_Name ); } + void Settings_Secured() { settings_secured = true; } + #ifdef BUILD_FOR_TARGET - const char *Settings_Path_Name = "/home/root/.config/"; + //WARNING: This has to match with the crypt_setup.sh + const char *Settings_Path_Init = "/home/root/.config/"; // this is the manufacturing setup and the user is root. + const char *Settings_Path_Name = "/var/configurations/"; #else // should be in the project application folder. [is tracking by git] + const char *Settings_Path_Init = "/home/denali/Projects/application/resources/settings/"; const char *Settings_Path_Name = "/home/denali/Projects/application/resources/settings/"; #endif const char *Settings_Category_Instructions = "Instructions/Instructions"; @@ -84,10 +98,10 @@ // CloudSync credentials #ifdef BUILD_FOR_TARGET - const char *CloudSync_Base_Path_Name = "/home/root/.cloudSync/"; + const char *CloudSync_Base_Path_Name = gUseRootHome ? "/home/root/.cloudSync/" : "/var/configurations/CloudSync/"; #else // on VM it is a temporary file which is not being tracked - const char *CloudSync_Base_Path_Name = "/home/denali/Desktop/cloudsync/"; + const char *CloudSync_Base_Path_Name = "/home/denali/Desktop/CloudSync/"; #endif #ifdef BUILD_FOR_TARGET @@ -98,13 +112,21 @@ #endif // Scripts -#ifdef BUILD_FOR_TARGET - const char *Scripts_Path_Name = "/home/root/scripts/"; -#else - // should be in the project application folder. [is tracking by git] - const char *Scripts_Path_Name = "/home/denali/Projects/application/scripts/"; -#endif + const QString Scripts_Path_Name() { + #ifdef BUILD_FOR_TARGET + //TODO The manufacturing mode has to run as root + // after the lockdown.sh ran there would be no root user access + // and I am not sure how we reenable the root ssh + // and if it is a security risk to give denali access to sshd_config to enable the root ssh within UI App + // lockdown script suppose to be the last thing to do, + // and it is the lockdown.sh script which moves the scripts from root to denali home folder, + // therefore in manufacturing mode we are still running as root. + return QCoreApplication::applicationDirPath() + (gEnableManufacturing ? "/scripts/" : "/scripts/"); + #else + return "/home/denali/Projects/application/scripts/"; + #endif + } // Please notice that is the folder not the path // and it needs to be concatenated after SDCard_Base_Path_Name for each build configuration @@ -139,7 +161,30 @@ const char *Brightness_Set = "brightness_set.sh"; const char *Brightness_Get = "brightness_get.sh"; + // Root SSH + const char *RootSSHAccess_Set = "rootsshaccess_set.sh"; + const char *RootSSHAccess_Get = "rootsshaccess_get.sh"; + // Bluetooth const char *Bluetooth_Paired_Reset = "bluetooth_paired_clear.sh"; const char *Bluetooth_Paired_Query = "bluetooth_paired_query.sh"; + + // Encrypted Partition - cryptsetup + const char *Crypt_Setup = "crypt_setup.sh"; + + // Factory Reset + const char *Factory_Reset = "factory_reset.sh"; + + // Device Decommissioning + const char *Device_Decommission = "decommission.sh"; + + // Device Lockdown + const char *Device_Lockdown = "lockdown.sh"; + + const char *CloudSyncPath = "/var/configurations/CloudSync/credentials/"; + + // USB unmount/ mount + const char *USB_Unmount = "usb_unmount.sh"; + const char *USB_Mount = "usb_mount.sh"; + } Index: sources/storage/StorageGlobals.h =================================================================== diff -u -rbff1a7d681ce1928f39c79428958a5eb1625080c -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/storage/StorageGlobals.h (.../StorageGlobals.h) (revision bff1a7d681ce1928f39c79428958a5eb1625080c) +++ sources/storage/StorageGlobals.h (.../StorageGlobals.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -22,6 +22,8 @@ */ namespace Storage { + // standard locations + extern const char *Standard_tmp; // POST extern const char *POST_LOG; @@ -44,7 +46,10 @@ extern const char *Screenshot_Base_Path_Name; // Settings - extern const char *Settings_Path_Name; + extern void Settings_Secured (); + extern const char *Settings_Path() ; + extern const char *Settings_Path_Init ; + extern const char *Settings_Path_Name ; extern const char *Settings_Category_Instructions ; extern const char *Settings_Category_InstructionsImagesLoc ; extern const char *Settings_Category_ConfigurationsDataList ; @@ -64,7 +69,7 @@ extern const char *CloudSync_Credentials_Folder_Name; // Scripts - extern const char *Scripts_Path_Name; + extern const QString Scripts_Path_Name(); // Log Type Folders extern const char *Log_Folder_Base; // Base Log Folder @@ -99,7 +104,30 @@ extern const char *Brightness_Set; extern const char *Brightness_Get; + // RootSSHAccess + extern const char *RootSSHAccess_Set; + extern const char *RootSSHAccess_Get; + // Bluetooth extern const char *Bluetooth_Paired_Reset; extern const char *Bluetooth_Paired_Query; + + // Encrypted Partition - cryptsetup + extern const char *Crypt_Setup; + + // Factory Reset + extern const char *Factory_Reset; + + // Device Decommissioning + extern const char *Device_Decommission; + + // Device Lockdown + extern const char *Device_Lockdown; + + extern const char *CloudSyncPath; + + // USB mount/unmount + extern const char *USB_Unmount; + extern const char *USB_Mount; + } Index: sources/storage/TreatmentLog.cpp =================================================================== diff -u -r6d76149dca70e879f33bf6ed44203d0d06bc523a -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/storage/TreatmentLog.cpp (.../TreatmentLog.cpp) (revision 6d76149dca70e879f33bf6ed44203d0d06bc523a) +++ sources/storage/TreatmentLog.cpp (.../TreatmentLog.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -180,14 +180,14 @@ if (vLogType == Logger::eLogTrtmt) { if ( vLogPath.trimmed().isEmpty() ) { _treatmentLogPath = QString("%1%2") - .arg(Storage::SDCard_Base_Path_Name) + .arg(Storage::Settings_Path_Name) .arg(Storage::Log_Folder_Treatment ); } else { _treatmentLogPath = vLogPath; } _treatmentLogPath_Pending = QString("%1%2") - .arg(Storage::SDCard_Base_Path_Name) + .arg(Storage::Settings_Path_Name) .arg(Storage::Log_Folder_Pending ); LOG_DEBUG(QString("Treatment log folder has been set to %1" ).arg(_treatmentLogPath )); Index: sources/view/settings/VAdjustmentAlarmVolume.cpp =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/view/settings/VAdjustmentAlarmVolume.cpp (.../VAdjustmentAlarmVolume.cpp) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/view/settings/VAdjustmentAlarmVolume.cpp (.../VAdjustmentAlarmVolume.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -26,6 +26,7 @@ void View::VAdjustmentAlarmVolume::initConnections() { ADJUST_VIEW_CONNECTION(AdjustHDAlarmVolumeRequestData ); ACTION_VIEW_CONNECTION(AdjustHDAlarmVolumeResponseData ); + ACTION_VIEW_CONNECTION(SettingsData) } void View::VAdjustmentAlarmVolume::onActionReceive(const AdjustHDAlarmVolumeResponseData &vData) @@ -45,7 +46,7 @@ status(""); } else { - hdAlarmVolumeChanged(_hdAlarmVolume); + hdAlarmVolume(_hdAlarmVolume); // TODO : Rejection Reason (status) // Same thing which has been done for the alarmMapping has to be done for the Reason returning by each response. status(tr("The alarm volume change request has been rejected [%1]").arg(vData.mReason)); @@ -61,3 +62,17 @@ _data.volume(vVolume); emit didAdjustment(_data); } + +/*! + * \brief VAdjustmentAlarmVolume::onActionReceive + * \details This will send a message to update its Alarm Volume with the read value from configurations, + * When the Settings is done reading the SettingsData. + * + */ +void View::VAdjustmentAlarmVolume::onActionReceive(const SettingsData &) +{ + QString mCategory = Storage::Settings_Category_SettingsSystem; + FROMVARIANT( hdAlarmVolume, "Alarm", "Volume", UInt ); + //POST// + doAdjustment(_hdAlarmVolume); +} Index: sources/view/settings/VAdjustmentAlarmVolume.h =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/view/settings/VAdjustmentAlarmVolume.h (.../VAdjustmentAlarmVolume.h) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/view/settings/VAdjustmentAlarmVolume.h (.../VAdjustmentAlarmVolume.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -21,6 +21,7 @@ #include "VAdjustmentResponseBase.h" #include "MAdjustHDRequests.h" #include "MAdjustHDAlarmVolumeResponse.h" +#include "MSettings.h" namespace View { @@ -50,7 +51,9 @@ PROPERTY( quint8 , hdAlarmVolume , 0) PROPERTY( QString , status , "") - VIEW_DEC_CLASS_ADJUSTMENT(VAdjustmentAlarmVolume, AdjustHDAlarmVolumeResponseData) + VIEW_DEC_CLASS(VAdjustmentAlarmVolume) + VIEW_DEC_SLOT(AdjustHDAlarmVolumeResponseData) + VIEW_DEC_SLOT(SettingsData) // ---------- Alarm Volume public slots: Index: sources/view/settings/VAdjustmentVersions.cpp =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/view/settings/VAdjustmentVersions.cpp (.../VAdjustmentVersions.cpp) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/view/settings/VAdjustmentVersions.cpp (.../VAdjustmentVersions.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -16,6 +16,7 @@ // Project #include "GuiController.h" +#include "encryption.h" VIEW_DEF_CLASS_ADJUSTMENT(VAdjustmentVersions) Index: sources/view/settings/VDateTime.cpp =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/view/settings/VDateTime.cpp (.../VDateTime.cpp) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/view/settings/VDateTime.cpp (.../VDateTime.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -178,7 +178,7 @@ void VDateTime::dateTimeUI(const QString &vDateTime) { if ( _process.state() != QProcess::NotRunning ) { return; } - QString mScript = Storage::Scripts_Path_Name; + QString mScript = Storage::Scripts_Path_Name(); mScript += Storage::Date_Time_Set_Sh; _process.start(mScript, QStringList() << vDateTime); } Index: sources/view/settings/VDuetRoWaterDG.cpp =================================================================== diff -u -r28845c70151c3fb6f1a8e92c82da0232b6ca854a -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/view/settings/VDuetRoWaterDG.cpp (.../VDuetRoWaterDG.cpp) (revision 28845c70151c3fb6f1a8e92c82da0232b6ca854a) +++ sources/view/settings/VDuetRoWaterDG.cpp (.../VDuetRoWaterDG.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -72,12 +72,12 @@ * \brief VDuetRoWaterDG::onSettingsDone * \details fills the items below, read from the settings file, when the reading is notified done by ApplicationController. * acidConcentrateOptions - * */ void View::VDuetRoWaterDG::onActionReceive(const SettingsData &) { _post = true; QString mCategory = Storage::Settings_Category_SettingsSystem; FROMVARIANT( status, "RoWaterMode", "RoWaterMode", UInt ); + //POST// doAdjustment(_status); } Index: sources/view/settings/VSettings.cpp =================================================================== diff -u -rd949be21f2a9badd0978dddaaf436f6805de28dc -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/view/settings/VSettings.cpp (.../VSettings.cpp) (revision d949be21f2a9badd0978dddaaf436f6805de28dc) +++ sources/view/settings/VSettings.cpp (.../VSettings.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -22,22 +22,31 @@ #include "GuiController.h" #include "MSettings.h" #include "Settings.h" +#include VIEW_DEF_CLASS(VSettings) void VSettings::initConnections() { ACTION_VIEW_CONNECTION (SettingsData ); + connect(&_GuiController, SIGNAL(didActionReceive (GuiActionType, const QVariantList &)), + this , SLOT( onActionReceive (GuiActionType, const QVariantList &))); + +} + +void VSettings::initConnectionsSettings() +{ + static bool init = false; if ( init ) return; + PROPERTY_POST_CONNECTION(VSettings, servicePass ); PROPERTY_POST_CONNECTION(VSettings, alarmVolume ); PROPERTY_POST_CONNECTION(VSettings, roWaterMode ); PROPERTY_POST_CONNECTION(VSettings, noCANBus ); - connect(&_GuiController, SIGNAL(didActionReceive (GuiActionType, const QVariantList &)), - this , SLOT( onActionReceive (GuiActionType, const QVariantList &))); - + init = true; } void VSettings::servicePass_post(const QString &vservicePass) { + //TODO The Settings shall be the Singleton SettingsController and modify the MSettings like the others. Storage::Settings settings; if ( settings.save(servicePassCategory(), servicePassGroup(), servicePassKey(), vservicePass) != 0 ) { servicePass(""); @@ -46,6 +55,7 @@ } void VSettings::roWaterMode_post(const bool &vroWaterMode_post) { + //TODO The Settings shall be the Singleton SettingsController and modify the MSettings like the others. Storage::Settings settings; if ( settings.save(roWaterModeCategory(), roWaterModeGroup(), roWaterModeKey(), QString::number(vroWaterMode_post)) != 0 ) { roWaterMode(false); @@ -54,11 +64,13 @@ } void VSettings::alarmVolume_post(const quint8 &valarmVolume) { + //TODO The Settings shall be the Singleton SettingsController and modify the MSettings like the others. Storage::Settings settings; settings.save(alarmVolumeCategory(), alarmVolumeGroup(), alarmVolumeKey(), QString::number(valarmVolume)); } void VSettings::noCANBus_post(const bool &vnoCANBus) { + //TODO The Settings shall be the Singleton SettingsController and modify the MSettings like the others. Storage::Settings settings; settings.save(noCANBusCategory(), noCANBusGroup(), noCANBusKey(), QString::number(vnoCANBus)); } @@ -126,7 +138,10 @@ roWaterMode ( _roWaterMode ); // noCANBus ( _noCANBus ); // This line has been put here to remind developers that it is intentionally removed, to not to add a default value. + //DEBUG qDebug() << servicePass() << roWaterMode() << alarmVolume() << noCANBus(); adjustment(true); + + initConnectionsSettings(); } VSettings::TKeysList VSettings::updateReplacements(const QString &vGroup, const QStringList &vKeys) @@ -266,28 +281,43 @@ return ok; } -#include +QString View::VSettings::hashedPassword(const QString &vPassword, bool vIsService) +{ + bool ok; + QString hashed = encryption::hashedString(vPassword, ok, ! vIsService); + encryptionPass(ok); + return ok ? hashed : ""; +} -QString VSettings::encryptString(const QString &vString) { - // FIXME: Move this to the utility, storage or settings controller class for more general use. - QString salt = "DVT-HD0004"; // FIXME: Use the actual HD serial number - int iter = 1000; - int len = 16; - auto shuffle = [](const QString &vString) { - // FIXME: Implement this, and make this a function and move this to the utility or storage class for more general use. - QString shuffled = vString; - return shuffled.toUtf8().toHex(); - }; - QCryptographicHash::Algorithm algorithm = QCryptographicHash::Sha512; - QByteArray hashed = QPasswordDigestor::deriveKeyPbkdf2(algorithm, vString.toUtf8(), shuffle(salt), iter, len); - return hashed.toHex(); +/*! + * \brief View::VSettings::isServicePasswordMatch + * \details matches the given password string, vPassword, with the service password. + * \param vPassword - the given password string + * \return true if it matches. + */ +bool View::VSettings::isServicePasswordMatch(const QString &vPassword) +{ + //DEBUG qDebug() << __FUNCTION__ << _servicePass << hashedPassword(vPassword, true); + bool isNotEmpty = ( ! vPassword.trimmed().isEmpty() ); + bool isMatch = ( _servicePass == hashedPassword(vPassword, true) ); + return isMatch && isNotEmpty; } -bool View::VSettings::isPasswordMatch(const QString &vPassword) { - return _servicePass == encryptString(vPassword); +/*! + * \brief View::VSettings::updateServicePassword + * \details Updatest the service password with the given password. + * \param vPassword - the password to be saved as the service password. + */ +void View::VSettings::updateServicePassword(const QString &vPassword) +{ + servicePass(hashedPassword(vPassword, true)); } -void View::VSettings::updatePassword(const QString &vPassword) +void View::VSettings::checkServicePasswordSet() { - servicePass(encryptString(vPassword)); + bool ok; + isDefaultServicePassword(encryption::isDefaultServicePassword(servicePass(), ok)); + //DEBUG qDebug() << __FUNCTION__ << ok; + encryptionPass(ok); } + Index: sources/view/settings/VSettings.h =================================================================== diff -u -r7c86f3854db9ad02d95681203198d75a0d65c9fa -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/view/settings/VSettings.h (.../VSettings.h) (revision 7c86f3854db9ad02d95681203198d75a0d65c9fa) +++ sources/view/settings/VSettings.h (.../VSettings.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -31,7 +31,7 @@ { Q_OBJECT - QString _location = QString(Storage::Settings_Category_InstructionsImagesLoc).arg(Storage::Settings_Path_Name); + QString _location = QString(Storage::Settings_Category_InstructionsImagesLoc).arg(Storage::Settings_Path()); typedef QList TKeysList; typedef struct { QString location; @@ -63,25 +63,35 @@ PROPERTY(QStringList , categorys , {} ) PROPERTY(QVariantMap , instructions , {} ) + PROPERTY(bool , isDefaultServicePassword , false ) + SETTINGS(QString , servicePass , "" , Storage::Settings_Category_SettingsSystem , "Service" , "Password" ) SETTINGS(quint8 , alarmVolume , 5 , Storage::Settings_Category_SettingsSystem , "Alarm" , "Volume" ) SETTINGS(bool , roWaterMode , false , Storage::Settings_Category_SettingsSystem , "RoWaterMode" , "RoWaterMode" ) SETTINGS(bool , noCANBus , false , Storage::Settings_Category_NoCANBus , "Navigation" , "Create Treatment To Patient ID" ) + TRIGGER (bool , encryptionPass, false ) + VIEW_DEC(VSettings, SettingsData) private: + void initConnectionsSettings(); + TKeysList updateReplacements ( const QString &vGroup, const QStringList &vKeys ); void updateInstructions ( const QString &vGroup, const TKeysList &vKeysList, const QVariantList &vValues ); void updateInstructions ( const QString &vGroup ); - QString encryptString (const QString &vString ); + QString defaultPassword (); + bool isPasswordDefault (); + QString hashedPassword (const QString &vPassword, bool vIsService); public slots: - bool isPasswordValid (const QString &vPassword); - bool isPasswordMatch (const QString &vPassword); - void updatePassword (const QString &vPassword); + bool isPasswordValid (const QString &vPassword); + bool isServicePasswordMatch (const QString &vPassword); + void updateServicePassword (const QString &vPassword); + void checkServicePasswordSet (); + private slots: void onActionReceive (GuiActionType vAction, const QVariantList &vData); Index: sources/wifi/WifiInterface.cpp =================================================================== diff -u -rbff1a7d681ce1928f39c79428958a5eb1625080c -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/wifi/WifiInterface.cpp (.../WifiInterface.cpp) (revision bff1a7d681ce1928f39c79428958a5eb1625080c) +++ sources/wifi/WifiInterface.cpp (.../WifiInterface.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -954,7 +954,7 @@ * \return true if succeeds and false otherwise */ bool WifiInterface::checkScript(QString &vScript, const QString &vShellScript) { - vScript = _scriptsFolder + vShellScript; + vScript = Storage::Scripts_Path_Name() + vShellScript; QFileInfo info(vScript); if ( ! info.exists () ) { LOG_DEBUG(QString("script %1 does not exist." ).arg(vScript)); return false; } if ( ! info.isExecutable() ) { LOG_DEBUG(QString("script %1 is not executable." ).arg(vScript)); return false; } Index: sources/wifi/WifiInterface.h =================================================================== diff -u -rbff1a7d681ce1928f39c79428958a5eb1625080c -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/wifi/WifiInterface.h (.../WifiInterface.h) (revision bff1a7d681ce1928f39c79428958a5eb1625080c) +++ sources/wifi/WifiInterface.h (.../WifiInterface.h) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -71,7 +71,6 @@ QProcess _processReadNetworkInfo; WifiNetworkData _network; - const QString _scriptsFolder = Storage::Scripts_Path_Name; const QString _iface = "wlan0"; const QString _wpaSupplicantConfPath = QString("/etc/wpa_supplicant/wpa_supplicant-%1.conf").arg(_iface);