Init
This commit is contained in:
commit
c5cf618b43
|
|
@ -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
|
||||
|
|
@ -0,0 +1,95 @@
|
|||
//
|
||||
// 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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"dep": [
|
||||
{
|
||||
"type": "git",
|
||||
"provider": "NAVIGATOR_UVEOS_NATION_TELIT",
|
||||
"repo": "XfcTransportProtocol"
|
||||
},
|
||||
{
|
||||
"type": "git",
|
||||
"provider": "NAVIGATOR_UVEOS_NATION_TELIT",
|
||||
"repo": "BaseTypes"
|
||||
}
|
||||
],
|
||||
"cmake": {
|
||||
"inc_dirs": [
|
||||
"Inc"
|
||||
],
|
||||
"srcs": [
|
||||
"Src/**.c"
|
||||
]
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue