96 lines
3.2 KiB
C
96 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;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|