ComIntCmd_AccelCalibration/Src/ComIntCmd/AccelCalibration.c

82 lines
3.2 KiB
C

//
// Created by zemon on 10.04.23.
//
#include <string.h>
#include "ComIntCmd/AccelCalibration.h"
void XfcProtMethodsAdd_AccelCalibration(tXfcProtTable *protTab, tAccelCalibData *accelCalibData) {
XfcProtTable_AddStatic(protTab, "ACCEL_CALIBRATION", XfcProtMethod_AccelCalibration, accelCalibData);
}
void XfcProtMethodsInit_AccelCalibration(tAccelCalibData *env, tCarFlipDetection *carFlipDetection, tVariablesTable *varsTab) {
env->flipDetect = carFlipDetection;
env->externTable = varsTab;
}
uint8_t recordVector(tAccelCalibData *accelCalibData) {
char *nameFiled;
tVariableDescriptor *descriptor;
if (VariablesTable_RequireChange(accelCalibData->externTable, 10)) {
nameFiled = "FLIP_DETECT_GRAVITY_X";
descriptor = VariablesTable_GetByName(accelCalibData->externTable, nameFiled, strlen(nameFiled));
memcpy(descriptor->addr, &accelCalibData->flipDetect->current.value.x,
sizeof(accelCalibData->flipDetect->current.value.x));
nameFiled = "FLIP_DETECT_GRAVITY_Y";
descriptor = VariablesTable_GetByName(accelCalibData->externTable, nameFiled, strlen(nameFiled));
memcpy(descriptor->addr, &accelCalibData->flipDetect->current.value.y,
sizeof(accelCalibData->flipDetect->current.value.y));
nameFiled = "FLIP_DETECT_GRAVITY_Z";
descriptor = VariablesTable_GetByName(accelCalibData->externTable, nameFiled, strlen(nameFiled));
memcpy(descriptor->addr, &accelCalibData->flipDetect->current.value.z,
sizeof(accelCalibData->flipDetect->current.value.z));
VariablesTable_VariableChanged(accelCalibData->externTable, descriptor);
VariablesTable_ReleaseChange(accelCalibData->externTable);
//осовбождаем доступ к измененению настроек
VariablesTable_ReleaseChange(accelCalibData->externTable);
return true;
} else {
//осовбождаем доступ к измененению настроек
VariablesTable_ReleaseChange(accelCalibData->externTable);
return true;
}
}
uint8_t recordAngle(tAccelCalibData *accelCalibData) {
char *nameFiled;
tVariableDescriptor *descriptor;
if (VariablesTable_RequireChange(accelCalibData->externTable, 10)) {
nameFiled = "FLIP_DETECT_TRESHOLD_ANGLE_COS";
descriptor = VariablesTable_GetByName(accelCalibData->externTable, nameFiled, strlen(nameFiled));
memcpy(descriptor->addr, &accelCalibData->angleCos, sizeof(accelCalibData->angleCos));
VariablesTable_VariableChanged(accelCalibData->externTable, descriptor);
//осовбождаем доступ к измененению настроек
VariablesTable_ReleaseChange(accelCalibData->externTable);
return true;
} else {
//осовбождаем доступ к измененению настроек
VariablesTable_ReleaseChange(accelCalibData->externTable);
return true;
}
}
uint8_t XfcProtMethod_AccelCalibration(tXfcArray *request, tXfcArray *response, tAccelCalibData *accelCalibData) {
recordVector(accelCalibData);
// recordAngle(accelCalibData);
return XFC_TRANSPORT_PROTOCOL_RESPONSE_RESULT_OK;
}