mirror of
https://github.com/FunKey-Project/fkgpiod.git
synced 2025-12-12 07:58:50 +01:00
add SAVE command
Signed-off-by: Michel-FK <michel.stempin@funkey-project.com>
This commit is contained in:
parent
8d635370a0
commit
ade0faf098
@ -297,3 +297,48 @@ void dump_mapping_list(mapping_list_t *list)
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
|
||||
/* Save a mapping */
|
||||
void save_mapping(mapping_t *mapping)
|
||||
{
|
||||
int i, length;
|
||||
uint32_t gpio_mask;
|
||||
|
||||
printf("MAP ");
|
||||
for (i = 0, length = 0, gpio_mask = mapping->gpio_mask; i < MAX_NUM_GPIO;
|
||||
i++, gpio_mask >>= 1) {
|
||||
if (gpio_mask & 1) {
|
||||
printf("%s%s", gpio_name(i), gpio_mask == 1 ? " " : "+");
|
||||
length += strlen(gpio_name(i)) + 1;
|
||||
}
|
||||
}
|
||||
for (i = 9 - length; i > 0; i--) {
|
||||
printf(" ");
|
||||
}
|
||||
switch (mapping->type) {
|
||||
case MAPPING_COMMAND:
|
||||
printf("TO COMMAND %s\n", mapping->value.command);
|
||||
break;
|
||||
|
||||
case MAPPING_KEY:
|
||||
printf("TO KEY %s\n", keycode_name(mapping->value.keycode));
|
||||
break;
|
||||
|
||||
default:
|
||||
FK_ERROR("Unknown mapping type %d\n", mapping->type);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Save a mapping list */
|
||||
void save_mapping_list(mapping_list_t *list)
|
||||
{
|
||||
struct mapping_list_t *p;
|
||||
mapping_t *tmp;
|
||||
|
||||
printf("CLEAR\n");
|
||||
list_for_each(p, list) {
|
||||
tmp = list_entry(p, mapping_t, mappings);
|
||||
save_mapping(tmp);
|
||||
}
|
||||
}
|
||||
|
||||
@ -68,5 +68,7 @@ mapping_t *find_mapping(mapping_list_t *list, uint32_t gpio_mask);
|
||||
bool remove_mapping(mapping_list_t *list, mapping_t *mapping);
|
||||
void dump_mapping(mapping_t *mapping);
|
||||
void dump_mapping_list(mapping_list_t *list);
|
||||
void save_mapping(mapping_t *mapping);
|
||||
void save_mapping_list(mapping_list_t *list);
|
||||
|
||||
#endif // _MAPPING_LIST_H_
|
||||
|
||||
@ -88,6 +88,7 @@ static const keyword_t valid_commands[] = {
|
||||
{"KEYPRESS", STATE_KEYPRESS},
|
||||
{"TYPE", STATE_TYPE},
|
||||
{"DUMP", STATE_DUMP},
|
||||
{"SAVE", STATE_SAVE},
|
||||
{"", STATE_INVALID}
|
||||
};
|
||||
|
||||
@ -285,6 +286,7 @@ bool parse_config_line(char *line, mapping_list_t *list,
|
||||
|
||||
case STATE_CLEAR:
|
||||
case STATE_DUMP:
|
||||
case STATE_SAVE:
|
||||
break;
|
||||
|
||||
case STATE_SLEEP:
|
||||
@ -458,6 +460,10 @@ bool parse_config_line(char *line, mapping_list_t *list,
|
||||
dump_mapping_list(list);
|
||||
break;
|
||||
|
||||
case STATE_SAVE:
|
||||
save_mapping_list(list);
|
||||
break;
|
||||
|
||||
case STATE_INIT:
|
||||
case STATE_MAP:
|
||||
break;
|
||||
|
||||
@ -72,6 +72,7 @@ typedef enum {GPIOS} button_t;
|
||||
X(STATE_KEY, "KEY") \
|
||||
X(STATE_COMMAND, "COMMAND")\
|
||||
X(STATE_DUMP, "DUMP") \
|
||||
X(STATE_SAVE, "SAVE") \
|
||||
X(STATE_INVALID, "INVALID")
|
||||
|
||||
/* Enumeration of the different parse states */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user