parameters.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #pragma once
  2. #include <stdint.h>
  3. #define MAX_PUBLIC_KEYS 10
  4. #define PUBLIC_KEY_LEN 32
  5. #define PARAM_NAME_MAX_LEN 16
  6. class Parameters {
  7. public:
  8. uint8_t lock_level;
  9. uint8_t can_node;
  10. uint8_t bcast_powerup;
  11. uint32_t baudrate = 57600;
  12. char uas_id[21] = "ABCD123456789";
  13. float wifi_nan_rate;
  14. float bt4_rate;
  15. float bt5_rate;
  16. uint8_t webserver_enable;
  17. char wifi_ssid[21] = "RID_123456";
  18. char wifi_password[21] = "penguin1234";
  19. /*
  20. header at the front of storage
  21. */
  22. struct header {
  23. struct public_key {
  24. uint8_t key[PUBLIC_KEY_LEN];
  25. } public_keys[MAX_PUBLIC_KEYS];
  26. uint32_t reserved[30];
  27. };
  28. enum class ParamType {
  29. NONE=0,
  30. UINT8=1,
  31. UINT32=2,
  32. FLOAT=3,
  33. CHAR20=4,
  34. };
  35. struct Param {
  36. char name[PARAM_NAME_MAX_LEN+1];
  37. ParamType ptype;
  38. const void *ptr;
  39. float default_value;
  40. float min_value;
  41. float max_value;
  42. void set_float(float v) const;
  43. void set_uint8(uint8_t v) const;
  44. void set_uint32(uint32_t v) const;
  45. void set_char20(const char *v) const;
  46. uint8_t get_uint8() const;
  47. uint32_t get_uint32() const;
  48. float get_float() const;
  49. const char *get_char20() const;
  50. };
  51. static const struct Param params[];
  52. static const Param *find(const char *name);
  53. static const Param *find_by_index(uint16_t idx);
  54. void init(void);
  55. private:
  56. void load_defaults(void);
  57. };
  58. extern Parameters g;