Merge pull request #1598 from blckmn/resource_feedback
Adding resource feedback upon setting (if duplication of pin)
This commit is contained in:
commit
cb8e8b60ab
|
@ -998,6 +998,14 @@ static void cliWrite(uint8_t ch);
|
|||
static bool cliDumpPrintf(uint8_t dumpMask, bool equalsDefault, const char *format, ...);
|
||||
static bool cliDefaultPrintf(uint8_t dumpMask, bool equalsDefault, const char *format, ...);
|
||||
|
||||
static void cliBreak(const char *str, uint8_t len)
|
||||
{
|
||||
for (int i = 0; i < len; i++) {
|
||||
cliPrint(str);
|
||||
}
|
||||
cliPrint("\r\n");
|
||||
}
|
||||
|
||||
static void cliPrompt(void)
|
||||
{
|
||||
cliPrint("\r\n# ");
|
||||
|
@ -3835,6 +3843,25 @@ static void printResource(uint8_t dumpMask, master_t *defaultConfig)
|
|||
}
|
||||
}
|
||||
|
||||
#ifndef CLI_MINIMAL_VERBOSITY
|
||||
static void resourceCheck(uint8_t resourceIndex, uint8_t index, ioTag_t tag)
|
||||
{
|
||||
for (int r = 0; r < (int)ARRAYLEN(resourceTable); r++) {
|
||||
for (int i = 0; i < (resourceTable[r].maxIndex == 0 ? 1 : resourceTable[r].maxIndex); i++) {
|
||||
if (*(resourceTable[r].ptr + i) == tag) {
|
||||
if (r == resourceIndex && i == index) {
|
||||
continue;
|
||||
}
|
||||
cliPrintf("\r\n* WARNING * %c%d also used by %s", DEFIO_TAG_GPIOID(tag) + 'A', DEFIO_TAG_PIN(tag), ownerNames[resourceTable[r].owner]);
|
||||
if (resourceTable[r].maxIndex > 0) {
|
||||
cliPrintf(" %d", RESOURCE_INDEX(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static void cliResource(char *cmdline)
|
||||
{
|
||||
int len = strlen(cmdline);
|
||||
|
@ -3845,7 +3872,8 @@ static void cliResource(char *cmdline)
|
|||
return;
|
||||
} else if (strncasecmp(cmdline, "list", len) == 0) {
|
||||
#ifndef CLI_MINIMAL_VERBOSITY
|
||||
cliPrintf("Currently active IO resource assignments:\r\n(reboot to update)\r\n----------------------\r\n");
|
||||
cliPrintf("Currently active IO resource assignments:\r\n(reboot to update)\r\n");
|
||||
cliBreak("-", 20);
|
||||
#endif
|
||||
for (int i = 0; i < DEFIO_IO_USED_COUNT; i++) {
|
||||
const char* owner;
|
||||
|
@ -3859,6 +3887,7 @@ static void cliResource(char *cmdline)
|
|||
}
|
||||
|
||||
cliPrintf("\r\n\r\nCurrently active DMA:\r\n");
|
||||
cliBreak("-", 20);
|
||||
for (int i = 0; i < DMA_MAX_DESCRIPTORS; i++) {
|
||||
const char* owner;
|
||||
owner = ownerNames[dmaGetOwner(i)];
|
||||
|
@ -3913,7 +3942,7 @@ static void cliResource(char *cmdline)
|
|||
if (strlen(pch) > 0) {
|
||||
if (strcasecmp(pch, "NONE") == 0) {
|
||||
*tag = IO_TAG_NONE;
|
||||
cliPrintf("Resource is freed!");
|
||||
cliPrintf("Resource is freed!\r\n");
|
||||
return;
|
||||
} else {
|
||||
uint8_t port = (*pch) - 'A';
|
||||
|
@ -3928,9 +3957,14 @@ static void cliResource(char *cmdline)
|
|||
ioRec_t *rec = IO_Rec(IOGetByTag(DEFIO_TAG_MAKE(port, pin)));
|
||||
if (rec) {
|
||||
*tag = DEFIO_TAG_MAKE(port, pin);
|
||||
cliPrintf("Resource is set to %c%02d!", port + 'A', pin);
|
||||
#ifndef CLI_MINIMAL_VERBOSITY
|
||||
cliPrintf("Resource is set to %c%02d!\r\n", port + 'A', pin);
|
||||
resourceCheck(resourceIndex, index, DEFIO_TAG_MAKE(port, pin));
|
||||
#else
|
||||
cliPrintf("Set to %c%02d!", port + 'A', pin);
|
||||
#endif
|
||||
} else {
|
||||
cliPrintf("Resource is invalid!");
|
||||
cliPrintf("Resource is invalid!\r\n");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue