SMART_COMPONENTS_DeviceTesting/Src/DeviceTesting_InitTestsTable.c

299 lines
10 KiB
C

//
// 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;
}