// // Created by zemon on 25.12.24. // #include #include #include "XfcArray.h" #include "XfcProtProcessorUtilDefines.h" #include "DeviceTesting_Env.h" #include "ComIntTest.h" uint8_t XfcProtMethod_TestSet(tXfcArray *request, tXfcArray *response, tXfcTest *env){ uint8_t result = XfcProtMethod_TestRun(request, response, env); env->run = true; return result; } uint16_t XfcArrayGetBytesFrontToSendTest(tXfcTest *env, tXfcTestType codecType, tXfcArray *array, uint8_t length) { uint16_t available = XfcArrayGetDataSize(array); uint16_t toGet = available > length ? length : available; if (codecType == RUN) { if(*env->factoryMode == true) { env->run = *(uint32_t *) (array->data + array->begin); } } array->begin += toGet; return toGet; } uint8_t XfcProtMethod_TestRun(tXfcArray *request, tXfcArray *response, tXfcTest *env) { // Запись избранных параметров uint16_t paramCount = 0; uint8_t paramValueID_len = 0; uint8_t paramValueID_text[64]; XFC_CMD_RX_GET_RAW(paramCount); if (!paramCount) { return XFC_TRANSPORT_PROTOCOL_RESPONSE_RESULT_OK; } for (uint16_t count = 0; count < paramCount; ++count) { // Получение текстового id параметра XFC_CMD_RX_GET_RAW(paramValueID_len); XFC_CMD_RX_GET_ARR(paramValueID_text, paramValueID_len); uint8_t dataLen; XFC_CMD_RX_GET_RAW(dataLen); if (memcmp(paramValueID_text, "RUN", sizeof("RUN") - 1) == 0) { uint16_t countLen = XfcArrayGetBytesFrontToSendTest(env, RUN, request, dataLen); if (countLen != dataLen) { return XFC_TRANSPORT_PROTOCOL_REQUEST_UNEXPECTEDLY_SHORT; } } } return XFC_TRANSPORT_PROTOCOL_RESPONSE_RESULT_OK; }