Index: denali.pro =================================================================== diff -u -rcdf80193148db0831cf2c1067732ddc6f6dac5fb -r3508eb862db3d45a89ef17bd63f385c80fb52775 --- denali.pro (.../denali.pro) (revision cdf80193148db0831cf2c1067732ddc6f6dac5fb) +++ denali.pro (.../denali.pro) (revision 3508eb862db3d45a89ef17bd63f385c80fb52775) @@ -220,6 +220,7 @@ sources/view/VEventSpy.h \ sources/view/VView.h \ sources/view/VPowerOff.h \ + sources/view/VUIPostSingleResultData.h \ \ # ---------- Views - Settings sources/view/settings/VDateTime.h \ sources/view/settings/VSettings.h \ @@ -434,6 +435,7 @@ sources/view/VTreatmentCreate.cpp \ sources/view/VEventSpy.cpp \ sources/view/VPowerOff.cpp \ + sources/view/VUIPostSingleResultData.cpp \ \ # ---------- Views - Alarm sources/view/hd/alarm/VAlarmStatus.cpp \ \ # ---------- Views - Settings Index: denali.pro.user =================================================================== diff -u -r8f83b92860a33498ea7856e63afef0a10ee11923 -r3508eb862db3d45a89ef17bd63f385c80fb52775 --- denali.pro.user (.../denali.pro.user) (revision 8f83b92860a33498ea7856e63afef0a10ee11923) +++ denali.pro.user (.../denali.pro.user) (revision 3508eb862db3d45a89ef17bd63f385c80fb52775) @@ -1,14 +1,14 @@ - + EnvironmentId {67370740-e20f-4fc6-be45-6652e866a8bf} ProjectExplorer.Project.ActiveTarget - 1 + 0 ProjectExplorer.Project.EditorSettings @@ -86,315 +86,10 @@ ProjectExplorer.Project.Target.0 - Qt 5.12.5 (iMX8) - Qt 5.12.5 (iMX8) - {5d6458ef-f917-4aef-a092-c77bbe106149} - 1 - 0 - 0 - - /home/denali/Projects/tmp/build/denali-Qt_5_12_5_iMX8-Debug - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - - false - false - false - - - true - Make - - Qt4ProjectManager.MakeStep - - false - - - false - - 2 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - true - clean - - false - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Debug - Debug - Qt4ProjectManager.Qt4BuildConfiguration - 2 - true - - - /home/denali/Projects/tmp/build/denali-Qt_5_12_5_iMX8-Release - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - - false - false - false - - - true - Make - - Qt4ProjectManager.MakeStep - - false - - - false - - 2 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - true - clean - - false - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Release - Release - Qt4ProjectManager.Qt4BuildConfiguration - 0 - true - - - /home/denali/Projects/tmp/build/denali-Qt_5_12_5_iMX8-Profile - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - - false - false - false - - - true - Make - - Qt4ProjectManager.MakeStep - - false - - - false - - 2 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - true - clean - - false - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Profile - Profile - Qt4ProjectManager.Qt4BuildConfiguration - 0 - true - - 3 - - - - true - Check for free disk space - - RemoteLinux.CheckForFreeDiskSpaceStep - - - - - / - 5242880 - - - - - true - Kill current application instance - - RemoteLinux.KillAppStep - - - - - - - - - true - Deploy files via rsync - - RemoteLinux.RsyncDeployStep - - - - - - - -av - false - - 3 - Deploy - Deploy - ProjectExplorer.BuildSteps.Deploy - - 1 - Deploy to Remote Linux Host - - DeployToGenericLinux - - 1 - - - dwarf - - cpu-cycles - - - 250 - -F - true - 4096 - false - false - 1000 - - true - - false - false - false - false - true - 0.01 - 10 - true - kcachegrind - 1 - 25 - - 1 - true - false - true - valgrind - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - - 1 - - - denali (on Generic Linux Device (iMX8))2 - RemoteLinuxRunConfiguration:/home/denali/Projects/application/denali.pro - 1 - - false - -u - 3768 - false - true - false - false - true - false - - - :0 - - 1 - - - - ProjectExplorer.Project.Target.1 - Desktop Qt 5.12.5 GCC 64bit Desktop Qt 5.12.5 GCC 64bit qt.qt5.5125.gcc_64_kit - 0 + 1 0 0 @@ -1490,12 +1185,317 @@ true false - /home/denali/Projects/tmp/build/denali-Desktop_Qt_5_12_5_GCC_64bit-Debug + /home/denali/Projects/tmp/build/denali-Desktop_Qt_5_12_5_GCC_64bit-Release 1 + ProjectExplorer.Project.Target.1 + + Qt 5.12.5 (iMX8) + Qt 5.12.5 (iMX8) + {5d6458ef-f917-4aef-a092-c77bbe106149} + 1 + 0 + 0 + + /home/denali/Projects/tmp/build/denali-Qt_5_12_5_iMX8-Debug + + + true + qmake + + QtProjectManager.QMakeBuildStep + false + + false + false + false + + + true + Make + + Qt4ProjectManager.MakeStep + + false + + + false + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + true + clean + + false + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Debug + Debug + Qt4ProjectManager.Qt4BuildConfiguration + 2 + true + + + /home/denali/Projects/tmp/build/denali-Qt_5_12_5_iMX8-Release + + + true + qmake + + QtProjectManager.QMakeBuildStep + false + + false + false + false + + + true + Make + + Qt4ProjectManager.MakeStep + + false + + + false + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + true + clean + + false + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Release + Release + Qt4ProjectManager.Qt4BuildConfiguration + 0 + true + + + /home/denali/Projects/tmp/build/denali-Qt_5_12_5_iMX8-Profile + + + true + qmake + + QtProjectManager.QMakeBuildStep + false + + false + false + false + + + true + Make + + Qt4ProjectManager.MakeStep + + false + + + false + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + true + clean + + false + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Profile + Profile + Qt4ProjectManager.Qt4BuildConfiguration + 0 + true + + 3 + + + + true + Check for free disk space + + RemoteLinux.CheckForFreeDiskSpaceStep + + + + + / + 5242880 + + + + + true + Kill current application instance + + RemoteLinux.KillAppStep + + + + + + + + + true + Deploy files via rsync + + RemoteLinux.RsyncDeployStep + + + + + + + -av + false + + 3 + Deploy + Deploy + ProjectExplorer.BuildSteps.Deploy + + 1 + Deploy to Remote Linux Host + + DeployToGenericLinux + + 1 + + + dwarf + + cpu-cycles + + + 250 + -F + true + 4096 + false + false + 1000 + + true + + false + false + false + false + true + 0.01 + 10 + true + kcachegrind + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + 1 + + + denali (on Generic Linux Device (iMX8))2 + RemoteLinuxRunConfiguration:/home/denali/Projects/application/denali.pro + 1 + + false + -u + 3768 + false + true + false + false + true + false + + + :0 + + 1 + + + ProjectExplorer.Project.TargetCount 2 Index: scripts/checksums.conf =================================================================== diff -u --- scripts/checksums.conf (revision 0) +++ scripts/checksums.conf (revision 3508eb862db3d45a89ef17bd63f385c80fb52775) @@ -0,0 +1,25 @@ +{ + "/home/denali/Projects/tmp/build/denali-Qt_5_12_5_iMX8-Release/denali": "1c38fc3fb209498f794f7cf520637b1caad7d49237bbdbfefb97dc0ea5408a96", + "/home/denali/Projects/application/scripts/wifi_read_ip_settings.sh": "d223f3541ea99993051a48357b17e80646fe0a35e3fb98097147418180cf8899", + "/home/denali/Projects/application/scripts/wifi_save_dhcp_interface.sh": "736b7e0858aba73e9f1d87751af38728624208a77ea2c2e0985ffcf1b7dc417c", + "/home/denali/Projects/application/scripts/run.sh": "0f06941da3d5fcb39c091d4efe7ca7e143e05eb738659baacba15bcdcd459433", + "/home/denali/Projects/application/scripts/wifi_set_auto_assigned_ip.sh": "62d1d63409dd0e2bee1b61c07556c9c7f39b009dd7d3799bbda6b13a278a3a53", + "/home/denali/Projects/application/scripts/wifi_read_gateway.sh": "ba75abe7a338d3e4469ab1635dfd0c45689fb8568912c2db338b199afb81b7ad", + "/home/denali/Projects/application/scripts/wifi_disconnect_network.sh": "f8ca0dda8c48ea51a998f4bbc2f1be03d47685cf49de49312d63c7668fbe1487", + "/home/denali/Projects/application/scripts/wifi_set_dns.sh": "65a51ad8890924f9b0fedd99281b143a3e9dcf427bf74ff3f5c2fe3fdd46b0be", + "/home/denali/Projects/application/scripts/wifi_read_dns.sh": "d6371e2a044bcbe868d3f1d6e523a6647cd5da4e7529cabc6bb6a6d5cb097aad", + "/home/denali/Projects/application/scripts/wifi_test_internet.sh": "e48004b2af1600ecf7df059dae5bc41c791efdad23b7695393908c6bbd5575c9", + "/home/denali/Projects/application/scripts/wifi_set_static_ip.sh": "1aba903edc9b37cb6970214aace2f2f3cfed590dec0f9d4d3a6d5f12cadee45e", + "/home/denali/Projects/application/scripts/wifi_save_static_interface_assignments.sh": "eacf2985c3700aa4145770d7a6bfc27079aafa8b9cf4257cc02c82f817ca52f8", + "/home/denali/Projects/application/scripts/wifi_scan_for_networks.sh": "0587e1d67c4e35f456f05c54a9dbe71a855d31b72285b4edcb9db13cd587a120", + "/home/denali/Projects/application/scripts/wifi_generate_wpa_supplicant.sh": "358a03d1e4b279537c07ccc71ecde4c3eb27b2e71299cb628845df7056981c6a", + "/home/denali/Projects/application/scripts/date_time_set.sh": "a0ffd6dee63d8552ae2eb67cc25dc8da927618024f37e23c987dd25152f4cd90", + "/home/denali/Projects/application/scripts/wifi_set_gateway.sh": "f9fefbbbe1428957b197f95aeacb89aab6215d3bf6259d32a9d486e369585582", + "/home/denali/Projects/application/scripts/wifi_reset_interface.sh": "85bfd3dce35bfcf2df1d6d6da4347298d257a0bae715936da6196a0e9996d42e", + "/home/denali/Projects/application/scripts/wifi_reset_adapter.sh": "c986ffff46ae56a126a7555322212c88601aef7db00af7842b54ee464a960042", + "/home/denali/Projects/application/scripts/wifi_start_wpa_supplicant.sh": "2f13c96711f07ff55ef0abafc07565386ec48e08b0945d0a57bd9f423c042a94", + "/home/denali/Projects/application/scripts/setup.sh": "548d404b03b4b170e79f87358f1394be4705af2e7a9387031b7e0543ce222225", + "/home/denali/Projects/application/scripts/wifi_request_auto_assigned_ip.sh": "58844533184b1aa392f20192d0471eb86e00093753d4ae521db32dcf063f7718", + "/home/denali/Projects/application/scripts/wifi_set_subnetmask.sh": "aee2377da3a0afe75431016e88f6e94ccd89c6f3decf50290ca2150b64f414b9", + "/home/denali/Projects/application/scripts/copy.sh": "b8c1c549672ddd23c2294702f0d1060d9c8b9808622838780178217359701fcc" +} \ No newline at end of file Index: scripts/copy.sh =================================================================== diff -u -r7077e38c74db9cccb5496ffefcf8936c0916de76 -r3508eb862db3d45a89ef17bd63f385c80fb52775 --- scripts/copy.sh (.../copy.sh) (revision 7077e38c74db9cccb5496ffefcf8936c0916de76) +++ scripts/copy.sh (.../copy.sh) (revision 3508eb862db3d45a89ef17bd63f385c80fb52775) @@ -183,6 +183,7 @@ copyFileTo "autostart" $HOMEPATH copyFileTo "run.sh" $HOMEPATH copyFileTo "setup.sh" $HOMEPATH + copyFileTo "checksum.conf" $HOMEPATH setupSettingsScripts Index: scripts/files_check.py =================================================================== diff -u --- scripts/files_check.py (revision 0) +++ scripts/files_check.py (revision 3508eb862db3d45a89ef17bd63f385c80fb52775) @@ -0,0 +1,83 @@ +########################################################################### +# +# Copyright (c) 2021 Diality Inc. - All Rights Reserved. +# +# THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN +# WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. +# +# @file files_check.py +# +# @author (last) Peter Lucia +# @date (last) 05-May-2021 +# @author (original) Peter Lucia +# @date (original) 05-May-2021 +# +############################################################################ +import os +import json +import socket +import glob +from hashlib import sha256 +from typing import List +from collections import OrderedDict + + +def generate_sha256(path: str) -> str: + """ + Generates a sha256 checksum for the provided file + :param path: the file to generate + :return: the checksum + """ + if not os.path.exists(path): + print("Invalid path.") + return "" + return sha256(open(path,'rb').read()).hexdigest() + + +def check_application(path: str, checksum: str) -> bool: + """ + Checks that the application is not corrupted and has the correct signature + + :param path: the path to the application binary + :param checksum: the expected sha256 hash for the application + :return: True if pass, False otherwise + """ + return generate_sha256(path) == checksum + + +def generate_checksums(files: List[str], outfile: str) -> None: + """ + Generates checksums for the list of files + + :param files: the list of files to generate checksums for + :param outfile: where to write the resultant json file + :return: None + """ + lookup = OrderedDict() + for file in files: + lookup[file] = generate_sha256(file) + print(lookup) + with open(outfile, 'w', encoding='utf-8') as f: + json.dump(lookup, f, ensure_ascii=False, indent=4) + + +def get_scripts(base_dir: str) -> List[str]: + """ + Gets a list of full paths for each script placed on the device + + :param base_dir: the parent directory where the scripts reside + :return: a list of all the scripts + """ + return glob.glob(os.path.join(base_dir, "*.sh"), recursive=False) + + +if __name__ == '__main__': + hostname = socket.gethostname() + if hostname == "DEN-UI": + files = [ + "/home/denali/Projects/tmp/build/denali-Qt_5_12_5_iMX8-Release/denali", + ] + files += get_scripts("/home/denali/Projects/application/scripts") + generate_checksums(files, "checksums.conf") + elif hostname == "b2qt-nitrogen8mm": + pass \ No newline at end of file Index: sources/gui/qml/pages/post/PostInProgress.qml =================================================================== diff -u -rc8263f48423cf7791f5ef7d46157b9278708d663 -r3508eb862db3d45a89ef17bd63f385c80fb52775 --- sources/gui/qml/pages/post/PostInProgress.qml (.../PostInProgress.qml) (revision c8263f48423cf7791f5ef7d46157b9278708d663) +++ sources/gui/qml/pages/post/PostInProgress.qml (.../PostInProgress.qml) (revision 3508eb862db3d45a89ef17bd63f385c80fb52775) @@ -17,7 +17,10 @@ import QtQuick 2.12 // Project +import Gui.Actions 0.1; +// Project + // Qml imports import "qrc:/globals" import "qrc:/components" @@ -26,6 +29,8 @@ /*! * \brief PostInProgress is the screen * which is shown while the power on self test is in progress. + * Upon any POST failure, the power button must be pressed to + * shut down the system. */ ScreenItem { id: _root @@ -65,6 +70,18 @@ font.pixelSize: Fonts.fontPixelSection } + WaitDone { id: _hdWaitdone + diameter: _hdTestsTitle.height + anchors { + left: _hdTestsTitle.right + leftMargin: diameter + verticalCenter: _hdTestsTitle.verticalCenter + } + visible : true + done : vHDPostFinalResult.result < 2 + failed : vHDPostFinalResult.result === 0 + } + CheckListScrollView { id: _hdListView model: vHDPostSingleResult width: _rectangle.width / 3 @@ -85,6 +102,18 @@ font.pixelSize: Fonts.fontPixelSection } + WaitDone { id: _dgWaitdone + diameter: _dgTestsTitle.height + anchors { + left: _dgTestsTitle.right + leftMargin: diameter + verticalCenter: _dgTestsTitle.verticalCenter + } + visible : true + done : vDGPostFinalResult.result < 2 + failed : vDGPostFinalResult.result === 0 + } + CheckListScrollView { id: _dgListView model: vDGPostSingleResult width: _rectangle.width / 3 @@ -106,6 +135,18 @@ font.pixelSize: Fonts.fontPixelSection } + WaitDone { id: _uiWaitdone + diameter: _uiTestsTitle.height + anchors { + left: _uiTestsTitle.right + leftMargin: diameter + verticalCenter: _uiTestsTitle.verticalCenter + } + visible : true + done : vUIPostSingleResult.finalResult < 2 + failed : vUIPostSingleResult.finalResult === 0 + } + CheckListScrollView { id: _uiListView model: vUIPostSingleResult width: _rectangle.width / 3 @@ -117,4 +158,21 @@ } } } + + // delete if not needed or if HW button will be used instead if tests fail + TouchRect { id : _poweroffButton + width: 150 + height: Variables.logoDiameter + anchors { + top : _rectangle.bottom + horizontalCenter: _rectangle.horizontalCenter + } + visible: vHDPostFinalResult.result === 0 || + vDGPostFinalResult.result === 0 || + vUIPostSingleResult.finalResult === 0 + text.text: qsTr("Shutdown") + onPressed: { + _GuiView.doActionTransmit(GuiActions.ID_PowerOff, GuiActions.NoData) + } + } } Index: sources/view/VUIPostSingleResultData.cpp =================================================================== diff -u -rc8263f48423cf7791f5ef7d46157b9278708d663 -r3508eb862db3d45a89ef17bd63f385c80fb52775 --- sources/view/VUIPostSingleResultData.cpp (.../VUIPostSingleResultData.cpp) (revision c8263f48423cf7791f5ef7d46157b9278708d663) +++ sources/view/VUIPostSingleResultData.cpp (.../VUIPostSingleResultData.cpp) (revision 3508eb862db3d45a89ef17bd63f385c80fb52775) @@ -108,7 +108,9 @@ else return false; - // FIXME: emit dataChanged... + emit dataChanged(sibling(vIndex, 0, QModelIndex()), + sibling(vIndex,0, QModelIndex()), + QVector() << vRole); return true; } @@ -139,7 +141,7 @@ /*! * \brief VUIPost::onActionReceive - * Called when the settings data is read from disk on startup + * Called once when the settings data is read from disk on startup * \param vData - the settings data */ void VUIPostSingleResult::onActionReceive(const SettingsData &) @@ -159,4 +161,116 @@ posttest.name = test; addSelfTest(posttest); } + + // Kickoff power on self-tests once all tests have been added + selfTestApplicationBinary(); + selfTestTouchScreenDriver(); + selfTestWifiDriver(); + selfTestBluetoothDriver(); + selfTestRTCClock(); + selfTestClockSpeed(); + selfTestVersionCompatibility(); } + +/*! + * \brief VUIPostSingleResult::sha256 + * Gets the Sha256 checksum for the specified file + * \param fileName - the file we want the sha256 hash for + * \return The hash result + */ +QByteArray VUIPostSingleResult::sha256(const QString &vFilename) +{ + QFile f(vFilename); + if (f.open(QFile::ReadOnly)) + { + QCryptographicHash hash(QCryptographicHash::Sha256); + if (hash.addData(&f)) + return hash.result(); + } + return QByteArray(); +} + +/*! + * \brief VUIPostSingleResult::selfTestApplicationBinary + * Tests that the application binary is not corrupted + */ +void VUIPostSingleResult::selfTestApplicationBinary() +{ + // check if the application is in the conf checksum file + // check that its path matches where it is in the actual filesystem + // check that it's checksum is correct + int index = 0; + int result = 1; // pass + setData(index, QVariant(result), TestDataRole::TestResultRole); + // if a test fails +// finalResult(0); +} + +/*! + * \brief VUIPostSingleResult::selfTestTouchScreenDriver + * Tests that the touch screen driver is loaded correctly + */ +void VUIPostSingleResult::selfTestTouchScreenDriver() +{ + // dmesg | grep "touch" + int index = 1; + int result = 1; // pass + setData(index, QVariant(result), TestDataRole::TestResultRole); +} + +/*! + * \brief VUIPostSingleResult::selfTestWifiDriver + * Tests that the Wi-Fi driver is correctly loaded + */ +void VUIPostSingleResult::selfTestWifiDriver() +{ + // check that wpa_supplicant exists + int index = 2; + int result = 1; // pass + setData(index, QVariant(result), TestDataRole::TestResultRole); +} + +/*! + * \brief VUIPostSingleResult::selfTestBluetoothDriver + * Tests that the bluetooth driver is correctly loaded + */ +void VUIPostSingleResult::selfTestBluetoothDriver() +{ + int index = 3; + int result = 1; // pass + setData(index, QVariant(result), TestDataRole::TestResultRole); +} + +/*! + * \brief VUIPostSingleResult::selfTestRTCClock + * Tests that the RTC clock is correct + */ +void VUIPostSingleResult::selfTestRTCClock() +{ + int index = 4; + int result = 1; // pass + setData(index, QVariant(result), TestDataRole::TestResultRole); +} + +/*! + * \brief VUIPostSingleResult::selfTestClockSpeed + * Test that the clock speed is within spec + */ +void VUIPostSingleResult::selfTestClockSpeed() +{ + int index = 5; + int result = 1; // pass + setData(index, QVariant(result), TestDataRole::TestResultRole); +} + +/*! + * \brief VUIPostSingleResult::selfTestVersionCompatibility + * Test that the FW versions are compatible with this UI version + */ +void VUIPostSingleResult::selfTestVersionCompatibility() +{ + int index = 6; + int result = 1; // pass + setData(index, QVariant(result), TestDataRole::TestResultRole); + finalResult(1); +} Index: sources/view/VUIPostSingleResultData.h =================================================================== diff -u -rc8263f48423cf7791f5ef7d46157b9278708d663 -r3508eb862db3d45a89ef17bd63f385c80fb52775 --- sources/view/VUIPostSingleResultData.h (.../VUIPostSingleResultData.h) (revision c8263f48423cf7791f5ef7d46157b9278708d663) +++ sources/view/VUIPostSingleResultData.h (.../VUIPostSingleResultData.h) (revision 3508eb862db3d45a89ef17bd63f385c80fb52775) @@ -17,6 +17,7 @@ // Qt #include #include +#include // Project #include "main.h" // Doxygen : don't remove @@ -34,8 +35,7 @@ class VUIPostSingleResult : public QAbstractListModel { Q_OBJECT - PROPERTY(quint32, result, 0) - PROPERTY(quint32, index, 0) + PROPERTY(quint32, finalResult, 2) VIEW_DEC_SLOT(SettingsData) @@ -63,5 +63,13 @@ private: void initConnections(); void addSelfTest(const PostTest &vTest); + QByteArray sha256(const QString &vFilename); + void selfTestApplicationBinary(); + void selfTestTouchScreenDriver(); + void selfTestWifiDriver(); + void selfTestBluetoothDriver(); + void selfTestRTCClock(); + void selfTestClockSpeed(); + void selfTestVersionCompatibility(); }; } Index: sources/view/dg/data/VDGPostFinalResultData.cpp =================================================================== diff -u -r4e708c6e93443b01ac26c71a466708916ede4abf -r3508eb862db3d45a89ef17bd63f385c80fb52775 --- sources/view/dg/data/VDGPostFinalResultData.cpp (.../VDGPostFinalResultData.cpp) (revision 4e708c6e93443b01ac26c71a466708916ede4abf) +++ sources/view/dg/data/VDGPostFinalResultData.cpp (.../VDGPostFinalResultData.cpp) (revision 3508eb862db3d45a89ef17bd63f385c80fb52775) @@ -19,6 +19,7 @@ VIEW_DEF(VDGPostFinalResult, DGPostFinalResultData) -void VDGPostFinalResult::onActionReceive(const DGPostFinalResultData &vData) { - Q_UNUSED(vData) +void VDGPostFinalResult::onActionReceive(const DGPostFinalResultData &vData) +{ + result(vData.mResult); } Index: sources/view/dg/data/VDGPostFinalResultData.h =================================================================== diff -u -r4e708c6e93443b01ac26c71a466708916ede4abf -r3508eb862db3d45a89ef17bd63f385c80fb52775 --- sources/view/dg/data/VDGPostFinalResultData.h (.../VDGPostFinalResultData.h) (revision 4e708c6e93443b01ac26c71a466708916ede4abf) +++ sources/view/dg/data/VDGPostFinalResultData.h (.../VDGPostFinalResultData.h) (revision 3508eb862db3d45a89ef17bd63f385c80fb52775) @@ -35,9 +35,7 @@ class VDGPostFinalResult : public QObject { Q_OBJECT - PROPERTY( quint32, result, 0) - PROPERTY( quint32, index, 0) - + PROPERTY(quint32, result, 2) VIEW_DEC(VDGPostFinalResult, DGPostFinalResultData) }; } Index: sources/view/hd/data/VHDPostFinalResultData.cpp =================================================================== diff -u -r4e708c6e93443b01ac26c71a466708916ede4abf -r3508eb862db3d45a89ef17bd63f385c80fb52775 --- sources/view/hd/data/VHDPostFinalResultData.cpp (.../VHDPostFinalResultData.cpp) (revision 4e708c6e93443b01ac26c71a466708916ede4abf) +++ sources/view/hd/data/VHDPostFinalResultData.cpp (.../VHDPostFinalResultData.cpp) (revision 3508eb862db3d45a89ef17bd63f385c80fb52775) @@ -19,6 +19,7 @@ VIEW_DEF(VHDPostFinalResult, HDPostFinalResultData) -void VHDPostFinalResult::onActionReceive(const HDPostFinalResultData &vData) { - Q_UNUSED(vData) +void VHDPostFinalResult::onActionReceive(const HDPostFinalResultData &vData) +{ + result(vData.mResult); } Index: sources/view/hd/data/VHDPostFinalResultData.h =================================================================== diff -u -r4e708c6e93443b01ac26c71a466708916ede4abf -r3508eb862db3d45a89ef17bd63f385c80fb52775 --- sources/view/hd/data/VHDPostFinalResultData.h (.../VHDPostFinalResultData.h) (revision 4e708c6e93443b01ac26c71a466708916ede4abf) +++ sources/view/hd/data/VHDPostFinalResultData.h (.../VHDPostFinalResultData.h) (revision 3508eb862db3d45a89ef17bd63f385c80fb52775) @@ -35,8 +35,7 @@ class VHDPostFinalResult : public QObject { Q_OBJECT - PROPERTY( quint32, result, 0) - PROPERTY( quint32, index, 0) + PROPERTY(quint32, result, 2) VIEW_DEC(VHDPostFinalResult, HDPostFinalResultData) };