// // Created by xemon on 18.11.22. // #include "DeviceTesting_Env.h" #include "DeviceTesting_TestingMethods.h" #include "SpiPortIO.h" #include "Accel.h" #include "SpiPortArtery.h" #include "string.h" #define DEVICE_TESTING_ADD_TEST(NAME, TEST_ENV, TEST_METHOD, MODES) \ DeviceTestsTableAdd( \ &env->testsTable, \ DEVICE_TEST_NAME(NAME), \ TEST_ENV, \ (TestMethod) (TEST_METHOD), \ MODES \ ) \ uint16_t *getResultFix(tDeviceTestsTable *testsTable, char *testName, uint8_t testNameLength) { uint16_t *testResultFix = NULL; for (uint16_t i = 0; i < testsTable->count; ++i) { if ((memcmp(testsTable->items[i].name.str, testName, testNameLength) == 0) && (testNameLength == testsTable->items[i].name.length)) { testResultFix = &testsTable->items[i].resultFix; return testResultFix; } } return testResultFix; } bool DeviceTests_InitTestsTable( tDeviceTesting *env, tGpioPin *ignitionPin, tSpekTestPower *spekTestPower, tBipPins *bipTestDiagnost, tBatteryPower *batteryPower, tAtCmd *gsm, tAudioCodec *audioCodec, tAccel *accel, tAntTest *antCheck, tDeviceStorage *deviceStorage, tModemVersionRevisionTest *modemVersionRevisionTest, tAmplifier *amplifier, tCanTest *canTest ) { DeviceTestsTableInitStatic( &env->testsTable, env->testsTableAlloc ); env->namedTests.can = DEVICE_TESTING_ADD_TEST( "CAN", canTest, DeviceTesting_CanTest, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM | DEVICE_TESTING_MODE_IGNITION_AFTER_GSM ); env->namedTests.firmware = DEVICE_TESTING_ADD_TEST( "FIRMWARE", NULL, DeviceTesting_JustOk, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM | DEVICE_TESTING_MODE_IGNITION_AFTER_GSM ); env->namedTests.ignition = DEVICE_TESTING_ADD_TEST( "IGNITION", ignitionPin, DeviceTesting_IgnitionTest, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM | DEVICE_TESTING_MODE_IGNITION_AFTER_GSM ); env->namedTests.batteryConn = DEVICE_TESTING_ADD_TEST( "BAT_CONNECT", batteryPower, DeviceTesting_AdcBatteryConnectionTest, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM | DEVICE_TESTING_MODE_IGNITION_AFTER_GSM ); env->namedTests.batteryCharge = DEVICE_TESTING_ADD_TEST( "BAT_CHARGE", batteryPower, DeviceTesting_AdcBatteryChargeTest, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM | DEVICE_TESTING_MODE_IGNITION_AFTER_GSM ); env->namedTests.batteryCharge = DEVICE_TESTING_ADD_TEST( "BAT_VOLTAGE", batteryPower, DeviceTesting_AdcBatteryVoltageTest, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM | DEVICE_TESTING_MODE_IGNITION_AFTER_GSM ); if (*antCheck->mode == false) { env->namedTests.gnssAnt = DEVICE_TESTING_ADD_TEST( "GNSS_ANT", antCheck, DeviceTesting_AntTest, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM | DEVICE_TESTING_MODE_IGNITION_AFTER_GSM ); } else { env->namedTests.gnssAnt = DEVICE_TESTING_ADD_TEST( "GNSS_ANT", antCheck, DeviceTesting_AntTest, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM | DEVICE_TESTING_MODE_IGNITION_AFTER_GSM ); } env->namedTests.speakConnect = DEVICE_TESTING_ADD_TEST( "SPEAKER_CONNECT", spekTestPower, DeviceTesting_AdcSpeakerTest, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM | DEVICE_TESTING_MODE_IGNITION_AFTER_GSM ); env->namedTests.bipConnect = DEVICE_TESTING_ADD_TEST( "BIP_CONNECT", bipTestDiagnost, DeviceTesting_BipConnectTest, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM | DEVICE_TESTING_MODE_IGNITION_AFTER_GSM ); env->namedTests.accel = DEVICE_TESTING_ADD_TEST( "ACCEL", accel, DeviceTesting_TestAccel, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM | DEVICE_TESTING_MODE_IGNITION_AFTER_GSM ); env->namedTests.gsm = DEVICE_TESTING_ADD_TEST( "GSM", modemVersionRevisionTest, DeviceTesting_TestAt, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM | DEVICE_TESTING_MODE_IGNITION_AFTER_GSM ); env->namedTests.audioCodec = DEVICE_TESTING_ADD_TEST( "AUDIO_CODEC", audioCodec, DeviceTesting_TestAudioCodec, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM | DEVICE_TESTING_MODE_IGNITION_AFTER_GSM ); env->namedTests.vin = DEVICE_TESTING_ADD_TEST( "VIN", deviceStorage, DeviceTesting_VIN, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM | DEVICE_TESTING_MODE_IGNITION_AFTER_GSM ); env->namedTests.accel_calib = DEVICE_TESTING_ADD_TEST( "ACCEL_CALIB", deviceStorage, DeviceTesting_CALIB_ACCEL, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM | DEVICE_TESTING_MODE_IGNITION_AFTER_GSM ); env->namedTests.eol = DEVICE_TESTING_ADD_TEST( "EOL", &env->testsTable, DeviceTesting_EOL, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM | DEVICE_TESTING_MODE_IGNITION_AFTER_GSM ); env->namedTests.tele = DEVICE_TESTING_ADD_TEST( "TELE", modemVersionRevisionTest, DeviceTesting_Telematica, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM | DEVICE_TESTING_MODE_IGNITION_AFTER_GSM ); env->namedTests.modemSoftRevision = DEVICE_TESTING_ADD_TEST( "MODEM_SOFT_REV", modemVersionRevisionTest, DeviceTesting_ModemSoftwareValidation, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM | DEVICE_TESTING_MODE_IGNITION_AFTER_GSM ); env->namedTests.modemSertRevision = DEVICE_TESTING_ADD_TEST( "MODEM_CERT_REV", modemVersionRevisionTest, DeviceTesting_ModemCertValidation, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM | DEVICE_TESTING_MODE_IGNITION_AFTER_GSM ); env->namedTests.modemAudiotRevision = DEVICE_TESTING_ADD_TEST( "MODEM_AUDIO_FILE", modemVersionRevisionTest, DeviceTesting_ModemAudioFileValidation, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM | DEVICE_TESTING_MODE_IGNITION_AFTER_GSM ); env->namedTests.modemAmplifare = DEVICE_TESTING_ADD_TEST( "AMPLIFIER", amplifier, DeviceTesting_Aamplifier, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM | DEVICE_TESTING_MODE_IGNITION_AFTER_GSM ); env->namedTests.modemSimEra = DEVICE_TESTING_ADD_TEST( "SIM_ERA", modemVersionRevisionTest, DeviceTesting_SimEra, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM ); env->namedTests.modemSimComers = DEVICE_TESTING_ADD_TEST( "SIM_COMERS", modemVersionRevisionTest, DeviceTesting_SimComers, DEVICE_TESTING_MODE_ALWAYS | DEVICE_TESTING_MODE_PERIODICAL | DEVICE_TESTING_MODE_IGNITION_WITHOUT_GSM ); // modemVersionRevisionTest->modemDataCollector->modemVersionRevision.deviceTestFix_ModemCertValidation = getResultFix(&env->testsTable, "MODEM_CERT_REV", //// sizeof("MODEM_CERT_REV") - 1); // // modemVersionRevisionTest->modemDataCollector->modemVersionRevision.deviceTestFix_ModemAudioFileValidation = getResultFix(&env->testsTable, "MODEM_AUDIO_FILE", // sizeof("MODEM_AUDIO_FILE") - 1); // // modemVersionRevisionTest->modemDataCollector->modemVersionRevision.deviceTestFix_ModemValidation = getResultFix(&env->testsTable, "GSM", // sizeof("GSM") - 1); return true; }