This commit is contained in:
cfif 2025-06-02 13:26:40 +03:00
commit 417bae019b
3 changed files with 133 additions and 0 deletions

View File

@ -0,0 +1,30 @@
//
// Created by zemon on 10.04.23.
//
#ifndef UVEOS_ON_NATION_ACCELCALIBRATION_H
#define UVEOS_ON_NATION_ACCELCALIBRATION_H
#include "VersionsInfoTable.h"
#include "XfcProtProcessorUtilDefines.h"
#include "VariablesTable.h"
#include "CarFlipDetection.h"
typedef struct {
tVariablesTable *externTable;
tCarFlipDetection *flipDetect;
float val_x;
float val_y;
float val_z;
float angleCos;
} tAccelCalibData;
void XfcProtMethodsAdd_AccelCalibration(tXfcProtTable *protTab, tAccelCalibData *accelCalibData);
void XfcProtMethodsInit_AccelCalibration(tAccelCalibData *env, tCarFlipDetection *carFlipDetection, tVariablesTable *varsTab);
uint8_t XfcProtMethod_AccelCalibration(tXfcArray *request, tXfcArray *response, tAccelCalibData *accelCalibData);
#endif //UVEOS_ON_NATION_ACCELCALIBRATION_H

View File

@ -0,0 +1,81 @@
//
// 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;
}

22
modular.json Normal file
View File

@ -0,0 +1,22 @@
{
"dep": [
{
"type": "git",
"provider": "Smart_Components_Aurus",
"repo": "XfcTransportProtocol"
},
{
"type": "git",
"provider": "Smart_Components_Aurus",
"repo": "BaseTypes"
}
],
"cmake": {
"inc_dirs": [
"Inc"
],
"srcs": [
"Src/**.c"
]
}
}