mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-25 19:56:30 +00:00
Refactor command line arguments
This commit is contained in:
parent
f43c098158
commit
a4e8b9d681
@ -253,7 +253,7 @@ uint32_t ChrCount(const char *str, const char *delim) {
|
||||
}
|
||||
|
||||
uint32_t ArgC(void) {
|
||||
return ChrCount(XdrvMailbox.data, ",") +1;
|
||||
return (XdrvMailbox.data_len > 0) ? ChrCount(XdrvMailbox.data, ",") +1 : 0;
|
||||
}
|
||||
|
||||
// Function to return a substring defined by a delimiter at an index
|
||||
@ -280,8 +280,25 @@ char* ArgV(char* dest, int index) {
|
||||
return subStr(dest, XdrvMailbox.data, ",", index);
|
||||
}
|
||||
|
||||
uint32_t ParseParameters(uint32_t count, uint32_t *params)
|
||||
{
|
||||
uint32_t ArgVul(uint32_t *args, uint32_t count) {
|
||||
uint32_t argc = ArgC();
|
||||
if (argc > count) { argc = count; }
|
||||
count = argc;
|
||||
if (argc) {
|
||||
char argument[XdrvMailbox.data_len];
|
||||
for (uint32_t i = 0; i < argc; i++) {
|
||||
if (strlen(ArgV(argument, i +1))) {
|
||||
args[i] = strtoul(argument, nullptr, 0);
|
||||
} else {
|
||||
count--;
|
||||
}
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
uint32_t ParseParameters(uint32_t count, uint32_t *params) {
|
||||
// Destroys XdrvMailbox.data
|
||||
char *p;
|
||||
uint32_t i = 0;
|
||||
for (char *str = strtok_r(XdrvMailbox.data, ", ", &p); str && i < count; str = strtok_r(nullptr, ", ", &p), i++) {
|
||||
|
@ -201,11 +201,13 @@ void CmndBuzzer(void) {
|
||||
if (XdrvMailbox.data_len > 0) {
|
||||
if (XdrvMailbox.payload != 0) {
|
||||
uint32_t parm[4] = { 0 };
|
||||
uint32_t mode = 0;
|
||||
ParseParameters(4, parm);
|
||||
if (XdrvMailbox.payload <= 0) {
|
||||
uint32_t mode = 0;
|
||||
if (XdrvMailbox.payload < 0) {
|
||||
parm[0] = 1; // Default Count
|
||||
mode = -XdrvMailbox.payload; // 0, 1 or 2
|
||||
if (XdrvMailbox.payload > -3) {
|
||||
mode = -XdrvMailbox.payload; // 0, 1 or 2
|
||||
}
|
||||
}
|
||||
for (uint32_t i = 1; i < 3; i++) {
|
||||
if (parm[i] < 1) { parm[i] = 1; } // Default On time, Off time
|
||||
|
Loading…
x
Reference in New Issue
Block a user