mirror of
https://github.com/FunKey-Project/fkgpiod.git
synced 2025-12-12 16:08:51 +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");
|
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);
|
bool remove_mapping(mapping_list_t *list, mapping_t *mapping);
|
||||||
void dump_mapping(mapping_t *mapping);
|
void dump_mapping(mapping_t *mapping);
|
||||||
void dump_mapping_list(mapping_list_t *list);
|
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_
|
#endif // _MAPPING_LIST_H_
|
||||||
|
|||||||
@ -88,6 +88,7 @@ static const keyword_t valid_commands[] = {
|
|||||||
{"KEYPRESS", STATE_KEYPRESS},
|
{"KEYPRESS", STATE_KEYPRESS},
|
||||||
{"TYPE", STATE_TYPE},
|
{"TYPE", STATE_TYPE},
|
||||||
{"DUMP", STATE_DUMP},
|
{"DUMP", STATE_DUMP},
|
||||||
|
{"SAVE", STATE_SAVE},
|
||||||
{"", STATE_INVALID}
|
{"", STATE_INVALID}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -285,6 +286,7 @@ bool parse_config_line(char *line, mapping_list_t *list,
|
|||||||
|
|
||||||
case STATE_CLEAR:
|
case STATE_CLEAR:
|
||||||
case STATE_DUMP:
|
case STATE_DUMP:
|
||||||
|
case STATE_SAVE:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_SLEEP:
|
case STATE_SLEEP:
|
||||||
@ -458,6 +460,10 @@ bool parse_config_line(char *line, mapping_list_t *list,
|
|||||||
dump_mapping_list(list);
|
dump_mapping_list(list);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case STATE_SAVE:
|
||||||
|
save_mapping_list(list);
|
||||||
|
break;
|
||||||
|
|
||||||
case STATE_INIT:
|
case STATE_INIT:
|
||||||
case STATE_MAP:
|
case STATE_MAP:
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -72,6 +72,7 @@ typedef enum {GPIOS} button_t;
|
|||||||
X(STATE_KEY, "KEY") \
|
X(STATE_KEY, "KEY") \
|
||||||
X(STATE_COMMAND, "COMMAND")\
|
X(STATE_COMMAND, "COMMAND")\
|
||||||
X(STATE_DUMP, "DUMP") \
|
X(STATE_DUMP, "DUMP") \
|
||||||
|
X(STATE_SAVE, "SAVE") \
|
||||||
X(STATE_INVALID, "INVALID")
|
X(STATE_INVALID, "INVALID")
|
||||||
|
|
||||||
/* Enumeration of the different parse states */
|
/* Enumeration of the different parse states */
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user