// // 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; }