From 417bae019b1b24c8d07b14a0ea45f8910b81bf96 Mon Sep 17 00:00:00 2001 From: cfif Date: Mon, 2 Jun 2025 13:26:40 +0300 Subject: [PATCH] Init --- Inc/ComIntCmd/AccelCalibration.h | 30 ++++++++++++ Src/ComIntCmd/AccelCalibration.c | 81 ++++++++++++++++++++++++++++++++ modular.json | 22 +++++++++ 3 files changed, 133 insertions(+) create mode 100644 Inc/ComIntCmd/AccelCalibration.h create mode 100644 Src/ComIntCmd/AccelCalibration.c create mode 100644 modular.json diff --git a/Inc/ComIntCmd/AccelCalibration.h b/Inc/ComIntCmd/AccelCalibration.h new file mode 100644 index 0000000..fe454db --- /dev/null +++ b/Inc/ComIntCmd/AccelCalibration.h @@ -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 diff --git a/Src/ComIntCmd/AccelCalibration.c b/Src/ComIntCmd/AccelCalibration.c new file mode 100644 index 0000000..088316f --- /dev/null +++ b/Src/ComIntCmd/AccelCalibration.c @@ -0,0 +1,81 @@ +// +// Created by zemon on 10.04.23. +// + +#include +#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; +} diff --git a/modular.json b/modular.json new file mode 100644 index 0000000..370f879 --- /dev/null +++ b/modular.json @@ -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" + ] + } +} \ No newline at end of file