read_conf_file.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #ifndef _READ_CONF_FILE_H_
  2. #define _READ_CONF_FILE_H_
  3. /****************************************************************
  4. * Includes
  5. ****************************************************************/
  6. #include <stdbool.h>
  7. /****************************************************************
  8. * Defines
  9. ****************************************************************/
  10. #define MAX_NUM_GPIO 32
  11. #define MAX_SIMULTANEOUS_GPIO 12
  12. #define MAX_LENGTH_STR_PINS 48
  13. #define MAX_LENGTH_STR_TYPE 16
  14. #define MAX_LENGTH_STR_VALUE 256
  15. #define MAX_LENGTH_STR_HELP_PIN_NAME 48
  16. #define MAX_LENGTH_STR_HELP_PIN_FCT 256
  17. #define MAX_LN_LENGTH (MAX_LENGTH_STR_PINS+\
  18. MAX_LENGTH_STR_TYPE+\
  19. MAX_LENGTH_STR_VALUE+\
  20. MAX_LENGTH_STR_HELP_PIN_NAME+\
  21. MAX_LENGTH_STR_HELP_PIN_FCT)
  22. typedef enum{
  23. TYPE_MAPPING_KEYBOARD,
  24. TYPE_MAPPING_SHELL_COMMAND,
  25. NB_TYPE_MAPPING,
  26. } ENUM_TYPE_MAPPING;
  27. typedef enum{
  28. MAPPING_ARG_PINS = 0,
  29. MAPPING_ARG_TYPE,
  30. MAPPING_ARG_VALUE,
  31. MAPPING_ARG_STR_HELP_PIN_NAME,
  32. MAPPING_ARG_STR_HELP_PIN_FCT,
  33. NB_MAPPING_ARG_NAMES,
  34. } ENUM_MAPPING_ARGS_NAMES;
  35. typedef struct{
  36. char name[32];
  37. int code;
  38. }key_names_s;
  39. typedef struct gpio_mapping_s{
  40. int pins_idx[MAX_SIMULTANEOUS_GPIO];
  41. int nb_simultaneous_pins;
  42. ENUM_TYPE_MAPPING type_mapping;
  43. int key_value;
  44. char *shell_command;
  45. char *pin_help_str;
  46. char *fct_help_str;
  47. struct gpio_mapping_s * next_mapped_gpio;
  48. bool activated;
  49. }STRUCT_MAPPED_GPIO;
  50. /****************************************************************
  51. * Public functions
  52. ****************************************************************/
  53. void get_mapping_from_conf_file(STRUCT_MAPPED_GPIO ** chained_list_mapping,
  54. int* nb_valid_gpios, int ** valid_gpio_pins, bool ** gpio_pins_active_high);
  55. void print_all_chained_list(STRUCT_MAPPED_GPIO * head);
  56. void print_chained_list_node(STRUCT_MAPPED_GPIO * node);
  57. void print_gpios(int * valid_gpio_pins, int nb_valid_gpios);
  58. #endif //_READ_CONF_FILE_H_