Skip to content

Commit a1ef32c

Browse files
committed
console allow using config id
1 parent 91cee8e commit a1ef32c

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

src/console.c

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -321,14 +321,25 @@ static void print_meow(void)
321321
printk("%s%s%s\n", meows[meow], meow_punctuations[punctuation], meow_suffixes[suffix]);
322322
}
323323

324+
static int32_t parse_config_settings_id(char *s)
325+
{
326+
int32_t id = parse_i32(s, 10);
327+
uint8_t buf[12];
328+
snprintk(buf, 12, "%d", id);
329+
if (strcmp(buf, s) != 0)
330+
return -1;
331+
return id;
332+
}
333+
324334
static int parse_config_settings_write(char *s, int32_t v)
325335
{
336+
int32_t id = parse_config_settings_id(s);
326337
uint16_t k = 0;
327338
for (int i = 0; i < CONFIG_SETTINGS_COUNT; i++)
328339
{
329340
for (int j = 0; j < config_settings_count[i]; j++)
330341
{
331-
if (strcmp(s, config_settings_names[k]) == 0)
342+
if (id < 0 ? strcmp(s, config_settings_names[k]) == 0 : id == k)
332343
{
333344
switch (i)
334345
{
@@ -359,18 +370,19 @@ static int parse_config_settings_write(char *s, int32_t v)
359370
k++;
360371
}
361372
}
362-
printk("Invalid config name\n");
373+
printk("Invalid config name or id\n");
363374
return -1;
364375
}
365376

366377
static void parse_config_settings_read(char *s)
367378
{
379+
int32_t id = parse_config_settings_id(s);
368380
uint16_t k = 0;
369381
for (int i = 0; i < CONFIG_SETTINGS_COUNT; i++)
370382
{
371383
for (int j = 0; j < config_settings_count[i]; j++)
372384
{
373-
if (strcmp(s, config_settings_names[k]) == 0)
385+
if (id < 0 ? strcmp(s, config_settings_names[k]) == 0 : id == k)
374386
{
375387
int32_t val = -1;
376388
switch (i)
@@ -396,25 +408,26 @@ static void parse_config_settings_read(char *s)
396408
k++;
397409
}
398410
}
399-
printk("Invalid config name\n");
411+
printk("Invalid config name or id\n");
400412
}
401413

402414
static int parse_config_settings_reset(char *s)
403415
{
416+
int32_t id = parse_config_settings_id(s);
404417
uint16_t k = 0;
405418
for (int i = 0; i < CONFIG_SETTINGS_COUNT; i++)
406419
{
407420
for (int j = 0; j < config_settings_count[i]; j++)
408421
{
409-
if (strcmp(s, config_settings_names[k]) == 0)
422+
if (id < 0 ? strcmp(s, config_settings_names[k]) == 0 : id == k)
410423
{
411424
config_settings_reset(i, j);
412425
return 0;
413426
}
414427
k++;
415428
}
416429
}
417-
printk("Invalid config name\n");
430+
printk("Invalid config name or id\n");
418431
return -1;
419432
}
420433

@@ -622,7 +635,7 @@ static void console_thread(void)
622635
printk("Config %d:\n", i);
623636
for (int j = 0; j < config_settings_count[i]; j++)
624637
{
625-
printk("%s\n", config_settings_names[k]);
638+
printk("%u: %s\n", k, config_settings_names[k]);
626639
k++;
627640
}
628641
}

0 commit comments

Comments
 (0)