Init
This commit is contained in:
commit
5987a72c79
|
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// Created by zemon on 17.11.22.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef UVEOS_ON_NATION_CLIVARS_H
|
||||||
|
#define UVEOS_ON_NATION_CLIVARS_H
|
||||||
|
|
||||||
|
#include "CliCmd.h"
|
||||||
|
#include "VariablesTable.h"
|
||||||
|
|
||||||
|
int32_t vGetVarsTableSetting(tVariablesTable *extTable, tCliCmd *cli);
|
||||||
|
|
||||||
|
int32_t vSetVarTableSetting(tVariablesTable *extTable, tCliCmd *cli);
|
||||||
|
|
||||||
|
int32_t CliCmd_VarsHelp(tCliCmd *cli);
|
||||||
|
|
||||||
|
int32_t CliCmd_ChangeListVar(tVariablesTable *varTable, tCliCmd *cli);
|
||||||
|
|
||||||
|
#endif //UVEOS_ON_NATION_CLIVARS_H
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
//
|
||||||
|
// Created by zemon on 15.11.22.
|
||||||
|
//
|
||||||
|
#include "CliCmd/Vars.h"
|
||||||
|
#include "stream.h"
|
||||||
|
|
||||||
|
int32_t vGetVarsTableSetting(tVariablesTable *extTable, tCliCmd *cli) {
|
||||||
|
|
||||||
|
for (uint16_t id = 0; id < extTable->count; ++id) {
|
||||||
|
CliCmd_Print(cli, extTable->items[id].name.str, extTable->items[id].name.length);
|
||||||
|
CliCmd_PrintStatic(cli, " ");
|
||||||
|
tVariableDescriptor *descriptor = extTable->items + id;
|
||||||
|
|
||||||
|
if (descriptor->typeId == VARIABLE_TYPE_STRING) {
|
||||||
|
CliCmd_Print(cli, descriptor->addr, *(uint8_t *) descriptor->len);
|
||||||
|
} else {
|
||||||
|
if (extTable->items[id].typeId == VARIABLE_TYPE_UINT8) {
|
||||||
|
debug_printf(cli->serialCommandPort, "%u", *(uint8_t *) extTable->items[id].addr);
|
||||||
|
}
|
||||||
|
if (extTable->items[id].typeId == VARIABLE_TYPE_UINT16) {
|
||||||
|
debug_printf(cli->serialCommandPort, "%u", *(uint16_t *) extTable->items[id].addr);
|
||||||
|
}
|
||||||
|
if (extTable->items[id].typeId == VARIABLE_TYPE_UINT32) {
|
||||||
|
debug_printf(cli->serialCommandPort, "%u", *(uint8_t *) extTable->items[id].addr);
|
||||||
|
}
|
||||||
|
if (extTable->items[id].typeId == VARIABLE_TYPE_BOOL) {
|
||||||
|
debug_printf(cli->serialCommandPort, "%u", *(uint8_t *) extTable->items[id].addr);
|
||||||
|
}
|
||||||
|
if (extTable->items[id].typeId == VARIABLE_TYPE_FLOAT32) {
|
||||||
|
debug_printf(cli->serialCommandPort, "%f", *(float *) extTable->items[id].addr);
|
||||||
|
}
|
||||||
|
if (!VariablesTable_IsVariableChangeAllowed(descriptor)) {
|
||||||
|
CliCmd_PrintStatic(cli, " === CHANGE NOT ACCESS ===");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CliCmd_PrintLnStatic(cli, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
CliCmd_PrintLnStatic(cli, "================================================");
|
||||||
|
CliCmd_PrintLnStatic(cli, "");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,151 @@
|
||||||
|
//
|
||||||
|
// Created by zemon on 16.11.22.
|
||||||
|
//
|
||||||
|
#include "CliCmd/Vars.h"
|
||||||
|
#include "freertos_os2.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
|
||||||
|
uint8_t charToInt16(uint16_t *val, const char *source, uint8_t len) {
|
||||||
|
unsigned long R = 0;
|
||||||
|
uint16_t readed;
|
||||||
|
uint8_t ret = 0, bad = 0, i = 0;
|
||||||
|
while (i < len) {
|
||||||
|
|
||||||
|
if (source[i] < '0' || source[i] > '9') break;
|
||||||
|
ret = 1;
|
||||||
|
R = R * 10L + source[i] - '0';
|
||||||
|
if (R > 0xffff) {
|
||||||
|
R = 0;
|
||||||
|
bad = 1;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
if (bad || !ret) return 0;
|
||||||
|
readed = (uint16_t) R;
|
||||||
|
*val = readed;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t testIsWriteData(tVariableDescriptor *descriptor, tVariablesTable *extTable) {
|
||||||
|
//проверяем можно ли ее писать (если есть счетчик разрешения записи то не пустой ли он)
|
||||||
|
if (VariablesTable_IsVariableChangeAllowed(descriptor)) {
|
||||||
|
//запрашиваем доступ на изменение настроек
|
||||||
|
if (VariablesTable_RequireChange(extTable, 10)) {
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void saveChenge(tCliCmd *cli, tVariableDescriptor *descriptor, tVariablesTable *extTable) {
|
||||||
|
VariablesTable_VariableChanged(extTable, descriptor);
|
||||||
|
VariablesTable_ReleaseChange(extTable);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t vSetVarTableSetting(tVariablesTable *extTable, tCliCmd *cli) {
|
||||||
|
char *paramVale = "";
|
||||||
|
|
||||||
|
for (uint16_t id = 0; id < extTable->count; ++id) {
|
||||||
|
|
||||||
|
if (CliCmd_RxStartsWith(
|
||||||
|
cli,
|
||||||
|
extTable->items[id].name.str,
|
||||||
|
extTable->items[id].name.length
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
|
||||||
|
CliCmd_RxSkip(cli, extTable->items[id].name.length);
|
||||||
|
CliCmd_RxSkipSpace(cli);
|
||||||
|
|
||||||
|
paramVale = cli->rxLine.begin;
|
||||||
|
tVariableDescriptor *descriptor = extTable->items + id;
|
||||||
|
|
||||||
|
switch (testIsWriteData(descriptor, extTable)) {
|
||||||
|
case 0: {
|
||||||
|
switch (descriptor->typeId) {
|
||||||
|
case VARIABLE_TYPE_STRING: {
|
||||||
|
uint8_t len = (CliCmd_RxLineLength(cli)) - 2;
|
||||||
|
memcpy(descriptor->addr, CliCmd_RxLineBegin(cli), len);
|
||||||
|
*((uint8_t *) descriptor->len) = len;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VARIABLE_TYPE_UINT8: {
|
||||||
|
uint8_t data = (uint8_t) atoi(paramVale);
|
||||||
|
memcpy(descriptor->addr, &data, sizeof(data));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VARIABLE_TYPE_UINT16: {
|
||||||
|
uint16_t data;
|
||||||
|
if (charToInt16(&data, paramVale, strlen(paramVale))) {
|
||||||
|
memcpy(descriptor->addr, &data, sizeof(data));
|
||||||
|
} else {
|
||||||
|
CliCmd_PrintLnStatic(cli, "CONVERSATION FAILED, FORMAT DATA ERROR");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VARIABLE_TYPE_INT32: {
|
||||||
|
uint32_t data = (uint32_t) atoi(paramVale);
|
||||||
|
memcpy(descriptor->addr, &data, sizeof(data));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VARIABLE_TYPE_BOOL: {
|
||||||
|
uint8_t data;
|
||||||
|
if ((strstr(paramVale, "TRUE")) || (strstr(paramVale, "1"))) {
|
||||||
|
data = 1;
|
||||||
|
}
|
||||||
|
if ((strstr(paramVale, "FALSE")) || (strstr(paramVale, "0"))) {
|
||||||
|
data = 0;
|
||||||
|
}
|
||||||
|
memcpy(descriptor->addr, &data, sizeof(data));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VARIABLE_TYPE_FLOAT32: {
|
||||||
|
float data = atof(paramVale);
|
||||||
|
memcpy(descriptor->addr, &data, sizeof(data));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
CliCmd_PrintStatic(cli, "Unidentified error!");
|
||||||
|
}
|
||||||
|
|
||||||
|
CliCmd_PrintLnStatic(cli, "Save setting? (Yes/No)");
|
||||||
|
CliCmd_WaitLine(cli);
|
||||||
|
if (CliCmd_RxStartsWithStatic(cli, "Yes")) {
|
||||||
|
saveChenge(cli, descriptor, extTable);
|
||||||
|
CliCmd_PrintLnStatic(cli, "Setting is success full");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case 1: {
|
||||||
|
CliCmd_PrintLnStatic(cli, "Access deniedted");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case 2: {
|
||||||
|
CliCmd_PrintLnStatic(cli, "Temporarily unavailable ");
|
||||||
|
//осовбождаем доступ к измененению настроек
|
||||||
|
VariablesTable_ReleaseChange(extTable);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
CliCmd_PrintStatic(cli, "Unidentified error!");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,82 @@
|
||||||
|
//
|
||||||
|
// Created by zemon on 15.11.22.
|
||||||
|
//
|
||||||
|
#include "CliCmd/Vars.h"
|
||||||
|
|
||||||
|
static const uint8_t nameAlign = 16;
|
||||||
|
|
||||||
|
static char space[] = " ";
|
||||||
|
|
||||||
|
static void CliCmd_Vars_printDeskName(tVariableDescriptor *descriptor, tCliCmd *cli) {
|
||||||
|
if (descriptor->name.length > nameAlign) {
|
||||||
|
CliCmd_Print(cli, descriptor->name.str, descriptor->name.length);
|
||||||
|
} else {
|
||||||
|
CliCmd_PrintFormat(cli, "%.*s%.*s",
|
||||||
|
descriptor->name.length,
|
||||||
|
descriptor->name.str,
|
||||||
|
nameAlign - descriptor->name.length,
|
||||||
|
space
|
||||||
|
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
CliCmd_PrintStatic(cli, "\t");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void CliCmd_Vars_printDeskValue(tVariableDescriptor *descriptor, tCliCmd *cli) {
|
||||||
|
|
||||||
|
if (!VariablesTable_IsVariableChangeAllowed(descriptor)) {
|
||||||
|
CliCmd_PrintStatic(cli, "# ");
|
||||||
|
} else {
|
||||||
|
CliCmd_PrintStatic(cli, " ");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (descriptor->typeId == VARIABLE_TYPE_STRING) {
|
||||||
|
CliCmd_Print(cli, descriptor->addr, *(uint8_t *) descriptor->len);
|
||||||
|
} else {
|
||||||
|
if (descriptor->typeId == VARIABLE_TYPE_UINT8) {
|
||||||
|
CliCmd_PrintFormat(cli, "%u", *(uint8_t *) descriptor->addr);
|
||||||
|
}
|
||||||
|
if (descriptor->typeId == VARIABLE_TYPE_UINT16) {
|
||||||
|
CliCmd_PrintFormat(cli, "%u", *(uint16_t *) descriptor->addr);
|
||||||
|
}
|
||||||
|
if (descriptor->typeId == VARIABLE_TYPE_UINT32) {
|
||||||
|
CliCmd_PrintFormat(cli, "%i", *(uint32_t *) descriptor->addr);
|
||||||
|
}
|
||||||
|
if (descriptor->typeId == VARIABLE_TYPE_BOOL) {
|
||||||
|
CliCmd_PrintFormat(cli, "%u", *(uint8_t *) descriptor->addr);
|
||||||
|
}
|
||||||
|
if (descriptor->typeId == VARIABLE_TYPE_FLOAT32) {
|
||||||
|
CliCmd_PrintFormat(cli, "%f", *(float *) descriptor->addr);
|
||||||
|
}
|
||||||
|
if (descriptor->typeId == VARIABLE_TYPE_ARR_U8_STATIC) {
|
||||||
|
uint8_t *beg = descriptor->addr;
|
||||||
|
uint8_t *end = beg + ((uint32_t) descriptor->len);
|
||||||
|
for (uint8_t *elem = beg; elem < end; elem++) {
|
||||||
|
if (elem != beg) {
|
||||||
|
CliCmd_PrintStatic(cli, " ");
|
||||||
|
}
|
||||||
|
CliCmd_PrintFormat(cli, "%u", *elem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CliCmd_Vars_printDesk(tVariableDescriptor *desk, tCliCmd *cli) {
|
||||||
|
CliCmd_Vars_printDeskName(desk, cli);
|
||||||
|
CliCmd_Vars_printDeskValue(desk, cli);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t CliCmd_Vars_listVariables(tVariablesTable *extTable, tCliCmd *cli) {
|
||||||
|
CliCmd_PrintLnStatic(cli, "==============================VARS==============================");
|
||||||
|
|
||||||
|
for (uint16_t id = 0; id < extTable->count; ++id) {
|
||||||
|
CliCmd_Vars_printDesk(extTable->items + id, cli);
|
||||||
|
CliCmd_PrintLnStatic(cli, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
CliCmd_PrintLnStatic(cli, "================================================================");
|
||||||
|
CliCmd_PrintLnStatic(cli, "");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
//
|
||||||
|
// Created by xemon on 22.12.22.
|
||||||
|
//
|
||||||
|
#include "CliCmd/Vars.h"
|
||||||
|
|
||||||
|
int32_t CliCmd_VarsHelp(tCliCmd *cli) {
|
||||||
|
CliCmd_PrintLnStatic(cli, " access sub commands:");
|
||||||
|
CliCmd_PrintLnStatic(cli, " command [ ls ]- listing all access variable and values");
|
||||||
|
CliCmd_PrintLnStatic(cli, " command [ set ] - set variable values");
|
||||||
|
CliCmd_PrintLnStatic(cli, " syntaxis: [command] [VARIABLE_NAME] [VARIABLE_VALUE]");
|
||||||
|
CliCmd_PrintLnStatic(cli, " command [ help ] - help this as sub mode");
|
||||||
|
CliCmd_PrintLnStatic(cli, " command [ exit ] - exit as this sub mode");
|
||||||
|
CliCmd_PrintLnStatic(cli, "");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
//
|
||||||
|
// Created by xemon on 22.12.22.
|
||||||
|
//
|
||||||
|
#include "CliCmd/Vars.h"
|
||||||
|
|
||||||
|
|
||||||
|
int32_t CliCmd_ChangeListVar(tVariablesTable *varTable, tCliCmd *cli) {
|
||||||
|
CliCmd_PrintLnStatic(cli, "THIS MODE CHANG BASE VARIABLE");
|
||||||
|
CliCmd_VarsHelp(cli);
|
||||||
|
while (1) {
|
||||||
|
|
||||||
|
CliCmd_WaitLine(cli);
|
||||||
|
|
||||||
|
if (CliCmd_RxStartsWithStatic(cli, "ls")) {
|
||||||
|
vGetVarsTableSetting(varTable, cli);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CliCmd_RxStartsWithStatic(cli, "set")) {
|
||||||
|
CliCmd_PrintLnStatic(cli, "set");
|
||||||
|
CliCmd_RxSkip(cli, sizeof("set"));
|
||||||
|
vSetVarTableSetting(varTable, cli);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CliCmd_RxStartsWithStatic(cli, "exit")) {
|
||||||
|
CliCmd_PrintLnStatic(cli, "EXIT IN BASE MODE...");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CliCmd_RxStartsWithStatic(cli, "help")) {
|
||||||
|
CliCmd_VarsHelp(cli);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,146 @@
|
||||||
|
//
|
||||||
|
// Created by zemon on 16.11.22.
|
||||||
|
//
|
||||||
|
#include "CliCmd/Vars.h"
|
||||||
|
#include "freertos_os2.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
|
||||||
|
static uint8_t charToInt16(uint16_t *val, const char *source, uint8_t len) {
|
||||||
|
unsigned long R = 0;
|
||||||
|
uint16_t readed;
|
||||||
|
uint8_t ret = 0, bad = 0, i = 0;
|
||||||
|
while (i < len) {
|
||||||
|
|
||||||
|
if (source[i] < '0' || source[i] > '9') break;
|
||||||
|
ret = 1;
|
||||||
|
R = R * 10L + source[i] - '0';
|
||||||
|
if (R > 0xffff) {
|
||||||
|
R = 0;
|
||||||
|
bad = 1;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
if (bad || !ret) return 0;
|
||||||
|
readed = (uint16_t) R;
|
||||||
|
*val = readed;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static bool CliCmd_Vars_setDesk(tVariableDescriptor *descriptor, tCliCmd *cli) {
|
||||||
|
switch (descriptor->typeId) {
|
||||||
|
case VARIABLE_TYPE_STRING: {
|
||||||
|
uint8_t len = (CliCmd_RxLineLength(cli)) - 2;
|
||||||
|
memcpy(descriptor->addr, CliCmd_RxLineBegin(cli), len);
|
||||||
|
*((uint8_t *) descriptor->len) = len;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VARIABLE_TYPE_UINT8: {
|
||||||
|
uint8_t data = (uint8_t) atoi(CliCmd_RxLineBegin(cli));
|
||||||
|
memcpy(descriptor->addr, &data, sizeof(data));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VARIABLE_TYPE_UINT16: {
|
||||||
|
uint16_t data;
|
||||||
|
if (charToInt16(&data, CliCmd_RxLineBegin(cli), strlen(CliCmd_RxLineBegin(cli)))) {
|
||||||
|
memcpy(descriptor->addr, &data, sizeof(data));
|
||||||
|
} else {
|
||||||
|
CliCmd_PrintLnStatic(cli, "CONVERSATION FAILED, FORMAT DATA ERROR");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VARIABLE_TYPE_UINT32: {
|
||||||
|
uint32_t data = (uint32_t) atoi(CliCmd_RxLineBegin(cli));
|
||||||
|
memcpy(descriptor->addr, &data, sizeof(data));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VARIABLE_TYPE_INT32: {
|
||||||
|
int32_t data = (int32_t) atoi(CliCmd_RxLineBegin(cli));
|
||||||
|
memcpy(descriptor->addr, &data, sizeof(data));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VARIABLE_TYPE_BOOL: {
|
||||||
|
uint8_t data;
|
||||||
|
if ((strstr(CliCmd_RxLineBegin(cli), "TRUE")) || (strstr(CliCmd_RxLineBegin(cli), "1"))) {
|
||||||
|
data = 1;
|
||||||
|
}
|
||||||
|
if ((strstr(CliCmd_RxLineBegin(cli), "FALSE")) || (strstr(CliCmd_RxLineBegin(cli), "0"))) {
|
||||||
|
data = 0;
|
||||||
|
}
|
||||||
|
memcpy(descriptor->addr, &data, sizeof(data));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VARIABLE_TYPE_FLOAT32: {
|
||||||
|
float data = atof(CliCmd_RxLineBegin(cli));
|
||||||
|
memcpy(descriptor->addr, &data, sizeof(data));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case VARIABLE_TYPE_ARR_U8_STATIC: {
|
||||||
|
uint8_t len = (uint32_t) descriptor->len;
|
||||||
|
uint8_t *item = (uint8_t *) descriptor->addr;
|
||||||
|
uint8_t *end = item + len;
|
||||||
|
for (; item < end; ++item) {
|
||||||
|
*item = (uint8_t) atoi(CliCmd_RxLineBegin(cli));
|
||||||
|
CliCmd_RxSkipToNextWord(cli);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t CliCmd_Vars_setVariable(tVariablesTable *extTable, tCliCmd *cli) {
|
||||||
|
|
||||||
|
tVariableDescriptor *desc = VariablesTable_GetByName(
|
||||||
|
extTable,
|
||||||
|
CliCmd_RxLineBegin(cli),
|
||||||
|
CliCmd_RxFirstWordLen(cli)
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!desc) {
|
||||||
|
CliCmd_PrintLnStatic(cli, "no var with this name");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//проверяем можно ли ее писать (если есть счетчик разрешения записи то не пустой ли он)
|
||||||
|
if (!VariablesTable_IsVariableChangeAllowed(desc)) {
|
||||||
|
CliCmd_PrintLnStatic(cli, "access deniedted");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
CliCmd_RxSkipToNextWord(cli);
|
||||||
|
|
||||||
|
//запрашиваем доступ на изменение настроек
|
||||||
|
if (!VariablesTable_RequireChange(extTable, 10)) {
|
||||||
|
CliCmd_PrintLnStatic(cli, "temporarily unavailable ");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool changeResult = CliCmd_Vars_setDesk(desc, cli);
|
||||||
|
|
||||||
|
//сообщаем об изменении
|
||||||
|
VariablesTable_VariableChanged(extTable, desc);
|
||||||
|
//и обязательно закрываем сессию редактирования(возвращаем mutex)
|
||||||
|
VariablesTable_ReleaseChange(extTable);
|
||||||
|
|
||||||
|
if (changeResult) {
|
||||||
|
CliCmd_PrintStatic(cli, "changes ok: ");
|
||||||
|
} else {
|
||||||
|
CliCmd_PrintStatic(cli, "error, value: ");
|
||||||
|
}
|
||||||
|
|
||||||
|
CliCmd_Vars_printDesk(desc, cli);
|
||||||
|
CliCmd_PrintLnStatic(cli, "");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"dep": [
|
||||||
|
{
|
||||||
|
"type": "git",
|
||||||
|
"provider": "Smart_Components_Aurus",
|
||||||
|
"repo": "CmsisCore5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "git",
|
||||||
|
"provider": "Smart_Components_Aurus",
|
||||||
|
"repo": "CliCmd"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"cmake": {
|
||||||
|
"inc_dirs": [
|
||||||
|
"Inc"
|
||||||
|
],
|
||||||
|
"srcs": [
|
||||||
|
"Src/**.c"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue