82 lines
2.8 KiB
C
82 lines
2.8 KiB
C
//
|
|
// 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;
|
|
} |